PageRenderTime 46ms CodeModel.GetById 18ms app.highlight 23ms RepoModel.GetById 1ms app.codeStats 0ms

/FluidMechanics/Burgers/GeneralisedBurgers/src/GeneralisedBurgersExample.f90

http://github.com/xyan075/examples
FORTRAN Modern | 409 lines | 182 code | 51 blank | 176 comment | 0 complexity | f7e5936a798e59da55b406e151902173 MD5 | raw file
  1!> \file
  2!> \author David Ladd
  3!> \brief This is an example program to solve a generalised Burgers's equation using OpenCMISS calls.
  4!>
  5!> \section LICENSE
  6!>
  7!> Version: MPL 1.1/GPL 2.0/LGPL 2.1
  8!>
  9!> The contents of this file are subject to the Mozilla Public License
 10!> Version 1.1 (the "License"); you may not use this file except in
 11!> compliance with the License. You may obtain a copy of the License at
 12!> http://www.mozilla.org/MPL/
 13!>
 14!> Software distributed under the License is distributed on an "AS IS"
 15!> basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
 16!> License for the specific language governing rights and limitations
 17!> under the License.
 18!>
 19!> The Original Code is OpenCMISS
 20!>
 21!> The Initial Developer of the Original Code is University of Auckland,
 22!> Auckland, New Zealand and University of Oxford, Oxford, United
 23!> Kingdom. Portions created by the University of Auckland and University
 24!> of Oxford are Copyright (C) 2007 by the University of Auckland and
 25!> the University of Oxford. All Rights Reserved.
 26!>
 27!> Contributor(s):
 28!>
 29!> Alternatively, the contents of this file may be used under the terms of
 30!> either the GNU General Public License Version 2 or later (the "GPL"), or
 31!> the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
 32!> in which case the provisions of the GPL or the LGPL are applicable instead
 33!> of those above. If you wish to allow use of your version of this file only
 34!> under the terms of either the GPL or the LGPL, and not to allow others to
 35!> use your version of this file under the terms of the MPL, indicate your
 36!> decision by deleting the provisions above and replace them with the notice
 37!> and other provisions required by the GPL or the LGPL. If you do not delete
 38!> the provisions above, a recipient may use your version of this file under
 39!> the terms of any one of the MPL, the GPL or the LGPL.
 40!>
 41
 42!> \example ClassicalField/Burgers/src/GeneralisedBurgersExample.f90
 43!! Example program to solve a generalised Burgers equation using OpenCMISS calls.
 44!! \htmlinclude ClassicalField/Burgers/history.html
 45!<
 46
 47!> Main program
 48PROGRAM GENERALISEDBURGERSEXAMPLE
 49
 50
 51  USE OPENCMISS
 52  USE MPI
 53
 54
 55#ifdef WIN32
 56  USE IFQWIN
 57#endif
 58
 59  IMPLICIT NONE
 60
 61  !-----------------------------------------------------------------------------------------------------------
 62  ! PROGRAM VARIABLES AND TYPES
 63  !-----------------------------------------------------------------------------------------------------------
 64
 65  !Test program parameters
 66  
 67  REAL(CMISSDP), PARAMETER :: LENGTH=3.0_CMISSDP
 68  INTEGER(CMISSIntg), PARAMETER :: NUMBER_GLOBAL_X_ELEMENTS=6
 69  REAL(CMISSDP), PARAMETER :: START_TIME=0.0_CMISSDP
 70  REAL(CMISSDP), PARAMETER :: STOP_TIME=0.1_CMISSDP
 71  REAL(CMISSDP), PARAMETER :: TIME_INCREMENT=0.01_CMISSDP
 72    
 73  INTEGER(CMISSIntg), PARAMETER :: CoordinateSystemUserNumber=1
 74  INTEGER(CMISSIntg), PARAMETER :: RegionUserNumber=2
 75  INTEGER(CMISSIntg), PARAMETER :: BasisUserNumber=3
 76  INTEGER(CMISSIntg), PARAMETER :: GeneratedMeshUserNumber=4
 77  INTEGER(CMISSIntg), PARAMETER :: MeshUserNumber=5
 78  INTEGER(CMISSIntg), PARAMETER :: DecompositionUserNumber=6
 79  INTEGER(CMISSIntg), PARAMETER :: GeometricFieldUserNumber=7
 80  INTEGER(CMISSIntg), PARAMETER :: EquationsSetFieldUserNumber=8
 81  INTEGER(CMISSIntg), PARAMETER :: DependentFieldUserNumber=9
 82  INTEGER(CMISSIntg), PARAMETER :: MaterialsFieldUserNumber=10
 83  INTEGER(CMISSIntg), PARAMETER :: EquationsSetUserNumber=11
 84  INTEGER(CMISSIntg), PARAMETER :: ProblemUserNumber=12
 85  INTEGER(CMISSIntg), PARAMETER :: ControlLoopNode=0
 86  INTEGER(CMISSIntg), PARAMETER :: AnalyticFieldUserNumber=13
 87  INTEGER(CMISSIntg), PARAMETER :: SolverUserNumber=1
 88  
 89  !Program variables
 90
 91  !Program types
 92
 93  TYPE(CMISSBasisType) :: Basis
 94  TYPE(CMISSCoordinateSystemType) :: CoordinateSystem,WorldCoordinateSystem
 95  TYPE(CMISSDecompositionType) :: Decomposition
 96  TYPE(CMISSEquationsType) :: Equations
 97  TYPE(CMISSEquationsSetType) :: EquationsSet
 98  TYPE(CMISSFieldType) ::  AnalyticField,DependentField,EquationsSetField,GeometricField,MaterialsField
 99  TYPE(CMISSFieldsType) :: Fields
