Computation and Visualization of Solutions of Nonlinear Schr¨ odinger Equations in Optics by OpenFOAM Goong Chen Department of Mathematics and Institute for Quantum Science and Engineering Texas A&M University, College Station, TX 77843 Joint work with Milivoj Belic (Texas A&M University-Qatar) Alexey Sergeev (Texas A&M University-Qatar) 34th Annual Texas Differential Equations Conference March 26-27, 2011, University of Texas-Pan American, Edinburg TX Goong Chen Nonlinear Schr¨ odinger Equations by OpenFOAM 1 / 56
Abstract A large number of optical phenomena are modeled as an initial-boundary value problem governed by the nonlinear Schr¨ odinger equation. In this talk, we will show numerical computational results for several nonlinear optical dynamic processes containing various forms of nonlinearities. The numerical scheme is based on a parabolic marching in time and a finite-volume method adapted from heat equation in the fluid-dynamics software OpenFOAM. Supported in part by Texas Norman Hackman Advanced Research Program #010366-0149-2009 from the Texas Higher Education Coordinating Board, and Qatar National Research Fund (QNRF) National Priority Research Program Grant #NPRP09-462-1-074. Goong Chen Nonlinear Schr¨ odinger Equations by OpenFOAM 2 / 56
Introduction Introduction OpenFOAM ( http://www.OpenFOAM.com ) is a free, open source computational fluid dynamics (CFD) software package produced by a commercial company, OpenCFD Ltd. It has a large user base across most areas of engineering and science, from both commercial and academic organizations. Here, FOAM means Field Operation and Manipulation. Running OpenFOAM consists of Goong Chen Nonlinear Schr¨ odinger Equations by OpenFOAM 3 / 56
Introduction Introduction OpenFOAM ( http://www.OpenFOAM.com ) is a free, open source computational fluid dynamics (CFD) software package produced by a commercial company, OpenCFD Ltd. It has a large user base across most areas of engineering and science, from both commercial and academic organizations. Here, FOAM means Field Operation and Manipulation. Running OpenFOAM consists of generating polyhedral mesh for use in Finite Volume Method; Goong Chen Nonlinear Schr¨ odinger Equations by OpenFOAM 3 / 56
Introduction Introduction OpenFOAM ( http://www.OpenFOAM.com ) is a free, open source computational fluid dynamics (CFD) software package produced by a commercial company, OpenCFD Ltd. It has a large user base across most areas of engineering and science, from both commercial and academic organizations. Here, FOAM means Field Operation and Manipulation. Running OpenFOAM consists of generating polyhedral mesh for use in Finite Volume Method; executing a numerical solver for the given differential equation, Goong Chen Nonlinear Schr¨ odinger Equations by OpenFOAM 3 / 56
Introduction Introduction OpenFOAM ( http://www.OpenFOAM.com ) is a free, open source computational fluid dynamics (CFD) software package produced by a commercial company, OpenCFD Ltd. It has a large user base across most areas of engineering and science, from both commercial and academic organizations. Here, FOAM means Field Operation and Manipulation. Running OpenFOAM consists of generating polyhedral mesh for use in Finite Volume Method; executing a numerical solver for the given differential equation, displaying results. Goong Chen Nonlinear Schr¨ odinger Equations by OpenFOAM 3 / 56
Introduction Many important phenomena in optics are modeled by the nonlinear Schr¨ odinger equation (NLSE) : i ∂ Ψ | Ψ | 2 � � ∂ t + ∆Ψ + F Ψ = 0 (1) with Dirichlet or Neumann boundary conditions, and initial conditions. Goong Chen Nonlinear Schr¨ odinger Equations by OpenFOAM 4 / 56
Mesh generation Mesh generation blockMesh is one of the mesh-generating utilities in OpenFOAM. Listing 1 shows a typical file blockMeshDict that is used to construct a mesh on a cylinder consisting of five curvilinear hexagonal blocks. Goong Chen Nonlinear Schr¨ odinger Equations by OpenFOAM 5 / 56
Mesh generation Listing 1. Content of blockMeshDict file containing specifications of hexagonal blocks and their grading in order to construct a mesh on a cylinder. The radius of cylinder is R = 1 and the length L = 4. The OpenFOAM header of the file is not shown to save space. See http://www.openfoam.com/docs/user/blockMesh.php for a tutorial on blockMesh utility. convertToMeters 1 . 0 ; v e r t i c e s ( ( 0 . 5 0 0) (0 − 0.5 0) ( − 0.5 0 0) (0 0.5 0) (1 0 0) (0 − 1 0) ( − 1 0 0) (0 1 0) ( 0 . 5 0 4) (0 − 0.5 4) Goong Chen Nonlinear Schr¨ odinger Equations by OpenFOAM 6 / 56
Mesh generation ( − 0.5 0 4) (0 0.5 4) (1 0 4) (0 − 1 4) ( − 1 0 4) (0 1 4) ) ; b l o c k s ( hex (8 9 10 11 0 1 2 3) (16 16 32) simpleGrading (1 1 1) hex (8 12 13 9 0 4 5 1) (16 16 32) simpleGrading (1 1 1) hex (9 13 14 10 1 5 6 2) (16 16 32) simpleGrading (1 1 1) hex (10 14 15 11 2 6 7 3) (16 16 32) simpleGrading (1 1 1) hex (11 15 12 8 3 7 4 0) (16 16 32) simpleGrading (1 1 1) ) ; edges ( arc 4 5 (0.707 − 0.707 0) arc 5 6 ( − 0.707 − 0.707 0) arc 6 7 ( − 0.707 0.707 0) arc 7 4 (0.707 0.707 0) Goong Chen Nonlinear Schr¨ odinger Equations by OpenFOAM 7 / 56
Mesh generation arc 12 13 (0.707 − 0.707 4) arc 13 14 ( − 0.707 − 0.707 4) arc 14 15 ( − 0.707 0.707 4) arc 15 12 (0.707 0.707 4) ) ; patches ( w a l l bound ( (0 1 2 3) (0 4 5 1) (1 5 6 2) (2 6 7 3) (3 7 4 0) (8 9 10 11) (8 12 13 9) (9 13 14 10) (10 14 15 11) (11 15 12 8) (4 5 13 12) (5 6 14 13) Goong Chen Nonlinear Schr¨ odinger Equations by OpenFOAM 8 / 56
Mesh generation (6 7 15 14) (7 4 12 15) ) ) ; mergePatchPairs ( ) ; The result of mesh generation is visualized by a paraFoam utility subroutine as shown on Fig. 1. Goong Chen Nonlinear Schr¨ odinger Equations by OpenFOAM 9 / 56
Mesh generation Figure: A mesh for a cylinder constructed with use of blockMesh utility controlled by blockMeshDict file, see Listing 1. The cylinder is divided in four prism-like blocks and a central block, which is a rectangular parallelepiped with a 16 × 16 × 32 grading. Four side blocks are curvilinear hexahedrons with a similar grading. Goong Chen Nonlinear Schr¨ odinger Equations by OpenFOAM 10 / 56
The heat equation The heat equation Presently, OpenFOAM itself does not contain subroutines for NLSE. However, a close analogue of NLSE available in OpenFOAM is the heat equation ∂ T ∂ t − D ∆ T = 0 (2) where D is a coefficient of thermal conductivity and T is temperature. Here, we give an example of the use of laplacianFoam solver for this equation. The temperature at initial time t = 0 is given as � ( x − 0 . 4) 2 − y 2 − z 2 �� − 1 � T ( x , y , z ) ( t =0) = exp . (3) 16 This function is calculated by a separate program. The results are written into the file T , see Listing 2. The file T is placed in the subfolder 0 which is designated for the storage of the initial data. Goong Chen Nonlinear Schr¨ odinger Equations by OpenFOAM 11 / 56
The heat equation Listing 2. Content of the file T with initial conditions data for the tempera- ture. 40954 numbers were skipped to save space. boundaryField section at the end specifies zero gradient (Neumann) boundary conditions. dimensions [0 0 0 1 0 0 0 ] ; i n t e r n a l F i e l d nonuniform Li s t < s c a l a r > 40960 ( 8.95663 e − 22 9.02248 e − 22 8.97853 e − 22 . . . 0.319731 0.333965 0.340724 ) ; } } boundaryField { Goong Chen Nonlinear Schr¨ odinger Equations by OpenFOAM 12 / 56
The heat equation bound { type z e r o G r a d i e n t ; } } Plot of the temperature at the initial time is shown in Figure 2. Goong Chen Nonlinear Schr¨ odinger Equations by OpenFOAM 13 / 56
The heat equation Figure: Gaussian distribution of temperature at initial time t = 0 given by equation (3). Blue color correspons to T = 0, and red to T = 1. The cylinder is sliced in order to show the interior. Goong Chen Nonlinear Schr¨ odinger Equations by OpenFOAM 14 / 56
The heat equation The solver laplacianFoam.C of this equation is given in Listing 3. Notice that “fvm::laplacian” means that the Laplacian is calculated implicitly as a matrix, and an implicit Euler method of integration is used. Listing 3. Solving the heat equation #include ”fvCFD .H” i n t main ( i n t argc , char ∗ argv [ ] ) { # include ” setRootCase .H” # include ” createTime .H” # include ” createMesh .H” # include ” c r e a t e F i e l d s .H” Info < < ” \ n C a l c u l a t i n g temperature d i s t r i b u t i o n \ n” << endl ; while ( runTime . loop ( ) ) { Info < < ”Time = ” << runTime . timeName () << n l << endl ; # include ” readSIMPLEControls .H” for ( i n t nonOrth =0; nonOrth < =nNonOrthCorr ; nonOrth++) { s o l v e Goong Chen Nonlinear Schr¨ odinger Equations by OpenFOAM 15 / 56
The heat equation ( fvm : : ddt (T) − fvm : : l a p l a c i a n (DT, T) ) ; } # include ” w r i t e .H” Info < < ” ExecutionTime = ” << runTime . elapsedCpuTime () << << ” ClockTime = ” << runTime . elapsedClockTime () << << n l << endl ; } Info < < ”End \ n” << endl ; return 0; } Goong Chen Nonlinear Schr¨ odinger Equations by OpenFOAM 16 / 56
Recommend
More recommend