Spontaneous symmetry breaking


Hello, if you have any need, please feel free to consult us, this is my wechat: wx91due


Assignment 4: Spontaneous symmetry breaking.
Released on 29 November 2024,
December 2, 2024

1 Introduction

There exist a class of physical phenomena where two smooth fields that are initially mixed spontaneously separate into a state where both components are pure. Examples of such behaviour include separation of binary allows during a slow cooling of their mixture, emergence of large scale flows from turbulence in fusion devices or the emergence of the observable universe which is filled almost entirely with normal matter, rather than antimatter. The dominant explanation for such behaviour is a process called spontaneous symmetry breaking, when small perturbations that move the system away from a symmetric state tend to increase with time, even if the basic physics laws are symmetric. The commonexample is a ball placed on top of a hill. Even if the hill is symmetrical, we expect that in practise the ball will end up rolling down a particular side of the hill at some point. In this assignment we consider an equation that models the evolution of a 2-D vector field on a 1-D spatial domain as a function of time and exhibits this symmetry breaking.

2 Equations to solve

The equation of interest evolves the state vector Z(x, t), with Za 2-D Cartesian vector (Z = (U, V ) for real U and V ) as a function of distance along the line x in the domain [0, L], and time t, in the domain [0, tf ]. The equation to be solved is
The initial condition Z(x, 0) = [U(x, 0), V (x, 0)] should be read from the file.
The boundary conditions are of von Neumann type

where Ulb, Urb, Vlb and Vrb are constants.

You are required to use the LAPACK library to invert matrices, so the compiler flags are different this time. This library is installed on the lab computers and on vonneumann. We will not provide any support for installing these libraries on your own computers, it might be quicker just to log in to vonneumann to test your program. In order to compile your program (here, named prog4.c) on vonneumann you need to execute the following commands:

1. module purge
2. module load intel impi imkl
3. gcc -Wall -Werror -std=c99 prog4.c -lmkl -liomp5 -lm

You also need to include

#include <mkl_lapacke.h>

in your source code.

Marking will be based mostly on how well your numerical solution reproduces certain known cases. The code must compile and generate no warnings.

3 Solution method and stability

You must use time step splitting method to obtain a solution in any single time step dt. That is, given the solutions U j and V j at time tj you should:
1. apply implicit method to increment the linear part of equations with time step dt, obtaining Ulin j+1 and Vlin j+1 and

2. use the explicit finite difference method with time step dt to evolve the nonlinear part of the equations using Ulin j+1 and Vlin j+1 to obtain U j+1 and V j+1 .

You should use the band utility.c template code to implement the implicit solver. The example code from one of the workshops, where the implicid metod was used to solve the heat diffusion equation with a source term, may also be helpful.

The time step splitting methods and the stability analysis of the nonlinear equations were covered in the last lecture, that of week 9. For convergence of

nonlinear equation solvers it is often sufficient to ensure that the short wavelength modes (on the grid scale) are locally stable when linearised around a smooth large-scale solution.

Suggestions on getting started

❼ The easiest way to call LAPACK is to use the matrix example codes band utility.c as a framework for setting the values of the matrix at partic ular locations and solving the inverse problem. Use workshop instructions given for the implicit method applied to the heat equation to go through the process of setting the elements of the banded matrix.
❼ Start with the linearised equations and make sure you understand what solutions to expect in this case.
❼ You may want to read about the Cahn-Hilliard equation to understand what sort of solutions to expect in general case. Consider simplified sce narios. For example, if V ≈ 0 the time stationary solutions of the equation for U can be interpreted as a dynamical equation for the position of an object of mass m = 1 in a double well potential. That is, taking potential g(U) = −U 2 + U 4 the stationary equation is mU¨ = F = −∇U g(U).
❼ Note that the solutions of the general problem may be unstable for some initial conditions.
❼ The boundary conditions used here are these shown in the lectures for second order derivatives. You can extend the domain to include ’ghost points’ outside the domain and use Taylor expansion to apply the bound ary conditions at the grid points within the domain of your numerical solution.

4 Specification

The x grid has N grid points; the grid will be taken to run from x0 = 0 to xN−1 = L, where δx is the grid spacing.

5 Input

The input parameters will be read from a file called ‘input params.txt’. This file should contain the following parameters in a single column format with no commas or any other separator at the end of each line:
1. L, right x boundary of domain.
2. N, number of grid points
3. tf , length of time to run for.
4. tD, time step for diagnostic output.
5. Ulb, von Neumann left boundary condition value for U.
6. Urb, von Neumann right boundary condition value for U.
7. Vlb, von Neumann left boundary condition value for V.

8. Vrb, von Neumann right boundary condition value for V.

I will in general leave you to determine whether these should be read as in tegers or floating point numbers based on their meaning (note that the example input file does not necessarily have decimal points on all the values that should be floating point).

You can assume that the input parameters used to test your code will have sensible values, but you may print warnings to standard output if you wish to restrict certain inputs. It is sufficient to use fscanf to read in the input parameters and simply test that the reads were successful. There is an example input file and output file on the assignment page.

The initial condition profiles for U(x, t = 0) and V (x, t = 0) should be read from the file named ‘init cond.txt’, which should contain two columns of values separated by space. The number of values in each column must match the value N in the input parameters file.

6 Output

The code outputs simulation data into a file called ‘output.txt’ at a fixed interval in time, tD: it should output the initial values at t=0 and those at t = tD, 2tD, 3tD etc.
The time, t, x coordinate and the values of U(x, t) and V (x, t) are written in a single output line for each grid point, at each output time. Please do not add extra comments/blank lines to the output! See the example output file if you are unclear of the correct format (this output just shows the general idea rather than the correct output grid values for the example input).

发表评论

电子邮件地址不会被公开。 必填项已用*标注