/FluidMechanics/Burgers/GeneralisedBurgers/src/GeneralisedBurgersExample.f90
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