100  TYPE(CMISSGeneratedMeshType) :: GeneratedMesh  
101  TYPE(CMISSMeshType) :: Mesh
102  TYPE(CMISSProblemType) :: Problem
103  TYPE(CMISSControlLoopType) :: ControlLoop
104  TYPE(CMISSRegionType) :: Region,WorldRegion
105  TYPE(CMISSSolverType) :: DynamicSolver,NonlinearSolver,LinearSolver
106  TYPE(CMISSSolverEquationsType) :: SolverEquations
107  TYPE(CMISSBoundaryConditionsType) :: BoundaryConditions
108
109#ifdef WIN32
110  !Quickwin type
111  LOGICAL :: QUICKWIN_STATUS=.FALSE.
112  TYPE(WINDOWCONFIG) :: QUICKWIN_WINDOW_CONFIG
113#endif
114  
115  !Generic CMISS variables
116  
117  INTEGER(CMISSIntg) :: NumberOfComputationalNodes,ComputationalNodeNumber
118  INTEGER(CMISSIntg) :: EquationsSetIndex
119  INTEGER(CMISSIntg) :: Err
120  LOGICAL :: LINEAR_SOLVER_DIRECT_FLAG
121  
122#ifdef WIN32
123  !Initialise QuickWin
124  QUICKWIN_WINDOW_CONFIG%TITLE="General Output" !Window title
125  QUICKWIN_WINDOW_CONFIG%NUMTEXTROWS=-1 !Max possible number of rows
126  QUICKWIN_WINDOW_CONFIG%MODE=QWIN$SCROLLDOWN
127  !Set the window parameters
128  QUICKWIN_STATUS=SETWINDOWCONFIG(QUICKWIN_WINDOW_CONFIG)
129  !If attempt fails set with system estimated values
130  IF(.NOT.QUICKWIN_STATUS) QUICKWIN_STATUS=SETWINDOWCONFIG(QUICKWIN_WINDOW_CONFIG)
131#endif
132    
133  !Intialise OpenCMISS
134  CALL CMISSInitialise(WorldCoordinateSystem,WorldRegion,Err)
135
136  CALL CMISSErrorHandlingModeSet(CMISS_ERRORS_TRAP_ERROR,Err)
137
138
139  CALL CMISSOutputSetOn("Burgers1DAnalytic",Err)
140  
141  !Get the computational nodes information
142  CALL CMISSComputationalNumberOfNodesGet(NumberOfComputationalNodes,Err)
143  CALL CMISSComputationalNodeNumberGet(ComputationalNodeNumber,Err)
144
145  !-----------------------------------------------------------------------------------------------------------
146  !COORDINATE SYSTEM
147  !-----------------------------------------------------------------------------------------------------------
148  !Start the creation of a new RC coordinate system
149  CALL CMISSCoordinateSystem_Initialise(CoordinateSystem,Err)
150  CALL CMISSCoordinateSystem_CreateStart(CoordinateSystemUserNumber,CoordinateSystem,Err)
151  !Set the coordinate system to be 1D
152  CALL CMISSCoordinateSystem_DimensionSet(CoordinateSystem,1,Err)
153  !Finish the creation of the coordinate system
154  CALL CMISSCoordinateSystem_CreateFinish(CoordinateSystem,Err) 
155
156  !-----------------------------------------------------------------------------------------------------------
157  !REGION
158  !-----------------------------------------------------------------------------------------------------------
159  !Start the creation of the region
160  CALL CMISSRegion_Initialise(Region,Err)
161  CALL CMISSRegion_CreateStart(RegionUserNumber,WorldRegion,Region,Err)
162  CALL CMISSRegion_LabelSet(Region,"BurgersRegion",Err)
163  !Set the regions coordinate system to the 1D RC coordinate system that we have created
164  CALL CMISSRegion_CoordinateSystemSet(Region,CoordinateSystem,Err)
165  !Finish the creation of the region
166  CALL CMISSRegion_CreateFinish(Region,Err)
167  
168  !-----------------------------------------------------------------------------------------------------------
169  !BASIS
170  !-----------------------------------------------------------------------------------------------------------
171  !Start the creation of a basis
172  CALL CMISSBasis_Initialise(Basis,Err)
173  CALL CMISSBasis_CreateStart(BasisUserNumber,Basis,Err)
174  CALL CMISSBasis_TypeSet(Basis,CMISS_BASIS_LAGRANGE_HERMITE_TP_TYPE,Err)
175  CALL CMISSBasis_NumberOfXiSet(Basis,1,Err)
176  !Set the basis xi interpolation and number of Gauss points
177  CALL CMISSBasis_InterpolationXiSet(Basis,[CMISS_BASIS_LINEAR_LAGRANGE_INTERPOLATION],Err)
178  CALL CMISSBasis_QuadratureNumberOfGaussXiSet(Basis,[3],Err)
179  !Finish the creation of the basis
180  CALL CMISSBasis_CreateFinish(Basis,Err)
181
182  !-----------------------------------------------------------------------------------------------------------
183  !MESH
184  !-----------------------------------------------------------------------------------------------------------
185  !Start the creation of a generated mesh in the region
186  CALL CMISSGeneratedMesh_Initialise(GeneratedMesh,Err)
187  CALL CMISSGeneratedMesh_CreateStart(GeneratedMeshUserNumber,Region,GeneratedMesh,Err)
188  !Set up a regular x mesh
189  CALL CMISSGeneratedMesh_TypeSet(GeneratedMesh,CMISS_GENERATED_MESH_REGULAR_MESH_TYPE,Err)
190  !Set the default basis
191  CALL CMISSGeneratedMesh_BasisSet(GeneratedMesh,Basis,Err)   
192  !Define the mesh on the region
193  CALL CMISSGeneratedMesh_ExtentSet(GeneratedMesh,[LENGTH],Err)
194  CALL CMISSGeneratedMesh_NumberOfElementsSet(GeneratedMesh,[NUMBER_GLOBAL_X_ELEMENTS],Err)
195  !Finish the creation of a generated mesh in the region
196  CALL CMISSMesh_Initialise(Mesh,Err)
197  CALL CMISSGeneratedMesh_CreateFinish(GeneratedMesh,MeshUserNumber,Mesh,Err)
198
199  !-----------------------------------------------------------------------------------------------------------  
200  !GEOMETRIC FIELD
201  !-----------------------------------------------------------------------------------------------------------
202
203  !Create a decomposition
204  CALL CMISSDecomposition_Initialise(Decomposition,Err)
205  CALL CMISSDecomposition_CreateStart(DecompositionUserNumber,Mesh,Decomposition,Err)
206  !Set the decomposition to be a general decomposition with the specified number of domains
207  CALL CMISSDecomposition_TypeSet(Decomposition,CMISS_DECOMPOSITION_CALCULATED_TYPE,Err)
208  CALL CMISSDecomposition_NumberOfDomainsSet(Decomposition,NumberOfComputationalNodes,Err)
209  !Finish the decomposition
210  CALL CMISSDecomposition_CreateFinish(Decomposition,Err)
211  
212  !Start to create a default (geometric) field on the region
213  CALL CMISSField_Initialise(GeometricField,Err)
214  CALL CMISSField_CreateStart(GeometricFieldUserNumber,Region,GeometricField,Err)
215  !Set the decomposition to use
216  CALL CMISSField_MeshDecompositionSet(GeometricField,Decomposition,Err)
217  !Set the scaling to use
218  CALL CMISSField_ScalingTypeSet(GeometricField,CMISS_FIELD_NO_SCALING,Err)
219  !Set the domain to be used by the field components.
220  CALL CMISSField_ComponentMeshComponentSet(GeometricField,CMISS_FIELD_U_VARIABLE_TYPE,1,1,Err)
221  !Finish creating the field
222  CALL CMISSField_CreateFinish(GeometricField,Err)  
223  !Update the geometric field parameters
224  CALL CMISSGeneratedMesh_GeometricParametersCalculate(GeneratedMesh,GeometricField,Err)
225
226  !-----------------------------------------------------------------------------------------------------------  
227  !EQUATIONS SETS
228  !-----------------------------------------------------------------------------------------------------------
229  
230  !Create the equations_set for a Generalised Burgers's equation
231  CALL CMISSEquationsSet_Initialise(EquationsSet,Err)
232  CALL CMISSField_Initialise(EquationsSetField,Err)
233  CALL CMISSEquationsSet_CreateStart(EquationsSetUserNumber,Region,GeometricField,CMISS_EQUATIONS_SET_FLUID_MECHANICS_CLASS, &
234    & CMISS_EQUATIONS_SET_BURGERS_EQUATION_TYPE,CMISS_EQUATIONS_SET_GENERALISED_BURGERS_SUBTYPE,EquationsSetFieldUserNumber, &
235    & EquationsSetField,EquationsSet,Err)
236  !Finish creating the equations set
237  CALL CMISSEquationsSet_CreateFinish(EquationsSet,Err)
238
239  !-----------------------------------------------------------------------------------------------------------
240  ! DEPENDENT FIELD
241  !-----------------------------------------------------------------------------------------------------------
242  !Create the equations set dependent field variables
243  CALL CMISSField_Initialise(DependentField,Err)
244  CALL CMISSEquationsSet_DependentCreateStart(EquationsSet,DependentFieldUserNumber,DependentField,Err)
245  !Finish the equations set dependent field variables
246  CALL CMISSEquationsSet_DependentCreateFinish(EquationsSet,Err)
247
248  !-----------------------------------------------------------------------------------------------------------
249  ! MATERIALS FIELD
250  !-----------------------------------------------------------------------------------------------------------
251  !Create the equations set material field variables
252  CALL CMISSField_Initialise(MaterialsField,Err)
253  CALL CMISSEquationsSet_MaterialsCreateStart(EquationsSet,MaterialsFieldUserNumber,MaterialsField,Err)
254  !Finish the equations set material field variables
255  CALL CMISSEquationsSet_MaterialsCreateFinish(EquationsSet,Err)
256  !Initialise materials field
257  !Set A
258  CALL CMISSField_ComponentValuesInitialise(MaterialsField,CMISS_FIELD_U_VARIABLE_TYPE,CMISS_FIELD_VALUES_SET_TYPE, & 
259    & 1,1.0_CMISSDP,Err)
260  !Set B
261  CALL CMISSField_ComponentValuesInitialise(MaterialsField,CMISS_FIELD_U_VARIABLE_TYPE,CMISS_FIELD_VALUES_SET_TYPE, & 
262    & 2,-1.0_CMISSDP,Err)
263  !Set C
264  CALL CMISSField_ComponentValuesInitialise(MaterialsField,CMISS_FIELD_U_VARIABLE_TYPE,CMISS_FIELD_VALUES_SET_TYPE, & 
265    & 3,1.0_CMISSDP,Err)
266
267  !-----------------------------------------------------------------------------------------------------------
268  ! ANALYTIC FIELD
269  !-----------------------------------------------------------------------------------------------------------
270  !Create the equations set analytic field variables
271  CALL CMISSField_Initialise(AnalyticField,Err)
272  CALL CMISSEquationsSet_AnalyticCreateStart(EquationsSet,CMISS_EQUATIONS_SET_GENERALISED_BURGERS_EQUATION_ONE_DIM_2, &
273    & AnalyticFieldUserNumber,AnalyticField,Err)
274  !Finish the equations set analytic field variables
275  CALL CMISSEquationsSet_AnalyticCreateFinish(EquationsSet,Err)
276
277  !-----------------------------------------------------------------------------------------------------------  
278  ! EQUATIONS
279  !-----------------------------------------------------------------------------------------------------------
280  !Create the equations set equations
281  CALL CMISSEquations_Initialise(Equations,Err)
282  CALL CMISSEquationsSet_EquationsCreateStart(EquationsSet,Equations,Err)
283  !Set the equations matrices sparsity type (Sparse/Full)
284  CALL CMISSEquations_SparsityTypeSet(Equations,CMISS_EQUATIONS_FULL_MATRICES,Err)
285  !Set the equations set output (NoOutput/TimingOutput/MatrixOutput/SolverMatrix/ElementMatrixOutput)
286  CALL CMISSEquations_OutputTypeSet(Equations,CMISS_EQUATIONS_ELEMENT_MATRIX_OUTPUT,Err)
287  !Finish the equations set equations
288  CALL CMISSEquationsSet_EquationsCreateFinish(EquationsSet,Err)
289
290  !-----------------------------------------------------------------------------------------------------------
291  !PROBLEM
292  !-----------------------------------------------------------------------------------------------------------
293  !Create the problem
294  CALL CMISSProblem_Initialise(Problem,Err)
295  CALL CMISSProblem_CreateStart(ProblemUserNumber,Problem,Err)
296  !Set the problem to be a static Burgers problem
297  CALL CMISSProblem_SpecificationSet(Problem,CMISS_PROBLEM_FLUID_MECHANICS_CLASS,CMISS_PROBLEM_BURGERS_EQUATION_TYPE, &
298    & CMISS_PROBLEM_DYNAMIC_BURGERS_SUBTYPE,Err)
299  !Finish the creation of a problem.
300  CALL CMISSProblem_CreateFinish(Problem,Err)
301
302  !Create the problem control
303  CALL CMISSControlLoop_Initialise(ControlLoop,Err)
304  CALL CMISSProblem_ControlLoopCreateStart(Problem,Err)
305  !Get the control loop
306  CALL CMISSProblem_ControlLoopGet(Problem,CMISS_CONTROL_LOOP_NODE,ControlLoop,Err)
307  !Set the times
308  CALL CMISSControlLoop_TimesSet(ControlLoop,START_TIME,STOP_TIME,TIME_INCREMENT,Err)
309  !Set the output timing
310  CALL CMISSControlLoop_TimeOutputSet(ControlLoop,1,Err)
311  !Finish creating the problem control loop
312  CALL CMISSProblem_ControlLoopCreateFinish(Problem,Err)
313
314  !-----------------------------------------------------------------------------------------------------------
315  !SOLVER
316  !-----------------------------------------------------------------------------------------------------------
317  !Start the creation of the problem solvers
318  CALL CMISSSolver_Initialise(DynamicSolver,Err)
319  CALL CMISSSolver_Initialise(NonlinearSolver,Err)
320  CALL CMISSSolver_Initialise(LinearSolver,Err)
321  CALL CMISSProblem_SolversCreateStart(Problem,Err)
322
323  !Get the dymamic solver
324  CALL CMISSProblem_SolverGet(Problem,CMISS_CONTROL_LOOP_NODE,SolverUserNumber,DynamicSolver,Err)
325  !Set the output type
326  CALL CMISSSolver_OutputTypeSet(DynamicSolver,CMISS_SOLVER_MATRIX_OUTPUT,Err)
327  !Set theta
328  CALL CMISSSolver_DynamicThetaSet(DynamicSolver,0.5_CMISSDP,Err)
329
330  !Get the dynamic nonlinear solver
331  CALL CMISSSolver_DynamicNonlinearSolverGet(DynamicSolver,NonlinearSolver,Err)
332  !Set the nonlinear Jacobian type
333  !CALL CMISSSolver_NewtonJacobianCalculationTypeSet(NonlinearSolver,CMISS_SOLVER_NEWTON_JACOBIAN_FD_CALCULATED,Err)
334  CALL CMISSSolver_NewtonJacobianCalculationTypeSet(NonlinearSolver,CMISS_SOLVER_NEWTON_JACOBIAN_EQUATIONS_CALCULATED,Err)
335  !Set the line search
336  CALL CMISSSolver_NewtonLineSearchTypeSet(NonlinearSolver,CMISS_SOLVER_NEWTON_LINESEARCH_NONE,Err)
337  !Set the output type
338  CALL CMISSSolver_OutputTypeSet(NonlinearSolver,CMISS_SOLVER_MATRIX_OUTPUT,Err)
339  !Get the dynamic nonlinear linear solver
340  CALL CMISSSolver_NewtonLinearSolverGet(NonlinearSolver,LinearSolver,Err)
341  !Set the output type
342  CALL CMISSSolver_OutputTypeSet(LinearSolver,CMISS_SOLVER_MATRIX_OUTPUT,Err)
343  !Set the solver settings
344
345  LINEAR_SOLVER_DIRECT_FLAG=.FALSE.
346  IF(LINEAR_SOLVER_DIRECT_FLAG) THEN
347    CALL CMISSSolver_LinearTypeSet(LinearSolver,CMISS_SOLVER_LINEAR_DIRECT_SOLVE_TYPE,Err)
348    CALL CMISSSolver_LibraryTypeSet(LinearSolver,CMISS_SOLVER_MUMPS_LIBRARY,Err)
349  ELSE
350    CALL CMISSSolver_LinearTypeSet(LinearSolver,CMISS_SOLVER_LINEAR_ITERATIVE_SOLVE_TYPE,Err)
351    CALL CMISSSolver_LinearIterativeMaximumIterationsSet(LinearSolver,10000,Err)
352    CALL CMISSSolver_LinearIterativeGMRESRestartSet(LinearSolver,50,Err)
353  ENDIF
354  !Finish the creation of the problem solver
355  CALL CMISSProblem_SolversCreateFinish(Problem,Err)
356
357
358  !-----------------------------------------------------------------------------------------------------------
359  !SOLVER EQUATIONS
360  !-----------------------------------------------------------------------------------------------------------
361  !Create the problem solver equations
362  CALL CMISSSolver_Initialise(LinearSolver,Err)
363  CALL CMISSSolverEquations_Initialise(SolverEquations,Err)
364  CALL CMISSProblem_SolverEquationsCreateStart(Problem,Err)
365  !Get the dynamic solver equations
366  CALL CMISSSolver_Initialise(DynamicSolver,Err)
367  CALL CMISSProblem_SolverGet(Problem,CMISS_CONTROL_LOOP_NODE,1,DynamicSolver,Err)
368  CALL CMISSSolver_SolverEquationsGet(DynamicSolver,SolverEquations,Err)
369  !Set the solver equations sparsity (Sparse/Full)
370  CALL CMISSSolverEquations_SparsityTypeSet(SolverEquations,CMISS_SOLVER_FULL_MATRICES,Err)  
371  !Add in the equations set
372  CALL CMISSSolverEquations_EquationsSetAdd(SolverEquations,EquationsSet,EquationsSetIndex,Err)
373  !Finish the creation of the problem solver equations
374  CALL CMISSProblem_SolverEquationsCreateFinish(Problem,Err)
375
376  !-----------------------------------------------------------------------------------------------------------
377  !BOUNDARY CONDITIONS
378  !-----------------------------------------------------------------------------------------------------------
379  !Set up the boundary conditions
380
381  !Create the equations set boundary conditions
382  CALL CMISSBoundaryConditions_Initialise(BoundaryConditions,Err)
383  CALL CMISSSolverEquations_BoundaryConditionsCreateStart(SolverEquations,BoundaryConditions,Err)
384  CALL CMISSSolverEquations_BoundaryConditionsAnalytic(SolverEquations,Err)
385  CALL CMISSSolverEquations_BoundaryConditionsCreateFinish(SolverEquations,Err)
386  !-----------------------------------------------------------------------------------------------------------
387  !SOLVE
388  !-----------------------------------------------------------------------------------------------------------
389  !Solve the problem
390  CALL CMISSProblem_Solve(Problem,Err)
391
392  !-----------------------------------------------------------------------------------------------------------
393  !OUTPUT
394  !-----------------------------------------------------------------------------------------------------------
395  !Output Analytic analysis
396  Call CMISSAnalyticAnalysisOutput(DependentField,"BurgersAnalytic_1D",Err)
397
398  !export fields
399  CALL CMISSFields_Initialise(Fields,Err)
400  CALL CMISSFields_Create(Region,Fields,Err)
401  CALL CMISSFields_NodesExport(Fields,"Burgers_1D","FORTRAN",Err)
402  CALL CMISSFields_ElementsExport(Fields,"Burgers_1D","FORTRAN",Err)
403  CALL CMISSFields_Finalise(Fields,Err)
404
405  WRITE(*,'(A)') "Program successfully completed."
406
407  STOP
408  
409END PROGRAM GENERALISEDBURGERSEXAMPLE