diff --git a/bindings/c/tests/complex_mesh.c b/bindings/c/tests/complex_mesh.c index 4a5c98a3..d7067279 100755 --- a/bindings/c/tests/complex_mesh.c +++ b/bindings/c/tests/complex_mesh.c @@ -68,20 +68,22 @@ int main() { - /* int WorldCoordinateSystemUserNumber; + /* int ContextUserNumber; int WorldRegionUserNumber; */ - cmfe_CoordinateSystemType WorldCoordinateSystem=(cmfe_CoordinateSystemType)NULL; + cmfe_ContextType Context=(cmfe_ContextType)NULL; cmfe_RegionType WorldRegion=(cmfe_RegionType)NULL,Region=(cmfe_RegionType)NULL; char Label[STRING_SIZE]; int Err; - Err = cmfe_CoordinateSystem_Initialise(&WorldCoordinateSystem); - CHECK_ERROR("Initialising world coordinate system"); - Err = cmfe_Region_Initialise(&WorldRegion); - CHECK_ERROR("Initialising world region"); - if(cmfe_Initialise(WorldCoordinateSystem,WorldRegion) == CMFE_NO_ERROR) + Err = cmfe_Context_Initialise(&Context); + CHECK_ERROR("Initialising context"); + if(cmfe_Initialise(Context) == CMFE_NO_ERROR) { + Err = cmfe_Region_Initialise(&WorldRegion); + CHECK_ERROR("Initialising world region"); + Err = cmfe_Context_WorldRegionGet(Context,WorldRegion); + CHECK_ERROR("Get world region"); Err = cmfe_Region_LabelGet(WorldRegion,STRING_SIZE,Label); printf("The world region label is '%s'.\n",Label); @@ -95,7 +97,7 @@ int main() Err = cmfe_Region_Finalise(&Region); - Err = cmfe_Finalise(); + Err = cmfe_Finalise(Context); } return Err; diff --git a/bindings/c/tests/laplace.c b/bindings/c/tests/laplace.c index e2759f9a..198df8be 100755 --- a/bindings/c/tests/laplace.c +++ b/bindings/c/tests/laplace.c @@ -90,12 +90,13 @@ int main() { cmfe_BasisType Basis = (cmfe_BasisType)NULL; cmfe_BoundaryConditionsType BoundaryConditions=(cmfe_BoundaryConditionsType)NULL; - cmfe_CoordinateSystemType CoordinateSystem=(cmfe_CoordinateSystemType)NULL,WorldCoordinateSystem=(cmfe_CoordinateSystemType)NULL; + cmfe_ComputationEnvironmentType ComputationEnvironment = (cmfe_ComputationEnvironmentType)NULL; + cmfe_ContextType Context = (cmfe_ContextType)NULL; + cmfe_CoordinateSystemType CoordinateSystem=(cmfe_CoordinateSystemType)NULL; cmfe_DecompositionType Decomposition=(cmfe_DecompositionType)NULL; cmfe_EquationsType Equations=(cmfe_EquationsType)NULL; cmfe_EquationsSetType EquationsSet=(cmfe_EquationsSetType)NULL; cmfe_FieldType GeometricField=(cmfe_FieldType)NULL,DependentField=(cmfe_FieldType)NULL,EquationsSetField=(cmfe_FieldType)NULL; - cmfe_FieldsType Fields=(cmfe_FieldsType)NULL; cmfe_GeneratedMeshType GeneratedMesh=(cmfe_GeneratedMeshType)NULL; cmfe_MeshType Mesh=(cmfe_MeshType)NULL; cmfe_ProblemType Problem=(cmfe_ProblemType)NULL; @@ -103,7 +104,7 @@ int main() cmfe_SolverType Solver=(cmfe_SolverType)NULL; cmfe_SolverEquationsType SolverEquations=(cmfe_SolverEquationsType)NULL; - int NumberOfComputationalNodes,ComputationalNodeNumber; + int NumberOfComputationNodes,ComputationNodeNumber; int EquationsSetIndex; int FirstNodeNumber,LastNodeNumber; int FirstNodeDomain,LastNodeDomain; @@ -119,20 +120,24 @@ int main() ControlLoopIdentifier[0]=CMFE_CONTROL_LOOP_NODE; - Err = cmfe_CoordinateSystem_Initialise(&WorldCoordinateSystem); - CHECK_ERROR("Initialising world coordinate system"); + Err = cmfe_Context_Initialise(&Context); + CHECK_ERROR("Initialising context"); + Err = cmfe_Initialise(Context); + CHECK_ERROR("Initialising OpenCMISS-Iron"); Err = cmfe_Region_Initialise(&WorldRegion); CHECK_ERROR("Initialising world region"); - Err = cmfe_Initialise(WorldCoordinateSystem,WorldRegion); - CHECK_ERROR("Initialising OpenCMISS-Iron"); + Err = cmfe_Context_WorldRegionGet(Context,WorldRegion); + CHECK_ERROR("Get world region"); Err = cmfe_ErrorHandlingModeSet(CMFE_ERRORS_TRAP_ERROR); - Err = cmfe_ComputationalNumberOfNodesGet(&NumberOfComputationalNodes); - Err = cmfe_ComputationalNodeNumberGet(&ComputationalNodeNumber); + Err = cmfe_ComputationEnvironment_Initialise(&ComputationEnvironment); + Err = cmfe_Context_ComputationEnvironmentGet(Context,ComputationEnvironment); + Err = cmfe_ComputationEnvironment_NumberOfWorldNodesGet(ComputationEnvironment,&NumberOfComputationNodes); + Err = cmfe_ComputationEnvironment_WorldNodeNumberGet(ComputationEnvironment,&ComputationNodeNumber); /* Start the creation of a new RC coordinate system */ Err = cmfe_CoordinateSystem_Initialise(&CoordinateSystem); - Err = cmfe_CoordinateSystem_CreateStart(COORDINATE_SYSTEM_USER_NUMBER,CoordinateSystem); + Err = cmfe_CoordinateSystem_CreateStart(COORDINATE_SYSTEM_USER_NUMBER,Context,CoordinateSystem); if(NUMBER_GLOBAL_Z_ELEMENTS==0) { /* Set the coordinate system to be 2D */ @@ -156,7 +161,7 @@ int main() /* Start the creation of a basis (default is trilinear lagrange) */ Err = cmfe_Basis_Initialise(&Basis); - Err = cmfe_Basis_CreateStart(BASIS_USER_NUMBER,Basis); + Err = cmfe_Basis_CreateStart(BASIS_USER_NUMBER,Context,Basis); if(NUMBER_GLOBAL_Z_ELEMENTS==0) { /* Set the basis to be a bilinear Lagrange basis */ @@ -200,7 +205,7 @@ int main() Err = cmfe_Decomposition_CreateStart(DECOMPOSITION_USER_NUMBER,Mesh,Decomposition); /* Set the decomposition to be a general decomposition with the specified number of domains */ Err = cmfe_Decomposition_TypeSet(Decomposition,CMFE_DECOMPOSITION_CALCULATED_TYPE); - Err = cmfe_Decomposition_NumberOfDomainsSet(Decomposition,NumberOfComputationalNodes); + Err = cmfe_Decomposition_NumberOfDomainsSet(Decomposition,NumberOfComputationNodes); /* Finish the decomposition */ Err = cmfe_Decomposition_CreateFinish(Decomposition); @@ -259,7 +264,7 @@ int main() ProblemSpecification[0] = CMFE_PROBLEM_CLASSICAL_FIELD_CLASS; ProblemSpecification[1] = CMFE_PROBLEM_LAPLACE_EQUATION_TYPE; ProblemSpecification[2] = CMFE_PROBLEM_STANDARD_LAPLACE_SUBTYPE; - Err = cmfe_Problem_CreateStart(PROBLEM_USER_NUMBER,3,ProblemSpecification,Problem); + Err = cmfe_Problem_CreateStart(PROBLEM_USER_NUMBER,Context,3,ProblemSpecification,Problem); /* Finish the creation of a problem. */ Err = cmfe_Problem_CreateFinish(Problem); @@ -313,12 +318,12 @@ int main() } Err = cmfe_Decomposition_NodeDomainGet(Decomposition,FirstNodeNumber,1,&FirstNodeDomain); Err = cmfe_Decomposition_NodeDomainGet(Decomposition,LastNodeNumber,1,&LastNodeDomain); - if(FirstNodeDomain==ComputationalNodeNumber) + if(FirstNodeDomain==ComputationNodeNumber) { Err = cmfe_BoundaryConditions_SetNode(BoundaryConditions,DependentField,CMFE_FIELD_U_VARIABLE_TYPE,1,1,FirstNodeNumber,1, \ CMFE_BOUNDARY_CONDITION_FIXED,0.0); } - if(LastNodeDomain==ComputationalNodeNumber) + if(LastNodeDomain==ComputationNodeNumber) { Err = cmfe_BoundaryConditions_SetNode(BoundaryConditions,DependentField,CMFE_FIELD_U_VARIABLE_TYPE,1,1,LastNodeNumber,1, \ CMFE_BOUNDARY_CONDITION_FIXED,1.0); @@ -329,7 +334,7 @@ int main() /* Solve the problem */ Err = cmfe_Problem_Solve(Problem); - Err = cmfe_Finalise(); + Err = cmfe_Finalise(Context); return Err; } diff --git a/bindings/generate_bindings/python.py b/bindings/generate_bindings/python.py index 488d0ec4..a6d1e45a 100755 --- a/bindings/generate_bindings/python.py +++ b/bindings/generate_bindings/python.py @@ -27,10 +27,9 @@ #ErrorHandlingModeSet(ErrorHandlingModes.RETURN_ERROR_CODE) #""" -INITIALISE = """WorldCoordinateSystem = CoordinateSystem() -WorldRegion = Region() -Initialise(WorldCoordinateSystem, WorldRegion) -# Don't output errors, we'll include trace in exception +INITIALISE = """Context = Context() +Initialise(Context) +# Output errors ErrorHandlingModeSet(ErrorHandlingModes.OUTPUT_ERROR) """ diff --git a/cmake/Sources.cmake b/cmake/Sources.cmake index 48a9140d..e42aa45a 100644 --- a/cmake/Sources.cmake +++ b/cmake/Sources.cmake @@ -25,6 +25,7 @@ set(IRON_Fortran_SRC bioelectric_routines.f90 blas.f90 boundary_condition_routines.f90 + boundary_condition_access_routines.f90 Burgers_equation_routines.f90 cellml_access_routines.f90 characteristic_equation_routines.f90 @@ -36,8 +37,11 @@ set(IRON_Fortran_SRC cmiss_petsc_types.f90 cmiss_petsc.f90 cmiss.f90 - computational_environment.f90 + computation_routines.f90 + computation_access_routines.f90 constants.f90 + context_routines.f90 + context_access_routines.f90 control_loop_routines.f90 control_loop_access_routines.f90 coordinate_routines.f90 diff --git a/src/Darcy_equations_routines.f90 b/src/Darcy_equations_routines.f90 index ac5c4248..39366cbb 100755 --- a/src/Darcy_equations_routines.f90 +++ b/src/Darcy_equations_routines.f90 @@ -7,7 +7,8 @@ MODULE DARCY_EQUATIONS_ROUTINES USE Constants USE CONTROL_LOOP_ROUTINES USE ControlLoopAccessRoutines - USE ComputationEnvironment + USE ComputationRoutines + USE ComputationAccessRoutines USE COORDINATE_ROUTINES USE DistributedMatrixVector USE DOMAIN_MAPPINGS @@ -28,7 +29,6 @@ MODULE DARCY_EQUATIONS_ROUTINES USE Maths USE MatrixVector USE MESH_ROUTINES - USE NODE_ROUTINES USE PROBLEM_CONSTANTS USE Strings USE SOLVER_ROUTINES @@ -7204,6 +7204,7 @@ SUBROUTINE DARCY_EQUATION_MONITOR_CONVERGENCE(CONTROL_LOOP,SOLVER,err,error,*) TYPE(VARYING_STRING) :: localError CHARACTER(25) :: FILENAME TYPE(VARYING_STRING) :: FILEPATH + TYPE(WorkGroupType), POINTER :: workGroup REAL(DP), POINTER :: ITERATION_VALUES_N(:),ITERATION_VALUES_N1(:) REAL(DP) :: RESIDUAL_NORM @@ -7213,7 +7214,7 @@ SUBROUTINE DARCY_EQUATION_MONITOR_CONVERGENCE(CONTROL_LOOP,SOLVER,err,error,*) INTEGER(INTG) :: FIELD_VAR_TYPE INTEGER(INTG) :: dof_number,NUMBER_OF_DOFS,equations_set_idx - INTEGER(INTG) :: COMPUTATIONAL_NODE_NUMBER + INTEGER(INTG) :: COMPUTATION_NODE_NUMBER INTEGER(INTG) :: FILEUNIT_N, FILEUNIT_N1 ENTERS("DARCY_EQUATION_MONITOR_CONVERGENCE",err,error,*999) @@ -7226,8 +7227,11 @@ SUBROUTINE DARCY_EQUATION_MONITOR_CONVERGENCE(CONTROL_LOOP,SOLVER,err,error,*) NULLIFY(vectorMapping) NULLIFY(FIELD_VARIABLE) - COMPUTATIONAL_NODE_NUMBER=ComputationalEnvironment_NodeNumberGet(err,error) - WRITE(FILENAME,'("Darcy_",I3.3,".conv")') COMPUTATIONAL_NODE_NUMBER + NULLIFY(workGroup) + CALL Solver_WorkGroupGet(solver,workGroup,err,error,*999) + + CALL WorkGroup_GroupNodeNumberGet(workGroup,COMPUTATION_NODE_NUMBER,err,error,*999) + WRITE(FILENAME,'("Darcy_",I3.3,".conv")') COMPUTATION_NODE_NUMBER FILEPATH = "./output/"//FILENAME OPEN(UNIT=23, FILE=CHAR(FILEPATH),STATUS='unknown',ACCESS='append') diff --git a/src/Darcy_pressure_equations_routines.f90 b/src/Darcy_pressure_equations_routines.f90 index ca5d0602..2f76aad9 100755 --- a/src/Darcy_pressure_equations_routines.f90 +++ b/src/Darcy_pressure_equations_routines.f90 @@ -66,7 +66,6 @@ MODULE DARCY_PRESSURE_EQUATIONS_ROUTINES USE Kinds USE Maths USE MatrixVector - USE NODE_ROUTINES USE PROBLEM_CONSTANTS USE Strings USE SOLVER_ROUTINES diff --git a/src/Hamilton_Jacobi_equations_routines.f90 b/src/Hamilton_Jacobi_equations_routines.f90 index 2835124e..3621be2f 100644 --- a/src/Hamilton_Jacobi_equations_routines.f90 +++ b/src/Hamilton_Jacobi_equations_routines.f90 @@ -66,7 +66,6 @@ MODULE HAMILTON_JACOBI_EQUATIONS_ROUTINES USE Kinds USE MatrixVector USE Maths - USE NODE_ROUTINES USE PROBLEM_CONSTANTS USE Strings USE SOLVER_ROUTINES diff --git a/src/Helmholtz_equations_routines.f90 b/src/Helmholtz_equations_routines.f90 index a24465ec..71778dc3 100755 --- a/src/Helmholtz_equations_routines.f90 +++ b/src/Helmholtz_equations_routines.f90 @@ -65,7 +65,6 @@ MODULE HELMHOLTZ_EQUATIONS_ROUTINES USE ISO_VARYING_STRING USE Kinds USE MatrixVector - USE NODE_ROUTINES USE PROBLEM_CONSTANTS USE Strings USE SOLVER_ROUTINES diff --git a/src/Laplace_equations_routines.f90 b/src/Laplace_equations_routines.f90 index 1dd75eb4..1a305f43 100755 --- a/src/Laplace_equations_routines.f90 +++ b/src/Laplace_equations_routines.f90 @@ -67,7 +67,6 @@ MODULE LAPLACE_EQUATIONS_ROUTINES USE Kinds USE Maths USE MatrixVector - USE NODE_ROUTINES USE PROBLEM_CONSTANTS USE Strings USE SOLVER_ROUTINES diff --git a/src/Navier_Stokes_equations_routines.f90 b/src/Navier_Stokes_equations_routines.f90 index 6c95e960..cdc040c8 100644 --- a/src/Navier_Stokes_equations_routines.f90 +++ b/src/Navier_Stokes_equations_routines.f90 @@ -1,3 +1,46 @@ +!> \file +!> \author Sebastian Krittian +!> \brief This module handles all Navier-Stokes fluid routines. +!> +!> \section LICENSE +!> +!> Version: MPL 1.1/GPL 2.0/LGPL 2.1 +!> +!> The contents of this file are subject to the Mozilla Public License +!> Version 1.1 (the "License"); you may not use this file except in +!> compliance with the License. You may obtain a copy of the License at +!> http://www.mozilla.org/MPL/ +!> +!> Software distributed under the License is distributed on an "AS IS" +!> basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the +!> License for the specific language governing rights and limitations +!> under the License. +!> +!> The Original Code is OpenCMISS +!> +!> The Initial Developer of the Original Code is University of Auckland, +!> Auckland, New Zealand, the University of Oxford, Oxford, United +!> Kingdom and King's College, London, United Kingdom. Portions created +!> by the University of Auckland, the University of Oxford and King's +!> College, London are Copyright (C) 2007-2010 by the University of +!> Auckland, the University of Oxford and King's College, London. +!> All Rights Reserved. +!> +!> Contributor(s): Sebastian Krittian, David Ladd, Soroush Safaei, Chris Bradley +!> +!> Alternatively, the contents of this file may be used under the terms of +!> either the GNU General Public License Version 2 or later (the "GPL"), or +!> the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +!> in which case the provisions of the GPL or the LGPL are applicable instead +!> of those above. If you wish to allow use of your version of this file only +!> under the terms of either the GPL or the LGPL, and not to allow others to +!> use your version of this file under the terms of the MPL, indicate your +!> decision by deleting the provisions above and replace them with the notice +!> and other provisions required by the GPL or the LGPL. If you do not delete +!> the provisions above, a recipient may use your version of this file under +!> the terms of any one of the MPL, the GPL or the LGPL. +!> + !>This module handles all Navier-Stokes fluid routines. MODULE NAVIER_STOKES_EQUATIONS_ROUTINES @@ -7,10 +50,11 @@ MODULE NAVIER_STOKES_EQUATIONS_ROUTINES USE BasisRoutines USE BOUNDARY_CONDITIONS_ROUTINES USE CHARACTERISTIC_EQUATION_ROUTINES - USE CmissMPI + USE CmissMPI USE CmissPetsc USE CmissPetscTypes - USE ComputationEnvironment + USE ComputationRoutines + USE ComputationAccessRoutines USE Constants USE CONTROL_LOOP_ROUTINES USE COORDINATE_ROUTINES @@ -41,7 +85,6 @@ MODULE NAVIER_STOKES_EQUATIONS_ROUTINES #ifndef NOMPIMOD USE MPI #endif - USE NODE_ROUTINES USE PROBLEM_CONSTANTS USE STREE_EQUATION_ROUTINES USE Strings @@ -6954,6 +6997,7 @@ SUBROUTINE NavierStokes_PreSolveUpdateBoundaryConditions(SOLVER,err,error,*) TYPE(SOLVER_TYPE), POINTER :: Solver2 TYPE(SOLVERS_TYPE), POINTER :: SOLVERS TYPE(VARYING_STRING) :: localError + TYPE(WorkGroupType), POINTER :: workGroup INTEGER(INTG) :: nodeIdx,derivativeIdx,versionIdx,variableIdx,numberOfSourceTimesteps,timeIdx,componentIdx INTEGER(INTG) :: NUMBER_OF_DIMENSIONS,BOUNDARY_CONDITION_CHECK_VARIABLE,GLOBAL_DERIV_INDEX,node_idx,variable_type INTEGER(INTG) :: variable_idx,local_ny,ANALYTIC_FUNCTION_TYPE,component_idx,deriv_idx,dim_idx,version_idx @@ -6961,7 +7005,7 @@ SUBROUTINE NavierStokes_PreSolveUpdateBoundaryConditions(SOLVER,err,error,*) INTEGER(INTG) :: componentNumberVelocity,numberOfDimensions,numberOfNodes,numberOfGlobalNodes INTEGER(INTG) :: dependentVariableType,independentVariableType,dependentDof,independentDof,userNodeNumber,localNodeNumber INTEGER(INTG) :: EquationsSetIndex,SolidNodeNumber,FluidNodeNumber,equationsSetIdx - INTEGER(INTG) :: currentTimeLoopIteration,outputIterationNumber,numberOfFittedNodes,computationalNode + INTEGER(INTG) :: currentTimeLoopIteration,outputIterationNumber,numberOfFittedNodes,computationNode INTEGER(INTG), ALLOCATABLE :: InletNodes(:) REAL(DP) :: CURRENT_TIME,TIME_INCREMENT,DISPLACEMENT_VALUE,VALUE,XI_COORDINATES(3),timeData,QP,QPP,componentValues(3) REAL(DP) :: T_COORDINATES(20,3),MU_PARAM,RHO_PARAM,X(3),FluidGFValue,SolidDFValue,NewLaplaceBoundaryValue,Lref,Tref,Mref @@ -7054,7 +7098,7 @@ SUBROUTINE NavierStokes_PreSolveUpdateBoundaryConditions(SOLVER,err,error,*) IF(ASSOCIATED(independentField)) THEN componentNumberVelocity = 1 numberOfDimensions = dependentFieldVariable%NUMBER_OF_COMPONENTS - 1 - ! Get the nodes on this computational domain + ! Get the nodes on this computation domain IF(independentFieldVariable%COMPONENTS(componentNumberVelocity)%INTERPOLATION_TYPE== & & FIELD_NODE_BASED_INTERPOLATION) THEN domain=>independentFieldVariable%COMPONENTS(componentNumberVelocity)%DOMAIN @@ -7077,7 +7121,7 @@ SUBROUTINE NavierStokes_PreSolveUpdateBoundaryConditions(SOLVER,err,error,*) CALL FlagError("Only node based interpolation is implemented.",err,error,*999) END IF - ! Construct the filename based on the computational node and time step + ! Construct the filename based on the computation node and time step inputFile = './../interpolatedData/fitData' //TRIM(NUMBER_TO_VSTRING(currentTimeLoopIteration, & & "*",ERR,ERROR)) // '.dat' @@ -7096,7 +7140,7 @@ SUBROUTINE NavierStokes_PreSolveUpdateBoundaryConditions(SOLVER,err,error,*) CALL DOMAIN_TOPOLOGY_NODE_CHECK_EXISTS(domain%Topology,userNodeNumber,nodeExists, & & localNodeNumber,ghostNode,err,error,*999) IF(nodeExists .AND. .NOT. ghostNode) THEN - ! Node found on this computational node + ! Node found on this computation node READ(10,*) (componentValues(componentIdx), componentIdx=1,numberOfDimensions) DO componentIdx=1,numberOfDimensions dependentDof = dependentFieldVariable%COMPONENTS(componentIdx)%PARAM_TO_DOF_MAP% & @@ -7115,7 +7159,7 @@ SUBROUTINE NavierStokes_PreSolveUpdateBoundaryConditions(SOLVER,err,error,*) END IF END DO !componentIdx ELSE - ! Dummy read if this node not on this computational node + ! Dummy read if this node not on this computation node READ(10,*) END IF END DO @@ -7695,7 +7739,7 @@ SUBROUTINE NavierStokes_PreSolveUpdateBoundaryConditions(SOLVER,err,error,*) IF(ASSOCIATED(independentField)) THEN componentNumberVelocity = 1 numberOfDimensions = dependentFieldVariable%NUMBER_OF_COMPONENTS - 1 - ! Get the nodes on this computational domain + ! Get the nodes on this computation domain IF(independentFieldVariable%COMPONENTS(componentNumberVelocity)%INTERPOLATION_TYPE== & & FIELD_NODE_BASED_INTERPOLATION) THEN domain=>independentFieldVariable%COMPONENTS(componentNumberVelocity)%DOMAIN @@ -7718,15 +7762,17 @@ SUBROUTINE NavierStokes_PreSolveUpdateBoundaryConditions(SOLVER,err,error,*) CALL FlagError("Only node based interpolation is implemented.",ERR,ERROR,*999) END IF - ! Construct the filename based on the computational node and time step + ! Construct the filename based on the computation node and time step inputFile = './../interpolatedData/fitData' //TRIM(NUMBER_TO_VSTRING(currentTimeLoopIteration, & & "*",ERR,ERROR)) // '.dat' INQUIRE(FILE=inputFile, EXIST=importDataFromFile) IF(importDataFromFile) THEN !Read fitted data from input file (if exists) - computationalNode = ComputationalEnvironment_NodeNumberGet(ERR,ERROR) - IF(computationalNode==0) THEN + NULLIFY(workGroup) + CALL Solver_WorkGroupGet(solver,workGroup,err,error,*999) + CALL WorkGroup_GroupNodeNumberGet(workGroup,computationNode,err,error,*999) + IF(computationNode==0) THEN CALL WRITE_STRING(GENERAL_OUTPUT_TYPE,"Updating independent field and boundary nodes from " & & //inputFile,ERR,ERROR,*999) END IF @@ -7740,7 +7786,7 @@ SUBROUTINE NavierStokes_PreSolveUpdateBoundaryConditions(SOLVER,err,error,*) CALL DOMAIN_TOPOLOGY_NODE_CHECK_EXISTS(domain%Topology,userNodeNumber,nodeExists, & & localNodeNumber,ghostNode,err,error,*999) IF(nodeExists .AND. .NOT. ghostNode) THEN - ! Node found on this computational node + ! Node found on this computation node READ(10,*) (componentValues(componentIdx), componentIdx=1,numberOfDimensions) DO componentIdx=1,numberOfDimensions dependentDof = dependentFieldVariable%COMPONENTS(componentIdx)%PARAM_TO_DOF_MAP% & @@ -7759,7 +7805,7 @@ SUBROUTINE NavierStokes_PreSolveUpdateBoundaryConditions(SOLVER,err,error,*) END IF END DO !componentIdx ELSE - ! Dummy read if this node not on this computational node + ! Dummy read if this node not on this computation node READ(10,*) END IF END DO @@ -8488,13 +8534,13 @@ SUBROUTINE NavierStokes_PreSolveUpdateBoundaryConditions(SOLVER,err,error,*) FluidNodeNumber=node_idx DO search_idx=1,SIZE(Solver2%SOLVER_equations%SOLVER_MAPPING% & & INTERFACE_CONDITIONS(1)%ptr%INTERFACE% & - & NODES%COUPLED_NODES(2,:)) + & NODES%coupledNodes(2,:)) IF(Solver2%SOLVER_equations%SOLVER_MAPPING% & & INTERFACE_CONDITIONS(1)%ptr%INTERFACE% & - & NODES%COUPLED_NODES(2,search_idx)==node_idx) THEN + & NODES%coupledNodes(2,search_idx)==node_idx) THEN SolidNodeNumber=Solver2%SOLVER_equations%SOLVER_MAPPING% & & INTERFACE_CONDITIONS(1)%ptr%INTERFACE% & - & NODES%COUPLED_NODES(1,search_idx)!might wanna put a break here + & NODES%coupledNodes(1,search_idx)!might wanna put a break here SolidNodeFound=.TRUE. END IF END DO @@ -8702,7 +8748,7 @@ SUBROUTINE NavierStokes_PreSolveAleUpdateMesh(solver,err,error,*) TYPE(FIELD_VARIABLE_TYPE), POINTER :: fluidGeometricVariable,interfaceGeometricVariable TYPE(INTERFACE_TYPE), POINTER :: fsiInterface TYPE(INTERFACE_CONDITION_TYPE), POINTER :: fsiInterfaceCondition - TYPE(NODES_TYPE), POINTER :: interfaceNodes + TYPE(NodesType), POINTER :: interfaceNodes TYPE(PROBLEM_TYPE), POINTER :: problem TYPE(SOLVER_EQUATIONS_TYPE), POINTER :: laplaceSolverEquations,fluidSolverEquations,fsiSolverEquations TYPE(SOLVER_MAPPING_TYPE), POINTER :: laplaceSolverMapping,fsiSolverMapping,fluidSolverMapping,solidSolverMapping @@ -8717,7 +8763,7 @@ SUBROUTINE NavierStokes_PreSolveAleUpdateMesh(solver,err,error,*) LOGICAL :: fluidEquationsSetFound=.FALSE. LOGICAL :: solidEquationsSetFound=.FALSE. - ENTERS("NavierStokes_PreSolveALEUpdateMesh",err,error,*999) + ENTERS("NavierStokes_PreSolveAleUpdateMesh",err,error,*999) NULLIFY(controlLoop) NULLIFY(dynamicSolver) @@ -9019,8 +9065,8 @@ SUBROUTINE NavierStokes_PreSolveAleUpdateMesh(solver,err,error,*) NULLIFY(domainNodes) CALL DomainTopology_NodesGet(domainTopology,domainNodes,err,error,*999) DO nodeIdx=1,domainNodes%TOTAL_NUMBER_OF_NODES - solidNode=interfaceNodes%COUPLED_NODES(1,nodeIdx) - fluidNode=interfaceNodes%COUPLED_NODES(2,nodeIdx) + solidNode=interfaceNodes%coupledNodes(1,nodeIdx) + fluidNode=interfaceNodes%coupledNodes(2,nodeIdx) DO derivativeIdx=1,domainNodes%nodes(nodeIdx)%NUMBER_OF_DERIVATIVES DO versionIdx=1,domainNodes%nodes(nodeIdx)%derivatives(derivativeIdx)%numberOfVersions CALL Field_ParameterSetGetNode(solidDependentField,FIELD_U_VARIABLE_TYPE,FIELD_VALUES_SET_TYPE, & @@ -12460,14 +12506,15 @@ SUBROUTINE NavierStokes_CalculateBoundaryFlux(equationsSet,coupledEquationsSet,i TYPE(FIELD_TYPE), POINTER :: dependentField1D TYPE(FIELD_TYPE), POINTER :: independentField1D TYPE(EquationsMatricesRHSType), POINTER :: rhsVector + TYPE(WorkGroupType), POINTER :: workGroup INTEGER(INTG) :: faceIdx, faceNumber,elementIdx,nodeNumber,versionNumber INTEGER(INTG) :: componentIdx,gaussIdx INTEGER(INTG) :: faceNodeIdx, elementNodeIdx INTEGER(INTG) :: faceNodeDerivativeIdx, meshComponentNumber INTEGER(INTG) :: normalComponentIdx INTEGER(INTG) :: boundaryID,numberOfBoundaries,boundaryType,coupledNodeNumber,numberOfGlobalBoundaries - INTEGER(INTG) :: MPI_IERROR,numberOfComputationalNodes - INTEGER(INTG) :: i,j,computationalNode + INTEGER(INTG) :: MPI_IERROR,numberOfGroupComputationNodes + INTEGER(INTG) :: i,j,computationNode,groupCommunicator REAL(DP) :: gaussWeight, normalProjection,elementNormal(3) REAL(DP) :: normalDifference,normalTolerance REAL(DP) :: courant,maxCourant,toleranceCourant @@ -12781,28 +12828,30 @@ SUBROUTINE NavierStokes_CalculateBoundaryFlux(equationsSet,coupledEquationsSet,i ! G a t h e r v a l u e s o v e r t h r e a d s ! ------------------------------------------------------ - ! Need to add boundary flux for any boundaries split accross computational nodes + ! Need to add boundary flux for any boundaries split accross computation nodes numberOfGlobalBoundaries = 0 globalBoundaryFlux = 0.0_DP globalBoundaryArea = 0.0_DP globalBoundaryPressure = 0.0_DP globalBoundaryNormalStress = 0.0_DP - numberOfComputationalNodes=computationalEnvironment%numberOfComputationalNodes - IF(numberOfComputationalNodes>1) THEN !use mpi - CALL MPI_ALLREDUCE(localBoundaryFlux,globalBoundaryFlux,10,MPI_DOUBLE_PRECISION,MPI_SUM, & - & computationalEnvironment%mpiCommunicator,MPI_IERROR) + NULLIFY(workGroup) + CALL Decomposition_WorkGroupGet(decomposition3D,workGroup,err,error,*999) + CALL WorkGroup_GroupCommunicatorGet(workGroup,groupCommunicator,err,error,*999) + CALL WorkGroup_NumberOfGroupNodesGet(workGroup,numberOfGroupComputationNodes,err,error,*999) + CALL WorkGroup_GroupNodeNumberGet(workGroup,computationNode,err,error,*999) + IF(numberOfGroupComputationNodes>1) THEN !use mpi + CALL MPI_ALLREDUCE(localBoundaryFlux,globalBoundaryFlux,10,MPI_DOUBLE_PRECISION,MPI_SUM,groupCommunicator,MPI_IERROR) CALL MPI_ERROR_CHECK("MPI_ALLREDUCE",MPI_IERROR,err,error,*999) - CALL MPI_ALLREDUCE(localBoundaryArea,globalBoundaryArea,10,MPI_DOUBLE_PRECISION,MPI_SUM, & - & computationalEnvironment%mpiCommunicator,MPI_IERROR) + CALL MPI_ALLREDUCE(localBoundaryArea,globalBoundaryArea,10,MPI_DOUBLE_PRECISION,MPI_SUM,groupCommunicator,MPI_IERROR) CALL MPI_ERROR_CHECK("MPI_ALLREDUCE",MPI_IERROR,ERR,ERROR,*999) CALL MPI_ALLREDUCE(localBoundaryNormalStress,globalBoundaryNormalStress,10,MPI_DOUBLE_PRECISION,MPI_SUM, & - & computationalEnvironment%mpiCommunicator,MPI_IERROR) + & groupCommunicator,MPI_IERROR) CALL MPI_ERROR_CHECK("MPI_ALLREDUCE",MPI_IERROR,ERR,ERROR,*999) CALL MPI_ALLREDUCE(localBoundaryPressure,globalBoundaryPressure,10,MPI_DOUBLE_PRECISION,MPI_SUM, & - & computationalEnvironment%mpiCommunicator,MPI_IERROR) + & groupCommunicator,MPI_IERROR) CALL MPI_ERROR_CHECK("MPI_ALLREDUCE",MPI_IERROR,ERR,ERROR,*999) CALL MPI_ALLREDUCE(numberOfBoundaries,numberOfGlobalBoundaries,1,MPI_INTEGER,MPI_MAX, & - & computationalEnvironment%mpiCommunicator,MPI_IERROR) + & groupCommunicator,MPI_IERROR) CALL MPI_ERROR_CHECK("MPI_ALLREDUCE",MPI_IERROR,ERR,ERROR,*999) ELSE numberOfGlobalBoundaries = numberOfBoundaries @@ -12820,8 +12869,7 @@ SUBROUTINE NavierStokes_CalculateBoundaryFlux(equationsSet,coupledEquationsSet,i END DO DO boundaryID=2,numberOfGlobalBoundaries IF(globalBoundaryArea(boundaryID) > ZERO_TOLERANCE) THEN - computationalNode = ComputationalEnvironment_NodeNumberGet(ERR,ERROR) - IF(computationalNode==0) THEN + IF(computationNode==0) THEN CALL WriteStringTwoValue(DIAGNOSTIC_OUTPUT_TYPE,"3D boundary ",boundaryID," flow: ", & & globalBoundaryFlux(boundaryID),err,error,*999) CALL WriteStringTwoValue(DIAGNOSTIC_OUTPUT_TYPE,"3D boundary ",boundaryID," area: ", & @@ -13085,11 +13133,10 @@ SUBROUTINE NavierStokes_CalculateBoundaryFlux(equationsSet,coupledEquationsSet,i END DO !elementIdx !allocate array for mpi communication - IF(numberOfComputationalNodes>1) THEN !use mpi - ALLOCATE(globalConverged(numberOfComputationalNodes),STAT=ERR) + IF(numberOfGroupComputationNodes>1) THEN !use mpi + ALLOCATE(globalConverged(numberOfGroupComputationNodes),STAT=ERR) IF(ERR/=0) CALL FlagError("Could not allocate global convergence check array.",ERR,ERROR,*999) - CALL MPI_ALLGATHER(convergedFlag,1,MPI_LOGICAL,globalConverged,1,MPI_LOGICAL, & - & computationalEnvironment%mpiCommunicator,MPI_IERROR) + CALL MPI_ALLGATHER(convergedFlag,1,MPI_LOGICAL,globalConverged,1,MPI_LOGICAL,groupCommunicator,MPI_IERROR) CALL MPI_ERROR_CHECK("MPI_ALLGATHER",MPI_IERROR,ERR,ERROR,*999) IF(ALL(globalConverged)) THEN convergedFlag = .TRUE. @@ -13143,6 +13190,7 @@ SUBROUTINE NavierStokes_Couple1D0D(controlLoop,solver,err,error,*) TYPE(VARYING_STRING), INTENT(OUT) :: error !Local Variables TYPE(CONTROL_LOOP_WHILE_TYPE), POINTER :: iterativeLoop + TYPE(DECOMPOSITION_TYPE), POINTER :: decomposition TYPE(EquationsType), POINTER :: equations TYPE(EquationsMappingVectorType), POINTER :: vectorMapping TYPE(EquationsMappingDynamicType), POINTER :: dynamicMapping @@ -13157,9 +13205,10 @@ SUBROUTINE NavierStokes_Couple1D0D(controlLoop,solver,err,error,*) TYPE(BOUNDARY_CONDITIONS_TYPE), POINTER :: boundaryConditions TYPE(BOUNDARY_CONDITIONS_VARIABLE_TYPE), POINTER :: boundaryConditionsVariable TYPE(VARYING_STRING) :: localError + TYPE(WorkGroupType), POINTER :: workGroup INTEGER(INTG) :: nodeNumber,nodeIdx,derivativeIdx,versionIdx,componentIdx,numberOfLocalNodes1D INTEGER(INTG) :: solver1dNavierStokesNumber,solverNumber,MPI_IERROR,timestep,iteration - INTEGER(INTG) :: boundaryNumber,numberOfBoundaries,numberOfComputationalNodes + INTEGER(INTG) :: boundaryNumber,numberOfBoundaries,numberOfGroupComputationNodes,groupCommunicator INTEGER(INTG) :: dependentDof,boundaryConditionType REAL(DP) :: A0_PARAM,E_PARAM,H_PARAM,beta,pCellML,normalWave(2) REAL(DP) :: qPrevious,pPrevious,aPrevious,q1d,a1d,qError,aError,couplingTolerance @@ -13253,7 +13302,9 @@ SUBROUTINE NavierStokes_Couple1D0D(controlLoop,solver,err,error,*) END IF !Get the number of local nodes - domainNodes=>dependentField%DECOMPOSITION%DOMAIN(dependentField%DECOMPOSITION%MESH_COMPONENT_NUMBER)%ptr% & + NULLIFY(decomposition) + CALL Field_DecompositionGet(dependentField,decomposition,err,error,*999) + domainNodes=>decomposition%DOMAIN(dependentField%DECOMPOSITION%MESH_COMPONENT_NUMBER)%ptr% & & TOPOLOGY%NODES IF(ASSOCIATED(domainNodes)) THEN numberOfLocalNodes1D=domainNodes%NUMBER_OF_NODES @@ -13381,13 +13432,15 @@ SUBROUTINE NavierStokes_Couple1D0D(controlLoop,solver,err,error,*) localConverged = .FALSE. END IF ! Need to check that boundaries have converged globally (on all domains) if this is a parallel problem - numberOfComputationalNodes=computationalEnvironment%numberOfComputationalNodes - IF(numberOfComputationalNodes>1) THEN !use mpi + NULLIFY(workGroup) + CALL Decomposition_WorkGroupGet(decomposition,workGroup,err,error,*999) + CALL WorkGroup_GroupCommunicatorGet(workGroup,groupCommunicator,err,error,*999) + CALL WorkGroup_NumberOfGroupNodesGet(workGroup,numberOfGroupComputationNodes,err,error,*999) + IF(numberOfGroupComputationNodes>1) THEN !use mpi !allocate array for mpi communication - ALLOCATE(globalConverged(numberOfComputationalNodes),STAT=ERR) + ALLOCATE(globalConverged(numberOfGroupComputationNodes),STAT=ERR) IF(ERR/=0) CALL FlagError("Could not allocate global convergence check array.",ERR,ERROR,*999) - CALL MPI_ALLGATHER(localConverged,1,MPI_LOGICAL,globalConverged,1,MPI_LOGICAL, & - & computationalEnvironment%mpiCommunicator,MPI_IERROR) + CALL MPI_ALLGATHER(localConverged,1,MPI_LOGICAL,globalConverged,1,MPI_LOGICAL,groupCommunicator,MPI_IERROR) CALL MPI_ERROR_CHECK("MPI_ALLGATHER",MPI_IERROR,err,error,*999) IF(ALL(globalConverged)) THEN !CALL WRITE_STRING_VALUE(DIAGNOSTIC_OUTPUT_TYPE,"1D/0D coupling converged; # iterations: ", & @@ -13438,6 +13491,7 @@ SUBROUTINE NavierStokes_Couple3D1D(controlLoop,err,error,*) TYPE(CONTROL_LOOP_WHILE_TYPE), POINTER :: iterativeLoop TYPE(BOUNDARY_CONDITIONS_TYPE), POINTER :: boundaryConditions TYPE(BOUNDARY_CONDITIONS_VARIABLE_TYPE), POINTER :: boundaryConditionsVariable + TYPE(DECOMPOSITION_TYPE), POINTER :: decomposition TYPE(EQUATIONS_SET_TYPE), POINTER :: equationsSet1D,equationsSet3D TYPE(EquationsType), POINTER :: equations1D,equations3D TYPE(EquationsMappingVectorType), POINTER :: vectorMapping1D,vectorMapping3D @@ -13448,10 +13502,11 @@ SUBROUTINE NavierStokes_Couple3D1D(controlLoop,err,error,*) TYPE(FIELD_VARIABLE_TYPE), POINTER :: fieldVariable TYPE(DOMAIN_NODES_TYPE), POINTER :: domainNodes TYPE(VARYING_STRING) :: localError + TYPE(WorkGroupType), POINTER :: workGroup INTEGER(INTG) :: nodeNumber,nodeIdx,derivativeIdx,versionIdx,componentIdx,numberOfLocalNodes1D INTEGER(INTG) :: solver1dNavierStokesNumber,MPI_IERROR,timestep,iteration - INTEGER(INTG) :: boundaryNumber,boundaryType1D,numberOfBoundaries,numberOfComputationalNodes - INTEGER(INTG) :: solver3dNavierStokesNumber,userNodeNumber,localDof,globalDof,computationalNode + INTEGER(INTG) :: boundaryNumber,boundaryType1D,numberOfBoundaries,numberOfGroupComputationNodes + INTEGER(INTG) :: solver3dNavierStokesNumber,userNodeNumber,localDof,globalDof,computationNode,groupCommunicator REAL(DP) :: normalWave(2) REAL(DP) :: flow1D,stress1D,flow1DPrevious,stress1DPrevious,flow3D,stress3D,flowError,stressError REAL(DP) :: maxStressError,maxFlowError,flowTolerance,stressTolerance,absoluteCouplingTolerance @@ -13544,7 +13599,9 @@ SUBROUTINE NavierStokes_Couple3D1D(controlLoop,err,error,*) !Get the number of local nodes - domainNodes=>dependentField1D%DECOMPOSITION%DOMAIN(dependentField1D%DECOMPOSITION%MESH_COMPONENT_NUMBER)%PTR% & + NULLIFY(decomposition) + CALL Field_DecompositionGet(dependentField1D,decomposition,err,error,*999) + domainNodes=>decomposition%DOMAIN(dependentField1D%DECOMPOSITION%MESH_COMPONENT_NUMBER)%PTR% & & TOPOLOGY%NODES IF(ASSOCIATED(domainNodes)) THEN numberOfLocalNodes1D=domainNodes%NUMBER_OF_NODES @@ -13670,22 +13727,23 @@ SUBROUTINE NavierStokes_Couple3D1D(controlLoop,err,error,*) localConverged = .TRUE. END IF ! Need to check that boundaries have converged globally (on all domains) if this is a MPI problem - numberOfComputationalNodes=computationalEnvironment%numberOfComputationalNodes - IF(numberOfComputationalNodes>1) THEN !use mpi + CALL WorkGroup_GroupCommunicatorGet(workGroup,groupCommunicator,err,error,*999) + CALL WorkGroup_NumberOfGroupNodesGet(workGroup,numberOfGroupComputationNodes,err,error,*999) + CALL WorkGroup_GroupNodeNumberGet(workGroup,computationNode,err,error,*999) + IF(numberOfGroupComputationNodes>1) THEN !use mpi !allocate array for mpi communication IF(ERR/=0) CALL FlagError("Could not allocate global convergence check array.",ERR,ERROR,*999) - CALL MPI_ALLREDUCE(localConverged,globalConverged,1,MPI_LOGICAL,MPI_LAND,computationalEnvironment%mpiCommunicator,MPI_IERROR) + CALL MPI_ALLREDUCE(localConverged,globalConverged,1,MPI_LOGICAL,MPI_LAND,groupCommunicator,MPI_IERROR) CALL MPI_ERROR_CHECK("MPI_ALLREDUCE",MPI_IERROR,ERR,ERROR,*999) IF(globalConverged) THEN CALL WRITE_STRING_VALUE(DIAGNOSTIC_OUTPUT_TYPE,"3D/1D coupling converged; # iterations: ", & & iteration,err,error,*999) iterativeLoop%CONTINUE_LOOP=.FALSE. ELSE - computationalNode = ComputationalEnvironment_NodeNumberGet(ERR,ERROR) - CALL WriteStringTwoValue(DIAGNOSTIC_OUTPUT_TYPE,"Rank ",computationalNode," 3D/1D max flow error: ", & + CALL WriteStringTwoValue(DIAGNOSTIC_OUTPUT_TYPE,"Rank ",computationNode," 3D/1D max flow error: ", & & maxFlowError,err,error,*999) - CALL WriteStringTwoValue(DIAGNOSTIC_OUTPUT_TYPE,"Rank ",computationalNode," 3D/1D max stress error: ", & + CALL WriteStringTwoValue(DIAGNOSTIC_OUTPUT_TYPE,"Rank ",computationNode," 3D/1D max stress error: ", & & maxStressError,err,error,*999) END IF ELSE @@ -13741,6 +13799,7 @@ SUBROUTINE NavierStokes_CoupleCharacteristics(controlLoop,solver,err,error,*) TYPE(VARYING_STRING), INTENT(OUT) :: error !Local Variables TYPE(CONTROL_LOOP_WHILE_TYPE), POINTER :: iterativeLoop + TYPE(DECOMPOSITION_TYPE), POINTER :: decomposition TYPE(DOMAIN_NODES_TYPE), POINTER :: domainNodes TYPE(EQUATIONS_SET_TYPE), POINTER :: equationsSet TYPE(FIELD_TYPE), POINTER :: dependentField,independentField,materialsField @@ -13748,10 +13807,11 @@ SUBROUTINE NavierStokes_CoupleCharacteristics(controlLoop,solver,err,error,*) TYPE(SOLVER_MAPPING_TYPE), POINTER :: solverMapping TYPE(SOLVER_TYPE), POINTER :: solver1DNavierStokes TYPE(VARYING_STRING) :: localError + TYPE(WorkGroupType), POINTER :: workGroup INTEGER(INTG) :: nodeNumber,nodeIdx,derivativeIdx,versionIdx,componentIdx,i INTEGER(INTG) :: solver1dNavierStokesNumber,solverNumber - INTEGER(INTG) :: branchNumber,numberOfBranches,numberOfComputationalNodes,numberOfVersions - INTEGER(INTG) :: MPI_IERROR,timestep,iteration,outputIteration + INTEGER(INTG) :: branchNumber,numberOfBranches,numberOfGroupComputationNodes,numberOfVersions + INTEGER(INTG) :: MPI_IERROR,timestep,iteration,outputIteration,groupCommunicator REAL(DP) :: couplingTolerance,l2ErrorW(30),wPrevious(2,7),wNavierStokes(2,7),wCharacteristic(2,7),wError(2,7) REAL(DP) :: l2ErrorQ(100),qCharacteristic(7),qNavierStokes(7),wNext(2,7) REAL(DP) :: totalErrorWPrevious,startTime,stopTime,currentTime,timeIncrement @@ -13822,8 +13882,11 @@ SUBROUTINE NavierStokes_CoupleCharacteristics(controlLoop,solver,err,error,*) CALL FlagError("Control Loop is not associated.",err,error,*999) END IF + NULLIFY(decomposition) + CALL Field_DecompositionGet(dependentField,decomposition,err,error,*999) + !Get the number of local nodes - domainNodes=>dependentField%DECOMPOSITION%DOMAIN(dependentField%DECOMPOSITION%MESH_COMPONENT_NUMBER)%ptr% & + domainNodes=>decomposition%DOMAIN(dependentField%DECOMPOSITION%MESH_COMPONENT_NUMBER)%ptr% & & TOPOLOGY%NODES branchNumber = 0 branchConverged = .TRUE. @@ -13963,13 +14026,15 @@ SUBROUTINE NavierStokes_CoupleCharacteristics(controlLoop,solver,err,error,*) localConverged = .FALSE. END IF ! Need to check that boundaries have converged globally (on all domains) if this is a parallel problem - numberOfComputationalNodes=computationalEnvironment%numberOfComputationalNodes - IF(numberOfComputationalNodes>1) THEN !use mpi + NULLIFY(workGroup) + CALL Decomposition_WorkGroupGet(decomposition,workGroup,err,error,*999) + CALL WorkGroup_GroupCommunicatorGet(workGroup,groupCommunicator,err,error,*999) + CALL WorkGroup_NumberOfGroupNodesGet(workGroup,numberOfGroupComputationNodes,err,error,*999) + IF(numberOfGroupComputationNodes>1) THEN !use mpi !allocate array for mpi communication - ALLOCATE(globalConverged(numberOfComputationalNodes),STAT=ERR) + ALLOCATE(globalConverged(numberOfGroupComputationNodes),STAT=ERR) IF(ERR/=0) CALL FlagError("Could not allocate global convergence check array.",ERR,ERROR,*999) - CALL MPI_ALLGATHER(localConverged,1,MPI_LOGICAL,globalConverged,1,MPI_LOGICAL, & - & computationalEnvironment%mpiCommunicator,MPI_IERROR) + CALL MPI_ALLGATHER(localConverged,1,MPI_LOGICAL,globalConverged,1,MPI_LOGICAL,groupCommunicator,MPI_IERROR) CALL MPI_ERROR_CHECK("MPI_ALLGATHER",MPI_IERROR,err,error,*999) IF(ALL(globalConverged)) THEN !CALL WRITE_STRING_VALUE(DIAGNOSTIC_OUTPUT_TYPE,"Navier-Stokes/Characteristic converged; # iterations: ", & @@ -14077,7 +14142,7 @@ SUBROUTINE NavierStokes_ShearRateCalculate(equationsSet,err,error,*) DO elementIdx=startElement,stopElement localElementNumber=elementsMapping%DOMAIN_LIST(elementIdx) userElementNumber = elementsMapping%LOCAL_TO_GLOBAL_MAP(localElementNumber) - !Check computational node for elementIdx + !Check computation node for elementIdx elementExists=.FALSE. ghostElement=.TRUE. CALL DECOMPOSITION_TOPOLOGY_ELEMENT_CHECK_EXISTS(decomposition%TOPOLOGY, & @@ -14927,8 +14992,8 @@ SUBROUTINE NavierStokes_CalculateBoundaryFlux3D0D(equationsSet,err,error,*) INTEGER(INTG) :: faceNodeIdx, elementNodeIdx INTEGER(INTG) :: faceNodeDerivativeIdx, meshComponentNumber INTEGER(INTG) :: boundaryID,numberOfBoundaries,boundaryType,coupledNodeNumber,numberOfGlobalBoundaries - INTEGER(INTG) :: MPI_IERROR,numberOfComputationalNodes - INTEGER(INTG) :: computationalNode,xiDirection(3),orientation + INTEGER(INTG) :: MPI_IERROR,numberOfGroupComputationNodes + INTEGER(INTG) :: computationNode,xiDirection(3),orientation,groupCommunicator REAL(DP) :: gaussWeight, elementNormal(3) REAL(DP) :: normalDifference,normalTolerance REAL(DP) :: courant,maxCourant,toleranceCourant,boundaryValueTemp @@ -14942,6 +15007,7 @@ SUBROUTINE NavierStokes_CalculateBoundaryFlux3D0D(equationsSet,err,error,*) LOGICAL :: convergedFlag !1) THEN !use mpi + NULLIFY(workGroup) + CALL Decomposition_WorkGroupGet(decomposition3D,workGroup,err,error,*999) + CALL WorkGroup_GroupCommunicatorGet(workGroup,groupCommunicator,err,error,*999) + CALL WorkGroup_NumberOfGroupNodesGet(workGroup,numberOfGroupComputationNodes,err,error,*999) + CALL WorkGroup_GroupNodeNumberGet(workGroup,computationNode,err,error,*999) + IF(numberOfGroupComputationNodes>1) THEN !use mpi CALL MPI_ALLREDUCE(localBoundaryFlux,globalBoundaryFlux,10,MPI_DOUBLE_PRECISION,MPI_SUM, & - & computationalEnvironment%mpiCommunicator,MPI_IERROR) + & groupCommunicator,MPI_IERROR) CALL MPI_ERROR_CHECK("MPI_ALLREDUCE",MPI_IERROR,ERR,ERROR,*999) CALL MPI_ALLREDUCE(localBoundaryArea,globalBoundaryArea,10,MPI_DOUBLE_PRECISION,MPI_SUM, & - & computationalEnvironment%mpiCommunicator,MPI_IERROR) + & groupCommunicator,MPI_IERROR) CALL MPI_ERROR_CHECK("MPI_ALLREDUCE",MPI_IERROR,ERR,ERROR,*999) CALL MPI_ALLREDUCE(localBoundaryPressure,globalBoundaryPressure,10,MPI_DOUBLE_PRECISION,MPI_SUM, & - & computationalEnvironment%mpiCommunicator,MPI_IERROR) + & groupCommunicator,MPI_IERROR) CALL MPI_ERROR_CHECK("MPI_ALLREDUCE",MPI_IERROR,ERR,ERROR,*999) CALL MPI_ALLREDUCE(numberOfBoundaries,numberOfGlobalBoundaries,1,MPI_INTEGER,MPI_MAX, & - & computationalEnvironment%mpiCommunicator,MPI_IERROR) + & groupCommunicator,MPI_IERROR) CALL MPI_ERROR_CHECK("MPI_ALLREDUCE",MPI_IERROR,ERR,ERROR,*999) ELSE numberOfGlobalBoundaries = numberOfBoundaries @@ -15188,8 +15258,7 @@ SUBROUTINE NavierStokes_CalculateBoundaryFlux3D0D(equationsSet,err,error,*) END DO DO boundaryID=2,numberOfGlobalBoundaries IF(globalBoundaryArea(boundaryID) > ZERO_TOLERANCE) THEN - computationalNode = ComputationalEnvironment_NodeNumberGet(ERR,ERROR) - IF(computationalNode==0) THEN + IF(computationNode==0) THEN CALL WriteStringTwoValue(DIAGNOSTIC_OUTPUT_TYPE,"3D boundary ",boundaryID," flow: ", & & globalBoundaryFlux(boundaryID),err,error,*999) CALL WriteStringTwoValue(DIAGNOSTIC_OUTPUT_TYPE,"3D boundary ",boundaryID," mean pressure: ", & @@ -15316,11 +15385,10 @@ SUBROUTINE NavierStokes_CalculateBoundaryFlux3D0D(equationsSet,err,error,*) END DO !elementIdx !allocate array for mpi communication - IF(numberOfComputationalNodes>1) THEN !use mpi - ALLOCATE(globalConverged(numberOfComputationalNodes),STAT=ERR) + IF(numberOfGroupComputationNodes>1) THEN !use mpi + ALLOCATE(globalConverged(numberOfGroupComputationNodes),STAT=ERR) IF(ERR/=0) CALL FlagError("Could not allocate global convergence check array.",ERR,ERROR,*999) - CALL MPI_ALLGATHER(convergedFlag,1,MPI_LOGICAL,globalConverged,1,MPI_LOGICAL, & - & computationalEnvironment%mpiCommunicator,MPI_IERROR) + CALL MPI_ALLGATHER(convergedFlag,1,MPI_LOGICAL,globalConverged,1,MPI_LOGICAL,groupCommunicator,MPI_IERROR) CALL MPI_ERROR_CHECK("MPI_ALLGATHER",MPI_IERROR,ERR,ERROR,*999) IF(ALL(globalConverged)) THEN convergedFlag = .TRUE. diff --git a/src/Poisson_equations_routines.f90 b/src/Poisson_equations_routines.f90 index f3cb6c11..ab80aece 100755 --- a/src/Poisson_equations_routines.f90 +++ b/src/Poisson_equations_routines.f90 @@ -67,7 +67,6 @@ MODULE POISSON_EQUATIONS_ROUTINES USE Kinds USE Maths USE MatrixVector - USE NODE_ROUTINES USE PROBLEM_CONSTANTS USE Strings USE SOLVER_ROUTINES diff --git a/src/Stokes_equations_routines.f90 b/src/Stokes_equations_routines.f90 index fb38c228..4c6baf72 100755 --- a/src/Stokes_equations_routines.f90 +++ b/src/Stokes_equations_routines.f90 @@ -69,7 +69,6 @@ MODULE STOKES_EQUATIONS_ROUTINES USE ISO_VARYING_STRING USE Kinds USE MatrixVector - USE NODE_ROUTINES USE PROBLEM_CONSTANTS USE Strings USE SOLVER_ROUTINES diff --git a/src/analytic_analysis_routines.f90 b/src/analytic_analysis_routines.f90 index c3a08ff8..acf0d1bc 100755 --- a/src/analytic_analysis_routines.f90 +++ b/src/analytic_analysis_routines.f90 @@ -47,7 +47,8 @@ MODULE ANALYTIC_ANALYSIS_ROUTINES USE BasisRoutines USE BasisAccessRoutines USE CmissMPI - USE ComputationEnvironment + USE ComputationRoutines + USE ComputationAccessRoutines USE Constants USE FIELD_ROUTINES USE FieldAccessRoutines @@ -55,6 +56,7 @@ MODULE ANALYTIC_ANALYSIS_ROUTINES USE ISO_VARYING_STRING USE Kinds USE MatrixVector + USE MeshAccessRoutines #ifndef NOMPIMOD USE MPI #endif @@ -108,7 +110,7 @@ MODULE ANALYTIC_ANALYSIS_ROUTINES CONTAINS ! - !================================================================================================================================ + !================================================================================================================================= ! !>Output the analytic error analysis for a dependent field compared to the analytic values parameter set. \see OPENCMISS::CMISSAnalyticAnalytisOutput @@ -121,7 +123,7 @@ SUBROUTINE AnalyticAnalysis_Output(FIELD,FILENAME,ERR,ERROR,*) TYPE(VARYING_STRING), INTENT(OUT) :: ERROR !=1) THEN -!!TODO \todo have more general ascii file mechanism - IF(computationalEnvironment%numberOfComputationalNodes>1) THEN - WRITE(FILE_NAME,'(A,".opanal.",I0)') FILENAME(1:LEN_TRIM(FILENAME)),computationalEnvironment% & - & myComputationalNodeNumber - ELSE - FILE_NAME=FILENAME(1:LEN_TRIM(FILENAME))//".opanal" - ENDIF - OUTPUT_ID=IO1_FILE_UNIT - OPEN(UNIT=OUTPUT_ID,FILE=FILE_NAME(1:LEN_TRIM(FILE_NAME)),STATUS="REPLACE",FORM="FORMATTED",IOSTAT=ERR) - IF(ERR/=0) CALL FlagError("Error opening analysis output file.",ERR,ERROR,*999) - ELSE - OUTPUT_ID=GENERAL_OUTPUT_TYPE - ENDIF DECOMPOSITION=>FIELD%DECOMPOSITION IF(ASSOCIATED(DECOMPOSITION)) THEN + NULLIFY(workGroup) + CALL Decomposition_WorkGroupGet(decomposition,workGroup,err,error,*999) + CALL WorkGroup_GroupCommunicatorGet(workGroup,groupCommunicator,err,error,*999) + CALL WorkGroup_NumberOfGroupNodesGet(workGroup,numberOfGroupComputationNodes,err,error,*999) + CALL WorkGroup_GroupNodeNumberGet(workGroup,myGroupComputationNodeNumber,err,error,*999) DECOMPOSITION_TOPOLOGY=>DECOMPOSITION%TOPOLOGY IF(ASSOCIATED(DECOMPOSITION_TOPOLOGY)) THEN + IF(LEN_TRIM(FILENAME)>=1) THEN +!!TODO \todo have more general ascii file mechanism + IF(numberOfGroupComputationNodes>1) THEN + WRITE(FILE_NAME,'(A,".opanal.",I0)') FILENAME(1:LEN_TRIM(FILENAME)),myGroupComputationNodeNumber + ELSE + FILE_NAME=FILENAME(1:LEN_TRIM(FILENAME))//".opanal" + ENDIF + OUTPUT_ID=IO1_FILE_UNIT + OPEN(UNIT=OUTPUT_ID,FILE=FILE_NAME(1:LEN_TRIM(FILE_NAME)),STATUS="REPLACE",FORM="FORMATTED",IOSTAT=ERR) + IF(ERR/=0) CALL FlagError("Error opening analysis output file.",ERR,ERROR,*999) + ELSE + OUTPUT_ID=GENERAL_OUTPUT_TYPE + ENDIF CALL WRITE_STRING(OUTPUT_ID,"Analytic error analysis:",ERR,ERROR,*999) CALL WRITE_STRING(OUTPUT_ID,"",ERR,ERROR,*999) LOCAL_STRING="Field "//TRIM(NUMBER_TO_VSTRING(FIELD%USER_NUMBER,"*",ERR,ERROR))//" : "//FIELD%LABEL @@ -271,7 +278,7 @@ SUBROUTINE AnalyticAnalysis_Output(FIELD,FILENAME,ERR,ERROR,*) !Output RMS errors CALL WRITE_STRING(OUTPUT_ID,"",ERR,ERROR,*999) IF(NUMBER(1)>0) THEN - IF(computationalEnvironment%numberOfComputationalNodes>1) THEN + IF(numberOfGroupComputationNodes>1) THEN !Local elements only CALL WRITE_STRING(OUTPUT_ID,"Local RMS errors:",ERR,ERROR,*999) LOCAL_STRING= & @@ -294,17 +301,16 @@ SUBROUTINE AnalyticAnalysis_Output(FIELD,FILENAME,ERR,ERROR,*) & ERR,ERROR,*999) !Global RMS values !Collect the values across the ranks - CALL MPI_ALLREDUCE(MPI_IN_PLACE,NUMBER,1,MPI_INTEGER,MPI_SUM, & - & computationalEnvironment%mpiCommunicator,MPI_IERROR) + CALL MPI_ALLREDUCE(MPI_IN_PLACE,NUMBER,1,MPI_INTEGER,MPI_SUM,groupCommunicator,MPI_IERROR) CALL MPI_ERROR_CHECK("MPI_ALLREDUCE",MPI_IERROR,ERR,ERROR,*999) CALL MPI_ALLREDUCE(MPI_IN_PLACE,RMS_ERROR_PER,1,MPI_DOUBLE_PRECISION,MPI_SUM, & - & computationalEnvironment%mpiCommunicator,MPI_IERROR) + & groupCommunicator,MPI_IERROR) CALL MPI_ERROR_CHECK("MPI_ALLREDUCE",MPI_IERROR,ERR,ERROR,*999) CALL MPI_ALLREDUCE(MPI_IN_PLACE,RMS_ERROR_ABS,1,MPI_DOUBLE_PRECISION,MPI_SUM, & - & computationalEnvironment%mpiCommunicator,MPI_IERROR) + & groupCommunicator,MPI_IERROR) CALL MPI_ERROR_CHECK("MPI_ALLREDUCE",MPI_IERROR,ERR,ERROR,*999) CALL MPI_ALLREDUCE(MPI_IN_PLACE,RMS_ERROR_REL,1,MPI_DOUBLE_PRECISION,MPI_SUM, & - & computationalEnvironment%mpiCommunicator,MPI_IERROR) + & groupCommunicator,MPI_IERROR) CALL MPI_ERROR_CHECK("MPI_ALLREDUCE",MPI_IERROR,ERR,ERROR,*999) CALL WRITE_STRING(OUTPUT_ID,"Global RMS errors:",ERR,ERROR,*999) LOCAL_STRING= & @@ -401,7 +407,7 @@ SUBROUTINE AnalyticAnalysis_Output(FIELD,FILENAME,ERR,ERROR,*) ENDDO !node_idx !Output RMS errors CALL WRITE_STRING(OUTPUT_ID,"",ERR,ERROR,*999) - IF(computationalEnvironment%numberOfComputationalNodes>1) THEN + IF(numberOfGroupComputationNodes>1) THEN IF(ANY(NUMBER>0)) THEN !Local nodes only CALL WRITE_STRING(OUTPUT_ID,"Local RMS errors:",ERR,ERROR,*999) @@ -438,17 +444,16 @@ SUBROUTINE AnalyticAnalysis_Output(FIELD,FILENAME,ERR,ERROR,*) ENDDO !deriv_idx !Global RMS values !Collect the values across the ranks - CALL MPI_ALLREDUCE(MPI_IN_PLACE,NUMBER,8,MPI_INTEGER,MPI_SUM, & - & computationalEnvironment%mpiCommunicator,MPI_IERROR) + CALL MPI_ALLREDUCE(MPI_IN_PLACE,NUMBER,8,MPI_INTEGER,MPI_SUM,groupCommunicator,MPI_IERROR) CALL MPI_ERROR_CHECK("MPI_ALLREDUCE",MPI_IERROR,ERR,ERROR,*999) CALL MPI_ALLREDUCE(MPI_IN_PLACE,RMS_ERROR_PER,8,MPI_DOUBLE_PRECISION,MPI_SUM, & - & computationalEnvironment%mpiCommunicator,MPI_IERROR) + & groupCommunicator,MPI_IERROR) CALL MPI_ERROR_CHECK("MPI_ALLREDUCE",MPI_IERROR,ERR,ERROR,*999) CALL MPI_ALLREDUCE(MPI_IN_PLACE,RMS_ERROR_ABS,8,MPI_DOUBLE_PRECISION,MPI_SUM, & - & computationalEnvironment%mpiCommunicator,MPI_IERROR) + & groupCommunicator,MPI_IERROR) CALL MPI_ERROR_CHECK("MPI_ALLREDUCE",MPI_IERROR,ERR,ERROR,*999) CALL MPI_ALLREDUCE(MPI_IN_PLACE,RMS_ERROR_REL,8,MPI_DOUBLE_PRECISION,MPI_SUM, & - & computationalEnvironment%mpiCommunicator,MPI_IERROR) + & groupCommunicator,MPI_IERROR) CALL MPI_ERROR_CHECK("MPI_ALLREDUCE",MPI_IERROR,ERR,ERROR,*999) CALL WRITE_STRING(OUTPUT_ID,"Global RMS errors:",ERR,ERROR,*999) LOCAL_STRING= & @@ -518,7 +523,7 @@ SUBROUTINE AnalyticAnalysis_Output(FIELD,FILENAME,ERR,ERROR,*) ALLOCATE(GHOST_INTEGRAL_ERRORS(6,FIELD_VARIABLE%NUMBER_OF_COMPONENTS),STAT=ERR) IF(ERR/=0) CALL FlagError("Could not allocate ghost integral errors.",ERR,ERROR,*999) CALL ANALYTIC_ANALYSIS_INTEGRAL_ERRORS(FIELD_VARIABLE,INTEGRAL_ERRORS,GHOST_INTEGRAL_ERRORS,ERR,ERROR,*999) - IF(computationalEnvironment%numberOfComputationalNodes>1) THEN + IF(numberOfGroupComputationNodes>1) THEN CALL WRITE_STRING(OUTPUT_ID,"Local Integral errors:",ERR,ERROR,*999) LOCAL_STRING="Component# Numerical Analytic % error Absolute err Relative err" CALL WRITE_STRING(OUTPUT_ID,LOCAL_STRING,ERR,ERROR,*999) @@ -591,7 +596,7 @@ SUBROUTINE AnalyticAnalysis_Output(FIELD,FILENAME,ERR,ERROR,*) ENDDO !component_idx !Collect the values across the ranks CALL MPI_ALLREDUCE(MPI_IN_PLACE,INTEGRAL_ERRORS,6*FIELD_VARIABLE%NUMBER_OF_COMPONENTS,MPI_DOUBLE_PRECISION, & - & MPI_SUM,computationalEnvironment%mpiCommunicator,MPI_IERROR) + & MPI_SUM,groupCommunicator,MPI_IERROR) CALL WRITE_STRING(OUTPUT_ID,"Global Integral errors:",ERR,ERROR,*999) LOCAL_STRING="Component# Numerical Analytic % error Absolute err Relative err" CALL WRITE_STRING(OUTPUT_ID,LOCAL_STRING,ERR,ERROR,*999) @@ -1648,15 +1653,25 @@ SUBROUTINE AnalyticAnalysis_RMSErrorGetNode(FIELD,VARIABLE_TYPE,COMPONENT_NUMBER INTEGER(INTG), INTENT(OUT) :: ERR !FIELD%VARIABLE_TYPE_MAP(VARIABLE_TYPE)%PTR%COMPONENTS(COMPONENT_NUMBER)%DOMAIN%TOPOLOGY%NODES IF(ASSOCIATED(NODES_DOMAIN)) THEN NUMBER=0 @@ -1710,7 +1725,7 @@ SUBROUTINE AnalyticAnalysis_RMSErrorGetNode(FIELD,VARIABLE_TYPE,COMPONENT_NUMBER ENDDO !deriv_idx ENDDO !node_idx - IF(computationalEnvironment%numberOfComputationalNodes>1) THEN + IF(numberOfGroupComputationNodes>1) THEN IF(ANY(NUMBER>0)) THEN DO deriv_idx=1,8 IF(NUMBER(deriv_idx)>0) THEN @@ -1720,15 +1735,14 @@ SUBROUTINE AnalyticAnalysis_RMSErrorGetNode(FIELD,VARIABLE_TYPE,COMPONENT_NUMBER DO deriv_idx=1,8 IF(NUMBER(deriv_idx)>0) THEN LOCAL_GHOST_RMS(deriv_idx)=SQRT((RMS_ERROR(deriv_idx)+GHOST_RMS_ERROR(deriv_idx))/(NUMBER(deriv_idx) & - & +GHOST_NUMBER(deriv_idx))) + & +GHOST_NUMBER(deriv_idx))) ENDIF ENDDO !deriv_idx !Global RMS values !Collect the values across the ranks - CALL MPI_ALLREDUCE(MPI_IN_PLACE,NUMBER,8,MPI_INTEGER,MPI_SUM,computationalEnvironment%mpiCommunicator,MPI_IERROR) + CALL MPI_ALLREDUCE(MPI_IN_PLACE,NUMBER,8,MPI_INTEGER,MPI_SUM,groupCommunicator,MPI_IERROR) CALL MPI_ERROR_CHECK("MPI_ALLREDUCE",MPI_IERROR,ERR,ERROR,*999) - CALL MPI_ALLREDUCE(MPI_IN_PLACE,RMS_ERROR,8,MPI_DOUBLE_PRECISION,MPI_SUM,computationalEnvironment%mpiCommunicator, & - & MPI_IERROR) + CALL MPI_ALLREDUCE(MPI_IN_PLACE,RMS_ERROR,8,MPI_DOUBLE_PRECISION,MPI_SUM,groupCommunicator,MPI_IERROR) CALL MPI_ERROR_CHECK("MPI_ALLREDUCE",MPI_IERROR,ERR,ERROR,*999) DO deriv_idx=1,8 IF(NUMBER(deriv_idx)>0) THEN @@ -1757,6 +1771,7 @@ SUBROUTINE AnalyticAnalysis_RMSErrorGetNode(FIELD,VARIABLE_TYPE,COMPONENT_NUMBER RETURN 999 ERRORSEXITS("AnalyticAnalysis_RMSErrorGetNode",ERR,ERROR) RETURN 1 + END SUBROUTINE AnalyticAnalysis_RMSErrorGetNode ! @@ -1778,19 +1793,26 @@ SUBROUTINE AnalyticAnalysis_RMSErrorGetElement(FIELD,VARIABLE_TYPE,COMPONENT_NUM INTEGER(INTG), INTENT(OUT) :: ERR !FIELD%VARIABLE_TYPE_MAP(VARIABLE_TYPE)%PTR%COMPONENTS(COMPONENT_NUMBER)%DOMAIN ELEMENTS_DOMAIN=>DOMAIN%TOPOLOGY%ELEMENTS IF(ASSOCIATED(ELEMENTS_DOMAIN)) THEN @@ -1839,18 +1861,16 @@ SUBROUTINE AnalyticAnalysis_RMSErrorGetElement(FIELD,VARIABLE_TYPE,COMPONENT_NUM GHOST_RMS_ERROR=GHOST_RMS_ERROR+ERROR_VALUE*ERROR_VALUE ENDDO !element_idx IF(NUMBER>0) THEN - IF(computationalEnvironment%numberOfComputationalNodes>1) THEN + IF(numberOfGroupComputationNodes>1) THEN !Local elements only LOCAL_RMS=SQRT(RMS_ERROR/NUMBER) !Local and ghost elements LOCAL_GHOST_RMS=SQRT((RMS_ERROR+GHOST_RMS_ERROR)/(NUMBER+GHOST_NUMBER)) !Global RMS values !Collect the values across the ranks - CALL MPI_ALLREDUCE(MPI_IN_PLACE,NUMBER,1,MPI_INTEGER,MPI_SUM, & - & computationalEnvironment%mpiCommunicator,MPI_IERROR) + CALL MPI_ALLREDUCE(MPI_IN_PLACE,NUMBER,1,MPI_INTEGER,MPI_SUM,groupCommunicator,MPI_IERROR) CALL MPI_ERROR_CHECK("MPI_ALLREDUCE",MPI_IERROR,ERR,ERROR,*999) - CALL MPI_ALLREDUCE(MPI_IN_PLACE,RMS_ERROR,1,MPI_DOUBLE_PRECISION,MPI_SUM, & - & computationalEnvironment%mpiCommunicator,MPI_IERROR) + CALL MPI_ALLREDUCE(MPI_IN_PLACE,RMS_ERROR,1,MPI_DOUBLE_PRECISION,MPI_SUM,groupCommunicator,MPI_IERROR) CALL MPI_ERROR_CHECK("MPI_ALLREDUCE",MPI_IERROR,ERR,ERROR,*999) GLOBAL_RMS=SQRT(RMS_ERROR/NUMBER) ENDIF diff --git a/src/base_routines.f90 b/src/base_routines.f90 index eedb27a6..a1eec5e4 100755 --- a/src/base_routines.f90 +++ b/src/base_routines.f90 @@ -146,9 +146,8 @@ MODULE BaseRoutines !Module variables - INTEGER(INTG), SAVE :: myComputationalNodeNumber !Records the entry into the named procedure and initialises the error code \see BaseRoutines::EXITS + !>Records the entry into the named procedure and initialises the error code \see BaseRoutines::Exits SUBROUTINE Enters(name,err,error,*) !Argument variables @@ -418,7 +413,7 @@ END SUBROUTINE Errors !================================================================================================================================ ! - !>Records the exit out of the named procedure \see BaseRoutines::ENTERS + !>Records the exit out of the named procedure \see BaseRoutines::Enters SUBROUTINE Exits(name) !Argument variables @@ -539,22 +534,22 @@ END SUBROUTINE Exits #include "macros.h" - !>Set the computational node numbers. Note: this is done as a subroutine as ComputationalEnvironment depends on BaseRoutines. - SUBROUTINE ComputationalNodeNumbersSet(myNodeNumber,numberOfNodes,err,error,*) + !>Set the computation node numbers. Note: this is done as a subroutine as ComputationEnvironment depends on BaseRoutines. + SUBROUTINE ComputationNodeNumbersSet(myNodeNumber,numberOfNodes,err,error,*) !Argument variables INTEGER(INTG), INTENT(IN) :: myNodeNumber !0) THEN IF(myNodeNumber>=0.AND.myNodeNumber<=numberOfNodes-1) THEN - myComputationalNodeNumber=myNodeNumber - numberOfComputationalNodes=numberOfNodes + myWorldComputationNodeNumber=myNodeNumber + numberOfWorldComputationNodes=numberOfNodes ELSE CALL FlagError("Invalid node number.",err,error,*999) ENDIF @@ -562,12 +557,12 @@ SUBROUTINE ComputationalNodeNumbersSet(myNodeNumber,numberOfNodes,err,error,*) CALL FlagError("Invalid number of nodes.",err,error,*999) ENDIF - EXITS("ComputationalNodeNumbersSet") + EXITS("ComputationNodeNumbersSet") RETURN -999 ERRORSEXITS("ComputationalNodeNumbersSet",err,error) +999 ERRORSEXITS("ComputationNodeNumbersSet",err,error) RETURN 1 - END SUBROUTINE ComputationalNodeNumbersSet + END SUBROUTINE ComputationNodeNumbersSet ! !================================================================================================================================ @@ -708,8 +703,8 @@ SUBROUTINE FlagWarningC(string,err,error,*) TYPE(VARYING_STRING), INTENT(OUT) :: error !1) THEN - WRITE(outputString,'(">>WARNING (",I0,"): ",A)') myComputationalNodeNumber,string + IF(numberOfWorldComputationNodes>1) THEN + WRITE(outputString,'(">>WARNING (",I0,"): ",A)') myWorldComputationNodeNumber,string ELSE WRITE(outputString,'(">>WARNING: ",A)') string ENDIF @@ -734,8 +729,8 @@ SUBROUTINE FlagWarningVS(string,err,error,*) TYPE(VARYING_STRING), INTENT(OUT) :: error !1) THEN - WRITE(outputString,'(">>WARNING (",I0,"): ",A)') myComputationalNodeNumber,CHAR(string) + IF(numberOfWorldComputationNodes>1) THEN + WRITE(outputString,'(">>WARNING (",I0,"): ",A)') myWorldComputationNodeNumber,CHAR(string) ELSE WRITE(outputString,'(">>WARNING: ",A)') CHAR(string) ENDIF @@ -761,11 +756,10 @@ SUBROUTINE BaseRoutines_Finalise(err,error,*) err=0 error="" - !Deallocate the random seeds - IF(ALLOCATED(cmissRandomSeeds)) DEALLOCATE(cmissRandomSeeds) RETURN 999 RETURN 1 + END SUBROUTINE BaseRoutines_Finalise ! @@ -779,12 +773,12 @@ SUBROUTINE BaseRoutines_Initialise(err,error,*) INTEGER(INTG), INTENT(OUT) :: err !Sets diagnositics off. \see BaseRoutines::DiagnosticsSetOn,OpenCMISS::Iron::DiagnosticsSetOn + !>Sets diagnositics off. \see BaseRoutines::DiagnosticsSetOn,OpenCMISS::Iron::cmfe_DiagnosticsSetOn SUBROUTINE DiagnosticsSetOff(err,error,*) !Argument variables @@ -907,7 +893,7 @@ END SUBROUTINE DiagnosticsSetOff !================================================================================================================================ ! - !>Sets diagnositics on. \see BaseRoutines::DiagnosticsSetOff,OpenCMISS::Iron::DiagnosticsSetOff + !>Sets diagnositics on. \see BaseRoutines::DiagnosticsSetOff,OpenCMISS::Iron::cmfe_DiagnosticsSetOff SUBROUTINE DiagnosticsSetOn(diagType,levelList,diagFilename,routineList,err,error,*) !Argument variables @@ -928,8 +914,8 @@ SUBROUTINE DiagnosticsSetOn(diagType,levelList,diagFilename,routineList,err,erro IF(LEN_TRIM(diagFilename)>=1) THEN IF(diagFileOpen) CLOSE(UNIT=DIAGNOSTICS_FILE_UNIT) - IF(numberOfComputationalNodes>1) THEN - WRITE(filename,'(A,".diag.",I0)') diagFilename(1:LEN_TRIM(diagFilename)),myComputationalNodeNumber + IF(numberOfWorldComputationNodes>1) THEN + WRITE(filename,'(A,".diag.",I0)') diagFilename(1:LEN_TRIM(diagFilename)),myWorldComputationNodeNumber ELSE filename=diagFilename(1:LEN_TRIM(diagFilename))//".diag" ENDIF @@ -1020,7 +1006,7 @@ END SUBROUTINE DiagnosticsSetOn !================================================================================================================================ ! - !>Sets writes file echo output off. \see BaseRoutines::OutputSetOn,OpenCMISS::Iron::OutputSetOff + !>Sets writes file echo output off. \see BaseRoutines::OutputSetOn,OpenCMISS::Iron::cmfe_OutputSetOff SUBROUTINE OutputSetOff(err,error,*) !Argument variables @@ -1048,7 +1034,7 @@ END SUBROUTINE OutputSetOff !================================================================================================================================ ! - !>Sets writes file echo output on. \see BaseRoutines::OutputSetOff,OpenCMISS::Iron::OutputSetOn + !>Sets writes file echo output on. \see BaseRoutines::OutputSetOff,OpenCMISS::Iron::cmfe_OutputSetOn SUBROUTINE OutputSetOn(echoFilename,err,error,*) !Argument variables @@ -1063,8 +1049,8 @@ SUBROUTINE OutputSetOn(echoFilename,err,error,*) IF(echoOutput) THEN CALL FlagError("Write output is already on.",err,error,*999) ELSE - IF(numberOfComputationalNodes>1) THEN - WRITE(filename,'(A,".out.",I0)') echoFilename(1:LEN_TRIM(echoFilename)),myComputationalNodeNumber + IF(numberOfWorldComputationNodes>1) THEN + WRITE(filename,'(A,".out.",I0)') echoFilename(1:LEN_TRIM(echoFilename)),myWorldComputationNodeNumber ELSE filename=echoFilename(1:LEN_TRIM(echoFilename))//".out" ENDIF @@ -1084,90 +1070,7 @@ END SUBROUTINE OutputSetOn !================================================================================================================================ ! - !>Returns the random seeds for CMISS \see OpenCMISS::Iron::RandomSeedsGet - SUBROUTINE RandomSeedsGet(randomSeeds,err,error,*) - - !Argument variables - INTEGER(INTG), INTENT(OUT) :: randomSeeds(:) !=SIZE(cmissRandomSeeds,1)) THEN - randomSeeds(1:SIZE(cmissRandomSeeds,1))=cmissRandomSeeds(1:SIZE(cmissRandomSeeds,1)) - ELSE - WRITE(localError,'("The size of the supplied random seeds array of ",I2," is too small. The size must be >= ",I2,".")') & - & SIZE(randomSeeds,1),SIZE(cmissRandomSeeds,1) - CALL FlagError(localError,err,error,*999) - ENDIF - - EXITS("RandomSeedsGet") - RETURN -999 ERRORSEXITS("RandomSeedsGet",err,error) - RETURN 1 - - END SUBROUTINE RandomSeedsGet - - ! - !================================================================================================================================ - ! - - !>Returns the size of the random seeds array for CMISS \see OpenCMISS::Iron::RandomSeedsSizeGet - SUBROUTINE RandomSeedsSizeGet(randomSeedsSize,err,error,*) - - !Argument variables - INTEGER(INTG), INTENT(OUT) :: randomSeedsSize !Sets the random seeds for cmiss \see OpenCMISS::Iron::RandomSeedsSet - SUBROUTINE RandomSeedsSet(randomSeeds,err,error,*) - - !Argument variables - INTEGER(INTG), INTENT(IN) :: randomSeeds(:) !SIZE(cmissRandomSeeds,1)) THEN - cmissRandomSeeds(1:SIZE(cmissRandomSeeds,1))=randomSeeds(1:SIZE(cmissRandomSeeds,1)) - ELSE - cmissRandomSeeds(1:SIZE(randomSeeds,1))=randomSeeds(1:SIZE(randomSeeds,1)) - ENDIF - - EXITS("RandomSeedsSet") - RETURN -999 ERRORSEXITS("RandomSeedsSet",err,error) - RETURN 1 - - END SUBROUTINE RandomSeedsSet - - ! - !================================================================================================================================ - ! - - !>Sets timing off. \see BaseRoutines:TimingSetOn,OpenCMISS::Iron::TimingSetOff + !>Sets timing off. \see BaseRoutines:TimingSetOn,OpenCMISS::Iron::cmfe_TimingSetOff SUBROUTINE TimingSetOff(err,error,*) !Argument variables @@ -1213,7 +1116,7 @@ END SUBROUTINE TimingSetOff !================================================================================================================================ ! - !>Sets timing on. \see BaseRoutines:TimingSetOff,OpenCMISS::Iron::TimingSetOn + !>Sets timing on. \see BaseRoutines:TimingSetOff,OpenCMISS::Iron::cmfe_TimingSetOn SUBROUTINE TimingSetOn(timingType,timingSummaryFlag,timingFilename,routineList,err,error,*) !Argument variables @@ -1233,8 +1136,8 @@ SUBROUTINE TimingSetOn(timingType,timingSummaryFlag,timingFilename,routineList,e NULLIFY(routine) IF(LEN_TRIM(timingFilename)>=1) THEN IF(timingFileOpen) CLOSE(UNIT=TIMING_FILE_UNIT) - IF(numberOfComputationalNodes>1) THEN - WRITE(filename,'(A,".timing.",I0)') timingFilename(1:LEN_TRIM(timingFilename)),myComputationalNodeNumber + IF(numberOfWorldComputationNodes>1) THEN + WRITE(filename,'(A,".timing.",I0)') timingFilename(1:LEN_TRIM(timingFilename)),myWorldComputationNodeNumber ELSE filename=timingFilename(1:LEN_TRIM(timingFilename))//".timing" ENDIF @@ -1314,7 +1217,7 @@ END SUBROUTINE TimingSetOn !================================================================================================================================ ! - !>Outputs the timing summary. \see OpenCMISS::Iron::TimingSummaryOutput + !>Outputs the timing summary. \see OpenCMISS::Iron::cmfe_TimingSummaryOutput SUBROUTINE TimingSummaryOutput(err,error,*) !Argument variables @@ -1389,8 +1292,8 @@ SUBROUTINE WriteError(err,error,*) TYPE(VARYING_STRING) :: localError,localError2 indent=2 - IF(numberOfComputationalNodes>1) THEN - WRITE(startString,'(A,A,I0,A,X,I0,A)') indentString(1:indent),"ERROR (",myComputationalNodeNumber,"):", & + IF(numberOfWorldComputationNodes>1) THEN + WRITE(startString,'(A,A,I0,A,X,I0,A)') indentString(1:indent),"ERROR (",myWorldComputationNodeNumber,"):", & & ERR,":" startStringLength=LEN_TRIM(startString) ELSE diff --git a/src/basis_access_routines.f90 b/src/basis_access_routines.f90 index 337b0020..484789bd 100644 --- a/src/basis_access_routines.f90 +++ b/src/basis_access_routines.f90 @@ -46,6 +46,7 @@ MODULE BasisAccessRoutines USE BaseRoutines USE Kinds + USE ISO_VARYING_STRING USE Strings USE Types @@ -73,8 +74,6 @@ MODULE BasisAccessRoutines !Module variables - TYPE(BASIS_FUNCTIONS_TYPE) :: basisFunctions !Returns the basis functionsfor the basis. + SUBROUTINE Basis_BasisFunctionsGet(basis,basisFunctions,err,error,*) + + !Argument variables + TYPE(BASIS_TYPE), POINTER :: basis !basis%basisFunctions + IF(.NOT.ASSOCIATED(basisFunctions)) THEN + localError="Basis functions is not associated for basis number "// & + & TRIM(NumberToVString(basis%USER_NUMBER,"*",err,error))//"." + CALL FlagError(localError,err,error,*999) + ENDIF + + EXITS("Basis_BasisFunctionsGet") + RETURN +999 NULLIFY(basisFunctions) +998 ERRORSEXITS("Basis_BasisFunctionsGet",err,error) + RETURN 1 + + END SUBROUTINE Basis_BasisFunctionsGet + + ! + !================================================================================================================================ + ! + + !>Returns a pointer to the context for a basis. + SUBROUTINE Basis_ContextGet(basis,context,err,error,*) + + !Argument variables + TYPE(BASIS_TYPE), POINTER :: basis !basis%basisFunctions%context + IF(.NOT.ASSOCIATED(context)) THEN + localError="The context is not associated for the basis functions for basis number "// & + & TRIM(NumberToVString(basis%USER_NUMBER,"*",err,error))//"." + CALL FlagError(localError,err,error,*999) + ENDIF + + EXITS("Basis_ContextGet") + RETURN +999 NULLIFY(context) +998 ERRORSEXITS("Basis_ContextGet",err,error) + RETURN 1 + + END SUBROUTINE Basis_ContextGet + + ! + !================================================================================================================================ + ! + !>Finds and returns a pointer to the basis with the given user number and family number. If no basis with that !>number and family number exists then basis is returned nullified \see BasisAccessRoutines::Basis_UserNumberFind - RECURSIVE SUBROUTINE Basis_FamilyNumberFind(userNumber,familyNumber,basis,err,error,*) + RECURSIVE SUBROUTINE Basis_FamilyNumberFind(basisFunctions,userNumber,familyNumber,basis,err,error,*) !Argument variables + TYPE(BasisFunctionsType), POINTER :: basisFunctions !Finds and returns a pointer to the basis with the given user number. - SUBROUTINE Basis_Get(userNumber,basis,err,error,*) + SUBROUTINE Basis_Get(basisFunctions,userNumber,basis,err,error,*) !Argument variables + TYPE(BasisFunctionsType), POINTER :: basisFunctions !Finds and returns a pointer to a basis with the given user number. If no basis with that number exists basis is left nullified. - SUBROUTINE Basis_UserNumberFind(userNumber,basis,err,error,*) + SUBROUTINE Basis_UserNumberFind(basisFunctions,userNumber,basis,err,error,*) !Argument variables + TYPE(BasisFunctionsType), POINTER :: basisFunctions !@} !!Module types - ! - !!>Contains information on the defined basis functions - !TYPE BASIS_FUNCTIONS_TYPE - ! PRIVATE - ! INTEGER(INTG) :: numberOfBasisFunctions !Sets/changes the collapsed Xi flags for a basis. INTERFACE BASIS_COLLAPSED_XI_SET - MODULE PROCEDURE BASIS_COLLAPSED_XI_SET_NUMBER - MODULE PROCEDURE BASIS_COLLAPSED_XI_SET_PTR + MODULE PROCEDURE Basis_CollapsedXiSet END INTERFACE BASIS_COLLAPSED_XI_SET - !>Sets/changes the collapsed Xi flags for a basis. - INTERFACE Basis_CollapsedXiSet - MODULE PROCEDURE BASIS_COLLAPSED_XI_SET_NUMBER - MODULE PROCEDURE BASIS_COLLAPSED_XI_SET_PTR - END INTERFACE Basis_CollapsedXiSet - INTERFACE BASIS_CREATE_START MODULE PROCEDURE Basis_CreateStart END INTERFACE BASIS_CREATE_START @@ -235,16 +221,9 @@ MODULE BasisRoutines !>Sets/changes the interpolation type in each Xi direction for a basis INTERFACE BASIS_INTERPOLATION_XI_SET - MODULE PROCEDURE BASIS_INTERPOLATION_XI_SET_NUMBER - MODULE PROCEDURE BASIS_INTERPOLATION_XI_SET_PTR + MODULE PROCEDURE Basis_InterpolationXiSet END INTERFACE BASIS_INTERPOLATION_XI_SET - !>Sets/changes the interpolation type in each Xi direction for a basis - INTERFACE Basis_InterpolationXiSet - MODULE PROCEDURE BASIS_INTERPOLATION_XI_SET_NUMBER - MODULE PROCEDURE BASIS_INTERPOLATION_XI_SET_PTR - END INTERFACE Basis_InterpolationXiSet - INTERFACE Basis_NumberOfLocalNodesGet MODULE PROCEDURE BASIS_NUMBER_OF_LOCAL_NODES_GET END INTERFACE Basis_NumberOfLocalNodesGet @@ -279,16 +258,9 @@ MODULE BasisRoutines !>Sets/changes the order of a quadrature for a basis quadrature. INTERFACE BASIS_QUADRATURE_ORDER_SET - MODULE PROCEDURE BASIS_QUADRATURE_ORDER_SET_NUMBER - MODULE PROCEDURE BASIS_QUADRATURE_ORDER_SET_PTR + MODULE PROCEDURE Basis_QuadratureOrderSet END INTERFACE BASIS_QUADRATURE_ORDER_SET - !>Sets/changes the order of a quadrature for a basis quadrature. - INTERFACE Basis_QuadratureOrderSet - MODULE PROCEDURE BASIS_QUADRATURE_ORDER_SET_NUMBER - MODULE PROCEDURE BASIS_QUADRATURE_ORDER_SET_PTR - END INTERFACE Basis_QuadratureOrderSet - INTERFACE Basis_QuadratureSingleGaussXiGet MODULE PROCEDURE BASIS_QUADRATURE_SINGLE_GAUSS_XI_GET END INTERFACE Basis_QuadratureSingleGaussXiGet @@ -299,32 +271,18 @@ MODULE BasisRoutines !>Sets/changes the quadrature type for a basis INTERFACE BASIS_QUADRATURE_TYPE_SET - MODULE PROCEDURE BASIS_QUADRATURE_TYPE_SET_NUMBER - MODULE PROCEDURE BASIS_QUADRATURE_TYPE_SET_PTR + MODULE PROCEDURE Basis_QuadratureTypeSet END INTERFACE BASIS_QUADRATURE_TYPE_SET - !>Sets/changes the quadrature type for a basis - INTERFACE Basis_QuadratureTypeSet - MODULE PROCEDURE BASIS_QUADRATURE_TYPE_SET_NUMBER - MODULE PROCEDURE BASIS_QUADRATURE_TYPE_SET_PTR - END INTERFACE Basis_QuadratureTypeSet - INTERFACE Basis_TypeGet MODULE PROCEDURE BASIS_TYPE_GET END INTERFACE Basis_TypeGet !>Sets/changes the type for a basis. INTERFACE BASIS_TYPE_SET - MODULE PROCEDURE BASIS_TYPE_SET_NUMBER - MODULE PROCEDURE BASIS_TYPE_SET_PTR + MODULE PROCEDURE Basis_TypeSet END INTERFACE BASIS_TYPE_SET - !>Sets/changes the type for a basis. - INTERFACE Basis_TypeSet - MODULE PROCEDURE BASIS_TYPE_SET_NUMBER - MODULE PROCEDURE BASIS_TYPE_SET_PTR - END INTERFACE Basis_TypeSet - !>Evaluates a linear Simplex basis function INTERFACE SIMPLEX_LINEAR_EVALUATE MODULE PROCEDURE SIMPLEX_LINEAR_EVALUATE_DP @@ -422,8 +380,6 @@ MODULE BasisRoutines PUBLIC Basis_Destroy - PUBLIC Bases_Finalise,Bases_Initialise - PUBLIC BASIS_COLLAPSED_XI_GET PUBLIC Basis_CollapsedXiGet @@ -459,59 +415,9 @@ MODULE BasisRoutines PUBLIC Basis_XiToAreaCoordinates -CONTAINS - - ! - !================================================================================================================================ - ! + PUBLIC BasisFunctions_Finalise,BasisFunctions_Initialise - !>Finalises the bases and deallocates all memory - SUBROUTINE Bases_Finalise(err,error,*) - - !Argument variables - INTEGER(INTG), INTENT(OUT) :: err !0) - CALL BASIS_DESTROY(basisFunctions%bases(1)%ptr,err,error,*999) - ENDDO !nb - !Destroy basis functions and deallocated any memory allocated - basisFunctions%numberOfBasisFunctions=0 - IF(ALLOCATED(basisFunctions%bases)) DEALLOCATE(basisFunctions%bases) - - EXITS("Bases_Finalise") - RETURN -999 ERRORSEXITS("Bases_Finalise",err,error) - RETURN 1 - - END SUBROUTINE Bases_Finalise - - ! - !================================================================================================================================ - ! - - !>Initialises the bases. - SUBROUTINE Bases_Initialise(err,error,*) - - !Argument variables - INTEGER(INTG), INTENT(OUT) :: err ! - TYPE: 1 (BASIS_LAGRANGE_HERMITE_TP_TYPE) !> - NUMBER_OF_GAUSS_XI: (2,2,2) !> - GAUSS_ORDER: 0 - SUBROUTINE Basis_CreateStart(userNumber,basis,err,error,*) + SUBROUTINE Basis_CreateStart(userNumber,basisFunctions,basis,err,error,*) !Argument variables INTEGER(INTG), INTENT(IN) :: userNumber !basisFunctions DO basisIdx=1,basisFunctions%numberOfBasisFunctions newBases(basisIdx)%ptr=>basisFunctions%bases(basisIdx)%ptr ENDDO !basisIdx @@ -860,7 +769,7 @@ SUBROUTINE Basis_CreateStart(userNumber,basis,err,error,*) EXITS("Basis_CreateStart") RETURN -999 IF(ASSOCIATED(newBasis)) CALL BASIS_DESTROY(newBasis,err,error,*998) +999 IF(ASSOCIATED(newBasis)) CALL Basis_Destroy(newBasis,err,error,*998) 998 IF(ALLOCATED(newBases)) DEALLOCATE(newBases) ERRORSEXITS("Basis_CreateStart",err,error) RETURN 1 @@ -872,17 +781,18 @@ END SUBROUTINE Basis_CreateStart ! !>Destroys a basis identified by its basis user number \see BASIS_ROUTINES::BASIS_DESTROY_FAMILY,OpenCMISS::Iron::cmfe_BasisDestroy - RECURSIVE SUBROUTINE BASIS_DESTROY_NUMBER(USER_NUMBER,err,error,*) + RECURSIVE SUBROUTINE BASIS_DESTROY_NUMBER(basisFunctions,userNumber,err,error,*) !Argument variables - INTEGER(INTG), INTENT(IN) :: USER_NUMBER !Destroys a basis. \see BASIS_ROUTINES::BASIS_DESTROY_FAMILY,OpenCMISS::Iron::cmfe_BasisDestroy - RECURSIVE SUBROUTINE BASIS_DESTROY(BASIS,err,error,*) + RECURSIVE SUBROUTINE Basis_Destroy(basis,err,error,*) !Argument variables - TYPE(BASIS_TYPE), POINTER :: BASIS !Destroys a basis identified by its basis user number and family number. Called from the library visible routine BASIS_DESTROY - !> \see BASIS_ROUTINES::BASIS_DESTROY - RECURSIVE SUBROUTINE Basis_FamilyDestroy(userNumber,familyNumber,err,error,*) + !>Destroys a basis identified by its basis user number and family number. Called from the library visible routine Basis_Destroy + !> \see BASIS_ROUTINES::Basis_Destroy + RECURSIVE SUBROUTINE Basis_FamilyDestroy(basisFunctions,userNumber,familyNumber,err,error,*) !Argument variables + TYPE(BasisFunctionsType), POINTER :: basisFunctions !0) - CALL Basis_FamilyDestroy(basis%subBases(1)%ptr%USER_NUMBER,basis%subBases(1)%ptr%FAMILY_NUMBER,err,error,*999) + CALL Basis_FamilyDestroy(basisFunctions,basis%subBases(1)%ptr%USER_NUMBER, & + & basis%subBases(1)%ptr%FAMILY_NUMBER,err,error,*999) ENDDO !Now delete this instance - CALL Basis_FamilyDestroy(userNumber,familyNumber,err,error,*999) + CALL Basis_FamilyDestroy(basisFunctions,userNumber,familyNumber,err,error,*999) ENDIF EXITS("Basis_FamilyDestroy") @@ -2041,6 +1953,7 @@ SUBROUTINE Basis_Initialise(basis,err,error,*) basis%USER_NUMBER=0 basis%GLOBAL_NUMBER=0 basis%FAMILY_NUMBER=0 + NULLIFY(basis%basisFunctions) basis%BASIS_FINISHED=.FALSE. basis%hermite=.FALSE. basis%type=0 @@ -2080,8 +1993,8 @@ FUNCTION BASIS_INTERPOLATE_GAUSS_DP(BASIS,PARTIAL_DERIV_INDEX,QUADRATURE_SCHEME, INTEGER(INTG), INTENT(IN) :: QUADRATURE_SCHEME !Sets/changes the interpolation type in each xi directions where the basis is identified by user number. \see OpenCMISS::Iron::cmfe_BasisInterpolationXiSet - SUBROUTINE BASIS_INTERPOLATION_XI_SET_NUMBER(USER_NUMBER,INTERPOLATION_XI,err,error,*) - - !Argument variables - INTEGER(INTG), INTENT(IN) :: USER_NUMBER !Sets/changes the interpolation type in each xi directions for a basis identified by a pointer. \see OpenCMISS::Iron::cmfe_BasisInterpolationXiSet - SUBROUTINE BASIS_INTERPOLATION_XI_SET_PTR(BASIS,INTERPOLATION_XI,err,error,*) + SUBROUTINE Basis_InterpolationXiSet(BASIS,INTERPOLATION_XI,err,error,*) !Argument variables TYPE(BASIS_TYPE), POINTER :: BASIS !Sets/changes the order of a quadrature for a basis quadrature identified by a user number. - SUBROUTINE BASIS_QUADRATURE_ORDER_SET_NUMBER(USER_NUMBER,ORDER,err,error,*) - - !Argument variables - INTEGER(INTG), INTENT(IN) :: USER_NUMBER !Sets/changes the order of a quadrature for a basis quadrature identified by a pointer. \see OpenCMISS::Iron::cmfe_BasisQuadratureOrderSet - SUBROUTINE BASIS_QUADRATURE_ORDER_SET_PTR(BASIS,ORDER,err,error,*) + SUBROUTINE Basis_QuadratureOrderSet(BASIS,ORDER,err,error,*) !Argument variables TYPE(BASIS_TYPE), POINTER :: BASIS !Sets/changes the quadrature type for a basis quadrature identified by a user number. - SUBROUTINE BASIS_QUADRATURE_TYPE_SET_NUMBER(USER_NUMBER,TYPE,err,error,*) - - !Argument variables - INTEGER(INTG), INTENT(IN) :: USER_NUMBER !Sets/changes the quadrature type on a basis identified by a pointer. - SUBROUTINE BASIS_QUADRATURE_TYPE_SET_PTR(BASIS,TYPE,err,error,*) + SUBROUTINE Basis_QuadratureTypeSet(BASIS,TYPE,err,error,*) !Argument variables TYPE(BASIS_TYPE), POINTER :: BASIS !parentBasis%basisFunctions newSubBasis%parentBasis=>parentBasis newSubBasis%NUMBER_OF_XI=numberOfXi newSubBasis%TYPE=parentBasis%TYPE @@ -6423,8 +6262,8 @@ SUBROUTINE BASIS_TYPE_GET(BASIS,TYPE,err,error,*) !Argument variables TYPE(BASIS_TYPE), POINTER :: BASIS !Sets/changes the type for a basis is identified by a user number. - SUBROUTINE BASIS_TYPE_SET_NUMBER(USER_NUMBER,TYPE,err,error,*) - - !Argument variables - INTEGER(INTG), INTENT(IN) :: USER_NUMBER !Sets/changes the type for a basis is identified by a a pointer. \see OpenCMISS::Iron::cmfe_BasisTypeGet - SUBROUTINE BASIS_TYPE_SET_PTR(BASIS,TYPE,err,error,*) + SUBROUTINE Basis_TypeSet(BASIS,TYPE,err,error,*) !Argument variables TYPE(BASIS_TYPE), POINTER :: BASIS !Sets/changes the collapsed xi flags for a basis is identified by a user number. - SUBROUTINE BASIS_COLLAPSED_XI_SET_NUMBER(USER_NUMBER,COLLAPSED_XI,err,error,*) - - !Argument variables - INTEGER(INTG), INTENT(IN) :: USER_NUMBER !Sets/changes the collapsed xi flags for a basis is identified by a a pointer. \see OpenCMISS::Iron::cmfe_BasisCollapsedXiSet - SUBROUTINE BASIS_COLLAPSED_XI_SET_PTR(BASIS,COLLAPSED_XI,err,error,*) + SUBROUTINE Basis_CollapsedXiSet(BASIS,COLLAPSED_XI,err,error,*) !Argument variables TYPE(BASIS_TYPE), POINTER :: BASIS !Finalises the basis functions for a context and deallocates all memory + SUBROUTINE BasisFunctions_Finalise(basisFunctions,err,error,*) + + !Argument variables + TYPE(BasisFunctionsType), POINTER :: basisFunctions !0) + CALL Basis_Destroy(basisFunctions%bases(1)%ptr,err,error,*999) + ENDDO !nb + !Destroy basis functions and deallocated any memory allocated + IF(ALLOCATED(basisFunctions%bases)) DEALLOCATE(basisFunctions%bases) + DEALLOCATE(basisFunctions) + ENDIF + + EXITS("BasisFunctions_Finalise") + RETURN +999 ERRORSEXITS("BasisFunctions_Finalise",err,error) + RETURN 1 + + END SUBROUTINE BasisFunctions_Finalise + + ! + !================================================================================================================================ + ! + + !>Initialises the basis functions for a context. + SUBROUTINE BasisFunctions_Initialise(context,err,error,*) + + !Argument variables + TYPE(ContextType), POINTER :: context !context + context%basisFunctions%numberOfBasisFunctions=0 + + EXITS("BasisFunctions_Initialise") + RETURN +999 CALL BasisFunctions_Finalise(context%basisFunctions,dummyErr,dummyError,*998) +998 ERRORSEXITS("BasisFunctions_Initialise",err,error) + RETURN 1 + + END SUBROUTINE BasisFunctions_Initialise + + ! + !================================================================================================================================ + ! + END MODULE BasisRoutines diff --git a/src/boundary_condition_access_routines.f90 b/src/boundary_condition_access_routines.f90 index d47ecb3b..e4ab3efd 100644 --- a/src/boundary_condition_access_routines.f90 +++ b/src/boundary_condition_access_routines.f90 @@ -45,6 +45,7 @@ MODULE BoundaryConditionAccessRoutines USE BaseRoutines + USE ISO_VARYING_STRING USE Kinds USE Strings USE Types @@ -63,6 +64,8 @@ MODULE BoundaryConditionAccessRoutines !Interfaces + PUBLIC BoundaryConditions_SolverEquationsGet + CONTAINS @@ -70,4 +73,35 @@ MODULE BoundaryConditionAccessRoutines !================================================================================================================================ ! + !>Gets the solver equations for boundary conditions. + SUBROUTINE BoundaryConditions_SolverEquationsGet(boundaryConditions,solverEquations,err,error,*) + + !Argument variables + TYPE(BOUNDARY_CONDITIONS_TYPE), POINTER :: boundaryConditions !boundaryConditions%SOLVER_EQUATIONS + IF(.NOT.ASSOCIATED(solverEquations)) & + & CALL FlagError("Solver equations is not associated for the boundary conditions.",err,error,*999) + + EXITS("BoundaryConditions_SolverEquationsGet") + RETURN +999 NULLIFY(solverEquations) +998 ERRORSEXITS("BoundaryConditions_SolverEquationsGet",err,error) + RETURN 1 + + END SUBROUTINE BoundaryConditions_SolverEquationsGet + + ! + !================================================================================================================================ + ! + END MODULE BoundaryConditionAccessRoutines diff --git a/src/boundary_condition_routines.f90 b/src/boundary_condition_routines.f90 index 2a9e9368..c4dcde39 100755 --- a/src/boundary_condition_routines.f90 +++ b/src/boundary_condition_routines.f90 @@ -26,7 +26,7 @@ !> Auckland, the University of Oxford and King's College, London. !> All Rights Reserved. !> -!> Contributor(s): Chris Bradley +!> Contributor(s): Ting Yu, Chris Bradley !> !> Alternatively, the contents of this file may be used under the terms of !> either the GNU General Public License Version 2 or later (the "GPL"), or @@ -47,8 +47,10 @@ MODULE BOUNDARY_CONDITIONS_ROUTINES USE BaseRoutines USE BasisRoutines USE BasisAccessRoutines + USE BoundaryConditionAccessRoutines USE CmissMPI - USE ComputationEnvironment + USE ComputationRoutines + USE ComputationAccessRoutines USE CONSTANTS USE COORDINATE_ROUTINES USE DistributedMatrixVector @@ -62,10 +64,12 @@ MODULE BOUNDARY_CONDITIONS_ROUTINES USE INPUT_OUTPUT USE ISO_VARYING_STRING USE Kinds + USE MeshAccessRoutines #ifndef NOMPIMOD USE MPI #endif - USE NODE_ROUTINES + USE NodeRoutines + USE SolverAccessRoutines USE Strings USE Timer USE Types @@ -283,7 +287,7 @@ SUBROUTINE BOUNDARY_CONDITIONS_CREATE_FINISH(BOUNDARY_CONDITIONS,ERR,ERROR,*) INTEGER(INTG) :: MPI_IERROR,SEND_COUNT,STORAGE_TYPE, NUMBER_OF_NON_ZEROS, NUMBER_OF_ROWS,COUNT INTEGER(INTG) :: variable_idx,dof_idx, equ_matrix_idx, dirichlet_idx, row_idx, DUMMY, LAST, DIRICHLET_DOF INTEGER(INTG) :: col_idx,equations_set_idx,parameterSetIdx - INTEGER(INTG) :: pressureIdx,neumannIdx + INTEGER(INTG) :: pressureIdx,neumannIdx,numberOfGroupComputationNodes,myGroupComputationNodeNumber,groupCommunicator INTEGER(INTG), POINTER :: ROW_INDICES(:), COLUMN_INDICES(:) TYPE(BOUNDARY_CONDITIONS_VARIABLE_TYPE), POINTER :: BOUNDARY_CONDITION_VARIABLE TYPE(DOMAIN_MAPPING_TYPE), POINTER :: VARIABLE_DOMAIN_MAPPING @@ -292,6 +296,7 @@ SUBROUTINE BOUNDARY_CONDITIONS_CREATE_FINISH(BOUNDARY_CONDITIONS,ERR,ERROR,*) TYPE(BOUNDARY_CONDITIONS_PRESSURE_INCREMENTED_TYPE), POINTER :: BOUNDARY_CONDITIONS_PRESSURE_INCREMENTED TYPE(VARYING_STRING) :: LOCAL_ERROR TYPE(SOLVER_EQUATIONS_TYPE), POINTER :: SOLVER_EQUATIONS + TYPE(SOLVER_TYPE), POINTER :: solver TYPE(EQUATIONS_SET_TYPE), POINTER :: EQUATIONS_SET TYPE(EquationsType), POINTER :: equations TYPE(EquationsMatricesVectorType), POINTER :: vectorMatrices @@ -303,6 +308,7 @@ SUBROUTINE BOUNDARY_CONDITIONS_CREATE_FINISH(BOUNDARY_CONDITIONS,ERR,ERROR,*) TYPE(LIST_TYPE), POINTER :: SPARSE_INDICES TYPE(LinkedList),POINTER :: LIST(:) INTEGER(INTG), ALLOCATABLE:: COLUMN_ARRAY(:) + TYPE(WorkGroupType), POINTER :: workGroup ENTERS("BOUNDARY_CONDITIONS_CREATE_FINISH",ERR,ERROR,*999) @@ -312,9 +318,18 @@ SUBROUTINE BOUNDARY_CONDITIONS_CREATE_FINISH(BOUNDARY_CONDITIONS,ERR,ERROR,*) IF(BOUNDARY_CONDITIONS%BOUNDARY_CONDITIONS_FINISHED) THEN CALL FlagError("Boundary conditions have already been finished.",ERR,ERROR,*999) ELSE + NULLIFY(SOLVER_EQUATIONS) + CALL BoundaryConditions_SolverEquationsGet(BOUNDARY_CONDITIONS,SOLVER_EQUATIONS,err,error,*999) + NULLIFY(solver) + CALL SolverEquations_SolverGet(SOLVER_EQUATIONS,solver,err,error,*999) IF(ALLOCATED(BOUNDARY_CONDITIONS%BOUNDARY_CONDITIONS_VARIABLES)) THEN - IF(computationalEnvironment%numberOfComputationalNodes>0) THEN - !Transfer all the boundary conditions to all the computational nodes. + NULLIFY(workGroup) + CALL Solver_WorkGroupGet(solver,workGroup,err,error,*999) + CALL WorkGroup_GroupCommunicatorGet(workGroup,groupCommunicator,err,error,*999) + CALL WorkGroup_NumberOfGroupNodesGet(workGroup,numberOfGroupComputationNodes,err,error,*999) + CALL WorkGroup_GroupNodeNumberGet(workGroup,myGroupComputationNodeNumber,err,error,*999) + IF(numberOfGroupComputationNodes>0) THEN + !Transfer all the boundary conditions to all the computation nodes. !\todo Look at this. DO variable_idx=1,BOUNDARY_CONDITIONS%NUMBER_OF_BOUNDARY_CONDITIONS_VARIABLES BOUNDARY_CONDITION_VARIABLE=>BOUNDARY_CONDITIONS%BOUNDARY_CONDITIONS_VARIABLES(variable_idx)%PTR @@ -324,41 +339,41 @@ SUBROUTINE BOUNDARY_CONDITIONS_CREATE_FINISH(BOUNDARY_CONDITIONS,ERR,ERROR,*) VARIABLE_DOMAIN_MAPPING=>FIELD_VARIABLE%DOMAIN_MAPPING IF(ASSOCIATED(VARIABLE_DOMAIN_MAPPING)) THEN SEND_COUNT=VARIABLE_DOMAIN_MAPPING%NUMBER_OF_GLOBAL - IF(computationalEnvironment%numberOfComputationalNodes>1) THEN + IF(numberOfGroupComputationNodes>1) THEN !\todo This operation is a little expensive as we are doing an unnecessary sum across all the ranks in order to combin !\todo the data from each rank into all ranks. We will see how this goes for now. CALL MPI_ALLREDUCE(MPI_IN_PLACE,BOUNDARY_CONDITION_VARIABLE%DOF_TYPES, & - & SEND_COUNT,MPI_INTEGER,MPI_SUM,computationalEnvironment%mpiCommunicator,MPI_IERROR) + & SEND_COUNT,MPI_INTEGER,MPI_SUM,groupCommunicator,MPI_IERROR) CALL MPI_ERROR_CHECK("MPI_ALLREDUCE",MPI_IERROR,ERR,ERROR,*999) CALL MPI_ALLREDUCE(MPI_IN_PLACE,BOUNDARY_CONDITION_VARIABLE%CONDITION_TYPES, & - & SEND_COUNT,MPI_INTEGER,MPI_SUM,computationalEnvironment%mpiCommunicator,MPI_IERROR) + & SEND_COUNT,MPI_INTEGER,MPI_SUM,groupCommunicator,MPI_IERROR) CALL MPI_ERROR_CHECK("MPI_ALLREDUCE",MPI_IERROR,ERR,ERROR,*999) ENDIF !mpi_in_place bug workaround - only do this when num comp nodes > 1 - ELSE + ELSE LOCAL_ERROR="Field variable domain mapping is not associated for variable type "// & & TRIM(NUMBER_TO_VSTRING(variable_idx,"*",ERR,ERROR))//"." CALL FlagError(LOCAL_ERROR,ERR,ERROR,*999) ENDIF - IF(computationalEnvironment%numberOfComputationalNodes>1) THEN + IF(numberOfGroupComputationNodes>1) THEN ! Update the total number of boundary condition types by summing across all nodes CALL MPI_ALLREDUCE(MPI_IN_PLACE,BOUNDARY_CONDITION_VARIABLE%DOF_COUNTS, & - & MAX_BOUNDARY_CONDITION_NUMBER,MPI_INTEGER,MPI_SUM,computationalEnvironment%mpiCommunicator,MPI_IERROR) + & MAX_BOUNDARY_CONDITION_NUMBER,MPI_INTEGER,MPI_SUM,groupCommunicator,MPI_IERROR) CALL MPI_ERROR_CHECK("MPI_ALLREDUCE",MPI_IERROR,ERR,ERROR,*999) CALL MPI_ALLREDUCE(MPI_IN_PLACE,BOUNDARY_CONDITION_VARIABLE%NUMBER_OF_DIRICHLET_CONDITIONS, & - & 1,MPI_INTEGER,MPI_SUM,computationalEnvironment%mpiCommunicator,MPI_IERROR) + & 1,MPI_INTEGER,MPI_SUM,groupCommunicator,MPI_IERROR) CALL MPI_ERROR_CHECK("MPI_ALLREDUCE",MPI_IERROR,ERR,ERROR,*999) ENDIF !mpi_in_place bug workaround - only do this when num comp nodes > 1 ! Check that the boundary conditions set are appropriate for equations sets CALL BoundaryConditions_CheckEquations(BOUNDARY_CONDITION_VARIABLE,ERR,ERROR,*999) - - IF(computationalEnvironment%numberOfComputationalNodes>1) THEN + + IF(numberOfGroupComputationNodes>1) THEN !Make sure the required parameter sets are created on all computational nodes and begin updating them CALL MPI_ALLREDUCE(MPI_IN_PLACE,BOUNDARY_CONDITION_VARIABLE%parameterSetRequired, & - & FIELD_NUMBER_OF_SET_TYPES,MPI_LOGICAL,MPI_LOR,computationalEnvironment%mpiCommunicator,MPI_IERROR) + & FIELD_NUMBER_OF_SET_TYPES,MPI_LOGICAL,MPI_LOR,groupCommunicator,MPI_IERROR) CALL MPI_ERROR_CHECK("MPI_ALLREDUCE",MPI_IERROR,ERR,ERROR,*999) DO parameterSetIdx=1,FIELD_NUMBER_OF_SET_TYPES IF(BOUNDARY_CONDITION_VARIABLE%parameterSetRequired(parameterSetIdx)) THEN @@ -1432,6 +1447,7 @@ SUBROUTINE BOUNDARY_CONDITIONS_SET_LOCAL_DOF1(BOUNDARY_CONDITIONS,FIELD,VARIABLE !Local Variables ENTERS("BOUNDARY_CONDITIONS_SET_LOCAL_DOF1",ERR,ERROR,*999) + CALL BOUNDARY_CONDITIONS_SET_LOCAL_DOFS(BOUNDARY_CONDITIONS,FIELD,VARIABLE_TYPE,[DOF_INDEX],[CONDITION],[VALUE], & & ERR,ERROR,*999) @@ -2221,12 +2237,13 @@ SUBROUTINE BoundaryConditions_NeumannMatricesInitialise(boundaryConditionsVariab !Local Variables TYPE(BoundaryConditionsNeumannType), POINTER :: boundaryConditionsNeumann TYPE(FIELD_VARIABLE_TYPE), POINTER :: rhsVariable + TYPE(DECOMPOSITION_TYPE), POINTER :: decomposition TYPE(DOMAIN_MAPPING_TYPE), POINTER :: rowMapping, pointDofMapping TYPE(DOMAIN_TOPOLOGY_TYPE), POINTER :: topology TYPE(DOMAIN_LINE_TYPE), POINTER :: line TYPE(DOMAIN_FACE_TYPE), POINTER :: face TYPE(LIST_TYPE), POINTER :: columnIndicesList, rowColumnIndicesList - INTEGER(INTG) :: myComputationalNodeNumber + INTEGER(INTG) :: myGroupComputationNodeNumber INTEGER(INTG) :: numberOfPointDofs, numberNonZeros, numberRowEntries, neumannConditionNumber, localNeumannConditionIdx INTEGER(INTG) :: neumannIdx, globalDof, localDof, localDofNyy, domainIdx, numberOfDomains, domainNumber, componentNumber INTEGER(INTG) :: nodeIdx, derivIdx, nodeNumber, versionNumber, derivativeNumber, columnNodeNumber, lineIdx, faceIdx, columnDof @@ -2234,6 +2251,7 @@ SUBROUTINE BoundaryConditions_NeumannMatricesInitialise(boundaryConditionsVariab REAL(DP) :: pointValue INTEGER(INTG) :: dummyErr TYPE(VARYING_STRING) :: dummyError + TYPE(WorkGroupType), POINTER :: workGroup ENTERS("BoundaryConditions_NeumannMatricesInitialise",err,error,*999) @@ -2253,7 +2271,7 @@ SUBROUTINE BoundaryConditions_NeumannMatricesInitialise(boundaryConditionsVariab ! Create a domain mapping for the Neumann point DOFs, required for the distributed matrix columns ALLOCATE(pointDofMapping,stat=err) IF(err/=0) CALL FlagError("Could not allocate Neumann DOF domain mapping.",err,error,*999) - CALL DOMAIN_MAPPINGS_MAPPING_INITIALISE(pointDofMapping,rowMapping%NUMBER_OF_DOMAINS,err,error,*999) + CALL DomainMappings_MappingInitialise(rowMapping%workGroup,pointDofMapping,err,error,*999) boundaryConditionsNeumann%pointDofMapping=>pointDofMapping ! Calculate global to local mapping for Neumann DOFs pointDofMapping%NUMBER_OF_GLOBAL=numberOfPointDofs @@ -2521,11 +2539,15 @@ SUBROUTINE BoundaryConditions_NeumannMatricesInitialise(boundaryConditionsVariab !Set up vector of Neumann point values CALL DistributedVector_CreateStart(pointDofMapping,boundaryConditionsNeumann%pointValues,err,error,*999) CALL DistributedVector_CreateFinish(boundaryConditionsNeumann%pointValues,err,error,*999) - myComputationalNodeNumber=ComputationalEnvironment_NodeNumberGet(err,error) + NULLIFY(decomposition) + CALL Field_DecompositionGet(rhsVariable%field,decomposition,err,error,*999) + NULLIFY(workGroup) + CALL Decomposition_WorkGroupGet(decomposition,workGroup,err,error,*999) + CALL WorkGroup_GroupNodeNumberGet(workGroup,myGroupComputationNodeNumber,err,error,*999) !Set point values vector from boundary conditions field parameter set DO neumannIdx=1,numberOfPointDofs globalDof=boundaryConditionsNeumann%setDofs(neumannIdx) - IF(rhsVariable%DOMAIN_MAPPING%GLOBAL_TO_LOCAL_MAP(globalDof)%DOMAIN_NUMBER(1)==myComputationalNodeNumber) THEN + IF(rhsVariable%DOMAIN_MAPPING%GLOBAL_TO_LOCAL_MAP(globalDof)%DOMAIN_NUMBER(1)==myGroupComputationNodeNumber) THEN localDof=rhsVariable%DOMAIN_MAPPING%GLOBAL_TO_LOCAL_MAP(globalDof)%LOCAL_NUMBER(1) ! Set point DOF vector value localNeumannConditionIdx=boundaryConditionsNeumann%pointDofMapping%GLOBAL_TO_LOCAL_MAP(neumannIdx)%LOCAL_NUMBER(1) @@ -2647,7 +2669,7 @@ SUBROUTINE BoundaryConditions_NeumannIntegrate(rhsBoundaryConditions,err,error,* TYPE(VARYING_STRING), INTENT(OUT) :: error ! Auckland, the University of Oxford and King's College, London. !> All Rights Reserved. !> -!> Contributor(s): +!> Contributor(s): Chris Bradley !> !> Alternatively, the contents of this file may be used under the terms of !> either the GNU General Public License Version 2 or later (the "GPL"), or @@ -53,19 +53,14 @@ MODULE Cmiss USE ISO_C_BINDING USE BaseRoutines - USE BasisRoutines - USE ComputationEnvironment USE Constants - USE COORDINATE_ROUTINES - USE GENERATED_MESH_ROUTINES + USE ContextRoutines + USE ComputationAccessRoutines USE ISO_VARYING_STRING USE Kinds - USE MACHINE_CONSTANTS #ifndef NOMPIMOD USE MPI #endif - USE PROBLEM_ROUTINES - USE REGION_ROUTINES USE Strings USE Types @@ -89,18 +84,22 @@ MODULE Cmiss !> \addtogroup CMFE_ErrorHandlingModes OpenCMISS::Iron::ErrorHandlingModes !> \brief Error handling mode parameters - !> \see CMISS + !> \see OpenCMISS !>@{ - INTEGER(INTG), PARAMETER :: CMFE_RETURN_ERROR_CODE = 0 !@} !Module types !Module variables - INTEGER(INTG), SAVE :: cmfe_ErrorHandlingMode !Returns the error handling mode for CMISS \see OPENOpenCMISS::Iron::CMISSErrorHandlingModeGet + !>Returns the error handling mode for OpenCMISS \see OpenCMISS::Iron::cmfe_ErrorHandlingModeGet SUBROUTINE cmfe_ErrorHandlingModeGet_(errorHandlingMode,err,error,*) !Argument variables - INTEGER(INTG), INTENT(OUT) :: errorHandlingMode !Sets the error handling mode for cmiss \see OPENOpenCMISS::Iron::CMISSErrorHandlingModeSet + !>Sets the error handling mode for cmiss \see OpenCMISS::Iron::cmfe_ErrorHandlingModeSet SUBROUTINE cmfe_ErrorHandlingModeSet_(errorHandlingMode,err,error,*) !Argument variables - INTEGER(INTG), INTENT(IN) :: errorHandlingMode !Finalises CMISS. \see OPENOpenCMISS::Iron::CMISSFinalise - SUBROUTINE cmfe_Finalise_(err,error,*) + !>Finalises OpenCMISS. \see OpenCMISS::Iron::cmfe_Finalise + SUBROUTINE cmfe_Finalise_(context,err,error,*) !Argument variables + TYPE(ContextType), POINTER :: context !Initialises CMISS. \see OPENOpenCMISS::Iron::CMISSInitialise - SUBROUTINE cmfe_Initialise_(worldRegion,err,error,*) + !>Initialises OpenCMISS. \see OpenCMISS::Iron::cmfe_Initialise + SUBROUTINE cmfe_Initialise_(newContext,err,error,*) !Argument variables - TYPE(REGION_TYPE), POINTER :: worldRegion !MODELS_FIELD%CELLML IF(ASSOCIATED(CELLML)) THEN + NULLIFY(decomposition) + CALL Field_DecompositionGet(MODELS_FIELD%MODELS_FIELD,decomposition,err,error,*999) + NULLIFY(workGroup) + CALL Decomposition_WorkGroupGet(decomposition,workGroup,err,error,*999) + CALL WorkGroup_GroupCommunicatorGet(workGroup,groupCommunicator,err,error,*999) !Models field has not been checked before. NULLIFY(MODELS_VARIABLE) CALL Field_VariableGet(MODELS_FIELD%MODELS_FIELD,FIELD_U_VARIABLE_TYPE,MODELS_VARIABLE,ERR,ERROR,*999) @@ -2587,7 +2597,7 @@ SUBROUTINE CELLML_MODELS_FIELD_CHECK(MODELS_FIELD,ERR,ERROR,*) ENDDO !source_dof_idx onlyOneModelIndex=0 CALL MPI_ALLREDUCE(MODELS_FIELD%ONLY_ONE_MODEL_INDEX,onlyOneModelIndex,1,MPI_INTEGER,MPI_MAX, & - & computationalEnvironment%mpiCommunicator,mpiIerror) + & groupCommunicator,mpiIerror) CALL MPI_ERROR_CHECK("MPI_ALLREDUCE",mpiIerror,ERR,ERROR,*999) IF(onlyOneModelIndex==0) & & CALL FlagError("Models field does not have any models set.",ERR,ERROR,*999) diff --git a/src/computation_access_routines.f90 b/src/computation_access_routines.f90 new file mode 100644 index 00000000..6a51e6d8 --- /dev/null +++ b/src/computation_access_routines.f90 @@ -0,0 +1,664 @@ +!> \file +!> \author Chris Bradley +!> \brief This module contains all computation access method routines. +!> +!> \section LICENSE +!> +!> Version: MPL 1.1/GPL 2.0/LGPL 2.1 +!> +!> The contents of this file are subject to the Mozilla Public License +!> Version 1.1 (the "License"); you may not use this file except in +!> compliance with the License. You may obtain a copy of the License at +!> http://www.mozilla.org/MPL/ +!> +!> Software distributed under the License is distributed on an "AS IS" +!> basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the +!> License for the specific language governing rights and limitations +!> under the License. +!> +!> The Original Code is OpenCMISS +!> +!> The Initial Developer of the Original Code is University of Auckland, +!> Auckland, New Zealand, the University of Oxford, Oxford, United +!> Kingdom and King's College, London, United Kingdom. Portions created +!> by the University of Auckland, the University of Oxford and King's +!> College, London are Copyright (C) 2007-2010 by the University of +!> Auckland, the University of Oxford and King's College, London. +!> All Rights Reserved. +!> +!> Contributor(s): Chris Bradley +!> +!> Alternatively, the contents of this file may be used under the terms of +!> either the GNU General Public License Version 2 or later (the "GPL"), or +!> the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +!> in which case the provisions of the GPL or the LGPL are applicable instead +!> of those above. If you wish to allow use of your version of this file only +!> under the terms of either the GPL or the LGPL, and not to allow others to +!> use your version of this file under the terms of the MPL, indicate your +!> decision by deleting the provisions above and replace them with the notice +!> and other provisions required by the GPL or the LGPL. If you do not delete +!> the provisions above, a recipient may use your version of this file under +!> the terms of any one of the MPL, the GPL or the LGPL. +!> + +!> This module contains all computation access method routines. +MODULE ComputationAccessRoutines + + USE BaseRoutines + USE ISO_VARYING_STRING + USE Kinds +#ifndef NOMPIMOD + USE MPI +#endif + USE Strings + USE Types + +#include "macros.h" + + IMPLICIT NONE + + PRIVATE + +#ifdef NOMPIMOD +#include "mpif.h" +#endif + + !Module parameters + + !Module types + + !Module variables + + !Interfaces + + INTERFACE WorkGroup_LabelGet + MODULE PROCEDURE WorkGroup_LabelGetC + MODULE PROCEDURE WorkGroup_LabelGetVS + END INTERFACE WorkGroup_LabelGet + + PUBLIC ComputationEnvironment_NumberOfWorldNodesGet + + PUBLIC ComputationEnvironment_WorldCommunicatorGet + + PUBLIC ComputationEnvironment_WorldNodeNumberGet + + PUBLIC ComputationEnvironment_WorldWorkGroupGet + + PUBLIC WorkGroup_ComputationEnvironmentGet + + PUBLIC WorkGroup_ContextGet + + PUBLIC WorkGroup_Get + + PUBLIC WorkGroup_GroupCommunicatorGet + + PUBLIC WorkGroup_GroupNodeNumberGet + + PUBLIC WorkGroup_LabelGet + + PUBLIC WorkGroup_NumberOfGroupNodesGet + + PUBLIC WorkGroup_ParentWorkGroupGet + + PUBLIC WorkGroup_UserNumberFind + + PUBLIC WorkGroup_UserNumberGet + + PUBLIC WorkGroup_WorkSubGroupGet + +CONTAINS + + ! + !================================================================================================================================ + ! + + !>Gets the current world communicator. + SUBROUTINE ComputationEnvironment_WorldCommunicatorGet(computationEnvironment,worldCommunicator,err,error,*) + + !Argument Variables + TYPE(ComputationEnvironmentType), POINTER, INTENT(IN) :: computationEnvironment !Returns the number/rank of the computation node in the world communicator + SUBROUTINE ComputationEnvironment_WorldNodeNumberGet(computationEnvironment,worldNodeNumber,err,error,*) + + !Argument Variables + TYPE(ComputationEnvironmentType), POINTER, INTENT(IN) :: computationEnvironment !Gets the number of computation nodes in the world communicator. + SUBROUTINE ComputationEnvironment_NumberOfWorldNodesGet(computationEnvironment,numberOfWorldNodes,err,error,*) + + !Argument Variables + TYPE(ComputationEnvironmentType), POINTER, INTENT(IN) :: computationEnvironment !Gets the world work group from a computational environment. + SUBROUTINE ComputationEnvironment_WorldWorkGroupGet(computationEnvironment,worldWorkGroup,err,error,*) + + !Argument variables + TYPE(ComputationEnvironmentType), POINTER, INTENT(IN) :: computationEnvironment !computationEnvironment%worldWorkGroup + !Check world work group is associated. + IF(.NOT.ASSOCIATED(worldWorkGroup)) & + & CALL FlagError("World work group is not associated for the computation environment.",err,error,*999) + + EXITS("ComputationEnvironment_WorldWorkGroupGet") + RETURN +999 NULLIFY(worldWorkGroup) +998 ERRORSEXITS("ComputationEnvironment_WorldWorkGroupGet",err,error) + RETURN 1 + + END SUBROUTINE ComputationEnvironment_WorldWorkGroupGet + + ! + !================================================================================================================================ + ! + + !>Returns the computation environment associated with a work group. + SUBROUTINE WorkGroup_ComputationEnvironmentGet(workGroup,computationEnvironment,err,error,*) + + !Argument variables + TYPE(WorkGroupType), POINTER, INTENT(IN) :: workGroup !workGroup%computationEnvironment + IF(.NOT.ASSOCIATED(computationEnvironment)) THEN + localError="The computation environment is not associated for work group number "// & + & TRIM(NumberToVString(workGroup%userNumber,"*",err,error))//"." + CALL FlagError(localError,err,error,*999) + ENDIF + + EXITS("WorkGroup_ComputationEnvironmentGet") + RETURN +999 NULLIFY(computationEnvironment) +998 ERRORSEXITS("WorkGroup_ComputationEnvironmentGet",err,error) + RETURN 1 + + END SUBROUTINE WorkGroup_ComputationEnvironmentGet + + ! + !================================================================================================================================ + ! + + !>Returns a pointer to the context for a work group. + SUBROUTINE WorkGroup_ContextGet(workGroup,context,err,error,*) + + !Argument variables + TYPE(WorkGroupType), POINTER :: workGroup !workGroup%computationEnvironment%context + IF(.NOT.ASSOCIATED(context)) THEN + localError="The context is not associated for the computation environment for work group number "// & + & TRIM(NumberToVString(workGroup%userNumber,"*",err,error))//"." + CALL FlagError(localError,err,error,*999) + ENDIF + + EXITS("WorkGroup_ContextGet") + RETURN +999 NULLIFY(context) +998 ERRORSEXITS("WorkGroup_ContextGet",err,error) + RETURN 1 + + END SUBROUTINE WorkGroup_ContextGet + + ! + !================================================================================================================================ + ! + + !>Finds and returns a pointer to the work group with the given user number. + SUBROUTINE WorkGroup_Get(computationEnvironment,workGroupUserNumber,workGroup,err,error,*) + + !Argument variables + TYPE(ComputationEnvironmentType), POINTER, INTENT(IN) :: computationEnvironment !Gets the group communicator from a work group. + SUBROUTINE WorkGroup_GroupCommunicatorGet(workGroup,groupCommunicator,err,error,*) + + !Argument variables + TYPE(WorkGroupType), POINTER, INTENT(IN) :: workGroup !Gets the number/rank of the computation node in the work group communicator + SUBROUTINE WorkGroup_GroupNodeNumberGet(workGroup,groupNodeNumber,err,error,*) + + !Argument Variables + TYPE(WorkGroupType), POINTER, INTENT(IN) :: workGroup !Returns the character label of a work group \see OpenCMISS::Iron::cmfe_WorkGroup_LabelGet + SUBROUTINE WorkGroup_LabelGetC(workGroup,label,err,error,*) + + !Argument Variables + TYPE(WorkGroupType), POINTER, INTENT(IN) :: workGroup !Returns the varying string label of a work group \see OpenCMISS::Iron::cmfe_WorkGroup_LabelGet + SUBROUTINE WorkGroup_LabelGetVS(workGroup,label,err,error,*) + + !Argument Variables + TYPE(WorkGroupType), POINTER, INTENT(IN) :: workGroup !Gets the number of computation nodes in the work group communicator. + SUBROUTINE WorkGroup_NumberOfGroupNodesGet(workGroup,numberOfGroupNodes,err,error,*) + + !Argument Variables + TYPE(WorkGroupType), POINTER, INTENT(IN) :: workGroup !Gets the parent work group from a work group. + SUBROUTINE WorkGroup_ParentWorkGroupGet(workGroup,parentWorkGroup,err,error,*) + + !Argument variables + TYPE(WorkGroupType), POINTER, INTENT(IN) :: workGroup !workGroup%parentWorkGroup + !Check parent work group is associated. + IF(.NOT.ASSOCIATED(parentWorkGroup)) THEN + localError="Parent work group is not associated for work group "// & + & TRIM(NumberToVString(workGroup%userNumber,"*",err,error))//"." + CALL FlagError(localError,err,error,*999) + ENDIF + + EXITS("WorkGroup_ParentWorkGroupGet") + RETURN +999 NULLIFY(parentWorkGroup) +998 ERRORSEXITS("WorkGroup_ParentWorkGroupGet",err,error) + RETURN 1 + + END SUBROUTINE WorkGroup_ParentWorkGroupGet + + ! + !================================================================================================================================ + ! + + !>Finds and returns a pointer to the work group with the given user number. If no work group with that number exists work group is left nullified. + SUBROUTINE WorkGroup_UserNumberFind(computationEnvironment,userNumber,workGroup,err,error,*) + + !Argument variables + TYPE(ComputationEnvironmentType), POINTER :: computationEnvironment !computationEnvironment%worldWorkGroup + IF(.NOT.ASSOCIATED(worldWorkGroup)) CALL FlagError("World work group is not associated.",err,error,*999) + + NULLIFY(workGroup) + IF(userNumber==0) THEN + workGroup=>worldWorkGroup + ELSE + CALL WorkGroup_UserNumberFindPtr(userNumber,worldWorkGroup,workGroup,err,error,*999) + ENDIF + + EXITS("WorkGroup_UserNumberFind") + RETURN +999 ERRORSEXITS("WorkGroup_UserNumberFind",err,error) + RETURN 1 + + END SUBROUTINE WorkGroup_UserNumberFind + + ! + !================================================================================================================================ + ! + + !>Finds and returns a pointer to the work group with the given user number starting from the given start work group and searching all sub-groups under the start work group. If no work group with that number exists work group is left nullified. + RECURSIVE SUBROUTINE WorkGroup_UserNumberFindPtr(userNumber,startWorkGroup,workGroup,err,error,*) + + !Argument variables + INTEGER(INTG), INTENT(IN) :: userNumber !startWorkGroup + ELSE + IF(ALLOCATED(startWorkGroup%subGroups)) THEN + DO workGroupIdx=1,startWorkGroup%numberOfSubGroups + CALL WorkGroup_UserNumberFindPtr(userNumber,startWorkGroup%subGroups(workGroupIdx)%ptr,workGroup,err,error,*999) + IF(ASSOCIATED(workGroup)) EXIT + ENDDO !workGroupIdx + ENDIF + ENDIF + + EXITS("WorkGroup_UserNumberFindPtr") + RETURN +999 ERRORSEXITS("WorkGroup_UserNumberFindPtr",err,error) + RETURN 1 + + END SUBROUTINE WorkGroup_UserNumberFindPtr + + ! + !================================================================================================================================ + ! + + !>Returns the user number for a work group. + SUBROUTINE WorkGroup_UserNumberGet(workGroup,userNumber,err,error,*) + + !Argument variables + TYPE(WorkGroupType), POINTER, INTENT(IN) :: workGroup !Gets a sub work group from a work group. + SUBROUTINE WorkGroup_WorkSubGroupGet(workGroup,subGroupIdx,subWorkGroup,err,error,*) + + !Argument variables + TYPE(WorkGroupType), POINTER, INTENT(IN) :: workGroup !workGroup%numberOfSubGroups) THEN + localError="The specified sub group index of "//TRIM(NumberToVString(subGroupIdx,"*",err,error))// & + & " is invalid. The sub group index must be >=1 and <= "// & + & TRIM(NumberToVString(workGroup%numberOfSubGroups,"*",err,error))//"." + CALL FlagError(localError,err,error,*999) + ENDIF + + !Get the parent work group + subWorkGroup=>workGroup%subGroups(subGroupIdx)%ptr + !Check sub work group is associated. + IF(.NOT.ASSOCIATED(subWorkGroup)) THEN + localError="The sub work group is not associated for sub group index "// & + & TRIM(NumberToVString(subGroupIdx,"*",err,error))//" of work group "// & + & TRIM(NumberToVString(workGroup%userNumber,"*",err,error))//"." + CALL FlagError(localError,err,error,*999) + ENDIF + + EXITS("WorkGroup_WorkSubGroupGet") + RETURN +999 NULLIFY(subWorkGroup) +998 ERRORSEXITS("WorkGroup_WorkSubGroupGet",err,error) + RETURN 1 + + END SUBROUTINE WorkGroup_WorkSubGroupGet + + ! + !================================================================================================================================ + ! + +END MODULE ComputationAccessRoutines diff --git a/src/computation_routines.f90 b/src/computation_routines.f90 new file mode 100755 index 00000000..f6fc8d34 --- /dev/null +++ b/src/computation_routines.f90 @@ -0,0 +1,1034 @@ +!> \file +!> \author Chris Bradley +!> \brief This module contains all computation routines. +!> +!> \section LICENSE +!> +!> Version: MPL 1.1/GPL 2.0/LGPL 2.1 +!> +!> The contents of this file are subject to the Mozilla Public License +!> Version 1.1 (the "License"); you may not use this file except in +!> compliance with the License. You may obtain a copy of the License at +!> http://www.mozilla.org/MPL/ +!> +!> Software distributed under the License is distributed on an "AS IS" +!> basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the +!> License for the specific language governing rights and limitations +!> under the License. +!> +!> The Original Code is OpenCMISS +!> +!> The Initial Developer of the Original Code is University of Auckland, +!> Auckland, New Zealand, the University of Oxford, Oxford, United +!> Kingdom and King's College, London, United Kingdom. Portions created +!> by the University of Auckland, the University of Oxford and King's +!> College, London are Copyright (C) 2007-2010 by the University of +!> Auckland, the University of Oxford and King's College, London. +!> All Rights Reserved. +!> +!> Contributor(s): +!> +!> Alternatively, the contents of this file may be used under the terms of +!> either the GNU General Public License Version 2 or later (the "GPL"), or +!> the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +!> in which case the provisions of the GPL or the LGPL are applicable instead +!> of those above. If you wish to allow use of your version of this file only +!> under the terms of either the GPL or the LGPL, and not to allow others to +!> use your version of this file under the terms of the MPL, indicate your +!> decision by deleting the provisions above and replace them with the notice +!> and other provisions required by the GPL or the LGPL. If you do not delete +!> the provisions above, a recipient may use your version of this file under +!> the terms of any one of the MPL, the GPL or the LGPL. +!> + +!> This module contains all computation routines. + +MODULE ComputationRoutines + + USE BaseRoutines + USE CmissMPI + USE CmissPetsc + USE ComputationAccessRoutines + USE Constants + USE Kinds +#ifndef NOMPIMOD + USE MPI +#endif + USE INPUT_OUTPUT + USE ISO_VARYING_STRING + USE Sorting + USE Strings + USE Types + +#include "macros.h" + + IMPLICIT NONE + + PRIVATE + +#ifdef NOMPIMOD +#include "mpif.h" +#endif + + !Module parameters + + !Module types + + !Module variables + + LOGICAL, SAVE :: cmissMPIInitialised !Finalises the computation node data structures and deallocates all memory. + SUBROUTINE Computation_ComputationNodeFinalise(computationNode,err,error,*) + + !Argument Variables + TYPE(ComputationNodeType),INTENT(INOUT) :: computationNode !Initialises the computation node data structures. + SUBROUTINE Computation_ComputationNodeInitialise(computationNode,rank,err,error,*) + + !Argument Variables + TYPE(ComputationNodeType), INTENT(OUT) :: computationNode !Finalises the MPI computation node type data structure and deallocates all memory. + SUBROUTINE Computation_MPIComputationNodeFinalise(mpiComputationNode,err,error,*) + + !Argument Variables + TYPE(MPIComputationNodeType) :: mpiComputationNode !Initialises the data structure containing the MPI type information for the ComputationNodeType. + SUBROUTINE Computation_MPIComputationNodeInitialise(computationEnvironment,rank,err,error,*) + + !Argument Variables + TYPE(ComputationEnvironmentType), POINTER, INTENT(INOUT) :: computationEnvironment !computationEnvironment%numberOfWorldComputationNodes) THEN + localError="The specified rank of "//TRIM(NumberToVString(rank,"*",err,error))// & + & " is invalid. The rank should be >= 0 and <= "// & + & TRIM(NumberToVString(computationEnvironment%numberOfWorldComputationNodes,"*",err,error))//"." + CALL FlagError(localError,err,error,*999) + ENDIF + + computationEnvironment%mpiComputationNode%mpiType=MPI_DATATYPE_NULL + + computationEnvironment%mpiComputationNode%numberOfBlocks=4 + computationEnvironment%mpiComputationNode%types=[MPI_INTEGER,MPI_INTEGER,MPI_INTEGER,MPI_CHARACTER] + computationEnvironment%mpiComputationNode%blockLengths=[1,1,1,MPI_MAX_PROCESSOR_NAME] + + CALL MPI_GET_ADDRESS(computationEnvironment%computationNodes(rank)%numberOfProcessors, & + & computationEnvironment%mpiComputationNode%displacements(1),mpiIError) + CALL MPI_ErrorCheck("MPI_GET_ADDRESS",mpiIError,err,error,*999) + CALL MPI_GET_ADDRESS(computationEnvironment%computationNodes(rank)%rank, & + & computationEnvironment%mpiComputationNode%displacements(2),mpiIError) + CALL MPI_ErrorCheck("MPI_GET_ADDRESS",mpiIError,err,error,*999) + CALL MPI_GET_ADDRESS(computationEnvironment%computationNodes(rank)%nodeNameLength, & + & computationEnvironment%mpiComputationNode%displacements(3),mpiIError) + CALL MPI_ErrorCheck("MPI_GET_ADDRESS",mpiIError,err,error,*999) + !CPB 19/02/07 AIX compiler complains about the type of the first parameter i.e., the previous 3 have been integers + !and this one is not so cast the type. + CALL MPI_GET_ADDRESS(computationEnvironment%computationNodes(rank)%nodeName, & + & computationEnvironment%mpiComputationNode%displacements(4),mpiIError) + CALL MPI_ErrorCheck("MPI_GET_ADDRESS",mpiIError,err,error,*999) + + DO blockIdx=4,1,-1 + computationEnvironment%mpiComputationNode%displacements(blockIdx)= & + & computationEnvironment%mpiComputationNode%displacements(blockIdx)- & + & computationEnvironment%mpiComputationNode%displacements(1) + ENDDO !blockIdx + + CALL MPI_TYPE_CREATE_STRUCT(computationEnvironment%mpiComputationNode%numberOfBlocks, & + & computationEnvironment%mpiComputationNode%blockLengths, & + & computationEnvironment%mpiComputationNode%displacements, & + & computationEnvironment%mpiComputationNode%types, & + & computationEnvironment%mpiComputationNode%mpiType,mpiIError) + CALL MPI_ErrorCheck("MPI_TYPE_CREATE_STRUCT",mpiIError,err,error,*999) + + CALL MPI_TYPE_COMMIT(computationEnvironment%mpiComputationNode%mpiType,mpiIError) + CALL MPI_ErrorCheck("MPI_TYPE_COMMIT",mpiIError,err,error,*999) + + IF(diagnostics1) THEN + CALL WriteString(DIAGNOSTIC_OUTPUT_TYPE,"MPI Computation Node Type Data:",err,error,*999) + CALL WriteStringValue(DIAGNOSTIC_OUTPUT_TYPE," MPI type = ", & + & computationEnvironment%mpiComputationNode%mpiType,err,error,*999) + CALL WriteStringValue(DIAGNOSTIC_OUTPUT_TYPE," Number of blocks = ", & + & computationEnvironment%mpiComputationNode%numberOfBlocks,err,error,*999) + CALL WriteStringVector(DIAGNOSTIC_OUTPUT_TYPE,1,1,computationEnvironment%mpiComputationNode%numberOfBlocks,4,4, & + & computationEnvironment%mpiComputationNode%types,'(" Block types =",4(X,I15))','(15X,4(X,I15))',err,error,*999) + CALL WriteStringVector(DIAGNOSTIC_OUTPUT_TYPE,1,1,computationEnvironment%mpiComputationNode%numberOfBlocks,8,8, & + & computationEnvironment%mpiComputationNode%blockLengths,'(" Block lengths =",8(X,I5))','(17X,8(X,I5))',err,error,*999) + CALL WriteStringVector(DIAGNOSTIC_OUTPUT_TYPE,1,1,computationEnvironment%mpiComputationNode%numberOfBlocks,8,8, & + & computationEnvironment%mpiComputationNode%displacements,'(" Displacements =",8(X,I5))','(17X,8(X,I5))',err,error,*999) + ENDIF + + EXITS("Computation_MPIComputationNodeInitialise") + RETURN +999 CALL Computation_MPIComputationNodeFinalise(computationEnvironment%mpiComputationNode,dummyErr,dummyError,*998) +998 ERRORS("Computation_MPIComputationNodeInitialise",err,error) + EXITS("Computation_MPIComputationNodeInitialise") + RETURN 1 + + END SUBROUTINE Computation_MPIComputationNodeInitialise + + ! + !================================================================================================================================= + ! + + !>Finalises the computation data structures and deallocates all memory. + SUBROUTINE Computation_Finalise(computationEnvironment,err,error,*) + + !Argument Variables + TYPE(ComputationEnvironmentType), POINTER :: computationEnvironment !Initialises the computation data structures. + SUBROUTINE Computation_Initialise(context,err,error,*) + + !Argument Variables + TYPE(ContextType), POINTER :: context !Finalises the computation environment data structures and deallocates all memory. + SUBROUTINE ComputationEnvironment_Finalise(computationEnvironment,err,error,*) + + !Argument Variables + TYPE(ComputationEnvironmentType), POINTER :: computationEnvironment !Initialises the computation environment data structures for a context. + SUBROUTINE ComputationEnvironment_Initialise(context,err,error,*) + + !Argument Variables + TYPE(ContextType), POINTER :: context !context + context%computationEnvironment%mpiVersion=0 + context%computationEnvironment%mpiSubversion=0 + context%computationEnvironment%mpiCommWorld=MPI_COMM_NULL + context%computationEnvironment%mpiGroupWorld=MPI_GROUP_NULL + context%computationEnvironment%numberOfWorldComputationNodes=0 + context%computationEnvironment%myWorldComputationNodeNumber=-1 + NULLIFY(context%computationEnvironment%worldWorkGroup) + + !Get the version of MPI that we are running with + CALL MPI_GET_VERSION(context%computationEnvironment%mpiVersion,context%computationEnvironment%mpiSubversion,mpiIError) + CALL MPI_ErrorCheck("MPI_GET_VERSION",mpiIError,err,error,*999) + + !Create a (private) communicator for OpenCMISS as a duplicate MPI_COMM_WORLD + CALL MPI_COMM_DUP(MPI_COMM_WORLD,context%computationEnvironment%mpiCommWorld,mpiIError) + CALL MPI_ErrorCheck("MPI_COMM_DUP",mpiIError,err,error,*999) + !Get the default MPI_COMM_GROUP for the world communicator + CALL MPI_COMM_GROUP(context%computationEnvironment%mpiCommWorld,context%computationEnvironment%mpiGroupWorld,mpiIError) + CALL MPI_ErrorCheck("MPI_COMM_GROUP",mpiIError,err,error,*999) + !Set the default MPI world communicator to be the cloned communicator + context%computationEnvironment%mpiCommWorld=context%computationEnvironment%mpiCommWorld + + !Determine the number of ranks/computation nodes we have in our world computation environment + CALL MPI_COMM_SIZE(context%computationEnvironment%mpiCommWorld,context%computationEnvironment%numberOfWorldComputationNodes, & + & mpiIError) + CALL MPI_ErrorCheck("MPI_COMM_SIZE",mpiIError,err,error,*999) + + !Allocate the computation node data structures + ALLOCATE(context%computationEnvironment%computationNodes(0:context%computationEnvironment%numberOfWorldComputationNodes-1), & + & STAT=err) + IF(err/=0) CALL FlagError("Could not allocate computation environment computation nodes.",err,error,*999) + + !Determine my processes rank in the world communicator + CALL MPI_COMM_RANK(context%computationEnvironment%mpiCommWorld,rank,mpiIError) + CALL MPI_ErrorCheck("MPI_COMM_RANK",mpiIError,err,error,*999) + context%computationEnvironment%myWorldComputationNodeNumber=rank + +#ifdef TAUPROF + CALL TAU_PROFILE_SET_NODE(rank) +#endif + + !Create the MPI type information for the ComputationNodeType + CALL Computation_MPIComputationNodeInitialise(context%computationEnvironment,rank,err,error,*999) + !Fill in all the computation node data structures for this rank at the root position (will be changed later with an + !allgather call) + CALL Computation_ComputationNodeInitialise(context%computationEnvironment%computationNodes(0),rank,err,error,*999) + + !Now transfer all the computation node information to the other computation nodes so that each rank has all the + !information. + CALL MPI_ALLGATHER(MPI_IN_PLACE,1,context%computationEnvironment%mpiComputationNode%mpiType, & + & context%computationEnvironment%computationNodes(0),1,context%computationEnvironment%mpiComputationNode%mpiType, & + & context%computationEnvironment%mpiCommWorld,mpiIError) + CALL MPI_ErrorCheck("MPI_ALLGATHER",mpiIError,err,error,*999) + + !Setup the world work group. + !Initialise + CALL WorkGroup_Initialise(context%computationEnvironment%worldWorkGroup,err,error,*999) + !Set the world work group to have all the ranks in the world communicator + context%computationEnvironment%worldWorkGroup%userNumber=0 + context%computationEnvironment%worldWorkGroup%label="World Work Group" + context%computationEnvironment%worldWorkGroup%parentWorkGroup=>context%computationEnvironment%worldWorkGroup + context%computationEnvironment%worldWorkGroup%numberOfGroupComputationNodes= & + & context%computationEnvironment%numberOfWorldComputationNodes + context%computationEnvironment%worldWorkGroup%computationEnvironment=>context%computationEnvironment + ALLOCATE(context%computationEnvironment%worldWorkGroup%worldRanks( & + & context%computationEnvironment%numberOfWorldComputationNodes),STAT=err) + IF(err/=0) CALL FlagError("Could not allocate world work group world ranks.",err,error,*999) + ALLOCATE(context%computationEnvironment%worldWorkGroup%availableRanks( & + & context%computationEnvironment%numberOfWorldComputationNodes),STAT=err) + IF(err/=0) CALL FlagError("Could not allocate world work group available ranks.",err,error,*999) + DO rankIdx=1,context%computationEnvironment%numberOfWorldComputationNodes + context%computationEnvironment%worldWorkGroup%worldRanks(rankIdx)=rankIdx-1 + context%computationEnvironment%worldWorkGroup%availableRanks(rankIdx)=rankIdx-1 + ENDDO !rankIdx + context%computationEnvironment%worldWorkGroup%numberOfAvailableRanks= & + & context%computationEnvironment%numberOfWorldComputationNodes + !Create a new MPI group + CALL MPI_GROUP_INCL(context%computationEnvironment%mpiGroupWorld, & + & context%computationEnvironment%worldWorkGroup%numberOfGroupComputationNodes, & + & context%computationEnvironment%worldWorkGroup%worldRanks, & + & context%computationEnvironment%worldWorkGroup%mpiGroup,mpiIError) + CALL MPI_ErrorCheck("MPI_GROUP_INCL",mpiIError,err,error,*999) + CALL MPI_COMM_CREATE(context%computationEnvironment%mpiCommWorld, & + & context%computationEnvironment%worldWorkGroup%mpiGroup, & + & context%computationEnvironment%worldWorkGroup%mpiGroupCommunicator,mpiIError) + CALL MPI_ErrorCheck("MPI_COMM_CREATE",mpiIError,err,error,*999) + !Determine ranks + CALL MPI_COMM_RANK(context%computationEnvironment%mpiCommWorld,rank,mpiIError) + CALL MPI_ErrorCheck("MPI_COMM_RANK",mpiIError,err,error,*999) + context%computationEnvironment%worldWorkGroup%myWorldComputationNodeNumber=rank + CALL MPI_COMM_RANK(context%computationEnvironment%worldWorkGroup%mpiGroupCommunicator,rank,mpiIError) + CALL MPI_ErrorCheck("MPI_COMM_RANK",mpiIError,err,error,*999) + context%computationEnvironment%worldWorkGroup%myGroupComputationNodeNumber=rank + + context%computationEnvironment%worldWorkGroup%workGroupFinished=.TRUE. + + IF(diagnostics1) THEN + !Just let the master node write out this information + IF(rank==0) THEN + CALL WriteString(DIAGNOSTIC_OUTPUT_TYPE,"Computation environment:",err,error,*999) + CALL WriteStringValue(DIAGNOSTIC_OUTPUT_TYPE," MPI version = ", & + & context%computationEnvironment%mpiVersion,err,error,*999) + CALL WriteStringValue(DIAGNOSTIC_OUTPUT_TYPE," MPI subversion = ", & + & context%computationEnvironment%mpiSubversion,err,error,*999) + CALL WriteStringValue(DIAGNOSTIC_OUTPUT_TYPE," MPI world communicator = ", & + & context%computationEnvironment%mpiCommWorld,err,error,*999) + CALL WriteStringValue(DIAGNOSTIC_OUTPUT_TYPE," MPI world group = ", & + & context%computationEnvironment%mpiGroupWorld,err,error,*999) + CALL WriteStringValue(DIAGNOSTIC_OUTPUT_TYPE," Number of world computation nodes = ", & + & context%computationEnvironment%numberOfWorldComputationNodes,err,error,*999) + CALL WriteStringValue(DIAGNOSTIC_OUTPUT_TYPE," My world computation node number = ", & + & context%computationEnvironment%myWorldComputationNodeNumber,err,error,*999) + IF(diagnostics2) THEN + DO computationNodeIdx=0,context%computationEnvironment%numberOfWorldComputationNodes-1 + CALL WriteString(DIAGNOSTIC_OUTPUT_TYPE," Computation Node:",err,error,*999) + CALL WriteStringValue(DIAGNOSTIC_OUTPUT_TYPE," Number of Processors = ", & + & context%computationEnvironment%computationNodes(computationNodeIdx)%numberOfProcessors, & + & err,error,*999) + CALL WriteStringValue(DIAGNOSTIC_OUTPUT_TYPE," MPI rank = ", & + & context%computationEnvironment%computationNodes(computationNodeIdx)%rank,err,error,*999) + CALL WriteStringValue(DIAGNOSTIC_OUTPUT_TYPE," Node Name = ", & + & context%computationEnvironment%computationNodes(computationNodeIdx)%nodeName,err,error,*999) + ENDDO !computationNodeIdx + ENDIF + ENDIF + ENDIF + + EXITS("ComputationEnvironment_Initialise") + RETURN +999 CALL ComputationEnvironment_Finalise(context%computationEnvironment,dummyErr,dummyError,*998) +998 ERRORS("ComputationEnvironment_Initialise",err,error) + EXITS("ComputationEnvironment_Initialise") + RETURN 1 + + END SUBROUTINE ComputationEnvironment_Initialise + + ! + !================================================================================================================================= + ! + + !>Start the creation of a work group \see OpenCMISS::Iron::cmfe_WorkGroup_CreateStart + SUBROUTINE WorkGroup_CreateStart(userNumber,parentWorkGroup,workGroup,err,error,*) + + !Argument Variables + INTEGER(INTG), INTENT(IN) :: userNumber !parentWorkGroup%computationEnvironment + !Add the work group to the list of parent sub groups + ALLOCATE(newSubGroups(parentWorkGroup%numberOfSubGroups+1),STAT=err) + IF(err/=0) CALL FlagError("Could not allocate new sub groups.",err,error,*999) + workGroup%parentWorkGroup=>parentWorkGroup + DO subGroupIdx=1,parentWorkGroup%numberOfSubGroups + newSubGroups(subGroupIdx)%ptr=>parentWorkGroup%subGroups(subGroupIdx)%ptr + ENDDO !subGroupIdx + newSubGroups(parentWorkGroup%numberOfSubGroups+1)%ptr=>workGroup + CALL MOVE_ALLOC(newSubGroups,parentWorkGroup%subGroups) + parentWorkGroup%numberOfSubGroups=parentWorkGroup%numberOfSubGroups+1 + + EXITS("WorkGroup_CreateStart") + RETURN +999 ERRORSEXITS("WorkGroup_CreateStart",err,error) + RETURN 1 + + END SUBROUTINE WorkGroup_CreateStart + + ! + !================================================================================================================================ + ! + + !>Finish the creation of a work group \see OpenCMISS::Iron::cmfe_WorkGroup_CreateFinish + SUBROUTINE WorkGroup_CreateFinish(workGroup,err,error,*) + + !Argument Variables + TYPE(WorkGroupType), POINTER, INTENT(INOUT) :: workGroup !SIZE(parentWorkGroup%availableRanks,1)) THEN + localError="There are insufficient parent work group available ranks. There are "// & + & TRIM(NumberToVString(SIZE(parentWorkGroup%availableRanks,1),"*",err,error))// & + & " parent ranks available and "// & + & TRIM(NumberToVString(workGroup%numberOfGroupComputationNodes,"*",err,error))//" ranks are required." + CALL FlagError(localError,err,error,*999) + ENDIF + + !Get the ranks from the list of available ranks of the parent. + ALLOCATE(workGroup%worldRanks(workGroup%numberOfGroupComputationNodes),STAT=err) + IF(err/=0) CALL FlagError("Could not allocate work group world ranks.",err,error,*999) + newNumberOfAvailableRanks=parentWorkGroup%numberOfAvailableRanks-workGroup%numberOfGroupComputationNodes + ALLOCATE(newAvailableRanks(newNumberOfAvailableRanks),STAT=err) + IF(err/=0) CALL FlagError("Could not allocate work group parent new available ranks.",err,error,*999) + DO rankIdx=1,workGroup%numberOfGroupComputationNodes + workGroup%worldRanks(rankIdx)=parentWorkGroup%availableRanks(rankIdx) + ENDDO !rankIdx + DO rankIdx=1,newNumberOfAvailableRanks + newAvailableRanks(rankIdx)=parentWorkGroup%availableRanks(rankIdx+workGroup%numberOfGroupComputationNodes) + ENDDO !rankIdx + CALL Sorting_HeapSort(newAvailableRanks,err,error,*999) + CALL MOVE_ALLOC(newAvailableRanks,parentWorkGroup%availableRanks) + parentWorkGroup%numberOfAvailableRanks=newNumberOfAvailableRanks + !Set up the available ranks for this work group + ALLOCATE(workGroup%availableRanks(workGroup%numberOfGroupComputationNodes),STAT=err) + IF(err/=0) CALL FlagError("Could not allocate work group available ranks.",err,error,*999) + DO rankIdx=1,workGroup%numberOfGroupComputationNodes + workGroup%availableRanks(rankIdx)=workGroup%worldRanks(rankIdx) + ENDDO !rankIdx + workGroup%numberOfAvailableRanks=workGroup%numberOfGroupComputationNodes + + NULLIFY(computationEnvironment) + CALL WorkGroup_ComputationEnvironmentGet(workGroup,computationEnvironment,err,error,*999) + !Create a new MPI group + CALL MPI_GROUP_INCL(workGroup%computationEnvironment%mpiGroupWorld,workGroup%numberOfGroupComputationNodes, & + & workGroup%worldRanks,workGroup%mpiGroup,mpiIError) + CALL MPI_ErrorCheck("MPI_GROUP_INCL",mpiIError,err,error,*999) + CALL MPI_COMM_CREATE(computationEnvironment%mpiCommWorld,workGroup%mpiGroup,workGroup%mpiGroupCommunicator,mpiIError) + CALL MPI_ErrorCheck("MPI_COMM_CREATE",mpiIError,err,error,*999) + + !Determine my processes rank in the group communicator + IF(workGroup%mpiGroupCommunicator /= MPI_COMM_NULL) THEN + CALL MPI_COMM_RANK(workGroup%mpiGroupCommunicator,groupRank,mpiIError) + CALL MPI_ErrorCheck("MPI_COMM_RANK",mpiIError,err,error,*999) + workGroup%myGroupComputationNodeNumber=groupRank + ELSE + workGroup%myGroupComputationNodeNumber=-1 + ENDIF + !Determine my process rank in the world communicator + CALL MPI_COMM_RANK(computationEnvironment%mpiCommWorld,worldRank,mpiIError) + CALL MPI_ErrorCheck("MPI_COMM_RANK",mpiIError,err,error,*999) + workGroup%myWorldComputationNodeNumber=worldRank + + + workGroup%workGroupFinished=.TRUE. + + EXITS("WorkGroup_CreateFinish") + RETURN +999 IF(ALLOCATED(newAvailableRanks)) DEALLOCATE(newAvailableRanks) + ERRORSEXITS("WorkGroup_CreateFinish",err,error) + RETURN 1 + + END SUBROUTINE WorkGroup_CreateFinish + + ! + !================================================================================================================================= + ! + + !>Destroy a work group \see OpenCMISS::Iron::cmfe_WorkGroup_Destroy + SUBROUTINE WorkGroup_Destroy(workGroup,err,error,*) + + !Argument Variables + TYPE(WorkGroupType), POINTER, INTENT(INOUT) :: workGroup !Destroy a work group given by a user number and all sub groups under it + RECURSIVE SUBROUTINE WorkGroup_DestroyNumber(computationEnvironment,workGroupUserNumber,err,error,*) + + !Argument Variables + TYPE(ComputationEnvironmentType), POINTER :: computationEnvironment !1) THEN + !If the parentWorkGroup has more than one sub groups then remove this work group from the list of sub groups. + ALLOCATE(newSubGroups(parentWorkGroup%numberOfSubGroups-1),STAT=err) + IF(err/=0) CALL FlagError("Could not allocate new sub groups.",err,error,*999) + count=0 + DO subGroupIdx=1,parentWorkGroup%numberOfSubGroups + NULLIFY(subGroup) + CALL WorkGroup_WorkSubGroupGet(parentWorkGroup,subGroupIdx,subGroup,err,error,*999) + IF(subGroup%userNumber/=workGroup%userNumber) THEN + count=count+1 + newSubGroups(count)%ptr=>parentWorkGroup%subGroups(subGroupIdx)%ptr + ENDIF + ENDDO !subGroupIdx + CALL MOVE_ALLOC(newSubGroups,parentWorkGroup%subGroups) + parentWorkGroup%numberOfSubGroups=parentWorkGroup%numberOfSubGroups-1 + ELSE + IF(ALLOCATED(parentWorkGroup%subGroups)) DEALLOCATE(parentWorkGroup%subGroups) + parentWorkGroup%numberOfSubGroups=0 + ENDIF + !Put the work group ranks back into the parent work group available ranks + ALLOCATE(newAvailableRanks(parentWorkGroup%numberOfAvailableRanks+workGroup%numberOfGroupComputationNodes),STAT=err) + IF(err/=0) CALL FlagError("Could not allocate new available ranks.",err,error,*999) + DO rankIdx=1,parentWorkGroup%numberOfAvailableRanks + newAvailableRanks(rankIdx)=parentWorkGroup%availableRanks(rankIdx) + ENDDO !rankIdx + DO rankIdx=1,workGroup%numberOfGroupComputationNodes + newAvailableRanks(parentWorkGroup%numberOfAvailableRanks+rankIdx)=workGroup%worldRanks(rankIdx) + ENDDO !rankIdx + CALL Sorting_HeapSort(newAvailableRanks,err,error,*999) + CALL MOVE_ALLOC(newAvailableRanks,parentWorkGroup%availableRanks) + parentWorkGroup%numberOfAvailableRanks=parentWorkGroup%numberOfAvailableRanks+workGroup%numberOfGroupComputationNodes + !Finalise the work group + CALL WorkGroup_Finalise(workGroup,err,error,*999) + ELSE + !Recursively delete the sub groups first + DO WHILE(workGroup%numberOfSubGroups>0) + NULLIFY(workGroup2) + CALL WorkGroup_WorkSubGroupGet(workGroup,1,workGroup2,err,error,*999) + CALL WorkGroup_DestroyNumber(computationEnvironment,workGroup2%userNumber,err,error,*999) + ENDDO + !Now delete this instance + CALL WorkGroup_DestroyNumber(computationEnvironment,workGroup%userNumber,err,error,*999) + ENDIF + + EXITS("WorkGroup_DestroyNumber") + RETURN +999 IF(ALLOCATED(newSubGroups)) DEALLOCATE(newSubGroups) + IF(ALLOCATED(newAvailableRanks)) DEALLOCATE(newAvailableRanks) + ERRORSEXITS("WorkGroup_DestroyNumber",err,error) + RETURN 1 + + END SUBROUTINE WorkGroup_DestroyNumber + + ! + !================================================================================================================================= + ! + + !>Finalise a work group and deallocate all memory + RECURSIVE SUBROUTINE WorkGroup_Finalise(workGroup,err,error,*) + + !Argument Variables + TYPE(WorkGroupType),POINTER :: workGroup !Add the work sub-group to the parent group based on the computation requirements (called by user) + SUBROUTINE WorkGroup_Initialise(workGroup,err,error,*) + + !Argument Variables + TYPE(WorkGroupType),POINTER, INTENT(OUT) :: workGroup !Set the character label of a work group \see OpenCMISS::Iron::cmfe_WorkGroup_LabelSet + SUBROUTINE WorkGroup_LabelSetC(workGroup,label,err,error,*) + + !Argument Variables + TYPE(WorkGroupType), POINTER, INTENT(IN) :: workGroup !Set the varying string label of a work group \see OpenCMISS::Iron::cmfe_WorkGroup_LabelSet + SUBROUTINE WorkGroup_LabelSetVS(workGroup,label,err,error,*) + + !Argument Variables + TYPE(WorkGroupType), POINTER, INTENT(IN) :: workGroup !Set the number of group nodes in a work group \see OpenCMISS::Iron::cmfe_WorkGroup_NumberOfGroupNodesSet + SUBROUTINE WorkGroup_NumberOfGroupNodesSet(workGroup,numberOfGroupComputationNodes,err,error,*) + + !Argument Variables + TYPE(WorkGroupType), POINTER, INTENT(OUT) :: workGroup !parentWorkGroup%numberOfAvailableRanks) THEN + localError="The number of group nodes of "//TRIM(NumberToVString(numberOfGroupComputationNodes,"*",err,error))// & + & " is invalid. The number of group nodes should be > 0 and <= "// & + & TRIM(NumberToVString(parentWorkGroup%numberOfAvailableRanks,"*",err,error))//"." + CALL FlagError(localError,err,error,*999) + ENDIF + + workGroup%numberOfGroupComputationNodes=numberOfGroupComputationNodes + + EXITS("WorkGroup_NumberOfGroupNodesSet") + RETURN +999 ERRORSEXITS("WorkGroup_NumberOfGroupNodesSet",err,error) + RETURN 1 + + END SUBROUTINE WorkGroup_NumberOfGroupNodesSet + + ! + !================================================================================================================================= + ! + +END MODULE ComputationRoutines diff --git a/src/computational_environment.f90 b/src/computational_environment.f90 deleted file mode 100755 index fcca2407..00000000 --- a/src/computational_environment.f90 +++ /dev/null @@ -1,821 +0,0 @@ -!> \file -!> \author Chris Bradley -!> \brief This module contains all computational environment variables. -!> -!> \section LICENSE -!> -!> Version: MPL 1.1/GPL 2.0/LGPL 2.1 -!> -!> The contents of this file are subject to the Mozilla Public License -!> Version 1.1 (the "License"); you may not use this file except in -!> compliance with the License. You may obtain a copy of the License at -!> http://www.mozilla.org/MPL/ -!> -!> Software distributed under the License is distributed on an "AS IS" -!> basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the -!> License for the specific language governing rights and limitations -!> under the License. -!> -!> The Original Code is OpenCMISS -!> -!> The Initial Developer of the Original Code is University of Auckland, -!> Auckland, New Zealand, the University of Oxford, Oxford, United -!> Kingdom and King's College, London, United Kingdom. Portions created -!> by the University of Auckland, the University of Oxford and King's -!> College, London are Copyright (C) 2007-2010 by the University of -!> Auckland, the University of Oxford and King's College, London. -!> All Rights Reserved. -!> -!> Contributor(s): -!> -!> Alternatively, the contents of this file may be used under the terms of -!> either the GNU General Public License Version 2 or later (the "GPL"), or -!> the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), -!> in which case the provisions of the GPL or the LGPL are applicable instead -!> of those above. If you wish to allow use of your version of this file only -!> under the terms of either the GPL or the LGPL, and not to allow others to -!> use your version of this file under the terms of the MPL, indicate your -!> decision by deleting the provisions above and replace them with the notice -!> and other provisions required by the GPL or the LGPL. If you do not delete -!> the provisions above, a recipient may use your version of this file under -!> the terms of any one of the MPL, the GPL or the LGPL. -!> - -!> This module contains all computational environment variables. - -MODULE ComputationEnvironment - - USE BaseRoutines - USE CmissMPI - USE CmissPetsc - USE Constants - USE Kinds -#ifndef NOMPIMOD - USE MPI -#endif - USE INPUT_OUTPUT - USE ISO_VARYING_STRING - USE Strings - -#include "macros.h" - - IMPLICIT NONE - -#ifdef NOMPIMOD -#include "mpif.h" -#endif - - PRIVATE - - !Module parameters - - !Module types - - !>pointer type to ComputationalWorkGroupType - TYPE :: ComputationalWorkGroupPtrType - TYPE(ComputationalWorkGroupType), POINTER :: ptr - END TYPE ComputationalWorkGroupPtrType - - !>Contains information on logical working groups (added by Robert on 01/04/2010) - TYPE :: ComputationalWorkGroupType - INTEGER(INTG) :: numberOfComputationalNodes !Contains information on a cache heirarchy - TYPE ComputationalCacheType - INTEGER(INTG) :: NUMBER_LEVELS !Contains information on a computational node containing a number of processors - TYPE ComputationalNodeType - INTEGER(INTG) :: NUMBER_PROCESSORS !Contains information on the MPI type to transfer information about a computational node - TYPE MPIComputationalNodeType - INTEGER(INTG) :: MPI_TYPE !Contains information on the computational environment the program is running in. - TYPE ComputationalEnvironmentType - LOGICAL :: cmissMPIInitialised !Add the work sub-group to the parent group based on the computational requirements (called by user) - SUBROUTINE COMPUTATIONAL_WORK_GROUP_SUBGROUP_ADD(PARENT_WORK_GROUP, numberOfComputationalNodes, & - & ADDED_WORK_GROUP,err,error,*) - - !Argument Variables - TYPE(ComputationalWorkGroupType),POINTER, INTENT(INOUT) :: PARENT_WORK_GROUP - TYPE(ComputationalWorkGroupType),POINTER, INTENT(INOUT) :: ADDED_WORK_GROUP - INTEGER(INTG),INTENT(IN) :: numberOfComputationalNodes - INTEGER(INTG), INTENT(OUT) :: err !PARENT_WORK_GROUP%SUB_WORK_GROUPS(I)%ptr - ENDDO - !SUB_WORK_GROUPS(1:PARENT_WORK_GROUP%numberOfSubWorkGroups)=>PARENT_WORK_GROUP%SUB_WORK_GROUPS(:) - - IF(ALLOCATED(PARENT_WORK_GROUP%SUB_WORK_GROUPS)) THEN - DEALLOCATE(PARENT_WORK_GROUP%SUB_WORK_GROUPS) - ENDIF - SUB_WORK_GROUPS(1+PARENT_WORK_GROUP%numberOfSubWorkGroups)%ptr=>NEW_WORK_GROUP%ptr - ALLOCATE(PARENT_WORK_GROUP%SUB_WORK_GROUPS(SIZE(SUB_WORK_GROUPS,1))) - DO I=1,SIZE(SUB_WORK_GROUPS,1) - PARENT_WORK_GROUP%SUB_WORK_GROUPS(I)%ptr => SUB_WORK_GROUPS(I)%ptr - ENDDO - !PARENT_WORK_GROUP%SUB_WORK_GROUPS(:) => SUB_WORK_GROUPS(:) - - DEALLOCATE(SUB_WORK_GROUPS) - PARENT_WORK_GROUP%numberOfSubWorkGroups = 1+PARENT_WORK_GROUP%numberOfSubWorkGroups - NEW_WORK_GROUP%ptr%PARENT => PARENT_WORK_GROUP - TMP_PARENT_WORK_GROUP => PARENT_WORK_GROUP - DO WHILE(ASSOCIATED(TMP_PARENT_WORK_GROUP)) !Update the computational number of its ancestors - TMP_PARENT_WORK_GROUP%numberOfComputationalNodes = TMP_PARENT_WORK_GROUP%numberOfComputationalNodes & - & + NEW_WORK_GROUP%ptr%numberOfComputationalNodes - TMP_PARENT_WORK_GROUP => TMP_PARENT_WORK_GROUP%PARENT - ENDDO - ELSE !Top level group - CALL FlagError('PARENT_WORK_GROUP is not associated, call COMPUTATIONAL_WORK_GROUP_CREATE_START first',& - & err,error,*999) - ENDIF - ADDED_WORK_GROUP => NEW_WORK_GROUP%ptr - - EXITS("COMPUTATIONAL_WORK_GROUP_SUBGROUP_ADD") - RETURN -999 ERRORSEXITS("COMPUTATIONAL_WORK_GROUP_SUBGROUP_ADD",err,error) - RETURN 1 - END SUBROUTINE COMPUTATIONAL_WORK_GROUP_SUBGROUP_ADD - - ! - !================================================================================================================================ - ! - - !>Create the highest level work group (Default: GROUP_WORLD) - SUBROUTINE COMPUTATIONAL_WORK_GROUP_CREATE_START(WORLD_WORK_GROUP,numberOfComputationalNodes,err,error,*) - - !Argument Variables - TYPE(ComputationalWorkGroupType),POINTER, INTENT(INOUT) :: WORLD_WORK_GROUP - INTEGER(INTG),INTENT(IN) :: numberOfComputationalNodes - INTEGER(INTG), INTENT(OUT) :: err !NEW_WORK_GROUP%ptr - ENDIF - - EXITS("COMPUTATIONAL_WORK_GROUP_CREATE_START") - RETURN -999 ERRORSEXITS("COMPUTATIONAL_WORK_GROUP_CREATE_START",err,error) - RETURN 1 - END SUBROUTINE COMPUTATIONAL_WORK_GROUP_CREATE_START - - ! - !================================================================================================================================ - ! - - !>Generate computational environment for current level work group tree and all it's subgroups recursively - RECURSIVE SUBROUTINE Computational_WorkGroupGenerateCompEnviron(WORK_GROUP,AVAILABLE_RANK_LIST,err,error,*) - - !Argument Variables - TYPE(ComputationalWorkGroupType),POINTER, INTENT(INOUT) :: WORK_GROUP - INTEGER(INTG), ALLOCATABLE, INTENT(INOUT) :: AVAILABLE_RANK_LIST(:) - INTEGER(INTG), INTENT(OUT) :: err !Generate the hierarchy computational environment based on work group tree - SUBROUTINE COMPUTATIONAL_WORK_GROUP_CREATE_FINISH(WORLD_WORK_GROUP,err,error,*) - - !Argument Variables - TYPE(ComputationalWorkGroupType),POINTER,INTENT(INOUT) :: WORLD_WORK_GROUP - INTEGER(INTG),INTENT(OUT) :: err ! computationalEnvironment - WORLD_WORK_GROUP%computationalEnvironmentFinished = .TRUE. - - !generate the communicators for subgroups if any - ALLOCATE(AVAILABLE_RANK_LIST(WORLD_WORK_GROUP%computationalEnvironment%numberOfComputationalNodes)) - DO I=0,SIZE(AVAILABLE_RANK_LIST,1)-1 - AVAILABLE_RANK_LIST(I+1) = I - END DO - DO I=1,WORLD_WORK_GROUP%numberOfSubWorkGroups,1 - CALL Computational_WorkGroupGenerateCompEnviron(WORLD_WORK_GROUP%SUB_WORK_GROUPS(I)%ptr,AVAILABLE_RANK_LIST,err,error,*999) - END DO - - EXITS("COMPUTATIONAL_WORK_GROUP_CREATE_FINISH") - RETURN -999 ERRORSEXITS("COMPUTATIONAL_WORK_GROUP_CREATE_FINISH",err,error) - RETURN 1 - END SUBROUTINE COMPUTATIONAL_WORK_GROUP_CREATE_FINISH - - ! - !================================================================================================================================ - ! - - !>Finalises the computational node data structures and deallocates all memory. - SUBROUTINE COMPUTATIONAL_NODE_FINALISE(COMPUTATIONAL_NODE,err,error,*) - - !Argument Variables - TYPE(ComputationalNodeType),INTENT(INOUT) :: COMPUTATIONAL_NODE !Initialises the computational node data structures. - SUBROUTINE COMPUTATIONAL_NODE_INITIALISE(COMPUTATIONAL_NODE,RANK,err,error,*) - - !Argument Variables - TYPE(ComputationalNodeType), INTENT(OUT) :: COMPUTATIONAL_NODE !Finalises the data structure containing the MPI type information for the ComputationalNodeType. - SUBROUTINE COMPUTATIONAL_NODE_MPI_TYPE_FINALISE(err,error,*) - - !Argument Variables - INTEGER(INTG), INTENT(OUT) :: err !Initialises the data structure containing the MPI type information for the ComputationalNodeType. - SUBROUTINE COMPUTATIONAL_NODE_MPI_TYPE_INITIALISE(COMPUTATIONAL_NODE,err,error,*) - - !Argument Variables - TYPE(ComputationalNodeType), INTENT(IN) :: COMPUTATIONAL_NODE !Finalises the computational environment data structures and deallocates all memory. - SUBROUTINE COMPUTATIONAL_ENVIRONMENT_FINALISE(err,error,*) - - !Argument Variables - INTEGER(INTG), INTENT(OUT) :: err !Initialises the computational environment data structures. - SUBROUTINE COMPUTATIONAL_ENVIRONMENT_INITIALISE(err,error,*) - - !Argument Variables - INTEGER(INTG), INTENT(OUT) :: err !Sets the world communicator to the given on. Note: This routine should be called straight after the main OpenCMISS initialise - !>routine. If it is called after objects have started to be setup then good luck! - SUBROUTINE ComputationalEnvironment_WorldCommunicatorSet(worldCommunicator,err,error,*) - - !Argument Variables - INTEGER(INTG), INTENT(IN) :: worldCommunicator !Gets the current world communicator. - SUBROUTINE ComputationalEnvironment_WorldCommunicatorGet(worldCommunicator,err,error,*) - - !Argument Variables - INTEGER(INTG), INTENT(OUT) :: worldCommunicator !Returns the number/rank of the computational nodes. - FUNCTION COMPUTATIONAL_NODE_NUMBER_GET(err,error) - - !Argument Variables - INTEGER(INTG), INTENT(OUT) :: err !Returns the number of computational nodes. - FUNCTION COMPUTATIONAL_NODES_NUMBER_GET(err,error) - - !Argument Variables - INTEGER(INTG), INTENT(OUT) :: err !@} diff --git a/src/context_access_routines.f90 b/src/context_access_routines.f90 new file mode 100644 index 00000000..5c2f526b --- /dev/null +++ b/src/context_access_routines.f90 @@ -0,0 +1,475 @@ +!> \file +!> \author Chris Bradley +!> \brief This module handles all context access routines +!> +!> \section LICENSE +!> +!> Version: MPL 1.1/GPL 2.0/LGPL 2.1 +!> +!> The contents of this file are subject to the Mozilla Public License +!> Version 1.1 (the "License"); you may not use this file except in +!> compliance with the License. You may obtain a copy of the License at +!> http://www.mozilla.org/MPL/ +!> +!> Software distributed under the License is distributed on an "AS IS" +!> basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the +!> License for the specific language governing rights and limitations +!> under the License. +!> +!> The Original Code is OpenCMISS +!> +!> The Initial Developer of the Original Code is University of Auckland, +!> Auckland, New Zealand, the University of Oxford, Oxford, United +!> Kingdom and King's College, London, United Kingdom. Portions created +!> by the University of Auckland, the University of Oxford and King's +!> College, London are Copyright (C) 2007-2010 by the University of +!> Auckland, the University of Oxford and King's College, London. +!> All Rights Reserved. +!> +!> Contributor(s): Chris Bradley +!> +!> Alternatively, the contents of this file may be used under the terms of +!> either the GNU General Public License Version 2 or later (the "GPL"), or +!> the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +!> in which case the provisions of the GPL or the LGPL are applicable instead +!> of those above. If you wish to allow use of your version of this file only +!> under the terms of either the GPL or the LGPL, and not to allow others to +!> use your version of this file under the terms of the MPL, indicate your +!> decision by deleting the provisions above and replace them with the notice +!> and other provisions required by the GPL or the LGPL. If you do not delete +!> the provisions above, a recipient may use your version of this file under +!> the terms of any one of the MPL, the GPL or the LGPL. +!> + +!> This module handles all contex access routines. +MODULE ContextAccessRoutines + + USE BaseRoutines + USE ISO_VARYING_STRING + USE Kinds + USE Strings + USE Types + +#include "macros.h" + + IMPLICIT NONE + + PRIVATE + + !Module parameters + + !Module types + + !Module variables + + !Interfaces + + PUBLIC Context_BasisFunctionsGet + + PUBLIC Context_ComputationEnvironmentGet + + PUBLIC Context_ContextsGet + + PUBLIC Context_CoordinateSystemsGet + + PUBLIC Context_ProblemsGet + + PUBLIC Context_RandomSeedsGet + + PUBLIC Context_RandomSeedsSizeGet + + PUBLIC Context_RegionsGet + + PUBLIC Context_UserNumberFind + + PUBLIC Context_UserNumberGet + + PUBLIC Context_Get + +CONTAINS + + ! + !================================================================================================================================ + ! + + !>Gets the basis functions for a context. + SUBROUTINE Context_BasisFunctionsGet(context,basisFunctions,err,error,*) + + !Argument Variables + TYPE(ContextType), POINTER, INTENT(IN) :: context !context%basisFunctions + IF(.NOT.ASSOCIATED(basisFunctions)) THEN + localError="The basis functions for context number "// & + & TRIM(NumberToVString(context%userNumber,"*",err,error))//" is not associated." + CALL FlagError(localError,err,error,*999) + ENDIF + + EXITS("Context_BasisFunctionsGet") + RETURN +999 NULLIFY(basisFunctions) +998 ERRORS("Context_BasisFunctionsGet",err,error) + EXITS("Context_BasisFunctionsGet") + RETURN 1 + + END SUBROUTINE Context_BasisFunctionsGet + + ! + !================================================================================================================================ + ! + + !>Gets the computation environment for a context. + SUBROUTINE Context_ComputationEnvironmentGet(context,computationEnvironment,err,error,*) + + !Argument Variables + TYPE(ContextType), POINTER, INTENT(IN) :: context !context%computationEnvironment + IF(.NOT.ASSOCIATED(computationEnvironment)) THEN + localError="The computation environment for context number "// & + & TRIM(NumberToVString(context%userNumber,"*",err,error))//" is not associated." + CALL FlagError(localError,err,error,*999) + ENDIF + + EXITS("Context_ComputationEnvironmentGet") + RETURN +999 NULLIFY(computationEnvironment) +998 ERRORS("Context_ComputationEnvironmentGet",err,error) + EXITS("Context_ComputationEnvironmentGet") + RETURN 1 + + END SUBROUTINE Context_ComputationEnvironmentGet + + ! + !================================================================================================================================ + ! + + !>Gets the contexts for a context. + SUBROUTINE Context_ContextsGet(context,contexts,err,error,*) + + !Argument Variables + TYPE(ContextType), POINTER, INTENT(IN) :: context !context%contexts + IF(.NOT.ASSOCIATED(contexts)) THEN + localError="The contexts for context number "// & + & TRIM(NumberToVString(context%userNumber,"*",err,error))//" is not associated." + CALL FlagError(localError,err,error,*999) + ENDIF + + EXITS("Context_ContextsGet") + RETURN +999 NULLIFY(contexts) +998 ERRORS("Context_ContextsGet",err,error) + EXITS("Context_ContextsGet") + RETURN 1 + + END SUBROUTINE Context_ContextsGet + + ! + !================================================================================================================================ + ! + + !>Gets the coordinate systems for a context. + SUBROUTINE Context_CoordinateSystemsGet(context,coordinateSystems,err,error,*) + + !Argument Variables + TYPE(ContextType), POINTER, INTENT(IN) :: context !context%coordinateSystems + IF(.NOT.ASSOCIATED(coordinateSystems)) THEN + localError="The coordinate systems for context number "// & + & TRIM(NumberToVString(context%userNumber,"*",err,error))//" is not associated." + CALL FlagError(localError,err,error,*999) + ENDIF + + EXITS("Context_CoordinateSystemsGet") + RETURN +999 NULLIFY(coordinateSystems) +998 ERRORS("Context_CoordinateSystemsGet",err,error) + EXITS("Context_CoordinateSystemsGet") + RETURN 1 + + END SUBROUTINE Context_CoordinateSystemsGet + + ! + !================================================================================================================================ + ! + + !>Gets the problems for a context. + SUBROUTINE Context_ProblemsGet(context,problems,err,error,*) + + !Argument Variables + TYPE(ContextType), POINTER, INTENT(IN) :: context !context%problems + IF(.NOT.ASSOCIATED(problems)) THEN + localError="The problems for context number "// & + & TRIM(NumberToVString(context%userNumber,"*",err,error))//" is not associated." + CALL FlagError(localError,err,error,*999) + ENDIF + + EXITS("Context_ProblemsGet") + RETURN +999 NULLIFY(problems) +998 ERRORS("Context_ProblemsGet",err,error) + EXITS("Context_ProblemsGet") + RETURN 1 + + END SUBROUTINE Context_ProblemsGet + + ! + !================================================================================================================================ + ! + + !>Gets the random seeds for a context. \see OpenCMISS::Iron::cmfe_Context_RandomSeedsGet + SUBROUTINE Context_RandomSeedsGet(context,randomSeeds,err,error,*) + + !Argument Variables + TYPE(ContextType), POINTER, INTENT(IN) :: context != "// & + & TRIM(NumberToVString(SIZE(context%cmissRandomSeeds,1),"*",err,error))//"." + CALL FlagError(localError,err,error,*999) + ENDIF + + randomSeeds(1:SIZE(context%cmissRandomSeeds,1))=context%cmissRandomSeeds(1:SIZE(context%cmissRandomSeeds,1)) + + EXITS("Context_RandomSeedsGet") + RETURN +999 ERRORS("Context_RandomSeedsGet",err,error) + EXITS("Context_RandomSeedsGet") + RETURN 1 + + END SUBROUTINE Context_RandomSeedsGet + + ! + !================================================================================================================================ + ! + + !>Returns the size of the random seeds array for a context \see OpenCMISS::Iron::cmfe_Context_RandomSeedsSizeGet + SUBROUTINE Context_RandomSeedsSizeGet(context,randomSeedsSize,err,error,*) + + !Argument variables + TYPE(ContextType), POINTER, INTENT(IN) :: context !Gets the regions for a context. + SUBROUTINE Context_RegionsGet(context,regions,err,error,*) + + !Argument Variables + TYPE(ContextType), POINTER, INTENT(IN) :: context !context%regions + IF(.NOT.ASSOCIATED(regions)) THEN + localError="The regions for context number "// & + & TRIM(NumberToVString(context%userNumber,"*",err,error))//" is not associated." + CALL FlagError(localError,err,error,*999) + ENDIF + + EXITS("Context_RegionsGet") + RETURN +999 NULLIFY(regions) +998 ERRORS("Context_RegionsGet",err,error) + EXITS("Context_RegionsGet") + RETURN 1 + + END SUBROUTINE Context_RegionsGet + + ! + !================================================================================================================================ + ! + + !>Finds and returns a pointer to the context identified by a user number. If no context with that user number exists context is left nullified. + SUBROUTINE Context_UserNumberFind(contexts,userNumber,context,err,error,*) + + !Argument variables + TYPE(ContextsType), INTENT(IN) :: contexts !0) THEN + IF(.NOT.ALLOCATED(contexts%contexts)) CALL FlagError("Contexts contexts is not allocated.",err,error,*999) + NULLIFY(context) + DO contextIdx=1,contexts%numberOfContexts + IF(.NOT.ASSOCIATED(contexts%contexts(contextIdx)%ptr)) THEN + localError="The context pointer in contexts is not associated for context index "// & + & TRIM(NumberToVString(contextIdx,"*",err,error))//"." + CALL FlagError(localError,err,error,*999) + ENDIF + IF(contexts%contexts(contextIdx)%ptr%userNumber==userNumber) THEN + context=>contexts%contexts(contextIdx)%ptr + EXIT + ENDIF + ENDDO !contextIdx + ENDIF + + EXITS("Context_UserNumberFind") + RETURN +999 ERRORSEXITS("Context_UserNumberFind",err,error) + RETURN 1 + + END SUBROUTINE Context_UserNumberFind + + ! + !================================================================================================================================ + ! + + !>Returns the user number for a context. + SUBROUTINE Context_UserNumberGet(context,userNumber,err,error,*) + + !Argument variables + TYPE(ContextType), POINTER :: context !Finds and returns a pointer to the context with the given user number. + SUBROUTINE Context_Get(contexts,userNumber,context,err,error,*) + + !Argument variables + TYPE(ContextsType), INTENT(IN) :: contexts ! \file +!> \author Chris Bradley +!> \brief This module handles all context routines +!> +!> \section LICENSE +!> +!> Version: MPL 1.1/GPL 2.0/LGPL 2.1 +!> +!> The contents of this file are subject to the Mozilla Public License +!> Version 1.1 (the "License"); you may not use this file except in +!> compliance with the License. You may obtain a copy of the License at +!> http://www.mozilla.org/MPL/ +!> +!> Software distributed under the License is distributed on an "AS IS" +!> basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the +!> License for the specific language governing rights and limitations +!> under the License. +!> +!> The Original Code is OpenCMISS +!> +!> The Initial Developer of the Original Code is University of Auckland, +!> Auckland, New Zealand, the University of Oxford, Oxford, United +!> Kingdom and King's College, London, United Kingdom. Portions created +!> by the University of Auckland, the University of Oxford and King's +!> College, London are Copyright (C) 2007-2010 by the University of +!> Auckland, the University of Oxford and King's College, London. +!> All Rights Reserved. +!> +!> Contributor(s): Chris Bradley +!> +!> Alternatively, the contents of this file may be used under the terms of +!> either the GNU General Public License Version 2 or later (the "GPL"), or +!> the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +!> in which case the provisions of the GPL or the LGPL are applicable instead +!> of those above. If you wish to allow use of your version of this file only +!> under the terms of either the GPL or the LGPL, and not to allow others to +!> use your version of this file under the terms of the MPL, indicate your +!> decision by deleting the provisions above and replace them with the notice +!> and other provisions required by the GPL or the LGPL. If you do not delete +!> the provisions above, a recipient may use your version of this file under +!> the terms of any one of the MPL, the GPL or the LGPL. +!> + +!> This module handles all contex routines. +MODULE ContextRoutines + + USE BaseRoutines + USE BasisRoutines + USE ComputationRoutines + USE ContextAccessRoutines + USE COORDINATE_ROUTINES + USE ISO_VARYING_STRING + USE Kinds + USE PROBLEM_ROUTINES + USE REGION_ROUTINES + USE Strings + USE Types + +#include "macros.h" + + IMPLICIT NONE + + PRIVATE + + !Module parameters + + !Module types + + !Module variables + + !Interfaces + + PUBLIC Context_Create + + PUBLIC Context_Destroy + + PUBLIC Context_RandomSeedsSet + + PUBLIC Contexts_Finalise,Contexts_Initialise + +CONTAINS + + ! + !================================================================================================================================= + ! + + !>Create a context + SUBROUTINE Context_Create(contexts,context,err,error,*) + + !Argument Variables + TYPE(ContextsType), TARGET :: contexts !contexts + ALLOCATE(newContexts(contexts%numberOfContexts+1),STAT=err) + DO contextIdx=1,contexts%numberOfContexts + newContexts(contextIdx)%ptr=>contexts%contexts(contextIdx)%ptr + ENDDO !contextIdx + newContexts(contexts%numberOfContexts+1)%ptr=>newContext + CALL MOVE_ALLOC(newContexts,contexts%contexts) + contexts%numberOfContexts=contexts%numberOfContexts+1 + context=>newContext + + EXITS("Context_Create") + RETURN +999 CALL Context_Finalise(newContext,dummyErr,dummyError,*998) +998 IF(ALLOCATED(newContexts)) DEALLOCATE(newContexts) + ERRORSEXITS("Context_Create",err,error) + RETURN 1 + + END SUBROUTINE Context_Create + + ! + !================================================================================================================================= + ! + + !>Destroy a context + SUBROUTINE Context_Destroy(context,err,error,*) + + !Argument Variables + TYPE(ContextType), POINTER :: context !contexts%contexts(contextIdx)%ptr + ELSE IF(contextIdx>position) THEN + newContexts(contextIdx-1)%ptr=>contexts%contexts(contextIdx)%ptr + ENDIF + ENDDO !contextIdx + CALL MOVE_ALLOC(newContexts,contexts%contexts) + contexts%numberOfContexts=contexts%numberOfContexts-1 + CALL Context_Finalise(context,err,error,*999) + + EXITS("Context_Destroy") + RETURN +999 IF(ALLOCATED(newContexts)) DEALLOCATE(newContexts) + ERRORSEXITS("Context_Destroy",err,error) + RETURN 1 + + END SUBROUTINE Context_Destroy + + ! + !================================================================================================================================= + ! + + !>Finalise a context and deallocate all memory + SUBROUTINE Context_Finalise(context,err,error,*) + + !Argument Variables + TYPE(ContextType),POINTER :: context !Initialise a context + SUBROUTINE Context_Initialise(context,err,error,*) + + !Argument Variables + TYPE(ContextType), POINTER :: context !Sets the random seeds for a context \see OpenCMISS::Iron::cmfe_Context_RandomSeedsSet + SUBROUTINE Context_RandomSeedsSet(context,randomSeeds,err,error,*) + + !Argument variables + TYPE(ContextType), POINTER :: context !SIZE(context%cmissRandomSeeds,1)) THEN + context%cmissRandomSeeds(1:SIZE(context%cmissRandomSeeds,1))=randomSeeds(1:SIZE(context%cmissRandomSeeds,1)) + ELSE + context%cmissRandomSeeds(1:SIZE(randomSeeds,1))=randomSeeds(1:SIZE(randomSeeds,1)) + ENDIF + + EXITS("Context_RandomSeedsSet") + RETURN +999 ERRORSEXITS("Context_RandomSeedsSet",err,error) + RETURN 1 + + END SUBROUTINE Context_RandomSeedsSet + + ! + !================================================================================================================================= + ! + + !>Finalise the contexts + SUBROUTINE Contexts_Finalise(contexts,err,error,*) + + !Argument Variables + TYPE(ContextsType) :: contexts !Initialise the contexts + SUBROUTINE Contexts_Initialise(contexts,err,error,*) + + !Argument Variables + TYPE(ContextsType) :: contexts !Returns the coordinate systems for the coordinate system. + SUBROUTINE CoordinateSystem_CoordinateSystemsGet(coordinateSystem,coordinateSystems,err,error,*) + + !Argument variables + TYPE(COORDINATE_SYSTEM_TYPE), POINTER, INTENT(IN) :: coordinateSystem !coordinateSystem%coordinateSystems + IF(.NOT.ASSOCIATED(coordinateSystems)) THEN + localError="Coordinate systems is not associated for coordinate system number "// & + & TRIM(NumberToVString(coordinateSystem%USER_NUMBER,"*",err,error))//"." + CALL FlagError(localError,err,error,*999) + ENDIF + + EXITS("CoordinateSystem_CoordinateSystemsGet") + RETURN +998 NULLIFY(coordinateSystems) +999 ERRORS("CoordinateSystem_CoordinateSystemsGet",err,error) + EXITS("CoordinateSystem_CoordinateSystemsGet") + RETURN 1 + + END SUBROUTINE CoordinateSystem_CoordinateSystemsGet + + ! + !================================================================================================================================ + ! + !>Gets the coordinate system dimension. SUBROUTINE CoordinateSystem_DimensionGet(coordinateSystem,numberOfDimensions,err,error,*) @@ -121,10 +157,11 @@ END SUBROUTINE CoordinateSystem_DimensionGet ! !>Finds and returns a pointer to the coordinate system with the given user number. - SUBROUTINE CoordinateSystem_Get(userNumber,coordinateSystem,err,error,*) + SUBROUTINE CoordinateSystem_Get(coordinateSystems,userNumber,coordinateSystem,err,error,*) !Argument variables - INTEGER(INTG), INTENT(IN) :: userNumber !Returns a pointer to the coordinate system identified by a user number. If a coordinate system with that number is not !>found then coordinate system is set to NULL. - SUBROUTINE CoordinateSystem_UserNumberFind(userNumber,coordinateSystem,ERR,ERROR,*) + SUBROUTINE CoordinateSystem_UserNumberFind(coordinateSystems,userNumber,coordinateSystem,err,error,*) !Argument variables + TYPE(CoordinateSystemsType), POINTER :: coordinateSystems !Returns a pointer to the world coordinate system for a coordinate systems. + SUBROUTINE CoordinateSystems_WorldCoordinateSystemGet(coordinateSystems,worldCoordinateSystem,err,error,*) + + !Argument variables + TYPE(CoordinateSystemsType), POINTER :: coordinateSystems !Performs a coordinate transformation from a rectangular cartesian coordinate at the point with coordinate Z(:) to the returned point with coordinate X(:) in the coordinate system identified by COORDINATE_SYSTEM for double precision coordinates. - FUNCTION COORDINATE_CONVERT_FROM_RC_DP(COORDINATE_SYSTEM,Z,ERR,ERROR) + FUNCTION COORDINATE_CONVERT_FROM_RC_DP(COORDINATE_SYSTEM,Z,err,error) !Argument variables TYPE(COORDINATE_SYSTEM_TYPE), INTENT(IN) :: COORDINATE_SYSTEM !2*pi @@ -245,7 +245,7 @@ FUNCTION COORDINATE_CONVERT_FROM_RC_DP(COORDINATE_SYSTEM,Z,ERR,ERROR) COORDINATE_CONVERT_FROM_RC_DP(3)=0.0_DP ENDIF ELSE - CALL FlagError("Invalid number of coordinates.",ERR,ERROR,*999) + CALL FlagError("Invalid number of coordinates.",err,error,*999) ENDIF CASE(COORDINATE_PROLATE_SPHEROIDAL_TYPE) FOCUS=COORDINATE_SYSTEM%FOCUS @@ -261,7 +261,7 @@ FUNCTION COORDINATE_CONVERT_FROM_RC_DP(COORDINATE_SYSTEM,Z,ERR,ERROR) A8=ASIN(A7) ELSE A8=0.0_DP - CALL FLAG_WARNING("Put A8=0 since ABS(A8)>1.",ERR,ERROR,*999) + CALL FlagWarning("Put A8=0 since ABS(A8)>1.",err,error,*999) ENDIF IF((ABS(Z(3))=1.0_DP) THEN A9=PI/2.0_DP @@ -292,17 +292,17 @@ FUNCTION COORDINATE_CONVERT_FROM_RC_DP(COORDINATE_SYSTEM,Z,ERR,ERROR) COORDINATE_CONVERT_FROM_RC_DP(3)=PI-A9 ENDIF ELSE - CALL FlagError("Invalid number of coordinates.",ERR,ERROR,*999) + CALL FlagError("Invalid number of coordinates.",err,error,*999) ENDIF CASE(COORDINATE_OBLATE_SPHEROIDAL_TYPE) - CALL FlagError("Not implemented.",ERR,ERROR,*999) + CALL FlagError("Not implemented.",err,error,*999) CASE DEFAULT - CALL FlagError("Invalid coordinate type.",ERR,ERROR,*999) + CALL FlagError("Invalid coordinate type.",err,error,*999) END SELECT EXITS("COORDINATE_CONVERT_FROM_RC_DP") RETURN -999 ERRORSEXITS("COORDINATE_CONVERT_FROM_RC_DP",ERR,ERROR) +999 ERRORSEXITS("COORDINATE_CONVERT_FROM_RC_DP",err,error) RETURN END FUNCTION COORDINATE_CONVERT_FROM_RC_DP @@ -313,24 +313,24 @@ END FUNCTION COORDINATE_CONVERT_FROM_RC_DP !>COORDINATE_CONVERT_FROM_RC_SP performs a coordinate transformation from a rectangular cartesian coordinate at the !>point with coordinate Z(:) to the returned point with coordinate X(:) in the coordinate system identified by !>COORDINATE_SYSTEM for single precision coordinates. - FUNCTION COORDINATE_CONVERT_FROM_RC_SP(COORDINATE_SYSTEM,Z,ERR,ERROR) + FUNCTION COORDINATE_CONVERT_FROM_RC_SP(COORDINATE_SYSTEM,Z,err,error) !Argument variables TYPE(COORDINATE_SYSTEM_TYPE), INTENT(IN) :: COORDINATE_SYSTEM !2*pi @@ -364,7 +364,7 @@ FUNCTION COORDINATE_CONVERT_FROM_RC_SP(COORDINATE_SYSTEM,Z,ERR,ERROR) COORDINATE_CONVERT_FROM_RC_SP(3)=0.0_SP ENDIF ELSE - CALL FlagError("Invalid number of coordinates.",ERR,ERROR,*999) + CALL FlagError("Invalid number of coordinates.",err,error,*999) ENDIF CASE(COORDINATE_PROLATE_SPHEROIDAL_TYPE) FOCUS=REAL(COORDINATE_SYSTEM%FOCUS,SP) @@ -380,7 +380,7 @@ FUNCTION COORDINATE_CONVERT_FROM_RC_SP(COORDINATE_SYSTEM,Z,ERR,ERROR) A8=ASIN(A7) ELSE A8=0.0_SP - CALL FLAG_WARNING("Put A8=0 since ABS(A8)>1.",ERR,ERROR,*999) + CALL FlagWarning("Put A8=0 since ABS(A8)>1.",err,error,*999) ENDIF IF((ABS(Z(3))=1.0_SP) THEN A9=REAL(PI,SP)/2.0_SP @@ -412,17 +412,17 @@ FUNCTION COORDINATE_CONVERT_FROM_RC_SP(COORDINATE_SYSTEM,Z,ERR,ERROR) COORDINATE_CONVERT_FROM_RC_SP(3)=REAL(PI,SP)-A9 ENDIF ELSE - CALL FlagError("Invalid number of coordinates.",ERR,ERROR,*999) + CALL FlagError("Invalid number of coordinates.",err,error,*999) ENDIF CASE(COORDINATE_OBLATE_SPHEROIDAL_TYPE) - CALL FlagError("Not implemented.",ERR,ERROR,*999) + CALL FlagError("Not implemented.",err,error,*999) CASE DEFAULT - CALL FlagError("Invalid coordinate type.",ERR,ERROR,*999) + CALL FlagError("Invalid coordinate type.",err,error,*999) END SELECT EXITS("COORDINATE_CONVERT_FROM_RC_SP") RETURN -999 ERRORSEXITS("COORDINATE_CONVERT_FROM_RC_SP",ERR,ERROR) +999 ERRORSEXITS("COORDINATE_CONVERT_FROM_RC_SP",err,error) RETURN END FUNCTION COORDINATE_CONVERT_FROM_RC_SP @@ -433,24 +433,24 @@ END FUNCTION COORDINATE_CONVERT_FROM_RC_SP !>COORDINATE_CONVERT_TO_RC_DP performs a coordinate transformation from a coordinate system identified by !>COORDINATE_SYSTEM at the point X(:) to the returned point Z(:) in rectangular cartesian coordinates for !>double precision coordinates. - FUNCTION COORDINATE_CONVERT_TO_RC_DP(COORDINATE_SYSTEM,X,ERR,ERROR) + FUNCTION COORDINATE_CONVERT_TO_RC_DP(COORDINATE_SYSTEM,X,err,error) !Argument variables TYPE(COORDINATE_SYSTEM_TYPE), INTENT(IN) :: COORDINATE_SYSTEM !COORDINATE_CONVERT_TO_RC_SP performs a coordinate transformation from a coordinate system identified by !>COORDINATE_SYSTEM at the point X(:) to the returned point Z(:) in rectangular cartesian coordinates for !>single precision coordinates. - FUNCTION COORDINATE_CONVERT_TO_RC_SP(COORDINATE_SYSTEM,X,ERR,ERROR) + FUNCTION COORDINATE_CONVERT_TO_RC_SP(COORDINATE_SYSTEM,X,err,error) !Argument variables TYPE(COORDINATE_SYSTEM_TYPE), INTENT(IN) :: COORDINATE_SYSTEM !Calculates the difference (or detlta) between the point X and the point Y i.e., Y-X, in the given coordinate system. !>0->2Pi discontinuities with polar coordinates are accounted for. - FUNCTION COORDINATE_DELTA_CALCULATE_DP(COORDINATE_SYSTEM,X,Y,ERR,ERROR) + FUNCTION COORDINATE_DELTA_CALCULATE_DP(COORDINATE_SYSTEM,X,Y,err,error) !Argument variables TYPE(COORDINATE_SYSTEM_TYPE), INTENT(IN) :: COORDINATE_SYSTEM !Calculates the covariant metric tensor GL(i,j), the contravariant metric tensor GU(i,J), the Jacobian and derivative of the interpolated coordinate system (XI_i) with respect to the given coordinate (X_j) system (DXI_DX) at a point (X - normally a Gauss point). Old cmiss name: XGMG - SUBROUTINE COORDINATE_METRICS_CALCULATE(COORDINATE_SYSTEM,JACOBIAN_TYPE,METRICS,ERR,ERROR,*) + SUBROUTINE COORDINATE_METRICS_CALCULATE(COORDINATE_SYSTEM,JACOBIAN_TYPE,METRICS,err,error,*) !Argument variables TYPE(COORDINATE_SYSTEM_TYPE), POINTER :: COORDINATE_SYSTEM !Calculates the normal vector, N, at the point X. IF REVERSE is true the reversed normal is returned. Old-cmiss-name: NORMAL - SUBROUTINE COORDINATE_SYSTEM_NORMAL_CALCULATE(COORDINATE_SYSTEM,REVERSE,X,N,ERR,ERROR,*) + SUBROUTINE COORDINATE_SYSTEM_NORMAL_CALCULATE(COORDINATE_SYSTEM,REVERSE,X,N,err,error,*) !Argument variables TYPE(COORDINATE_SYSTEM_TYPE), POINTER :: COORDINATE_SYSTEM !Finalises a coordinate system and deallocates all memory. - SUBROUTINE COORDINATE_SYSTEM_FINALISE(COORDINATE_SYSTEM,ERR,ERROR,*) + SUBROUTINE COORDINATE_SYSTEM_FINALISE(COORDINATE_SYSTEM,err,error,*) !Argument variables TYPE(COORDINATE_SYSTEM_TYPE), POINTER :: COORDINATE_SYSTEM !Returns the coordinate system focus. - SUBROUTINE COORDINATE_SYSTEM_FOCUS_GET(COORDINATE_SYSTEM,FOCUS,ERR,ERROR,*) + SUBROUTINE COORDINATE_SYSTEM_FOCUS_GET(COORDINATE_SYSTEM,FOCUS,err,error,*) !Argument variables TYPE(COORDINATE_SYSTEM_TYPE), POINTER :: COORDINATE_SYSTEM !Gets the coordinate system type. - SUBROUTINE COORDINATE_SYSTEM_TYPE_GET(COORDINATE_SYSTEM,SYSTEM_TYPE,ERR,ERROR,*) + SUBROUTINE COORDINATE_SYSTEM_TYPE_GET(COORDINATE_SYSTEM,SYSTEM_TYPE,err,error,*) !Argument variables TYPE(COORDINATE_SYSTEM_TYPE), POINTER :: COORDINATE_SYSTEM !Sets/changes the dimension of the coordinate system. \see OPENCMISS::CMISSCoordinateSystemDimensionSet - SUBROUTINE COORDINATE_SYSTEM_DIMENSION_SET(COORDINATE_SYSTEM,DIMENSION,ERR,ERROR,*) + SUBROUTINE COORDINATE_SYSTEM_DIMENSION_SET(COORDINATE_SYSTEM,DIMENSION,err,error,*) !Argument variables TYPE(COORDINATE_SYSTEM_TYPE), POINTER :: COORDINATE_SYSTEM !=1.AND.DIMENSION<=3) THEN COORDINATE_SYSTEM%NUMBER_OF_DIMENSIONS=DIMENSION ELSE - CALL FlagError("Invalid number of dimensions.",ERR,ERROR,*999) + CALL FlagError("Invalid number of dimensions.",err,error,*999) ENDIF CASE(COORDINATE_CYLINDRICAL_POLAR_TYPE) IF(DIMENSION>=2.AND.DIMENSION<=3) THEN COORDINATE_SYSTEM%NUMBER_OF_DIMENSIONS=DIMENSION ELSE - CALL FlagError("Invalid number of dimensions.",ERR,ERROR,*999) + CALL FlagError("Invalid number of dimensions.",err,error,*999) ENDIF CASE(COORDINATE_SPHERICAL_POLAR_TYPE) IF(DIMENSION==3) THEN COORDINATE_SYSTEM%NUMBER_OF_DIMENSIONS=DIMENSION ELSE - CALL FlagError("Invalid number of dimensions.",ERR,ERROR,*999) + CALL FlagError("Invalid number of dimensions.",err,error,*999) ENDIF CASE(COORDINATE_PROLATE_SPHEROIDAL_TYPE) IF(DIMENSION==3) THEN COORDINATE_SYSTEM%NUMBER_OF_DIMENSIONS=DIMENSION ELSE - CALL FlagError("Invalid number of dimensions.",ERR,ERROR,*999) + CALL FlagError("Invalid number of dimensions.",err,error,*999) ENDIF CASE(COORDINATE_OBLATE_SPHEROIDAL_TYPE) IF(DIMENSION==3) THEN COORDINATE_SYSTEM%NUMBER_OF_DIMENSIONS=DIMENSION ELSE - CALL FlagError("Invalid number of dimensions.",ERR,ERROR,*999) + CALL FlagError("Invalid number of dimensions.",err,error,*999) ENDIF CASE DEFAULT - CALL FlagError("Invalid coordinate system type.",ERR,ERROR,*999) + CALL FlagError("Invalid coordinate system type.",err,error,*999) END SELECT ENDIF ELSE - CALL FlagError("Coordinate system is not associated.",ERR,ERROR,*999) + CALL FlagError("Coordinate system is not associated.",err,error,*999) ENDIF EXITS("COORDINATE_SYSTEM_DIMENSION_SET") RETURN -999 ERRORSEXITS("COORDINATE_SYSTEM_DIMENSION_SET",ERR,ERROR) +999 ERRORSEXITS("COORDINATE_SYSTEM_DIMENSION_SET",err,error) RETURN 1 END SUBROUTINE COORDINATE_SYSTEM_DIMENSION_SET @@ -1374,45 +1374,45 @@ END SUBROUTINE COORDINATE_SYSTEM_DIMENSION_SET ! !>Sets/changes the focus of a coordinate system. \see OPENCMISS::CMISSCoordinateSystemFocusSet - SUBROUTINE COORDINATE_SYSTEM_FOCUS_SET(COORDINATE_SYSTEM,FOCUS,ERR,ERROR,*) + SUBROUTINE COORDINATE_SYSTEM_FOCUS_SET(COORDINATE_SYSTEM,FOCUS,err,error,*) !Argument variables TYPE(COORDINATE_SYSTEM_TYPE), POINTER :: COORDINATE_SYSTEM !ZERO_TOLERANCE) THEN COORDINATE_SYSTEM%FOCUS=FOCUS ELSE - CALL FlagError("Focus is less than zero.",ERR,ERROR,*999) + CALL FlagError("Focus is less than zero.",err,error,*999) ENDIF CASE(COORDINATE_OBLATE_SPHEROIDAL_TYPE) IF(FOCUS>ZERO_TOLERANCE) THEN COORDINATE_SYSTEM%FOCUS=FOCUS ELSE - CALL FlagError("Focus is less than zero.",ERR,ERROR,*999) + CALL FlagError("Focus is less than zero.",err,error,*999) ENDIF CASE DEFAULT - CALL FlagError("Invalid coordinate system type.",ERR,ERROR,*999) + CALL FlagError("Invalid coordinate system type.",err,error,*999) END SELECT ENDIF ELSE - CALL FlagError("Coordinate system is not associated.",ERR,ERROR,*999) + CALL FlagError("Coordinate system is not associated.",err,error,*999) ENDIF EXITS("COORDINATE_SYSTEM_FOCUS_SET") RETURN -999 ERRORSEXITS("COORDINATE_SYSTEM_FOCUS_SET",ERR,ERROR) +999 ERRORSEXITS("COORDINATE_SYSTEM_FOCUS_SET",err,error) RETURN 1 END SUBROUTINE COORDINATE_SYSTEM_FOCUS_SET @@ -1492,20 +1492,20 @@ END SUBROUTINE Coordinates_RadialInterpolationTypeSet ! !>Sets/changes the type of a coordinate system. \see OPENCMISS::CMISSCoordinateSystemTypeSet - SUBROUTINE COORDINATE_SYSTEM_TYPE_SET(COORDINATE_SYSTEM,TYPE,ERR,ERROR,*) + SUBROUTINE COORDINATE_SYSTEM_TYPE_SET(COORDINATE_SYSTEM,TYPE,err,error,*) !Argument variables TYPE(COORDINATE_SYSTEM_TYPE), POINTER :: COORDINATE_SYSTEM !Returns the origin of a coordinate system. \see OPENCMISS::CMISSCoordinateSystemOriginGet - SUBROUTINE COORDINATE_SYSTEM_ORIGIN_GET(COORDINATE_SYSTEM,ORIGIN,ERR,ERROR,*) + SUBROUTINE COORDINATE_SYSTEM_ORIGIN_GET(COORDINATE_SYSTEM,ORIGIN,err,error,*) !Argument variables TYPE(COORDINATE_SYSTEM_TYPE), POINTER :: COORDINATE_SYSTEM !=3) THEN ORIGIN(1:3)=COORDINATE_SYSTEM%ORIGIN ELSE - CALL FlagError("The origin must have >= 3 components.",ERR,ERROR,*999) + CALL FlagError("The origin must have >= 3 components.",err,error,*999) ENDIF ELSE - CALL FlagError("Coordinate system has not been finished.",ERR,ERROR,*999) + CALL FlagError("Coordinate system has not been finished.",err,error,*999) ENDIF ELSE - CALL FlagError("Coordinate system is not associated.",ERR,ERROR,*999) + CALL FlagError("Coordinate system is not associated.",err,error,*999) ENDIF EXITS("COORDINATE_SYSTEM_ORIGIN_GET") RETURN -999 ERRORSEXITS("COORDINATE_SYSTEM_ORIGIN_GET",ERR,ERROR) +999 ERRORSEXITS("COORDINATE_SYSTEM_ORIGIN_GET",err,error) RETURN 1 END SUBROUTINE COORDINATE_SYSTEM_ORIGIN_GET @@ -1574,34 +1574,34 @@ END SUBROUTINE COORDINATE_SYSTEM_ORIGIN_GET ! !>Sets/changes the origin of a coordinate system. \see OPENCMISS::CMISSCoordinateSystemOriginSet - SUBROUTINE COORDINATE_SYSTEM_ORIGIN_SET(COORDINATE_SYSTEM,ORIGIN,ERR,ERROR,*) + SUBROUTINE COORDINATE_SYSTEM_ORIGIN_SET(COORDINATE_SYSTEM,ORIGIN,err,error,*) !Argument variables TYPE(COORDINATE_SYSTEM_TYPE), POINTER :: COORDINATE_SYSTEM !Returns the orientation of a coordinate system. \see OPENCMISS::CMISSCoordinateSystemOrientationSets/changesGet - SUBROUTINE COORDINATE_SYSTEM_ORIENTATION_GET(COORDINATE_SYSTEM,ORIENTATION,ERR,ERROR,*) + SUBROUTINE COORDINATE_SYSTEM_ORIENTATION_GET(COORDINATE_SYSTEM,ORIENTATION,err,error,*) !Argument variables TYPE(COORDINATE_SYSTEM_TYPE), POINTER :: COORDINATE_SYSTEM !=3.AND.SIZE(ORIENTATION,2)>=3) THEN ORIENTATION(1:3,1:3)=COORDINATE_SYSTEM%ORIENTATION ELSE - CALL FlagError("The orientation matrix must have >= 3x3 components.",ERR,ERROR,*999) + CALL FlagError("The orientation matrix must have >= 3x3 components.",err,error,*999) ENDIF ELSE - CALL FlagError("Coordinate system has not been finished.",ERR,ERROR,*999) + CALL FlagError("Coordinate system has not been finished.",err,error,*999) ENDIF ELSE - CALL FlagError("Coordinate system is not associated.",ERR,ERROR,*999) + CALL FlagError("Coordinate system is not associated.",err,error,*999) ENDIF EXITS("COORDINATE_SYSTEM_ORIENTATION_GET") RETURN -999 ERRORSEXITS("COORDINATE_SYSTEM_ORIENTATION_GET",ERR,ERROR) +999 ERRORSEXITS("COORDINATE_SYSTEM_ORIENTATION_GET",err,error) RETURN 1 END SUBROUTINE COORDINATE_SYSTEM_ORIENTATION_GET @@ -1646,35 +1646,35 @@ END SUBROUTINE COORDINATE_SYSTEM_ORIENTATION_GET ! !>Sets/changes the orientation of a coordinate system. \see OPENCMISS::CMISSCoordinateSystemOrientationSet - SUBROUTINE COORDINATE_SYSTEM_ORIENTATION_SET(COORDINATE_SYSTEM,ORIENTATION,ERR,ERROR,*) + SUBROUTINE COORDINATE_SYSTEM_ORIENTATION_SET(COORDINATE_SYSTEM,ORIENTATION,err,error,*) !Argument variables TYPE(COORDINATE_SYSTEM_TYPE), POINTER :: COORDINATE_SYSTEM !- Focus: 1.0 !>- Origin: (0.0,0.0,0.0) !>- Oritention: ((1.0,0.0,0.0),(0.0,1.0,0.0),(0.0,0.0,1.0)) - SUBROUTINE COORDINATE_SYSTEM_CREATE_START(USER_NUMBER,COORDINATE_SYSTEM,ERR,ERROR,*) + SUBROUTINE COORDINATE_SYSTEM_CREATE_START(USER_NUMBER,coordinateSystems,COORDINATE_SYSTEM,err,error,*) !Argument variables INTEGER(INTG), INTENT(IN) :: USER_NUMBER !coordinateSystems NEW_COORDINATE_SYSTEM%COORDINATE_SYSTEM_FINISHED=.FALSE. NEW_COORDINATE_SYSTEM%TYPE=COORDINATE_RECTANGULAR_CARTESIAN_TYPE NEW_COORDINATE_SYSTEM%RADIAL_INTERPOLATION_TYPE=COORDINATE_NO_RADIAL_INTERPOLATION_TYPE NEW_COORDINATE_SYSTEM%NUMBER_OF_DIMENSIONS=3 NEW_COORDINATE_SYSTEM%FOCUS=1.0_DP - NEW_COORDINATE_SYSTEM%ORIGIN=(/0.0_DP,0.0_DP,0.0_DP/) + NEW_COORDINATE_SYSTEM%ORIGIN=[0.0_DP,0.0_DP,0.0_DP] NEW_COORDINATE_SYSTEM%ORIENTATION=RESHAPE(& - & (/1.0_DP,0.0_DP,0.0_DP, & + & [1.0_DP,0.0_DP,0.0_DP, & & 0.0_DP,1.0_DP,0.0_DP, & - & 0.0_DP,0.0_DP,1.0_DP/), & - & (/3,3/)) + & 0.0_DP,0.0_DP,1.0_DP], & + & [3,3]) - ALLOCATE(NEW_COORDINATE_SYSTEMS(coordinateSystems%numberOfCoordinateSystems+1),STAT=ERR) - IF(ERR/=0) CALL FlagError("Could not allocate new coordinate systems.",ERR,ERROR,*999) + ALLOCATE(NEW_COORDINATE_SYSTEMS(coordinateSystems%numberOfCoordinateSystems+1),STAT=err) + IF(err/=0) CALL FlagError("Could not allocate new coordinate systems.",err,error,*999) DO coord_system_idx=1,coordinateSystems%numberOfCoordinateSystems NEW_COORDINATE_SYSTEMS(coord_system_idx)%ptr=>coordinateSystems%coordinateSystems(coord_system_idx)%ptr ENDDO !coord_system_idx @@ -1754,7 +1759,7 @@ SUBROUTINE COORDINATE_SYSTEM_CREATE_START(USER_NUMBER,COORDINATE_SYSTEM,ERR,ERRO 999 IF(ASSOCIATED(NEW_COORDINATE_SYSTEM)) DEALLOCATE(NEW_COORDINATE_SYSTEM) IF(ASSOCIATED(NEW_COORDINATE_SYSTEMS)) DEALLOCATE(NEW_COORDINATE_SYSTEMS) NULLIFY(COORDINATE_SYSTEM) -998 ERRORSEXITS("COORDINATE_SYSTEM_CREATE_START",ERR,ERROR) +998 ERRORSEXITS("COORDINATE_SYSTEM_CREATE_START",err,error) RETURN 1 END SUBROUTINE COORDINATE_SYSTEM_CREATE_START @@ -1763,40 +1768,43 @@ END SUBROUTINE COORDINATE_SYSTEM_CREATE_START ! !>Finishes the creation of a new coordinate system. - SUBROUTINE COORDINATE_SYSTEM_CREATE_FINISH(COORDINATE_SYSTEM,ERR,ERROR,*) + SUBROUTINE COORDINATE_SYSTEM_CREATE_FINISH(COORDINATE_SYSTEM,err,error,*) !Argument variables TYPE(COORDINATE_SYSTEM_TYPE), POINTER :: COORDINATE_SYSTEM !Destroys a coordinate system. - SUBROUTINE COORDINATE_SYSTEM_DESTROY(COORDINATE_SYSTEM,ERR,ERROR,*) + SUBROUTINE COORDINATE_SYSTEM_DESTROY(COORDINATE_SYSTEM,err,error,*) !Argument variables TYPE(COORDINATE_SYSTEM_TYPE), POINTER :: COORDINATE_SYSTEM !NEW_COORDINATE_SYSTEMS coordinateSystems%numberOfCoordinateSystems=coordinateSystems%numberOfCoordinateSystems-1 ELSE DEALLOCATE(NEW_COORDINATE_SYSTEMS) - CALL FlagError("Coordinate system number to destroy does not exist.",ERR,ERROR,*999) + CALL FlagError("Coordinate system number to destroy does not exist.",err,error,*999) ENDIF ENDIF ELSE - CALL FlagError("Coordinate system is not associated.",ERR,ERROR,*999) + CALL FlagError("Coordinate system is not associated.",err,error,*999) ENDIF EXITS("COORDINATE_SYSTEM_DESTROY") RETURN -999 ERRORSEXITS("COORDINATE_SYSTEM_DESTROY",ERR,ERROR) +999 ERRORSEXITS("COORDINATE_SYSTEM_DESTROY",err,error) RETURN 1 END SUBROUTINE COORDINATE_SYSTEM_DESTROY @@ -1859,33 +1870,33 @@ END SUBROUTINE COORDINATE_SYSTEM_DESTROY ! !>Calculates DX(:)/DZ(I) at X, where Z(I) are rectangular cartesian and X(:) are curvilinear coordinates defined by COORDINATE_SYSTEM for double precision coordinates. - FUNCTION DXZ_DP(COORDINATE_SYSTEM,I,X,ERR,ERROR) + FUNCTION DXZ_DP(COORDINATE_SYSTEM,I,X,err,error) !Argument variables TYPE(COORDINATE_SYSTEM_TYPE), INTENT(IN) :: COORDINATE_SYSTEM INTEGER(INTG), INTENT(IN) :: I REAL(DP), INTENT(IN) :: X(:) - INTEGER(INTG), INTENT(OUT) :: ERR - TYPE(VARYING_STRING), INTENT(OUT) :: ERROR + INTEGER(INTG), INTENT(OUT) :: err + TYPE(VARYING_STRING), INTENT(OUT) :: error !Function variable REAL(DP) :: DXZ_DP(SIZE(X,1)) !Local variables REAL(DP) :: RD,FOCUS - ENTERS("DXZ_DP",ERR,ERROR,*999) + ENTERS("DXZ_DP",err,error,*999) DXZ_DP=0.0_DP IF(SIZE(X,1)0.AND.I<=COORDINATE_SYSTEM%NUMBER_OF_DIMENSIONS) THEN DXZ_DP(I)=1.0_DP ELSE - CALL FlagError("Invalid i value",ERR,ERROR,*999) + CALL FlagError("Invalid i value",err,error,*999) ENDIF CASE(COORDINATE_CYLINDRICAL_POLAR_TYPE) SELECT CASE(COORDINATE_SYSTEM%NUMBER_OF_DIMENSIONS) @@ -1898,7 +1909,7 @@ FUNCTION DXZ_DP(COORDINATE_SYSTEM,I,X,ERR,ERROR) DXZ_DP(1)=SIN(X(2)) DXZ_DP(2)=COS(X(2))/X(1) CASE DEFAULT - CALL FlagError("Invalid i value",ERR,ERROR,*999) + CALL FlagError("Invalid i value",err,error,*999) END SELECT CASE(3) SELECT CASE(I) @@ -1915,10 +1926,10 @@ FUNCTION DXZ_DP(COORDINATE_SYSTEM,I,X,ERR,ERROR) DXZ_DP(2)=0.0_DP DXZ_DP(3)=1.0_DP CASE DEFAULT - CALL FlagError("Invalid i value",ERR,ERROR,*999) + CALL FlagError("Invalid i value",err,error,*999) END SELECT CASE DEFAULT - CALL FlagError("Invalid number of coordinates",ERR,ERROR,*999) + CALL FlagError("Invalid number of coordinates",err,error,*999) END SELECT CASE(COORDINATE_SPHERICAL_POLAR_TYPE) IF(COORDINATE_SYSTEM%NUMBER_OF_DIMENSIONS==3) THEN @@ -1936,10 +1947,10 @@ FUNCTION DXZ_DP(COORDINATE_SYSTEM,I,X,ERR,ERROR) DXZ_DP(2)=0.0_DP DXZ_DP(3)=COS(X(3))/X(1) CASE DEFAULT - CALL FlagError("Invalid i value",ERR,ERROR,*999) + CALL FlagError("Invalid i value",err,error,*999) END SELECT ELSE - CALL FlagError("Invalid number of coordinates",ERR,ERROR,*999) + CALL FlagError("Invalid number of coordinates",err,error,*999) ENDIF CASE(COORDINATE_PROLATE_SPHEROIDAL_TYPE) IF(COORDINATE_SYSTEM%NUMBER_OF_DIMENSIONS==3) THEN @@ -1959,20 +1970,20 @@ FUNCTION DXZ_DP(COORDINATE_SYSTEM,I,X,ERR,ERROR) DXZ_DP(2)=SINH(X(1))*COS(X(2))*SIN(X(3))/RD DXZ_DP(3)=COS(X(3))/(FOCUS*SINH(X(1))*SIN(X(2))) CASE DEFAULT - CALL FlagError("Invalid i value",ERR,ERROR,*999) + CALL FlagError("Invalid i value",err,error,*999) END SELECT ELSE - CALL FlagError("Invalid number of coordinates",ERR,ERROR,*999) + CALL FlagError("Invalid number of coordinates",err,error,*999) ENDIF CASE(COORDINATE_OBLATE_SPHEROIDAL_TYPE) - CALL FlagError("Not implemented",ERR,ERROR,*999) + CALL FlagError("Not implemented",err,error,*999) CASE DEFAULT - CALL FlagError("Invalid coordinate type",ERR,ERROR,*999) + CALL FlagError("Invalid coordinate type",err,error,*999) END SELECT EXITS("DXZ_DP") RETURN -999 ERRORSEXITS("DXZ_DP",ERR,ERROR) +999 ERRORSEXITS("DXZ_DP",err,error) RETURN END FUNCTION DXZ_DP @@ -1991,7 +2002,7 @@ END FUNCTION DXZ_DP !================================================================================================================================ ! - FUNCTION D2ZX_DP(COORDINATE_SYSTEM,I,J,X,ERR,ERROR) + FUNCTION D2ZX_DP(COORDINATE_SYSTEM,I,J,X,err,error) !#### Function: D2ZX_DP !### Type: REAL(DP)(SIZE(X,1)) @@ -2005,20 +2016,20 @@ FUNCTION D2ZX_DP(COORDINATE_SYSTEM,I,J,X,ERR,ERROR) TYPE(COORDINATE_SYSTEM_TYPE), INTENT(IN) :: COORDINATE_SYSTEM INTEGER(INTG), INTENT(IN) :: I,J REAL(DP), INTENT(IN) :: X(:) - INTEGER(INTG), INTENT(OUT) :: ERR - TYPE(VARYING_STRING), INTENT(OUT) :: ERROR + INTEGER(INTG), INTENT(OUT) :: err + TYPE(VARYING_STRING), INTENT(OUT) :: error !Function variable REAL(DP) :: D2ZX_DP(SIZE(X,1)) !Local variables REAL(DP) :: FOCUS - ENTERS("D2ZX_DP",ERR,ERROR,*999) + ENTERS("D2ZX_DP",err,error,*999) D2ZX_DP=0.0_DP IF(SIZE(X,1)0.AND.I<=COORDINATE_SYSTEM%NUMBER_OF_DIMENSIONS) THEN DZX_DP(I)=1.0_DP ELSE - CALL FlagError("Invalid i value",ERR,ERROR,*999) + CALL FlagError("Invalid i value",err,error,*999) ENDIF CASE(COORDINATE_CYLINDRICAL_POLAR_TYPE) SELECT CASE(COORDINATE_SYSTEM%NUMBER_OF_DIMENSIONS) @@ -2306,7 +2317,7 @@ FUNCTION DZX_DP(COORDINATE_SYSTEM,I,X,ERR,ERROR) DZX_DP(1)=-X(1)*SIN(X(2)) DZX_DP(2)=X(1)*COS(X(2)) CASE DEFAULT - CALL FlagError("Invalid i value",ERR,ERROR,*999) + CALL FlagError("Invalid i value",err,error,*999) END SELECT CASE(3) SELECT CASE(I) @@ -2323,10 +2334,10 @@ FUNCTION DZX_DP(COORDINATE_SYSTEM,I,X,ERR,ERROR) DZX_DP(2)=0.0_DP DZX_DP(3)=1.0_DP CASE DEFAULT - CALL FlagError("Invalid i value",ERR,ERROR,*999) + CALL FlagError("Invalid i value",err,error,*999) END SELECT CASE DEFAULT - CALL FlagError("Invalid number of coordinates",ERR,ERROR,*999) + CALL FlagError("Invalid number of coordinates",err,error,*999) END SELECT CASE(COORDINATE_SPHERICAL_POLAR_TYPE) IF(COORDINATE_SYSTEM%NUMBER_OF_DIMENSIONS==3) THEN @@ -2344,10 +2355,10 @@ FUNCTION DZX_DP(COORDINATE_SYSTEM,I,X,ERR,ERROR) DZX_DP(2)=-X(1)*SIN(X(2))*SIN(X(3)) DZX_DP(3)=X(1)*COS(X(3)) CASE DEFAULT - CALL FlagError("Invalid i value",ERR,ERROR,*999) + CALL FlagError("Invalid i value",err,error,*999) END SELECT ELSE - CALL FlagError("Invalid number of coordinates",ERR,ERROR,*999) + CALL FlagError("Invalid number of coordinates",err,error,*999) ENDIF CASE(COORDINATE_PROLATE_SPHEROIDAL_TYPE) IF(COORDINATE_SYSTEM%NUMBER_OF_DIMENSIONS==3) THEN @@ -2366,10 +2377,10 @@ FUNCTION DZX_DP(COORDINATE_SYSTEM,I,X,ERR,ERROR) DZX_DP(2)=-FOCUS*SINH(X(1))*SIN(X(2))*SIN(X(3)) DZX_DP(3)=FOCUS*SINH(X(1))*SIN(X(2))*COS(X(3)) CASE DEFAULT - CALL FlagError("Invalid i value",ERR,ERROR,*999) + CALL FlagError("Invalid i value",err,error,*999) END SELECT ELSE - CALL FlagError("Invalid number of coordinates",ERR,ERROR,*999) + CALL FlagError("Invalid number of coordinates",err,error,*999) ENDIF CASE(COORDINATE_OBLATE_SPHEROIDAL_TYPE) IF(COORDINATE_SYSTEM%NUMBER_OF_DIMENSIONS==3) THEN @@ -2388,18 +2399,18 @@ FUNCTION DZX_DP(COORDINATE_SYSTEM,I,X,ERR,ERROR) DZX_DP(2)=0.0_DP DZX_DP(3)=FOCUS*COSH(X(1))*COS(X(2))*COS(X(3)) CASE DEFAULT - CALL FlagError("Invalid i value",ERR,ERROR,*999) + CALL FlagError("Invalid i value",err,error,*999) END SELECT ELSE - CALL FlagError("Invalid number of coordinates",ERR,ERROR,*999) + CALL FlagError("Invalid number of coordinates",err,error,*999) ENDIF CASE DEFAULT - CALL FlagError("Invalid coordinate type",ERR,ERROR,*999) + CALL FlagError("Invalid coordinate type",err,error,*999) END SELECT EXITS("DZX_DP") RETURN -999 ERRORSEXITS("DZX_DP",ERR,ERROR) +999 ERRORSEXITS("DZX_DP",err,error) RETURN END FUNCTION DZX_DP @@ -2422,7 +2433,7 @@ END FUNCTION DZX_DP ! SUBROUTINE COORDINATE_DERIVATIVE_CONVERT_TO_RC_DP(COORDINATE_SYSTEM,PART_DERIV_TYPE,X,Z,& - & ERR,ERROR,*) + & err,error,*) !#### Subroutine: COORDINATE_DERIVATIVE_CONVERT_TO_RC_DP !### Description: @@ -2438,19 +2449,19 @@ SUBROUTINE COORDINATE_DERIVATIVE_CONVERT_TO_RC_DP(COORDINATE_SYSTEM,PART_DERIV_T INTEGER(INTG), INTENT(IN) :: PART_DERIV_TYPE REAL(DP), INTENT(IN) :: X(:,:) REAL(DP), INTENT(OUT) :: Z(:) - INTEGER(INTG), INTENT(OUT) :: ERR - TYPE(VARYING_STRING), INTENT(OUT) :: ERROR + INTEGER(INTG), INTENT(OUT) :: err + TYPE(VARYING_STRING), INTENT(OUT) :: error !Local variables REAL(DP) :: FOCUS - ENTERS("COORDINATE_DERIVATIVE_CONVERT_TO_RC_DP",ERR,ERROR,*999) + ENTERS("COORDINATE_DERIVATIVE_CONVERT_TO_RC_DP",err,error,*999) !!TODO: change all second index X(:,?) numbers to their apropriate constant !!as defined in constants e.g. X(1,2) == X(1,PART_DERIV_S1) IF(SIZE(X,1)=PART_DERIV_TYPE) THEN Z=X(:,PART_DERIV_TYPE) ELSE - CALL FlagError("Invalid derivative type",ERR,ERROR,*999) + CALL FlagError("Invalid derivative type",err,error,*999) ENDIF CASE(COORDINATE_CYLINDRICAL_POLAR_TYPE) SELECT CASE(PART_DERIV_TYPE) CASE(NO_PART_DERIV) - Z=COORDINATE_CONVERT_TO_RC(COORDINATE_SYSTEM,X(:,1),ERR,ERROR) - IF(ERR/=0) GOTO 999 + Z=COORDINATE_CONVERT_TO_RC(COORDINATE_SYSTEM,X(:,1),err,error) + IF(err/=0) GOTO 999 CASE(PART_DERIV_S1) IF(SIZE(X,2)>=2) THEN SELECT CASE(COORDINATE_SYSTEM%NUMBER_OF_DIMENSIONS) @@ -2476,13 +2487,13 @@ SUBROUTINE COORDINATE_DERIVATIVE_CONVERT_TO_RC_DP(COORDINATE_SYSTEM,PART_DERIV_T Z(2)=SIN(X(2,1))*X(1,2)+X(1,1)*COS(X(2,1))*X(2,2) !d(y)/d(s1) Z(3)=X(3,2) !d(z)/d(s1) CASE DEFAULT - CALL FlagError("Invalid number of coordinates",ERR,ERROR,*999) + CALL FlagError("Invalid number of coordinates",err,error,*999) END SELECT ELSE - CALL FlagError("Not enough X derivatives supplied",ERR,ERROR,*999) + CALL FlagError("Not enough X derivatives supplied",err,error,*999) ENDIF CASE(PART_DERIV_S1_S1) - CALL FlagError("Not implemented",ERR,ERROR,*999) + CALL FlagError("Not implemented",err,error,*999) CASE(PART_DERIV_S2) IF(SIZE(X,2)>=4) THEN SELECT CASE(COORDINATE_SYSTEM%NUMBER_OF_DIMENSIONS) @@ -2494,13 +2505,13 @@ SUBROUTINE COORDINATE_DERIVATIVE_CONVERT_TO_RC_DP(COORDINATE_SYSTEM,PART_DERIV_T Z(2)=SIN(X(2,1))*X(1,4)+X(1,1)*COS(X(2,1))*X(2,4) !d(y)/d(s2) Z(3)=X(3,4) !d(z)/d(s2) CASE DEFAULT - CALL FlagError("Invalid number of coordinates",ERR,ERROR,*999) + CALL FlagError("Invalid number of coordinates",err,error,*999) END SELECT ELSE - CALL FlagError("Not enough X derivatives supplied",ERR,ERROR,*999) + CALL FlagError("Not enough X derivatives supplied",err,error,*999) ENDIF CASE(PART_DERIV_S2_S2) - CALL FlagError("Not implemented",ERR,ERROR,*999) + CALL FlagError("Not implemented",err,error,*999) CASE(PART_DERIV_S1_S2) IF(SIZE(X,2)>=6) THEN SELECT CASE(SIZE(X,1)) @@ -2520,10 +2531,10 @@ SUBROUTINE COORDINATE_DERIVATIVE_CONVERT_TO_RC_DP(COORDINATE_SYSTEM,PART_DERIV_T & X(2,2)*X(2,4)+X(1,1)*COS(X(2,1))*X(2,6)) !d2(y)/d(s1)d(s2) Z(3)=X(3,6) !d2(z)/d(s1)d(s2) CASE DEFAULT - CALL FlagError("Invalid number of coordinates",ERR,ERROR,*999) + CALL FlagError("Invalid number of coordinates",err,error,*999) END SELECT ELSE - CALL FlagError("Not enough X derivatives supplied",ERR,ERROR,*999) + CALL FlagError("Not enough X derivatives supplied",err,error,*999) ENDIF CASE(PART_DERIV_S3) IF(SIZE(X,2)>=7) THEN @@ -2536,13 +2547,13 @@ SUBROUTINE COORDINATE_DERIVATIVE_CONVERT_TO_RC_DP(COORDINATE_SYSTEM,PART_DERIV_T Z(2)=SIN(X(2,1))*X(1,7)+X(1,1)*COS(X(2,1))*X(2,7) !d(y)/d(s3) Z(3)=X(3,7) !d(z)/d(s3) CASE DEFAULT - CALL FlagError("Invalid number of coordinates",ERR,ERROR,*999) + CALL FlagError("Invalid number of coordinates",err,error,*999) END SELECT ELSE - CALL FlagError("Not enough X derivatives supplied",ERR,ERROR,*999) + CALL FlagError("Not enough X derivatives supplied",err,error,*999) ENDIF CASE(PART_DERIV_S3_S3) - CALL FlagError("Not implemented",ERR,ERROR,*999) + CALL FlagError("Not implemented",err,error,*999) CASE(PART_DERIV_S1_S3) IF(SIZE(X,2)>=9) THEN SELECT CASE(COORDINATE_SYSTEM%NUMBER_OF_DIMENSIONS) @@ -2558,10 +2569,10 @@ SUBROUTINE COORDINATE_DERIVATIVE_CONVERT_TO_RC_DP(COORDINATE_SYSTEM,PART_DERIV_T & X(2,2)*X(2,7)+X(1,1)*COS(X(2,1))*X(2,9)) !d2(y)/d(s1)d(s3) Z(3)=X(3,9) !d2(z)/d(s1)d(s3) CASE DEFAULT - CALL FlagError("Invalid number of coordinates",ERR,ERROR,*999) + CALL FlagError("Invalid number of coordinates",err,error,*999) END SELECT ELSE - CALL FlagError("Not enough X derivatives supplied",ERR,ERROR,*999) + CALL FlagError("Not enough X derivatives supplied",err,error,*999) ENDIF CASE(PART_DERIV_S2_S3) IF(SIZE(X,2)>=10) THEN @@ -2578,10 +2589,10 @@ SUBROUTINE COORDINATE_DERIVATIVE_CONVERT_TO_RC_DP(COORDINATE_SYSTEM,PART_DERIV_T & X(2,4)*X(2,7)+X(1,1)*COS(X(2,1))*X(2,10)) !d2(y)/d(s2)d(s3) Z(3)=X(3,10) !d2(z)/d(s2)d(s3) CASE DEFAULT - CALL FlagError("Invalid number of coordinates",ERR,ERROR,*999) + CALL FlagError("Invalid number of coordinates",err,error,*999) END SELECT ELSE - CALL FlagError("Not enough X derivatives supplied",ERR,ERROR,*999) + CALL FlagError("Not enough X derivatives supplied",err,error,*999) ENDIF CASE(PART_DERIV_S1_S2_S3) IF(SIZE(X,2)>=11) THEN @@ -2612,37 +2623,37 @@ SUBROUTINE COORDINATE_DERIVATIVE_CONVERT_TO_RC_DP(COORDINATE_SYSTEM,PART_DERIV_T & COS(X(2,1))*X(2,11) !d3(y)/d(s1)d(s2)d(s3) Z(3)=X(3,11) !d3(z)/d(s1)d(s2)d(s3) CASE DEFAULT - CALL FlagError("Invalid number of coordinates",ERR,ERROR,*999) + CALL FlagError("Invalid number of coordinates",err,error,*999) END SELECT ELSE - CALL FlagError("Not enough X derivatives supplied",ERR,ERROR,*999) + CALL FlagError("Not enough X derivatives supplied",err,error,*999) ENDIF CASE DEFAULT - CALL FlagError("Invalid partial derivative type",ERR,ERROR,*999) + CALL FlagError("Invalid partial derivative type",err,error,*999) END SELECT CASE(COORDINATE_SPHERICAL_POLAR_TYPE) IF(COORDINATE_SYSTEM%NUMBER_OF_DIMENSIONS==3) THEN SELECT CASE(PART_DERIV_TYPE) CASE(NO_PART_DERIV) - Z=COORDINATE_CONVERT_TO_RC(COORDINATE_SYSTEM,X(:,1),ERR,ERROR) - IF(ERR/=0) GOTO 999 + Z=COORDINATE_CONVERT_TO_RC(COORDINATE_SYSTEM,X(:,1),err,error) + IF(err/=0) GOTO 999 CASE(PART_DERIV_S1,PART_DERIV_S1_S1,PART_DERIV_S2,PART_DERIV_S2_S2,& & PART_DERIV_S1_S2,PART_DERIV_S3,PART_DERIV_S3_S3,& & PART_DERIV_S1_S3,PART_DERIV_S2_S3,PART_DERIV_S1_S2_S3) - CALL FlagError("Not implemented",ERR,ERROR,*999) + CALL FlagError("Not implemented",err,error,*999) CASE DEFAULT - CALL FlagError("Invalid partial derivative type",ERR,ERROR,*999) + CALL FlagError("Invalid partial derivative type",err,error,*999) END SELECT ELSE - CALL FlagError("Invalid number of coordinates",ERR,ERROR,*999) + CALL FlagError("Invalid number of coordinates",err,error,*999) ENDIF CASE(COORDINATE_PROLATE_SPHEROIDAL_TYPE) IF(COORDINATE_SYSTEM%NUMBER_OF_DIMENSIONS==3) THEN FOCUS=COORDINATE_SYSTEM%FOCUS SELECT CASE(PART_DERIV_TYPE) CASE(NO_PART_DERIV) - Z=COORDINATE_CONVERT_TO_RC(COORDINATE_SYSTEM,X(:,1),ERR,ERROR) - IF(ERR/=0) GOTO 999 + Z=COORDINATE_CONVERT_TO_RC(COORDINATE_SYSTEM,X(:,1),err,error) + IF(err/=0) GOTO 999 CASE(PART_DERIV_S1) IF(SIZE(X,2)>=2) THEN Z(1)=FOCUS*SINH(X(1,1))*COS(X(2,1))*X(1,2)-& @@ -2656,10 +2667,10 @@ SUBROUTINE COORDINATE_DERIVATIVE_CONVERT_TO_RC_DP(COORDINATE_SYSTEM,PART_DERIV_T & FOCUS*SINH(X(1,1))*SIN(X(2,1))*COS(X(3,1))*& & X(3,2) !d(z)/d(s1) ELSE - CALL FlagError("Invalid derivative type",ERR,ERROR,*999) + CALL FlagError("Invalid derivative type",err,error,*999) ENDIF CASE(PART_DERIV_S1_S1) - CALL FlagError("Not implemented",ERR,ERROR,*999) + CALL FlagError("Not implemented",err,error,*999) CASE(PART_DERIV_S2) IF(SIZE(X,2)>=4) THEN Z(1)=FOCUS*SINH(X(1,1))*COS(X(2,1))*X(1,4)-& @@ -2674,10 +2685,10 @@ SUBROUTINE COORDINATE_DERIVATIVE_CONVERT_TO_RC_DP(COORDINATE_SYSTEM,PART_DERIV_T & X(3,4) !d(z)/d(s2) ELSE CALL FlagError("Not enough X derivatives supplied",& - & ERR,ERROR,*999) + & err,error,*999) ENDIF CASE(PART_DERIV_S2_S2) - CALL FlagError("Not implemented",ERR,ERROR,*999) + CALL FlagError("Not implemented",err,error,*999) CASE(PART_DERIV_S1_S2) IF(SIZE(X,2)>=6) THEN Z(1)=FOCUS*(SINH(X(1,1))*COS(X(2,1))*X(1,6)+& @@ -2714,7 +2725,7 @@ SUBROUTINE COORDINATE_DERIVATIVE_CONVERT_TO_RC_DP(COORDINATE_SYSTEM,PART_DERIV_T & X(3,4))) !d2(z)/d(s1)d(s2) ELSE CALL FlagError("Not enough X derivatives supplied",& - & ERR,ERROR,*999) + & err,error,*999) ENDIF CASE(PART_DERIV_S3) IF(SIZE(X,2)>=7) THEN @@ -2730,10 +2741,10 @@ SUBROUTINE COORDINATE_DERIVATIVE_CONVERT_TO_RC_DP(COORDINATE_SYSTEM,PART_DERIV_T & X(3,7) !d(z)/d(s3) ELSE CALL FlagError("Not enough X derivatives supplied",& - & ERR,ERROR,*999) + & err,error,*999) ENDIF CASE(PART_DERIV_S3_S3) - CALL FlagError("Not implemented",ERR,ERROR,*999) + CALL FlagError("Not implemented",err,error,*999) CASE(PART_DERIV_S1_S3) IF(SIZE(X,2)>=9) THEN Z(1)=FOCUS*(SINH(X(1,1))*COS(X(2,1))*X(1,9)+& @@ -2770,7 +2781,7 @@ SUBROUTINE COORDINATE_DERIVATIVE_CONVERT_TO_RC_DP(COORDINATE_SYSTEM,PART_DERIV_T & X(3,7))) !d2(z)/d(s1)d(s3) ELSE CALL FlagError("Not enough X derivatives supplied",& - & ERR,ERROR,*999) + & err,error,*999) ENDIF CASE(PART_DERIV_S2_S3) IF(SIZE(X,2)>=10) THEN @@ -2808,7 +2819,7 @@ SUBROUTINE COORDINATE_DERIVATIVE_CONVERT_TO_RC_DP(COORDINATE_SYSTEM,PART_DERIV_T & X(3,7))) !d2(z)/d(s2)d(s3) ELSE CALL FlagError("Not enough X derivatives supplied",& - & ERR,ERROR,*999) + & err,error,*999) ENDIF CASE(PART_DERIV_S1_S2_S3) IF(SIZE(X,2)>=11) THEN @@ -2948,10 +2959,10 @@ SUBROUTINE COORDINATE_DERIVATIVE_CONVERT_TO_RC_DP(COORDINATE_SYSTEM,PART_DERIV_T & X(3,11)) !d3(z)/d(s1)d(s2)d(s3) ELSE CALL FlagError("Not enough X derivatives supplied",& - & ERR,ERROR,*999) + & err,error,*999) ENDIF CASE DEFAULT - CALL FlagError("Invalid partial derivative type",ERR,ERROR,*999) + CALL FlagError("Invalid partial derivative type",err,error,*999) END SELECT ENDIF CASE(COORDINATE_OBLATE_SPHEROIDAL_TYPE) @@ -2959,29 +2970,29 @@ SUBROUTINE COORDINATE_DERIVATIVE_CONVERT_TO_RC_DP(COORDINATE_SYSTEM,PART_DERIV_T FOCUS=COORDINATE_SYSTEM%FOCUS SELECT CASE(PART_DERIV_TYPE) CASE(NO_PART_DERIV) - Z=COORDINATE_CONVERT_TO_RC(COORDINATE_SYSTEM,X(:,1),ERR,ERROR) - IF(ERR/=0) GOTO 999 + Z=COORDINATE_CONVERT_TO_RC(COORDINATE_SYSTEM,X(:,1),err,error) + IF(err/=0) GOTO 999 CASE(PART_DERIV_S1,PART_DERIV_S1_S1,PART_DERIV_S2,PART_DERIV_S2_S2,& & PART_DERIV_S1_S2,PART_DERIV_S3,PART_DERIV_S3_S3,& & PART_DERIV_S1_S3,PART_DERIV_S2_S3,PART_DERIV_S1_S2_S3) - CALL FlagError("Not implemented",ERR,ERROR,*999) + CALL FlagError("Not implemented",err,error,*999) CASE DEFAULT - CALL FlagError("Invalid partial derivative type",ERR,ERROR,*999) + CALL FlagError("Invalid partial derivative type",err,error,*999) END SELECT ELSE - CALL FlagError("Invalid number of coordinates",ERR,ERROR,*999) + CALL FlagError("Invalid number of coordinates",err,error,*999) ENDIF CASE DEFAULT - CALL FlagError("Invalid coordinate type",ERR,ERROR,*999) + CALL FlagError("Invalid coordinate type",err,error,*999) END SELECT ELSE CALL FlagError("The sizes of the vectors X and Z do not match",& - & ERR,ERROR,*999) + & err,error,*999) ENDIF EXITS("COORDINATE_DERIVATIVE_CONVERT_TO_RC_DP") RETURN -999 ERRORSEXITS("COORDINATE_DERIVATIVE_CONVERT_TO_RC_DP",ERR,ERROR) +999 ERRORSEXITS("COORDINATE_DERIVATIVE_CONVERT_TO_RC_DP",err,error) RETURN 1 END SUBROUTINE COORDINATE_DERIVATIVE_CONVERT_TO_RC_DP @@ -2990,7 +3001,7 @@ END SUBROUTINE COORDINATE_DERIVATIVE_CONVERT_TO_RC_DP ! SUBROUTINE COORDINATE_DERIVATIVE_CONVERT_TO_RC_SP(COORDINATE_SYSTEM,PART_DERIV_TYPE,X,Z,& - & ERR,ERROR,*) + & err,error,*) !#### Subroutine: COORDINATE_DERIVATIVE_CONVERT_TO_RC_SP !### Description: @@ -3006,19 +3017,19 @@ SUBROUTINE COORDINATE_DERIVATIVE_CONVERT_TO_RC_SP(COORDINATE_SYSTEM,PART_DERIV_T INTEGER(INTG), INTENT(IN) :: PART_DERIV_TYPE REAL(SP), INTENT(IN) :: X(:,:) REAL(SP), INTENT(OUT) :: Z(:) - INTEGER(INTG), INTENT(OUT) :: ERR - TYPE(VARYING_STRING), INTENT(OUT) :: ERROR + INTEGER(INTG), INTENT(OUT) :: err + TYPE(VARYING_STRING), INTENT(OUT) :: error !Local variables REAL(SP) :: FOCUS - ENTERS("COORDINATE_DERIVATIVE_CONVERT_TO_RC_SP",ERR,ERROR,*999) + ENTERS("COORDINATE_DERIVATIVE_CONVERT_TO_RC_SP",err,error,*999) !!TODO: change all second index X(:,?) numbers to their apropriate constant !!as defined in constants e.g. X(1,2) == X(1,PART_DERIV_S1) IF(SIZE(X,1)=PART_DERIV_TYPE) THEN Z=X(:,PART_DERIV_TYPE) ELSE - CALL FlagError("Invalid partial derivative type",ERR,ERROR,*999) + CALL FlagError("Invalid partial derivative type",err,error,*999) ENDIF CASE(COORDINATE_CYLINDRICAL_POLAR_TYPE) SELECT CASE(PART_DERIV_TYPE) CASE(NO_PART_DERIV) - Z=COORDINATE_CONVERT_TO_RC(COORDINATE_SYSTEM,X(:,1),ERR,ERROR) - IF(ERR/=0) GOTO 999 + Z=COORDINATE_CONVERT_TO_RC(COORDINATE_SYSTEM,X(:,1),err,error) + IF(err/=0) GOTO 999 CASE(PART_DERIV_S1) IF(SIZE(X,2)>=2) THEN SELECT CASE(COORDINATE_SYSTEM%NUMBER_OF_DIMENSIONS) @@ -3044,13 +3055,13 @@ SUBROUTINE COORDINATE_DERIVATIVE_CONVERT_TO_RC_SP(COORDINATE_SYSTEM,PART_DERIV_T Z(2)=SIN(X(2,1))*X(1,2)+X(1,1)*COS(X(2,1))*X(2,2) !d(y)/d(s1) Z(3)=X(3,2) !d(z)/d(s1) CASE DEFAULT - CALL FlagError("Invalid number of coordinates",ERR,ERROR,*999) + CALL FlagError("Invalid number of coordinates",err,error,*999) END SELECT ELSE - CALL FlagError("Not enough X derivatives supplied",ERR,ERROR,*999) + CALL FlagError("Not enough X derivatives supplied",err,error,*999) ENDIF CASE(PART_DERIV_S1_S1) - CALL FlagError("Not implemented",ERR,ERROR,*999) + CALL FlagError("Not implemented",err,error,*999) CASE(PART_DERIV_S2) IF(SIZE(X,2)>=4) THEN SELECT CASE(COORDINATE_SYSTEM%NUMBER_OF_DIMENSIONS) @@ -3062,13 +3073,13 @@ SUBROUTINE COORDINATE_DERIVATIVE_CONVERT_TO_RC_SP(COORDINATE_SYSTEM,PART_DERIV_T Z(2)=SIN(X(2,1))*X(1,4)+X(1,1)*COS(X(2,1))*X(2,4) !d(y)/d(s2) Z(3)=X(3,4) !d(z)/d(s2) CASE DEFAULT - CALL FlagError("Invalid number of coordinates",ERR,ERROR,*999) + CALL FlagError("Invalid number of coordinates",err,error,*999) END SELECT ELSE - CALL FlagError("Not enough X derivatives supplied",ERR,ERROR,*999) + CALL FlagError("Not enough X derivatives supplied",err,error,*999) ENDIF CASE(PART_DERIV_S2_S2) - CALL FlagError("Not implemented",ERR,ERROR,*999) + CALL FlagError("Not implemented",err,error,*999) CASE(PART_DERIV_S1_S2) IF(SIZE(X,2)>=6) THEN SELECT CASE(COORDINATE_SYSTEM%NUMBER_OF_DIMENSIONS) @@ -3088,10 +3099,10 @@ SUBROUTINE COORDINATE_DERIVATIVE_CONVERT_TO_RC_SP(COORDINATE_SYSTEM,PART_DERIV_T & X(2,2)*X(2,4)+X(1,1)*COS(X(2,1))*X(2,6)) !d2(y)/d(s1)d(s2) Z(3)=X(3,6) !d2(z)/d(s1)d(s2) CASE DEFAULT - CALL FlagError("Invalid number of coordinates",ERR,ERROR,*999) + CALL FlagError("Invalid number of coordinates",err,error,*999) END SELECT ELSE - CALL FlagError("Not enough X derivatives supplied",ERR,ERROR,*999) + CALL FlagError("Not enough X derivatives supplied",err,error,*999) ENDIF CASE(PART_DERIV_S3) IF(SIZE(X,2)>=7) THEN @@ -3104,13 +3115,13 @@ SUBROUTINE COORDINATE_DERIVATIVE_CONVERT_TO_RC_SP(COORDINATE_SYSTEM,PART_DERIV_T Z(2)=SIN(X(2,1))*X(1,7)+X(1,1)*COS(X(2,1))*X(2,7) !d(y)/d(s3) Z(3)=X(3,7) !d(z)/d(s3) CASE DEFAULT - CALL FlagError("Invalid number of coordinates",ERR,ERROR,*999) + CALL FlagError("Invalid number of coordinates",err,error,*999) END SELECT ELSE - CALL FlagError("Not enough X derivatives supplied",ERR,ERROR,*999) + CALL FlagError("Not enough X derivatives supplied",err,error,*999) ENDIF CASE(PART_DERIV_S3_S3) - CALL FlagError("Not implemented",ERR,ERROR,*999) + CALL FlagError("Not implemented",err,error,*999) CASE(PART_DERIV_S1_S3) IF(SIZE(X,2)>=9) THEN SELECT CASE(COORDINATE_SYSTEM%NUMBER_OF_DIMENSIONS) @@ -3126,10 +3137,10 @@ SUBROUTINE COORDINATE_DERIVATIVE_CONVERT_TO_RC_SP(COORDINATE_SYSTEM,PART_DERIV_T & X(2,2)*X(2,7)+X(1,1)*COS(X(2,1))*X(2,9)) !d2(y)/d(s1)d(s3) Z(3)=X(3,9) !d2(z)/d(s1)d(s3) CASE DEFAULT - CALL FlagError("Invalid number of coordinates",ERR,ERROR,*999) + CALL FlagError("Invalid number of coordinates",err,error,*999) END SELECT ELSE - CALL FlagError("Not enough X derivatives supplied",ERR,ERROR,*999) + CALL FlagError("Not enough X derivatives supplied",err,error,*999) ENDIF CASE(PART_DERIV_S2_S3) IF(SIZE(X,2)>=10) THEN @@ -3146,10 +3157,10 @@ SUBROUTINE COORDINATE_DERIVATIVE_CONVERT_TO_RC_SP(COORDINATE_SYSTEM,PART_DERIV_T & X(2,4)*X(2,7)+X(1,1)*COS(X(2,1))*X(2,10)) !d2(y)/d(s2)d(s3) Z(3)=X(3,10) !d2(z)/d(s2)d(s3) CASE DEFAULT - CALL FlagError("Invalid number of coordinates",ERR,ERROR,*999) + CALL FlagError("Invalid number of coordinates",err,error,*999) END SELECT ELSE - CALL FlagError("Not enough X derivatives supplied",ERR,ERROR,*999) + CALL FlagError("Not enough X derivatives supplied",err,error,*999) ENDIF CASE(PART_DERIV_S1_S2_S3) IF(SIZE(X,2)>=11) THEN @@ -3180,37 +3191,37 @@ SUBROUTINE COORDINATE_DERIVATIVE_CONVERT_TO_RC_SP(COORDINATE_SYSTEM,PART_DERIV_T & COS(X(2,1))*X(2,11) !d3(y)/d(s1)d(s2)d(s3) Z(3)=X(3,11) !d3(z)/d(s1)d(s2)d(s3) CASE DEFAULT - CALL FlagError("Invalid number of coordinates",ERR,ERROR,*999) + CALL FlagError("Invalid number of coordinates",err,error,*999) END SELECT ELSE - CALL FlagError("Not enough X derivatives supplied",ERR,ERROR,*999) + CALL FlagError("Not enough X derivatives supplied",err,error,*999) ENDIF CASE DEFAULT - CALL FlagError("Invalid partial derivative type",ERR,ERROR,*999) + CALL FlagError("Invalid partial derivative type",err,error,*999) END SELECT CASE(COORDINATE_SPHERICAL_POLAR_TYPE) IF(COORDINATE_SYSTEM%NUMBER_OF_DIMENSIONS==3) THEN SELECT CASE(PART_DERIV_TYPE) CASE(NO_PART_DERIV) - Z=COORDINATE_CONVERT_TO_RC(COORDINATE_SYSTEM,X(:,1),ERR,ERROR) - IF(ERR/=0) GOTO 999 + Z=COORDINATE_CONVERT_TO_RC(COORDINATE_SYSTEM,X(:,1),err,error) + IF(err/=0) GOTO 999 CASE(PART_DERIV_S1,PART_DERIV_S1_S1,PART_DERIV_S2,PART_DERIV_S2_S2,& & PART_DERIV_S1_S2,PART_DERIV_S3,PART_DERIV_S3_S3,& & PART_DERIV_S1_S3,PART_DERIV_S2_S3,PART_DERIV_S1_S2_S3) - CALL FlagError("Not implemented",ERR,ERROR,*999) + CALL FlagError("Not implemented",err,error,*999) CASE DEFAULT - CALL FlagError("Invalid partial derivative type",ERR,ERROR,*999) + CALL FlagError("Invalid partial derivative type",err,error,*999) END SELECT ELSE - CALL FlagError("Invalid number of coordinates",ERR,ERROR,*999) + CALL FlagError("Invalid number of coordinates",err,error,*999) ENDIF CASE(COORDINATE_PROLATE_SPHEROIDAL_TYPE) IF(COORDINATE_SYSTEM%NUMBER_OF_DIMENSIONS==3) THEN FOCUS=REAL(COORDINATE_SYSTEM%FOCUS,SP) SELECT CASE(PART_DERIV_TYPE) CASE(NO_PART_DERIV) - Z=COORDINATE_CONVERT_TO_RC(COORDINATE_SYSTEM,X(:,1),ERR,ERROR) - IF(ERR/=0) GOTO 999 + Z=COORDINATE_CONVERT_TO_RC(COORDINATE_SYSTEM,X(:,1),err,error) + IF(err/=0) GOTO 999 CASE(PART_DERIV_S1) IF(SIZE(X,2)>=2) THEN Z(1)=FOCUS*SINH(X(1,1))*COS(X(2,1))*X(1,2)-& @@ -3225,10 +3236,10 @@ SUBROUTINE COORDINATE_DERIVATIVE_CONVERT_TO_RC_SP(COORDINATE_SYSTEM,PART_DERIV_T & X(3,2) !d(z)/d(s1) ELSE CALL FlagError("Not enough X derivatives supplied", & - & ERR,ERROR,*999) + & err,error,*999) ENDIF CASE(PART_DERIV_S1_S1) - CALL FlagError("Not implemented",ERR,ERROR,*999) + CALL FlagError("Not implemented",err,error,*999) CASE(PART_DERIV_S2) IF(SIZE(X,2)>=4) THEN Z(1)=FOCUS*SINH(X(1,1))*COS(X(2,1))*X(1,4)-& @@ -3243,10 +3254,10 @@ SUBROUTINE COORDINATE_DERIVATIVE_CONVERT_TO_RC_SP(COORDINATE_SYSTEM,PART_DERIV_T & X(3,4) !d(z)/d(s2) ELSE CALL FlagError("Not enough X derivatives supplied",& - & ERR,ERROR,*999) + & err,error,*999) ENDIF CASE(PART_DERIV_S2_S2) - CALL FlagError("Not implemented",ERR,ERROR,*999) + CALL FlagError("Not implemented",err,error,*999) CASE(PART_DERIV_S1_S2) IF(SIZE(X,2)>=6) THEN Z(1)=FOCUS*(SINH(X(1,1))*COS(X(2,1))*X(1,6)+& @@ -3283,7 +3294,7 @@ SUBROUTINE COORDINATE_DERIVATIVE_CONVERT_TO_RC_SP(COORDINATE_SYSTEM,PART_DERIV_T & X(3,4))) !d2(z)/d(s1)d(s2) ELSE CALL FlagError("Not enough X derivatives supplied",& - & ERR,ERROR,*999) + & err,error,*999) ENDIF CASE(PART_DERIV_S3) IF(SIZE(X,2)>=7) THEN @@ -3299,10 +3310,10 @@ SUBROUTINE COORDINATE_DERIVATIVE_CONVERT_TO_RC_SP(COORDINATE_SYSTEM,PART_DERIV_T & X(3,7) !d(z)/d(s3) ELSE CALL FlagError("Not enough X derivatives supplied",& - & ERR,ERROR,*999) + & err,error,*999) ENDIF CASE(PART_DERIV_S3_S3) - CALL FlagError("Not implemented",ERR,ERROR,*999) + CALL FlagError("Not implemented",err,error,*999) CASE(PART_DERIV_S1_S3) IF(SIZE(X,2)>=9) THEN Z(1)=FOCUS*(SINH(X(1,1))*COS(X(2,1))*X(1,9)+& @@ -3339,7 +3350,7 @@ SUBROUTINE COORDINATE_DERIVATIVE_CONVERT_TO_RC_SP(COORDINATE_SYSTEM,PART_DERIV_T & X(3,7))) !d2(z)/d(s1)d(s3) ELSE CALL FlagError("Not enough X derivatives supplied",& - & ERR,ERROR,*999) + & err,error,*999) ENDIF CASE(PART_DERIV_S2_S3) IF(SIZE(X,2)>=10) THEN @@ -3377,7 +3388,7 @@ SUBROUTINE COORDINATE_DERIVATIVE_CONVERT_TO_RC_SP(COORDINATE_SYSTEM,PART_DERIV_T & X(3,7))) !d2(z)/d(s2)d(s3) ELSE CALL FlagError("Not enough X derivatives supplied",& - & ERR,ERROR,*999) + & err,error,*999) ENDIF CASE(PART_DERIV_S1_S2_S3) IF(SIZE(X,2)>=11) THEN @@ -3517,39 +3528,39 @@ SUBROUTINE COORDINATE_DERIVATIVE_CONVERT_TO_RC_SP(COORDINATE_SYSTEM,PART_DERIV_T & X(3,11)) !d3(z)/d(s1)d(s2)d(s3) ELSE CALL FlagError("Not enough X derivatives supplied",& - & ERR,ERROR,*999) + & err,error,*999) ENDIF CASE DEFAULT - CALL FlagError("Invalid partial derivative type",ERR,ERROR,*999) + CALL FlagError("Invalid partial derivative type",err,error,*999) END SELECT ENDIF CASE(COORDINATE_OBLATE_SPHEROIDAL_TYPE) IF(COORDINATE_SYSTEM%NUMBER_OF_DIMENSIONS==3) THEN SELECT CASE(PART_DERIV_TYPE) CASE(NO_PART_DERIV) - Z=COORDINATE_CONVERT_TO_RC(COORDINATE_SYSTEM,X(:,1),ERR,ERROR) - IF(ERR/=0) GOTO 999 + Z=COORDINATE_CONVERT_TO_RC(COORDINATE_SYSTEM,X(:,1),err,error) + IF(err/=0) GOTO 999 CASE(PART_DERIV_S1,PART_DERIV_S1_S1,PART_DERIV_S2,PART_DERIV_S2_S2,& & PART_DERIV_S1_S2,PART_DERIV_S3,PART_DERIV_S3_S3,& & PART_DERIV_S1_S3,PART_DERIV_S2_S3,PART_DERIV_S1_S2_S3) - CALL FlagError("Not implemented",ERR,ERROR,*999) + CALL FlagError("Not implemented",err,error,*999) CASE DEFAULT - CALL FlagError("Invalid partial derivative type",ERR,ERROR,*999) + CALL FlagError("Invalid partial derivative type",err,error,*999) END SELECT ELSE - CALL FlagError("Invalid number of coordinates",ERR,ERROR,*999) + CALL FlagError("Invalid number of coordinates",err,error,*999) ENDIF CASE DEFAULT - CALL FlagError("Invalid coordinate type",ERR,ERROR,*999) + CALL FlagError("Invalid coordinate type",err,error,*999) END SELECT ELSE CALL FlagError("The sizes of the vectors X and Z do not match",& - & ERR,ERROR,*999) + & err,error,*999) ENDIF EXITS("COORDINATE_DERIVATIVE_CONVERT_TO_RC_SP") RETURN -999 ERRORSEXITS("COORDINATE_DERIVATIVE_CONVERT_TO_RC_SP",ERR,ERROR) +999 ERRORSEXITS("COORDINATE_DERIVATIVE_CONVERT_TO_RC_SP",err,error) RETURN 1 END SUBROUTINE COORDINATE_DERIVATIVE_CONVERT_TO_RC_SP @@ -3560,21 +3571,21 @@ END SUBROUTINE COORDINATE_DERIVATIVE_CONVERT_TO_RC_SP !>Calculates the norm of a derivative in a coordinate system identified by COORDINATE_SYSTEM at the given interpolated !>point and returns the value in NORM for single precision coordinates. PART_DERIV_INDEX is used to select the !>appropriate partial derivative (i.e., wrt S1, S2 or S3) to normalise. - SUBROUTINE COORDINATE_DERIVATIVE_NORM(COORDINATE_SYSTEM,PART_DERIV_INDEX,INTERPOLATED_POINT,DERIV_NORM,ERR,ERROR,*) + SUBROUTINE COORDINATE_DERIVATIVE_NORM(COORDINATE_SYSTEM,PART_DERIV_INDEX,INTERPOLATED_POINT,DERIV_NORM,err,error,*) !Argument variables TYPE(COORDINATE_SYSTEM_TYPE), POINTER :: COORDINATE_SYSTEM !Adjusts the interpolation for non-rectangular cartesian coordinate systems. - SUBROUTINE COORDINATE_INTERPOLATION_ADJUST(COORDINATE_SYSTEM,PARTIAL_DERIVATIVE_INDEX,VALUE,ERR,ERROR,*) + SUBROUTINE COORDINATE_INTERPOLATION_ADJUST(COORDINATE_SYSTEM,PARTIAL_DERIVATIVE_INDEX,VALUE,err,error,*) !Argument variables TYPE(COORDINATE_SYSTEM_TYPE), POINTER :: COORDINATE_SYSTEM !Adjusts the interpolation parameters for non-rectangular cartesian coordinate systems. - SUBROUTINE COORDINATE_INTERPOLATION_PARAMETERS_ADJUST(COORDINATE_SYSTEM,INTERPOLATION_PARAMETERS,ERR,ERROR,*) + SUBROUTINE COORDINATE_INTERPOLATION_PARAMETERS_ADJUST(COORDINATE_SYSTEM,INTERPOLATION_PARAMETERS,err,error,*) !Argument variables TYPE(COORDINATE_SYSTEM_TYPE), POINTER :: COORDINATE_SYSTEM !Finalises the coordinate systems and destroys all coordinate systems. - SUBROUTINE COORDINATE_SYSTEMS_FINALISE(ERR,ERROR,*) + SUBROUTINE CoordinateSystems_Finalise(coordinateSystems,err,error,*) !Argument variables - INTEGER(INTG), INTENT(OUT) :: ERR !Initialises the coordinate systems and creates the world coordinate system. - SUBROUTINE COORDINATE_SYSTEMS_INITIALISE(ERR,ERROR,*) + !>Initialises the coordinate systems and creates the world coordinate system for a context. + SUBROUTINE CoordinateSystems_Initialise(context,err,error,*) !Argument variables - INTEGER(INTG), INTENT(OUT) :: ERR !context + context%coordinateSystems%numberOfCoordinateSystems=0 + NULLIFY(context%coordinateSystems%coordinateSystems) + !Add in a world coordinate system + ALLOCATE(context%coordinateSystems%coordinateSystems(1),STAT=err) + IF(err/=0) CALL FlagError("Could not allocate list of coordinate systems.",err,error,*999) !Create the default RC World cooordinate system - ALLOCATE(coordinateSystems%coordinateSystems(1)%ptr,STAT=ERR) - IF(ERR/=0) CALL FlagError("Could not allocate world coordinate system.",ERR,ERROR,*999) - coordinateSystems%coordinateSystems(1)%ptr%USER_NUMBER=0 - coordinateSystems%coordinateSystems(1)%ptr%TYPE=COORDINATE_RECTANGULAR_CARTESIAN_TYPE - coordinateSystems%coordinateSystems(1)%ptr%NUMBER_OF_DIMENSIONS=3 - coordinateSystems%coordinateSystems(1)%ptr%FOCUS=1.0_DP - coordinateSystems%coordinateSystems(1)%ptr%ORIGIN=(/0.0_DP,0.0_DP,0.0_DP/) - coordinateSystems%coordinateSystems(1)%ptr%ORIENTATION=RESHAPE(& - & (/1.0_DP,0.0_DP,0.0_DP, & - & 0.0_DP,1.0_DP,0.0_DP, & - & 0.0_DP,0.0_DP,1.0_DP/), & - & (/3,3/)) - coordinateSystems%coordinateSystems(1)%ptr%COORDINATE_SYSTEM_FINISHED=.TRUE. - coordinateSystems%numberOfCoordinateSystems=1 + ALLOCATE(context%coordinateSystems%coordinateSystems(1)%ptr,STAT=err) + IF(err/=0) CALL FlagError("Could not allocate world coordinate system.",err,error,*999) + context%coordinateSystems%coordinateSystems(1)%ptr%USER_NUMBER=0 + context%coordinateSystems%coordinateSystems(1)%ptr%type=COORDINATE_RECTANGULAR_CARTESIAN_TYPE + context%coordinateSystems%coordinateSystems(1)%ptr%NUMBER_OF_DIMENSIONS=3 + context%coordinateSystems%coordinateSystems(1)%ptr%focus=1.0_DP + context%coordinateSystems%coordinateSystems(1)%ptr%origin=[0.0_DP,0.0_DP,0.0_DP] + context%coordinateSystems%coordinateSystems(1)%ptr%orientation=RESHAPE(& + & [1.0_DP,0.0_DP,0.0_DP, & + & 0.0_DP,1.0_DP,0.0_DP, & + & 0.0_DP,0.0_DP,1.0_DP], & + & [3,3]) + context%coordinateSystems%coordinateSystems(1)%ptr%COORDINATE_SYSTEM_FINISHED=.TRUE. + context%coordinateSystems%numberOfCoordinateSystems=1 - EXITS("COORDINATE_SYSTEMS_INITIALISE") + EXITS("CoordinateSystems_Initialise") RETURN -999 ERRORSEXITS("COORDINATE_SYSTEMS_INITIALISE",ERR,ERROR) +999 CALL CoordinateSystems_Finalise(context%coordinateSystems,dummyErr,dummyError,*998) +998 ERRORSEXITS("CoordinateSystems_Initialise",err,error) RETURN 1 - END SUBROUTINE COORDINATE_SYSTEMS_INITIALISE + + END SUBROUTINE CoordinateSystems_Initialise ! !================================================================================================================================ diff --git a/src/data_point_access_routines.f90 b/src/data_point_access_routines.f90 index 1dd06a69..c203d6f8 100644 --- a/src/data_point_access_routines.f90 +++ b/src/data_point_access_routines.f90 @@ -46,6 +46,7 @@ MODULE DataPointAccessRoutines USE BaseRoutines USE Kinds + USE ISO_VARYING_STRING USE Strings USE Types diff --git a/src/data_point_routines.f90 b/src/data_point_routines.f90 index 9126b7d0..1ee2f736 100755 --- a/src/data_point_routines.f90 +++ b/src/data_point_routines.f90 @@ -46,7 +46,8 @@ MODULE DataPointRoutines USE BaseRoutines - USE ComputationEnvironment + USE ComputationRoutines + USE ComputationAccessRoutines USE COORDINATE_ROUTINES USE DataPointAccessRoutines USE DataProjectionRoutines diff --git a/src/data_projection_access_routines.f90 b/src/data_projection_access_routines.f90 index 1d831ea5..9f020495 100644 --- a/src/data_projection_access_routines.f90 +++ b/src/data_projection_access_routines.f90 @@ -46,6 +46,7 @@ MODULE DataProjectionAccessRoutines USE BaseRoutines USE Kinds + USE ISO_VARYING_STRING USE Strings USE Types diff --git a/src/data_projection_routines.f90 b/src/data_projection_routines.f90 index c53838dd..15b9af60 100644 --- a/src/data_projection_routines.f90 +++ b/src/data_projection_routines.f90 @@ -26,7 +26,7 @@ !> Auckland, the University of Oxford and King's College, London. !> All Rights Reserved. !> -!> Contributor(s): Chris Bradley, Kumar Mithraratne, Xiani (Nancy) Yan, Prasad Babarenda Gamage +!> Contributor(s): Tim Wu, Chris Bradley, Kumar Mithraratne, Xiani (Nancy) Yan, Prasad Babarenda Gamage !> !> Alternatively, the contents of this file may be used under the terms of !> either the GNU General Public License Version 2 or later (the "GPL"), or @@ -48,7 +48,8 @@ MODULE DataProjectionRoutines USE BasisRoutines USE BasisAccessRoutines USE CmissMPI - USE ComputationEnvironment + USE ComputationRoutines + USE ComputationAccessRoutines USE Constants USE CoordinateSystemAccessRoutines USE DataPointAccessRoutines @@ -1351,7 +1352,7 @@ SUBROUTINE DataProjection_DataPointsProjectionEvaluate(dataProjection,projection TYPE(DOMAIN_MAPPING_TYPE), POINTER :: domainMappingElements TYPE(DOMAIN_MAPPINGS_TYPE), POINTER :: domainMappings TYPE(DOMAIN_TOPOLOGY_TYPE), POINTER :: domainTopology - INTEGER(INTG) :: myComputationalNode,numberOfComputationalNodes !1) THEN + !use MPI if number of computation nodes is greater than 1 + IF(numberOfGroupComputationNodes>1) THEN !Use MPI !Allocate arrays for MPI communication ALLOCATE(globalToLocalNumberOfClosestCandidates(numberOfDataPoints),STAT=err) IF(err/=0) CALL FlagError("Could not allocate global to local number of closest elements.",err,error,*999) - ALLOCATE(globalNumberOfClosestCandidates(numberOfComputationalNodes),STAT=err) + ALLOCATE(globalNumberOfClosestCandidates(numberOfGroupComputationNodes),STAT=err) IF(err/=0) CALL FlagError("Could not allocate global number of closest candidates.",err,error,*999) - ALLOCATE(globalMPIDisplacements(numberOfComputationalNodes),STAT=err) + ALLOCATE(globalMPIDisplacements(numberOfGroupComputationNodes),STAT=err) IF(err/=0) CALL FlagError("Could not allocate global MPI displacements.",err,error,*999) - ALLOCATE(globalNumberOfProjectedPoints(numberOfComputationalNodes),STAT=err) + ALLOCATE(globalNumberOfProjectedPoints(numberOfGroupComputationNodes),STAT=err) IF(err/=0) CALL FlagError("Could not allocate all number of projected points.",err,error,*999) ALLOCATE(projectionExitTag(numberOfDataPoints),STAT=err) IF(err/=0) CALL FlagError("Could not allocate projected.",err,error,*999) @@ -1680,13 +1683,13 @@ SUBROUTINE DataProjection_DataPointsProjectionEvaluate(dataProjection,projection IF(err/=0) CALL FlagError("Could not allocate projected vectors.",err,error,*999) ALLOCATE(sortingIndices2(numberOfDataPoints),STAT=err) IF(err/=0) CALL FlagError("Could not allocate sorting indices 2.",err,error,*999) - !gather and distribute the number of closest elements from all computational nodes + !gather and distribute the number of closest elements from all computation nodes CALL MPI_ALLGATHER(numberOfClosestCandidates,1,MPI_INTEGER,globalNumberOfClosestCandidates,1,MPI_INTEGER, & - & computationalEnvironment%mpiCommunicator,MPIIError) + & groupCommunicator,MPIIError) CALL MPI_ERROR_CHECK("MPI_ALLGATHER",MPIIError,err,error,*999) - !Sum all number of closest candidates from all computational nodes + !Sum all number of closest candidates from all computation nodes totalNumberOfClosestCandidates=SUM(globalNumberOfClosestCandidates,1) - !Allocate arrays to store information gathered from all computational node + !Allocate arrays to store information gathered from all computation node !The information for each data point is stored in the corresponding row so they are contiguous in memory for !easy MPI access ALLOCATE(globalClosestDistances(numberOfDataPoints,totalNumberOfClosestCandidates),STAT=err) @@ -1700,27 +1703,27 @@ SUBROUTINE DataProjection_DataPointsProjectionEvaluate(dataProjection,projection CALL MPI_ERROR_CHECK("MPI_TYPE_COMMIT",MPIIError,err,error,*999) !Create displacement vectors for MPI_ALLGATHERV globalMPIDisplacements(1)=0 - DO computationalNodeIdx=1,(numberOfComputationalNodes-1) - globalMPIDisplacements(computationalNodeIdx+1)=globalMPIDisplacements(computationalNodeIdx)+ & - & globalNumberOfClosestCandidates(computationalNodeIdx) - ENDDO !computationalNodeIdx + DO computationNodeIdx=1,(numberOfGroupComputationNodes-1) + globalMPIDisplacements(computationNodeIdx+1)=globalMPIDisplacements(computationNodeIdx)+ & + & globalNumberOfClosestCandidates(computationNodeIdx) + ENDDO !computationNodeIdx !Share closest element distances between all domains CALL MPI_ALLGATHERV(closestDistances(1,1),numberOfClosestCandidates,MPIClosestDistances, & & globalClosestDistances,globalNumberOfClosestCandidates,globalMPIDisplacements, & - & MPIClosestDistances,computationalEnvironment%mpiCommunicator,MPIIError) + & MPIClosestDistances,groupCommunicator,MPIIError) CALL MPI_ERROR_CHECK("MPI_ALLGATHERV",MPIIError,err,error,*999) reducedNumberOfCLosestCandidates=MIN(dataProjection%numberOfClosestElements,totalNumberOfClosestCandidates) - projectedDistance(2,:)=myComputationalNode + projectedDistance(2,:)=myComputationNode !Find the globally closest distance in the current domain DO dataPointIdx=1,numberOfDataPoints CALL Sorting_BubbleIndexSort(globalClosestDistances(dataPointIdx,:),sortingIndices1,err,error,*999) sortingIndices1(1:totalNumberOfClosestCandidates)=sortingIndices1(1:totalNumberOfClosestCandidates)- & - & globalMPIDisplacements(myComputationalNode+1) !shift the index to current computational node + & globalMPIDisplacements(myComputationNode+1) !shift the index to current computation node globalToLocalNumberOfClosestCandidates(dataPointIdx)=0 DO elementIdx=1,reducedNumberOfCLosestCandidates - !Sorted index indicates it is in the current computational domain + !Sorted index indicates it is in the current computation domain IF((sortingIndices1(elementIdx)>=1).AND. & - & (sortingIndices1(elementIdx)<=globalNumberOfClosestCandidates(myComputationalNode+1))) & + & (sortingIndices1(elementIdx)<=globalNumberOfClosestCandidates(myComputationNode+1))) & & globalToLocalNumberOfClosestCandidates(dataPointIdx)= & & globalToLocalNumberOfClosestCandidates(dataPointIdx)+1 ENDDO !elementIdx @@ -1814,47 +1817,47 @@ SUBROUTINE DataProjection_DataPointsProjectionEvaluate(dataProjection,projection END SELECT !Find the shortest projected distance in all domains CALL MPI_ALLREDUCE(MPI_IN_PLACE,projectedDistance,numberOfDataPoints,MPI_2DOUBLE_PRECISION,MPI_MINLOC, & - & computationalEnvironment%mpiCommunicator,MPIIError) + & groupCommunicator,MPIIError) CALL MPI_ERROR_CHECK("MPI_ALLREDUCE",MPIIError,err,error,*999) - !Sort the computational node/rank from 0 to number of computational node + !Sort the computation node/rank from 0 to number of computation node CALL Sorting_BubbleIndexSort(projectedDistance(2,:),sortingIndices2,err,error,*999) - DO computationalNodeIdx=0,(numberOfComputationalNodes-1) - globalNumberOfProjectedPoints(computationalNodeIdx+1)=COUNT(ABS(projectedDistance(2,:)- & - & REAL(computationalNodeIdx))1 + ENDIF !numberOfGroupComputationNodes>1 !Compute full elemental xi IF(dataProjection%numberOfXi==dataProjection%numberOfElementXi) THEN DO dataPointIdx=1,numberOfDataPoints @@ -2225,7 +2228,7 @@ SUBROUTINE DataProjection_NewtonElementsEvaluate_1(dataProjection,interpolatedPo TYPE(VARYING_STRING), INTENT(OUT) :: error !=1) THEN - IF(numberOfComputationalNodes>1) THEN - WRITE(analFilename,('(A,A,I0)')) filename(1:filenameLength),".opdataproj.",myComputationalNodeNumber + IF(numberOfGroupComputationNodes>1) THEN + WRITE(analFilename,('(A,A,I0)')) filename(1:filenameLength),".opdataproj.",myGroupComputationNodeNumber ELSE analFilename=filename(1:filenameLength)//".opdataproj" ENDIF diff --git a/src/diffusion_advection_diffusion_routines.f90 b/src/diffusion_advection_diffusion_routines.f90 index e2529f5a..cd1ebc65 100755 --- a/src/diffusion_advection_diffusion_routines.f90 +++ b/src/diffusion_advection_diffusion_routines.f90 @@ -66,7 +66,6 @@ MODULE DIFFUSION_ADVECTION_DIFFUSION_ROUTINES USE Maths USE MatrixVector USE MESH_ROUTINES - USE NODE_ROUTINES USE PROBLEM_CONSTANTS USE Strings USE SOLVER_ROUTINES diff --git a/src/diffusion_diffusion_routines.f90 b/src/diffusion_diffusion_routines.f90 index 2a62971a..94231684 100755 --- a/src/diffusion_diffusion_routines.f90 +++ b/src/diffusion_diffusion_routines.f90 @@ -68,7 +68,6 @@ MODULE DIFFUSION_DIFFUSION_ROUTINES USE Maths USE MatrixVector USE MESH_ROUTINES - USE NODE_ROUTINES USE PROBLEM_CONSTANTS USE Strings USE SOLVER_ROUTINES diff --git a/src/distributed_matrix_vector.f90 b/src/distributed_matrix_vector.f90 index 927e4a10..45837057 100755 --- a/src/distributed_matrix_vector.f90 +++ b/src/distributed_matrix_vector.f90 @@ -47,7 +47,8 @@ MODULE DistributedMatrixVector USE BaseRoutines USE CmissMPI USE CmissPetsc - USE ComputationEnvironment + USE ComputationRoutines + USE ComputationAccessRoutines USE DistributedMatrixVectorAccessRoutines USE INPUT_OUTPUT USE ISO_VARYING_STRING @@ -58,6 +59,7 @@ MODULE DistributedMatrixVector #ifndef NOMPIMOD USE MPI #endif + USE CMISSPETScTypes, ONLY : PetscMatType,PetscVecType USE Strings USE Types USE LINKEDLIST_ROUTINES @@ -1660,7 +1662,7 @@ END SUBROUTINE DistributedMatrix_DataTypeSet !================================================================================================================================ ! - !>Gets the dimensions of a matrix on this computational node. + !>Gets the dimensions of a matrix on this computation node. SUBROUTINE DistributedMatrix_DimensionsGet(distributedMatrix,m,n,err,error,*) !Argument variables @@ -2467,7 +2469,7 @@ SUBROUTINE DistributedMatrix_PETScCreateFinish(petscMatrix,err,error,*) INTEGER(INTG), INTENT(OUT) :: err !0) THEN - myComputationalNodeNumber=ComputationalEnvironment_NodeNumberGet(err,error) - IF(err/=0) GOTO 999 + CALL WorkGroup_GroupNodeNumberGet(domainMapping%workGroup,myComputationNodeNumber,err,error,*999) IF(distributedVector%ghostingType==DISTRIBUTED_MATRIX_VECTOR_INCLUDE_GHOSTS_TYPE) THEN ALLOCATE(cmissVector%transfers(domainMapping%NUMBER_OF_ADJACENT_DOMAINS),STAT=err) IF(err/=0) CALL FlagError("Could not allocate CMISS distributed vector transfer buffers.",err,error,*999) @@ -5843,11 +5845,11 @@ SUBROUTINE DistributedVector_CMISSCreateFinish(cmissVector,err,error,*) cmissVector%transfers(domainIdx)%receiveBufferSize=domainMapping%ADJACENT_DOMAINS(domainIdx)%NUMBER_OF_RECEIVE_GHOSTS cmissVector%transfers(domainIdx)%dataType=distributedVector%dataType cmissVector%transfers(domainIdx)%sendTagNumber=cmissVector%baseTagNumber+ & - & domainMapping%ADJACENT_DOMAINS_PTR(myComputationalNodeNumber)+domainIdx-1 + & domainMapping%ADJACENT_DOMAINS_PTR(myComputationNodeNumber)+domainIdx-1 domainNumber=domainMapping%ADJACENT_DOMAINS(domainIdx)%DOMAIN_NUMBER found=.FALSE. DO domainIdx2=domainMapping%ADJACENT_DOMAINS_PTR(domainNumber),domainMapping%ADJACENT_DOMAINS_PTR(domainNumber+1)-1 - IF(domainMapping%ADJACENT_DOMAINS_LIST(domainIdx2)==myComputationalNodeNumber) THEN + IF(domainMapping%ADJACENT_DOMAINS_LIST(domainIdx2)==myComputationNodeNumber) THEN found=.TRUE. EXIT ENDIF @@ -6871,7 +6873,7 @@ SUBROUTINE DistributedVector_PETScCreateFinish(petscVector,err,error,*) INTEGER(INTG), INTENT(OUT) :: err !1) THEN CALL DistributedVector_UpdateWaitFinished(distributedVector,err,error,*999) !Copy the receive buffers back to the ghost positions in the data vector @@ -7347,7 +7349,7 @@ SUBROUTINE DistributedVector_UpdateStart(distributedVector,err,error,*) INTEGER(INTG), INTENT(OUT) :: err !1) THEN + CALL WorkGroup_GroupCommunicatorGet(domainMapping%workGroup,groupCommunicator,err,error,*999) + CALL WorkGroup_NumberOfGroupNodesGet(domainMapping%workGroup,numberOfComputationNodes,err,error,*999) + IF(numberOfComputationNodes>1) THEN IF(domainMapping%NUMBER_OF_ADJACENT_DOMAINS>0) THEN !Fill in the send buffers with the send ghost values DO domainIdx=1,domainMapping%NUMBER_OF_ADJACENT_DOMAINS @@ -7409,8 +7411,7 @@ SUBROUTINE DistributedVector_UpdateStart(distributedVector,err,error,*) & cmissVector%transfers(domainIdx)%receiveBufferSize,MPI_INTEGER, & & domainMapping%ADJACENT_DOMAINS(domainIdx)%DOMAIN_NUMBER, & & cmissVector%transfers(domainIdx)%receiveTagNumber, & - & computationalEnvironment%mpiCommunicator, & - & cmissVector%transfers(domainIdx)%mpiReceiveRequest,mpiIError) + & groupCommunicator,cmissVector%transfers(domainIdx)%mpiReceiveRequest,mpiIError) CALL MPI_ErrorCheck("MPI_IRECV",mpiIError,err,error,*999) IF(diagnostics5) THEN CALL WriteString(DIAGNOSTIC_OUTPUT_TYPE,"MPI IRECV call posted:",err,error,*999) @@ -7421,8 +7422,7 @@ SUBROUTINE DistributedVector_UpdateStart(distributedVector,err,error,*) & DOMAIN_NUMBER,err,error,*999) CALL WriteStringValue(DIAGNOSTIC_OUTPUT_TYPE," Receive tag = ",cmissVector%transfers(domainIdx)% & & receiveTagNumber,err,error,*999) - CALL WriteStringValue(DIAGNOSTIC_OUTPUT_TYPE," Receive comm = ",computationalEnvironment%mpiCommunicator, & - & err,error,*999) + CALL WriteStringValue(DIAGNOSTIC_OUTPUT_TYPE," Receive comm = ",groupCommunicator,err,error,*999) CALL WriteStringValue(DIAGNOSTIC_OUTPUT_TYPE," Receive request = ",cmissVector%transfers(domainIdx)% & & mpiReceiveRequest,err,error,*999) ENDIF @@ -7431,8 +7431,7 @@ SUBROUTINE DistributedVector_UpdateStart(distributedVector,err,error,*) & cmissVector%transfers(domainIdx)%receiveBufferSize,MPI_REAL, & & domainMapping%ADJACENT_DOMAINS(domainIdx)%DOMAIN_NUMBER, & & cmissVector%transfers(domainIdx)%receiveTagNumber, & - & computationalEnvironment%mpiCommunicator, & - & cmissVector%transfers(domainIdx)%mpiReceiveRequest,mpiIError) + & groupCommunicator,cmissVector%transfers(domainIdx)%mpiReceiveRequest,mpiIError) CALL MPI_ErrorCheck("MPI_IRECV",mpiIError,err,error,*999) IF(diagnostics5) THEN CALL WriteString(DIAGNOSTIC_OUTPUT_TYPE,"MPI IRECV call posted:",err,error,*999) @@ -7443,8 +7442,7 @@ SUBROUTINE DistributedVector_UpdateStart(distributedVector,err,error,*) & DOMAIN_NUMBER,err,error,*999) CALL WriteStringValue(DIAGNOSTIC_OUTPUT_TYPE," Receive tag = ",cmissVector%transfers(domainIdx)% & & receiveTagNumber,err,error,*999) - CALL WriteStringValue(DIAGNOSTIC_OUTPUT_TYPE," Receive comm = ",computationalEnvironment%mpiCommunicator, & - & err,error,*999) + CALL WriteStringValue(DIAGNOSTIC_OUTPUT_TYPE," Receive comm = ",groupCommunicator,err,error,*999) CALL WriteStringValue(DIAGNOSTIC_OUTPUT_TYPE," Receive request = ",cmissVector%transfers(domainIdx)% & & mpiReceiveRequest,err,error,*999) ENDIF @@ -7453,8 +7451,7 @@ SUBROUTINE DistributedVector_UpdateStart(distributedVector,err,error,*) & cmissVector%transfers(domainIdx)%receiveBufferSize,MPI_DOUBLE_PRECISION, & & domainMapping%ADJACENT_DOMAINS(domainIdx)%DOMAIN_NUMBER, & & cmissVector%transfers(domainIdx)%receiveTagNumber, & - & computationalEnvironment%mpiCommunicator, & - & cmissVector%transfers(domainIdx)%mpiReceiveRequest,mpiIError) + & groupCommunicator,cmissVector%transfers(domainIdx)%mpiReceiveRequest,mpiIError) CALL MPI_ErrorCheck("MPI_IRECV",mpiIError,err,error,*999) IF(diagnostics5) THEN CALL WriteString(DIAGNOSTIC_OUTPUT_TYPE,"MPI IRECV call posted:",err,error,*999) @@ -7465,8 +7462,7 @@ SUBROUTINE DistributedVector_UpdateStart(distributedVector,err,error,*) & DOMAIN_NUMBER,err,error,*999) CALL WriteStringValue(DIAGNOSTIC_OUTPUT_TYPE," Receive tag = ",cmissVector%transfers(domainIdx)%receiveTagNumber, & & err,error,*999) - CALL WriteStringValue(DIAGNOSTIC_OUTPUT_TYPE," Receive comm = ",computationalEnvironment%mpiCommunicator, & - & err,error,*999) + CALL WriteStringValue(DIAGNOSTIC_OUTPUT_TYPE," Receive comm = ",groupCommunicator,err,error,*999) CALL WriteStringValue(DIAGNOSTIC_OUTPUT_TYPE," Receive request = ",cmissVector%transfers(domainIdx)% & & mpiReceiveRequest,err,error,*999) ENDIF @@ -7475,8 +7471,7 @@ SUBROUTINE DistributedVector_UpdateStart(distributedVector,err,error,*) & cmissVector%transfers(domainIdx)%receiveBufferSize,MPI_LOGICAL, & & domainMapping%ADJACENT_DOMAINS(domainIdx)%DOMAIN_NUMBER, & & cmissVector%transfers(domainIdx)%receiveTagNumber, & - & computationalEnvironment%mpiCommunicator, & - & cmissVector%transfers(domainIdx)%mpiReceiveRequest,mpiIError) + & groupCommunicator,cmissVector%transfers(domainIdx)%mpiReceiveRequest,mpiIError) CALL MPI_ErrorCheck("MPI_IRECV",mpiIError,err,error,*999) IF(diagnostics5) THEN CALL WriteString(DIAGNOSTIC_OUTPUT_TYPE,"MPI IRECV call posted:",err,error,*999) @@ -7487,8 +7482,7 @@ SUBROUTINE DistributedVector_UpdateStart(distributedVector,err,error,*) & DOMAIN_NUMBER,err,error,*999) CALL WriteStringValue(DIAGNOSTIC_OUTPUT_TYPE," Receive tag = ",cmissVector%transfers(domainIdx)% & & receiveTagNumber,err,error,*999) - CALL WriteStringValue(DIAGNOSTIC_OUTPUT_TYPE," Receive comm = ",computationalEnvironment%mpiCommunicator, & - & err,error,*999) + CALL WriteStringValue(DIAGNOSTIC_OUTPUT_TYPE," Receive comm = ",groupCommunicator,err,error,*999) CALL WriteStringValue(DIAGNOSTIC_OUTPUT_TYPE," Receive request = ",cmissVector%transfers(domainIdx)% & & mpiReceiveRequest,err,error,*999) ENDIF @@ -7510,8 +7504,7 @@ SUBROUTINE DistributedVector_UpdateStart(distributedVector,err,error,*) & cmissVector%transfers(domainIdx)%sendBufferSize,MPI_INTEGER, & & domainMapping%ADJACENT_DOMAINS(domainIdx)%DOMAIN_NUMBER, & & cmissVector%transfers(domainIdx)%sendTagNumber, & - & computationalEnvironment%mpiCommunicator, & - & cmissVector%transfers(domainIdx)%mpiSendRequest,mpiIError) + & groupCommunicator,cmissVector%transfers(domainIdx)%mpiSendRequest,mpiIError) CALL MPI_ErrorCheck("MPI_ISEND",mpiIError,err,error,*999) IF(diagnostics5) THEN CALL WriteString(DIAGNOSTIC_OUTPUT_TYPE,"MPI ISEND call posted:",err,error,*999) @@ -7522,8 +7515,7 @@ SUBROUTINE DistributedVector_UpdateStart(distributedVector,err,error,*) & DOMAIN_NUMBER,err,error,*999) CALL WriteStringValue(DIAGNOSTIC_OUTPUT_TYPE," Send tag = ",cmissVector%transfers(domainIdx)%sendTagNumber, & & err,error,*999) - CALL WriteStringValue(DIAGNOSTIC_OUTPUT_TYPE," Send comm = ",computationalEnvironment%mpiCommunicator, & - & err,error,*999) + CALL WriteStringValue(DIAGNOSTIC_OUTPUT_TYPE," Send comm = ",groupCommunicator,err,error,*999) CALL WriteStringValue(DIAGNOSTIC_OUTPUT_TYPE," Send request = ",cmissVector%transfers(domainIdx)% & & mpiSendRequest,err,error,*999) ENDIF @@ -7532,8 +7524,7 @@ SUBROUTINE DistributedVector_UpdateStart(distributedVector,err,error,*) & cmissVector%transfers(domainIdx)%sendBufferSize,MPI_REAL, & & domainMapping%ADJACENT_DOMAINS(domainIdx)%DOMAIN_NUMBER, & & cmissVector%transfers(domainIdx)%sendTagNumber, & - & computationalEnvironment%mpiCommunicator, & - & cmissVector%transfers(domainIdx)%mpiSendRequest,mpiIError) + & groupCommunicator,cmissVector%transfers(domainIdx)%mpiSendRequest,mpiIError) CALL MPI_ErrorCheck("MPI_ISEND",mpiIError,err,error,*999) IF(diagnostics5) THEN CALL WriteString(DIAGNOSTIC_OUTPUT_TYPE,"MPI ISEND call posted:",err,error,*999) @@ -7544,8 +7535,7 @@ SUBROUTINE DistributedVector_UpdateStart(distributedVector,err,error,*) & DOMAIN_NUMBER,err,error,*999) CALL WriteStringValue(DIAGNOSTIC_OUTPUT_TYPE," Send tag = ",cmissVector%transfers(domainIdx)%sendTagNumber, & & err,error,*999) - CALL WriteStringValue(DIAGNOSTIC_OUTPUT_TYPE," Send comm = ",computationalEnvironment%mpiCommunicator, & - & err,error,*999) + CALL WriteStringValue(DIAGNOSTIC_OUTPUT_TYPE," Send comm = ",groupCommunicator,err,error,*999) CALL WriteStringValue(DIAGNOSTIC_OUTPUT_TYPE," Send request = ",cmissVector%transfers(domainIdx)% & & mpiSendRequest,err,error,*999) ENDIF @@ -7554,8 +7544,7 @@ SUBROUTINE DistributedVector_UpdateStart(distributedVector,err,error,*) & cmissVector%transfers(domainIdx)%sendBufferSize,MPI_DOUBLE_PRECISION, & & domainMapping%ADJACENT_DOMAINS(domainIdx)%DOMAIN_NUMBER, & & cmissVector%transfers(domainIdx)%sendTagNumber, & - & computationalEnvironment%mpiCommunicator, & - & cmissVector%transfers(domainIdx)%mpiSendRequest,mpiIError) + & groupCommunicator,cmissVector%transfers(domainIdx)%mpiSendRequest,mpiIError) CALL MPI_ErrorCheck("MPI_ISEND",mpiIError,err,error,*999) IF(diagnostics5) THEN CALL WriteString(DIAGNOSTIC_OUTPUT_TYPE,"MPI ISEND call posted:",err,error,*999) @@ -7566,8 +7555,7 @@ SUBROUTINE DistributedVector_UpdateStart(distributedVector,err,error,*) & DOMAIN_NUMBER,err,error,*999) CALL WriteStringValue(DIAGNOSTIC_OUTPUT_TYPE," Send tag = ",cmissVector%transfers(domainIdx)%sendTagNumber, & & err,error,*999) - CALL WriteStringValue(DIAGNOSTIC_OUTPUT_TYPE," Send comm = ",computationalEnvironment%mpiCommunicator, & - & err,error,*999) + CALL WriteStringValue(DIAGNOSTIC_OUTPUT_TYPE," Send comm = ",groupCommunicator,err,error,*999) CALL WriteStringValue(DIAGNOSTIC_OUTPUT_TYPE," Send request = ",cmissVector%transfers(domainIdx)%mpiSendRequest, & & err,error,*999) ENDIF @@ -7576,8 +7564,7 @@ SUBROUTINE DistributedVector_UpdateStart(distributedVector,err,error,*) & cmissVector%transfers(domainIdx)%sendBufferSize,MPI_LOGICAL, & & domainMapping%ADJACENT_DOMAINS(domainIdx)%DOMAIN_NUMBER, & & cmissVector%transfers(domainIdx)%sendTagNumber, & - & computationalEnvironment%mpiCommunicator, & - & cmissVector%transfers(domainIdx)%mpiSendRequest,mpiIError) + & groupCommunicator,cmissVector%transfers(domainIdx)%mpiSendRequest,mpiIError) CALL MPI_ErrorCheck("MPI_ISEND",mpiIError,err,error,*999) IF(diagnostics5) THEN CALL WriteString(DIAGNOSTIC_OUTPUT_TYPE,"MPI ISEND call posted:",err,error,*999) @@ -7588,8 +7575,7 @@ SUBROUTINE DistributedVector_UpdateStart(distributedVector,err,error,*) & DOMAIN_NUMBER,err,error,*999) CALL WriteStringValue(DIAGNOSTIC_OUTPUT_TYPE," Send tag = ",cmissVector%transfers(domainIdx)%sendTagNumber, & & err,error,*999) - CALL WriteStringValue(DIAGNOSTIC_OUTPUT_TYPE," Send comm = ",computationalEnvironment%mpiCommunicator, & - & err,error,*999) + CALL WriteStringValue(DIAGNOSTIC_OUTPUT_TYPE," Send comm = ",groupCommunicator,err,error,*999) CALL WriteStringValue(DIAGNOSTIC_OUTPUT_TYPE," Send request = ",cmissVector%transfers(domainIdx)%mpiSendRequest, & & err,error,*999) ENDIF @@ -7897,7 +7883,7 @@ END SUBROUTINE DistributedVector_DotProductSP ! !>Calculates the dot product of 2 distributed double-precision vectors on this computational node - SUBROUTINE DistributedVector_DotProductDp(distributedVectorA,distributedVectorB,dotProduct,err,error,*) + SUBROUTINE DistributedVector_DotProductDP(distributedVectorA,distributedVectorB,dotProduct,err,error,*) !Argument variables TYPE(DistributedVectorType), INTENT(IN), POINTER :: distributedVectorA ! Auckland, the University of Oxford and King's College, London. !> All Rights Reserved. !> -!> Contributor(s): +!> Contributor(s): Chris Bradley !> !> Alternatively, the contents of this file may be used under the terms of !> either the GNU General Public License Version 2 or later (the "GPL"), or @@ -45,7 +45,8 @@ MODULE DOMAIN_MAPPINGS USE BaseRoutines - USE ComputationEnvironment + USE ComputationRoutines + USE ComputationAccessRoutines USE INPUT_OUTPUT USE ISO_VARYING_STRING USE KINDS @@ -78,7 +79,7 @@ MODULE DOMAIN_MAPPINGS PUBLIC DOMAIN_LOCAL_INTERNAL,DOMAIN_LOCAL_BOUNDARY,DOMAIN_LOCAL_GHOST - PUBLIC DOMAIN_MAPPINGS_MAPPING_FINALISE,DOMAIN_MAPPINGS_MAPPING_INITIALISE,DOMAIN_MAPPINGS_MAPPING_GLOBAL_INITIALISE, & + PUBLIC DOMAIN_MAPPINGS_MAPPING_FINALISE,DomainMappings_MappingInitialise,DOMAIN_MAPPINGS_MAPPING_GLOBAL_INITIALISE, & & DOMAIN_MAPPINGS_GLOBAL_TO_LOCAL_GET,DOMAIN_MAPPINGS_LOCAL_FROM_GLOBAL_CALCULATE CONTAINS @@ -88,15 +89,15 @@ MODULE DOMAIN_MAPPINGS ! !>Finalises the adjacent domain and deallocates all memory for a domain mapping. - SUBROUTINE DOMAIN_MAPPINGS_ADJACENT_DOMAIN_FINALISE(ADJACENT_DOMAIN,ERR,ERROR,*) + SUBROUTINE DOMAIN_MAPPINGS_ADJACENT_DOMAIN_FINALISE(ADJACENT_DOMAIN,err,error,*) !Argument variables TYPE(DOMAIN_ADJACENT_DOMAIN_TYPE) :: ADJACENT_DOMAIN !Initialise the adjacent domain for a domain mapping. - SUBROUTINE DOMAIN_MAPPINGS_ADJACENT_DOMAIN_INITIALISE(ADJACENT_DOMAIN,ERR,ERROR,*) + SUBROUTINE DOMAIN_MAPPINGS_ADJACENT_DOMAIN_INITIALISE(ADJACENT_DOMAIN,err,error,*) !Argument variables TYPE(DOMAIN_ADJACENT_DOMAIN_TYPE) :: ADJACENT_DOMAIN !Returns the local number, if it exists on the rank, for the specifed global number - SUBROUTINE DOMAIN_MAPPINGS_GLOBAL_TO_LOCAL_GET(DOMAIN_MAPPING,GLOBAL_NUMBER,LOCAL_EXISTS,LOCAL_NUMBER,ERR,ERROR,*) + SUBROUTINE DOMAIN_MAPPINGS_GLOBAL_TO_LOCAL_GET(DOMAIN_MAPPING,GLOBAL_NUMBER,LOCAL_EXISTS,LOCAL_NUMBER,err,error,*) !Argument variables TYPE(DOMAIN_MAPPING_TYPE), POINTER :: DOMAIN_MAPPING !=1.AND.GLOBAL_NUMBER<=DOMAIN_MAPPING%NUMBER_OF_GLOBAL) THEN - IF(DOMAIN_MAPPING%GLOBAL_TO_LOCAL_MAP(GLOBAL_NUMBER)%DOMAIN_NUMBER(1)== & - & computationalEnvironment%myComputationalNodeNumber) THEN + CALL WorkGroup_GroupNodeNumberGet(DOMAIN_MAPPING%workGroup,myGroupComputationNodeNumber,err,error,*999) + IF(DOMAIN_MAPPING%GLOBAL_TO_LOCAL_MAP(GLOBAL_NUMBER)%DOMAIN_NUMBER(1)==myGroupComputationNodeNumber) THEN LOCAL_NUMBER=DOMAIN_MAPPING%GLOBAL_TO_LOCAL_MAP(GLOBAL_NUMBER)%LOCAL_NUMBER(1) LOCAL_EXISTS=.TRUE. ENDIF ELSE - LOCAL_ERROR="The specified global number of "//TRIM(NUMBER_TO_VSTRING(GLOBAL_NUMBER,"*",ERR,ERROR))// & + LOCAL_ERROR="The specified global number of "//TRIM(NUMBER_TO_VSTRING(GLOBAL_NUMBER,"*",err,error))// & & " is invalid. The number must be between 1 and "// & - & TRIM(NUMBER_TO_VSTRING(DOMAIN_MAPPING%NUMBER_OF_GLOBAL,"*",ERR,ERROR))//"." - CALL FlagError(LOCAL_ERROR,ERR,ERROR,*999) + & TRIM(NUMBER_TO_VSTRING(DOMAIN_MAPPING%NUMBER_OF_GLOBAL,"*",err,error))//"." + CALL FlagError(LOCAL_ERROR,err,error,*999) ENDIF ELSE - CALL FlagError("Domain mapping is not associated.",ERR,ERROR,*999) + CALL FlagError("Domain mapping is not associated.",err,error,*999) ENDIF EXITS("DOMAIN_MAPPINGS_GLOBAL_TO_LOCAL_GET") RETURN -999 ERRORSEXITS("DOMAIN_MAPPINGS_GLOBAL_TO_LOCAL_GET",ERR,ERROR) +999 ERRORSEXITS("DOMAIN_MAPPINGS_GLOBAL_TO_LOCAL_GET",err,error) RETURN 1 END SUBROUTINE DOMAIN_MAPPINGS_GLOBAL_TO_LOCAL_GET @@ -184,15 +186,15 @@ END SUBROUTINE DOMAIN_MAPPINGS_GLOBAL_TO_LOCAL_GET ! !>Calculates the domain mappings local map from a domain mappings global map. - SUBROUTINE DOMAIN_MAPPINGS_LOCAL_FROM_GLOBAL_CALCULATE(DOMAIN_MAPPING,ERR,ERROR,*) + SUBROUTINE DOMAIN_MAPPINGS_LOCAL_FROM_GLOBAL_CALCULATE(DOMAIN_MAPPING,err,error,*) !Argument variables TYPE(DOMAIN_MAPPING_TYPE), POINTER :: DOMAIN_MAPPING !0) THEN TOTAL_NUMBER_OF_ADJACENT_DOMAINS=TOTAL_NUMBER_OF_ADJACENT_DOMAINS+1 - IF(domain_no==myComputationalNodeNumber) NUMBER_OF_ADJACENT_DOMAINS=NUMBER_OF_ADJACENT_DOMAINS+1 + IF(domain_no==myGroupComputationNodeNumber) NUMBER_OF_ADJACENT_DOMAINS=NUMBER_OF_ADJACENT_DOMAINS+1 ENDIF ENDIF ENDDO !domain_no2 ENDDO !domain_no ALLOCATE(DOMAIN_MAPPING%ADJACENT_DOMAINS_PTR(0:DOMAIN_MAPPING%NUMBER_OF_DOMAINS),STAT=ERR) - IF(ERR/=0) CALL FlagError("Could not allocate adjacent domains ptr.",ERR,ERROR,*999) + IF(ERR/=0) CALL FlagError("Could not allocate adjacent domains ptr.",err,error,*999) ALLOCATE(DOMAIN_MAPPING%ADJACENT_DOMAINS_LIST(TOTAL_NUMBER_OF_ADJACENT_DOMAINS),STAT=ERR) - IF(ERR/=0) CALL FlagError("Could not allocate adjacent domains list.",ERR,ERROR,*999) + IF(ERR/=0) CALL FlagError("Could not allocate adjacent domains list.",err,error,*999) ! store the adjacent domains for a domain in ADJACENT_DOMAINS_LIST starting at index COUNT and store the starting index COUNT in ADJACENT_DOMAINS_PTR ! the adjacent domains for a domain are then ADJACENT_DOMAINS_LIST(ADJACENT_DOMAINS_PTR(domain) : ADJACENT_DOMAINS_PTR(domain+1)) @@ -333,9 +335,9 @@ SUBROUTINE DOMAIN_MAPPINGS_LOCAL_FROM_GLOBAL_CALCULATE(DOMAIN_MAPPING,ERR,ERROR, !compute domain list for my computational node ALLOCATE(DOMAIN_MAPPING%DOMAIN_LIST(NUMBER_INTERNAL+NUMBER_BOUNDARY+NUMBER_GHOST),STAT=ERR) - IF(ERR/=0) CALL FlagError("Could not allocate domain map domain list.",ERR,ERROR,*999) + IF(ERR/=0) CALL FlagError("Could not allocate domain map domain list.",err,error,*999) ALLOCATE(DOMAIN_MAPPING%LOCAL_TO_GLOBAL_MAP(NUMBER_INTERNAL+NUMBER_BOUNDARY+NUMBER_GHOST),STAT=ERR) - IF(ERR/=0) CALL FlagError("Could not allocate domain map local to global list.",ERR,ERROR,*999) + IF(ERR/=0) CALL FlagError("Could not allocate domain map local to global list.",err,error,*999) !set constants DOMAIN_MAPPING%TOTAL_NUMBER_OF_LOCAL=NUMBER_INTERNAL+NUMBER_BOUNDARY+NUMBER_GHOST @@ -352,47 +354,46 @@ SUBROUTINE DOMAIN_MAPPINGS_LOCAL_FROM_GLOBAL_CALCULATE(DOMAIN_MAPPING,ERR,ERROR, ! adjacent_domains maps a domain index (index between 1 and DOMAIN_MAPPING%NUMBER_OF_ADJACENT_DOMAINS) to the domain number ALLOCATE(DOMAIN_MAPPING%ADJACENT_DOMAINS(NUMBER_OF_ADJACENT_DOMAINS),STAT=ERR) - IF(ERR/=0) CALL FlagError("Could not allocate adjacent domains.",ERR,ERROR,*999) + IF(ERR/=0) CALL FlagError("Could not allocate adjacent domains.",err,error,*999) DOMAIN_MAPPING%NUMBER_OF_ADJACENT_DOMAINS=NUMBER_OF_ADJACENT_DOMAINS ! adjacent_domain_map maps a domain number back to its index (index between 1 and DOMAIN_MAPPING%NUMBER_OF_ADJACENT_DOMAINS) ALLOCATE(ADJACENT_DOMAIN_MAP(0:DOMAIN_MAPPING%NUMBER_OF_DOMAINS-1),STAT=ERR) - IF(ERR/=0) CALL FlagError("Could not allocate adjacent domain map.",ERR,ERROR,*999) + IF(ERR/=0) CALL FlagError("Could not allocate adjacent domain map.",err,error,*999) ! ghost_send_lists contains a list for each adjacent domain with elements in my domain (by local element numbers) that will be sent to that foreign domain ALLOCATE(GHOST_SEND_LISTS(DOMAIN_MAPPING%NUMBER_OF_ADJACENT_DOMAINS),STAT=ERR) - IF(ERR/=0) CALL FlagError("Could not allocate ghost send list.",ERR,ERROR,*999) + IF(ERR/=0) CALL FlagError("Could not allocate ghost send list.",err,error,*999) ! ghost_receive_lists contains a list for each adjacent domain and contains the local numbers of ghost elements that can be received from that foreign domain ALLOCATE(GHOST_RECEIVE_LISTS(DOMAIN_MAPPING%NUMBER_OF_ADJACENT_DOMAINS),STAT=ERR) - IF(ERR/=0) CALL FlagError("Could not allocate ghost recieve list.",ERR,ERROR,*999) + IF(ERR/=0) CALL FlagError("Could not allocate ghost recieve list.",err,error,*999) ! set adjacent domains data structures and initialize ghost send and receive lists ! loop over adjacent domains of my computational node DO domain_idx=1,DOMAIN_MAPPING%NUMBER_OF_ADJACENT_DOMAINS ! set variables to 0 - CALL DOMAIN_MAPPINGS_ADJACENT_DOMAIN_INITIALISE(DOMAIN_MAPPING%ADJACENT_DOMAINS(domain_idx),ERR,ERROR,*999) + CALL DOMAIN_MAPPINGS_ADJACENT_DOMAIN_INITIALISE(DOMAIN_MAPPING%ADJACENT_DOMAINS(domain_idx),err,error,*999) ! get number of current adjacent domain domain_no= & - & DOMAIN_MAPPING%ADJACENT_DOMAINS_LIST(DOMAIN_MAPPING%ADJACENT_DOMAINS_PTR(myComputationalNodeNumber)+domain_idx-1) - + & DOMAIN_MAPPING%ADJACENT_DOMAINS_LIST(DOMAIN_MAPPING%ADJACENT_DOMAINS_PTR(myGroupComputationNodeNumber)+domain_idx-1) ! set number in adjacent_domains and adjacent_domain_map DOMAIN_MAPPING%ADJACENT_DOMAINS(domain_idx)%DOMAIN_NUMBER=domain_no ADJACENT_DOMAIN_MAP(domain_no)=domain_idx ! initialize send and receive lists for ghosts NULLIFY(GHOST_SEND_LISTS(domain_idx)%PTR) - CALL LIST_CREATE_START(GHOST_SEND_LISTS(domain_idx)%PTR,ERR,ERROR,*999) - CALL LIST_DATA_TYPE_SET(GHOST_SEND_LISTS(domain_idx)%PTR,LIST_INTG_TYPE,ERR,ERROR,*999) - CALL LIST_INITIAL_SIZE_SET(GHOST_SEND_LISTS(domain_idx)%PTR,MAX(DOMAIN_MAPPING%NUMBER_OF_GHOST,1),ERR,ERROR,*999) - CALL LIST_CREATE_FINISH(GHOST_SEND_LISTS(domain_idx)%PTR,ERR,ERROR,*999) + CALL LIST_CREATE_START(GHOST_SEND_LISTS(domain_idx)%PTR,err,error,*999) + CALL LIST_DATA_TYPE_SET(GHOST_SEND_LISTS(domain_idx)%PTR,LIST_INTG_TYPE,err,error,*999) + CALL LIST_INITIAL_SIZE_SET(GHOST_SEND_LISTS(domain_idx)%PTR,MAX(DOMAIN_MAPPING%NUMBER_OF_GHOST,1),err,error,*999) + CALL LIST_CREATE_FINISH(GHOST_SEND_LISTS(domain_idx)%PTR,err,error,*999) NULLIFY(GHOST_RECEIVE_LISTS(domain_idx)%PTR) - CALL LIST_CREATE_START(GHOST_RECEIVE_LISTS(domain_idx)%PTR,ERR,ERROR,*999) - CALL LIST_DATA_TYPE_SET(GHOST_RECEIVE_LISTS(domain_idx)%PTR,LIST_INTG_TYPE,ERR,ERROR,*999) - CALL LIST_INITIAL_SIZE_SET(GHOST_RECEIVE_LISTS(domain_idx)%PTR,MAX(DOMAIN_MAPPING%NUMBER_OF_GHOST,1),ERR,ERROR,*999) - CALL LIST_CREATE_FINISH(GHOST_RECEIVE_LISTS(domain_idx)%PTR,ERR,ERROR,*999) + CALL LIST_CREATE_START(GHOST_RECEIVE_LISTS(domain_idx)%PTR,err,error,*999) + CALL LIST_DATA_TYPE_SET(GHOST_RECEIVE_LISTS(domain_idx)%PTR,LIST_INTG_TYPE,err,error,*999) + CALL LIST_INITIAL_SIZE_SET(GHOST_RECEIVE_LISTS(domain_idx)%PTR,MAX(DOMAIN_MAPPING%NUMBER_OF_GHOST,1),err,error,*999) + CALL LIST_CREATE_FINISH(GHOST_RECEIVE_LISTS(domain_idx)%PTR,err,error,*999) ENDDO !domain_idx NUMBER_INTERNAL=0 @@ -430,22 +431,22 @@ SUBROUTINE DOMAIN_MAPPINGS_LOCAL_FROM_GLOBAL_CALCULATE(DOMAIN_MAPPING,ERR,ERROR, local_type=DOMAIN_MAPPING%GLOBAL_TO_LOCAL_MAP(global_number)%LOCAL_TYPE(domain_idx) IF(local_type/=DOMAIN_LOCAL_GHOST) THEN - IF(domain_no==myComputationalNodeNumber) SEND_GLOBAL=.TRUE. + IF(domain_no==myGroupComputationNodeNumber) SEND_GLOBAL=.TRUE. IF(RECEIVE_FROM_DOMAIN==-1) THEN RECEIVE_FROM_DOMAIN=domain_no ELSE - LOCAL_ERROR="Invalid domain mapping. Global number "//TRIM(NUMBER_TO_VSTRING(global_number,"*",ERR,ERROR))// & - & " is owned by domain number "//TRIM(NUMBER_TO_VSTRING(RECEIVE_FROM_DOMAIN,"*",ERR,ERROR))// & - & " as well as domain number "//TRIM(NUMBER_TO_VSTRING(domain_no,"*",ERR,ERROR))//"." - CALL FlagError(LOCAL_ERROR,ERR,ERROR,*999) + LOCAL_ERROR="Invalid domain mapping. Global number "//TRIM(NUMBER_TO_VSTRING(global_number,"*",err,error))// & + & " is owned by domain number "//TRIM(NUMBER_TO_VSTRING(RECEIVE_FROM_DOMAIN,"*",err,error))// & + & " as well as domain number "//TRIM(NUMBER_TO_VSTRING(domain_no,"*",err,error))//"." + CALL FlagError(LOCAL_ERROR,err,error,*999) ENDIF ENDIF ENDDO !domain_idx IF(RECEIVE_FROM_DOMAIN==-1) THEN - LOCAL_ERROR="Invalid domain mapping. Global number "//TRIM(NUMBER_TO_VSTRING(global_number,"*",ERR,ERROR))// & + LOCAL_ERROR="Invalid domain mapping. Global number "//TRIM(NUMBER_TO_VSTRING(global_number,"*",err,error))// & & " is not owned by any domain." - CALL FlagError(LOCAL_ERROR,ERR,ERROR,*999) + CALL FlagError(LOCAL_ERROR,err,error,*999) ENDIF ENDIF ENDIF @@ -456,7 +457,7 @@ SUBROUTINE DOMAIN_MAPPINGS_LOCAL_FROM_GLOBAL_CALCULATE(DOMAIN_MAPPING,ERR,ERROR, local_number=DOMAIN_MAPPING%GLOBAL_TO_LOCAL_MAP(global_number)%LOCAL_NUMBER(domain_idx) local_type=DOMAIN_MAPPING%GLOBAL_TO_LOCAL_MAP(global_number)%LOCAL_TYPE(domain_idx) - IF(domain_no==myComputationalNodeNumber) THEN + IF(domain_no==myGroupComputationNodeNumber) THEN ! set local number DOMAIN_MAPPING%LOCAL_TO_GLOBAL_MAP(local_number)=global_number @@ -473,16 +474,16 @@ SUBROUTINE DOMAIN_MAPPINGS_LOCAL_FROM_GLOBAL_CALCULATE(DOMAIN_MAPPING,ERR,ERROR, DOMAIN_MAPPING%DOMAIN_LIST(DOMAIN_MAPPING%BOUNDARY_FINISH+NUMBER_GHOST)=local_number ! add local number of ghost element to receive list of domain from which to receive - CALL LIST_ITEM_ADD(GHOST_RECEIVE_LISTS(ADJACENT_DOMAIN_MAP(RECEIVE_FROM_DOMAIN))%PTR,local_number,ERR,ERROR,*999) + CALL LIST_ITEM_ADD(GHOST_RECEIVE_LISTS(ADJACENT_DOMAIN_MAP(RECEIVE_FROM_DOMAIN))%PTR,local_number,err,error,*999) CASE DEFAULT LOCAL_ERROR="The domain local type of "//TRIM(NUMBER_TO_VSTRING(DOMAIN_MAPPING%GLOBAL_TO_LOCAL_MAP( & - & global_number)%LOCAL_TYPE(domain_idx),"*",ERR,ERROR))//" is invalid." - CALL FlagError(LOCAL_ERROR,ERR,ERROR,*999) + & global_number)%LOCAL_TYPE(domain_idx),"*",err,error))//" is invalid." + CALL FlagError(LOCAL_ERROR,err,error,*999) END SELECT ELSE IF(SEND_GLOBAL.AND.local_type==DOMAIN_LOCAL_GHOST) THEN local_number2=DOMAIN_MAPPING%GLOBAL_TO_LOCAL_MAP(global_number)%LOCAL_NUMBER(1) !The local number for this node - CALL LIST_ITEM_ADD(GHOST_SEND_LISTS(ADJACENT_DOMAIN_MAP(domain_no))%PTR,local_number2,ERR,ERROR,*999) + CALL LIST_ITEM_ADD(GHOST_SEND_LISTS(ADJACENT_DOMAIN_MAP(domain_no))%PTR,local_number2,err,error,*999) ENDIF ENDDO !domain_idx ENDDO !global_number @@ -491,11 +492,11 @@ SUBROUTINE DOMAIN_MAPPINGS_LOCAL_FROM_GLOBAL_CALCULATE(DOMAIN_MAPPING,ERR,ERROR, DO domain_idx=1,DOMAIN_MAPPING%NUMBER_OF_ADJACENT_DOMAINS ! transfer the ghost_send_list for adjacent domain to LOCAL_GHOST_SEND_INDICES - CALL LIST_REMOVE_DUPLICATES(GHOST_SEND_LISTS(domain_idx)%PTR,ERR,ERROR,*999) - CALL LIST_DETACH_AND_DESTROY(GHOST_SEND_LISTS(domain_idx)%PTR,NUMBER_OF_GHOST_SEND,SEND_LIST,ERR,ERROR,*999) + CALL LIST_REMOVE_DUPLICATES(GHOST_SEND_LISTS(domain_idx)%PTR,err,error,*999) + CALL LIST_DETACH_AND_DESTROY(GHOST_SEND_LISTS(domain_idx)%PTR,NUMBER_OF_GHOST_SEND,SEND_LIST,err,error,*999) ALLOCATE(DOMAIN_MAPPING%ADJACENT_DOMAINS(domain_idx)%LOCAL_GHOST_SEND_INDICES(NUMBER_OF_GHOST_SEND),STAT=ERR) - IF(ERR/=0) CALL FlagError("Could not allocate local ghost send inidices.",ERR,ERROR,*999) + IF(ERR/=0) CALL FlagError("Could not allocate local ghost send inidices.",err,error,*999) DOMAIN_MAPPING%ADJACENT_DOMAINS(domain_idx)%LOCAL_GHOST_SEND_INDICES(1:NUMBER_OF_GHOST_SEND)= & & SEND_LIST(1:NUMBER_OF_GHOST_SEND) @@ -504,11 +505,11 @@ SUBROUTINE DOMAIN_MAPPINGS_LOCAL_FROM_GLOBAL_CALCULATE(DOMAIN_MAPPING,ERR,ERROR, DEALLOCATE(SEND_LIST) ! transfer the ghost_receive_lists for the current adjacent domain to LOCAL_GHOST_RECEIVE_INDICES - CALL LIST_REMOVE_DUPLICATES(GHOST_RECEIVE_LISTS(domain_idx)%PTR,ERR,ERROR,*999) - CALL LIST_DETACH_AND_DESTROY(GHOST_RECEIVE_LISTS(domain_idx)%PTR,NUMBER_OF_GHOST_RECEIVE,RECEIVE_LIST,ERR,ERROR,*999) + CALL LIST_REMOVE_DUPLICATES(GHOST_RECEIVE_LISTS(domain_idx)%PTR,err,error,*999) + CALL LIST_DETACH_AND_DESTROY(GHOST_RECEIVE_LISTS(domain_idx)%PTR,NUMBER_OF_GHOST_RECEIVE,RECEIVE_LIST,err,error,*999) ALLOCATE(DOMAIN_MAPPING%ADJACENT_DOMAINS(domain_idx)%LOCAL_GHOST_RECEIVE_INDICES(NUMBER_OF_GHOST_RECEIVE),STAT=ERR) - IF(ERR/=0) CALL FlagError("Could not allocate local ghost receive inidices.",ERR,ERROR,*999) + IF(ERR/=0) CALL FlagError("Could not allocate local ghost receive inidices.",err,error,*999) DOMAIN_MAPPING%ADJACENT_DOMAINS(domain_idx)%LOCAL_GHOST_RECEIVE_INDICES(1:NUMBER_OF_GHOST_RECEIVE)= & & RECEIVE_LIST(1:NUMBER_OF_GHOST_RECEIVE) @@ -523,83 +524,83 @@ SUBROUTINE DOMAIN_MAPPINGS_LOCAL_FROM_GLOBAL_CALCULATE(DOMAIN_MAPPING,ERR,ERROR, DEALLOCATE(GHOST_RECEIVE_LISTS) IF(DIAGNOSTICS1) THEN - CALL WRITE_STRING(DIAGNOSTIC_OUTPUT_TYPE,"Domain mappings:",ERR,ERROR,*999) - CALL WRITE_STRING_VALUE(DIAGNOSTIC_OUTPUT_TYPE," Number of domains = ",DOMAIN_MAPPING%NUMBER_OF_DOMAINS,ERR,ERROR,*999) - CALL WRITE_STRING_VALUE(DIAGNOSTIC_OUTPUT_TYPE," Number of global = ",DOMAIN_MAPPING%NUMBER_OF_GLOBAL,ERR,ERROR,*999) - CALL WRITE_STRING_VALUE(DIAGNOSTIC_OUTPUT_TYPE," Number of local = ",DOMAIN_MAPPING%NUMBER_OF_LOCAL,ERR,ERROR,*999) + CALL WRITE_STRING(DIAGNOSTIC_OUTPUT_TYPE,"Domain mappings:",err,error,*999) + CALL WRITE_STRING_VALUE(DIAGNOSTIC_OUTPUT_TYPE," Number of domains = ",DOMAIN_MAPPING%NUMBER_OF_DOMAINS,err,error,*999) + CALL WRITE_STRING_VALUE(DIAGNOSTIC_OUTPUT_TYPE," Number of global = ",DOMAIN_MAPPING%NUMBER_OF_GLOBAL,err,error,*999) + CALL WRITE_STRING_VALUE(DIAGNOSTIC_OUTPUT_TYPE," Number of local = ",DOMAIN_MAPPING%NUMBER_OF_LOCAL,err,error,*999) CALL WRITE_STRING_VALUE(DIAGNOSTIC_OUTPUT_TYPE," Total number of local = ",DOMAIN_MAPPING%TOTAL_NUMBER_OF_LOCAL, & - & ERR,ERROR,*999) - CALL WRITE_STRING(DIAGNOSTIC_OUTPUT_TYPE," Domain numbers:",ERR,ERROR,*999) + & err,error,*999) + CALL WRITE_STRING(DIAGNOSTIC_OUTPUT_TYPE," Domain numbers:",err,error,*999) CALL WRITE_STRING_VECTOR(DIAGNOSTIC_OUTPUT_TYPE,1,1,DOMAIN_MAPPING%NUMBER_OF_DOMAINS,8,8,DOMAIN_MAPPING% & - & NUMBER_OF_DOMAIN_LOCAL,'(" Number of domain local :",8(X,I10))','(26X,8(X,I10))',ERR,ERROR,*999) + & NUMBER_OF_DOMAIN_LOCAL,'(" Number of domain local :",8(X,I10))','(26X,8(X,I10))',err,error,*999) CALL WRITE_STRING_VECTOR(DIAGNOSTIC_OUTPUT_TYPE,1,1,DOMAIN_MAPPING%NUMBER_OF_DOMAINS,8,8,DOMAIN_MAPPING% & - & NUMBER_OF_DOMAIN_GHOST,'(" Number of domain ghost :",8(X,I10))','(26X,8(X,I10))',ERR,ERROR,*999) - CALL WRITE_STRING(DIAGNOSTIC_OUTPUT_TYPE," Domain list:",ERR,ERROR,*999) - CALL WRITE_STRING_VALUE(DIAGNOSTIC_OUTPUT_TYPE," Number of internal = ",DOMAIN_MAPPING%NUMBER_OF_INTERNAL,ERR,ERROR,*999) - CALL WRITE_STRING_VALUE(DIAGNOSTIC_OUTPUT_TYPE," Number of boundary = ",DOMAIN_MAPPING%NUMBER_OF_BOUNDARY,ERR,ERROR,*999) - CALL WRITE_STRING_VALUE(DIAGNOSTIC_OUTPUT_TYPE," Number of ghost = ",DOMAIN_MAPPING%NUMBER_OF_GHOST,ERR,ERROR,*999) - CALL WRITE_STRING_VALUE(DIAGNOSTIC_OUTPUT_TYPE," Internal start = ",DOMAIN_MAPPING%INTERNAL_START,ERR,ERROR,*999) - CALL WRITE_STRING_VALUE(DIAGNOSTIC_OUTPUT_TYPE," Internal finish = ",DOMAIN_MAPPING%INTERNAL_FINISH,ERR,ERROR,*999) - CALL WRITE_STRING_VALUE(DIAGNOSTIC_OUTPUT_TYPE," Boundary start = ",DOMAIN_MAPPING%BOUNDARY_START,ERR,ERROR,*999) - CALL WRITE_STRING_VALUE(DIAGNOSTIC_OUTPUT_TYPE," Boundary finish = ",DOMAIN_MAPPING%BOUNDARY_FINISH,ERR,ERROR,*999) - CALL WRITE_STRING_VALUE(DIAGNOSTIC_OUTPUT_TYPE," Ghost start = ",DOMAIN_MAPPING%GHOST_START,ERR,ERROR,*999) - CALL WRITE_STRING_VALUE(DIAGNOSTIC_OUTPUT_TYPE," Ghost finish = ",DOMAIN_MAPPING%GHOST_FINISH,ERR,ERROR,*999) + & NUMBER_OF_DOMAIN_GHOST,'(" Number of domain ghost :",8(X,I10))','(26X,8(X,I10))',err,error,*999) + CALL WRITE_STRING(DIAGNOSTIC_OUTPUT_TYPE," Domain list:",err,error,*999) + CALL WRITE_STRING_VALUE(DIAGNOSTIC_OUTPUT_TYPE," Number of internal = ",DOMAIN_MAPPING%NUMBER_OF_INTERNAL,err,error,*999) + CALL WRITE_STRING_VALUE(DIAGNOSTIC_OUTPUT_TYPE," Number of boundary = ",DOMAIN_MAPPING%NUMBER_OF_BOUNDARY,err,error,*999) + CALL WRITE_STRING_VALUE(DIAGNOSTIC_OUTPUT_TYPE," Number of ghost = ",DOMAIN_MAPPING%NUMBER_OF_GHOST,err,error,*999) + CALL WRITE_STRING_VALUE(DIAGNOSTIC_OUTPUT_TYPE," Internal start = ",DOMAIN_MAPPING%INTERNAL_START,err,error,*999) + CALL WRITE_STRING_VALUE(DIAGNOSTIC_OUTPUT_TYPE," Internal finish = ",DOMAIN_MAPPING%INTERNAL_FINISH,err,error,*999) + CALL WRITE_STRING_VALUE(DIAGNOSTIC_OUTPUT_TYPE," Boundary start = ",DOMAIN_MAPPING%BOUNDARY_START,err,error,*999) + CALL WRITE_STRING_VALUE(DIAGNOSTIC_OUTPUT_TYPE," Boundary finish = ",DOMAIN_MAPPING%BOUNDARY_FINISH,err,error,*999) + CALL WRITE_STRING_VALUE(DIAGNOSTIC_OUTPUT_TYPE," Ghost start = ",DOMAIN_MAPPING%GHOST_START,err,error,*999) + CALL WRITE_STRING_VALUE(DIAGNOSTIC_OUTPUT_TYPE," Ghost finish = ",DOMAIN_MAPPING%GHOST_FINISH,err,error,*999) CALL WRITE_STRING_VECTOR(DIAGNOSTIC_OUTPUT_TYPE,DOMAIN_MAPPING%INTERNAL_START,1,DOMAIN_MAPPING%INTERNAL_FINISH,8,8, & - & DOMAIN_MAPPING%DOMAIN_LIST,'(" Internal list :",8(X,I10))','(19X,8(X,I10))',ERR,ERROR,*999) + & DOMAIN_MAPPING%DOMAIN_LIST,'(" Internal list :",8(X,I10))','(19X,8(X,I10))',err,error,*999) CALL WRITE_STRING_VECTOR(DIAGNOSTIC_OUTPUT_TYPE,DOMAIN_MAPPING%BOUNDARY_START,1,DOMAIN_MAPPING%BOUNDARY_FINISH,8,8, & - & DOMAIN_MAPPING%DOMAIN_LIST,'(" Boundary list :",8(X,I10))','(19X,8(X,I10))',ERR,ERROR,*999) + & DOMAIN_MAPPING%DOMAIN_LIST,'(" Boundary list :",8(X,I10))','(19X,8(X,I10))',err,error,*999) CALL WRITE_STRING_VECTOR(DIAGNOSTIC_OUTPUT_TYPE,DOMAIN_MAPPING%GHOST_START,1,DOMAIN_MAPPING%GHOST_FINISH,8,8, & - & DOMAIN_MAPPING%DOMAIN_LIST,'(" Ghost list :",8(X,I10))','(19X,8(X,I10))',ERR,ERROR,*999) - CALL WRITE_STRING(DIAGNOSTIC_OUTPUT_TYPE," Local to global map:",ERR,ERROR,*999) + & DOMAIN_MAPPING%DOMAIN_LIST,'(" Ghost list :",8(X,I10))','(19X,8(X,I10))',err,error,*999) + CALL WRITE_STRING(DIAGNOSTIC_OUTPUT_TYPE," Local to global map:",err,error,*999) DO idx=1,DOMAIN_MAPPING%TOTAL_NUMBER_OF_LOCAL - CALL WRITE_STRING_VALUE(DIAGNOSTIC_OUTPUT_TYPE," Local index : ",idx,ERR,ERROR,*999) + CALL WRITE_STRING_VALUE(DIAGNOSTIC_OUTPUT_TYPE," Local index : ",idx,err,error,*999) CALL WRITE_STRING_VALUE(DIAGNOSTIC_OUTPUT_TYPE," Global index = ",DOMAIN_MAPPING%LOCAL_TO_GLOBAL_MAP(idx), & - & ERR,ERROR,*999) + & err,error,*999) ENDDO !idx - CALL WRITE_STRING(DIAGNOSTIC_OUTPUT_TYPE," Global to local map:",ERR,ERROR,*999) + CALL WRITE_STRING(DIAGNOSTIC_OUTPUT_TYPE," Global to local map:",err,error,*999) DO idx=1,DOMAIN_MAPPING%NUMBER_OF_GLOBAL - CALL WRITE_STRING_VALUE(DIAGNOSTIC_OUTPUT_TYPE," Global idx : ",idx,ERR,ERROR,*999) + CALL WRITE_STRING_VALUE(DIAGNOSTIC_OUTPUT_TYPE," Global idx : ",idx,err,error,*999) CALL WRITE_STRING_VALUE(DIAGNOSTIC_OUTPUT_TYPE," Number of domains = ", & - & DOMAIN_MAPPING%GLOBAL_TO_LOCAL_MAP(idx)%NUMBER_OF_DOMAINS,ERR,ERROR,*999) + & DOMAIN_MAPPING%GLOBAL_TO_LOCAL_MAP(idx)%NUMBER_OF_DOMAINS,err,error,*999) CALL WRITE_STRING_VECTOR(DIAGNOSTIC_OUTPUT_TYPE,1,1,DOMAIN_MAPPING%GLOBAL_TO_LOCAL_MAP(idx)% & & NUMBER_OF_DOMAINS,8,8,DOMAIN_MAPPING%GLOBAL_TO_LOCAL_MAP(idx)%LOCAL_NUMBER, & - & '(" Local number :",8(X,I10))','(21X,8(X,I10))',ERR,ERROR,*999) + & '(" Local number :",8(X,I10))','(21X,8(X,I10))',err,error,*999) CALL WRITE_STRING_VECTOR(DIAGNOSTIC_OUTPUT_TYPE,1,1,DOMAIN_MAPPING%GLOBAL_TO_LOCAL_MAP(idx)% & & NUMBER_OF_DOMAINS,8,8,DOMAIN_MAPPING%GLOBAL_TO_LOCAL_MAP(idx)%DOMAIN_NUMBER, & - & '(" Domain number :",8(X,I10))','(21X,8(X,I10))',ERR,ERROR,*999) + & '(" Domain number :",8(X,I10))','(21X,8(X,I10))',err,error,*999) CALL WRITE_STRING_VECTOR(DIAGNOSTIC_OUTPUT_TYPE,1,1,DOMAIN_MAPPING%GLOBAL_TO_LOCAL_MAP(idx)% & & NUMBER_OF_DOMAINS,8,8,DOMAIN_MAPPING%GLOBAL_TO_LOCAL_MAP(IDX)%LOCAL_TYPE, & - & '(" Local type :",8(X,I10))','(21X,8(X,I10))',ERR,ERROR,*999) + & '(" Local type :",8(X,I10))','(21X,8(X,I10))',err,error,*999) ENDDO !ne - CALL WRITE_STRING(DIAGNOSTIC_OUTPUT_TYPE," Adjacent domains:",ERR,ERROR,*999) + CALL WRITE_STRING(DIAGNOSTIC_OUTPUT_TYPE," Adjacent domains:",err,error,*999) CALL WRITE_STRING_VALUE(DIAGNOSTIC_OUTPUT_TYPE," Number of adjacent domains = ", & - & DOMAIN_MAPPING%NUMBER_OF_ADJACENT_DOMAINS,ERR,ERROR,*999) + & DOMAIN_MAPPING%NUMBER_OF_ADJACENT_DOMAINS,err,error,*999) CALL WRITE_STRING_VECTOR(DIAGNOSTIC_OUTPUT_TYPE,1,1,DOMAIN_MAPPING%NUMBER_OF_DOMAINS+1,8,8, & - & DOMAIN_MAPPING%ADJACENT_DOMAINS_PTR,'(" Adjacent domains ptr :",8(X,I5))','(27X,8(X,I5))',ERR,ERROR,*999) + & DOMAIN_MAPPING%ADJACENT_DOMAINS_PTR,'(" Adjacent domains ptr :",8(X,I5))','(27X,8(X,I5))',err,error,*999) IF(DOMAIN_MAPPING%NUMBER_OF_ADJACENT_DOMAINS>0) THEN CALL WRITE_STRING_VECTOR(DIAGNOSTIC_OUTPUT_TYPE,1,1,DOMAIN_MAPPING%ADJACENT_DOMAINS_PTR( & & DOMAIN_MAPPING%NUMBER_OF_DOMAINS)-1,8,8,DOMAIN_MAPPING%ADJACENT_DOMAINS_LIST, & - '(" Adjacent domains list :",8(X,I5))','(27X,8(X,I5))',ERR,ERROR,*999) + '(" Adjacent domains list :",8(X,I5))','(27X,8(X,I5))',err,error,*999) DO domain_idx=1,DOMAIN_MAPPING%NUMBER_OF_ADJACENT_DOMAINS - CALL WRITE_STRING_VALUE(DIAGNOSTIC_OUTPUT_TYPE," Adjacent domain idx : ",domain_idx,ERR,ERROR,*999) + CALL WRITE_STRING_VALUE(DIAGNOSTIC_OUTPUT_TYPE," Adjacent domain idx : ",domain_idx,err,error,*999) CALL WRITE_STRING_VALUE(DIAGNOSTIC_OUTPUT_TYPE," Domain number = ", & - & DOMAIN_MAPPING%ADJACENT_DOMAINS(domain_idx)%DOMAIN_NUMBER,ERR,ERROR,*999) + & DOMAIN_MAPPING%ADJACENT_DOMAINS(domain_idx)%DOMAIN_NUMBER,err,error,*999) CALL WRITE_STRING_VALUE(DIAGNOSTIC_OUTPUT_TYPE," Number of send ghosts = ", & - & DOMAIN_MAPPING%ADJACENT_DOMAINS(domain_idx)%NUMBER_OF_SEND_GHOSTS,ERR,ERROR,*999) + & DOMAIN_MAPPING%ADJACENT_DOMAINS(domain_idx)%NUMBER_OF_SEND_GHOSTS,err,error,*999) CALL WRITE_STRING_VECTOR(DIAGNOSTIC_OUTPUT_TYPE,1,1,DOMAIN_MAPPING%ADJACENT_DOMAINS(domain_idx)% & & NUMBER_OF_SEND_GHOSTS,8,8,DOMAIN_MAPPING%ADJACENT_DOMAINS(domain_idx)%LOCAL_GHOST_SEND_INDICES, & - & '(" Local send ghost indices :",8(X,I10))','(39X,8(X,I10))',ERR,ERROR,*999) + & '(" Local send ghost indices :",8(X,I10))','(39X,8(X,I10))',err,error,*999) CALL WRITE_STRING_VALUE(DIAGNOSTIC_OUTPUT_TYPE," Number of receive ghosts = ", & - & DOMAIN_MAPPING%ADJACENT_DOMAINS(domain_idx)%NUMBER_OF_RECEIVE_GHOSTS,ERR,ERROR,*999) + & DOMAIN_MAPPING%ADJACENT_DOMAINS(domain_idx)%NUMBER_OF_RECEIVE_GHOSTS,err,error,*999) CALL WRITE_STRING_VECTOR(DIAGNOSTIC_OUTPUT_TYPE,1,1,DOMAIN_MAPPING%ADJACENT_DOMAINS(domain_idx)% & & NUMBER_OF_RECEIVE_GHOSTS,8,8,DOMAIN_MAPPING%ADJACENT_DOMAINS(domain_idx)%LOCAL_GHOST_RECEIVE_INDICES, & - & '(" Local receive ghost indices :",8(X,I10))','(39X,8(X,I10))',ERR,ERROR,*999) + & '(" Local receive ghost indices :",8(X,I10))','(39X,8(X,I10))',err,error,*999) ENDDO !domain_idx ENDIF ENDIF ELSE - CALL FlagError("Domain mapping is not associated.",ERR,ERROR,*999) + CALL FlagError("Domain mapping is not associated.",err,error,*999) ENDIF EXITS("DOMAIN_MAPPINGS_LOCAL_FROM_GLOBAL_CALCULATE") @@ -622,7 +623,7 @@ SUBROUTINE DOMAIN_MAPPINGS_LOCAL_FROM_GLOBAL_CALCULATE(DOMAIN_MAPPING,ERR,ERROR, ENDDO ! domain_idx 997 DEALLOCATE(GHOST_RECEIVE_LISTS) ENDIF - ERRORSEXITS("DOMAIN_MAPPINGS_LOCAL_FROM_GLOBAL_CALCULATE",ERR,ERROR) + ERRORSEXITS("DOMAIN_MAPPINGS_LOCAL_FROM_GLOBAL_CALCULATE",err,error) RETURN 1 END SUBROUTINE DOMAIN_MAPPINGS_LOCAL_FROM_GLOBAL_CALCULATE @@ -632,16 +633,16 @@ END SUBROUTINE DOMAIN_MAPPINGS_LOCAL_FROM_GLOBAL_CALCULATE ! !>Finalises the mapping for a domain mappings mapping and deallocates all memory. - SUBROUTINE DOMAIN_MAPPINGS_MAPPING_FINALISE(DOMAIN_MAPPING,ERR,ERROR,*) + SUBROUTINE DOMAIN_MAPPINGS_MAPPING_FINALISE(DOMAIN_MAPPING,err,error,*) !Argument variables TYPE(DOMAIN_MAPPING_TYPE), POINTER :: DOMAIN_MAPPING ! Finalises the global mapping in the given domain mappings. - SUBROUTINE DOMAIN_MAPPINGS_MAPPING_GLOBAL_FINALISE(MAPPING_GLOBAL_MAP,ERR,ERROR,*) + SUBROUTINE DOMAIN_MAPPINGS_MAPPING_GLOBAL_FINALISE(MAPPING_GLOBAL_MAP,err,error,*) !Argument variables TYPE(DOMAIN_GLOBAL_MAPPING_TYPE) :: MAPPING_GLOBAL_MAP !Finalises the global mapping in the given domain mappings. - SUBROUTINE DOMAIN_MAPPINGS_MAPPING_GLOBAL_INITIALISE(MAPPING_GLOBAL_MAP,ERR,ERROR,*) + SUBROUTINE DOMAIN_MAPPINGS_MAPPING_GLOBAL_INITIALISE(MAPPING_GLOBAL_MAP,err,error,*) !Argument variables TYPE(DOMAIN_GLOBAL_MAPPING_TYPE) :: MAPPING_GLOBAL_MAP !Initialises the mapping for a domain mappings mapping. - SUBROUTINE DOMAIN_MAPPINGS_MAPPING_INITIALISE(DOMAIN_MAPPING,NUMBER_OF_DOMAINS,ERR,ERROR,*) + SUBROUTINE DomainMappings_MappingInitialise(workGroup,domainMapping,err,error,*) !Argument variables - TYPE(DOMAIN_MAPPING_TYPE), POINTER :: DOMAIN_MAPPING !0) THEN - DOMAIN_MAPPING%TOTAL_NUMBER_OF_LOCAL=0 - DOMAIN_MAPPING%NUMBER_OF_LOCAL=0 - DOMAIN_MAPPING%NUMBER_OF_GLOBAL=0 - DOMAIN_MAPPING%NUMBER_OF_DOMAINS=NUMBER_OF_DOMAINS - DOMAIN_MAPPING%NUMBER_OF_INTERNAL=0 - DOMAIN_MAPPING%NUMBER_OF_BOUNDARY=0 - DOMAIN_MAPPING%NUMBER_OF_GHOST=0 - DOMAIN_MAPPING%INTERNAL_START=0 - DOMAIN_MAPPING%INTERNAL_FINISH=0 - DOMAIN_MAPPING%BOUNDARY_START=0 - DOMAIN_MAPPING%BOUNDARY_FINISH=0 - DOMAIN_MAPPING%GHOST_START=0 - DOMAIN_MAPPING%GHOST_FINISH=0 - DOMAIN_MAPPING%NUMBER_OF_ADJACENT_DOMAINS=0 - ELSE - LOCAL_ERROR="The specified number of domains of "//TRIM(NUMBER_TO_VSTRING(NUMBER_OF_DOMAINS,"*",ERR,ERROR))// & - & " is invalid. The number of domains must be > 0." - CALL FlagError(LOCAL_ERROR,ERR,ERROR,*999) - ENDIF - ENDIF + INTEGER(INTG) :: numberOfDomains + + ENTERS("DomainMappings_MappingInitialise",err,error,*999) + + IF(.NOT.ASSOCIATED(workGroup)) CALL FlagError("WorkGroup is not associated.",err,error,*999) + IF(.NOT.ASSOCIATED(domainMapping)) CALL FlagError("Domain mapping is not associated.",err,error,*999) + + CALL WorkGroup_NumberOfGroupNodesGet(workGroup,numberOfDomains,err,error,*999) + + domainMapping%workGroup=>workGroup + domainMapping%TOTAL_NUMBER_OF_LOCAL=0 + domainMapping%NUMBER_OF_LOCAL=0 + domainMapping%NUMBER_OF_GLOBAL=0 + domainMapping%NUMBER_OF_DOMAINS=numberOfDomains + domainMapping%NUMBER_OF_INTERNAL=0 + domainMapping%NUMBER_OF_BOUNDARY=0 + domainMapping%NUMBER_OF_GHOST=0 + domainMapping%INTERNAL_START=0 + domainMapping%INTERNAL_FINISH=0 + domainMapping%BOUNDARY_START=0 + domainMapping%BOUNDARY_FINISH=0 + domainMapping%GHOST_START=0 + domainMapping%GHOST_FINISH=0 + domainMapping%NUMBER_OF_ADJACENT_DOMAINS=0 - EXITS("DOMAIN_MAPPINGS_MAPPING_INITIALISE") + EXITS("DomainMappings_MappingInitialise") RETURN -999 ERRORSEXITS("DOMAIN_MAPPINGS_MAPPING_INITIALISE",ERR,ERROR) +999 ERRORSEXITS("DomainMappings_MappingInitialise",err,error) RETURN 1 - END SUBROUTINE DOMAIN_MAPPINGS_MAPPING_INITIALISE + + END SUBROUTINE DomainMappings_MappingInitialise ! !================================================================================================================================ diff --git a/src/electrophysiology_cell_routines.f90 b/src/electrophysiology_cell_routines.f90 index 60ca1511..07b22352 100755 --- a/src/electrophysiology_cell_routines.f90 +++ b/src/electrophysiology_cell_routines.f90 @@ -43,11 +43,12 @@ module electrophysiology_cell_routines USE BaseRoutines - USE field_routines + USE FIELD_ROUTINES USE FieldAccessRoutines - use kinds - use strings - use types + USE ISO_VARYING_STRING + use Kinds + use Strings + use Types #include "macros.h" diff --git a/src/equations_access_routines.f90 b/src/equations_access_routines.f90 index c8feeece..a1a4b394 100644 --- a/src/equations_access_routines.f90 +++ b/src/equations_access_routines.f90 @@ -46,6 +46,7 @@ MODULE EquationsAccessRoutines USE BaseRoutines USE FieldAccessRoutines + USE ISO_VARYING_STRING USE Kinds USE Strings USE Types diff --git a/src/equations_mapping_access_routines.f90 b/src/equations_mapping_access_routines.f90 index 66019653..2452729d 100644 --- a/src/equations_mapping_access_routines.f90 +++ b/src/equations_mapping_access_routines.f90 @@ -45,6 +45,7 @@ MODULE EquationsMappingAccessRoutines USE BaseRoutines + USE ISO_VARYING_STRING USE Kinds USE Strings USE Types diff --git a/src/equations_matrices_access_routines.f90 b/src/equations_matrices_access_routines.f90 index bc2b2db9..457de983 100644 --- a/src/equations_matrices_access_routines.f90 +++ b/src/equations_matrices_access_routines.f90 @@ -45,6 +45,7 @@ MODULE EquationsMatricesAccessRoutines USE BaseRoutines + USE ISO_VARYING_STRING USE Kinds USE Strings USE Types diff --git a/src/equations_matrices_routines.f90 b/src/equations_matrices_routines.f90 index 6c852925..fe42f634 100755 --- a/src/equations_matrices_routines.f90 +++ b/src/equations_matrices_routines.f90 @@ -3286,9 +3286,9 @@ SUBROUTINE EquationsMatrices_VectorOutput(id,vectorMatrices,err,error,*) CALL DistributedVector_Output(id,sourceVector%vector,err,error,*999) ENDIF - EXITS("EquationsMatrices_Output") + EXITS("EquationsMatrices_VectorOutput") RETURN -999 ERRORSEXITS("EquationsMatrices_Output",err,error) +999 ERRORSEXITS("EquationsMatrices_VectorOutput",err,error) RETURN 1 END SUBROUTINE EquationsMatrices_VectorOutput diff --git a/src/equations_routines.f90 b/src/equations_routines.f90 index 365c8e21..ba77f897 100755 --- a/src/equations_routines.f90 +++ b/src/equations_routines.f90 @@ -362,7 +362,7 @@ SUBROUTINE Equations_EquationTypeGet(equations,equationType,err,error,*) EXITS("Equations_EquationTypeGet") RETURN -999 ERRORSEXITS("Equations_EquaitonTypeGet",err,error) +999 ERRORSEXITS("Equations_EquationTypeGet",err,error) RETURN 1 END SUBROUTINE Equations_EquationTypeGet diff --git a/src/equations_set_access_routines.f90 b/src/equations_set_access_routines.f90 index 9258cbd8..e1d3f223 100644 --- a/src/equations_set_access_routines.f90 +++ b/src/equations_set_access_routines.f90 @@ -46,6 +46,7 @@ MODULE EquationsSetAccessRoutines USE BaseRoutines USE Kinds + USE ISO_VARYING_STRING USE Strings USE Types diff --git a/src/equations_set_routines.f90 b/src/equations_set_routines.f90 index c37c09c7..0ca0e730 100644 --- a/src/equations_set_routines.f90 +++ b/src/equations_set_routines.f90 @@ -51,7 +51,8 @@ MODULE EQUATIONS_SET_ROUTINES USE BOUNDARY_CONDITIONS_ROUTINES USE CLASSICAL_FIELD_ROUTINES USE CmissMPI - USE ComputationEnvironment + USE ComputationRoutines + USE ComputationAccessRoutines USE Constants USE COORDINATE_ROUTINES USE DistributedMatrixVector @@ -73,12 +74,12 @@ MODULE EQUATIONS_SET_ROUTINES USE Kinds USE Lists USE MatrixVector + USE MeshAccessRoutines USE MONODOMAIN_EQUATIONS_ROUTINES #ifndef NOMPIMOD USE MPI #endif USE MULTI_PHYSICS_ROUTINES - USE NODE_ROUTINES USE ProfilingRoutines USE Strings USE Timer @@ -1804,7 +1805,8 @@ SUBROUTINE EQUATIONS_SET_BACKSUBSTITUTE(equationsSet,BOUNDARY_CONDITIONS,err,err DO equations_column_idx=ROW_INDICES(equations_row_number), & ROW_INDICES(equations_row_number+1)-1 equations_column_number=COLUMN_INDICES(equations_column_idx) - variable_dof=equations_column_idx-ROW_INDICES(equations_row_number)+1 + variable_dof=COLUMN_DOMAIN_MAPPING%GLOBAL_TO_LOCAL_MAP( & + & equations_column_number)%LOCAL_NUMBER(1) MATRIX_VALUE=equationsMatrixData(equations_column_idx) DEPENDENT_VALUE=DEPENDENT_PARAMETERS(variable_dof) RHS_VALUE=RHS_VALUE+MATRIX_VALUE*DEPENDENT_VALUE @@ -6270,17 +6272,19 @@ SUBROUTINE EQUATIONS_SET_BOUNDARY_CONDITIONS_INCREMENT(EQUATIONS_SET,BOUNDARY_CO TYPE(VARYING_STRING), INTENT(OUT) :: error !EQUATIONS_SET%DEPENDENT%DEPENDENT_FIELD IF(ASSOCIATED(dependentField)) THEN + NULLIFY(decomposition) + CALL Field_DecompositionGet(dependentField,decomposition,err,error,*999) + NULLIFY(workGroup) + CALL Decomposition_WorkGroupGet(decomposition,workGroup,err,error,*999) + CALL WorkGroup_GroupNodeNumberGet(workGroup,myGroupComputationNodeNumber,err,error,*999) IF(ALLOCATED(dependentField%VARIABLES)) THEN !Loop over the variables associated with this equations set !\todo: Looping over all field variables is not safe when volume-coupled problem is solved. Look at matrix and rhs mapping instead? @@ -6339,7 +6347,7 @@ SUBROUTINE EQUATIONS_SET_BOUNDARY_CONDITIONS_INCREMENT(EQUATIONS_SET,BOUNDARY_CO & BOUNDARY_CONDITION_MOVED_WALL_INCREMENTED) !Convert dof index to local index IF(DOMAIN_MAPPING%GLOBAL_TO_LOCAL_MAP(dirichlet_dof_idx)%DOMAIN_NUMBER(1)== & - & myComputationalNodeNumber) THEN + & myGroupComputationNodeNumber) THEN dirichlet_dof_idx=DOMAIN_MAPPING%GLOBAL_TO_LOCAL_MAP(dirichlet_dof_idx)%LOCAL_NUMBER(1) IF(0 Auckland, the University of Oxford and King's College, London. !> All Rights Reserved. !> -!> Contributor(s): +!> Contributor(s): Heye Zhang !> !> Alternatively, the contents of this file may be used under the terms of !> either the GNU General Public License Version 2 or later (the "GPL"), or @@ -49,8 +49,10 @@ MODULE FIELD_IO_ROUTINES USE BasisRoutines USE BasisAccessRoutines USE MESH_ROUTINES - USE NODE_ROUTINES - USE ComputationEnvironment + USE NodeRoutines + USE ComputationRoutines + USE ComputationAccessRoutines + USE ContextAccessRoutines USE COORDINATE_ROUTINES USE ISO_VARYING_STRING USE MACHINE_CONSTANTS @@ -59,6 +61,7 @@ MODULE FIELD_IO_ROUTINES USE FieldAccessRoutines USE ISO_VARYING_STRING !USE, INTRINSIC :: ISO_C_BINDING + USE RegionAccessRoutines USE Strings USE Types USE Constants @@ -151,7 +154,7 @@ MODULE FIELD_IO_ROUTINES INTERFACE FUNCTION FieldExport_OpenSession( exportType, filename, handle ) & & BIND(C,NAME="FieldExport_OpenSession") - USE TYPES + USE Types USE ISO_C_BINDING INTEGER(C_INT), VALUE :: exportType CHARACTER(C_CHAR), INTENT(IN) :: filename(*) @@ -161,7 +164,7 @@ END FUNCTION FieldExport_OpenSession FUNCTION FieldExport_Group( handle, groupName ) & & BIND(C,NAME="FieldExport_Group") - USE TYPES + USE Types USE ISO_C_BINDING INTEGER(C_INT), VALUE :: handle CHARACTER(C_CHAR), INTENT(IN) :: groupName(*) @@ -170,7 +173,7 @@ END FUNCTION FieldExport_Group FUNCTION FieldExport_MeshDimensions( handle, meshDimensions , basisType) & & BIND(C,NAME="FieldExport_MeshDimensions") - USE TYPES + USE Types USE ISO_C_BINDING INTEGER(C_INT), VALUE :: handle INTEGER(C_INT), VALUE :: meshDimensions @@ -180,7 +183,7 @@ END FUNCTION FieldExport_MeshDimensions FUNCTION FieldExport_ScalingFactorCount( handle, scalingFactorCount ) & & BIND(C,NAME="FieldExport_ScalingFactorCount") - USE TYPES + USE Types USE ISO_C_BINDING INTEGER(C_INT), VALUE :: handle INTEGER(C_INT), VALUE :: scalingFactorCount @@ -189,7 +192,7 @@ END FUNCTION FieldExport_ScalingFactorCount FUNCTION FieldExport_ScaleFactors( handle, numberOfXi, interpolationXi, numberOfScaleFactors ) & & BIND(C,NAME="FieldExport_ScaleFactors") - USE TYPES + USE Types USE ISO_C_BINDING INTEGER(C_INT), VALUE :: handle INTEGER(C_INT), VALUE :: numberOfXi @@ -200,7 +203,7 @@ END FUNCTION FieldExport_ScaleFactors FUNCTION FieldExport_NodeCount( handle, nodeCount ) & & BIND(C,NAME="FieldExport_NodeCount") - USE TYPES + USE Types USE ISO_C_BINDING INTEGER(C_INT), VALUE :: handle INTEGER(C_INT), VALUE :: nodeCount @@ -209,7 +212,7 @@ END FUNCTION FieldExport_NodeCount FUNCTION FieldExport_FieldCount( handle, fieldCount ) & & BIND(C,NAME="FieldExport_FieldCount") - USE TYPES + USE Types USE ISO_C_BINDING INTEGER(C_INT), VALUE :: handle INTEGER(C_INT), VALUE :: fieldCount @@ -218,7 +221,7 @@ END FUNCTION FieldExport_FieldCount FUNCTION FieldExport_CoordinateVariable( handle, variableName, variableNumber, coordinateSystemType, componentCount ) & & BIND(C,NAME="FieldExport_CoordinateVariable") - USE TYPES + USE Types USE ISO_C_BINDING INTEGER(C_INT), VALUE :: handle CHARACTER(LEN=1, KIND=C_CHAR) :: variableName(*) @@ -230,7 +233,7 @@ END FUNCTION FieldExport_CoordinateVariable FUNCTION FieldExport_Variable( handle, variableName, variableNumber, fieldType, variableType, componentCount ) & & BIND(C,NAME="FieldExport_Variable") - USE TYPES + USE Types USE ISO_C_BINDING INTEGER(C_INT), VALUE :: handle CHARACTER(LEN=1, KIND=C_CHAR) :: variableName(*) @@ -244,7 +247,7 @@ END FUNCTION FieldExport_Variable FUNCTION FieldExport_CoordinateComponent( handle, coordinateSystemType, componentNumber, interpType, & & numberOfXi, interpolationXi ) & & BIND(C,NAME="FieldExport_CoordinateComponent") - USE TYPES + USE Types USE ISO_C_BINDING INTEGER(C_INT), VALUE :: handle INTEGER(C_INT), VALUE :: coordinateSystemType @@ -257,7 +260,7 @@ END FUNCTION FieldExport_CoordinateComponent FUNCTION FieldExport_Component( handle, componentNumber, interpType, numberOfXi, interpolationXi ) & & BIND(C,NAME="FieldExport_Component") - USE TYPES + USE Types USE ISO_C_BINDING INTEGER(C_INT), VALUE :: handle INTEGER(C_INT), VALUE :: componentNumber @@ -269,7 +272,7 @@ END FUNCTION FieldExport_Component FUNCTION FieldExport_ElementGridSize( handle, headerType, numberOfXi, numberGauss ) & & BIND(C,NAME="FieldExport_ElementGridSize") - USE TYPES + USE Types USE ISO_C_BINDING INTEGER(C_INT), VALUE :: handle INTEGER(C_INT), VALUE :: headerType @@ -281,7 +284,7 @@ END FUNCTION FieldExport_ElementGridSize FUNCTION FieldExport_NodeScaleIndexes( handle, nodeCount, derivativeCount, elementDerivatives, nodeIndexes, & & scaleIndexes ) & & BIND(C,NAME="FieldExport_NodeScaleIndexes") - USE TYPES + USE Types USE ISO_C_BINDING INTEGER(C_INT), VALUE :: handle INTEGER(C_INT), VALUE :: nodeCount @@ -294,7 +297,7 @@ END FUNCTION FieldExport_NodeScaleIndexes FUNCTION FieldExport_ElementIndex( handle, dimensionCount, elementIndex ) & & BIND(C,NAME="FieldExport_ElementIndex") - USE TYPES + USE Types USE ISO_C_BINDING INTEGER(C_INT), VALUE :: handle INTEGER(C_INT), VALUE :: dimensionCount @@ -304,7 +307,7 @@ END FUNCTION FieldExport_ElementIndex FUNCTION FieldExport_ElementNodeIndices( handle, nodeCount, nodeIndices ) & & BIND(C,NAME="FieldExport_ElementNodeIndices") - USE TYPES + USE Types USE ISO_C_BINDING INTEGER(C_INT), VALUE :: handle INTEGER(C_INT), VALUE :: nodeCount @@ -314,7 +317,7 @@ END FUNCTION FieldExport_ElementNodeIndices FUNCTION FieldExport_ElementNodeScales( handle, isFirstSet, scaleCount, scales ) & & BIND(C,NAME="FieldExport_ElementNodeScales") - USE TYPES + USE Types USE ISO_C_BINDING INTEGER(C_INT), VALUE :: handle INTEGER(C_INT), VALUE :: isFirstSet @@ -325,7 +328,8 @@ END FUNCTION FieldExport_ElementNodeScales FUNCTION FieldExport_ElementGridValues( handle, isFirstSet, numberOfXi, elementValue ) & & BIND(C,NAME="FieldExport_ElementGridValues") - USE TYPES + USE Kinds + USE Types USE ISO_C_BINDING INTEGER(C_INT), VALUE :: handle INTEGER(C_INT), VALUE :: isFirstSet @@ -336,7 +340,7 @@ END FUNCTION FieldExport_ElementGridValues FUNCTION FieldExport_NodeValues( handle, nodeNumber, valueCount, nodeValues ) & & BIND(C,NAME="FieldExport_NodeValues") - USE TYPES + USE Types USE ISO_C_BINDING INTEGER(C_INT), VALUE :: handle INTEGER(C_INT), VALUE :: nodeNumber @@ -347,7 +351,7 @@ END FUNCTION FieldExport_NodeValues FUNCTION FieldExport_CloseSession( handle ) & & BIND(C,NAME="FieldExport_CloseSession") - USE TYPES + USE Types USE ISO_C_BINDING INTEGER(C_INT), VALUE :: handle INTEGER(C_INT) :: FieldExport_CloseSession @@ -355,7 +359,7 @@ END FUNCTION FieldExport_CloseSession FUNCTION FieldExport_CoordinateDerivativeIndices( handle, componentNumber, coordinateSystemType, numberOfDerivatives, & & derivatives, valueIndex ) BIND(C,NAME="FieldExport_CoordinateDerivativeIndices") - USE TYPES + USE Types USE ISO_C_BINDING INTEGER(C_INT), VALUE :: handle INTEGER(C_INT), VALUE :: componentNumber @@ -368,7 +372,7 @@ END FUNCTION FieldExport_CoordinateDerivativeIndices FUNCTION FieldExport_DerivativeIndices( handle, componentNumber, fieldType, variableType, numberOfDerivatives, & & derivatives, valueIndex ) BIND(C,NAME="FieldExport_DerivativeIndices") - USE TYPES + USE Types USE ISO_C_BINDING INTEGER(C_INT), VALUE :: handle INTEGER(C_INT), VALUE :: componentNumber @@ -381,14 +385,14 @@ FUNCTION FieldExport_DerivativeIndices( handle, componentNumber, fieldType, vari END FUNCTION FieldExport_DerivativeIndices FUNCTION FieldExport_EndComponent(handle) BIND(C,NAME="FieldExport_EndComponent") - USE TYPES + USE Types USE ISO_C_BINDING INTEGER(C_INT), VALUE :: handle INTEGER(C_INT) :: FieldExport_EndComponent END FUNCTION FieldExport_EndComponent FUNCTION FieldExport_VersionInfo(handle, numberOfVersions) BIND(C,NAME="FieldExport_VersionInfo") - USE TYPES + USE Types USE ISO_C_BINDING INTEGER(C_INT), VALUE :: handle INTEGER(C_INT), VALUE :: numberOfVersions @@ -1022,7 +1026,7 @@ END FUNCTION FIELD_IO_ELEMENT_DERIVATIVE_INDEX SUBROUTINE FIELD_IO_CREATE_FIELDS(NAME, REGION, DECOMPOSITION, FIELD_VALUES_SET_TYPE, NUMBER_OF_FIELDS, & !&USER_NODAL_NUMBER_MAP_GLOBAL_NODAL_NUMBER, &MESH_COMPONENTS_OF_FIELD_COMPONENTS, COMPONENTS_IN_FIELDS, NUMBER_OF_EXNODE_FILES, & - &MASTER_COMPUTATIONAL_NUMBER, myComputationalNodeNumber, FIELD_SCALING_TYPE, ERR, ERROR, *) + &MASTER_COMPUTATION_NUMBER, myWorldComputationNodeNumber, FIELD_SCALING_TYPE, ERR, ERROR, *) !Argument variables TYPE(VARYING_STRING), INTENT(IN) :: NAME TYPE(REGION_TYPE), POINTER :: REGION !=NUMBER_OF_EXNODE_FILES) EXIT ENDIF - !IF(MASTER_COMPUTATIONAL_NUMBER/=myComputationalNodeNumber) PRINT * , idx_exnode + !IF(MASTER_COMPUTATION_NUMBER/=myWorldComputationNodeNumber) PRINT * , idx_exnode !goto the start of mesh part - IF(MASTER_COMPUTATIONAL_NUMBER==myComputationalNodeNumber) THEN + IF(MASTER_COMPUTATION_NUMBER==myWorldComputationNodeNumber) THEN IF(FILE_END) THEN FILE_ID=1030+idx_exnode @@ -1301,14 +1312,13 @@ SUBROUTINE FIELD_IO_CREATE_FIELDS(NAME, REGION, DECOMPOSITION, FIELD_VALUES_SET_ NODE_SECTION=.TRUE. ENDDO !idx_field ENDIF !FILE_END==.FALSE..AND.SECTION_START=.TRUE..AND.NODE_SECTION=.FALSE. - ENDIF !MASTER_COMPUTATIONAL_NUMBER + ENDIF !MASTER_COMPUTATION_NUMBER !broadcasting total_number_of_devs - CALL MPI_BCAST(total_number_of_devs,1,MPI_INTEGER,MASTER_COMPUTATIONAL_NUMBER, & - & computationalEnvironment%mpiCommunicator,MPI_IERROR) + CALL MPI_BCAST(total_number_of_devs,1,MPI_INTEGER,MASTER_COMPUTATION_NUMBER,worldCommunicator,MPI_IERROR) CALL MPI_ERROR_CHECK("MPI_BCAST",MPI_IERROR,ERR,ERROR,*999) - IF(MASTER_COMPUTATIONAL_NUMBER/=myComputationalNodeNumber) THEN + IF(MASTER_COMPUTATION_NUMBER/=myWorldComputationNodeNumber) THEN CALL REALLOCATE( LIST_DEV, total_number_of_devs, & & "Could not allocate memory for nodal derivative index in non-master node", ERR, ERROR, *999 ) ENDIF @@ -1317,16 +1327,14 @@ SUBROUTINE FIELD_IO_CREATE_FIELDS(NAME, REGION, DECOMPOSITION, FIELD_VALUES_SET_ & "Could not allocate memory for nodal derivative index in non-master node", ERR, ERROR, *999 ) !broadcasting total_number_of_comps - CALL MPI_BCAST(LIST_DEV_POS,total_number_of_comps,MPI_INTEGER,MASTER_COMPUTATIONAL_NUMBER, & - & computationalEnvironment%mpiCommunicator,MPI_IERROR) + CALL MPI_BCAST(LIST_DEV_POS,total_number_of_comps,MPI_INTEGER,MASTER_COMPUTATION_NUMBER,worldCommunicator,MPI_IERROR) CALL MPI_ERROR_CHECK("MPI_BCAST",MPI_IERROR,ERR,ERROR,*999) !broadcasting total_number_of_devs - CALL MPI_BCAST(LIST_DEV,total_number_of_devs,MPI_INTEGER,MASTER_COMPUTATIONAL_NUMBER, & - & computationalEnvironment%mpiCommunicator,MPI_IERROR) + CALL MPI_BCAST(LIST_DEV,total_number_of_devs,MPI_INTEGER,MASTER_COMPUTATION_NUMBER,worldCommunicator,MPI_IERROR) CALL MPI_ERROR_CHECK("MPI_BCAST",MPI_IERROR,ERR,ERROR,*999) !goto the start of mesh part - IF(MASTER_COMPUTATIONAL_NUMBER==myComputationalNodeNumber) THEN + IF(MASTER_COMPUTATION_NUMBER==myWorldComputationNodeNumber) THEN !have not touched the end IF((.NOT.FILE_END).AND.SECTION_START.AND.NODE_SECTION) THEN @@ -1378,17 +1386,15 @@ SUBROUTINE FIELD_IO_CREATE_FIELDS(NAME, REGION, DECOMPOSITION, FIELD_VALUES_SET_ IF(VERIFY(CMISS_KEYWORD_NODE, LINE)/=0) NODE_SECTION=.FALSE. ENDIF ENDIF !FILE_END==.FALSE..AND.SECTION_START=.TRUE..AND.NODE_SECTION=.TRUE. - ENDIF !(MASTER_COMPUTATIONAL_NUMBER==myComputationalNodeNumber) + ENDIF !(MASTER_COMPUTATION_NUMBER==myWorldComputationNodeNumber) !broadcasting total_number_of_devs - CALL MPI_BCAST(LIST_DEV_VALUE,total_number_of_devs,MPI_REAL8,MASTER_COMPUTATIONAL_NUMBER, & - & computationalEnvironment%mpiCommunicator,MPI_IERROR) + CALL MPI_BCAST(LIST_DEV_VALUE,total_number_of_devs,MPI_REAL8,MASTER_COMPUTATION_NUMBER,worldCommunicator,MPI_IERROR) CALL MPI_ERROR_CHECK("MPI_BCAST",MPI_IERROR,ERR,ERROR,*999) - CALL MPI_BCAST(NODAL_USER_NUMBER,1,MPI_INTEGER,MASTER_COMPUTATIONAL_NUMBER, & - & computationalEnvironment%mpiCommunicator,MPI_IERROR) + CALL MPI_BCAST(NODAL_USER_NUMBER,1,MPI_INTEGER,MASTER_COMPUTATION_NUMBER,worldCommunicator,MPI_IERROR) CALL MPI_ERROR_CHECK("MPI_BCAST",MPI_IERROR,ERR,ERROR,*999) - !IF(MASTER_COMPUTATIONAL_NUMBER/=myComputationalNodeNumber) THEN + !IF(MASTER_COMPUTATION_NUMBER/=myWorldComputationNodeNumber) THEN print *, "user number:" print *, NODAL_USER_NUMBER print *, LIST_DEV_VALUE @@ -1506,7 +1512,7 @@ END SUBROUTINE FIELD_IO_CREATE_DECOMPISTION !================================================================================================================================ ! - !>Import fields from files into different computational nodes + !>Import fields from files into different computation nodes SUBROUTINE FIELD_IO_FIELDS_IMPORT(NAME, METHOD, REGION, MESH, MESH_USER_NUMBER, DECOMPOSITION, DECOMPOSITION_USER_NUMBER, & &DECOMPOSITION_METHOD, FIELD_VALUES_SET_TYPE, FIELD_SCALING_TYPE, ERR, ERROR, *) !Argument variables @@ -1520,43 +1526,48 @@ SUBROUTINE FIELD_IO_FIELDS_IMPORT(NAME, METHOD, REGION, MESH, MESH_USER_NUMBER, INTEGER(INTG), INTENT(IN) :: DECOMPOSITION_METHOD !Read the global mesh into one computational node first and then broadcasting to others nodes - SUBROUTINE FIELD_IO_IMPORT_GLOBAL_MESH(NAME, REGION, MESH, MESH_USER_NUMBER, MASTER_COMPUTATIONAL_NUMBER, & - & myComputationalNodeNumber, &!USER_NODAL_NUMBER_MAP_GLOBAL_NODAL_NUMBER, + !>Read the global mesh into one computation node first and then broadcasting to others nodes + SUBROUTINE FIELD_IO_IMPORT_GLOBAL_MESH(NAME, REGION, MESH, MESH_USER_NUMBER, MASTER_COMPUTATION_NUMBER, & + & myWorldComputationNodeNumber, &!USER_NODAL_NUMBER_MAP_GLOBAL_NODAL_NUMBER, &MESH_COMPONENTS_OF_FIELD_COMPONENTS, & & COMPONENTS_IN_FIELDS, NUMBER_OF_FIELDS, NUMBER_OF_EXNODE_FILES, ERR, ERROR, *) !Argument variables @@ -1633,8 +1644,8 @@ SUBROUTINE FIELD_IO_IMPORT_GLOBAL_MESH(NAME, REGION, MESH, MESH_USER_NUMBER, MAS TYPE(MESH_TYPE), POINTER :: MESH !Write the header of a group elements using FORTRAN SUBROUTINE FieldIO_ExportElementalGroupHeaderFortran( global_number, MAX_NODE_COMP_INDEX,NUM_OF_SCALING_FACTOR_SETS, & - & LIST_COMP_SCALE, myComputationalNodeNumber, elementalInfoSet, sessionHandle, ERR,ERROR, *) + & LIST_COMP_SCALE, myWorldComputationNodeNumber, elementalInfoSet, sessionHandle, ERR,ERROR, *) !Argument variables INTEGER(INTG), INTENT(IN) :: global_number !elementalInfoSet%COMPONENTS(comp_idx)%PTR%DOMAIN !get the domain index for this variable component according to my own computional node number local_number = FindMyLocalDomainNumber( componentDomain%MAPPINGS%ELEMENTS%GLOBAL_TO_LOCAL_MAP( global_number ),& - & myComputationalNodeNumber ) + & myWorldComputationNodeNumber ) GROUP_LOCAL_NUMBER(comp_idx)=local_number !use local domain information find the out the maximum number of derivatives DOMAIN_ELEMENTS=>componentDomain%TOPOLOGY%ELEMENTS @@ -3467,13 +3480,13 @@ END SUBROUTINE FieldIO_ExportElementalGroupHeaderFortran ! SUBROUTINE FIELD_IO_EXPORT_ELEMENT_SCALE_FACTORS( sessionHandle, components, componentScales, globalNumber, & - & myComputationalNodeNumber, ERR, ERROR, * ) + & myWorldComputationNodeNumber, ERR, ERROR, * ) !Argument variables INTEGER(INTG) :: sessionHandle TYPE(FIELD_IO_COMPONENT_INFO_SET), INTENT(INOUT) :: components ! component%DOMAIN%TOPOLOGY%ELEMENTS domainNodes => component%DOMAIN%TOPOLOGY%NODES @@ -3584,13 +3597,13 @@ END SUBROUTINE FIELD_IO_EXPORT_ELEMENT_SCALE_FACTORS ! !>Write all the elemental information from LOCAL_PROCESS_NODAL_INFO_SET to exelem files - SUBROUTINE FIELD_IO_EXPORT_ELEMENTS_INTO_LOCAL_FILE(ELEMENTAL_INFO_SET, NAME, myComputationalNodeNumber, & + SUBROUTINE FIELD_IO_EXPORT_ELEMENTS_INTO_LOCAL_FILE(ELEMENTAL_INFO_SET, NAME, myWorldComputationNodeNumber, & & ERR, ERROR, *) - !the reason that myComputationalNodeNumber is used in the argument is for future extension + !the reason that myWorldComputationNodeNumber is used in the argument is for future extension !Argument variables TYPE(FIELD_IO_INFO_SET), INTENT(INOUT) :: ELEMENTAL_INFO_SET !component%DOMAIN%TOPOLOGY%ELEMENTS !get the domain index for this variable component according to my own computional node number local_number = FindMyLocalDomainNumber( DOMAIN_MAPPING_ELEMENTS%GLOBAL_TO_LOCAL_MAP( global_number ), & - & myComputationalNodeNumber ) + & myWorldComputationNodeNumber ) !use local domain information find the out the maximum number of derivatives BASIS => DOMAIN_ELEMENTS%ELEMENTS( local_number )%BASIS @@ -3891,7 +3904,7 @@ SUBROUTINE FIELD_IO_EXPORT_ELEMENTS_INTO_LOCAL_FILE(ELEMENTAL_INFO_SET, NAME, my ENDIF CALL FIELD_IO_EXPORT_ELEMENT_SCALE_FACTORS( sessionHandle, components, & - & LIST_COMP_SCALE, global_number, myComputationalNodeNumber, ERR, ERROR, *999 ) + & LIST_COMP_SCALE, global_number, myWorldComputationNodeNumber, ERR, ERROR, *999 ) ENDDO !elem_idx @@ -3917,10 +3930,10 @@ END SUBROUTINE FIELD_IO_EXPORT_ELEMENTS_INTO_LOCAL_FILE ! !>Sort the Elemental_info_set according to the type of field variable components - SUBROUTINE FIELD_IO_ELEMENTAL_INFO_SET_SORT(ELEMENTAL_INFO_SET, myComputationalNodeNumber, ERR,ERROR,*) + SUBROUTINE FIELD_IO_ELEMENTAL_INFO_SET_SORT(ELEMENTAL_INFO_SET, myWorldComputationNodeNumber, ERR,ERROR,*) !Argument variables TYPE(FIELD_IO_INFO_SET), INTENT(INOUT) :: ELEMENTAL_INFO_SET !& & ELEMENTAL_INFO_SET%COMPONENT_INFO_SET(nn1)%PTR%COMPONENTS(component_idx)%PTR% & & DOMAIN%TOPOLOGY%ELEMENTS @@ -4021,7 +4034,7 @@ SUBROUTINE FIELD_IO_ELEMENTAL_INFO_SET_SORT(ELEMENTAL_INFO_SET, myComputationalN !get the domain index for this variable component according to my own computional node number !local number of nn2'th node in the damain assoicated with component(component_idx) local_number2 = FindMyLocalDomainNumber( DOMAIN_MAPPING_ELEMENTS%GLOBAL_TO_LOCAL_MAP( global_number2 ), & - & myComputationalNodeNumber ) + & myWorldComputationNodeNumber ) DOMAIN_ELEMENTS2=>& & ELEMENTAL_INFO_SET%COMPONENT_INFO_SET(nn2)%PTR%COMPONENTS(component_idx)%PTR% & & DOMAIN%TOPOLOGY%ELEMENTS @@ -4311,23 +4324,23 @@ END SUBROUTINE FieldIO_ElementalInfoSetAttachLocalProcess ! TYPE(VARYING_STRING), INTENT(OUT) :: ERROR !Sort nodal information according to the type of field variable component - SUBROUTINE FIELD_IO_NODAL_INFO_SET_SORT(NODAL_INFO_SET, myComputationalNodeNumber, ERR,ERROR,*) + SUBROUTINE FIELD_IO_NODAL_INFO_SET_SORT(NODAL_INFO_SET, myWorldComputationNodeNumber, ERR,ERROR,*) !Argument variables TYPE(FIELD_IO_INFO_SET), INTENT(INOUT) :: NODAL_INFO_SET !Write the header of a group nodes using FORTRAIN !SUBROUTINE FIELD_IO_IMPORT_NODAL_GROUP_HEADER_FORTRAN(NODAL_INFO_SET, LOCAL_NODAL_NUMBER, MAX_NUM_OF_NODAL_DERIVATIVES, & - !&myComputationalNodeNumber, FILE_ID, ERR,ERROR, *) + !&myWorldComputationNodeNumber, FILE_ID, ERR,ERROR, *) ! !Argument variables ! TYPE(FIELD_IO_INFO_SET), INTENT(INOUT) :: NODAL_INFO_SET !NODAL_INFO_SET%COMPONENT_INFO_SET(LOCAL_NODAL_NUMBER)%& ! &COMPONENTS(comp_idx)%PTR%DOMAIN%MAPPINGS%NODES ! !get the domain index for this variable component according to my own computional node number - ! local_number = FindMyLocalDomainNumber( DOMAIN_MAPPING_NODES%GLOBAL_TO_LOCAL_MAP(global_number), myComputationalNodeNumber ) + ! local_number = FindMyLocalDomainNumber( DOMAIN_MAPPING_NODES%GLOBAL_TO_LOCAL_MAP(global_number), myWorldComputationNodeNumber ) ! !use local domain information find the out the maximum number of derivatives ! DOMAIN_NODES=>NODAL_INFO_SET%COMPONENT_INFO_SET(LOCAL_NODAL_NUMBER)%COMPONENTS(comp_idx)%PTR%DOMAIN%TOPOLOGY%NODES ! MAX_NUM_OF_NODAL_DERIVATIVES=MAX(DOMAIN_NODES%NODES(local_number)%NUMBER_OF_DERIVATIVES,MAX_NUM_OF_NODAL_DERIVATIVES) @@ -5121,7 +5134,7 @@ END FUNCTION FIELD_IO_GET_COMPONENT_INFO_LABEL ! DOMAIN_MAPPING_NODES=>NODAL_INFO_SET%COMPONENT_INFO_SET(LOCAL_NODAL_NUMBER)%COMPONENTS(comp_idx)%PTR%& ! &DOMAIN%MAPPINGS%NODES ! !get the domain index for this variable component according to my own computional node number - ! local_number = FindMyLocalDomainNumber( DOMAIN_MAPPING_NODES%GLOBAL_TO_LOCAL_MAP(global_number), myComputationalNodeNumber ) + ! local_number = FindMyLocalDomainNumber( DOMAIN_MAPPING_NODES%GLOBAL_TO_LOCAL_MAP(global_number), myWorldComputationNodeNumber ) ! !use local domain information find the out the maximum number of derivatives ! DOMAIN_NODES=>NODAL_INFO_SET%COMPONENT_INFO_SET(LOCAL_NODAL_NUMBER)%COMPONENTS(comp_idx)%PTR%DOMAIN%TOPOLOGY%NODES ! !get the nodal partial derivatives @@ -5167,12 +5180,12 @@ END FUNCTION FIELD_IO_GET_COMPONENT_INFO_LABEL !>Write the header of a group nodes using FORTRAIN SUBROUTINE FIELD_IO_EXPORT_NODAL_GROUP_HEADER_FORTRAN(fieldInfoSet, global_number, MAX_NUM_OF_NODAL_DERIVATIVES, & - &myComputationalNodeNumber, sessionHandle, paddingInfo, ERR,ERROR, *) + &myWorldComputationNodeNumber, sessionHandle, paddingInfo, ERR,ERROR, *) !Argument variables TYPE(FIELD_IO_COMPONENT_INFO_SET), INTENT(IN) :: fieldInfoSet INTEGER(INTG), INTENT(IN) :: global_number INTEGER(INTG), INTENT(INOUT) :: MAX_NUM_OF_NODAL_DERIVATIVES !Write all the nodal information from NODAL_INFO_SET to local exnode files - SUBROUTINE FIELD_IO_EXPORT_NODES_INTO_LOCAL_FILE(NODAL_INFO_SET, NAME, myComputationalNodeNumber,ERR, ERROR, *) - !the reason that myComputationalNodeNumber is used in the argument is for future extension + SUBROUTINE FIELD_IO_EXPORT_NODES_INTO_LOCAL_FILE(NODAL_INFO_SET, NAME, myWorldComputationNodeNumber,ERR, ERROR, *) + !the reason that myWorldComputationNodeNumber is used in the argument is for future extension !Argument variables TYPE(FIELD_IO_INFO_SET), INTENT(INOUT):: NODAL_INFO_SET !Collect nodal information from each MPI process - SUBROUTINE FieldIO_NodelInfoSetAttachLocalProcess(NODAL_INFO_SET, FIELDS, myComputationalNodeNumber, ERR,ERROR,*) + SUBROUTINE FieldIO_NodelInfoSetAttachLocalProcess(NODAL_INFO_SET, FIELDS, myWorldComputationNodeNumber, ERR,ERROR,*) !Argument variables TYPE(FIELD_IO_INFO_SET), INTENT(INOUT):: NODAL_INFO_SET !Returns the region for a fields accounting for regions and interfaces + SUBROUTINE Fields_RegionGet(fields,region,err,error,*) + + !Argument variables + TYPE(FIELDS_TYPE), POINTER :: fields !fields%region + IF(.NOT.ASSOCIATED(region)) THEN + interface=>fields%interface + IF(ASSOCIATED(interface)) THEN + IF(ASSOCIATED(interface%PARENT_REGION)) THEN + region=>interface%PARENT_REGION + ELSE + localError="The parent region is not associated for interface number "// & + & TRIM(NumberToVString(interface%USER_NUMBER,"*",err,error))//"." + CALL FlagError(localError,err,error,*999) + ENDIF + ELSE + CALL FlagError("A region or interface is not associated for the fields.",err,error,*999) + ENDIF + ENDIF + + EXITS("Fields_RegionGet") + RETURN +999 NULLIFY(region) +998 ERRORSEXITS("Fields_RegionGet",err,error) + RETURN 1 + + END SUBROUTINE Fields_RegionGet + + ! + !================================================================================================================================ + ! + END MODULE FieldAccessRoutines diff --git a/src/field_routines.f90 b/src/field_routines.f90 index 5039921d..7231ea73 100644 --- a/src/field_routines.f90 +++ b/src/field_routines.f90 @@ -26,7 +26,7 @@ !> Auckland, the University of Oxford and King's College, London. !> All Rights Reserved. !> -!> Contributor(s): +!> Contributor(s): Chris Bradley !> !> Alternatively, the contents of this file may be used under the terms of !> either the GNU General Public License Version 2 or later (the "GPL"), or @@ -47,7 +47,9 @@ MODULE FIELD_ROUTINES USE BaseRoutines USE BasisRoutines USE BasisAccessRoutines - USE ComputationEnvironment + USE ComputationRoutines + USE ComputationAccessRoutines + USE Constants USE COORDINATE_ROUTINES USE CmissMPI USE DistributedMatrixVector @@ -58,12 +60,13 @@ MODULE FIELD_ROUTINES USE ISO_VARYING_STRING USE Lists USE Maths + USE MESH_ROUTINES + USE MeshAccessRoutines #ifndef NOMPIMOD USE MPI #endif USE MESH_ROUTINES USE MeshAccessRoutines - USE NODE_ROUTINES USE Strings USE Types @@ -9892,12 +9895,13 @@ SUBROUTINE FIELD_MAPPINGS_CALCULATE(FIELD,ERR,ERROR,*) & NUMBER_OF_CONSTANT_DOFS,NUMBER_OF_ELEMENT_DOFS,NUMBER_OF_NODE_DOFS,NUMBER_OF_GRID_POINT_DOFS,NUMBER_OF_GAUSS_POINT_DOFS, & & NUMBER_OF_LOCAL_VARIABLE_DOFS,TOTAL_NUMBER_OF_VARIABLE_DOFS,NUMBER_OF_DOMAINS,variable_global_ny, & & variable_local_ny,domain_idx,domain_no,constant_nyy,element_ny,element_nyy,node_ny,node_nyy,grid_point_nyy, & - & Gauss_point_nyy,version_idx,derivative_idx,ny,NUMBER_OF_COMPUTATIONAL_NODES, & - & myComputationalNodeNumber,domain_type_stop,start_idx,stop_idx,element_idx,node_idx,NUMBER_OF_LOCAL, NGP, MAX_NGP, & + & Gauss_point_nyy,version_idx,derivative_idx,ny,numberOfGroupComputationNodes, & + & myGroupComputationNodeNumber,domain_type_stop,start_idx,stop_idx,element_idx,node_idx,NUMBER_OF_LOCAL, NGP, MAX_NGP, & & gp,MPI_IERROR,NUMBER_OF_GLOBAL_DOFS,gauss_point_idx,NUMBER_OF_DATA_POINT_DOFS,data_point_nyy,dataPointIdx,elementIdx, & - & localDataNumber,globalElementNumber + & localDataNumber,globalElementNumber,groupCommunicator INTEGER(INTG), ALLOCATABLE :: VARIABLE_LOCAL_DOFS_OFFSETS(:),VARIABLE_GHOST_DOFS_OFFSETS(:), & & localDataParamCount(:),ghostDataParamCount(:) + TYPE(BASIS_TYPE), POINTER :: BASIS TYPE(DECOMPOSITION_TYPE), POINTER :: DECOMPOSITION TYPE(DECOMPOSITION_TOPOLOGY_TYPE), POINTER :: decompositionTopology TYPE(DOMAIN_TYPE), POINTER :: domain @@ -9905,15 +9909,19 @@ SUBROUTINE FIELD_MAPPINGS_CALCULATE(FIELD,ERR,ERROR,*) TYPE(DOMAIN_TOPOLOGY_TYPE), POINTER :: DOMAIN_TOPOLOGY TYPE(FIELD_VARIABLE_COMPONENT_TYPE), POINTER :: FIELD_COMPONENT TYPE(VARYING_STRING) :: LOCAL_ERROR - TYPE(BASIS_TYPE), POINTER :: BASIS + TYPE(WorkGroupType), POINTER :: workGroup ENTERS("FIELD_MAPPINGS_CALCULATE",ERR,ERROR,*999) IF(ASSOCIATED(FIELD)) THEN - NUMBER_OF_COMPUTATIONAL_NODES=ComputationalEnvironment_NumberOfNodesGet(ERR,ERROR) - IF(ERR/=0) GOTO 999 - myComputationalNodeNumber=ComputationalEnvironment_NodeNumberGet(ERR,ERROR) - IF(ERR/=0) GOTO 999 + NULLIFY(decomposition) + CALL Field_DecompositionGet(field,decomposition,err,error,*999) + NULLIFY(workGroup) + CALL Decomposition_WorkGroupGet(decomposition,workGroup,err,error,*999) + CALL WorkGroup_GroupCommunicatorGet(workGroup,groupCommunicator,err,error,*999) + CALL WorkGroup_NumberOfGroupNodesGet(workGroup,numberOfGroupComputationNodes,err,error,*999) + CALL WorkGroup_GroupNodeNumberGet(workGroup,myGroupComputationNodeNumber,err,error,*999) + !Calculate the number of global and local degrees of freedom for the field variables and components. Each field variable !component has a set of DOFs so loop over the components for each variable component and count up the DOFs. DO variable_idx=1,FIELD%NUMBER_OF_VARIABLES @@ -9959,7 +9967,7 @@ SUBROUTINE FIELD_MAPPINGS_CALCULATE(FIELD,ERR,ERROR,*) NGP=BASIS%QUADRATURE%QUADRATURE_SCHEME_MAP(BASIS_DEFAULT_QUADRATURE_SCHEME)%PTR%NUMBER_OF_GAUSS MAX_NGP=MAX(MAX_NGP,NGP) ENDDO !element_idx - CALL MPI_ALLREDUCE(MPI_IN_PLACE,MAX_NGP,1,MPI_INTEGER,MPI_MAX,computationalEnvironment%mpiCommunicator,MPI_IERROR) + CALL MPI_ALLREDUCE(MPI_IN_PLACE,MAX_NGP,1,MPI_INTEGER,MPI_MAX,groupCommunicator,MPI_IERROR) CALL MPI_ERROR_CHECK("MPI_ALLREDUCE",MPI_IERROR,ERR,ERROR,*999) NUMBER_OF_GAUSS_POINT_DOFS=NUMBER_OF_GAUSS_POINT_DOFS+DOMAIN_TOPOLOGY%ELEMENTS%TOTAL_NUMBER_OF_ELEMENTS*MAX_NGP NUMBER_OF_LOCAL_VARIABLE_DOFS=NUMBER_OF_LOCAL_VARIABLE_DOFS+DOMAIN_TOPOLOGY%ELEMENTS%NUMBER_OF_ELEMENTS*MAX_NGP @@ -10028,7 +10036,7 @@ SUBROUTINE FIELD_MAPPINGS_CALCULATE(FIELD,ERR,ERROR,*) IF(ERR/=0) CALL FlagError("Could not allocate variable ghost dofs offsets.",ERR,ERROR,*999) !We want to ensure that the ghost DOFs are at the end so loop over the DOFs in two passes. The first pass will process !the local DOFs for each variable component and the second pass will process the ghost DOFs for each variable component. - IF(NUMBER_OF_COMPUTATIONAL_NODES==1) THEN + IF(numberOfGroupComputationNodes==1) THEN domain_type_stop=1 !Local only ELSE domain_type_stop=2 !Local+Ghosts @@ -10074,7 +10082,7 @@ SUBROUTINE FIELD_MAPPINGS_CALCULATE(FIELD,ERR,ERROR,*) variable_global_ny=1+VARIABLE_GLOBAL_DOFS_OFFSET CALL DOMAIN_MAPPINGS_MAPPING_GLOBAL_INITIALISE(FIELD_VARIABLE_DOFS_MAPPING% & & GLOBAL_TO_LOCAL_MAP(variable_global_ny),ERR,ERROR,*999) - NUMBER_OF_DOMAINS=NUMBER_OF_COMPUTATIONAL_NODES !Constant is in all domains + NUMBER_OF_DOMAINS=numberOfGroupComputationNodes !Constant is in all domains ALLOCATE(FIELD_VARIABLE_DOFS_MAPPING%GLOBAL_TO_LOCAL_MAP(variable_global_ny)%LOCAL_NUMBER(NUMBER_OF_DOMAINS), & & STAT=ERR) IF(ERR/=0) CALL FlagError("Could not allocate field variable dofs global to local map local number.", & @@ -10454,7 +10462,7 @@ SUBROUTINE FIELD_MAPPINGS_CALCULATE(FIELD,ERR,ERROR,*) decompositionTopology=>domain%DECOMPOSITION%TOPOLOGY IF(domain_type_idx==1) THEN ! domain_type_idx==1 -> non ghosts !Allocate parameter to dof map for this field variable component - !including both local and ghost data points on this computational domain. + !including both local and ghost data points on this computation domain. ALLOCATE(FIELD_COMPONENT%PARAM_TO_DOF_MAP%DATA_POINT_PARAM2DOF_MAP%DATA_POINTS(decompositionTopology% & & dataPoints%totalNumberOfDataPoints),STAT=ERR) IF(ERR/=0) CALL FlagError("Could not allocate field component parameter to dof data point map.",ERR,ERROR,*999) @@ -10602,13 +10610,13 @@ SUBROUTINE FIELD_MAPPINGS_CALCULATE(FIELD,ERR,ERROR,*) CASE(FIELD_CONSTANT_INTERPOLATION) DO component_idx=1,FIELD%VARIABLES(variable_idx)%NUMBER_OF_COMPONENTS FIELD_COMPONENT=>FIELD%VARIABLES(variable_idx)%COMPONENTS(component_idx) - variable_local_ny=1+VARIABLE_LOCAL_DOFS_OFFSETS(myComputationalNodeNumber) + variable_local_ny=1+VARIABLE_LOCAL_DOFS_OFFSETS(myGroupComputationNodeNumber) !Allocate and set up global to local domain map for variable mapping IF(ASSOCIATED(FIELD_VARIABLE_DOFS_MAPPING)) THEN variable_global_ny=1+VARIABLE_GLOBAL_DOFS_OFFSET CALL DOMAIN_MAPPINGS_MAPPING_GLOBAL_INITIALISE(FIELD_VARIABLE_DOFS_MAPPING% & & GLOBAL_TO_LOCAL_MAP(variable_global_ny),ERR,ERROR,*999) - NUMBER_OF_DOMAINS=NUMBER_OF_COMPUTATIONAL_NODES !Constant is in all domains + NUMBER_OF_DOMAINS=numberOfGroupComputationNodes !Constant is in all domains ALLOCATE(FIELD_VARIABLE_DOFS_MAPPING%GLOBAL_TO_LOCAL_MAP(variable_global_ny)%LOCAL_NUMBER(NUMBER_OF_DOMAINS), & & STAT=ERR) IF(ERR/=0) CALL FlagError("Could not allocate field variable dofs global to local map local number.", & @@ -10710,7 +10718,7 @@ SUBROUTINE FIELD_MAPPINGS_CALCULATE(FIELD,ERR,ERROR,*) DO component_idx=1,FIELD%VARIABLES(variable_idx)%NUMBER_OF_COMPONENTS FIELD_COMPONENT=>FIELD%VARIABLES(variable_idx)%COMPONENTS(component_idx) element_ny=element_ny+1 - variable_local_ny=element_ny+VARIABLE_LOCAL_DOFS_OFFSETS(myComputationalNodeNumber) + variable_local_ny=element_ny+VARIABLE_LOCAL_DOFS_OFFSETS(myGroupComputationNodeNumber) element_nyy=element_nyy+1 !Setup dof to parameter map FIELD%VARIABLES(variable_idx)%DOF_TO_PARAM_MAP%DOF_TYPE(1,variable_local_ny)=FIELD_ELEMENT_DOF_TYPE @@ -10817,7 +10825,7 @@ SUBROUTINE FIELD_MAPPINGS_CALCULATE(FIELD,ERR,ERROR,*) FIELD_COMPONENT=>FIELD%VARIABLES(variable_idx)%COMPONENTS(component_idx) DOMAIN=>FIELD_COMPONENT%DOMAIN node_ny=node_ny+1 - variable_local_ny=node_ny+VARIABLE_LOCAL_DOFS_OFFSETS(myComputationalNodeNumber) + variable_local_ny=node_ny+VARIABLE_LOCAL_DOFS_OFFSETS(myGroupComputationNodeNumber) node_nyy=node_nyy+1 version_idx=DOMAIN%TOPOLOGY%DOFS%DOF_INDEX(1,ny) derivative_idx=DOMAIN%TOPOLOGY%DOFS%DOF_INDEX(2,ny) @@ -10918,7 +10926,7 @@ SUBROUTINE FIELD_MAPPINGS_CALCULATE(FIELD,ERR,ERROR,*) FIELD_COMPONENT=>FIELD%VARIABLES(variable_idx)%COMPONENTS(component_idx) DOMAIN=>FIELD_COMPONENT%DOMAIN element_ny=element_ny+1 - variable_local_ny=element_ny+VARIABLE_LOCAL_DOFS_OFFSETS(myComputationalNodeNumber) + variable_local_ny=element_ny+VARIABLE_LOCAL_DOFS_OFFSETS(myGroupComputationNodeNumber) node_nyy=node_nyy+1 !Setup dof to parameter map FIELD%VARIABLES(variable_idx)%DOF_TO_PARAM_MAP%DOF_TYPE(1,variable_local_ny)=FIELD_GAUSS_POINT_DOF_TYPE @@ -23674,7 +23682,7 @@ SUBROUTINE Field_ParameterSetUpdateElementDataPointDP(field,variableType,fieldSe IF(ASSOCIATED(decompositionTopology)) THEN dataProjection=>field%dataProjection IF(ASSOCIATED(dataProjection)) THEN - ! Use element topology to check if data point is on current computational node + ! Use element topology to check if data point is on current computation node CALL DECOMPOSITION_TOPOLOGY_ELEMENT_CHECK_EXISTS(decompositionTopology,userElementNumber, & & userElementExists,decompositionLocalElementNumber,ghostElement,err,error,*999) IF(userElementExists) THEN @@ -31136,8 +31144,8 @@ SUBROUTINE FIELD_VARIABLE_INITIALISE(FIELD,VARIABLE_NUMBER,ERR,ERROR,*) FIELD_VARIABLE%NUMBER_OF_GLOBAL_DOFS=0 ALLOCATE(FIELD_VARIABLE%DOMAIN_MAPPING,STAT=ERR) IF(ERR/=0) CALL FlagError("Could not allocate field variable domain mapping.",ERR,ERROR,*999) - CALL DOMAIN_MAPPINGS_MAPPING_INITIALISE(FIELD_VARIABLE%DOMAIN_MAPPING, & - & FIELD%DECOMPOSITION%NUMBER_OF_DOMAINS,ERR,ERROR,*999) + CALL DomainMappings_MappingInitialise(FIELD%DECOMPOSITION%workGroup, & + & FIELD_VARIABLE%DOMAIN_MAPPING,ERR,ERROR,*999) CALL FIELD_DOF_TO_PARAM_MAP_INITIALISE(FIELD_VARIABLE%DOF_TO_PARAM_MAP,ERR,ERROR,*999) ELSE LOCAL_ERROR="Variable number "//TRIM(NumberToVString(VARIABLE_NUMBER,"*",ERR,ERROR))// & diff --git a/src/fieldml_input_routines.f90 b/src/fieldml_input_routines.f90 index 27b1f081..6cc31f81 100755 --- a/src/fieldml_input_routines.f90 +++ b/src/fieldml_input_routines.f90 @@ -26,7 +26,7 @@ !> Auckland, the University of Oxford and King's College, London. !> All Rights Reserved. !> -!> Contributor(s): +!> Contributor(s): Caton Little !> !> Alternatively, the contents of this file may be used under the terms of !> either the GNU General Public License Version 2 or later (the "GPL"), or @@ -49,8 +49,10 @@ MODULE FIELDML_INPUT_ROUTINES USE BasisRoutines USE BasisAccessRoutines USE CMISS - USE CONSTANTS - USE ComputationEnvironment + USE ComputationRoutines + USE ComputationAccessRoutines + USE Constants + USE ContextAccessRoutines USE COORDINATE_ROUTINES USE FIELD_ROUTINES USE FieldAccessRoutines @@ -58,12 +60,14 @@ MODULE FIELDML_INPUT_ROUTINES USE FIELDML_TYPES USE FIELDML_UTIL_ROUTINES USE INPUT_OUTPUT - USE LISTS + USE ISO_VARYING_STRING + USE Lists USE MESH_ROUTINES - USE NODE_ROUTINES + USE MeshAccessRoutines + USE NodeRoutines USE REGION_ROUTINES USE RegionAccessRoutines - USE STRINGS + USE Strings #include "macros.h" @@ -561,11 +565,12 @@ END SUBROUTINE FIELDML_INPUT_CHECK_FIELD_COMPATIBLE ! !>Creates an OpenCMISS coordinate system using relevant parameters from FieldML. Does not call CreateFinish. - SUBROUTINE FieldmlInput_CoordinateSystemCreateStart( FIELDML_INFO, EVALUATOR_NAME, COORDINATE_SYSTEM, USER_NUMBER, & - & ERR, ERROR, * ) + SUBROUTINE FieldmlInput_CoordinateSystemCreateStart( FIELDML_INFO, EVALUATOR_NAME, coordinateSystems, COORDINATE_SYSTEM, & + & USER_NUMBER, ERR, ERROR, * ) !Arguments TYPE(FIELDML_IO_TYPE), POINTER :: FIELDML_INFO !Creates an OpenCMISS basis object using relevant parameters from FieldML. Does not call CreateFinish. - SUBROUTINE FIELDML_INPUT_BASIS_CREATE_START( FIELDML_INFO, EVALUATOR_NAME, USER_NUMBER, BASIS, ERR, ERROR, * ) + SUBROUTINE FIELDML_INPUT_BASIS_CREATE_START( FIELDML_INFO, EVALUATOR_NAME, USER_NUMBER, basisFunctions, BASIS, ERR, ERROR, * ) !Arguments TYPE(FIELDML_IO_TYPE), POINTER :: FIELDML_INFO ! Auckland, the University of Oxford and King's College, London. !> All Rights Reserved. !> -!> Contributor(s): Kumar Mithraratne, Jack Lee, Alice Hung, Sander Arens +!> Contributor(s): Chris Bradley, Kumar Mithraratne, Jack Lee, Alice Hung, Sander Arens !> !> Alternatively, the contents of this file may be used under the terms of !> either the GNU General Public License Version 2 or later (the "GPL"), or @@ -48,7 +48,8 @@ MODULE FINITE_ELASTICITY_ROUTINES USE BasisRoutines USE BasisAccessRoutines USE BOUNDARY_CONDITIONS_ROUTINES - USE ComputationEnvironment + USE ComputationRoutines + USE ComputationAccessRoutines USE Constants USE CONTROL_LOOP_ROUTINES USE ControlLoopAccessRoutines @@ -164,7 +165,7 @@ SUBROUTINE FiniteElasticity_BoundaryConditionsAnalyticCalculate(EQUATIONS_SET,BO TYPE(VARYING_STRING), INTENT(OUT) :: ERROR !EQUATIONS_SET%DEPENDENT%DEPENDENT_FIELD IF(ASSOCIATED(DEPENDENT_FIELD)) THEN + + NULLIFY(decomposition) + CALL Field_DecompositionGet(DEPENDENT_FIELD,decomposition,err,error,*999) + NULLIFY(workGroup) + CALL Decomposition_WorkGroupGet(decomposition,workGroup,err,error,*999) + + CALL WorkGroup_GroupNodeNumberGet(workGroup,myGroupComputationNodeNumber,err,error,*999) + CALL WorkGroup_GroupCommunicatorGet(workGroup,groupCommuicator,err,error,*999) + GEOMETRIC_FIELD=>EQUATIONS_SET%GEOMETRY%GEOMETRIC_FIELD IF(ASSOCIATED(GEOMETRIC_FIELD)) THEN CALL FIELD_NUMBER_OF_COMPONENTS_GET(GEOMETRIC_FIELD,FIELD_U_VARIABLE_TYPE,NUMBER_OF_DIMENSIONS,err,error,*999) @@ -227,7 +236,7 @@ SUBROUTINE FiniteElasticity_BoundaryConditionsAnalyticCalculate(EQUATIONS_SET,BO user_node=INNER_SURFACE_NODES(node_idx) !Need to test if this node is in current decomposition CALL DECOMPOSITION_NODE_DOMAIN_GET(DECOMPOSITION,user_node,1,DOMAIN_NUMBER,err,error,*999) - IF(DOMAIN_NUMBER==myComputationalNodeNumber) THEN + IF(DOMAIN_NUMBER==myGroupComputationNodeNumber) THEN !Default to version 1 of each node derivative CALL BOUNDARY_CONDITIONS_SET_NODE(BOUNDARY_CONDITIONS,DEPENDENT_FIELD,FIELD_DELUDELN_VARIABLE_TYPE,1,1, & & user_node,ABS(INNER_NORMAL_XI),BOUNDARY_CONDITION_PRESSURE_INCREMENTED,PIN,err,error,*999) @@ -239,7 +248,7 @@ SUBROUTINE FiniteElasticity_BoundaryConditionsAnalyticCalculate(EQUATIONS_SET,BO user_node=OUTER_SURFACE_NODES(node_idx) !Need to test if this node is in current decomposition CALL DECOMPOSITION_NODE_DOMAIN_GET(DECOMPOSITION,user_node,1,DOMAIN_NUMBER,err,error,*999) - IF(DOMAIN_NUMBER==myComputationalNodeNumber) THEN + IF(DOMAIN_NUMBER==myGroupComputationNodeNumber) THEN !Default to version 1 of each node derivative CALL BOUNDARY_CONDITIONS_SET_NODE(BOUNDARY_CONDITIONS,DEPENDENT_FIELD,FIELD_DELUDELN_VARIABLE_TYPE,1,1, & & user_node,ABS(OUTER_NORMAL_XI),BOUNDARY_CONDITION_PRESSURE_INCREMENTED,POUT,err,error,*999) @@ -251,7 +260,7 @@ SUBROUTINE FiniteElasticity_BoundaryConditionsAnalyticCalculate(EQUATIONS_SET,BO user_node=TOP_SURFACE_NODES(node_idx) !Need to test if this node is in current decomposition CALL DECOMPOSITION_NODE_DOMAIN_GET(DECOMPOSITION,user_node,1,DOMAIN_NUMBER,err,error,*999) - IF(DOMAIN_NUMBER==myComputationalNodeNumber) THEN + IF(DOMAIN_NUMBER==myGroupComputationNodeNumber) THEN CALL MeshTopology_NodeCheckExists(MESH,1,user_node,NODE_EXISTS,global_node,err,error,*999) IF(.NOT.NODE_EXISTS) CYCLE CALL DOMAIN_MAPPINGS_GLOBAL_TO_LOCAL_GET(NODES_MAPPING,global_node,NODE_EXISTS,local_node,err,error,*999) @@ -269,7 +278,7 @@ SUBROUTINE FiniteElasticity_BoundaryConditionsAnalyticCalculate(EQUATIONS_SET,BO user_node=BOTTOM_SURFACE_NODES(node_idx) !Need to check this node exists in the current domain CALL DECOMPOSITION_NODE_DOMAIN_GET(DECOMPOSITION,user_node,1,DOMAIN_NUMBER,err,error,*999) - IF(DOMAIN_NUMBER==myComputationalNodeNumber) THEN + IF(DOMAIN_NUMBER==myGroupComputationNodeNumber) THEN !Default to version 1 of each node derivative CALL BOUNDARY_CONDITIONS_SET_NODE(BOUNDARY_CONDITIONS,DEPENDENT_FIELD,FIELD_U_VARIABLE_TYPE,1,1, & & user_node,ABS(BOTTOM_NORMAL_XI),BOUNDARY_CONDITION_FIXED,0.0_DP,err,error,*999) @@ -282,7 +291,7 @@ SUBROUTINE FiniteElasticity_BoundaryConditionsAnalyticCalculate(EQUATIONS_SET,BO DO node_idx=1,SIZE(BOTTOM_SURFACE_NODES,1) user_node=BOTTOM_SURFACE_NODES(node_idx) CALL DECOMPOSITION_NODE_DOMAIN_GET(DECOMPOSITION,user_node,1,DOMAIN_NUMBER,err,error,*999) - IF(DOMAIN_NUMBER==myComputationalNodeNumber) THEN + IF(DOMAIN_NUMBER==myGroupComputationNodeNumber) THEN CALL MeshTopology_NodeCheckExists(MESH,1,user_node,NODE_EXISTS,global_node,err,error,*999) IF(.NOT.NODE_EXISTS) CYCLE CALL DOMAIN_MAPPINGS_GLOBAL_TO_LOCAL_GET(NODES_MAPPING,global_node,NODE_EXISTS,local_node,err,error,*999) @@ -315,9 +324,9 @@ SUBROUTINE FiniteElasticity_BoundaryConditionsAnalyticCalculate(EQUATIONS_SET,BO ENDIF ENDDO !Check it went well - CALL MPI_REDUCE(X_FIXED,X_OKAY,1,MPI_LOGICAL,MPI_LOR,0,computationalEnvironment%mpiCommunicator,MPI_IERROR) - CALL MPI_REDUCE(Y_FIXED,Y_OKAY,1,MPI_LOGICAL,MPI_LOR,0,computationalEnvironment%mpiCommunicator,MPI_IERROR) - IF(myComputationalNodeNumber==0) THEN + CALL MPI_REDUCE(X_FIXED,X_OKAY,1,MPI_LOGICAL,MPI_LOR,0,groupCommuicator,MPI_IERROR) + CALL MPI_REDUCE(Y_FIXED,Y_OKAY,1,MPI_LOGICAL,MPI_LOR,0,groupCommuicator,MPI_IERROR) + IF(myGroupComputationNodeNumber==0) THEN IF(.NOT.(X_OKAY.AND.Y_OKAY)) THEN CALL FlagError("Could not fix nodes to prevent rigid body motion",err,error,*999) ENDIF @@ -434,7 +443,7 @@ SUBROUTINE FiniteElasticity_BoundaryConditionsAnalyticCalculate(EQUATIONS_SET,BO IF(NODE_EXISTS) THEN CALL DECOMPOSITION_NODE_DOMAIN_GET(DECOMPOSITION,user_node, & & DOMAIN_PRESSURE%MESH_COMPONENT_NUMBER,DOMAIN_NUMBER,err,error,*999) - IF(DOMAIN_NUMBER==myComputationalNodeNumber) THEN + IF(DOMAIN_NUMBER==myGroupComputationNodeNumber) THEN !\todo: test the domain node mappings pointer properly local_node=DOMAIN_PRESSURE%mappings%nodes%global_to_local_map(global_node)%local_number(1) !Default to version 1 of each node derivative @@ -13105,7 +13114,7 @@ END SUBROUTINE FiniteElasticity_PreSolveUpdateBoundaryConditions ! !>Evaluates the functions f(J) and f\'(J); - !> Eq.(21) in Chapelle, Gerbeau, Sainte-Marie, Vignon-Clementel, Computational Mechanics (2010) + !> Eq.(21) in Chapelle, Gerbeau, Sainte-Marie, Vignon-Clementel, Computation Mechanics (2010) SUBROUTINE EVALUATE_CHAPELLE_FUNCTION(Jznu,ffact,dfdJfact,err,error,*) !Argument variables diff --git a/src/fitting_routines.f90 b/src/fitting_routines.f90 index 911cd9be..b9650c12 100755 --- a/src/fitting_routines.f90 +++ b/src/fitting_routines.f90 @@ -68,7 +68,6 @@ MODULE FittingRoutines USE Kinds USE MatrixVector USE Maths - USE NODE_ROUTINES USE PROBLEM_CONSTANTS USE Strings USE SOLVER_ROUTINES diff --git a/src/fluid_mechanics_IO_routines.f90 b/src/fluid_mechanics_IO_routines.f90 index 53f227e0..3eb6a3c7 100755 --- a/src/fluid_mechanics_IO_routines.f90 +++ b/src/fluid_mechanics_IO_routines.f90 @@ -46,14 +46,16 @@ MODULE FLUID_MECHANICS_IO_ROUTINES - USE BaseRoutines - USE EquationsSetConstants - USE FIELD_ROUTINES - USE FieldAccessRoutines - USE TYPES - USE INPUT_OUTPUT - USE KINDS - + USE BaseRoutines + USE Constants + USE EquationsSetConstants + USE FIELD_ROUTINES + USE FieldAccessRoutines + USE INPUT_OUTPUT + USE ISO_VARYING_STRING + USE KINDS + USE TYPES + #include "macros.h" #include "dllexport.h" diff --git a/src/fsi_routines.f90 b/src/fsi_routines.f90 index c4fd13e2..94bf8694 100755 --- a/src/fsi_routines.f90 +++ b/src/fsi_routines.f90 @@ -682,7 +682,7 @@ SUBROUTINE FSI_PostLoop(controlLoop,err,error,*) TYPE(FIELD_VARIABLE_TYPE), POINTER :: geometricVariable TYPE(INTERFACE_CONDITION_TYPE), POINTER :: interfaceCondition TYPE(INTERFACE_TYPE), POINTER :: fsInterface - TYPE(NODES_TYPE), POINTER :: interfaceNodes + TYPE(NodesType), POINTER :: interfaceNodes TYPE(PROBLEM_TYPE), POINTER :: problem TYPE(SOLVER_TYPE), POINTER :: dynamicSolver,linearSolver TYPE(SOLVERS_TYPE), POINTER :: solvers @@ -786,7 +786,7 @@ SUBROUTINE FSI_PostLoop(controlLoop,err,error,*) NULLIFY(domain) CALL FieldVariable_DomainGet(geometricVariable,componentIdx,domain,err,error,*999) DO nodeIdx=1,domain%topology%nodes%TOTAL_NUMBER_OF_NODES - solidNode=interfaceNodes%COUPLED_NODES(1,nodeIdx) + solidNode=interfaceNodes%coupledNodes(1,nodeIdx) DO derivativeIdx=1,domain%topology%nodes%nodes(nodeIdx)%NUMBER_OF_DERIVATIVES DO versionIdx=1,domain%topology%nodes%nodes(nodeIdx)%derivatives(derivativeIdx)%numberOfVersions CALL Field_ParameterSetGetNode(solidDependentField,FIELD_U_VARIABLE_TYPE,FIELD_VALUES_SET_TYPE, & diff --git a/src/generated_mesh_access_routines.f90 b/src/generated_mesh_access_routines.f90 index ac18ddc0..f4e90149 100644 --- a/src/generated_mesh_access_routines.f90 +++ b/src/generated_mesh_access_routines.f90 @@ -46,6 +46,7 @@ MODULE GeneratedMeshAccessRoutines USE BaseRoutines USE Kinds + USE ISO_VARYING_STRING USE MeshAccessRoutines USE Strings USE Types diff --git a/src/generated_mesh_routines.f90 b/src/generated_mesh_routines.f90 index 589f2246..4a275033 100755 --- a/src/generated_mesh_routines.f90 +++ b/src/generated_mesh_routines.f90 @@ -46,20 +46,22 @@ MODULE GENERATED_MESH_ROUTINES USE BaseRoutines USE BasisRoutines - USE ComputationEnvironment - USE CONSTANTS + USE ComputationRoutines + USE ComputationAccessRoutines + USE Constants USE COORDINATE_ROUTINES USE FIELD_ROUTINES USE FieldAccessRoutines USE GeneratedMeshAccessRoutines USE INPUT_OUTPUT USE ISO_VARYING_STRING - USE KINDS - USE MATHS + USE Kinds + USE Maths USE MESH_ROUTINES - USE NODE_ROUTINES - USE STRINGS - USE TYPES + USE MeshAccessRoutines + USE NodeRoutines + USE Strings + USE Types #include "macros.h" @@ -1403,7 +1405,7 @@ SUBROUTINE GENERATED_MESH_REGULAR_CREATE_FINISH(GENERATED_MESH,MESH_USER_NUMBER, TYPE(GENERATED_MESH_REGULAR_TYPE), POINTER :: REGULAR_MESH TYPE(INTERFACE_TYPE), POINTER :: INTERFACE TYPE(MeshElementsType), POINTER :: MESH_ELEMENTS - TYPE(NODES_TYPE), POINTER :: NODES + TYPE(NodesType), POINTER :: NODES TYPE(REGION_TYPE), POINTER :: REGION TYPE(VARYING_STRING) :: LOCAL_ERROR @@ -1532,12 +1534,12 @@ SUBROUTINE GENERATED_MESH_REGULAR_CREATE_FINISH(GENERATED_MESH,MESH_USER_NUMBER, !Create the default node set NULLIFY(NODES) IF(ASSOCIATED(REGION)) THEN - CALL NODES_CREATE_START(REGION,TOTAL_NUMBER_OF_NODES,NODES,ERR,ERROR,*999) + CALL Nodes_CreateStart(REGION,TOTAL_NUMBER_OF_NODES,NODES,ERR,ERROR,*999) ELSE - CALL NODES_CREATE_START(INTERFACE,TOTAL_NUMBER_OF_NODES,NODES,ERR,ERROR,*999) + CALL Nodes_CreateStart(INTERFACE,TOTAL_NUMBER_OF_NODES,NODES,ERR,ERROR,*999) ENDIF !Finish the nodes creation - CALL NODES_CREATE_FINISH(NODES,ERR,ERROR,*999) + CALL Nodes_CreateFinish(NODES,ERR,ERROR,*999) !Create the mesh IF(ASSOCIATED(REGION)) THEN CALL MESH_CREATE_START(MESH_USER_NUMBER,REGION,REGULAR_MESH%MESH_DIMENSION,GENERATED_MESH%MESH, & @@ -2230,7 +2232,7 @@ SUBROUTINE GENERATED_MESH_ELLIPSOID_CREATE_FINISH(GENERATED_MESH,MESH_USER_NUMBE TYPE(BASIS_TYPE), POINTER :: BASIS1,BASIS2 INTEGER(INTG), ALLOCATABLE :: NUMBER_ELEMENTS_XI(:)!,NUMBER_OF_NODES_XIC(:) TYPE(REGION_TYPE), POINTER :: REGION - TYPE(NODES_TYPE), POINTER :: NODES + TYPE(NodesType), POINTER :: NODES INTEGER(INTG) :: TOTAL_NUMBER_OF_NODES,TOTAL_NUMBER_OF_ELEMENTS,NUMBER_OF_DIMENSIONS INTEGER(INTG) :: BASIS_NUMBER_OF_NODES,CORNER_NUMBER_OF_NODES INTEGER(INTG) :: ne1,ne2,ne3,nn1,nn2,nn3,from1,from2,from3,nn,ne,mc @@ -2281,9 +2283,9 @@ SUBROUTINE GENERATED_MESH_ELLIPSOID_CREATE_FINISH(GENERATED_MESH,MESH_USER_NUMBE TOTAL_NUMBER_OF_NODES=TOTAL_NUMBER_OF_NODES+BASIS_NUMBER_OF_NODES-CORNER_NUMBER_OF_NODES ENDDO NULLIFY(NODES) - CALL NODES_CREATE_START(REGION,TOTAL_NUMBER_OF_NODES,NODES,ERR,ERROR,*999) + CALL Nodes_CreateStart(REGION,TOTAL_NUMBER_OF_NODES,NODES,ERR,ERROR,*999) !Finish the nodes creation - CALL NODES_CREATE_FINISH(NODES,ERR,ERROR,*999) + CALL Nodes_CreateFinish(NODES,ERR,ERROR,*999) !Create the mesh CALL MESH_CREATE_START(MESH_USER_NUMBER,GENERATED_MESH%REGION, & & SIZE(NUMBER_ELEMENTS_XI,1), GENERATED_MESH%MESH,ERR,ERROR,*999) @@ -2484,7 +2486,7 @@ SUBROUTINE GENERATED_MESH_CYLINDER_CREATE_FINISH(GENERATED_MESH,MESH_USER_NUMBER TYPE(BASIS_TYPE), POINTER :: BASIS INTEGER(INTG), ALLOCATABLE :: NUMBER_ELEMENTS_XI(:) TYPE(REGION_TYPE), POINTER :: REGION - TYPE(NODES_TYPE), POINTER :: NODES + TYPE(NodesType), POINTER :: NODES INTEGER(INTG) :: TOTAL_NUMBER_OF_NODES,TOTAL_NUMBER_OF_ELEMENTS,NUMBER_OF_DIMENSIONS INTEGER(INTG) :: CORNER_NUMBER_OF_NODES,BASIS_NUMBER_OF_NODES INTEGER(INTG) :: ne1,ne2,ne3,nn1,nn2,nn3,from1,from2,from3,nn,ne,basis_idx @@ -2539,9 +2541,9 @@ SUBROUTINE GENERATED_MESH_CYLINDER_CREATE_FINISH(GENERATED_MESH,MESH_USER_NUMBER ENDIF ENDDO NULLIFY(NODES) - CALL NODES_CREATE_START(REGION,TOTAL_NUMBER_OF_NODES,NODES,ERR,ERROR,*999) + CALL Nodes_CreateStart(REGION,TOTAL_NUMBER_OF_NODES,NODES,ERR,ERROR,*999) !Finish the nodes creation - CALL NODES_CREATE_FINISH(NODES,ERR,ERROR,*999) + CALL Nodes_CreateFinish(NODES,ERR,ERROR,*999) !Set the total number of elements TOTAL_NUMBER_OF_ELEMENTS=NUMBER_ELEMENTS_XI(1)*NUMBER_ELEMENTS_XI(2)*NUMBER_ELEMENTS_XI(3) CALL MESH_NUMBER_OF_ELEMENTS_SET(GENERATED_MESH%MESH,TOTAL_NUMBER_OF_ELEMENTS,ERR,ERROR,*999) @@ -3305,7 +3307,7 @@ SUBROUTINE GeneratedMesh_RegularGeometricParametersCalculate(REGULAR_MESH,FIELD, END IF ENDIF END SELECT - !Update geometric parameters in this computational domain only + !Update geometric parameters in this computation domain only DOMAIN=>FIELD_VARIABLE_COMPONENT%DOMAIN DOMAIN_NODES=>DOMAIN%TOPOLOGY%NODES DO component_node=1,TOTAL_NUMBER_OF_NODES_XI(1)*TOTAL_NUMBER_OF_NODES_XI(2)*TOTAL_NUMBER_OF_NODES_XI(3) @@ -3570,7 +3572,7 @@ SUBROUTINE GeneratedMesh_EllipsoidGeometricParametersCalculate(ELLIPSOID_MESH,FI TYPE(DOMAIN_NODES_TYPE), POINTER :: DOMAIN_NODES TYPE(FIELD_VARIABLE_TYPE), POINTER :: FIELD_VARIABLE TYPE(FIELD_VARIABLE_COMPONENT_TYPE), POINTER :: FIELD_VARIABLE_COMPONENT - INTEGER(INTG) :: MY_COMPUTATIONAL_NODE,DOMAIN_NUMBER,MESH_COMPONENT,basis_idx + INTEGER(INTG) :: MY_COMPUTATION_NODE,DOMAIN_NUMBER,MESH_COMPONENT,basis_idx INTEGER(INTG) :: NUMBER_ELEMENTS_XI(3),NUMBER_OF_NODES_XIC(3) INTEGER(INTG) :: TOTAL_NUMBER_NODES_XI(3),INTERPOLATION_TYPES(3) INTEGER(INTG) :: component_idx,xi_idx @@ -3581,12 +3583,21 @@ SUBROUTINE GeneratedMesh_EllipsoidGeometricParametersCalculate(ELLIPSOID_MESH,FI REAL(DP) :: DELTA(3),DELTAi(3),RECT_COORDS(3),t,phi,alpha,xi,nu,x,y,z REAL(DP) :: ELLIPSOID_EXTENT(4) TYPE(VARYING_STRING) :: LOCAL_ERROR + TYPE(WorkGroupType), POINTER :: workGroup NULLIFY(BASIS,DOMAIN,DECOMPOSITION,DOMAIN_NODES,FIELD_VARIABLE,FIELD_VARIABLE_COMPONENT) ENTERS("GeneratedMesh_EllipsoidGeometricParametersCalculate",ERR,ERROR,*999) - MY_COMPUTATIONAL_NODE=ComputationalEnvironment_NodeNumberGet(ERR,ERROR) + IF(.NOT.ASSOCIATED(field)) CALL FlagError("Field is not associated.",err,error,*999) + + NULLIFY(decomposition) + CALL Field_DecompositionGet(field,decomposition,err,error,*999) + NULLIFY(workGroup) + CALL Decomposition_WorkGroupGet(decomposition,workGroup,err,error,*999) + + CALL WorkGroup_GroupNodeNumberGet(workGroup,MY_COMPUTATION_NODE,err,error,*999) + ! assign to the field np=0 @@ -3649,7 +3660,7 @@ SUBROUTINE GeneratedMesh_EllipsoidGeometricParametersCalculate(ELLIPSOID_MESH,FI np=1 npg=COMPONENT_NODE_TO_USER_NUMBER(ELLIPSOID_MESH%GENERATED_MESH,basis_idx,np,ERR,ERROR) CALL DECOMPOSITION_NODE_DOMAIN_GET(DECOMPOSITION,npg,MESH_COMPONENT,DOMAIN_NUMBER,ERR,ERROR,*999) - IF(DOMAIN_NUMBER==MY_COMPUTATIONAL_NODE) THEN + IF(DOMAIN_NUMBER==MY_COMPUTATION_NODE) THEN RECT_COORDS(1)=0 RECT_COORDS(2)=0 RECT_COORDS(3)=-ELLIPSOID_EXTENT(1) @@ -3676,7 +3687,7 @@ SUBROUTINE GeneratedMesh_EllipsoidGeometricParametersCalculate(ELLIPSOID_MESH,FI np=np+1 npg=COMPONENT_NODE_TO_USER_NUMBER(ELLIPSOID_MESH%GENERATED_MESH,basis_idx,np,ERR,ERROR) CALL DECOMPOSITION_NODE_DOMAIN_GET(DECOMPOSITION,npg,MESH_COMPONENT,DOMAIN_NUMBER,ERR,ERROR,*999) - IF(DOMAIN_NUMBER==MY_COMPUTATIONAL_NODE) THEN + IF(DOMAIN_NUMBER==MY_COMPUTATION_NODE) THEN DO component_idx=1,FIELD_VARIABLE%NUMBER_OF_COMPONENTS CALL FIELD_PARAMETER_SET_UPDATE_NODE(FIELD,FIELD_U_VARIABLE_TYPE,FIELD_VALUES_SET_TYPE,1,1,npg, & & component_idx,RECT_COORDS(component_idx),ERR,ERROR,*999) @@ -3699,7 +3710,7 @@ SUBROUTINE GeneratedMesh_EllipsoidGeometricParametersCalculate(ELLIPSOID_MESH,FI np=np+1 npg=COMPONENT_NODE_TO_USER_NUMBER(ELLIPSOID_MESH%GENERATED_MESH,basis_idx,np,ERR,ERROR) CALL DECOMPOSITION_NODE_DOMAIN_GET(DECOMPOSITION,npg,MESH_COMPONENT,DOMAIN_NUMBER,ERR,ERROR,*999) - IF(DOMAIN_NUMBER==MY_COMPUTATIONAL_NODE) THEN + IF(DOMAIN_NUMBER==MY_COMPUTATION_NODE) THEN DO component_idx=1,FIELD_VARIABLE%NUMBER_OF_COMPONENTS CALL FIELD_PARAMETER_SET_UPDATE_NODE(FIELD,FIELD_U_VARIABLE_TYPE,FIELD_VALUES_SET_TYPE,1,1,npg, & & component_idx,RECT_COORDS(component_idx),ERR,ERROR,*999) @@ -3730,7 +3741,7 @@ SUBROUTINE GeneratedMesh_EllipsoidGeometricParametersCalculate(ELLIPSOID_MESH,FI np=np+1 npg=COMPONENT_NODE_TO_USER_NUMBER(ELLIPSOID_MESH%GENERATED_MESH,basis_idx,np,ERR,ERROR) CALL DECOMPOSITION_NODE_DOMAIN_GET(DECOMPOSITION,npg,MESH_COMPONENT,DOMAIN_NUMBER,ERR,ERROR,*999) - IF(DOMAIN_NUMBER==MY_COMPUTATIONAL_NODE) THEN + IF(DOMAIN_NUMBER==MY_COMPUTATION_NODE) THEN DO component_idx=1,FIELD_VARIABLE%NUMBER_OF_COMPONENTS CALL FIELD_PARAMETER_SET_UPDATE_NODE(FIELD,FIELD_U_VARIABLE_TYPE,FIELD_VALUES_SET_TYPE,1,1,npg, & & component_idx,RECT_COORDS(component_idx),ERR,ERROR,*999) @@ -3757,7 +3768,7 @@ SUBROUTINE GeneratedMesh_EllipsoidGeometricParametersCalculate(ELLIPSOID_MESH,FI np=np+1 npg=COMPONENT_NODE_TO_USER_NUMBER(ELLIPSOID_MESH%GENERATED_MESH,basis_idx,np,ERR,ERROR) CALL DECOMPOSITION_NODE_DOMAIN_GET(DECOMPOSITION,npg,MESH_COMPONENT,DOMAIN_NUMBER,ERR,ERROR,*999) - IF(DOMAIN_NUMBER==MY_COMPUTATIONAL_NODE) THEN + IF(DOMAIN_NUMBER==MY_COMPUTATION_NODE) THEN DO component_idx=1,FIELD_VARIABLE%NUMBER_OF_COMPONENTS CALL FIELD_PARAMETER_SET_UPDATE_NODE(FIELD,FIELD_U_VARIABLE_TYPE,FIELD_VALUES_SET_TYPE,1,1,npg, & & component_idx,RECT_COORDS(component_idx),ERR,ERROR,*999) @@ -3780,7 +3791,7 @@ SUBROUTINE GeneratedMesh_EllipsoidGeometricParametersCalculate(ELLIPSOID_MESH,FI np=np+1 npg=COMPONENT_NODE_TO_USER_NUMBER(ELLIPSOID_MESH%GENERATED_MESH,basis_idx,np,ERR,ERROR) CALL DECOMPOSITION_NODE_DOMAIN_GET(DECOMPOSITION,npg,MESH_COMPONENT,DOMAIN_NUMBER,ERR,ERROR,*999) - IF(DOMAIN_NUMBER==MY_COMPUTATIONAL_NODE) THEN + IF(DOMAIN_NUMBER==MY_COMPUTATION_NODE) THEN DO component_idx=1,FIELD_VARIABLE%NUMBER_OF_COMPONENTS CALL FIELD_PARAMETER_SET_UPDATE_NODE(FIELD,FIELD_U_VARIABLE_TYPE,FIELD_VALUES_SET_TYPE,1,1,npg, & & component_idx,RECT_COORDS(component_idx),ERR,ERROR,*999) @@ -3807,7 +3818,7 @@ SUBROUTINE GeneratedMesh_EllipsoidGeometricParametersCalculate(ELLIPSOID_MESH,FI np=1 npg=COMPONENT_NODE_TO_USER_NUMBER(ELLIPSOID_MESH%GENERATED_MESH,basis_idx,np,ERR,ERROR) CALL DECOMPOSITION_NODE_DOMAIN_GET(DECOMPOSITION,npg,MESH_COMPONENT,DOMAIN_NUMBER,ERR,ERROR,*999) - IF(DOMAIN_NUMBER==MY_COMPUTATIONAL_NODE) THEN + IF(DOMAIN_NUMBER==MY_COMPUTATION_NODE) THEN RECT_COORDS(1)=0 RECT_COORDS(2)=0 RECT_COORDS(3)=-ELLIPSOID_EXTENT(1) @@ -3833,7 +3844,7 @@ SUBROUTINE GeneratedMesh_EllipsoidGeometricParametersCalculate(ELLIPSOID_MESH,FI np=np+1 npg=COMPONENT_NODE_TO_USER_NUMBER(ELLIPSOID_MESH%GENERATED_MESH,basis_idx,np,ERR,ERROR) CALL DECOMPOSITION_NODE_DOMAIN_GET(DECOMPOSITION,npg,MESH_COMPONENT,DOMAIN_NUMBER,ERR,ERROR,*999) - IF(DOMAIN_NUMBER==MY_COMPUTATIONAL_NODE) THEN + IF(DOMAIN_NUMBER==MY_COMPUTATION_NODE) THEN DO component_idx=1,FIELD_VARIABLE%NUMBER_OF_COMPONENTS CALL FIELD_PARAMETER_SET_UPDATE_NODE(FIELD,FIELD_U_VARIABLE_TYPE,FIELD_VALUES_SET_TYPE,1,1,npg, & & component_idx,RECT_COORDS(component_idx),ERR,ERROR,*999) @@ -3856,7 +3867,7 @@ SUBROUTINE GeneratedMesh_EllipsoidGeometricParametersCalculate(ELLIPSOID_MESH,FI np=np+1 npg=COMPONENT_NODE_TO_USER_NUMBER(ELLIPSOID_MESH%GENERATED_MESH,basis_idx,np,ERR,ERROR) CALL DECOMPOSITION_NODE_DOMAIN_GET(DECOMPOSITION,npg,MESH_COMPONENT,DOMAIN_NUMBER,ERR,ERROR,*999) - IF(DOMAIN_NUMBER==MY_COMPUTATIONAL_NODE) THEN + IF(DOMAIN_NUMBER==MY_COMPUTATION_NODE) THEN DO component_idx=1,FIELD_VARIABLE%NUMBER_OF_COMPONENTS CALL FIELD_PARAMETER_SET_UPDATE_NODE(FIELD,FIELD_U_VARIABLE_TYPE,FIELD_VALUES_SET_TYPE,1,1,npg, & & component_idx,RECT_COORDS(component_idx),ERR,ERROR,*999) @@ -3887,7 +3898,7 @@ SUBROUTINE GeneratedMesh_EllipsoidGeometricParametersCalculate(ELLIPSOID_MESH,FI np=np+1 npg=COMPONENT_NODE_TO_USER_NUMBER(ELLIPSOID_MESH%GENERATED_MESH,basis_idx,np,ERR,ERROR) CALL DECOMPOSITION_NODE_DOMAIN_GET(DECOMPOSITION,npg,MESH_COMPONENT,DOMAIN_NUMBER,ERR,ERROR,*999) - IF(DOMAIN_NUMBER==MY_COMPUTATIONAL_NODE) THEN + IF(DOMAIN_NUMBER==MY_COMPUTATION_NODE) THEN DO component_idx=1,FIELD_VARIABLE%NUMBER_OF_COMPONENTS CALL FIELD_PARAMETER_SET_UPDATE_NODE(FIELD,FIELD_U_VARIABLE_TYPE,FIELD_VALUES_SET_TYPE,1,1,npg, & & component_idx,RECT_COORDS(component_idx),ERR,ERROR,*999) diff --git a/src/interface_access_routines.f90 b/src/interface_access_routines.f90 index 7c8fb999..749b98aa 100644 --- a/src/interface_access_routines.f90 +++ b/src/interface_access_routines.f90 @@ -48,6 +48,7 @@ MODULE InterfaceAccessRoutines USE DataPointAccessRoutines USE FieldAccessRoutines USE InterfaceConditionAccessRoutines + USE ISO_VARYING_STRING USE Kinds USE MeshAccessRoutines USE Strings @@ -347,7 +348,7 @@ SUBROUTINE Interface_NodesGet(interface,nodes,err,error,*) !Argument variables TYPE(INTERFACE_TYPE), POINTER :: interface !Returns a pointer to the work group for a decomposition. + SUBROUTINE Decomposition_WorkGroupGet(decomposition,workGroup,err,error,*) + + !Argument variables + TYPE(DECOMPOSITION_TYPE), POINTER :: decomposition !decomposition%workGroup + IF(.NOT.ASSOCIATED(workGroup)) CALL FlagError("The decomposition work group is not associated.",err,error,*999) + + EXITS("Decomposition_WorkGroupGet") + RETURN +999 NULLIFY(workGroup) +998 ERRORSEXITS("Decomposition_WorkGroupGet",err,error) + RETURN 1 + + END SUBROUTINE Decomposition_WorkGroupGet + ! !================================================================================================================================ ! @@ -1056,8 +1089,8 @@ SUBROUTINE Mesh_RegionGet(mesh,region,err,error,*) NULLIFY(interface) region=>mesh%region IF(.NOT.ASSOCIATED(region)) THEN - INTERFACE=>mesh%INTERFACE - IF(ASSOCIATED(INTERFACE)) THEN + interface=>mesh%interface + IF(ASSOCIATED(interface)) THEN parentRegion=>interface%PARENT_REGION IF(ASSOCIATED(parentRegion)) THEN region=>parentRegion diff --git a/src/mesh_routines.f90 b/src/mesh_routines.f90 index e5d467f7..658e976f 100644 --- a/src/mesh_routines.f90 +++ b/src/mesh_routines.f90 @@ -26,7 +26,7 @@ !> Auckland, the University of Oxford and King's College, London. !> All Rights Reserved. !> -!> Contributor(s): +!> Contributor(s): Chris Bradley !> !> Alternatively, the contents of this file may be used under the terms of !> either the GNU General Public License Version 2 or later (the "GPL"), or @@ -49,7 +49,10 @@ MODULE MESH_ROUTINES USE BasisAccessRoutines USE CmissMPI USE CMISS_PARMETIS - USE ComputationEnvironment + USE ComputationRoutines + USE ComputationAccessRoutines + USE Constants + USE ContextAccessRoutines USE COORDINATE_ROUTINES USE DataProjectionAccessRoutines USE DOMAIN_MAPPINGS @@ -61,7 +64,7 @@ MODULE MESH_ROUTINES #ifndef NOMPIMOD USE MPI #endif - USE NODE_ROUTINES + USE NodeRoutines USE RegionAccessRoutines USE Strings USE Trees @@ -154,6 +157,8 @@ MODULE MESH_ROUTINES PUBLIC DECOMPOSITION_NUMBER_OF_DOMAINS_GET,DECOMPOSITION_NUMBER_OF_DOMAINS_SET + PUBLIC Decomposition_WorkGroupSet + PUBLIC DecompositionTopology_DataPointCheckExists PUBLIC DecompositionTopology_DataProjectionCalculate @@ -282,7 +287,7 @@ END SUBROUTINE DECOMPOSITION_ADJACENT_ELEMENT_INITIALISE !================================================================================================================================ ! - !>Finishes the creation of a domain decomposition on a given mesh. \see OPENCMISS::Iron::cmfe_DecompositionCreateFinish + !>Finishes the creation of a domain decomposition on a given mesh. \see OpenCMISS::Iron::cmfe_Decomposition_CreateFinish SUBROUTINE DECOMPOSITION_CREATE_FINISH(DECOMPOSITION,ERR,ERROR,*) !Argument variables @@ -300,7 +305,7 @@ SUBROUTINE DECOMPOSITION_CREATE_FINISH(DECOMPOSITION,ERR,ERROR,*) CALL DECOMPOSITION_ELEMENT_DOMAIN_CALCULATE(DECOMPOSITION,ERR,ERROR,*999) !Initialise the topology information for this decomposition CALL DECOMPOSITION_TOPOLOGY_INITIALISE(DECOMPOSITION,ERR,ERROR,*999) - !Initialise the domain for this computational node + !Initialise the domain for this computation node CALL DOMAIN_INITIALISE(DECOMPOSITION,ERR,ERROR,*999) !Calculate the decomposition topology CALL DECOMPOSITION_TOPOLOGY_CALCULATE(DECOMPOSITION,ERR,ERROR,*999) @@ -332,13 +337,14 @@ SUBROUTINE DECOMPOSITION_CREATE_FINISH(DECOMPOSITION,ERR,ERROR,*) RETURN 999 ERRORSEXITS("DECOMPOSITION_CREATE_FINISH",ERR,ERROR) RETURN 1 + END SUBROUTINE DECOMPOSITION_CREATE_FINISH ! !================================================================================================================================ ! - !>Starts the creation of a domain decomposition for a given mesh. \see OPENCMISS::Iron::cmfe_DecompositionCreateStart + !>Starts the creation of a domain decomposition for a given mesh. \see OpenCMISS::Iron::cmfe_Decomposition_CreateStart SUBROUTINE DECOMPOSITION_CREATE_START(USER_NUMBER,MESH,DECOMPOSITION,ERR,ERROR,*) !Argument variables @@ -349,9 +355,13 @@ SUBROUTINE DECOMPOSITION_CREATE_START(USER_NUMBER,MESH,DECOMPOSITION,ERR,ERROR,* TYPE(VARYING_STRING), INTENT(OUT) :: ERROR !worldWorkGroup newDecomposition%NUMBER_OF_DOMAINS=1 newDecomposition%numberOfElements=mesh%NUMBER_OF_ELEMENTS ALLOCATE(newDecomposition%ELEMENT_DOMAIN(MESH%NUMBER_OF_ELEMENTS),STAT=ERR) @@ -433,7 +452,7 @@ END SUBROUTINE DECOMPOSITION_CREATE_START !================================================================================================================================ ! - !>Destroys a domain decomposition identified by a user number and deallocates all memory. \see OPENCMISS::Iron::cmfe_DecompositionDestroy + !>Destroys a domain decomposition identified by a user number and deallocates all memory. \see OpenCMISS::Iron::cmfe_Decomposition_Destroy SUBROUTINE DECOMPOSITION_DESTROY_NUMBER(USER_NUMBER,MESH,ERR,ERROR,*) !Argument variables @@ -514,7 +533,7 @@ END SUBROUTINE DECOMPOSITION_DESTROY_NUMBER !================================================================================================================================ ! - !>Destroys a domain decomposition identified by an object and deallocates all memory. \see OPENCMISS::Iron::cmfe_DecompositionDestroy + !>Destroys a domain decomposition identified by an object and deallocates all memory. \see OpenCMISS::Iron::cmfe_Decomposition_Destroy SUBROUTINE DECOMPOSITION_DESTROY(DECOMPOSITION,ERR,ERROR,*) !Argument variables @@ -584,10 +603,9 @@ SUBROUTINE DECOMPOSITION_DESTROY(DECOMPOSITION,ERR,ERROR,*) END SUBROUTINE DECOMPOSITION_DESTROY ! - !================================================================================================================================ - ! + !================================================================================================================================ ! - !>Calculates the element domains for a decomposition of a mesh. \see OPENCMISS::Iron::cmfe_DecompositionElementDomainCalculate + !>Calculates the element domains for a decomposition of a mesh. \see OpenCMISS::Iron::cmfe_Decomposition_ElementDomainCalculate SUBROUTINE DECOMPOSITION_ELEMENT_DOMAIN_CALCULATE(DECOMPOSITION,ERR,ERROR,*) !Argument variables @@ -595,19 +613,19 @@ SUBROUTINE DECOMPOSITION_ELEMENT_DOMAIN_CALCULATE(DECOMPOSITION,ERR,ERROR,*) INTEGER(INTG), INTENT(OUT) :: ERR !(MESH%NUMBER_OF_ELEMENTS-ELEMENT_STOP)) & - & ELEMENT_STOP=MESH%NUMBER_OF_ELEMENTS-(number_computational_nodes-1-no_computational_node) + IF((numberOfComputationNodes-1-no_computation_node)>(MESH%NUMBER_OF_ELEMENTS-ELEMENT_STOP)) & + & ELEMENT_STOP=MESH%NUMBER_OF_ELEMENTS-(numberOfComputationNodes-1-no_computation_node) IF(ELEMENT_START>MESH%NUMBER_OF_ELEMENTS) ELEMENT_START=MESH%NUMBER_OF_ELEMENTS IF(ELEMENT_STOP>MESH%NUMBER_OF_ELEMENTS) ELEMENT_STOP=MESH%NUMBER_OF_ELEMENTS - DISPLACEMENTS(no_computational_node)=ELEMENT_START-1 - ELEMENT_DISTANCE(no_computational_node+1)=ELEMENT_STOP !C numbering + DISPLACEMENTS(no_computation_node)=ELEMENT_START-1 + ELEMENT_DISTANCE(no_computation_node+1)=ELEMENT_STOP !C numbering NUMBER_OF_ELEMENTS=ELEMENT_STOP-ELEMENT_START+1 - RECEIVE_COUNTS(no_computational_node)=NUMBER_OF_ELEMENTS + RECEIVE_COUNTS(no_computation_node)=NUMBER_OF_ELEMENTS IF(NUMBER_OF_ELEMENTS>MAX_NUMBER_ELEMENTS_PER_NODE) MAX_NUMBER_ELEMENTS_PER_NODE=NUMBER_OF_ELEMENTS - IF(no_computational_node==my_computational_node_number) THEN + IF(no_computation_node==myComputationNodeNumber) THEN MY_ELEMENT_START=ELEMENT_START MY_ELEMENT_STOP=ELEMENT_STOP MY_NUMBER_OF_ELEMENTS=ELEMENT_STOP-ELEMENT_START+1 @@ -675,7 +689,7 @@ SUBROUTINE DECOMPOSITION_ELEMENT_DOMAIN_CALCULATE(DECOMPOSITION,ERR,ERROR,*) number_elem_indicies=number_elem_indicies+BASIS%NUMBER_OF_NODES ENDDO !ne ENDIF - ENDDO !no_computational_node + ENDDO !no_computation_node ALLOCATE(ELEMENT_PTR(0:MY_NUMBER_OF_ELEMENTS),STAT=ERR) IF(ERR/=0) CALL FlagError("Could not allocate element pointer list.",ERR,ERROR,*999) @@ -700,9 +714,15 @@ SUBROUTINE DECOMPOSITION_ELEMENT_DOMAIN_CALCULATE(DECOMPOSITION,ERR,ERROR,*) ENDDO !ne !Set up ParMETIS variables + NULLIFY(context) + CALL WorkGroup_ContextGet(decomposition%workGroup,context,err,error,*999) + CALL Context_RandomSeedsSizeGet(context,randomSeedsSize,err,error,*999) + ALLOCATE(randomSeeds(randomSeedsSize),STAT=err) + IF(err/=0) CALL FlagError("Could not allocate random seeds.",err,error,*999) + CALL Context_RandomSeedsGet(context,randomSeeds,err,error,*999) WEIGHT_FLAG=0 !No weights ELEMENT_WEIGHT(1)=1 !Isn't used due to weight flag - NUMBER_FLAG=0 !C Numbering as there is a bug with Fortran numbering + NUMBER_FLAG=0 !C Numbering as there is a bug with Fortran numbering NUMBER_OF_CONSTRAINTS=1 IF(minNumberXi==1) THEN NUMBER_OF_COMMON_NODES=1 @@ -710,25 +730,25 @@ SUBROUTINE DECOMPOSITION_ELEMENT_DOMAIN_CALCULATE(DECOMPOSITION,ERR,ERROR,*) NUMBER_OF_COMMON_NODES=2 ENDIF !ParMETIS now has doule precision for these - !TPWGTS=1.0_SP/REAL(DECOMPOSITION%NUMBER_OF_DOMAINS,SP) + !TPWGTS=1.0_SP/REAL(DECOMPOSITION%NUMBER_OF_DOMAINS,SP) !UBVEC=1.05_SP TPWGTS=1.0_DP/REAL(DECOMPOSITION%NUMBER_OF_DOMAINS,DP) UBVEC=1.05_DP PARMETIS_OPTIONS(0)=1 !If zero, defaults are used, otherwise next two values are used PARMETIS_OPTIONS(1)=7 !Level of information to output - PARMETIS_OPTIONS(2)=cmissRandomSeeds(1) !Seed for random number generator - + PARMETIS_OPTIONS(2)=randomSeeds(1) !Seed for random number generator + IF(ALLOCATED(randomSeeds)) DEALLOCATE(randomSeeds) !Call ParMETIS to calculate the partitioning of the mesh graph. CALL PARMETIS_PARTMESHKWAY(ELEMENT_DISTANCE,ELEMENT_PTR,ELEMENT_INDICIES,ELEMENT_WEIGHT,WEIGHT_FLAG,NUMBER_FLAG, & & NUMBER_OF_CONSTRAINTS,NUMBER_OF_COMMON_NODES,DECOMPOSITION%NUMBER_OF_DOMAINS,TPWGTS,UBVEC,PARMETIS_OPTIONS, & - & DECOMPOSITION%NUMBER_OF_EDGES_CUT,DECOMPOSITION%ELEMENT_DOMAIN(DISPLACEMENTS(my_computational_node_number)+1:), & - & computationalEnvironment%mpiCommunicator,ERR,ERROR,*999) + & DECOMPOSITION%NUMBER_OF_EDGES_CUT,DECOMPOSITION%ELEMENT_DOMAIN(DISPLACEMENTS(myComputationNodeNumber)+1:), & + & groupCommunicator,ERR,ERROR,*999) - !Transfer all the element domain information to the other computational nodes so that each rank has all the info - IF(number_computational_nodes>1) THEN + !Transfer all the element domain information to the other computation nodes so that each rank has all the info + IF(numberOfComputationNodes>1) THEN !This should work on a single processor but doesn't for mpich2 under windows. Maybe a bug? Avoid for now. CALL MPI_ALLGATHERV(MPI_IN_PLACE,MAX_NUMBER_ELEMENTS_PER_NODE,MPI_INTEGER,DECOMPOSITION%ELEMENT_DOMAIN, & - & RECEIVE_COUNTS,DISPLACEMENTS,MPI_INTEGER,computationalEnvironment%mpiCommunicator,MPI_IERROR) + & RECEIVE_COUNTS,DISPLACEMENTS,MPI_INTEGER,groupCommunicator,MPI_IERROR) CALL MPI_ERROR_CHECK("MPI_ALLGATHERV",MPI_IERROR,ERR,ERROR,*999) ENDIF @@ -748,28 +768,28 @@ SUBROUTINE DECOMPOSITION_ELEMENT_DOMAIN_CALCULATE(DECOMPOSITION,ERR,ERROR,*) END SELECT !Check decomposition and check that each domain has an element in it. - ALLOCATE(ELEMENT_COUNT(0:number_computational_nodes-1),STAT=ERR) + ALLOCATE(ELEMENT_COUNT(0:numberOfComputationNodes-1),STAT=ERR) IF(ERR/=0) CALL FlagError("Could not allocate element count.",ERR,ERROR,*999) ELEMENT_COUNT=0 DO elem_index=1,MESH%NUMBER_OF_ELEMENTS - no_computational_node=DECOMPOSITION%ELEMENT_DOMAIN(elem_index) - IF(no_computational_node>=0.AND.no_computational_node=0.AND.no_computation_nodeGets the domain for a given element in a decomposition of a mesh. \todo should be able to specify lists of elements. \see OPENCMISS::Iron::cmfe_DecompositionElementDomainGet + !>Gets the domain for a given element in a decomposition of a mesh. \todo should be able to specify lists of elements. \see OpenCMISS::Iron::cmfe_Decomposition_ElementDomainGet SUBROUTINE DECOMPOSITION_ELEMENT_DOMAIN_GET(DECOMPOSITION,USER_ELEMENT_NUMBER,DOMAIN_NUMBER,ERR,ERROR,*) !Argument variables @@ -892,7 +913,7 @@ END SUBROUTINE DECOMPOSITION_ELEMENT_DOMAIN_GET !================================================================================================================================ ! - !>Sets the domain for a given element in a decomposition of a mesh. \todo move to user number, should be able to specify lists of elements. \see OPENCMISS::Iron::cmfe_DecompositionElementDomainSet + !>Sets the domain for a given element in a decomposition of a mesh. \todo move to user number, should be able to specify lists of elements. \see OpenCMISS::Iron::cmfe_Decomposition_ElementDomainSet SUBROUTINE DECOMPOSITION_ELEMENT_DOMAIN_SET(DECOMPOSITION,GLOBAL_ELEMENT_NUMBER,DOMAIN_NUMBER,ERR,ERROR,*) !Argument variables @@ -902,7 +923,7 @@ SUBROUTINE DECOMPOSITION_ELEMENT_DOMAIN_SET(DECOMPOSITION,GLOBAL_ELEMENT_NUMBER, INTEGER(INTG), INTENT(OUT) :: ERR !MESH%TOPOLOGY(DECOMPOSITION%MESH_COMPONENT_NUMBER)%PTR IF(ASSOCIATED(MESH_TOPOLOGY)) THEN IF(GLOBAL_ELEMENT_NUMBER>0.AND.GLOBAL_ELEMENT_NUMBER<=MESH_TOPOLOGY%ELEMENTS%NUMBER_OF_ELEMENTS) THEN - number_computational_nodes=ComputationalEnvironment_NumberOfNodesGet(ERR,ERROR) - IF(ERR/=0) GOTO 999 - IF(DOMAIN_NUMBER>=0.AND.DOMAIN_NUMBER=0.AND.DOMAIN_NUMBERGets the mesh component number which will be used for the decomposition of a mesh. \see OPENCMISS::Iron::cmfe_DecompositionMeshComponentGet + !>Gets the mesh component number which will be used for the decomposition of a mesh. \see OpenCMISS::Iron::cmfe_DecompositionMeshComponentGet SUBROUTINE DECOMPOSITION_MESH_COMPONENT_NUMBER_GET(DECOMPOSITION,MESH_COMPONENT_NUMBER,ERR,ERROR,*) !Argument variables @@ -1075,7 +1096,7 @@ END SUBROUTINE DECOMPOSITION_MESH_COMPONENT_NUMBER_GET !================================================================================================================================ ! - !>Sets/changes the mesh component number which will be used for the decomposition of a mesh. \see OPENCMISS::Iron::cmfe_DecompositionMeshComponentSet + !>Sets/changes the mesh component number which will be used for the decomposition of a mesh. \see OpenCMISS::Iron::cmfe_DecompositionMeshComponentSet SUBROUTINE DECOMPOSITION_MESH_COMPONENT_NUMBER_SET(DECOMPOSITION,MESH_COMPONENT_NUMBER,ERR,ERROR,*) !Argument variables @@ -1121,7 +1142,7 @@ END SUBROUTINE DECOMPOSITION_MESH_COMPONENT_NUMBER_SET !!MERGE: ditto - !>Gets the number of domains for a decomposition. \see OPENCMISS::Iron::cmfe_DecompositionNumberOfDomainsGet + !>Gets the number of domains for a decomposition. \see OpenCMISS::Iron::cmfe_DecompositionNumberOfDomainsGet SUBROUTINE DECOMPOSITION_NUMBER_OF_DOMAINS_GET(DECOMPOSITION,NUMBER_OF_DOMAINS,ERR,ERROR,*) !Argument variables @@ -1154,7 +1175,7 @@ END SUBROUTINE DECOMPOSITION_NUMBER_OF_DOMAINS_GET !================================================================================================================================ ! - !>Sets/changes the number of domains for a decomposition. \see OPENCMISS::Iron::cmfe_DecompositionNumberOfDomainsSet + !>Sets/changes the number of domains for a decomposition. \see OpenCMISS::Iron::cmfe_DecompositionNumberOfDomainsSet SUBROUTINE DECOMPOSITION_NUMBER_OF_DOMAINS_SET(DECOMPOSITION,NUMBER_OF_DOMAINS,ERR,ERROR,*) !Argument variables @@ -1163,7 +1184,7 @@ SUBROUTINE DECOMPOSITION_NUMBER_OF_DOMAINS_SET(DECOMPOSITION,NUMBER_OF_DOMAINS,E INTEGER(INTG), INTENT(OUT) :: ERR !=1) THEN !wolfye???<=? IF(NUMBER_OF_DOMAINS<=DECOMPOSITION%numberOfElements) THEN - !Get the number of computational nodes - numberOfComputationalNodes=ComputationalEnvironment_NumberOfNodesGet(ERR,ERROR) - IF(ERR/=0) GOTO 999 + !Get the number of computation nodes + CALL WorkGroup_NumberOfGroupNodesGet(decomposition%workGroup,numberOfGroupComputationNodes, & + & err,error,*999) !!TODO: relax this later - !IF(NUMBER_OF_DOMAINS==numberOfComputationalNodes) THEN + !IF(NUMBER_OF_DOMAINS==numberOfGroupComputationNodes) THEN DECOMPOSITION%NUMBER_OF_DOMAINS=NUMBER_OF_DOMAINS !ELSE ! LOCAL_ERROR="The number of domains ("//TRIM(NUMBER_TO_VSTRING(NUMBER_OF_DOMAINSS,"*",ERR,ERROR))// & - ! & ") is not equal to the number of computational nodes ("// & - ! & TRIM(NUMBER_TO_VSTRING(numberOfComputationalNodes,"*",ERR,ERROR))//")" + ! & ") is not equal to the number of computation nodes ("// & + ! & TRIM(NUMBER_TO_VSTRING(numberOfGroupComputationNodes,"*",ERR,ERROR))//")" ! CALL FlagError(LOCAL_ERROR,ERR,ERROR,*999) !ENDIF ELSE @@ -1224,6 +1245,38 @@ END SUBROUTINE DECOMPOSITION_NUMBER_OF_DOMAINS_SET !================================================================================================================================ ! + !>Sets the workgroup to use for a decomposition on a given mesh. \see OpenCMISS::Iron::cmfe_Decomposition_WorkGroupSet + SUBROUTINE Decomposition_WorkGroupSet(decomposition,workGroup,err,error,*) + + !Argument variables + TYPE(DECOMPOSITION_TYPE), POINTER :: decomposition !workGroup + + EXITS("Decomposition_WorkGroupSet") + RETURN +999 ERRORSEXITS("Decomposition_WorkGroupSet",err,error) + RETURN 1 + + END SUBROUTINE Decomposition_WorkGroupSet + + ! + !================================================================================================================================ + ! + !>Calculates the topology for a decomposition. SUBROUTINE DECOMPOSITION_TOPOLOGY_CALCULATE(DECOMPOSITION,ERR,ERROR,*) @@ -1274,8 +1327,8 @@ SUBROUTINE DecompositionTopology_DataPointsCalculate(TOPOLOGY,ERR,ERROR,*) INTEGER(INTG), INTENT(OUT) :: ERR !decompositionData%DECOMPOSITION IF(ASSOCIATED(decomposition)) THEN - decompositionElements=>TOPOLOGY%ELEMENTS - IF(ASSOCIATED(decompositionElements)) THEN - elementsMapping=>decomposition%DOMAIN(decomposition%MESH_COMPONENT_NUMBER)%PTR%MAPPINGS%ELEMENTS - IF(ASSOCIATED(elementsMapping)) THEN + CALL WorkGroup_GroupCommunicatorGet(decomposition%workGroup,groupCommunicator,err,error,*999) + decompositionElements=>TOPOLOGY%ELEMENTS + IF(ASSOCIATED(decompositionElements)) THEN + elementsMapping=>decomposition%DOMAIN(decomposition%MESH_COMPONENT_NUMBER)%PTR%MAPPINGS%ELEMENTS + IF(ASSOCIATED(elementsMapping)) THEN meshComponentNumber=decomposition%MESH_COMPONENT_NUMBER meshData=>decomposition%MESH%TOPOLOGY(meshComponentNumber)%PTR%dataPoints IF(ASSOCIATED(meshData)) THEN - NUMBER_OF_COMPUTATIONAL_NODES=ComputationalEnvironment_NumberOfNodesGet(ERR,ERROR) - IF(ERR/=0) GOTO 999 - myComputationalNodeNumber=ComputationalEnvironment_NodeNumberGet(ERR,ERROR) - IF(ERR/=0) GOTO 999 - ALLOCATE(decompositionData%numberOfDomainLocal(0:NUMBER_OF_COMPUTATIONAL_NODES-1),STAT=ERR) - ALLOCATE(decompositionData%numberOfDomainGhost(0:NUMBER_OF_COMPUTATIONAL_NODES-1),STAT=ERR) + CALL WorkGroup_NumberOfGroupNodesGet(decomposition%workGroup,numberOfComputationNodes,err,error,*999) + CALL WorkGroup_GroupNodeNumberGet(decomposition%workGroup,myGroupComputationNodeNumber,err,error,*999) + ALLOCATE(decompositionData%numberOfDomainLocal(0:numberOfComputationNodes-1),STAT=ERR) + ALLOCATE(decompositionData%numberOfDomainGhost(0:numberOfComputationNodes-1),STAT=ERR) ALLOCATE(decompositionData%numberOfElementDataPoints(decompositionElements%NUMBER_OF_GLOBAL_ELEMENTS),STAT=ERR) ALLOCATE(decompositionData%elementDataPoint(decompositionElements%TOTAL_NUMBER_OF_ELEMENTS),STAT=ERR) IF(ERR/=0) CALL FlagError("Could not allocate decomposition element data points.",ERR,ERROR,*999) @@ -1340,16 +1392,16 @@ SUBROUTINE DecompositionTopology_DataPointsCalculate(TOPOLOGY,ERR,ERROR,*) & INSERT_STATUS,ERR,ERROR,*999) ENDDO !dataPointIdx ENDDO !localElement - !Calculate number of ghost data points on the current computational domain + !Calculate number of ghost data points on the current computation domain NUMBER_OF_LOCAL_DATA=decompositionData%numberOfDataPoints NUMBER_OF_GHOST_DATA=decompositionData%totalNumberOfDataPoints-decompositionData%numberOfDataPoints - !Gather number of local data points on all computational nodes + !Gather number of local data points on all computation nodes CALL MPI_ALLGATHER(NUMBER_OF_LOCAL_DATA,1,MPI_INTEGER,decompositionData% & - & numberOfDomainLocal,1,MPI_INTEGER,computationalEnvironment%mpiCommunicator,MPI_IERROR) + & numberOfDomainLocal,1,MPI_INTEGER,groupCommunicator,MPI_IERROR) CALL MPI_ERROR_CHECK("MPI_ALLGATHER",MPI_IERROR,ERR,ERROR,*999) - !Gather number of ghost data points on all computational nodes + !Gather number of ghost data points on all computation nodes CALL MPI_ALLGATHER(NUMBER_OF_GHOST_DATA,1,MPI_INTEGER,decompositionData% & - & numberOfDomainGhost,1,MPI_INTEGER,computationalEnvironment%mpiCommunicator,MPI_IERROR) + & numberOfDomainGhost,1,MPI_INTEGER,groupCommunicator,MPI_IERROR) CALL MPI_ERROR_CHECK("MPI_ALLGATHER",MPI_IERROR,ERR,ERROR,*999) ELSE CALL FlagError("Mesh data points topology is not associated.",ERR,ERROR,*999) @@ -1374,6 +1426,7 @@ SUBROUTINE DecompositionTopology_DataPointsCalculate(TOPOLOGY,ERR,ERROR,*) RETURN 999 ERRORSEXITS("DecompositionTopology_DataPointsCalculate",ERR,ERROR) RETURN 1 + END SUBROUTINE DecompositionTopology_DataPointsCalculate ! @@ -3696,7 +3749,7 @@ END SUBROUTINE DECOMPOSITION_TOPOLOGY_FACES_INITIALISE !================================================================================================================================ ! - !>Gets the decomposition type for a decomposition. \see OPENCMISS::Iron::cmfe_DecompositionTypeGet + !>Gets the decomposition type for a decomposition. \see OpenCMISS::Iron::cmfe_DecompositionTypeGet SUBROUTINE DECOMPOSITION_TYPE_GET(DECOMPOSITION,TYPE,ERR,ERROR,*) !Argument variables @@ -3728,7 +3781,7 @@ END SUBROUTINE DECOMPOSITION_TYPE_GET !================================================================================================================================ ! - !>Sets/changes the decomposition type for a decomposition. \see OPENCMISS::Iron::cmfe_DecompositionTypeSet + !>Sets/changes the decomposition type for a decomposition. \see OpenCMISS::Iron::cmfe_DecompositionTypeSet SUBROUTINE DECOMPOSITION_TYPE_SET(DECOMPOSITION,TYPE,ERR,ERROR,*) !Argument variables @@ -3772,7 +3825,7 @@ END SUBROUTINE DECOMPOSITION_TYPE_SET !================================================================================================================================ ! - !>Sets/changes whether lines should be calculated in the the decomposition. \see OPENCMISS::Iron::cmfe_DecompositionCalculateLinesSet + !>Sets/changes whether lines should be calculated in the the decomposition. \see OpenCMISS::Iron::cmfe_DecompositionCalculateLinesSet SUBROUTINE DECOMPOSITION_CALCULATE_LINES_SET(DECOMPOSITION,CALCULATE_LINES_FLAG,ERR,ERROR,*) !Argument variables @@ -3803,7 +3856,7 @@ END SUBROUTINE DECOMPOSITION_CALCULATE_LINES_SET !================================================================================================================================ ! - !>Sets/changes whether faces should be calculated in the the decomposition. \see OPENCMISS::Iron::cmfe_DecompositionCalculateFacesSet + !>Sets/changes whether faces should be calculated in the the decomposition. \see OpenCMISS::Iron::cmfe_DecompositionCalculateFacesSet SUBROUTINE DECOMPOSITION_CALCULATE_FACES_SET(DECOMPOSITION,CALCULATE_FACES_FLAG,ERR,ERROR,*) !Argument variables @@ -4043,8 +4096,8 @@ SUBROUTINE DOMAIN_MAPPINGS_DOFS_INITIALISE(DOMAIN_MAPPINGS,ERR,ERROR,*) ELSE ALLOCATE(DOMAIN_MAPPINGS%DOFS,STAT=ERR) IF(ERR/=0) CALL FlagError("Could not allocate domain mappings dofs.",ERR,ERROR,*999) - CALL DOMAIN_MAPPINGS_MAPPING_INITIALISE(DOMAIN_MAPPINGS%DOFS,DOMAIN_MAPPINGS%DOMAIN%DECOMPOSITION%NUMBER_OF_DOMAINS, & - & ERR,ERROR,*999) + CALL DomainMappings_MappingInitialise(DOMAIN_MAPPINGS%DOMAIN%DECOMPOSITION%workGroup, & + & DOMAIN_MAPPINGS%DOFS,ERR,ERROR,*999) ENDIF ELSE CALL FlagError("Domain mapping is not associated.",ERR,ERROR,*999) @@ -4070,7 +4123,7 @@ SUBROUTINE DOMAIN_MAPPINGS_ELEMENTS_CALCULATE(DOMAIN,ERR,ERROR,*) TYPE(VARYING_STRING), INTENT(OUT) :: ERROR !DOMAIN%MESH component_idx=DOMAIN%MESH_COMPONENT_NUMBER - myComputationalNodeNumber=ComputationalEnvironment_NodeNumberGet(ERR,ERROR) - IF(ERR/=0) GOTO 999 - - !Calculate the local and global numbers and set up the mappings + + !Calculate the local and global numbers and set up the mappings ALLOCATE(ELEMENTS_MAPPING%GLOBAL_TO_LOCAL_MAP(MESH%NUMBER_OF_ELEMENTS),STAT=ERR) IF(ERR/=0) CALL FlagError("Could not allocate element mapping global to local map.",ERR,ERROR,*999) ELEMENTS_MAPPING%NUMBER_OF_GLOBAL=MESH%TOPOLOGY(component_idx)%PTR%ELEMENTS%NUMBER_OF_ELEMENTS @@ -4117,7 +4168,7 @@ SUBROUTINE DOMAIN_MAPPINGS_ELEMENTS_CALCULATE(DOMAIN,ERR,ERROR,*) !Calculate the local numbers domain_no=DECOMPOSITION%ELEMENT_DOMAIN(ne) LOCAL_ELEMENT_NUMBERS(domain_no)=LOCAL_ELEMENT_NUMBERS(domain_no)+1 - !Calculate the adjacent elements to the computational domains and the adjacent domain numbers themselves + !Calculate the adjacent elements to the computation domains and the adjacent domain numbers themselves BASIS=>MESH%TOPOLOGY(component_idx)%PTR%ELEMENTS%ELEMENTS(ne)%BASIS NULLIFY(ADJACENT_DOMAINS_LIST) CALL LIST_CREATE_START(ADJACENT_DOMAINS_LIST,ERR,ERROR,*999) @@ -4152,7 +4203,7 @@ SUBROUTINE DOMAIN_MAPPINGS_ELEMENTS_CALCULATE(DOMAIN,ERR,ERROR,*) !Element is an internal element ELEMENTS_MAPPING%GLOBAL_TO_LOCAL_MAP(ne)%LOCAL_TYPE(1)=DOMAIN_LOCAL_INTERNAL ELSE - !Element is on the boundary of computational domains + !Element is on the boundary of computation domains ELEMENTS_MAPPING%GLOBAL_TO_LOCAL_MAP(ne)%LOCAL_TYPE(1)=DOMAIN_LOCAL_BOUNDARY ENDIF ENDDO !ne @@ -4359,9 +4410,9 @@ SUBROUTINE DOMAIN_MAPPINGS_ELEMENTS_INITIALISE(DOMAIN_MAPPINGS,ERR,ERROR,*) ELSE ALLOCATE(DOMAIN_MAPPINGS%ELEMENTS,STAT=ERR) IF(ERR/=0) CALL FlagError("Could not allocate domain mappings elements.",ERR,ERROR,*999) - CALL DOMAIN_MAPPINGS_MAPPING_INITIALISE(DOMAIN_MAPPINGS%ELEMENTS,DOMAIN_MAPPINGS%DOMAIN%DECOMPOSITION%NUMBER_OF_DOMAINS, & - & ERR,ERROR,*999) - ENDIF + CALL DomainMappings_MappingInitialise(DOMAIN_MAPPINGS%DOMAIN%DECOMPOSITION%workGroup, & + & DOMAIN_MAPPINGS%ELEMENTS,ERR,ERROR,*999) + ENDIF ELSE CALL FlagError("Domain mapping is not associated.",ERR,ERROR,*999) ENDIF @@ -4427,9 +4478,9 @@ SUBROUTINE DOMAIN_MAPPINGS_NODES_DOFS_CALCULATE(DOMAIN,ERR,ERROR,*) INTEGER(INTG), INTENT(OUT) :: ERR !DOMAIN%MESH component_idx=DOMAIN%MESH_COMPONENT_NUMBER MESH_TOPOLOGY=>MESH%TOPOLOGY(component_idx)%PTR - - numberOfComputationalNodes=ComputationalEnvironment_NumberOfNodesGet(ERR,ERROR) - IF(ERR/=0) GOTO 999 - myComputationalNodeNumber=ComputationalEnvironment_NodeNumberGet(ERR,ERROR) - IF(ERR/=0) GOTO 999 - + + CALL WorkGroup_NumberOfGroupNodesGet(NODES_MAPPING%workGroup,numberOfGroupComputationNodes, & + & err,error,*999) + CALL WorkGroup_GroupNodeNumberGet(NODES_MAPPING%workGroup,myGroupComputationNodeNumber, & + & err,error,*999) + !Calculate the local and global numbers and set up the mappings ALLOCATE(NODES_MAPPING%GLOBAL_TO_LOCAL_MAP(MESH_TOPOLOGY%NODES%numberOfNodes),STAT=ERR) IF(ERR/=0) CALL FlagError("Could not allocate node mapping global to local map.",ERR,ERROR,*999) @@ -4571,7 +4622,7 @@ SUBROUTINE DOMAIN_MAPPINGS_NODES_DOFS_CALCULATE(DOMAIN,ERR,ERROR,*) ENDDO !version_idx ENDDO !derivative_idx ELSE - !Node is on the boundary of computational domains + !Node is on the boundary of computation domains NODES_MAPPING%GLOBAL_TO_LOCAL_MAP(node_idx)%NUMBER_OF_DOMAINS=NUMBER_OF_DOMAINS DO derivative_idx=1,MESH_TOPOLOGY%NODES%NODES(node_idx)%numberOfDerivatives DO version_idx=1,MESH_TOPOLOGY%NODES%NODES(node_idx)%DERIVATIVES(derivative_idx)%numberOfVersions @@ -4697,29 +4748,29 @@ SUBROUTINE DOMAIN_MAPPINGS_NODES_DOFS_CALCULATE(DOMAIN,ERR,ERROR,*) ENDDO !domain_idx !Check decomposition and check that each domain has a node in it. - ALLOCATE(NODE_COUNT(0:numberOfComputationalNodes-1),STAT=ERR) + ALLOCATE(NODE_COUNT(0:numberOfGroupComputationNodes-1),STAT=ERR) IF(ERR/=0) CALL FlagError("Could not allocate node count.",ERR,ERROR,*999) NODE_COUNT=0 DO node_idx=1,MESH_TOPOLOGY%NODES%numberOfNodes - no_computational_node=DOMAIN%NODE_DOMAIN(node_idx) - IF(no_computational_node>=0.AND.no_computational_node=0.AND.no_computation_nodeFinishes the process of creating a mesh. \see OPENCMISS::Iron::cmfe_MeshCreateFinish + !>Finishes the process of creating a mesh. \see OpenCMISS::Iron::cmfe_MeshCreateFinish SUBROUTINE MESH_CREATE_FINISH(MESH,ERR,ERROR,*) !Argument variables @@ -6311,7 +6362,7 @@ END SUBROUTINE MESH_CREATE_START_GENERIC !================================================================================================================================ ! - !>Starts the process of creating a mesh defined by a user number with the specified NUMBER_OF_DIMENSIONS in an interface. \see OPENCMISS::Iron::cmfe_MeshCreateStart + !>Starts the process of creating a mesh defined by a user number with the specified NUMBER_OF_DIMENSIONS in an interface. \see OpenCMISS::Iron::cmfe_MeshCreateStart !>Default values set for the MESH's attributes are: !>- NUMBER_OF_COMPONENTS: 1 SUBROUTINE MESH_CREATE_START_INTERFACE(USER_NUMBER,INTERFACE,NUMBER_OF_DIMENSIONS,MESH,ERR,ERROR,*) @@ -6390,7 +6441,7 @@ END SUBROUTINE MESH_CREATE_START_INTERFACE !================================================================================================================================ ! - !>Starts the process of creating a mesh defined by a user number with the specified NUMBER_OF_DIMENSIONS in the region identified by REGION. \see OPENCMISS::Iron::cmfe_MeshCreateStart + !>Starts the process of creating a mesh defined by a user number with the specified NUMBER_OF_DIMENSIONS in the region identified by REGION. \see OpenCMISS::Iron::cmfe_MeshCreateStart !>Default values set for the MESH's attributes are: !>- NUMBER_OF_COMPONENTS: 1 SUBROUTINE MESH_CREATE_START_REGION(USER_NUMBER,REGION,NUMBER_OF_DIMENSIONS,MESH,ERR,ERROR,*) @@ -6460,7 +6511,7 @@ END SUBROUTINE MESH_CREATE_START_REGION !================================================================================================================================ ! - !>Destroys the mesh identified by a user number on the given region and deallocates all memory. \see OPENCMISS::Iron::cmfe_MeshDestroy + !>Destroys the mesh identified by a user number on the given region and deallocates all memory. \see OpenCMISS::Iron::cmfe_MeshDestroy SUBROUTINE MESH_DESTROY_NUMBER(USER_NUMBER,REGION,ERR,ERROR,*) !Argument variables @@ -6543,7 +6594,7 @@ END SUBROUTINE MESH_DESTROY_NUMBER !================================================================================================================================ ! - !>Destroys the mesh and deallocates all memory. \see OPENCMISS::Iron::cmfe_MeshDestroy + !>Destroys the mesh and deallocates all memory. \see OpenCMISS::Iron::cmfe_MeshDestroy SUBROUTINE MESH_DESTROY(MESH,ERR,ERROR,*) !Argument variables @@ -6637,7 +6688,7 @@ SUBROUTINE MeshGlobalNodesGet(mesh,nodes,err,error,*) !Argument variables TYPE(MESH_TYPE), POINTER :: mesh !Gets the number of mesh components for a mesh identified by a pointer. \see OPENCMISS::Iron::cmfe_MeshNumberOfComponentsGet + !>Gets the number of mesh components for a mesh identified by a pointer. \see OpenCMISS::Iron::cmfe_MeshNumberOfComponentsGet SUBROUTINE MESH_NUMBER_OF_COMPONENTS_GET(MESH,NUMBER_OF_COMPONENTS,ERR,ERROR,*) !Argument variables @@ -6767,7 +6818,7 @@ END SUBROUTINE MESH_NUMBER_OF_COMPONENTS_GET !================================================================================================================================ ! - !>Changes/sets the number of mesh components for a mesh. \see OPENCMISS::Iron::cmfe_MeshNumberOfComponentsSet + !>Changes/sets the number of mesh components for a mesh. \see OpenCMISS::Iron::cmfe_MeshNumberOfComponentsSet SUBROUTINE MESH_NUMBER_OF_COMPONENTS_SET(MESH,NUMBER_OF_COMPONENTS,ERR,ERROR,*) !Argument variables @@ -6843,7 +6894,7 @@ END SUBROUTINE MESH_NUMBER_OF_COMPONENTS_SET !================================================================================================================================ ! - !>Gets the number of elements for a mesh identified by a pointer. \see OPENCMISS::Iron::cmfe_MeshNumberOfElementsGet + !>Gets the number of elements for a mesh identified by a pointer. \see OpenCMISS::Iron::cmfe_MeshNumberOfElementsGet SUBROUTINE MESH_NUMBER_OF_ELEMENTS_GET(MESH,NUMBER_OF_ELEMENTS,ERR,ERROR,*) !Argument variables @@ -6875,7 +6926,7 @@ END SUBROUTINE MESH_NUMBER_OF_ELEMENTS_GET !================================================================================================================================ ! - !>Changes/sets the number of elements for a mesh. \see OPENCMISS::Iron::cmfe_MeshNumberOfElementsSet + !>Changes/sets the number of elements for a mesh. \see OpenCMISS::Iron::cmfe_MeshNumberOfElementsSet SUBROUTINE MESH_NUMBER_OF_ELEMENTS_SET(MESH,NUMBER_OF_ELEMENTS,ERR,ERROR,*) !Argument variables @@ -6934,7 +6985,7 @@ END SUBROUTINE MESH_NUMBER_OF_ELEMENTS_SET !================================================================================================================================ ! - !>Changes/sets the surrounding elements calculate flag. \see OPENCMISS::Iron::cmfe_MeshSurroundingElementsCalculateSet + !>Changes/sets the surrounding elements calculate flag. \see OpenCMISS::Iron::cmfe_MeshSurroundingElementsCalculateSet SUBROUTINE MESH_SURROUNDING_ELEMENTS_CALCULATE_SET(MESH,SURROUNDING_ELEMENTS_CALCULATE_FLAG,ERR,ERROR,*) !Argument variables @@ -7234,7 +7285,7 @@ END SUBROUTINE MeshTopology_DofsInitialise !================================================================================================================================ ! - !>Finishes the process of creating elements for a specified mesh component in a mesh topology. \see OPENCMISS::Iron::cmfe_MeshElementsCreateFinish + !>Finishes the process of creating elements for a specified mesh component in a mesh topology. \see OpenCMISS::Iron::cmfe_MeshElementsCreateFinish SUBROUTINE MESH_TOPOLOGY_ELEMENTS_CREATE_FINISH(ELEMENTS,ERR,ERROR,*) !Argument variables @@ -7311,7 +7362,7 @@ END SUBROUTINE MESH_TOPOLOGY_ELEMENTS_CREATE_FINISH !================================================================================================================================ ! - !>Starts the process of creating elements in the mesh component identified by MESH and component_idx. The elements will be created with a default basis of BASIS. ELEMENTS is the returned pointer to the MESH_ELEMENTS data structure. \see OPENCMISS::Iron::cmfe_MeshElementsCreateStart + !>Starts the process of creating elements in the mesh component identified by MESH and component_idx. The elements will be created with a default basis of BASIS. ELEMENTS is the returned pointer to the MESH_ELEMENTS data structure. \see OpenCMISS::Iron::cmfe_MeshElementsCreateStart SUBROUTINE MESH_TOPOLOGY_ELEMENTS_CREATE_START(MESH,MESH_COMPONENT_NUMBER,BASIS,ELEMENTS,ERR,ERROR,*) !Argument variables @@ -7487,7 +7538,7 @@ END SUBROUTINE MESH_TOPOLOGY_ELEMENT_INITIALISE !!MERGE: Take user number - !>Gets the basis for a mesh element identified by a given global number. \todo should take user number \see OPENCMISS::Iron::cmfe_MeshElementsBasisGet + !>Gets the basis for a mesh element identified by a given global number. \todo should take user number \see OpenCMISS::Iron::cmfe_MeshElementsBasisGet SUBROUTINE MESH_TOPOLOGY_ELEMENTS_ELEMENT_BASIS_GET(GLOBAL_NUMBER,ELEMENTS,BASIS,ERR,ERROR,*) !Argument variables @@ -7608,7 +7659,7 @@ END SUBROUTINE MESH_TOPOLOGY_ELEMENTS_ELEMENT_BASIS_SET !================================================================================================================================ ! - !>Returns the adjacent element number for a mesh element identified by a global number. \todo specify by user number not global number \see OPENCMISS::Iron::cmfe_MeshElementsNo + !>Returns the adjacent element number for a mesh element identified by a global number. \todo specify by user number not global number \see OpenCMISS::Iron::cmfe_MeshElementsNo SUBROUTINE MESH_TOPOLOGY_ELEMENTS_ADJACENT_ELEMENT_GET(GLOBAL_NUMBER,ELEMENTS,ADJACENT_ELEMENT_XI,ADJACENT_ELEMENT_NUMBER, & & ERR,ERROR,*) @@ -7664,7 +7715,7 @@ END SUBROUTINE MESH_TOPOLOGY_ELEMENTS_ADJACENT_ELEMENT_GET !================================================================================================================================ ! - !>Gets the element nodes for a mesh element identified by a given global number. \todo specify by user number not global number \see OPENCMISS::Iron::cmfe_MeshElementsNodesGet + !>Gets the element nodes for a mesh element identified by a given global number. \todo specify by user number not global number \see OpenCMISS::Iron::cmfe_MeshElementsNodesGet SUBROUTINE MESH_TOPOLOGY_ELEMENTS_ELEMENT_NODES_GET(GLOBAL_NUMBER,ELEMENTS,USER_ELEMENT_NODES,ERR,ERROR,*) !Argument variables @@ -7712,7 +7763,7 @@ END SUBROUTINE MESH_TOPOLOGY_ELEMENTS_ELEMENT_NODES_GET !================================================================================================================================ ! - !>Changes/sets the element nodes for a mesh element identified by a given global number. \todo specify by user number not global number \see OPENCMISS::Iron::cmfe_MeshElementsNodesSet + !>Changes/sets the element nodes for a mesh element identified by a given global number. \todo specify by user number not global number \see OpenCMISS::Iron::cmfe_MeshElementsNodesSet SUBROUTINE MESH_TOPOLOGY_ELEMENTS_ELEMENT_NODES_SET(GLOBAL_NUMBER,ELEMENTS,USER_ELEMENT_NODES,ERR,ERROR,*) !Argument variables @@ -7728,7 +7779,7 @@ SUBROUTINE MESH_TOPOLOGY_ELEMENTS_ELEMENT_NODES_SET(GLOBAL_NUMBER,ELEMENTS,USER_ TYPE(INTERFACE_TYPE), POINTER :: INTERFACE TYPE(MESH_TYPE), POINTER :: mesh TYPE(MeshComponentTopologyType), POINTER :: meshComponentTopology - TYPE(NODES_TYPE), POINTER :: NODES + TYPE(NodesType), POINTER :: NODES TYPE(REGION_TYPE), POINTER :: PARENT_REGION,REGION TYPE(VARYING_STRING) :: LOCAL_ERROR @@ -7843,7 +7894,7 @@ END SUBROUTINE MESH_TOPOLOGY_ELEMENTS_ELEMENT_NODES_SET !================================================================================================================================ ! - !>Changes/sets an element node's version for a mesh element identified by a given global number. \todo specify by user number not global number \see OPENCMISS::Iron::cmfe_MeshElementsNodesSet + !>Changes/sets an element node's version for a mesh element identified by a given global number. \todo specify by user number not global number \see OpenCMISS::Iron::cmfe_MeshElementsNodesSet SUBROUTINE MeshElements_ElementNodeVersionSet(GLOBAL_NUMBER,ELEMENTS,VERSION_NUMBER,DERIVATIVE_NUMBER, & & USER_ELEMENT_NODE_INDEX,ERR,ERROR,*) @@ -7860,7 +7911,7 @@ SUBROUTINE MeshElements_ElementNodeVersionSet(GLOBAL_NUMBER,ELEMENTS,VERSION_NUM TYPE(INTERFACE_TYPE), POINTER :: INTERFACE TYPE(MESH_TYPE), POINTER :: MESH TYPE(MeshComponentTopologyType), POINTER :: meshComponentTopology - TYPE(NODES_TYPE), POINTER :: NODES + TYPE(NodesType), POINTER :: NODES TYPE(REGION_TYPE), POINTER :: PARENT_REGION,REGION TYPE(VARYING_STRING) :: LOCAL_ERROR @@ -8326,7 +8377,7 @@ END SUBROUTINE MESH_TOPOLOGY_DATA_POINTS_INITIALISE !!MERGE: ditto. - !>Gets the user number for a global element identified by a given global number. \todo Check that the user number doesn't already exist. \see OPENCMISS::Iron::cmfe_MeshElementsUserNumberGet + !>Gets the user number for a global element identified by a given global number. \todo Check that the user number doesn't already exist. \see OpenCMISS::Iron::cmfe_MeshElementsUserNumberGet SUBROUTINE MESH_TOPOLOGY_ELEMENTS_NUMBER_GET(GLOBAL_NUMBER,USER_NUMBER,ELEMENTS,ERR,ERROR,*) !Argument variables @@ -8367,7 +8418,7 @@ END SUBROUTINE MESH_TOPOLOGY_ELEMENTS_NUMBER_GET !================================================================================================================================ ! - !>Returns the user number for a global element identified by a given global number. \see OPENCMISS::Iron::cmfe_MeshElementsUserNumberGet + !>Returns the user number for a global element identified by a given global number. \see OpenCMISS::Iron::cmfe_MeshElementsUserNumberGet SUBROUTINE MeshElements_ElementUserNumberGet(GLOBAL_NUMBER,USER_NUMBER,ELEMENTS,ERR,ERROR,*) !Argument variables @@ -8409,7 +8460,7 @@ END SUBROUTINE MeshElements_ElementUserNumberGet !================================================================================================================================ ! - !>Changes/sets the user number for a global element identified by a given global number. \see OPENCMISS::Iron::cmfe_MeshElementsUserNumberSet + !>Changes/sets the user number for a global element identified by a given global number. \see OpenCMISS::Iron::cmfe_MeshElementsUserNumberSet SUBROUTINE MeshElements_ElementUserNumberSet(GLOBAL_NUMBER,USER_NUMBER,ELEMENTS,ERR,ERROR,*) !Argument variables @@ -8934,7 +8985,7 @@ SUBROUTINE MeshTopology_NodeCheckExistsMesh(mesh,meshComponentNumber,userNodeNum !Local Variables INTEGER(INTG) :: globalNodeNumber TYPE(MeshNodesType), POINTER :: meshNodes - TYPE(NODES_TYPE), POINTER :: nodes + TYPE(NodesType), POINTER :: nodes TYPE(REGION_TYPE), POINTER :: region TYPE(TREE_NODE_TYPE), POINTER :: treeNode @@ -8994,7 +9045,7 @@ SUBROUTINE MeshTopology_NodeCheckExistsMeshNodes(meshNodes,userNodeNumber,nodeEx INTEGER(INTG) :: globalNodeNumber TYPE(MESH_TYPE), POINTER :: mesh TYPE(MeshComponentTopologyType), POINTER :: meshComponentTopology - TYPE(NODES_TYPE), POINTER :: nodes + TYPE(NodesType), POINTER :: nodes TYPE(REGION_TYPE), POINTER :: region TYPE(TREE_NODE_TYPE), POINTER :: treeNode @@ -9169,7 +9220,7 @@ SUBROUTINE MeshTopology_NodesCalculate(topology,err,error,*) TYPE(MESH_TYPE), POINTER :: mesh TYPE(MeshElementsType), POINTER :: elements TYPE(MeshNodesType), POINTER :: meshNodes - TYPE(NODES_TYPE), POINTER :: nodes + TYPE(NodesType), POINTER :: nodes TYPE(TREE_TYPE), POINTER :: globalNodesTree TYPE(TREE_NODE_TYPE), POINTER :: treeNode TYPE(VARYING_STRING) :: dummyError,localError @@ -9215,7 +9266,7 @@ SUBROUTINE MeshTopology_NodesCalculate(topology,err,error,*) CALL MeshTopology_NodeInitialise(meshNodes%nodes(meshNodeIdx),err,error,*999) meshNodes%nodes(meshNodeIdx)%meshNumber=meshNodeIdx meshNodes%nodes(meshNodeIdx)%globalNumber=globalNodeNumbers(meshNodeIdx) - meshNodes%nodes(meshNodeIdx)%userNumber=nodes%nodes(globalNodeNumbers(meshNodeIdx))%USER_NUMBER + meshNodes%nodes(meshNodeIdx)%userNumber=nodes%nodes(globalNodeNumbers(meshNodeIdx))%userNumber CALL TREE_ITEM_INSERT(meshNodes%nodesTree,globalNodeNumbers(meshNodeIdx),meshNodeIdx,insertStatus,err,error,*999) ENDDO !nodeIdx meshNodes%numberOfNodes=numberOfNodes @@ -9234,7 +9285,7 @@ SUBROUTINE MeshTopology_NodesCalculate(topology,err,error,*) elements%elements(elementIdx)%MESH_ELEMENT_NODES(localNodeIdx)=meshNode ELSE localError="Could not find global node "//TRIM(NumberToVString(globalNode,"*",err,error))//" (user node "// & - & TRIM(NumberToVString(nodes%nodes(globalNode)%USER_NUMBER,"*",err,error))//") in the mesh nodes." + & TRIM(NumberToVString(nodes%nodes(globalNode)%userNumber,"*",err,error))//") in the mesh nodes." CALL FlagError(localError,err,error,*999) ENDIF ENDDO !localNodeIdx @@ -10127,7 +10178,7 @@ END SUBROUTINE MESHES_INITIALISE_REGION !================================================================================================================================ ! - !>Gets the domain for a given node in a decomposition of a mesh. \todo should be able to specify lists of elements. \see OPENCMISS::Iron::cmfe_DecompositionNodeDomainGet + !>Gets the domain for a given node in a decomposition of a mesh. \todo should be able to specify lists of elements. \see OpenCMISS::Iron::cmfe_Decomposition_NodeDomainGet SUBROUTINE DECOMPOSITION_NODE_DOMAIN_GET(DECOMPOSITION,USER_NODE_NUMBER,MESH_COMPONENT_NUMBER,DOMAIN_NUMBER,ERR,ERROR,*) !Argument variables @@ -10366,3 +10417,4 @@ END SUBROUTINE MESH_EMBEDDING_SET_GAUSS_POINT_DATA END MODULE MESH_ROUTINES + diff --git a/src/monodomain_equations_routines.f90 b/src/monodomain_equations_routines.f90 index 8debac6d..753d976d 100755 --- a/src/monodomain_equations_routines.f90 +++ b/src/monodomain_equations_routines.f90 @@ -67,7 +67,6 @@ MODULE MONODOMAIN_EQUATIONS_ROUTINES USE ISO_VARYING_STRING USE Kinds USE MatrixVector - USE NODE_ROUTINES USE PROBLEM_CONSTANTS USE Strings USE SOLVER_ROUTINES diff --git a/src/multi_compartment_transport_routines.f90 b/src/multi_compartment_transport_routines.f90 index 35c69d21..f79ade59 100755 --- a/src/multi_compartment_transport_routines.f90 +++ b/src/multi_compartment_transport_routines.f90 @@ -69,7 +69,6 @@ MODULE MULTI_COMPARTMENT_TRANSPORT_ROUTINES USE Maths USE MatrixVector USE MESH_ROUTINES - USE NODE_ROUTINES USE PROBLEM_CONSTANTS USE Strings USE SOLVER_ROUTINES diff --git a/src/node_routines.f90 b/src/node_routines.f90 index 719722a8..40f60323 100755 --- a/src/node_routines.f90 +++ b/src/node_routines.f90 @@ -26,7 +26,7 @@ !> Auckland, the University of Oxford and King's College, London. !> All Rights Reserved. !> -!> Contributor(s): +!> Contributor(s): Chris Bradley !> !> Alternatively, the contents of this file may be used under the terms of !> either the GNU General Public License Version 2 or later (the "GPL"), or @@ -42,15 +42,15 @@ !> !> This module handles all node routines. -MODULE NODE_ROUTINES +MODULE NodeRoutines USE BaseRoutines USE INPUT_OUTPUT USE ISO_VARYING_STRING - USE KINDS - USE STRINGS - USE TREES - USE TYPES + USE Kinds + USE Strings + USE Trees + USE Types #include "macros.h" @@ -66,43 +66,89 @@ MODULE NODE_ROUTINES !Interfaces - !>Starts the process of creating nodes for an interface or region + INTERFACE NODE_CHECK_EXISTS + MODULE PROCEDURE Node_CheckExists + END INTERFACE NODE_CHECK_EXISTS + INTERFACE NODES_CREATE_START - MODULE PROCEDURE NODES_CREATE_START_REGION - MODULE PROCEDURE NODES_CREATE_START_INTERFACE - END INTERFACE !NODES_CREATE_START + MODULE PROCEDURE Nodes_CreateStartRegion + MODULE PROCEDURE Nodes_CreateStartInterface + END INTERFACE NODES_CREATE_START + + !>Starts the process of creating nodes for an interface or region + INTERFACE Nodes_CreateStart + MODULE PROCEDURE Nodes_CreateStartRegion + MODULE PROCEDURE Nodes_CreateStartInterface + END INTERFACE Nodes_CreateStart + + INTERFACE NODES_CREATE_FINISH + MODULE PROCEDURE Nodes_CreateFinish + END INTERFACE NODES_CREATE_FINISH !>Initialises nodes for an interface or region - INTERFACE NODES_INITIALISE - MODULE PROCEDURE NODES_INITIALISE_REGION - MODULE PROCEDURE NODES_INITIALISE_INTERFACE - END INTERFACE !NODES_INITIALIES + INTERFACE Nodes_Initialise + MODULE PROCEDURE Nodes_InitialiseRegion + MODULE PROCEDURE Nodes_InitialiseInterface + END INTERFACE Nodes_Initialise - !>Gets the label for a node identified by a given global number. INTERFACE NODES_LABEL_GET - MODULE PROCEDURE NODES_LABEL_GET_C - MODULE PROCEDURE NODES_LABEL_GET_VS - END INTERFACE !NODES_LABEL_SET + MODULE PROCEDURE Nodes_LabelGetC + MODULE PROCEDURE Nodes_LabelGetVS + END INTERFACE NODES_LABEL_GET + + !>Gets the label for a node identified by a given global number. + INTERFACE Nodes_LabelGet + MODULE PROCEDURE Nodes_LabelGetC + MODULE PROCEDURE Nodes_LabelGetVS + END INTERFACE Nodes_LabelGet + + INTERFACE NODES_LABEL_SET + MODULE PROCEDURE Nodes_LabelSetC + MODULE PROCEDURE Nodes_LabelSetVS + END INTERFACE NODES_LABEL_SET !>Changes/sets the label for a node identified by a given global number. - INTERFACE NODES_LABEL_SET - MODULE PROCEDURE NODES_LABEL_SET_C - MODULE PROCEDURE NODES_LABEL_SET_VS - END INTERFACE !NODES_LABEL_SET + INTERFACE Nodes_LabelSet + MODULE PROCEDURE Nodes_LabelSetC + MODULE PROCEDURE Nodes_LabelSetVS + END INTERFACE Nodes_LabelSet + + INTERFACE NODES_NUMBER_OF_NODES_GET + MODULE PROCEDURE Nodes_NumberOfNodesGet + END INTERFACE NODES_NUMBER_OF_NODES_GET + + INTERFACE NODES_USER_NUMBER_GET + MODULE PROCEDURE Nodes_UserNumberGet + END INTERFACE NODES_USER_NUMBER_GET + + INTERFACE NODES_USER_NUMBER_SET + MODULE PROCEDURE Nodes_UserNumberSet + END INTERFACE NODES_USER_NUMBER_SET PUBLIC NODE_CHECK_EXISTS - PUBLIC NODES_CREATE_FINISH,NODES_CREATE_START,NODES_DESTROY + PUBLIC Node_CheckExists + + PUBLIC NODES_CREATE_FINISH,NODES_CREATE_START + + PUBLIC Nodes_CreateFinish,Nodes_CreateStart + + PUBLIC Nodes_Destroy PUBLIC NODES_LABEL_GET,NODES_LABEL_SET + PUBLIC Nodes_LabelGet,Nodes_LabelSet + PUBLIC NODES_NUMBER_OF_NODES_GET + + PUBLIC NODES_NumberOfNodesGet PUBLIC NODES_USER_NUMBER_GET,NODES_USER_NUMBER_SET + + PUBLIC Nodes_UserNumberGet,Nodes_UserNumberSet - PUBLIC NodesUserNumbersAllSet + PUBLIC Nodes_UserNumbersAllSet - !PUBLIC NODES_NUMBER_OF_VERSIONS_SET CONTAINS @@ -111,741 +157,693 @@ MODULE NODE_ROUTINES ! !>Checks that a user node number is defined on the specified region. - SUBROUTINE NODE_CHECK_EXISTS(NODES,USER_NUMBER,NODE_EXISTS,GLOBAL_NUMBER,ERR,ERROR,*) + SUBROUTINE Node_CheckExists(nodes,userNumber,nodeExists,globalNumber,err,error,*) !Argument variables - TYPE(NODES_TYPE), POINTER :: NODES !Finalises a node and deallocates all memory - SUBROUTINE NODE_FINALISE(NODE,ERR,ERROR,*) + SUBROUTINE Node_Finalise(node,err,error,*) !Argument variables - TYPE(NODE_TYPE),INTENT(OUT) :: NODE !Finishes the process of creating nodes in the region. \see OPENCMISS::CMISSNodesCreateFinish - SUBROUTINE NODES_CREATE_FINISH(NODES,ERR,ERROR,*) + !>Initialises a node + SUBROUTINE Node_Initialise(node,err,error,*) + + !Argument variables + TYPE(NodeType), INTENT(OUT) :: node !Finishes the process of creating nodes in the region. \see OpenCMISS::Iron::cmfe_Nodes_CreateFinish + SUBROUTINE Nodes_CreateFinish(nodes,err,error,*) !Argument variables - TYPE(NODES_TYPE), POINTER :: NODES !Global number tree",ERR,ERROR,*999) - CALL TREE_OUTPUT(DIAGNOSTIC_OUTPUT_TYPE,NODES%NODES_TREE,ERR,ERROR,*999) + nodes%nodesFinished=.TRUE. + + IF(diagnostics1) THEN + CALL WriteStringValue(DIAGNOSTIC_OUTPUT_TYPE,"Number of nodes = ",nodes%numberOfNodes,err,error,*999) + DO nodeIdx=1,nodes%numberOfNodes + CALL WriteStringValue(DIAGNOSTIC_OUTPUT_TYPE," Node = ",nodeIdx,err,error,*999) + CALL WriteStringValue(DIAGNOSTIC_OUTPUT_TYPE," Global number = ",nodes%nodes(nodeIdx)%globalNumber,err,error,*999) + CALL WriteStringValue(DIAGNOSTIC_OUTPUT_TYPE," User number = ",nodes%nodes(nodeIdx)%userNumber,err,error,*999) + CALL WriteStringValue(DIAGNOSTIC_OUTPUT_TYPE," Label = ",nodes%nodes(nodeIdx)%label,err,error,*999) + ENDDO !nodeIdx + CALL WriteString(DIAGNOSTIC_OUTPUT_TYPE,"User->Global number tree:",err,error,*999) + CALL Tree_Output(DIAGNOSTIC_OUTPUT_TYPE,nodes%nodesTree,err,error,*999) ENDIF - EXITS("NODES_CREATE_FINISH") + EXITS("Nodes_CreateFinish") RETURN -999 ERRORSEXITS("NODES_CREATE_FINISH",ERR,ERROR) +999 ERRORSEXITS("Nodes_CreateFinish",err,error) RETURN 1 - END SUBROUTINE NODES_CREATE_FINISH + END SUBROUTINE Nodes_CreateFinish ! !================================================================================================================================ ! !>Starts the process of creating generic nodes. - SUBROUTINE NODES_CREATE_START_GENERIC(NODES,NUMBER_OF_NODES,ERR,ERROR,*) + SUBROUTINE Nodes_CreateStartGeneric(nodes,numberOfNodes,err,error,*) !Argument variables - TYPE(NODES_TYPE), POINTER :: NODES !0) THEN - ALLOCATE(NODES%NODES(NUMBER_OF_NODES),STAT=ERR) - IF(ERR/=0) CALL FlagError("Could not allocate nodes nodes.",ERR,ERROR,*999) - NODES%NUMBER_OF_NODES=NUMBER_OF_NODES - CALL TREE_CREATE_START(NODES%NODES_TREE,ERR,ERROR,*999) - CALL TREE_INSERT_TYPE_SET(NODES%NODES_TREE,TREE_NO_DUPLICATES_ALLOWED,ERR,ERROR,*999) - CALL TREE_CREATE_FINISH(NODES%NODES_TREE,ERR,ERROR,*999) - !Set default node numbers - DO np=1,NODES%NUMBER_OF_NODES - NODES%NODES(np)%GLOBAL_NUMBER=np - NODES%NODES(np)%USER_NUMBER=np - NODES%NODES(np)%LABEL="" - CALL TREE_ITEM_INSERT(NODES%NODES_TREE,np,np,INSERT_STATUS,ERR,ERROR,*999) - ENDDO !np - ELSE - LOCAL_ERROR="The specified number of nodes of "//TRIM(NUMBER_TO_VSTRING(NUMBER_OF_NODES,"*",ERR,ERROR))// & - & " is invalid. The number of nodes must be > 0." - CALL FlagError(LOCAL_ERROR,ERR,ERROR,*999) - ENDIF - ELSE - CALL FlagError("Nodes is not associated.",ERR,ERROR,*999) + INTEGER(INTG) :: insertStatus,nodeIdx + TYPE(VARYING_STRING) :: localError + + ENTERS("Nodes_CreateStartGeneric",err,error,*999) + + IF(.NOT.ASSOCIATED(nodes)) CALL FlagError("Nodes is not associated.",err,error,*999) + + IF(numberOfNodes<=0) THEN + localError="The specified number of nodes of "//TRIM(NumberToVString(numberOfNodes,"*",err,error))// & + & " is invalid. The number of nodes must be > 0." + CALL FlagError(localError,err,error,*999) ENDIF - EXITS("NODES_CREATE_START_GENERIC") + ALLOCATE(nodes%nodes(numberOfNodes),STAT=err) + IF(err/=0) CALL FlagError("Could not allocate nodes nodes.",err,error,*999) + nodes%numberOfNodes=numberOfNodes + CALL Tree_CreateStart(nodes%nodesTree,err,error,*999) + CALL Tree_InsertTypeSet(nodes%nodesTree,TREE_NO_DUPLICATES_ALLOWED,err,error,*999) + CALL Tree_CreateFinish(nodes%nodesTree,err,error,*999) + !Set default node numbers + DO nodeIdx=1,nodes%numberOfNodes + CALL Node_Initialise(nodes%nodes(nodeIdx),err,error,*999) + nodes%nodes(nodeIdx)%globalNumber=nodeIdx + nodes%nodes(nodeIdx)%userNumber=nodeIdx + CALL Tree_ItemInsert(nodes%nodesTree,nodeIdx,nodeIdx,insertStatus,err,error,*999) + ENDDO !nodeIdx + + EXITS("Nodes_CreateStartGeneric") RETURN -999 ERRORSEXITS("NODES_CREATE_START_GENERIC",ERR,ERROR) +999 ERRORSEXITS("Nodes_CreateStartGeneric",err,error) RETURN 1 - END SUBROUTINE NODES_CREATE_START_GENERIC + END SUBROUTINE Nodes_CreateStartGeneric ! !================================================================================================================================ ! - !>Starts the process of creating nodes in an interface. - SUBROUTINE NODES_CREATE_START_INTERFACE(INTERFACE,NUMBER_OF_NODES,NODES,ERR,ERROR,*) + !>Starts the process of creating nodes in an interface. \see OpenCMISS::Iron::cmfe_Nodes_CreateStart + SUBROUTINE Nodes_CreateStartInterface(interface,numberOfNodes,nodes,err,error,*) !Argument variables - TYPE(INTERFACE_TYPE), POINTER :: INTERFACE !INTERFACE%NODES - ENDIF - ENDIF - ELSE - CALL FlagError("Interface is not associated.",ERR,ERROR,*998) - ENDIF - - EXITS("NODES_CREATE_START_INTERFACE") + IF(.NOT.ASSOCIATED(interface)) CALL FlagError("Interface is not associated.",err,error,*998) + IF(ASSOCIATED(interface%nodes)) CALL FlagError("Interface already has nodes associated.",err,error,*998) + IF(ASSOCIATED(nodes)) CALL FlagError("Nodes is already associated.",err,error,*999) + + !Initialise the nodes for the interface + CALL Nodes_Initialise(interface,err,error,*999) + !Create the nodes + CALL Nodes_CreateStartGeneric(interface%nodes,numberOfNodes,err,error,*999) + !Return the pointer + nodes=>interface%nodes + + EXITS("Nodes_CreateStartInterface") RETURN -999 CALL NODES_FINALISE(INTERFACE%NODES,DUMMY_ERR,DUMMY_ERROR,*998) -998 ERRORSEXITS("NODES_CREATE_START_INTERFACE",ERR,ERROR) +999 CALL Nodes_Finalise(interface%nodes,dummyErr,dummyError,*998) +998 ERRORSEXITS("Nodes_CreateStartInterface",err,error) RETURN 1 - END SUBROUTINE NODES_CREATE_START_INTERFACE + END SUBROUTINE Nodes_CreateStartInterface ! !================================================================================================================================ ! - !>Starts the process of creating nodes in the region. \see OPENCMISS::CMISSNodesCreateStart - SUBROUTINE NODES_CREATE_START_REGION(REGION,NUMBER_OF_NODES,NODES,ERR,ERROR,*) + !>Starts the process of creating nodes in the region. \see OpenCMISS::Iron::cmfe_Nodes_CreateStart + SUBROUTINE Nodes_CreateStartRegion(region,numberOfNodes,nodes,err,error,*) !Argument variables - TYPE(REGION_TYPE), POINTER :: REGION !REGION%NODES - ENDIF - ENDIF - ELSE - CALL FlagError("Region is not associated.",ERR,ERROR,*998) - ENDIF + IF(.NOT.ASSOCIATED(region)) CALL FlagError("Region is not associated.",err,error,*998) + IF(ASSOCIATED(region%nodes)) CALL FlagError("Region already has nodes associated.",err,error,*998) + IF(ASSOCIATED(nodes)) CALL FlagError("Nodes is already associated.",err,error,*998) - EXITS("NODES_CREATE_START_REGION") + !Initialise the nodes for the region + CALL Nodes_Initialise(region,err,error,*999) + !Create the generic nodes + CALL Nodes_CreateStartGeneric(region%nodes,numberOfNodes,err,error,*999) + !Return the pointer + nodes=>region%nodes + + EXITS("Nodes_CreateStartRegion") RETURN -999 CALL NODES_FINALISE(REGION%NODES,DUMMY_ERR,DUMMY_ERROR,*998) -998 ERRORSEXITS("NODES_CREATE_START_REGION",ERR,ERROR) +999 CALL Nodes_Finalise(region%nodes,dummyErr,dummyError,*998) +998 ERRORSEXITS("Nodes_CreateStartRegion",err,error) RETURN 1 - END SUBROUTINE NODES_CREATE_START_REGION + END SUBROUTINE Nodes_CreateStartRegion ! !================================================================================================================================ ! - !>Destroys nodes. \see OPENCMISS::CMISSNodesDestroy - SUBROUTINE NODES_DESTROY(NODES,ERR,ERROR,*) + !>Destroys nodes. \see OpenCMISS::Iron::cmfe_Nodes_Destroy + SUBROUTINE Nodes_Destroy(nodes,err,error,*) !Argument variables - TYPE(NODES_TYPE), POINTER :: NODES !Finalises the nodes and deallocates any memory. - SUBROUTINE NODES_FINALISE(NODES,ERR,ERROR,*) + SUBROUTINE Nodes_Finalise(nodes,err,error,*) !Argument variables - TYPE(NODES_TYPE), POINTER :: NODES !Initialises the nodes. - SUBROUTINE NODES_INITIALISE_GENERIC(NODES,ERR,ERROR,*) + SUBROUTINE Nodes_InitialiseGeneric(nodes,err,error,*) !Argument variables - TYPE(NODES_TYPE), POINTER :: NODES !Initialises the nodes in a given interface. - SUBROUTINE NODES_INITIALISE_INTERFACE(INTERFACE,ERR,ERROR,*) + SUBROUTINE Nodes_InitialiseInterface(INTERFACE,err,error,*) !Argument variables - TYPE(INTERFACE_TYPE), POINTER :: INTERFACE !INTERFACE - ENDIF - ELSE - CALL FlagError("Interface is not associated.",ERR,ERROR,*999) - ENDIF + IF(.NOT.ASSOCIATED(interface)) CALL FlagError("Interface is not associated.",err,error,*998) + IF(ASSOCIATED(interface%nodes)) CALL FlagError("Interface already has associated nodes.",err,error,*998) - EXITS("NODES_INITIALISE_INTERFACE") + ALLOCATE(interface%nodes,STAT=err) + IF(err/=0) CALL FlagError("Could not allocate interface nodes.",err,error,*999) + CALL Nodes_InitialiseGeneric(interface%nodes,err,error,*999) + interface%nodes%interface=>interface + + EXITS("Nodes_InitialiseInterface") RETURN -999 ERRORSEXITS("NODES_INITIALISE_INTERFACE",ERR,ERROR) +999 CALL Nodes_Finalise(interface%nodes,dummyErr,dummyError,*998) +998 ERRORSEXITS("Nodes_InitialiseInterface",err,error) RETURN 1 - END SUBROUTINE NODES_INITIALISE_INTERFACE + END SUBROUTINE Nodes_InitialiseInterface ! !================================================================================================================================ ! !>Initialises the nodes in a given region. - SUBROUTINE NODES_INITIALISE_REGION(REGION,ERR,ERROR,*) + SUBROUTINE Nodes_InitialiseRegion(region,err,error,*) !Argument variables - TYPE(REGION_TYPE), POINTER :: REGION !REGION - ENDIF - ELSE - CALL FlagError("Region is not associated.",ERR,ERROR,*999) - ENDIF + IF(.NOT.ASSOCIATED(region)) CALL FlagError("Region is not associated.",err,error,*998) + IF(ASSOCIATED(region%nodes)) CALL FlagError("Region has associated nodes.",err,error,*998) - EXITS("NODES_INITIALISE_REGION") + ALLOCATE(region%nodes,STAT=err) + IF(err/=0) CALL FlagError("Could not allocate region nodes.",err,error,*999) + CALL Nodes_InitialiseGeneric(region%nodes,err,error,*999) + region%nodes%region=>region + + EXITS("Nodes_InitialiseRegion") RETURN -999 ERRORSEXITS("NODES_INITIALISE_REGION",ERR,ERROR) +999 CALL Nodes_Finalise(region%nodes,dummyErr,dummyError,*998) +998 ERRORSEXITS("Nodes_InitialiseRegion",err,error) RETURN 1 - END SUBROUTINE NODES_INITIALISE_REGION + + END SUBROUTINE Nodes_InitialiseRegion ! !================================================================================================================================ ! - !>Gets the character label for a node identified by a given global number. \see OPENCMISS::CMISSNodesLabelGet - SUBROUTINE NODES_LABEL_GET_C(NODES,GLOBAL_NUMBER,LABEL,ERR,ERROR,*) + !>Gets the character label for a node identified by a given global number. \see OpenCMISS::Iron::cmfe_Nodes_LabelGet + SUBROUTINE Nodes_LabelGetC(nodes,globalNumber,label,err,error,*) !Argument variables - TYPE(NODES_TYPE), POINTER :: NODES !=1.AND.GLOBAL_NUMBER<=NODES%NUMBER_OF_NODES) THEN - C_LENGTH=LEN(LABEL) - VS_LENGTH=LEN_TRIM(NODES%NODES(GLOBAL_NUMBER)%LABEL) - IF(C_LENGTH>VS_LENGTH) THEN - LABEL=CHAR(LEN_TRIM(NODES%NODES(GLOBAL_NUMBER)%LABEL)) - ELSE - LABEL=CHAR(NODES%NODES(GLOBAL_NUMBER)%LABEL,C_LENGTH) - ENDIF - ELSE - LOCAL_ERROR="The specified global node number of "//TRIM(NUMBER_TO_VSTRING(GLOBAL_NUMBER,"*",ERR,ERROR))// & - & " is invalid. The global node number should be between 1 and "// & - & TRIM(NUMBER_TO_VSTRING(NODES%NUMBER_OF_NODES,"*",ERR,ERROR))//"." - CALL FlagError(LOCAL_ERROR,ERR,ERROR,*999) - ENDIF - ELSE - CALL FlagError("Nodes have not been finished.",ERR,ERROR,*999) - ENDIF + INTEGER :: cLength,vsLength + TYPE(VARYING_STRING) :: localError + + ENTERS("Nodes_LabelGetC",err,error,*999) + + IF(.NOT.ASSOCIATED(nodes)) CALL FlagError("Nodes is not associated.",err,error,*999) + IF(.NOT.nodes%nodesFinished) CALL FlagError("Nodes have not been finished.",err,error,*999) + IF(globalNumber<1.OR.globalNumber>nodes%numberOfNodes) THEN + localError="The specified global node number of "//TRIM(NumberToVString(globalNumber,"*",err,error))// & + & " is invalid. The global node number should be between 1 and "// & + & TRIM(NumberToVString(nodes%numberOfNodes,"*",err,error))//"." + CALL FlagError(localError,err,error,*999) + ENDIF + + cLength=LEN(label) + vsLength=LEN_TRIM(nodes%nodes(globalNumber)%label) + IF(cLength>vsLength) THEN + label=CHAR(LEN_TRIM(nodes%nodes(globalNumber)%label)) ELSE - CALL FlagError("Nodes is not associated.",ERR,ERROR,*999) + label=CHAR(nodes%nodes(globalNumber)%label,cLength) ENDIF - EXITS("NODES_LABEL_GET_C") + EXITS("Nodes_LabelGetC") RETURN -999 ERRORSEXITS("NODES_LABEL_GET_C",ERR,ERROR) +999 ERRORSEXITS("Nodes_LabelGetC",err,error) RETURN 1 - END SUBROUTINE NODES_LABEL_GET_C + END SUBROUTINE Nodes_LabelGetC ! !================================================================================================================================ ! - !>Gets the varying string label for a node identified by a given global number. \see OPENCMISS::CMISSNodesLabelGet - SUBROUTINE NODES_LABEL_GET_VS(NODES,GLOBAL_NUMBER,LABEL,ERR,ERROR,*) + !>Gets the varying string label for a node identified by a given global number. \see OpenCMISS::Iron::cmfe_Nodes_LabelGet + SUBROUTINE Nodes_LabelGetVS(nodes,globalNumber,label,err,error,*) !Argument variables - TYPE(NODES_TYPE), POINTER :: NODES !=1.AND.GLOBAL_NUMBER<=NODES%NUMBER_OF_NODES) THEN - LABEL=NODES%NODES(GLOBAL_NUMBER)%LABEL - ELSE - LOCAL_ERROR="The specified global node number of "//TRIM(NUMBER_TO_VSTRING(GLOBAL_NUMBER,"*",ERR,ERROR))// & - & " is invalid. The global node number should be between 1 and "// & - & TRIM(NUMBER_TO_VSTRING(NODES%NUMBER_OF_NODES,"*",ERR,ERROR))//"." - CALL FlagError(LOCAL_ERROR,ERR,ERROR,*999) - ENDIF - ELSE - CALL FlagError("Nodes have not been finished.",ERR,ERROR,*999) - ENDIF - ELSE - CALL FlagError("Nodes is not associated.",ERR,ERROR,*999) + TYPE(VARYING_STRING) :: localError + + ENTERS("Nodes_LabelGetVS",err,error,*999) + + IF(.NOT.ASSOCIATED(nodes)) CALL FlagError("Nodes is not associated.",err,error,*999) + IF(.NOT.nodes%nodesFinished) CALL FlagError("Nodes have not been finished.",err,error,*999) + IF(globalNumber<1.OR.globalNumber>nodes%numberOfNodes) THEN + localError="The specified global node number of "//TRIM(NumberToVString(globalNumber,"*",err,error))// & + & " is invalid. The global node number should be between 1 and "// & + & TRIM(NumberToVString(nodes%numberOfNodes,"*",err,error))//"." + CALL FlagError(localError,err,error,*999) ENDIF - EXITS("NODES_LABEL_GET_VS") + label=nodes%nodes(globalNumber)%label + + EXITS("Nodes_LabelGetVS") RETURN -999 ERRORSEXITS("NODES_LABEL_GET_VS",ERR,ERROR) +999 ERRORSEXITS("Nodes_LabelGetVS",err,error) RETURN 1 - END SUBROUTINE NODES_LABEL_GET_VS + END SUBROUTINE Nodes_LabelGetVS ! !================================================================================================================================ ! - !>Changes/sets the character label for a node identified by a given global number. \see OPENCMISS::CMISSNodesLabelSet - SUBROUTINE NODES_LABEL_SET_C(NODES,GLOBAL_NUMBER,LABEL,ERR,ERROR,*) + !>Changes/sets the character label for a node identified by a given global number. \see OpenCMISS::Iron::cmfe_Nodes_LabelSet + SUBROUTINE Nodes_LabelSetC(nodes,globalNumber,label,err,error,*) !Argument variables - TYPE(NODES_TYPE), POINTER :: NODES !=1.AND.GLOBAL_NUMBER<=NODES%NUMBER_OF_NODES) THEN - NODES%NODES(GLOBAL_NUMBER)%LABEL=LABEL - ELSE - LOCAL_ERROR="The specified global node number of "//TRIM(NUMBER_TO_VSTRING(GLOBAL_NUMBER,"*",ERR,ERROR))// & - & " is invalid. The global node number should be between 1 and "// & - & TRIM(NUMBER_TO_VSTRING(NODES%NUMBER_OF_NODES,"*",ERR,ERROR))//"." - CALL FlagError(LOCAL_ERROR,ERR,ERROR,*999) - ENDIF - ENDIF - ELSE - CALL FlagError("Nodes is not associated.",ERR,ERROR,*999) + IF(.NOT.ASSOCIATED(nodes)) CALL FlagError("Nodes is not associated.",err,error,*999) + IF(globalNumber<1.OR.globalNumber>nodes%numberOfNodes) THEN + localError="The specified global node number of "//TRIM(NumberToVString(globalNumber,"*",err,error))// & + & " is invalid. The global node number should be between 1 and "// & + & TRIM(NumberToVString(nodes%numberOfNodes,"*",err,error))//"." + CALL FlagError(localError,err,error,*999) ENDIF - EXITS("NODES_LABEL_SET_C") + nodes%nodes(globalNumber)%label=label + + EXITS("Nodes_LabelSetC") RETURN -999 ERRORSEXITS("NODES_LABEL_SET_C",ERR,ERROR) +999 ERRORSEXITS("Nodes_LabelSetC",err,error) RETURN 1 - END SUBROUTINE NODES_LABEL_SET_C + END SUBROUTINE Nodes_LabelSetC ! !================================================================================================================================ ! - !>Changes/sets the varying string label for a node identified by a given global number. \see OPENCMISS::CMISSNodesLabelSet - SUBROUTINE NODES_LABEL_SET_VS(NODES,GLOBAL_NUMBER,LABEL,ERR,ERROR,*) + !>Changes/sets the varying string label for a node identified by a given global number. \see OpenCMISS::Iron::cmfe_Nodes_LabelSet + SUBROUTINE Nodes_LabelSetVS(nodes,globalNumber,label,err,error,*) !Argument variables - TYPE(NODES_TYPE), POINTER :: NODES !=1.AND.GLOBAL_NUMBER<=NODES%NUMBER_OF_NODES) THEN - NODES%NODES(GLOBAL_NUMBER)%LABEL=LABEL - ELSE - LOCAL_ERROR="The specified global node number of "//TRIM(NUMBER_TO_VSTRING(GLOBAL_NUMBER,"*",ERR,ERROR))// & - & " is invalid. The global node number should be between 1 and "// & - & TRIM(NUMBER_TO_VSTRING(NODES%NUMBER_OF_NODES,"*",ERR,ERROR))//"." - CALL FlagError(LOCAL_ERROR,ERR,ERROR,*999) - ENDIF - ENDIF - ELSE - CALL FlagError("Nodes is not associated.",ERR,ERROR,*999) + IF(.NOT.ASSOCIATED(nodes)) CALL FlagError("Nodes is not associated.",err,error,*999) + IF(globalNumber<1.OR.globalNumber>nodes%numberOfNodes) THEN + localError="The specified global node number of "//TRIM(NumberToVString(globalNumber,"*",err,error))// & + & " is invalid. The global node number should be between 1 and "// & + & TRIM(NumberToVString(nodes%numberOfNodes,"*",err,error))//"." + CALL FlagError(localError,err,error,*999) ENDIF - EXITS("NODES_LABEL_SET_VS") + nodes%nodes(globalNumber)%label=label + + EXITS("Nodes_LabelSetVS") RETURN -999 ERRORSEXITS("NODES_LABEL_SET_VS",ERR,ERROR) +999 ERRORSEXITS("Nodes_LabelSetVS",err,error) RETURN 1 - END SUBROUTINE NODES_LABEL_SET_VS + END SUBROUTINE Nodes_LabelSetVS ! !================================================================================================================================ ! - !>Returns the number of nodes. \see OPENCMISS::CMISSNodesNumberOfNodesGet - SUBROUTINE NODES_NUMBER_OF_NODES_GET(NODES,NUMBER_OF_NODES,ERR,ERROR,*) + !>Returns the number of nodes. \see OpenCMISS::Iron::cmfe_Nodes_NumberOfNodesGet + SUBROUTINE Nodes_NumberOfNodesGet(nodes,numberOfNodes,err,error,*) !Argument variables - TYPE(NODES_TYPE), POINTER :: NODES !Gets the user number for a node identified by a given global number. \see OPENCMISS::CMISSNodesUserNumberGet - SUBROUTINE NODES_USER_NUMBER_GET(NODES,GLOBAL_NUMBER,USER_NUMBER,ERR,ERROR,*) + !>Gets the user number for a node identified by a given global number. \see OpenCMISS::Iron::cmfe_Nodes_UserNumberGet + SUBROUTINE Nodes_UserNumberGet(nodes,globalNumber,userNumber,err,error,*) !Argument variables - TYPE(NODES_TYPE), POINTER :: NODES !=1.AND.GLOBAL_NUMBER<=NODES%NUMBER_OF_NODES) THEN - USER_NUMBER=NODES%NODES(GLOBAL_NUMBER)%USER_NUMBER - ELSE - LOCAL_ERROR="The specified global node number of "//TRIM(NUMBER_TO_VSTRING(GLOBAL_NUMBER,"*",ERR,ERROR))// & - & " is invalid. The global node number should be between 1 and "// & - & TRIM(NUMBER_TO_VSTRING(NODES%NUMBER_OF_NODES,"*",ERR,ERROR))//"." - CALL FlagError(LOCAL_ERROR,ERR,ERROR,*999) - ENDIF - ELSE - CALL FlagError("Nodes have not been finished.",ERR,ERROR,*999) - ENDIF - ELSE - CALL FlagError("Nodes is not associated.",ERR,ERROR,*999) + TYPE(VARYING_STRING) :: localError + + ENTERS("Nodes_UserNumberGet",err,error,*999) + + IF(.NOT.ASSOCIATED(nodes)) CALL FlagError("Nodes is not associated.",err,error,*999) + IF(.NOT.nodes%nodesFinished) CALL FlagError("Nodes have not been finished.",err,error,*999) + IF(globalNumber<1.OR.globalNumber>nodes%numberOfNodes) THEN + localError="The specified global node number of "//TRIM(NumberToVString(globalNumber,"*",err,error))// & + & " is invalid. The global node number should be between 1 and "// & + & TRIM(NumberToVString(nodes%numberOfNodes,"*",err,error))//"." + CALL FlagError(localError,err,error,*999) ENDIF - EXITS("NODES_USER_NUMBER_GET") + userNumber=nodes%nodes(globalNumber)%userNumber + + EXITS("Nodes_UserNumberGet") RETURN -999 ERRORSEXITS("NODES_USER_NUMBER_GET",ERR,ERROR) +999 ERRORSEXITS("Nodes_UserNumberGet",err,error) RETURN 1 - END SUBROUTINE NODES_USER_NUMBER_GET + END SUBROUTINE Nodes_UserNumberGet ! !================================================================================================================================ ! - !>Changes/sets the user number for a node identified by a given global number. \see OPENCMISS::CMISSNodesUserNumberSet - SUBROUTINE NODES_USER_NUMBER_SET(NODES,GLOBAL_NUMBER,USER_NUMBER,ERR,ERROR,*) + !>Changes/sets the user number for a node identified by a given global number. \see OpenCMISS::Iron::cmfe_Nodes_UserNumberSet + SUBROUTINE Nodes_UserNumberSet(nodes,globalNumber,userNumber,err,error,*) !Argument variables - TYPE(NODES_TYPE), POINTER :: NODES !=1.AND.GLOBAL_NUMBER<=NODES%NUMBER_OF_NODES) THEN - !Check the node user number is not already used - CALL NODE_CHECK_EXISTS(NODES,USER_NUMBER,NODE_EXISTS,OLD_GLOBAL_NUMBER,ERR,ERROR,*999) - IF(NODE_EXISTS) THEN - IF(OLD_GLOBAL_NUMBER/=GLOBAL_NUMBER) THEN - LOCAL_ERROR="The specified node user number of "//TRIM(NUMBER_TO_VSTRING(USER_NUMBER,"*",ERR,ERROR))// & - & " is already used by global node number "//TRIM(NUMBER_TO_VSTRING(OLD_GLOBAL_NUMBER,"*",ERR,ERROR))// & - & ". User node numbers must be unique." - CALL FlagError(LOCAL_ERROR,ERR,ERROR,*999) - ENDIF - ELSE - CALL TREE_ITEM_DELETE(NODES%NODES_TREE,NODES%NODES(GLOBAL_NUMBER)%USER_NUMBER,ERR,ERROR,*999) - CALL TREE_ITEM_INSERT(NODES%NODES_TREE,USER_NUMBER,GLOBAL_NUMBER,INSERT_STATUS,ERR,ERROR,*999) - IF(INSERT_STATUS/=TREE_NODE_INSERT_SUCESSFUL) CALL FlagError("Unsucessful nodes tree insert.",ERR,ERROR,*999) - NODES%NODES(GLOBAL_NUMBER)%USER_NUMBER=USER_NUMBER - ENDIF - ELSE - LOCAL_ERROR="The specified global node number of "//TRIM(NUMBER_TO_VSTRING(GLOBAL_NUMBER,"*",ERR,ERROR))// & - & " is invalid. The global node number should be between 1 and "// & - & TRIM(NUMBER_TO_VSTRING(NODES%NUMBER_OF_NODES,"*",ERR,ERROR))//"." - CALL FlagError(LOCAL_ERROR,ERR,ERROR,*999) - ENDIF - ENDIF + IF(ASSOCIATED(nodes)) CALL FlagError("Nodes is not associated.",err,error,*999) + IF(nodes%nodesFinished) CALL FlagError("Nodes have been finished.",err,error,*999) + IF(globalNumber<1.OR.globalNumber>nodes%numberOfNodes) THEN + localError="The specified global node number of "//TRIM(NumberToVString(globalNumber,"*",err,error))// & + & " is invalid. The global node number should be between 1 and "// & + & TRIM(NumberToVString(nodes%numberOfNodes,"*",err,error))//"." + CALL FlagError(localError,err,error,*999) + ENDIF + + !Check the node user number is not already used + CALL Node_CheckExists(nodes,userNumber,nodeExists,oldGlobalNumber,err,error,*999) + IF(nodeExists) THEN + IF(oldGlobalNumber/=globalNumber) THEN + localError="The specified node user number of "//TRIM(NumberToVString(userNumber,"*",err,error))// & + & " is already used by global node number "//TRIM(NumberToVString(oldGlobalNumber,"*",err,error))// & + & ". User node numbers must be unique." + CALL FlagError(localError,err,error,*999) + ENDIF ELSE - CALL FlagError("Nodes is not associated.",ERR,ERROR,*999) + CALL Tree_ItemDelete(nodes%nodesTree,nodes%nodes(globalNumber)%userNumber,err,error,*999) + CALL Tree_ItemInsert(nodes%nodesTree,userNumber,globalNumber,insertStatus,err,error,*999) + IF(insertStatus/=TREE_NODE_INSERT_SUCESSFUL) CALL FlagError("Unsucessful nodes tree insert.",err,error,*999) + nodes%nodes(globalNumber)%userNumber=userNumber ENDIF - EXITS("NODES_USER_NUMBER_SET") + EXITS("Nodes_UserNumberSet") RETURN -999 ERRORSEXITS("NODES_USER_NUMBER_SET",ERR,ERROR) +999 ERRORSEXITS("Nodes_UserNumberSet",err,error) RETURN 1 - END SUBROUTINE NODES_USER_NUMBER_SET + END SUBROUTINE Nodes_UserNumberSet ! !================================================================================================================================ ! - !>Changes/sets the user numbers for all nodes. \see OPENCMISS::CMISSNodes_UserNumbersAllSet - SUBROUTINE NodesUserNumbersAllSet(nodes,userNumbers,err,error,*) + !>Changes/sets the user numbers for all nodes. \see OpenCMISS::Iron::cmfe_Nodes_UserNumbersAllSet + SUBROUTINE Nodes_UserNumbersAllSet(nodes,userNumbers,err,error,*) !Argument variables - TYPE(NODES_TYPE), POINTER :: nodes !newNodesTree - NULLIFY(newNodesTree) - DO nodeIdx=1,nodes%NUMBER_OF_NODES - nodes%NODES(nodeIdx)%GLOBAL_NUMBER=nodeIdx - nodes%NODES(nodeIdx)%USER_NUMBER=userNumbers(nodeIdx) - ENDDO !nodesIdx - ELSE - localError="The number of specified node user numbers ("// & - TRIM(NumberToVstring(SIZE(userNumbers,1),"*",err,error))// & - ") does not match number of nodes ("// & - TRIM(NumberToVstring(nodes%NUMBER_OF_NODES,"*",err,error))//")." - CALL FlagError(localError,err,error,*999) - ENDIF - ENDIF - ELSE - CALL FlagError("Nodes is not associated.",err,error,*999) + IF(.NOT.ASSOCIATED(nodes)) CALL FlagError("Nodes is not associated.",err,error,*999) + IF(nodes%nodesFinished) CALL FlagError("Nodes have been finished.",err,error,*999) + IF(SIZE(userNumbers,1)/=nodes%numberOfNodes) THEN + localError="The number of specified node user numbers of "// & + TRIM(NumberToVstring(SIZE(userNumbers,1),"*",err,error))// & + " does not match number of nodes of "// & + TRIM(NumberToVstring(nodes%numberOfNodes,"*",err,error))//"." + CALL FlagError(localError,err,error,*999) ENDIF - EXITS("NodesUserNumbersAllSet") + !Check the users numbers to ensure that there are no duplicates + CALL Tree_CreateStart(newNodesTree,err,error,*999) + CALL Tree_InsertTypeSet(newNodesTree,TREE_NO_DUPLICATES_ALLOWED,err,error,*999) + CALL Tree_CreateFinish(newNodesTree,err,error,*999) + DO nodeIdx=1,nodes%numberOfNodes + CALL Tree_ItemInsert(newNodesTree,userNumbers(nodeIdx),nodeIdx,insertStatus,err,error,*999) + IF(insertStatus/=TREE_NODE_INSERT_SUCESSFUL) THEN + localError="The specified user number of "//TRIM(NumberToVstring(userNumbers(nodeIdx),"*",err,error))// & + & " for global node number "//TRIM(NumberToVstring(nodeIdx,"*",err,error))// & + & " is a duplicate. The user node numbers must be unique." + CALL FlagError(localError,err,error,*999) + ENDIF + ENDDO !nodeIdx + CALL Tree_Destroy(nodes%nodesTree,err,error,*999) + nodes%nodesTree=>newNodesTree + NULLIFY(newNodesTree) + DO nodeIdx=1,nodes%numberOfNodes + nodes%nodes(nodeIdx)%userNumber=userNumbers(nodeIdx) + ENDDO !nodesIdx + + EXITS("Nodes_UserNumbersAllSet") RETURN -999 IF(ASSOCIATED(newNodesTree)) CALL TREE_DESTROY(newNodesTree,err,error,*998) -998 ERRORSEXITS("NodesUserNumbersAllSet",err,error) +999 IF(ASSOCIATED(newNodesTree)) CALL Tree_Destroy(newNodesTree,err,error,*998) +998 ERRORSEXITS("Nodes_UserNumbersAllSet",err,error) RETURN 1 - END SUBROUTINE NodesUserNumbersAllSet + END SUBROUTINE Nodes_UserNumbersAllSet ! !================================================================================================================================ ! -END MODULE NODE_ROUTINES +END MODULE NodeRoutines diff --git a/src/opencmiss_iron.f90 b/src/opencmiss_iron.f90 index b5fb6cf4..486ba515 100644 --- a/src/opencmiss_iron.f90 +++ b/src/opencmiss_iron.f90 @@ -32,7 +32,7 @@ !> Auckland, the University of Oxford and King's College, London. !> All Rights Reserved. !> -!> Contributor(s): +!> Contributor(s): Chris Bradley !> !> Alternatively, the contents of this file may be used under the terms of !> either the GNU General Public License Version 2 or later (the "GPL"), or @@ -55,7871 +55,8138 @@ MODULE OpenCMISS_Iron - USE ANALYTIC_ANALYSIS_ROUTINES - USE BaseRoutines - USE BasisRoutines - USE BasisAccessRoutines - USE BIOELECTRIC_FINITE_ELASTICITY_ROUTINES - USE BOUNDARY_CONDITIONS_ROUTINES - USE Cmiss - USE CmissPetsc - USE CMISS_CELLML - USE ComputationEnvironment - USE Constants - USE CONTROL_LOOP_ROUTINES - USE ControlLoopAccessRoutines - USE COORDINATE_ROUTINES - USE CoordinateSystemAccessRoutines - USE DataPointRoutines - USE DataPointAccessRoutines - USE DataProjectionRoutines - USE DataProjectionAccessRoutines - USE DistributedMatrixVector - USE EquationsRoutines - USE EquationsSetConstants - USE EQUATIONS_SET_ROUTINES - USE EquationsSetAccessRoutines - USE FIELD_ROUTINES - USE FieldAccessRoutines + USE ANALYTIC_ANALYSIS_ROUTINES + USE BaseRoutines + USE BasisRoutines + USE BasisAccessRoutines + USE BIOELECTRIC_FINITE_ELASTICITY_ROUTINES + USE BOUNDARY_CONDITIONS_ROUTINES + USE Cmiss + USE CmissPetsc + USE CMISS_CELLML + USE ComputationRoutines + USE ComputationAccessRoutines + USE Constants + USE ContextRoutines + USE ContextAccessRoutines + USE CONTROL_LOOP_ROUTINES + USE ControlLoopAccessRoutines + USE COORDINATE_ROUTINES + USE CoordinateSystemAccessRoutines + USE DataPointRoutines + USE DataPointAccessRoutines + USE DataProjectionRoutines + USE DataProjectionAccessRoutines + USE DistributedMatrixVector + USE EquationsRoutines + USE EquationsSetConstants + USE EQUATIONS_SET_ROUTINES + USE EquationsSetAccessRoutines + USE FIELD_ROUTINES + USE FieldAccessRoutines #ifdef WITH_FIELDML - USE FIELDML_TYPES - USE FIELDML_INPUT_ROUTINES - USE FIELDML_OUTPUT_ROUTINES - USE FIELDML_UTIL_ROUTINES + USE FIELDML_TYPES + USE FIELDML_INPUT_ROUTINES + USE FIELDML_OUTPUT_ROUTINES + USE FIELDML_UTIL_ROUTINES #endif - USE FIELD_IO_ROUTINES - USE FINITE_ELASTICITY_ROUTINES - USE GENERATED_MESH_ROUTINES - USE HAMILTON_JACOBI_EQUATIONS_ROUTINES - USE HISTORY_ROUTINES - USE INPUT_OUTPUT - USE INTERFACE_ROUTINES - USE InterfaceAccessRoutines - USE INTERFACE_CONDITIONS_CONSTANTS - USE INTERFACE_CONDITIONS_ROUTINES - USE InterfaceConditionAccessRoutines - USE INTERFACE_EQUATIONS_ROUTINES - USE INTERFACE_MATRICES_CONSTANTS - USE INTERFACE_MATRICES_ROUTINES - USE ISO_C_BINDING - USE ISO_VARYING_STRING - USE Kinds - USE MESH_ROUTINES - USE MeshAccessRoutines - USE NODE_ROUTINES - USE PROBLEM_CONSTANTS - USE PROBLEM_ROUTINES - USE ProblemAccessRoutines - USE REGION_ROUTINES - USE RegionAccessRoutines - USE SOLVER_ROUTINES - USE SolverAccessRoutines - USE Strings - USE Types + USE FIELD_IO_ROUTINES + USE FINITE_ELASTICITY_ROUTINES + USE GENERATED_MESH_ROUTINES + USE HAMILTON_JACOBI_EQUATIONS_ROUTINES + USE HISTORY_ROUTINES + USE INPUT_OUTPUT + USE INTERFACE_ROUTINES + USE InterfaceAccessRoutines + USE INTERFACE_CONDITIONS_CONSTANTS + USE INTERFACE_CONDITIONS_ROUTINES + USE InterfaceConditionAccessRoutines + USE INTERFACE_EQUATIONS_ROUTINES + USE INTERFACE_MATRICES_CONSTANTS + USE INTERFACE_MATRICES_ROUTINES + USE ISO_C_BINDING + USE ISO_VARYING_STRING + USE Kinds + USE MESH_ROUTINES + USE MeshAccessRoutines + USE NodeRoutines + USE PROBLEM_CONSTANTS + USE PROBLEM_ROUTINES + USE ProblemAccessRoutines + USE REGION_ROUTINES + USE RegionAccessRoutines + USE SOLVER_ROUTINES + USE SolverAccessRoutines + USE Strings + USE Types #include "macros.h" #include "dllexport.h" - IMPLICIT NONE + IMPLICIT NONE + + PRIVATE + + !Module parameters + + !Module types + + !>Contains information about a basis function. + TYPE cmfe_BasisType + PRIVATE + TYPE(BASIS_TYPE), POINTER :: basis + END TYPE cmfe_BasisType + + !>Contains information on the boundary conditions for the equations set. + TYPE cmfe_BoundaryConditionsType + PRIVATE + TYPE(BOUNDARY_CONDITIONS_TYPE), POINTER :: boundaryConditions + END TYPE cmfe_BoundaryConditionsType + + !>Contains information on a CellML environment. + TYPE cmfe_CellMLType + PRIVATE + TYPE(CELLML_TYPE), POINTER :: cellml + END TYPE cmfe_CellMLType + + !>Contains information about the CellML equations for a solver. + TYPE cmfe_CellMLEquationsType + PRIVATE + TYPE(CELLML_EQUATIONS_TYPE), POINTER :: cellmlEquations + END TYPE cmfe_CellMLEquationsType + + !>Contains information on a computation environment + TYPE cmfe_ComputationEnvironmentType + PRIVATE + TYPE(ComputationEnvironmentType), POINTER :: computationEnvironment + END TYPE cmfe_ComputationEnvironmentType + + !>Contains information on a context. + TYPE cmfe_ContextType + PRIVATE + TYPE(ContextType), POINTER :: context + END TYPE cmfe_ContextType + + !>Contains information on a control loop. + TYPE cmfe_ControlLoopType + PRIVATE + TYPE(CONTROL_LOOP_TYPE), POINTER :: controlLoop + END TYPE cmfe_ControlLoopType + + !>Contains information on a coordinate system. + TYPE cmfe_CoordinateSystemType + PRIVATE + TYPE(COORDINATE_SYSTEM_TYPE), POINTER :: coordinateSystem + END TYPE cmfe_CoordinateSystemType + + !>Contains information on the data points defined on a region. + TYPE cmfe_DataPointsType + PRIVATE + TYPE(DataPointsType), POINTER :: dataPoints + END TYPE cmfe_DataPointsType + + !>Contains information about a data projection. + TYPE cmfe_DataProjectionType + PRIVATE + TYPE(DataProjectionType), POINTER :: dataProjection + END TYPE cmfe_DataProjectionType + + !>Contains information on the mesh decomposition. + TYPE cmfe_DecompositionType + PRIVATE + TYPE(DECOMPOSITION_TYPE), POINTER :: decomposition + END TYPE cmfe_DecompositionType + + !>Contains information about the equations in an equations set. + TYPE cmfe_EquationsType + PRIVATE + TYPE(EquationsType), POINTER :: equations + END TYPE cmfe_EquationsType + + !>Contains information on an equations set defined on a region. + TYPE cmfe_EquationsSetType + PRIVATE + TYPE(EQUATIONS_SET_TYPE), POINTER :: equationsSet + END TYPE cmfe_EquationsSetType + + !>Contains information for a field defined on a region. + TYPE cmfe_FieldType + PRIVATE + TYPE(FIELD_TYPE), POINTER :: field + END TYPE cmfe_FieldType + + !>Contains information for a fields defined on a region. + TYPE cmfe_FieldsType + !PRIVATE + TYPE(FIELDS_TYPE), POINTER :: fields + END TYPE cmfe_FieldsType + + !>Contains information on a generated mesh. + TYPE cmfe_GeneratedMeshType + PRIVATE + TYPE(GENERATED_MESH_TYPE), POINTER :: generatedMesh + END TYPE cmfe_GeneratedMeshType + + !>Contains information about a history file for a control loop. + TYPE cmfe_HistoryType + PRIVATE + TYPE(HISTORY_TYPE), POINTER :: history + END TYPE cmfe_HistoryType + + !>Contains information about an interface. + TYPE cmfe_InterfaceType + PRIVATE + TYPE(INTERFACE_TYPE), POINTER :: interface + END TYPE cmfe_InterfaceType + + !>Contains information about an interface condition. + TYPE cmfe_InterfaceConditionType + PRIVATE + TYPE(INTERFACE_CONDITION_TYPE), POINTER :: interfaceCondition + END TYPE cmfe_InterfaceConditionType + + !>Contains information about an interface condition. + TYPE cmfe_InterfaceEquationsType + PRIVATE + TYPE(INTERFACE_EQUATIONS_TYPE), POINTER :: interfaceEquations + END TYPE cmfe_InterfaceEquationsType + + !>Contains information on an interfaces meshes connectivity. + TYPE cmfe_InterfaceMeshConnectivityType + PRIVATE + TYPE(INTERFACE_MESH_CONNECTIVITY_TYPE), POINTER :: meshConnectivity + END TYPE cmfe_InterfaceMeshConnectivityType + + !>Contains information on an interfaces points connectivity. + TYPE cmfe_InterfacePointsConnectivityType + PRIVATE + TYPE(InterfacePointsConnectivityType), POINTER :: pointsConnectivity + END TYPE cmfe_InterfacePointsConnectivityType + + !>A matrix that may be distributed across multiple computation nodes + !>and may use sparse or full storage. + TYPE cmfe_DistributedMatrixType + PRIVATE + TYPE(DistributedMatrixType), POINTER :: distributedMatrix + END TYPE cmfe_DistributedMatrixType + + !>A vector that may be distributed across multiple computation nodes + TYPE cmfe_DistributedVectorType + PRIVATE + TYPE(DistributedVectorType), POINTER :: distributedVector + END TYPE cmfe_DistributedVectorType + + !>Contains information on a mesh defined on a region. + TYPE cmfe_MeshType + PRIVATE + TYPE(MESH_TYPE), POINTER :: mesh + END TYPE cmfe_MeshType + + !>Contains information on a mesh elements defined in a mesh + TYPE cmfe_MeshElementsType + PRIVATE + TYPE(MeshElementsType), POINTER :: meshElements + END TYPE cmfe_MeshElementsType + + !>Contains information on an embedded mesh + TYPE cmfe_MeshEmbeddingType + PRIVATE + TYPE(MESH_EMBEDDING_TYPE), POINTER :: meshEmbedding + END TYPE cmfe_MeshEmbeddingType + + !>Contains information on a mesh nodes defined in a mesh + TYPE cmfe_MeshNodesType + PRIVATE + TYPE(MeshNodesType), POINTER :: meshNodes + END TYPE cmfe_MeshNodesType + + !>Contains information on the nodes defined on a region. + TYPE cmfe_NodesType + PRIVATE + TYPE(NodesType), POINTER :: nodes + END TYPE cmfe_NodesType + + !>Contains information for a problem. + TYPE cmfe_ProblemType + PRIVATE + TYPE(PROBLEM_TYPE), POINTER :: problem + END TYPE cmfe_ProblemType + + !>Contains information for a particular quadrature scheme for a basis. + TYPE cmfe_QuadratureType + PRIVATE + TYPE(QUADRATURE_TYPE), POINTER :: quadrature + END TYPE cmfe_QuadratureType + +!>Contains information for a region. + TYPE cmfe_RegionType + PRIVATE + TYPE(REGION_TYPE), POINTER :: region + END TYPE cmfe_RegionType + + !>Contains information about a solver. + TYPE cmfe_SolverType + PRIVATE + TYPE(SOLVER_TYPE), POINTER :: solver + END TYPE cmfe_SolverType + + !>Contains information about the solver equations for a solver. + TYPE cmfe_SolverEquationsType + PRIVATE + TYPE(SOLVER_EQUATIONS_TYPE), POINTER :: solverEquations + END TYPE cmfe_SolverEquationsType + + !>Contains information on a work group + TYPE cmfe_WorkGroupType + PRIVATE + TYPE(WorkGroupType), POINTER :: workGroup + END TYPE cmfe_WorkGroupType + + !Module variables + + TYPE(VARYING_STRING) :: error + + INTERFACE cmfe_Initialise + MODULE PROCEDURE cmfe_InitialiseNumber + MODULE PROCEDURE cmfe_InitialiseObj + END INTERFACE cmfe_Initialise + + INTERFACE cmfe_Finalise + MODULE PROCEDURE cmfe_FinaliseNumber + MODULE PROCEDURE cmfe_FinaliseObj + END INTERFACE cmfe_Finalise + + INTERFACE cmfe_Fields_Create + MODULE PROCEDURE cmfe_Fields_CreateInterface + MODULE PROCEDURE cmfe_Fields_CreateRegion + END INTERFACE cmfe_Fields_Create - PRIVATE + PUBLIC cmfe_Finalise,cmfe_Initialise - !Module parameters + PUBLIC cmfe_WorkingRealPrecisionGet - !Module types + PUBLIC cmfe_PetscOptionsSetValue - !>Contains information about a basis function. - TYPE cmfe_BasisType - PRIVATE - TYPE(BASIS_TYPE), POINTER :: basis - END TYPE cmfe_BasisType + PUBLIC cmfe_BasisType,cmfe_BasisTypesCopy,cmfe_Basis_Finalise,cmfe_Basis_Initialise - !>Contains information on the boundary conditions for the equations set. - TYPE cmfe_BoundaryConditionsType - PRIVATE - TYPE(BOUNDARY_CONDITIONS_TYPE), POINTER :: boundaryConditions - END TYPE cmfe_BoundaryConditionsType + PUBLIC cmfe_BoundaryConditionsType,cmfe_BoundaryConditions_Finalise,cmfe_BoundaryConditions_Initialise - !>Contains information on a CellML environment. - TYPE cmfe_CellMLType - PRIVATE - TYPE(CELLML_TYPE), POINTER :: cellml - END TYPE cmfe_CellMLType + PUBLIC cmfe_CellMLType,cmfe_CellML_Finalise,cmfe_CellML_Initialise - !>Contains information about the CellML equations for a solver. - TYPE cmfe_CellMLEquationsType - PRIVATE - TYPE(CELLML_EQUATIONS_TYPE), POINTER :: cellmlEquations - END TYPE cmfe_CellMLEquationsType + PUBLIC cmfe_CellMLEquationsType,cmfe_CellMLEquations_Finalise,cmfe_CellMLEquations_Initialise - !>Contains information on a control loop. - TYPE cmfe_ControlLoopType - PRIVATE - TYPE(CONTROL_LOOP_TYPE), POINTER :: controlLoop - END TYPE cmfe_ControlLoopType + PUBLIC cmfe_ComputationEnvironmentType,cmfe_ComputationEnvironment_Initialise,cmfe_ComputationEnvironment_Finalise - !>Contains information on a coordinate system. - TYPE cmfe_CoordinateSystemType - PRIVATE - TYPE(COORDINATE_SYSTEM_TYPE), POINTER :: coordinateSystem - END TYPE cmfe_CoordinateSystemType + PUBLIC cmfe_ContextType,cmfe_Context_Finalise,cmfe_Context_Initialise - !>Contains information on the data points defined on a region. - TYPE cmfe_DataPointsType - PRIVATE - TYPE(DataPointsType), POINTER :: dataPoints - END TYPE cmfe_DataPointsType + PUBLIC cmfe_ControlLoopType,cmfe_ControlLoop_Finalise,cmfe_ControlLoop_Initialise,cmfe_ControlLoop_LoadOutputSet - !>Contains information about a data projection. - TYPE cmfe_DataProjectionType - PRIVATE - TYPE(DataProjectionType), POINTER :: dataProjection - END TYPE cmfe_DataProjectionType + PUBLIC cmfe_CoordinateSystemType,cmfe_CoordinateSystem_Finalise,cmfe_CoordinateSystem_Initialise - !>Contains information on the mesh decomposition. - TYPE cmfe_DecompositionType - PRIVATE - TYPE(DECOMPOSITION_TYPE), POINTER :: decomposition - END TYPE cmfe_DecompositionType + PUBLIC cmfe_DataPointsType,cmfe_DataPoints_Finalise,cmfe_DataPoints_Initialise - !>Contains information about the equations in an equations set. - TYPE cmfe_EquationsType - PRIVATE - TYPE(EquationsType), POINTER :: equations - END TYPE cmfe_EquationsType + PUBLIC cmfe_DataProjectionType,cmfe_DataProjection_Finalise,cmfe_DataProjection_Initialise - !>Contains information on an equations set defined on a region. - TYPE cmfe_EquationsSetType - PRIVATE - TYPE(EQUATIONS_SET_TYPE), POINTER :: equationsSet - END TYPE cmfe_EquationsSetType + PUBLIC cmfe_DecompositionType,cmfe_Decomposition_Finalise,cmfe_Decomposition_Initialise - !>Contains information for a field defined on a region. - TYPE cmfe_FieldType - PRIVATE - TYPE(FIELD_TYPE), POINTER :: field - END TYPE cmfe_FieldType + PUBLIC cmfe_Decomposition_CalculateFacesSet,cmfe_Decomposition_CalculateLinesSet - !>Contains information for a fields defined on a region. - TYPE cmfe_FieldsType - !PRIVATE - TYPE(FIELDS_TYPE), POINTER :: fields - END TYPE cmfe_FieldsType + PUBLIC cmfe_DistributedMatrixType,cmfe_DistributedVectorType - !>Contains information on a generated mesh. - TYPE cmfe_GeneratedMeshType - PRIVATE - TYPE(GENERATED_MESH_TYPE), POINTER :: generatedMesh - END TYPE cmfe_GeneratedMeshType + PUBLIC cmfe_DistributedMatrix_Initialise,cmfe_DistributedVector_Initialise - !>Contains information about a history file for a control loop. - TYPE cmfe_HistoryType - PRIVATE - TYPE(HISTORY_TYPE), POINTER :: history - END TYPE cmfe_HistoryType + PUBLIC cmfe_EquationsType,cmfe_Equations_Finalise,cmfe_Equations_Initialise - !>Contains information about an interface. - TYPE cmfe_InterfaceType - PRIVATE - TYPE(INTERFACE_TYPE), POINTER :: interface - END TYPE cmfe_InterfaceType + PUBLIC cmfe_EquationsSetType,cmfe_EquationsSet_Finalise,cmfe_EquationsSet_Initialise - !>Contains information about an interface condition. - TYPE cmfe_InterfaceConditionType - PRIVATE - TYPE(INTERFACE_CONDITION_TYPE), POINTER :: interfaceCondition - END TYPE cmfe_InterfaceConditionType + PUBLIC cmfe_FieldType,cmfe_Field_Finalise,cmfe_Field_Initialise - !>Contains information about an interface condition. - TYPE cmfe_InterfaceEquationsType - PRIVATE - TYPE(INTERFACE_EQUATIONS_TYPE), POINTER :: interfaceEquations - END TYPE cmfe_InterfaceEquationsType - - !>Contains information on an interfaces meshes connectivity. - TYPE cmfe_InterfaceMeshConnectivityType - PRIVATE - TYPE(INTERFACE_MESH_CONNECTIVITY_TYPE), POINTER :: meshConnectivity - END TYPE cmfe_InterfaceMeshConnectivityType - - !>Contains information on an interfaces points connectivity. - TYPE cmfe_InterfacePointsConnectivityType - PRIVATE - TYPE(InterfacePointsConnectivityType), POINTER :: pointsConnectivity - END TYPE cmfe_InterfacePointsConnectivityType - - !>A matrix that may be distributed across multiple computational nodes - !>and may use sparse or full storage. - TYPE cmfe_DistributedMatrixType - PRIVATE - TYPE(DistributedMatrixType), POINTER :: distributedMatrix - END TYPE cmfe_DistributedMatrixType - - !>A vector that may be distributed across multiple computational nodes - TYPE cmfe_DistributedVectorType - PRIVATE - TYPE(DistributedVectorType), POINTER :: distributedVector - END TYPE cmfe_DistributedVectorType - - !>Contains information on a mesh defined on a region. - TYPE cmfe_MeshType - PRIVATE - TYPE(MESH_TYPE), POINTER :: mesh - END TYPE cmfe_MeshType + PUBLIC cmfe_FieldsType,cmfe_Fields_Create,cmfe_Fields_Finalise,cmfe_Fields_Initialise - !>Contains information on a mesh elements defined in a mesh - TYPE cmfe_MeshElementsType - PRIVATE - TYPE(MeshElementsType), POINTER :: meshElements - END TYPE cmfe_MeshElementsType + PUBLIC cmfe_GeneratedMeshType,cmfe_GeneratedMesh_Finalise,cmfe_GeneratedMesh_Initialise - !>Contains information on an embedded mesh - TYPE cmfe_MeshEmbeddingType - PRIVATE - TYPE(MESH_EMBEDDING_TYPE), POINTER :: meshEmbedding - END TYPE cmfe_MeshEmbeddingType + PUBLIC cmfe_HistoryType,cmfe_History_Finalise,cmfe_History_Initialise - !>Contains information on a mesh nodes defined in a mesh - TYPE cmfe_MeshNodesType - PRIVATE - TYPE(MeshNodesType), POINTER :: meshNodes - END TYPE cmfe_MeshNodesType + PUBLIC cmfe_InterfaceType,cmfe_Interface_Finalise,cmfe_Interface_Initialise - !>Contains information on the nodes defined on a region. - TYPE cmfe_NodesType - PRIVATE - TYPE(NODES_TYPE), POINTER :: nodes - END TYPE cmfe_NodesType + PUBLIC cmfe_InterfaceConditionType,cmfe_InterfaceCondition_Finalise,cmfe_InterfaceCondition_Initialise - !>Contains information for a problem. - TYPE cmfe_ProblemType - PRIVATE - TYPE(PROBLEM_TYPE), POINTER :: problem - END TYPE cmfe_ProblemType + PUBLIC cmfe_InterfaceEquationsType,cmfe_InterfaceEquations_Finalise,cmfe_InterfaceEquations_Initialise - !>Contains information for a particular quadrature scheme for a basis. - TYPE cmfe_QuadratureType - PRIVATE - TYPE(QUADRATURE_TYPE), POINTER :: quadrature - END TYPE cmfe_QuadratureType + PUBLIC cmfe_InterfaceMeshConnectivityType,cmfe_InterfaceMeshConnectivity_Finalise, & + & cmfe_InterfaceMeshConnectivity_Initialise - !>Contains information for a region. - TYPE cmfe_RegionType - PRIVATE - TYPE(REGION_TYPE), POINTER :: region - END TYPE cmfe_RegionType + PUBLIC cmfe_InterfacePointsConnectivityType,cmfe_InterfacePointsConnectivity_Initialise, & + & cmfe_InterfacePointsConnectivity_Finalise - !>Contains information about a solver. - TYPE cmfe_SolverType - PRIVATE - TYPE(SOLVER_TYPE), POINTER :: solver - END TYPE cmfe_SolverType + PUBLIC cmfe_MeshType,cmfe_Mesh_Finalise,cmfe_Mesh_Initialise - !>Contains information about the solver equations for a solver. - TYPE cmfe_SolverEquationsType - PRIVATE - TYPE(SOLVER_EQUATIONS_TYPE), POINTER :: solverEquations - END TYPE cmfe_SolverEquationsType + PUBLIC cmfe_MeshElementsType,cmfe_MeshElements_Finalise,cmfe_MeshElements_Initialise - !>Contains information on a computational work group - TYPE cmfe_ComputationalWorkGroupType - PRIVATE - TYPE(ComputationalWorkGroupType), POINTER :: computationalWorkGroup - END TYPE cmfe_ComputationalWorkGroupType + PUBLIC cmfe_MeshNodesType,cmfe_MeshNodes_Finalise,cmfe_MeshNodes_Initialise - !Module variables + PUBLIC cmfe_NodesType,cmfe_Nodes_Finalise,cmfe_Nodes_Initialise - TYPE(VARYING_STRING) :: error + PUBLIC cmfe_ProblemType,cmfe_Problem_Finalise,cmfe_Problem_Initialise - !INTERFACE cmfe_Finalise_ - ! MODULE PROCEDURE cmfe_Finalise - !END INTERFACE cmfe_Finalise_ + PUBLIC cmfe_QuadratureType,cmfe_Quadrature_Finalise,cmfe_Quadrature_Initialise - INTERFACE cmfe_Initialise - MODULE PROCEDURE cmfe_InitialiseNumber - MODULE PROCEDURE cmfe_InitialiseObj - END INTERFACE cmfe_Initialise + PUBLIC cmfe_RegionType,cmfe_Region_Finalise,cmfe_Region_Initialise - INTERFACE cmfe_Fields_Create - MODULE PROCEDURE cmfe_Fields_CreateInterface - MODULE PROCEDURE cmfe_Fields_CreateRegion - END INTERFACE cmfe_Fields_Create + PUBLIC cmfe_SolverType,cmfe_Solver_Finalise,cmfe_Solver_Initialise - !PUBLIC cmfe_Finalise,cmfe_Initialise - PUBLIC cmfe_Finalise,cmfe_Initialise + PUBLIC cmfe_SolverEquationsType,cmfe_SolverEquations_Finalise,cmfe_SolverEquations_Initialise - PUBLIC cmfe_WorkingRealPrecisionGet + PUBLIC cmfe_WorkGroupType,cmfe_WorkGroup_Initialise,cmfe_WorkGroup_Finalise - PUBLIC cmfe_PetscOptionsSetValue +!================================================================================================================================== +! +! ANALYTIC_ANALYSIS_ROUTINES +! +!================================================================================================================================== + + !Module parameters + + !Module types + + !Module variables + + !Interfaces + + !>Output the analytic error analysis for a field compared to the analytic values parameter set. + INTERFACE cmfe_AnalyticAnalysis_Output + MODULE PROCEDURE cmfe_AnalyticAnalysis_OutputNumber + MODULE PROCEDURE cmfe_AnalyticAnalysis_OutputObj + END INTERFACE + + !>Get the absolute error of the node. + INTERFACE cmfe_AnalyticAnalysis_AbsoluteErrorGetNode + MODULE PROCEDURE cmfe_AnalyticAnalysis_AbsoluteErrorGetNodeNumber + MODULE PROCEDURE cmfe_AnalyticAnalysis_AbsoluteErrorGetNodeObj + END INTERFACE cmfe_AnalyticAnalysis_AbsoluteErrorGetNode + + !>Get the percentage error of the node. + INTERFACE cmfe_AnalyticAnalysis_PercentageErrorGetNode + MODULE PROCEDURE cmfe_AnalyticAnalysis_PercentageErrorGetNodeNumber + MODULE PROCEDURE cmfe_AnalyticAnalysis_PercentageErrorGetNodeObj + END INTERFACE cmfe_AnalyticAnalysis_PercentageErrorGetNode + + !>Get the relative error of the node. + INTERFACE cmfe_AnalyticAnalysis_RelativeErrorGetNode + MODULE PROCEDURE cmfe_AnalyticAnalysis_RelativeErrorGetNodeNumber + MODULE PROCEDURE cmfe_AnalyticAnalysis_RelativeErrorGetNodeObj + END INTERFACE cmfe_AnalyticAnalysis_RelativeErrorGetNode + + !>Get the absolute error of the element. + INTERFACE cmfe_AnalyticAnalysis_AbsoluteErrorGetElement + MODULE PROCEDURE cmfe_AnalyticAnalysis_AbsoluteErrorGetElementNumber + MODULE PROCEDURE cmfe_AnalyticAnalysis_AbsoluteErrorGetElementObj + END INTERFACE cmfe_AnalyticAnalysis_AbsoluteErrorGetElement + + !>Get the percentage error of the element. + INTERFACE cmfe_AnalyticAnalysis_PercentageErrorGetElement + MODULE PROCEDURE cmfe_AnalyticAnalysis_PercentageErrorGetElementNumber + MODULE PROCEDURE cmfe_AnalyticAnalysis_PercentageErrorGetElementObj + END INTERFACE cmfe_AnalyticAnalysis_PercentageErrorGetElement + + !>Get the relative error of the element. + INTERFACE cmfe_AnalyticAnalysis_RelativeErrorGetElement + MODULE PROCEDURE cmfe_AnalyticAnalysis_RelativeErrorGetElementNumber + MODULE PROCEDURE cmfe_AnalyticAnalysis_RelativeErrorGetElementObj + END INTERFACE cmfe_AnalyticAnalysis_RelativeErrorGetElement + + !>Get the absolute error of the constant. + INTERFACE cmfe_AnalyticAnalysis_AbsoluteErrorGetConstant + MODULE PROCEDURE cmfe_AnalyticAnalysis_AbsoluteErrorGetConstantNumber + MODULE PROCEDURE cmfe_AnalyticAnalysis_AbsoluteErrorGetConstantObj + END INTERFACE cmfe_AnalyticAnalysis_AbsoluteErrorGetConstant + + !>Get the percentage error of the constant. + INTERFACE cmfe_AnalyticAnalysis_PercentageErrorGetConstant + MODULE PROCEDURE cmfe_AnalyticAnalysis_PercentageErrorGetConstantNumber + MODULE PROCEDURE cmfe_AnalyticAnalysis_PercentageErrorGetConstantObj + END INTERFACE cmfe_AnalyticAnalysis_PercentageErrorGetConstant + + !>Get the relative error of the constant. + INTERFACE cmfe_AnalyticAnalysis_RelativeErrorGetConstant + MODULE PROCEDURE cmfe_AnalyticAnalysis_RelativeErrorGetConstantNumber + MODULE PROCEDURE cmfe_AnalyticAnalysis_RelativeErrorGetConstantObj + END INTERFACE cmfe_AnalyticAnalysis_RelativeErrorGetConstant + + !>Get the RMS error of nodes. + INTERFACE cmfe_AnalyticAnalysis_RMSErrorGetNode + MODULE PROCEDURE cmfe_AnalyticAnalysis_RMSErrorGetNodeNumber + MODULE PROCEDURE cmfe_AnalyticAnalysis_RMSErrorGetNodeObj + END INTERFACE cmfe_AnalyticAnalysis_RMSErrorGetNode + + !>Get the RMS error of elements. + INTERFACE cmfe_AnalyticAnalysis_RMSErrorGetElement + MODULE PROCEDURE cmfe_AnalyticAnalysis_RMSErrorGetElementNumber + MODULE PROCEDURE cmfe_AnalyticAnalysis_RMSErrorGetElementObj + END INTERFACE cmfe_AnalyticAnalysis_RMSErrorGetElement + + !>Get integral of numerical values. + INTERFACE cmfe_AnalyticAnalysis_IntegralNumericalValueGet + MODULE PROCEDURE cmfe_AnalyticAnalysis_IntegralNumericalValueGetNumber + MODULE PROCEDURE cmfe_AnalyticAnalysis_IntegralNumericalValueGetObj + END INTERFACE cmfe_AnalyticAnalysis_IntegralNumericalValueGet + + !>Get integral of analytical values. + INTERFACE cmfe_AnalyticAnalysis_IntegralAnalyticValueGet + MODULE PROCEDURE cmfe_AnalyticAnalysis_IntegralAnalyticValueGetNumber + MODULE PROCEDURE cmfe_AnalyticAnalysis_IntegralAnalyticValueGetObj + END INTERFACE cmfe_AnalyticAnalysis_IntegralAnalyticValueGet + + !>Get integral of percentage errors. + INTERFACE cmfe_AnalyticAnalysis_IntegralPercentageErrorGet + MODULE PROCEDURE cmfe_AnalyticAnalysis_IntegralPercentageErrorGetNumber + MODULE PROCEDURE cmfe_AnalyticAnalysis_IntegralPercentageErrorGetObj + END INTERFACE cmfe_AnalyticAnalysis_IntegralPercentageErrorGet + + !>Get integral of absolute errors. + INTERFACE cmfe_AnalyticAnalysis_IntegralAbsoluteErrorGet + MODULE PROCEDURE cmfe_AnalyticAnalysis_IntegralAbsoluteErrorGetNumber + MODULE PROCEDURE cmfe_AnalyticAnalysis_IntegralAbsoluteErrorGetObj + END INTERFACE cmfe_AnalyticAnalysis_IntegralAbsoluteErrorGet + + !>Get integral of relative errors. + INTERFACE cmfe_AnalyticAnalysis_IntegralRelativeErrorGet + MODULE PROCEDURE cmfe_AnalyticAnalysis_IntegralRelativeErrorGetNumber + MODULE PROCEDURE cmfe_AnalyticAnalysis_IntegralRelativeErrorGetObj + END INTERFACE cmfe_AnalyticAnalysis_IntegralRelativeErrorGet + + !>Get integral of NID numerical errors. + INTERFACE cmfe_AnalyticAnalysis_IntegralNIDNumericalValueGet + MODULE PROCEDURE cmfe_AnalyticAnalysis_IntegralNIDNumericalValueGetNumber + MODULE PROCEDURE cmfe_AnalyticAnalysis_IntegralNIDNumericalValueGetObj + END INTERFACE cmfe_AnalyticAnalysis_IntegralNIDNumericalValueGet + + !>Get integral of NID errors. + INTERFACE cmfe_AnalyticAnalysis_IntegralNIDErrorGet + MODULE PROCEDURE cmfe_AnalyticAnalysis_IntegralNIDErrorGetNumber + MODULE PROCEDURE cmfe_AnalyticAnalysis_IntegralNIDErrorGetObj + END INTERFACE cmfe_AnalyticAnalysis_IntegralNIDErrorGet + + PUBLIC cmfe_AnalyticAnalysis_Output + + PUBLIC cmfe_AnalyticAnalysis_AbsoluteErrorGetNode,cmfe_AnalyticAnalysis_PercentageErrorGetNode, & + & cmfe_AnalyticAnalysis_RelativeErrorGetNode + + PUBLIC cmfe_AnalyticAnalysis_AbsoluteErrorGetElement,cmfe_AnalyticAnalysis_PercentageErrorGetElement, & + & cmfe_AnalyticAnalysis_RelativeErrorGetElement + + PUBLIC cmfe_AnalyticAnalysis_AbsoluteErrorGetConstant,cmfe_AnalyticAnalysis_PercentageErrorGetConstant, & + & cmfe_AnalyticAnalysis_RelativeErrorGetConstant + + PUBLIC cmfe_AnalyticAnalysis_RMSErrorGetNode,cmfe_AnalyticAnalysis_RMSErrorGetElement + + PUBLIC cmfe_AnalyticAnalysis_IntegralNumericalValueGet,cmfe_AnalyticAnalysis_IntegralAnalyticValueGet, & + & cmfe_AnalyticAnalysis_IntegralPercentageErrorGet,cmfe_AnalyticAnalysis_IntegralAbsoluteErrorGet, & + & cmfe_AnalyticAnalysis_IntegralRelativeErrorGet,cmfe_AnalyticAnalysis_IntegralNIDNumericalValueGet, & + & cmfe_AnalyticAnalysis_IntegralNIDErrorGet + +!================================================================================================================================== +! +! BaseRoutines +! +!================================================================================================================================== - PUBLIC cmfe_BasisType,cmfe_BasisTypesCopy,cmfe_Basis_Finalise,cmfe_Basis_Initialise + !Module parameters - PUBLIC cmfe_BoundaryConditionsType,cmfe_BoundaryConditions_Finalise,cmfe_BoundaryConditions_Initialise + !> \addtogroup OpenCMISS_DiagnosticAndTimingConstants OpenCMISS::Iron::DiagnosticAndTiming::Constants + !> \brief Diagnostic and Timing constants. + !>@{ + !> \addtogroup OpenCMISS_DiagnosticTypes OpenCMISS::Iron::DiagnosticAndTiming::DiagnosticTypes + !> \brief Diganostic constants. + !> \see OpenCMISS::Iron::DiagnosticTypes,OpenCMISS + !>@{ + INTEGER(INTG), PARAMETER :: CMFE_ALL_DIAG_TYPE = ALL_DIAG_TYPE !@} + !> \addtogroup OpenCMISS_TimingTypes OpenCMISS::Iron::DiagnosticAndTiming::TimingTypes + !> \brief Timing constants. + !> \see OpenCMISS::Iron::TimingTypes,OpenCMISS + !>@{ + INTEGER(INTG), PARAMETER :: CMFE_ALL_TIMING_TYPE = ALL_TIMING_TYPE !@} + !>@} - PUBLIC cmfe_CellMLType,cmfe_CellML_Finalise,cmfe_CellML_Initialise + !Module types - PUBLIC cmfe_CellMLEquationsType,cmfe_CellMLEquations_Finalise,cmfe_CellMLEquations_Initialise + !Module variables - PUBLIC cmfe_ComputationalWorkGroupType,cmfe_ComputationalWorkGroup_Initialise + !Interfaces - PUBLIC cmfe_ControlLoopType,cmfe_ControlLoop_Finalise,cmfe_ControlLoop_Initialise,cmfe_ControlLoop_LoadOutputSet + PUBLIC CMFE_ALL_DIAG_TYPE,CMFE_IN_DIAG_TYPE,CMFE_FROM_DIAG_TYPE - PUBLIC cmfe_CoordinateSystemType,cmfe_CoordinateSystem_Finalise,cmfe_CoordinateSystem_Initialise + PUBLIC CMFE_ALL_TIMING_TYPE,CMFE_IN_TIMING_TYPE,CMFE_FROM_TIMING_TYPE - PUBLIC cmfe_DataPointsType,cmfe_DataPoints_Finalise,cmfe_DataPoints_Initialise + PUBLIC cmfe_DiagnosticsSetOff,cmfe_DiagnosticsSetOn - PUBLIC cmfe_DataProjectionType,cmfe_DataProjection_Finalise,cmfe_DataProjection_Initialise + PUBLIC cmfe_OutputSetOff,cmfe_OutputSetOn - PUBLIC cmfe_DecompositionType,cmfe_Decomposition_Finalise,cmfe_Decomposition_Initialise + PUBLIC cmfe_TimingSetOff,cmfe_TimingSetOn,cmfe_TimingSummaryOutput - PUBLIC cmfe_Decomposition_CalculateFacesSet,cmfe_Decomposition_CalculateLinesSet +!================================================================================================================================== +! +! BasisRoutines +! +!================================================================================================================================== + + !Module parameters + + !> \addtogroup OpenCMISS_BasisConstants OpenCMISS::Iron::Basis::Constants + !> \brief Basis function constants. + !>@{ + !> \addtogroup OpenCMISS_BasisTypes OpenCMISS::Iron::Basis::BasisTypes + !> \brief Basis definition type parameters. + !> \see OpenCMISS::Iron::BasisConstants,OpenCMISS + !>@{ + INTEGER(INTG), PARAMETER :: CMFE_BASIS_LAGRANGE_HERMITE_TP_TYPE = BASIS_LAGRANGE_HERMITE_TP_TYPE !@} + !> \addtogroup OpenCMISS_BasisInterpolationSpecifications OpenCMISS::Iron::Basis::InterpolationSpecifications + !> \brief Interpolation specification parameters + !> \see OpenCMISS::Iron::BasisConstants,OpenCMISS + !>@{ + INTEGER(INTG), PARAMETER :: CMFE_BASIS_LINEAR_LAGRANGE_INTERPOLATION = BASIS_LINEAR_LAGRANGE_INTERPOLATION !@} + !> \addtogroup OpenCMISS_BasisQuadratureSchemes OpenCMISS::Iron::Basis::QuadratureSchemes + !> \brief Quadrature scheme parameters + !> \see OpenCMISS::Iron::BasisConstants,OpenCMISS + !>@{ + INTEGER(INTG), PARAMETER :: CMFE_BASIS_DEFAULT_QUADRATURE_SCHEME = BASIS_DEFAULT_QUADRATURE_SCHEME !@} + !> \addtogroup OpenCMISS_BasisQuadratureTypes OpenCMISS::Iron::Basis::QuadratureTypes + !> \brief Basis quadrature type parameters. + !> \see OpenCMISS::Iron::BasisConstants,OpenCMISS + !>@{ + INTEGER(INTG), PARAMETER :: CMFE_BASIS_GAUSS_LEGENDRE_QUADRATURE = BASIS_GAUSS_LEGENDRE_QUADRATURE !@} + !> \addtogroup OpenCMISS_BasisXiCollapse OpenCMISS::Iron::Basis::XiCollapse + !> \brief Basis Xi collapse parameters. + !> \see OpenCMISS::Iron::Basis,OpenCMISS + !>@{ + INTEGER(INTG), PARAMETER :: CMFE_BASIS_XI_COLLAPSED = BASIS_XI_COLLAPSED !@} + !>@} + + !Module types + + !Module variables + + !Interfaces + + !>Returns the collapsed Xi flags for a basis. + INTERFACE cmfe_Basis_CollapsedXiGet + MODULE PROCEDURE cmfe_Basis_CollapsedXiGetNumber + MODULE PROCEDURE cmfe_Basis_CollapsedXiGetObj + END INTERFACE cmfe_Basis_CollapsedXiGet + + !>Sets/changes the collapsed Xi flags for a basis. + INTERFACE cmfe_Basis_CollapsedXiSet + MODULE PROCEDURE cmfe_Basis_CollapsedXiSetNumber + MODULE PROCEDURE cmfe_Basis_CollapsedXiSetObj + END INTERFACE cmfe_Basis_CollapsedXiSet + + !>Finishes the creation of a new basis. \see OpenCMISS::Iron::cmfe_Basis_CreateStart + INTERFACE cmfe_Basis_CreateFinish + MODULE PROCEDURE cmfe_Basis_CreateFinishNumber + MODULE PROCEDURE cmfe_Basis_CreateFinishObj + END INTERFACE cmfe_Basis_CreateFinish + + !>Starts the creation of a new basis. \see OpenCMISS::Iron::cmfe_Basis_CreateFinish + INTERFACE cmfe_Basis_CreateStart + MODULE PROCEDURE cmfe_Basis_CreateStartNumber + MODULE PROCEDURE cmfe_Basis_CreateStartObj + END INTERFACE cmfe_Basis_CreateStart + + !>Destroys a basis. + INTERFACE cmfe_Basis_Destroy + MODULE PROCEDURE cmfe_Basis_DestroyNumber + MODULE PROCEDURE cmfe_Basis_DestroyObj + END INTERFACE cmfe_Basis_Destroy + + !>Get the interpolation type in each Xi directions for a basis. + INTERFACE cmfe_Basis_InterpolationXiGet + MODULE PROCEDURE cmfe_Basis_InterpolationXiGetNumber + MODULE PROCEDURE cmfe_Basis_InterpolationXiGetObj + END INTERFACE cmfe_Basis_InterpolationXiGet + + !>Sets/changes the interpolation type in each Xi directions for a basis. + INTERFACE cmfe_Basis_InterpolationXiSet + MODULE PROCEDURE cmfe_Basis_InterpolationXiSetNumber + MODULE PROCEDURE cmfe_Basis_InterpolationXiSetObj + END INTERFACE cmfe_Basis_InterpolationXiSet + + !>Returns the number of local nodes in a basis. + INTERFACE cmfe_Basis_NumberOfLocalNodesGet + MODULE PROCEDURE cmfe_Basis_NumberOfLocalNodesGetNumber + MODULE PROCEDURE cmfe_Basis_NumberOfLocalNodesGetObj + END INTERFACE cmfe_Basis_NumberOfLocalNodesGet + + !>Returns the number of Xi directions in a basis. + INTERFACE cmfe_Basis_NumberOfXiGet + MODULE PROCEDURE cmfe_Basis_NumberOfXiGetNumber + MODULE PROCEDURE cmfe_Basis_NumberOfXiGetObj + END INTERFACE cmfe_Basis_NumberOfXiGet + + !>Sets/changes the number of Xi directions in a basis. + INTERFACE cmfe_Basis_NumberOfXiSet + MODULE PROCEDURE cmfe_Basis_NumberOfXiSetNumber + MODULE PROCEDURE cmfe_Basis_NumberOfXiSetObj + END INTERFACE cmfe_Basis_NumberOfXiSet + + !>Returns the number of Gauss points in each Xi direction on a basis quadrature. + INTERFACE cmfe_Basis_QuadratureNumberOfGaussXiGet + MODULE PROCEDURE cmfe_Basis_QuadratureNumberOfGaussXiGetNumber + MODULE PROCEDURE cmfe_Basis_QuadratureNumberOfGaussXiGetObj + END INTERFACE cmfe_Basis_QuadratureNumberOfGaussXiGet + + !>Sets/changes the number of Gauss points in each Xi direction on a basis quadrature. + INTERFACE cmfe_Basis_QuadratureNumberOfGaussXiSet + MODULE PROCEDURE cmfe_Basis_QuadratureNumberOfGaussXiSetNumber + MODULE PROCEDURE cmfe_Basis_QuadratureNumberOfGaussXiSetObj + END INTERFACE cmfe_Basis_QuadratureNumberOfGaussXiSet + + !>Returns the xi positions of Gauss points on a basis quadrature. + INTERFACE cmfe_Basis_QuadratureGaussXiGet + MODULE PROCEDURE cmfe_Basis_QuadratureSingleGaussXiGetNumber + MODULE PROCEDURE cmfe_Basis_QuadratureSingleGaussXiGetObj + MODULE PROCEDURE cmfe_Basis_QuadratureMultipleGaussXiGetNumber + MODULE PROCEDURE cmfe_Basis_QuadratureMultipleGaussXiGetObj + END INTERFACE cmfe_Basis_QuadratureGaussXiGet + + !>Returns the order of quadrature for a basis quadrature. + INTERFACE cmfe_Basis_QuadratureOrderGet + MODULE PROCEDURE cmfe_Basis_QuadratureOrderGetNumber + MODULE PROCEDURE cmfe_Basis_QuadratureOrderGetObj + END INTERFACE cmfe_Basis_QuadratureOrderGet + + !>Sets/changes the order of quadrature for a basis quadrature. + INTERFACE cmfe_Basis_QuadratureOrderSet + MODULE PROCEDURE cmfe_Basis_QuadratureOrderSetNumber + MODULE PROCEDURE cmfe_Basis_QuadratureOrderSetObj + END INTERFACE cmfe_Basis_QuadratureOrderSet + + !>Returns the quadrature type for a basis quadrature. + INTERFACE cmfe_Basis_QuadratureTypeGet + MODULE PROCEDURE cmfe_Basis_QuadratureTypeGetNumber + MODULE PROCEDURE cmfe_Basis_QuadratureTypeGetObj + END INTERFACE cmfe_Basis_QuadratureTypeGet + + !>Sets/changes the quadrature type for a basis quadrature. + INTERFACE cmfe_Basis_QuadratureTypeSet + MODULE PROCEDURE cmfe_Basis_QuadratureTypeSetNumber + MODULE PROCEDURE cmfe_Basis_QuadratureTypeSetObj + END INTERFACE cmfe_Basis_QuadratureTypeSet + + !>Sets/changes the local face gauss evaluatoin flag for a basis quadrature. + INTERFACE cmfe_Basis_QuadratureLocalFaceGaussEvaluateSet + MODULE PROCEDURE cmfe_Basis_QuadratureLocalFaceGaussEvaluateSetNumber + MODULE PROCEDURE cmfe_Basis_QuadratureLocalFaceGaussEvaluateSetObj + END INTERFACE cmfe_Basis_QuadratureLocalFaceGaussEvaluateSet + + !>Returns the type of a basis. + INTERFACE cmfe_Basis_TypeGet + MODULE PROCEDURE cmfe_Basis_TypeGetNumber + MODULE PROCEDURE cmfe_Basis_TypeGetObj + END INTERFACE cmfe_Basis_TypeGet + + !>Sets/changes the type of a basis. + INTERFACE cmfe_Basis_TypeSet + MODULE PROCEDURE cmfe_Basis_TypeSetNumber + MODULE PROCEDURE cmfe_Basis_TypeSetObj + END INTERFACE cmfe_Basis_TypeSet + + PUBLIC CMFE_BASIS_LAGRANGE_HERMITE_TP_TYPE,CMFE_BASIS_SIMPLEX_TYPE,CMFE_BASIS_SERENDIPITY_TYPE,CMFE_BASIS_AUXILLIARY_TYPE, & + & CMFE_BASIS_B_SPLINE_TP_TYPE,CMFE_BASIS_FOURIER_LAGRANGE_HERMITE_TP_TYPE,CMFE_BASIS_EXTENDED_LAGRANGE_TP_TYPE + + PUBLIC CMFE_BASIS_LINEAR_LAGRANGE_INTERPOLATION,CMFE_BASIS_QUADRATIC_LAGRANGE_INTERPOLATION, & + & CMFE_BASIS_CUBIC_LAGRANGE_INTERPOLATION, & + & CMFE_BASIS_CUBIC_HERMITE_INTERPOLATION,CMFE_BASIS_QUADRATIC1_HERMITE_INTERPOLATION, & + & CMFE_BASIS_QUADRATIC2_HERMITE_INTERPOLATION, & + & CMFE_BASIS_LINEAR_SIMPLEX_INTERPOLATION,CMFE_BASIS_QUADRATIC_SIMPLEX_INTERPOLATION,CMFE_BASIS_CUBIC_SIMPLEX_INTERPOLATION + + PUBLIC CMFE_BASIS_DEFAULT_QUADRATURE_SCHEME,CMFE_BASIS_LOW_QUADRATURE_SCHEME,CMFE_BASIS_MID_QUADRATURE_SCHEME, & + & CMFE_BASIS_HIGH_QUADRATURE_SCHEME + + PUBLIC CMFE_BASIS_GAUSS_LEGENDRE_QUADRATURE,CMFE_BASIS_GAUSS_LAGUERRE_QUADRATURE,CMFE_BASIS_GUASS_HERMITE_QUADRATURE, & + & CMFE_BASIS_ADAPTIVE_GAUSS_LEGENDRE_QUADRATURE,CMFE_BASIS_GAUSS_SIMPLEX_QUADRATURE + + PUBLIC CMFE_BASIS_XI_COLLAPSED,CMFE_BASIS_COLLAPSED_AT_XI0,CMFE_BASIS_COLLAPSED_AT_XI1,CMFE_BASIS_NOT_COLLAPSED + + PUBLIC cmfe_Basis_CollapsedXiGet,cmfe_Basis_CollapsedXiSet + + PUBLIC cmfe_Basis_CreateFinish,cmfe_Basis_CreateStart,cmfe_Basis_Destroy + + PUBLIC cmfe_Basis_InterpolationXiGet,cmfe_Basis_InterpolationXiSet + + PUBLIC cmfe_Basis_NumberOfLocalNodesGet - PUBLIC cmfe_EquationsType,cmfe_Equations_Finalise,cmfe_Equations_Initialise + PUBLIC cmfe_Basis_NumberOfXiGet,cmfe_Basis_NumberOfXiSet + + PUBLIC cmfe_Basis_QuadratureNumberOfGaussXiGet,cmfe_Basis_QuadratureNumberOfGaussXiSet - PUBLIC cmfe_EquationsSetType,cmfe_EquationsSet_Finalise,cmfe_EquationsSet_Initialise + PUBLIC cmfe_Basis_QuadratureGaussXiGet - PUBLIC cmfe_FieldType,cmfe_Field_Finalise,cmfe_Field_Initialise + PUBLIC cmfe_Basis_QuadratureOrderGet,cmfe_Basis_QuadratureOrderSet - PUBLIC cmfe_FieldsType,cmfe_Fields_Create,cmfe_Fields_Finalise,cmfe_Fields_Initialise + PUBLIC cmfe_Basis_QuadratureTypeGet,cmfe_Basis_QuadratureTypeSet,cmfe_Basis_QuadratureLocalFaceGaussEvaluateSet - PUBLIC cmfe_GeneratedMeshType,cmfe_GeneratedMesh_Finalise,cmfe_GeneratedMesh_Initialise + PUBLIC cmfe_Basis_TypeGet,cmfe_Basis_TypeSet - PUBLIC cmfe_HistoryType,cmfe_History_Finalise,cmfe_History_Initialise +!================================================================================================================================== +! +! BOUNDARY_CONDITIONS_ROUTINES +! +!================================================================================================================================== + + !Module parameters + + + !> \addtogroup OpenCMISS_BoundaryConditionsConstants OpenCMISS::Iron::BoundaryConditions::Constants + !> \brief Boundary conditions constants. + !>@{ + !> \addtogroup OpenCMISS_BoundaryConditionsTypes OpenCMISS::Iron::BoundaryConditions::Types + !> \brief Specific boundary condition types, which might only be applicable to certain equation sets. + !> \see OpenCMISS::Iron::BoundaryConditions,OpenCMISS + !>@{ + INTEGER(INTG), PARAMETER :: CMFE_BOUNDARY_CONDITION_FREE = BOUNDARY_CONDITION_FREE !@} + !> \addtogroup OpenCMISS_BoundaryConditionSparsityTypes OpenCMISS::Iron::BoundaryConditions::SparsityTypes + !> \brief Storage type for matrices used by boundary conditions. + !> \see OpenCMISS::Iron::BoundaryConditions,OpenCMISS + !>@{ + INTEGER(INTG), PARAMETER :: CMFE_BOUNDARY_CONDITION_SPARSE_MATRICES = BOUNDARY_CONDITION_SPARSE_MATRICES + INTEGER(INTG), PARAMETER :: CMFE_BOUNDARY_CONDITION_FULL_MATRICES = BOUNDARY_CONDITION_FULL_MATRICES + !>@} + !>@} + + !Module types + + !Module variables + + !Interfaces + + !>Destroys boundary conditions. + INTERFACE cmfe_BoundaryConditions_Destroy + MODULE PROCEDURE cmfe_BoundaryConditions_DestroyNumber0 + MODULE PROCEDURE cmfe_BoundaryConditions_DestroyNumber1 + MODULE PROCEDURE cmfe_BoundaryConditions_DestroyObj + END INTERFACE cmfe_BoundaryConditions_Destroy + + !>Adds to the value of the specified constant and sets this as a boundary condition on the specified constant. + INTERFACE cmfe_BoundaryConditions_AddConstant + MODULE PROCEDURE cmfe_BoundaryConditions_AddConstantNumber + MODULE PROCEDURE cmfe_BoundaryConditions_AddConstantObj + END INTERFACE cmfe_BoundaryConditions_AddConstant + + !>Sets the value of the specified constant as a boundary condition on the specified constant. + INTERFACE cmfe_BoundaryConditions_SetConstant + MODULE PROCEDURE cmfe_BoundaryConditions_SetConstantNumber + MODULE PROCEDURE cmfe_BoundaryConditions_SetConstantObj + END INTERFACE cmfe_BoundaryConditions_SetConstant + + !>Adds to the value of the element constant and sets this as a boundary condition on the specified element. + INTERFACE cmfe_BoundaryConditions_AddElement + MODULE PROCEDURE cmfe_BoundaryConditions_AddElementNumber + MODULE PROCEDURE cmfe_BoundaryConditions_AddElementObj + END INTERFACE cmfe_BoundaryConditions_AddElement + + !>Sets the value of the specified element as a boundary condition on the specified element. + INTERFACE cmfe_BoundaryConditions_SetElement + MODULE PROCEDURE cmfe_BoundaryConditions_SetElementNumber + MODULE PROCEDURE cmfe_BoundaryConditions_SetElementObj + END INTERFACE cmfe_BoundaryConditions_SetElement + + !>Adds to the value of the node constant and sets this as a boundary condition on the specified node. + INTERFACE cmfe_BoundaryConditions_AddNode + MODULE PROCEDURE cmfe_BoundaryConditions_AddNodeNumber + MODULE PROCEDURE cmfe_BoundaryConditions_AddNodeObj + END INTERFACE cmfe_BoundaryConditions_AddNode + + !>Sets the value of the specified node as a boundary condition on the specified node. + INTERFACE cmfe_BoundaryConditions_SetNode + MODULE PROCEDURE cmfe_BoundaryConditions_SetNodeNumber0 + MODULE PROCEDURE cmfe_BoundaryConditions_SetNodeNumber1 + MODULE PROCEDURE cmfe_BoundaryConditions_SetNodeObj + END INTERFACE cmfe_BoundaryConditions_SetNode + + !>Sets the matrix sparsity type for Neumann integration matrices, used when integrating Neumann point values. + INTERFACE cmfe_BoundaryConditions_NeumannSparsityTypeSet + MODULE PROCEDURE cmfe_BoundaryConditions_NeumannSparsityTypeSetNumber0 + MODULE PROCEDURE cmfe_BoundaryConditions_NeumannSparsityTypeSetNumber1 + MODULE PROCEDURE cmfe_BoundaryConditions_NeumannSparsityTypeSetObj + END INTERFACE cmfe_BoundaryConditions_NeumannSparsityTypeSet + + !>Constrain multiple nodal equations dependent field DOFs to be a single solver DOF in the solver equations + INTERFACE cmfe_BoundaryConditions_ConstrainNodeDofsEqual + MODULE PROCEDURE cmfe_BoundaryConditions_ConstrainNodeDofsEqualNumber + MODULE PROCEDURE cmfe_BoundaryConditions_ConstrainNodeDofsEqualObj + END INTERFACE cmfe_BoundaryConditions_ConstrainNodeDofsEqual + + PUBLIC CMFE_BOUNDARY_CONDITION_FREE,CMFE_BOUNDARY_CONDITION_FIXED, & + & CMFE_BOUNDARY_CONDITION_FIXED_WALL,CMFE_BOUNDARY_CONDITION_FIXED_INLET,CMFE_BOUNDARY_CONDITION_MOVED_WALL, & + & CMFE_BOUNDARY_CONDITION_FREE_WALL,CMFE_BOUNDARY_CONDITION_FIXED_OUTLET,CMFE_BOUNDARY_CONDITION_MOVED_WALL_INCREMENTED, & + & CMFE_BOUNDARY_CONDITION_CORRECTION_MASS_INCREASE,CMFE_BOUNDARY_CONDITION_IMPERMEABLE_WALL, & + & CMFE_BOUNDARY_CONDITION_NEUMANN_INTEGRATED_ONLY,CMFE_BOUNDARY_CONDITION_FIXED_FITTED, & + & CMFE_BOUNDARY_CONDITION_FIXED_NONREFLECTING,CMFE_BOUNDARY_CONDITION_FIXED_CELLML,CMFE_BOUNDARY_CONDITION_FIXED_STREE + + PUBLIC CMFE_BOUNDARY_CONDITION_NEUMANN_POINT,CMFE_BOUNDARY_CONDITION_NEUMANN_INTEGRATED,CMFE_BOUNDARY_CONDITION_DIRICHLET + PUBLIC CMFE_BOUNDARY_CONDITION_CAUCHY,CMFE_BOUNDARY_CONDITION_ROBIN,CMFE_BOUNDARY_CONDITION_FIXED_INCREMENTED + PUBLIC CMFE_BOUNDARY_CONDITION_PRESSURE,CMFE_BOUNDARY_CONDITION_FIXED_PRESSURE,CMFE_BOUNDARY_CONDITION_PRESSURE_INCREMENTED + PUBLIC CMFE_BOUNDARY_CONDITION_NEUMANN_POINT_INCREMENTED + + PUBLIC CMFE_BOUNDARY_CONDITION_SPARSE_MATRICES,CMFE_BOUNDARY_CONDITION_FULL_MATRICES + + PUBLIC cmfe_BoundaryConditions_Destroy + + PUBLIC cmfe_BoundaryConditions_AddConstant,cmfe_BoundaryConditions_SetConstant + + PUBLIC cmfe_BoundaryConditions_AddElement,cmfe_BoundaryConditions_SetElement + + PUBLIC cmfe_BoundaryConditions_AddNode,cmfe_BoundaryConditions_SetNode + + PUBLIC cmfe_BoundaryConditions_NeumannSparsityTypeSet + + PUBLIC cmfe_BoundaryConditions_ConstrainNodeDofsEqual + +!================================================================================================================================== +! +! CMISS +! +!================================================================================================================================== - PUBLIC cmfe_InterfaceType,cmfe_Interface_Finalise,cmfe_Interface_Initialise + !Module parameters + !> \addtogroup OpenCMISS_CMISSConstants OpenCMISS::Iron::cmfe_::Constants + !> \brief CMISS constants. + !>@{ + !> \addtogroup OpenCMISS_CMISSErrorHandlingModes OpenCMISS::Iron::cmfe_::ErrorHandlingModes + !> \brief CMISS error handling mode parameters + !> \see OpenCMISS::Iron::cmfe_,OpenCMISS + !>@{ + INTEGER(INTG), PARAMETER :: CMFE_ERRORS_RETURN_ERROR_CODE = CMFE_RETURN_ERROR_CODE !@} + !>@} - PUBLIC cmfe_InterfaceConditionType,cmfe_InterfaceCondition_Finalise,cmfe_InterfaceCondition_Initialise + !Module types - PUBLIC cmfe_InterfaceEquationsType,cmfe_InterfaceEquations_Finalise,cmfe_InterfaceEquations_Initialise + !Module variables - PUBLIC cmfe_InterfaceMeshConnectivityType,cmfe_InterfaceMeshConnectivity_Finalise, & - & cmfe_InterfaceMeshConnectivity_Initialise + !Interfaces - PUBLIC cmfe_InterfacePointsConnectivityType,cmfe_InterfacePointsConnectivity_Initialise, & - & cmfe_InterfacePointsConnectivity_Finalise + !>Extracts the OpenCMISS error message. + INTERFACE cmfe_ExtractErrorMessage + MODULE PROCEDURE cmfe_ExtractErrorMessageC + MODULE PROCEDURE cmfe_ExtractErrorMessageVS + END INTERFACE cmfe_ExtractErrorMessage - PUBLIC cmfe_DistributedMatrixType,cmfe_DistributedVectorType + !>Extracts the OpenCMISS error stack. + INTERFACE cmfe_ExtractErrorStack + MODULE PROCEDURE cmfe_ExtractErrorStackC + MODULE PROCEDURE cmfe_ExtractErrorStackVS + END INTERFACE cmfe_ExtractErrorStack - PUBLIC cmfe_DistributedMatrix_Initialise,cmfe_DistributedVector_Initialise + PUBLIC CMFE_ERRORS_RETURN_ERROR_CODE,CMFE_ERRORS_OUTPUT_ERROR,CMFE_ERRORS_TRAP_ERROR - PUBLIC cmfe_MeshType,cmfe_Mesh_Finalise,cmfe_Mesh_Initialise + PUBLIC cmfe_ErrorHandlingModeGet,cmfe_ErrorHandlingModeSet - PUBLIC cmfe_MeshElementsType,cmfe_MeshElements_Finalise,cmfe_MeshElements_Initialise + PUBLIC cmfe_ExtractErrorMessage,cmfe_ExtractErrorStack - PUBLIC cmfe_MeshNodesType,cmfe_MeshNodes_Finalise,cmfe_MeshNodes_Initialise +!================================================================================================================================== +! +! CMISS_CELLML +! +!================================================================================================================================== + + !Module parameters + + !> \addtogroup OpenCMISS_CellMLConstants OpenCMISS::Iron::CellML::Constants + !> \brief CellML constants. + !>@{ + !> \addtogroup OpenCMISS_CellMLFieldTypes OpenCMISS::Iron::CellML::FieldTypes + !> \brief CellML field type parameters. + !> \see OpenCMISS::Iron::CellML,OpenCMISS + !>@{ + INTEGER(INTG), PARAMETER :: CMFE_CELLML_MODELS_FIELD = CELLML_MODELS_FIELD !@} + !>@} + + !Module types + + !Module variables + + !Interfaces + + !>Set a CellML model variable as being known (the value will be set from an OpenCMISS field) + INTERFACE cmfe_CellML_VariableSetAsKnown + MODULE PROCEDURE cmfe_CellML_VariableSetAsKnownNumberC + MODULE PROCEDURE cmfe_CellML_VariableSetAsKnownObjC + MODULE PROCEDURE cmfe_CellML_VariableSetAsKnownNumberVS + MODULE PROCEDURE cmfe_CellML_VariableSetAsKnownObjVS + END INTERFACE cmfe_CellML_VariableSetAsKnown + + !>Set a CellML model variable as being wanted (the value will be extracted from the model to an OpenCMISS field) + INTERFACE cmfe_CellML_VariableSetAsWanted + MODULE PROCEDURE cmfe_CellML_VariableSetAsWantedNumberC + MODULE PROCEDURE cmfe_CellML_VariableSetAsWantedObjC + MODULE PROCEDURE cmfe_CellML_VariableSetAsWantedNumberVS + MODULE PROCEDURE cmfe_CellML_VariableSetAsWantedObjVS + END INTERFACE cmfe_CellML_VariableSetAsWanted + + !>Map a CellML model variable to a field variable component in this CellML environment. + INTERFACE cmfe_CellML_CreateCellMLToFieldMap + MODULE PROCEDURE cmfe_CellML_CreateCellMLToFieldMapNumberC + MODULE PROCEDURE cmfe_CellML_CreateCellMLToFieldMapObjC + MODULE PROCEDURE cmfe_CellML_CreateCellMLToFieldMapNumberVS + MODULE PROCEDURE cmfe_CellML_CreateCellMLToFieldMapObjVS + END INTERFACE cmfe_CellML_CreateCellMLToFieldMap + + !>Map a field variable component to a CellML model variable in this CellML environment. + INTERFACE cmfe_CellML_CreateFieldToCellMLMap + MODULE PROCEDURE cmfe_CellML_CreateFieldToCellMLMapNumberC + MODULE PROCEDURE cmfe_CellML_CreateFieldToCellMLMapObjC + MODULE PROCEDURE cmfe_CellML_CreateFieldToCellMLMapNumberVS + MODULE PROCEDURE cmfe_CellML_CreateFieldToCellMLMapObjVS + END INTERFACE cmfe_CellML_CreateFieldToCellMLMap + + !>Finishes the creation of a CellML environment. \see OpenCMISS::Iron::cmfe_CellML_CreateStart + INTERFACE cmfe_CellML_CreateFinish + MODULE PROCEDURE cmfe_CellML_CreateFinishNumber + MODULE PROCEDURE cmfe_CellML_CreateFinishObj + END INTERFACE cmfe_CellML_CreateFinish + + !>Starts the creation of a CellML environment. \see OpenCMISS::Iron::cmfe_CellML_CreateFinish + INTERFACE cmfe_CellML_CreateStart + MODULE PROCEDURE cmfe_CellML_CreateStartNumber + MODULE PROCEDURE cmfe_CellML_CreateStartObj + END INTERFACE cmfe_CellML_CreateStart + + !>Destroys a CellML environment. + INTERFACE cmfe_CellML_Destroy + MODULE PROCEDURE cmfe_CellML_DestroyNumber + MODULE PROCEDURE cmfe_CellML_DestroyObj + END INTERFACE cmfe_CellML_Destroy + + !>Finishes the creation of field maps for a CellML environment. \see OpenCMISS::Iron::cmfe_CellML_FieldMapsCreateStart + INTERFACE cmfe_CellML_FieldMapsCreateFinish + MODULE PROCEDURE cmfe_CellML_FieldMapsCreateFinishNumber + MODULE PROCEDURE cmfe_CellML_FieldMapsCreateFinishObj + END INTERFACE cmfe_CellML_FieldMapsCreateFinish + + !>Starts the creation of field maps for a CellML environment. \see OpenCMISS::Iron::cmfe_CellML_FieldMapsCreateFinish + INTERFACE cmfe_CellML_FieldMapsCreateStart + MODULE PROCEDURE cmfe_CellML_FieldMapsCreateStartNumber + MODULE PROCEDURE cmfe_CellML_FieldMapsCreateStartObj + END INTERFACE cmfe_CellML_FieldMapsCreateStart + + !>Imports the specified CellML model into a CellML models environment. + INTERFACE cmfe_CellML_ModelImport + MODULE PROCEDURE cmfe_CellML_ModelImportNumberC + MODULE PROCEDURE cmfe_CellML_ModelImportObjC + MODULE PROCEDURE cmfe_CellML_ModelImportNumberVS + MODULE PROCEDURE cmfe_CellML_ModelImportObjVS + END INTERFACE cmfe_CellML_ModelImport + + !>Finishes the creation of CellML models field. \see OpenCMISS::Iron::cmfe_CellML_ModelsFieldCreateStart + INTERFACE cmfe_CellML_ModelsFieldCreateFinish + MODULE PROCEDURE cmfe_CellML_ModelsFieldCreateFinishNumber + MODULE PROCEDURE cmfe_CellML_ModelsFieldCreateFinishObj + END INTERFACE cmfe_CellML_ModelsFieldCreateFinish + + !>Starts the creation of CellML models field. \see OpenCMISS::Iron::cmfe_CellML_ModelsFieldCreateFinish + INTERFACE cmfe_CellML_ModelsFieldCreateStart + MODULE PROCEDURE cmfe_CellML_ModelsFieldCreateStartNumber + MODULE PROCEDURE cmfe_CellML_ModelsFieldCreateStartObj + END INTERFACE cmfe_CellML_ModelsFieldCreateStart + + !>Returns the CellML models field for a CellML environment. + INTERFACE cmfe_CellML_ModelsFieldGet + MODULE PROCEDURE cmfe_CellML_ModelsFieldGetNumber + MODULE PROCEDURE cmfe_CellML_ModelsFieldGetObj + END INTERFACE cmfe_CellML_ModelsFieldGet + + !>Finishes the creation of CellML state field. \see OpenCMISS::Iron::cmfe_CellML_StateFieldCreateStart + INTERFACE cmfe_CellML_StateFieldCreateFinish + MODULE PROCEDURE cmfe_CellML_StateFieldCreateFinishNumber + MODULE PROCEDURE cmfe_CellML_StateFieldCreateFinishObj + END INTERFACE cmfe_CellML_StateFieldCreateFinish + + !>Starts the creation of CellML state field. \see OpenCMISS::Iron::cmfe_CellML_StateFieldCreateFinish + INTERFACE cmfe_CellML_StateFieldCreateStart + MODULE PROCEDURE cmfe_CellML_StateFieldCreateStartNumber + MODULE PROCEDURE cmfe_CellML_StateFieldCreateStartObj + END INTERFACE cmfe_CellML_StateFieldCreateStart + + !>Returns the CellML state field for a CellML environment. + INTERFACE cmfe_CellML_StateFieldGet + MODULE PROCEDURE cmfe_CellML_StateFieldGetNumber + MODULE PROCEDURE cmfe_CellML_StateFieldGetObj + END INTERFACE cmfe_CellML_StateFieldGet + + !>Returns the component for a given CellML field that corresponds to the specified CellML variable ID. + INTERFACE cmfe_CellML_FieldComponentGet + MODULE PROCEDURE cmfe_CellML_FieldComponentGetNumberC + MODULE PROCEDURE cmfe_CellML_FieldComponentGetObjC + MODULE PROCEDURE cmfe_CellML_FieldComponentGetNumberVS + MODULE PROCEDURE cmfe_CellML_FieldComponentGetObjVS + END INTERFACE cmfe_CellML_FieldComponentGet + + !>Finishes the creation of CellML intermediate field. \see OpenCMISS::Iron::cmfe_CellML_IntermediateFieldCreateStart + INTERFACE cmfe_CellML_IntermediateFieldCreateFinish + MODULE PROCEDURE cmfe_CellML_IntermediateFieldCreateFinishNumber + MODULE PROCEDURE cmfe_CellML_IntermediateFieldCreateFinishObj + END INTERFACE cmfe_CellML_IntermediateFieldCreateFinish + + !>Starts the creation of CellML intermediate field. \see OpenCMISS::Iron::cmfe_CellML_IntermediateFieldCreateFinish + INTERFACE cmfe_CellML_IntermediateFieldCreateStart + MODULE PROCEDURE cmfe_CellML_IntermediateFieldCreateStartNumber + MODULE PROCEDURE cmfe_CellML_IntermediateFieldCreateStartObj + END INTERFACE cmfe_CellML_IntermediateFieldCreateStart + + !>Returns the CellML intermediate field for a CellML environment. + INTERFACE cmfe_CellML_IntermediateFieldGet + MODULE PROCEDURE cmfe_CellML_IntermediateFieldGetNumber + MODULE PROCEDURE cmfe_CellML_IntermediateFieldGetObj + END INTERFACE cmfe_CellML_IntermediateFieldGet + + !>Finishes the creation of CellML parameters field. \see OpenCMISS::Iron::cmfe_CellML_ParametersFieldCreateStart + INTERFACE cmfe_CellML_ParametersFieldCreateFinish + MODULE PROCEDURE cmfe_CellML_ParametersFieldCreateFinishNumber + MODULE PROCEDURE cmfe_CellML_ParametersFieldCreateFinishObj + END INTERFACE cmfe_CellML_ParametersFieldCreateFinish + + !>Starts the creation of CellML parameters field. \see OpenCMISS::Iron::cmfe_CellML_ParametersFieldCreateFinish + INTERFACE cmfe_CellML_ParametersFieldCreateStart + MODULE PROCEDURE cmfe_CellML_ParametersFieldCreateStartNumber + MODULE PROCEDURE cmfe_CellML_ParametersFieldCreateStartObj + END INTERFACE cmfe_CellML_ParametersFieldCreateStart + + !>Returns the CellML parameters field for a CellML environment. + INTERFACE cmfe_CellML_ParametersFieldGet + MODULE PROCEDURE cmfe_CellML_ParametersFieldGetNumber + MODULE PROCEDURE cmfe_CellML_ParametersFieldGetObj + END INTERFACE cmfe_CellML_ParametersFieldGet + + !>Validate and instantiate the specified CellML environment. + INTERFACE cmfe_CellML_Generate + MODULE PROCEDURE cmfe_CellML_GenerateNumber + MODULE PROCEDURE cmfe_CellML_GenerateObj + END INTERFACE cmfe_CellML_Generate + + PUBLIC CMFE_CELLML_MODELS_FIELD,CMFE_CELLML_STATE_FIELD,CMFE_CELLML_INTERMEDIATE_FIELD,CMFE_CELLML_PARAMETERS_FIELD + + PUBLIC cmfe_CellML_VariableSetAsKnown,cmfe_CellML_VariableSetAsWanted + + PUBLIC cmfe_CellML_CreateCellMLToFieldMap,cmfe_CellML_CreateFieldToCellMLMap + + PUBLIC cmfe_CellML_CreateFinish,cmfe_CellML_CreateStart + + PUBLIC cmfe_CellML_Destroy + + PUBLIC cmfe_CellML_FieldMapsCreateStart,cmfe_CellML_FieldMapsCreateFinish - PUBLIC cmfe_NodesType,cmfe_Nodes_Finalise,cmfe_Nodes_Initialise + PUBLIC cmfe_CellML_ModelImport - PUBLIC cmfe_ProblemType,cmfe_Problem_Finalise,cmfe_Problem_Initialise + PUBLIC cmfe_CellML_ModelsFieldCreateFinish,cmfe_CellML_ModelsFieldCreateStart,cmfe_CellML_ModelsFieldGet - PUBLIC cmfe_QuadratureType,cmfe_Quadrature_Finalise,cmfe_Quadrature_Initialise + PUBLIC cmfe_CellML_StateFieldCreateFinish,cmfe_CellML_StateFieldCreateStart,cmfe_CellML_StateFieldGet - PUBLIC cmfe_RegionType,cmfe_Region_Finalise,cmfe_Region_Initialise + PUBLIC cmfe_CellML_FieldComponentGet - PUBLIC cmfe_SolverType,cmfe_Solver_Finalise,cmfe_Solver_Initialise + PUBLIC cmfe_CellML_IntermediateFieldCreateFinish,cmfe_CellML_IntermediateFieldCreateStart - PUBLIC cmfe_SolverEquationsType,cmfe_SolverEquations_Finalise,cmfe_SolverEquations_Initialise + PUBLIC cmfe_CellML_IntermediateFieldGet -!!================================================================================================================================== -!! -!! ANALYTIC_ANALYSIS_ROUTINES -!! -!!================================================================================================================================== + PUBLIC cmfe_CellML_ParametersFieldCreateFinish,cmfe_CellML_ParametersFieldCreateStart,cmfe_CellML_ParametersFieldGet - !Module parameters + PUBLIC cmfe_CellML_Generate - !Module types +!================================================================================================================================== +! +! Computation +! +!================================================================================================================================== + + !Module parameters + + !Module types + + !Module variables + + !Interfaces + + !>Returns the number of world nodes in the computation environment + INTERFACE cmfe_ComputationEnvironment_NumberOfWorldNodesGet + MODULE PROCEDURE cmfe_ComputationEnvironment_NumberOfWorldNodesGetNumber + MODULE PROCEDURE cmfe_ComputationEnvironment_NumberOfWorldNodesGetObj + END INTERFACE cmfe_ComputationEnvironment_NumberOfWorldNodesGet + + !>Returns the world communicator for the computation environment + INTERFACE cmfe_ComputationEnvironment_WorldCommunicatorGet + MODULE PROCEDURE cmfe_ComputationEnvironment_WorldCommunicatorGetNumber + MODULE PROCEDURE cmfe_ComputationEnvironment_WorldCommunicatorGetObj + END INTERFACE cmfe_ComputationEnvironment_WorldCommunicatorGet + + !>Returns the world node number for the computation environment + INTERFACE cmfe_ComputationEnvironment_WorldNodeNumberGet + MODULE PROCEDURE cmfe_ComputationEnvironment_WorldNodeNumberGetNumber + MODULE PROCEDURE cmfe_ComputationEnvironment_WorldNodeNumberGetObj + END INTERFACE cmfe_ComputationEnvironment_WorldNodeNumberGet + + !>Returns the world work group for the computation environment + INTERFACE cmfe_ComputationEnvironment_WorldWorkGroupGet + MODULE PROCEDURE cmfe_ComputationEnvironment_WorldWorkGroupGetNumber + MODULE PROCEDURE cmfe_ComputationEnvironment_WorldWorkGroupGetObj + END INTERFACE cmfe_ComputationEnvironment_WorldWorkGroupGet + + !>Starts the creation of a work group + INTERFACE cmfe_WorkGroup_CreateStart + MODULE PROCEDURE cmfe_WorkGroup_CreateStartNumber + MODULE PROCEDURE cmfe_WorkGroup_CreateStartObj + END INTERFACE cmfe_WorkGroup_CreateStart + + !>Finishes the creation of a work group + INTERFACE cmfe_WorkGroup_CreateFinish + MODULE PROCEDURE cmfe_WorkGroup_CreateFinishNumber + MODULE PROCEDURE cmfe_WorkGroup_CreateFinishObj + END INTERFACE cmfe_WorkGroup_CreateFinish + + !>Destroys a work group + INTERFACE cmfe_WorkGroup_Destroy + MODULE PROCEDURE cmfe_WorkGroup_DestroyNumber + MODULE PROCEDURE cmfe_WorkGroup_DestroyObj + END INTERFACE cmfe_WorkGroup_Destroy + + !>Gets the group communicator for a work group + INTERFACE cmfe_WorkGroup_GroupCommunicatorGet + MODULE PROCEDURE cmfe_WorkGroup_GroupCommunicatorGetNumber + MODULE PROCEDURE cmfe_WorkGroup_GroupCommunicatorGetObj + END INTERFACE cmfe_WorkGroup_GroupCommunicatorGet + + !>Returns the label of a work group. + INTERFACE cmfe_WorkGroup_LabelGet + MODULE PROCEDURE cmfe_WorkGroup_LabelGetCNumber + MODULE PROCEDURE cmfe_WorkGroup_LabelGetCObj + MODULE PROCEDURE cmfe_WorkGroup_LabelGetVSNumber + MODULE PROCEDURE cmfe_WorkGroup_LabelGetVSObj + END INTERFACE cmfe_WorkGroup_LabelGet + + !>Sets/changes the label of a work group. + INTERFACE cmfe_WorkGroup_LabelSet + MODULE PROCEDURE cmfe_WorkGroup_LabelSetCNumber + MODULE PROCEDURE cmfe_WorkGroup_LabelSetCObj + MODULE PROCEDURE cmfe_WorkGroup_LabelSetVSNumber + MODULE PROCEDURE cmfe_WorkGroup_LabelSetVSObj + END INTERFACE cmfe_WorkGroup_LabelSet + + !>Gets the group node number in a work group + INTERFACE cmfe_WorkGroup_GroupNodeNumberGet + MODULE PROCEDURE cmfe_WorkGroup_GroupNodeNumberGetNumber + MODULE PROCEDURE cmfe_WorkGroup_GroupNodeNumberGetObj + END INTERFACE cmfe_WorkGroup_GroupNodeNumberGet + + !>Gets the number of group nodes in a work group + INTERFACE cmfe_WorkGroup_NumberOfGroupNodesGet + MODULE PROCEDURE cmfe_WorkGroup_NumberOfGroupNodesGetNumber + MODULE PROCEDURE cmfe_WorkGroup_NumberOfGroupNodesGetObj + END INTERFACE cmfe_WorkGroup_NumberOfGroupNodesGet + + !>Sets/changes the number of group nodes in a work group + INTERFACE cmfe_WorkGroup_NumberOfGroupNodesSet + MODULE PROCEDURE cmfe_WorkGroup_NumberOfGroupNodesSetNumber + MODULE PROCEDURE cmfe_WorkGroup_NumberOfGroupNodesSetObj + END INTERFACE cmfe_WorkGroup_NumberOfGroupNodesSet + + PUBLIC cmfe_ComputationEnvironment_NumberOfWorldNodesGet - !Module variables + PUBLIC cmfe_ComputationEnvironment_WorldCommunicatorGet + + PUBLIC cmfe_ComputationEnvironment_WorldNodeNumberGet - !Interfaces + PUBLIC cmfe_ComputationEnvironment_WorldWorkGroupGet - !>Output the analytic error analysis for a field compared to the analytic values parameter set. - INTERFACE cmfe_AnalyticAnalysis_Output - MODULE PROCEDURE cmfe_AnalyticAnalysis_OutputNumber - MODULE PROCEDURE cmfe_AnalyticAnalysis_OutputObj - END INTERFACE + PUBLIC cmfe_WorkGroup_CreateStart - !>Get the absolute error of the node. - INTERFACE cmfe_AnalyticAnalysis_AbsoluteErrorGetNode - MODULE PROCEDURE cmfe_AnalyticAnalysis_AbsoluteErrorGetNodeNumber - MODULE PROCEDURE cmfe_AnalyticAnalysis_AbsoluteErrorGetNodeObj - END INTERFACE cmfe_AnalyticAnalysis_AbsoluteErrorGetNode - - !>Get the percentage error of the node. - INTERFACE cmfe_AnalyticAnalysis_PercentageErrorGetNode - MODULE PROCEDURE cmfe_AnalyticAnalysis_PercentageErrorGetNodeNumber - MODULE PROCEDURE cmfe_AnalyticAnalysis_PercentageErrorGetNodeObj - END INTERFACE cmfe_AnalyticAnalysis_PercentageErrorGetNode - - !>Get the relative error of the node. - INTERFACE cmfe_AnalyticAnalysis_RelativeErrorGetNode - MODULE PROCEDURE cmfe_AnalyticAnalysis_RelativeErrorGetNodeNumber - MODULE PROCEDURE cmfe_AnalyticAnalysis_RelativeErrorGetNodeObj - END INTERFACE cmfe_AnalyticAnalysis_RelativeErrorGetNode - - !>Get the absolute error of the element. - INTERFACE cmfe_AnalyticAnalysis_AbsoluteErrorGetElement - MODULE PROCEDURE cmfe_AnalyticAnalysis_AbsoluteErrorGetElementNumber - MODULE PROCEDURE cmfe_AnalyticAnalysis_AbsoluteErrorGetElementObj - END INTERFACE cmfe_AnalyticAnalysis_AbsoluteErrorGetElement - - !>Get the percentage error of the element. - INTERFACE cmfe_AnalyticAnalysis_PercentageErrorGetElement - MODULE PROCEDURE cmfe_AnalyticAnalysis_PercentageErrorGetElementNumber - MODULE PROCEDURE cmfe_AnalyticAnalysis_PercentageErrorGetElementObj - END INTERFACE cmfe_AnalyticAnalysis_PercentageErrorGetElement - - !>Get the relative error of the element. - INTERFACE cmfe_AnalyticAnalysis_RelativeErrorGetElement - MODULE PROCEDURE cmfe_AnalyticAnalysis_RelativeErrorGetElementNumber - MODULE PROCEDURE cmfe_AnalyticAnalysis_RelativeErrorGetElementObj - END INTERFACE cmfe_AnalyticAnalysis_RelativeErrorGetElement - - !>Get the absolute error of the constant. - INTERFACE cmfe_AnalyticAnalysis_AbsoluteErrorGetConstant - MODULE PROCEDURE cmfe_AnalyticAnalysis_AbsoluteErrorGetConstantNumber - MODULE PROCEDURE cmfe_AnalyticAnalysis_AbsoluteErrorGetConstantObj - END INTERFACE cmfe_AnalyticAnalysis_AbsoluteErrorGetConstant - - !>Get the percentage error of the constant. - INTERFACE cmfe_AnalyticAnalysis_PercentageErrorGetConstant - MODULE PROCEDURE cmfe_AnalyticAnalysis_PercentageErrorGetConstantNumber - MODULE PROCEDURE cmfe_AnalyticAnalysis_PercentageErrorGetConstantObj - END INTERFACE cmfe_AnalyticAnalysis_PercentageErrorGetConstant - - !>Get the relative error of the constant. - INTERFACE cmfe_AnalyticAnalysis_RelativeErrorGetConstant - MODULE PROCEDURE cmfe_AnalyticAnalysis_RelativeErrorGetConstantNumber - MODULE PROCEDURE cmfe_AnalyticAnalysis_RelativeErrorGetConstantObj - END INTERFACE cmfe_AnalyticAnalysis_RelativeErrorGetConstant - - !>Get the RMS error of nodes. - INTERFACE cmfe_AnalyticAnalysis_RMSErrorGetNode - MODULE PROCEDURE cmfe_AnalyticAnalysis_RMSErrorGetNodeNumber - MODULE PROCEDURE cmfe_AnalyticAnalysis_RMSErrorGetNodeObj - END INTERFACE cmfe_AnalyticAnalysis_RMSErrorGetNode - - !>Get the RMS error of elements. - INTERFACE cmfe_AnalyticAnalysis_RMSErrorGetElement - MODULE PROCEDURE cmfe_AnalyticAnalysis_RMSErrorGetElementNumber - MODULE PROCEDURE cmfe_AnalyticAnalysis_RMSErrorGetElementObj - END INTERFACE cmfe_AnalyticAnalysis_RMSErrorGetElement - - !>Get integral of numerical values. - INTERFACE cmfe_AnalyticAnalysis_IntegralNumericalValueGet - MODULE PROCEDURE cmfe_AnalyticAnalysis_IntegralNumericalValueGetNumber - MODULE PROCEDURE cmfe_AnalyticAnalysis_IntegralNumericalValueGetObj - END INTERFACE cmfe_AnalyticAnalysis_IntegralNumericalValueGet - - !>Get integral of analytical values. - INTERFACE cmfe_AnalyticAnalysis_IntegralAnalyticValueGet - MODULE PROCEDURE cmfe_AnalyticAnalysis_IntegralAnalyticValueGetNumber - MODULE PROCEDURE cmfe_AnalyticAnalysis_IntegralAnalyticValueGetObj - END INTERFACE cmfe_AnalyticAnalysis_IntegralAnalyticValueGet - - !>Get integral of percentage errors. - INTERFACE cmfe_AnalyticAnalysis_IntegralPercentageErrorGet - MODULE PROCEDURE cmfe_AnalyticAnalysis_IntegralPercentageErrorGetNumber - MODULE PROCEDURE cmfe_AnalyticAnalysis_IntegralPercentageErrorGetObj - END INTERFACE cmfe_AnalyticAnalysis_IntegralPercentageErrorGet - - !>Get integral of absolute errors. - INTERFACE cmfe_AnalyticAnalysis_IntegralAbsoluteErrorGet - MODULE PROCEDURE cmfe_AnalyticAnalysis_IntegralAbsoluteErrorGetNumber - MODULE PROCEDURE cmfe_AnalyticAnalysis_IntegralAbsoluteErrorGetObj - END INTERFACE cmfe_AnalyticAnalysis_IntegralAbsoluteErrorGet - - !>Get integral of relative errors. - INTERFACE cmfe_AnalyticAnalysis_IntegralRelativeErrorGet - MODULE PROCEDURE cmfe_AnalyticAnalysis_IntegralRelativeErrorGetNumber - MODULE PROCEDURE cmfe_AnalyticAnalysis_IntegralRelativeErrorGetObj - END INTERFACE cmfe_AnalyticAnalysis_IntegralRelativeErrorGet - - !>Get integral of NID numerical errors. - INTERFACE cmfe_AnalyticAnalysis_IntegralNIDNumericalValueGet - MODULE PROCEDURE cmfe_AnalyticAnalysis_IntegralNIDNumericalValueGetNumber - MODULE PROCEDURE cmfe_AnalyticAnalysis_IntegralNIDNumericalValueGetObj - END INTERFACE cmfe_AnalyticAnalysis_IntegralNIDNumericalValueGet - - !>Get integral of NID errors. - INTERFACE cmfe_AnalyticAnalysis_IntegralNIDErrorGet - MODULE PROCEDURE cmfe_AnalyticAnalysis_IntegralNIDErrorGetNumber - MODULE PROCEDURE cmfe_AnalyticAnalysis_IntegralNIDErrorGetObj - END INTERFACE cmfe_AnalyticAnalysis_IntegralNIDErrorGet - - PUBLIC cmfe_AnalyticAnalysis_Output - - PUBLIC cmfe_AnalyticAnalysis_AbsoluteErrorGetNode,cmfe_AnalyticAnalysis_PercentageErrorGetNode, & - & cmfe_AnalyticAnalysis_RelativeErrorGetNode - - PUBLIC cmfe_AnalyticAnalysis_AbsoluteErrorGetElement,cmfe_AnalyticAnalysis_PercentageErrorGetElement, & - & cmfe_AnalyticAnalysis_RelativeErrorGetElement - - PUBLIC cmfe_AnalyticAnalysis_AbsoluteErrorGetConstant,cmfe_AnalyticAnalysis_PercentageErrorGetConstant, & - & cmfe_AnalyticAnalysis_RelativeErrorGetConstant - - PUBLIC cmfe_AnalyticAnalysis_RMSErrorGetNode,cmfe_AnalyticAnalysis_RMSErrorGetElement - - PUBLIC cmfe_AnalyticAnalysis_IntegralNumericalValueGet,cmfe_AnalyticAnalysis_IntegralAnalyticValueGet, & - & cmfe_AnalyticAnalysis_IntegralPercentageErrorGet,cmfe_AnalyticAnalysis_IntegralAbsoluteErrorGet, & - & cmfe_AnalyticAnalysis_IntegralRelativeErrorGet,cmfe_AnalyticAnalysis_IntegralNIDNumericalValueGet, & - & cmfe_AnalyticAnalysis_IntegralNIDErrorGet + PUBLIC cmfe_WorkGroup_CreateFinish -!!================================================================================================================================== -!! -!! BaseRoutines -!! -!!================================================================================================================================== + PUBLIC cmfe_WorkGroup_Destroy - !Module parameters + PUBLIC cmfe_WorkGroup_GroupCommunicatorGet - !> \addtogroup OpenCMISS_DiagnosticAndTimingConstants OpenCMISS::Iron::DiagnosticAndTiming::Constants - !> \brief Diagnostic and Timing constants. - !>@{ - !> \addtogroup OpenCMISS_DiagnosticTypes OpenCMISS::Iron::DiagnosticAndTiming::DiagnosticTypes - !> \brief Diganostic constants. - !> \see OpenCMISS::Iron::DiagnosticTypes,OpenCMISS - !>@{ - INTEGER(INTG), PARAMETER :: CMFE_ALL_DIAG_TYPE = ALL_DIAG_TYPE !@} - !> \addtogroup OpenCMISS_TimingTypes OpenCMISS::Iron::DiagnosticAndTiming::TimingTypes - !> \brief Timing constants. - !> \see OpenCMISS::Iron::TimingTypes,OpenCMISS - !>@{ - INTEGER(INTG), PARAMETER :: CMFE_ALL_TIMING_TYPE = ALL_TIMING_TYPE !@} - !>@} + PUBLIC cmfe_WorkGroup_GroupNodeNumberGet - !Module types + PUBLIC cmfe_WorkGroup_LabelGet,cmfe_WorkGroup_LabelSet - !Module variables + PUBLIC cmfe_WorkGroup_NumberOfGroupNodesGet,cmfe_WorkGroup_NumberOfGroupNodesSet + +!================================================================================================================================== +! +! ContextRoutines +! +!================================================================================================================================== - !Interfaces + !Module parameters - PUBLIC CMFE_ALL_DIAG_TYPE,CMFE_IN_DIAG_TYPE,CMFE_FROM_DIAG_TYPE + !Module types - PUBLIC CMFE_ALL_TIMING_TYPE,CMFE_IN_TIMING_TYPE,CMFE_FROM_TIMING_TYPE + !Module variables - PUBLIC cmfe_DiagnosticsSetOff,cmfe_DiagnosticsSetOn + !Interfaces - PUBLIC cmfe_OutputSetOff,cmfe_OutputSetOn + !>Gets the computation environment for an OpenCMISS context. + INTERFACE cmfe_Context_ComputationEnvironmentGet + MODULE PROCEDURE cmfe_Context_ComputationEnvironmentGetNumber + MODULE PROCEDURE cmfe_Context_ComputationEnvironmentGetObj + END INTERFACE cmfe_Context_ComputationEnvironmentGet + + !>Gets the random seeds for an OpenCMISS context. + INTERFACE cmfe_Context_RandomSeedsGet + MODULE PROCEDURE cmfe_Context_RandomSeedsGetNumber0 + MODULE PROCEDURE cmfe_Context_RandomSeedsGetNumber1 + MODULE PROCEDURE cmfe_Context_RandomSeedsGetObj0 + MODULE PROCEDURE cmfe_Context_RandomSeedsGetObj1 + END INTERFACE cmfe_Context_RandomSeedsGet + + !>Gets the size of the random seeds for an OpenCMISS context. + INTERFACE cmfe_Context_RandomSeedsSizeGet + MODULE PROCEDURE cmfe_Context_RandomSeedsSizeGetNumber + MODULE PROCEDURE cmfe_Context_RandomSeedsSizeGetObj + END INTERFACE cmfe_Context_RandomSeedsSizeGet + + !>Sets the random seeds for an OpenCMISS context. + INTERFACE cmfe_Context_RandomSeedsSet + MODULE PROCEDURE cmfe_Context_RandomSeedsSetNumber0 + MODULE PROCEDURE cmfe_Context_RandomSeedsSetNumber1 + MODULE PROCEDURE cmfe_Context_RandomSeedsSetObj0 + MODULE PROCEDURE cmfe_Context_RandomSeedsSetObj1 + END INTERFACE cmfe_Context_RandomSeedsSet + + !>Gets the world region for an OpenCMISS context. + INTERFACE cmfe_Context_WorldRegionGet + MODULE PROCEDURE cmfe_Context_WorldRegionGetNumber + MODULE PROCEDURE cmfe_Context_WorldRegionGetObj + END INTERFACE cmfe_Context_WorldRegionGet + + PUBLIC cmfe_Context_ComputationEnvironmentGet - PUBLIC cmfe_TimingSetOff,cmfe_TimingSetOn,cmfe_TimingSummaryOutput + PUBLIC cmfe_Context_RandomSeedsGet,cmfe_Context_RandomSeedsSizeGet,cmfe_Context_RandomSeedsSet + + PUBLIC cmfe_Context_UserNumberGet -!!================================================================================================================================== -!! -!! BASIS_ROUTINES -!! -!!================================================================================================================================== + PUBLIC cmfe_Context_WorldRegionGet + +!================================================================================================================================== +! +! Constants +! +!================================================================================================================================== + + !Module parameters + + !> \addtogroup OpenCMISS_Constants OpenCMISS::Iron::Constants + !> \brief OpeCMISS constants. + !>@{ + !> \addtogroup OpenCMISS_DataTypeConstants OpenCMISS::Iron::Constants::DataTypeConstants + !> \brief Data type constants for base data types + !> \see OpenCMISS_Constants,OpenCMISS + !>@{ + INTEGER(INTG), PARAMETER :: CMFE_INTEGER_TYPE = INTEGER_TYPE !@} + !> \addtogroup OpenCMISS_GlobalDerivativeConstants OpenCMISS::Iron::Constants::GlobalDerivativeConstants + !> \brief Global derivative constant identifiers + !> \see OpenCMISS_Constants,OpenCMISS + !>@{ + INTEGER(INTG), PARAMETER :: CMFE_NO_GLOBAL_DERIV = NO_GLOBAL_DERIV !@} + !> \addtogroup OpenCMISS_PartialDerivativeConstants OpenCMISS::Iron::Constants::PartialDerivativeConstants + !> \brief Partial derivative constant identifiers + !> \see OpenCMISS_Constants,OpenCMISS + !>@{ + INTEGER(INTG), PARAMETER :: CMFE_NO_PARTIAL_DERIV=NO_PART_DERIV !@} + !> \addtogroup OpenCMISS_ElementNormalXiDirections OpenCMISS::Iron::Constants::ElementNormalXiDirections + !> \brief Xi directions normal to element faces and lines. + !> \see OpenCMISS_CONSTANTS,OpenCMISS + !>@{ + INTEGER(INTG), PARAMETER :: CMFE_ELEMENT_NORMAL_MINUS_XI1 = ELEMENT_NORMAL_MINUS_XI1 !@} + !>@} + + !Module types + + !Module variables + + !Interfaces + + PUBLIC CMFE_INTEGER_TYPE,CMFE_SHORT_INTEGER_TYPE,CMFE_LONG_INTEGER_TYPE,CMFE_SINGLE_REAL_TYPE,CMFE_DOUBLE_REAL_TYPE, & + & CMFE_QUADRAUPLE_REAL_TYPE,CMFE_CHARACTER_TYPE,CMFE_LOGICAL_TYPE,CMFE_SINGLE_COMPLEX_TYPE,CMFE_DOUBLE_COMPLEX_TYPE, & + & CMFE_QUADRUPLE_COMPLEX_TYPE + + PUBLIC CMFE_NO_GLOBAL_DERIV,CMFE_GLOBAL_DERIV_S1,CMFE_GLOBAL_DERIV_S2,CMFE_GLOBAL_DERIV_S1_S2, & + & CMFE_GLOBAL_DERIV_S3,CMFE_GLOBAL_DERIV_S1_S3,CMFE_GLOBAL_DERIV_S2_S3,CMFE_GLOBAL_DERIV_S1_S2_S3 + + PUBLIC CMFE_NO_PARTIAL_DERIV,CMFE_PARTIAL_DERIV_S1,CMFE_PARTIAL_DERIV_S1_S1,CMFE_PARTIAL_DERIV_S2,CMFE_PARTIAL_DERIV_S2_S2, & + & CMFE_PARTIAL_DERIV_S1_S2,CMFE_PARTIAL_DERIV_S3,CMFE_PARTIAL_DERIV_S3_S3,CMFE_PARTIAL_DERIV_S1_S3,CMFE_PARTIAL_DERIV_S2_S3, & + & CMFE_PARTIAL_DERIV_S1_S2_S3,CMFE_PARTIAL_DERIV_S4,CMFE_PARTIAL_DERIV_S4_S4,CMFE_PARTIAL_DERIV_S1_S4, & + & CMFE_PARTIAL_DERIV_S2_S4,CMFE_PARTIAL_DERIV_S3_S4,CMFE_PARTIAL_DERIV_S1_S2_S4,CMFE_PARTIAL_DERIV_S1_S3_S4, & + & CMFE_PARTIAL_DERIV_S2_S3_S4,CMFE_PARTIAL_DERIV_S1_S4_S4,CMFE_PARTIAL_DERIV_S2_S4_S4,CMFE_PARTIAL_DERIV_S3_S4_S4, & + & CMFE_PARTIAL_DERIV_S4_S4_S4 + + PUBLIC CMFE_ELEMENT_NORMAL_MINUS_XI1,CMFE_ELEMENT_NORMAL_MINUS_XI2,CMFE_ELEMENT_NORMAL_MINUS_XI3,CMFE_ELEMENT_NORMAL_MINUS_XI4, & + & CMFE_ELEMENT_NORMAL_PLUS_XI1,CMFE_ELEMENT_NORMAL_PLUS_XI2,CMFE_ELEMENT_NORMAL_PLUS_XI3,CMFE_ELEMENT_NORMAL_PLUS_XI4 + +!================================================================================================================================== +! +! CONTROL_LOOP_ROUTINES +! +!================================================================================================================================== + + !Module parameters + + !> \addtogroup OpenCMISS_ControlLoopConstants OpenCMISS::Iron::ControlLoop::Constants + !> \brief Control loops constants. + !>@{ + !> \addtogroup OpenCMISS_ControlLoopIdentifiers OpenCMISS::Iron::ControlLoop::Identifiers + !> \brief The control loop identification parameters. + !> \see OpenCMISS::Iron::ControlLoop,OpenCMISS + !>@{ + INTEGER(INTG), PARAMETER :: CMFE_CONTROL_LOOP_NODE = CONTROL_LOOP_NODE !@} + !> \addtogroup OpenCMISS_ControlLoopOutputTypes OpenCMISS::Iron::ControlLoop::OutputTypes + !> \brief The control loop output types. + !> \see OpenCMISS::Iron::ControlLoop,OpenCMISS + !>@{ + INTEGER(INTG), PARAMETER :: CMFE_CONTROL_LOOP_NO_OUTPUT = CONTROL_LOOP_NO_OUTPUT !@} + !>@} + + !Module types + + !Module variables + + !Interfaces + + !>Returns the current time parameters for a time control loop. + INTERFACE cmfe_ControlLoop_CurrentTimesGet + MODULE PROCEDURE cmfe_ControlLoop_CurrentTimesGetNumber0 + MODULE PROCEDURE cmfe_ControlLoop_CurrentTimesGetNumber1 + MODULE PROCEDURE cmfe_ControlLoop_CurrentTimesGetObj + END INTERFACE cmfe_ControlLoop_CurrentTimesGet + + !>Destroy a control loop. + INTERFACE cmfe_ControlLoop_Destroy + MODULE PROCEDURE cmfe_ControlLoop_DestroyNumber0 + MODULE PROCEDURE cmfe_ControlLoop_DestroyNumber1 + MODULE PROCEDURE cmfe_ControlLoop_DestroyObj + END INTERFACE cmfe_ControlLoop_Destroy + + !>Returns the specified control loop as indexed by the control loop identifier from the control loop root. + INTERFACE cmfe_ControlLoop_ControlLoopGet + MODULE PROCEDURE cmfe_ControlLoop_ControlLoopGetNumber00 + MODULE PROCEDURE cmfe_ControlLoop_ControlLoopGetNumber10 + MODULE PROCEDURE cmfe_ControlLoop_ControlLoopGetNumber01 + MODULE PROCEDURE cmfe_ControlLoop_ControlLoopGetNumber11 + MODULE PROCEDURE cmfe_ControlLoop_ControlLoopGetObj0 + MODULE PROCEDURE cmfe_ControlLoop_ControlLoopGetObj1 + END INTERFACE cmfe_ControlLoop_ControlLoopGet + + !>Sets/changes the iteration parameters for a fixed control loop. \todo need a get metod + INTERFACE cmfe_ControlLoop_IterationsSet + MODULE PROCEDURE cmfe_ControlLoop_IterationsSetNumber0 + MODULE PROCEDURE cmfe_ControlLoop_IterationsSetNumber1 + MODULE PROCEDURE cmfe_ControlLoop_IterationsSetObj + END INTERFACE cmfe_ControlLoop_IterationsSet + + !>Returns the label of a control loop. + INTERFACE cmfe_ControlLoop_LabelGet + MODULE PROCEDURE cmfe_ControlLoop_LabelGetCNumber0 + MODULE PROCEDURE cmfe_ControlLoop_LabelGetCNumber1 + MODULE PROCEDURE cmfe_ControlLoop_LabelGetCObj + MODULE PROCEDURE cmfe_ControlLoop_LabelGetVSNumber0 + MODULE PROCEDURE cmfe_ControlLoop_LabelGetVSNumber1 + MODULE PROCEDURE cmfe_ControlLoop_LabelGetVSObj + END INTERFACE cmfe_ControlLoop_LabelGet + + !>Sets/changes the label of a control loop. + INTERFACE cmfe_ControlLoop_LabelSet + MODULE PROCEDURE cmfe_ControlLoop_LabelSetCNumber0 + MODULE PROCEDURE cmfe_ControlLoop_LabelSetCNumber1 + MODULE PROCEDURE cmfe_ControlLoop_LabelSetCObj + MODULE PROCEDURE cmfe_ControlLoop_LabelSetVSNumber0 + MODULE PROCEDURE cmfe_ControlLoop_LabelSetVSNumber1 + MODULE PROCEDURE cmfe_ControlLoop_LabelSetVSObj + END INTERFACE cmfe_ControlLoop_LabelSet + + !>Sets/changes the maximum iterations for a while control loop. \todo need a get method + INTERFACE cmfe_ControlLoop_MaximumIterationsSet + MODULE PROCEDURE cmfe_ControlLoop_MaximumIterationsSetNumber0 + MODULE PROCEDURE cmfe_ControlLoop_MaximumIterationsSetNumber1 + MODULE PROCEDURE cmfe_ControlLoop_MaximumIterationsSetObj + END INTERFACE cmfe_ControlLoop_MaximumIterationsSet + + !>Sets/changes the convergence tolerance for a while control loop. \todo need a get method + INTERFACE cmfe_ControlLoop_AbsoluteToleranceSet + MODULE PROCEDURE cmfe_ControlLoop_AbsoluteToleranceSetNumber0 + MODULE PROCEDURE cmfe_ControlLoop_AbsoluteToleranceSetNumber1 + MODULE PROCEDURE cmfe_ControlLoop_AbsoluteToleranceSetObj + END INTERFACE cmfe_ControlLoop_AbsoluteToleranceSet + + !>Returns the number of iterations for a time control loop. If the returned value is 0, that means that the number has not yet been computed. + INTERFACE cmfe_ControlLoop_NumberOfIterationsGet + MODULE PROCEDURE cmfe_ControlLoop_NumberOfIterationsGetNumber0 + MODULE PROCEDURE cmfe_ControlLoop_NumberOfIterationsGetNumber1 + MODULE PROCEDURE cmfe_ControlLoop_NumberOfIterationsGetObj + END INTERFACE cmfe_ControlLoop_NumberOfIterationsGet + + !>Sets/changes the number of iterations for a time control loop. If set to 0, it will be computed from time increment and start/stop time + INTERFACE cmfe_ControlLoop_NumberOfIterationsSet + MODULE PROCEDURE cmfe_ControlLoop_NumberOfIterationsSetNumber0 + MODULE PROCEDURE cmfe_ControlLoop_NumberOfIterationsSetNumber1 + MODULE PROCEDURE cmfe_ControlLoop_NumberOfIterationsSetObj + END INTERFACE cmfe_ControlLoop_NumberOfIterationsSet + + !>Returns the number of sub loops for a control loop. + INTERFACE cmfe_ControlLoop_NumberOfSubLoopsGet + MODULE PROCEDURE cmfe_ControlLoop_NumberOfSubLoopsGetNumber0 + MODULE PROCEDURE cmfe_ControlLoop_NumberOfSubLoopsGetNumber1 + MODULE PROCEDURE cmfe_ControlLoop_NumberOfSubLoopsGetObj + END INTERFACE cmfe_ControlLoop_NumberOfSubLoopsGet + + !>Sets/changes the number of sub loops for a control loop. \todo is this really a public method??? + INTERFACE cmfe_ControlLoop_NumberOfSubLoopsSet + MODULE PROCEDURE cmfe_ControlLoop_NumberOfSubLoopsSetNumber0 + MODULE PROCEDURE cmfe_ControlLoop_NumberOfSubLoopsSetNumber1 + MODULE PROCEDURE cmfe_ControlLoop_NumberOfSubLoopsSetObj + END INTERFACE cmfe_ControlLoop_NumberOfSubLoopsSet + + !>Sets/changes the output parameters for a time control loop. + INTERFACE cmfe_ControlLoop_TimeOutputSet + MODULE PROCEDURE cmfe_ControlLoop_TimeOutputSetNumber0 + MODULE PROCEDURE cmfe_ControlLoop_TimeOutputSetNumber1 + MODULE PROCEDURE cmfe_ControlLoop_TimeOutputSetObj + END INTERFACE cmfe_ControlLoop_TimeOutputSet + + !>Returns the output type for a control loop. + INTERFACE cmfe_ControlLoop_OutputTypeGet + MODULE PROCEDURE cmfe_ControlLoop_OutputTypeGetNumber0 + MODULE PROCEDURE cmfe_ControlLoop_OutputTypeGetNumber1 + MODULE PROCEDURE cmfe_ControlLoop_OutputTypeGetObj + END INTERFACE cmfe_ControlLoop_OutputTypeGet + + !>Sets/changes the output type for a control loop. + INTERFACE cmfe_ControlLoop_OutputTypeSet + MODULE PROCEDURE cmfe_ControlLoop_OutputTypeSetNumber0 + MODULE PROCEDURE cmfe_ControlLoop_OutputTypeSetNumber1 + MODULE PROCEDURE cmfe_ControlLoop_OutputTypeSetObj + END INTERFACE cmfe_ControlLoop_OutputTypeSet + + !>Sets/changes the input parameters for a time control loop. + INTERFACE cmfe_ControlLoop_TimeInputSet + MODULE PROCEDURE cmfe_ControlLoop_TimeInputSetNumber0 + MODULE PROCEDURE cmfe_ControlLoop_TimeInputSetNumber1 + MODULE PROCEDURE cmfe_ControlLoop_TimeInputSetObj + END INTERFACE cmfe_ControlLoop_TimeInputSet + + !>Returns the time parameters for a time control loop. + INTERFACE cmfe_ControlLoop_TimesGet + MODULE PROCEDURE cmfe_ControlLoop_TimesGetNumber0 + MODULE PROCEDURE cmfe_ControlLoop_TimesGetNumber1 + MODULE PROCEDURE cmfe_ControlLoop_TimesGetObj + END INTERFACE cmfe_ControlLoop_TimesGet + + !>Sets/Changes the time parameters for a time control loop. + INTERFACE cmfe_ControlLoop_TimesSet + MODULE PROCEDURE cmfe_ControlLoop_TimesSetNumber0 + MODULE PROCEDURE cmfe_ControlLoop_TimesSetNumber1 + MODULE PROCEDURE cmfe_ControlLoop_TimesSetObj + END INTERFACE cmfe_ControlLoop_TimesSet + + !>Sets/Changes the loop type for a control loop. \todo Is this really a public method? \todo need a get method + INTERFACE cmfe_ControlLoop_TypeSet + MODULE PROCEDURE cmfe_ControlLoop_TypeSetNumber0 + MODULE PROCEDURE cmfe_ControlLoop_TypeSetNumber1 + MODULE PROCEDURE cmfe_ControlLoop_TypeSetObj + END INTERFACE cmfe_ControlLoop_TypeSet + + PUBLIC CMFE_CONTROL_LOOP_NODE + + PUBLIC CMFE_CONTROL_LOOP_NO_OUTPUT,CMFE_CONTROL_LOOP_PROGRESS_OUTPUT,CMFE_CONTROL_LOOP_TIMING_OUTPUT + + PUBLIC cmfe_ControlLoop_CurrentTimesGet + + PUBLIC cmfe_ControlLoop_Destroy + + PUBLIC cmfe_ControlLoop_ControlLoopGet + + PUBLIC cmfe_ControlLoop_IterationsSet + + PUBLIC cmfe_ControlLoop_LabelGet,cmfe_ControlLoop_LabelSet + + PUBLIC cmfe_ControlLoop_MaximumIterationsSet + + PUBLIC cmfe_ControlLoop_AbsoluteToleranceSet + + PUBLIC cmfe_ControlLoop_NumberOfIterationsGet, cmfe_ControlLoop_NumberOfIterationsSet + + PUBLIC cmfe_ControlLoop_NumberOfSubLoopsGet,cmfe_ControlLoop_NumberOfSubLoopsSet - !Module parameters + PUBLIC cmfe_ControlLoop_OutputTypeGet,cmfe_ControlLoop_OutputTypeSet - !> \addtogroup OpenCMISS_BasisConstants OpenCMISS::Iron::Basis::Constants - !> \brief Basis function constants. - !>@{ - !> \addtogroup OpenCMISS_BasisTypes OpenCMISS::Iron::Basis::BasisTypes - !> \brief Basis definition type parameters. - !> \see OpenCMISS::Iron::BasisConstants,OpenCMISS - !>@{ - INTEGER(INTG), PARAMETER :: CMFE_BASIS_LAGRANGE_HERMITE_TP_TYPE = BASIS_LAGRANGE_HERMITE_TP_TYPE !@} - !> \addtogroup OpenCMISS_BasisInterpolationSpecifications OpenCMISS::Iron::Basis::InterpolationSpecifications - !> \brief Interpolation specification parameters - !> \see OpenCMISS::Iron::BasisConstants,OpenCMISS - !>@{ - INTEGER(INTG), PARAMETER :: CMFE_BASIS_LINEAR_LAGRANGE_INTERPOLATION = BASIS_LINEAR_LAGRANGE_INTERPOLATION !@} - !> \addtogroup OpenCMISS_BasisQuadratureSchemes OpenCMISS::Iron::Basis::QuadratureSchemes - !> \brief Quadrature scheme parameters - !> \see OpenCMISS::Iron::BasisConstants,OpenCMISS - !>@{ - INTEGER(INTG), PARAMETER :: CMFE_BASIS_DEFAULT_QUADRATURE_SCHEME = BASIS_DEFAULT_QUADRATURE_SCHEME !@} - !> \addtogroup OpenCMISS_BasisQuadratureTypes OpenCMISS::Iron::Basis::QuadratureTypes - !> \brief Basis quadrature type parameters. - !> \see OpenCMISS::Iron::BasisConstants,OpenCMISS - !>@{ - INTEGER(INTG), PARAMETER :: CMFE_BASIS_GAUSS_LEGENDRE_QUADRATURE = BASIS_GAUSS_LEGENDRE_QUADRATURE !@} - !> \addtogroup OpenCMISS_BasisXiCollapse OpenCMISS::Iron::Basis::XiCollapse - !> \brief Basis Xi collapse parameters. - !> \see OpenCMISS::Iron::Basis,OpenCMISS - !>@{ - INTEGER(INTG), PARAMETER :: CMFE_BASIS_XI_COLLAPSED = BASIS_XI_COLLAPSED !@} - !>@} - - !Module types - - !Module variables - - !Interfaces - - !>Returns the collapsed Xi flags for a basis. - INTERFACE cmfe_Basis_CollapsedXiGet - MODULE PROCEDURE cmfe_Basis_CollapsedXiGetNumber - MODULE PROCEDURE cmfe_Basis_CollapsedXiGetObj - END INTERFACE cmfe_Basis_CollapsedXiGet - - !>Sets/changes the collapsed Xi flags for a basis. - INTERFACE cmfe_Basis_CollapsedXiSet - MODULE PROCEDURE cmfe_Basis_CollapsedXiSetNumber - MODULE PROCEDURE cmfe_Basis_CollapsedXiSetObj - END INTERFACE cmfe_Basis_CollapsedXiSet - - !>Finishes the creation of a new basis. \see OpenCMISS::Iron::cmfe_Basis_CreateStart - INTERFACE cmfe_Basis_CreateFinish - MODULE PROCEDURE cmfe_Basis_CreateFinishNumber - MODULE PROCEDURE cmfe_Basis_CreateFinishObj - END INTERFACE cmfe_Basis_CreateFinish - - !>Starts the creation of a new basis. \see OpenCMISS::Iron::cmfe_Basis_CreateFinish - INTERFACE cmfe_Basis_CreateStart - MODULE PROCEDURE cmfe_Basis_CreateStartNumber - MODULE PROCEDURE cmfe_Basis_CreateStartObj - END INTERFACE cmfe_Basis_CreateStart - - !>Destroys a basis. - INTERFACE cmfe_Basis_Destroy - MODULE PROCEDURE cmfe_Basis_DestroyNumber - MODULE PROCEDURE cmfe_Basis_DestroyObj - END INTERFACE cmfe_Basis_Destroy - - !>Get the interpolation type in each Xi directions for a basis. - INTERFACE cmfe_Basis_InterpolationXiGet - MODULE PROCEDURE cmfe_Basis_InterpolationXiGetNumber - MODULE PROCEDURE cmfe_Basis_InterpolationXiGetObj - END INTERFACE cmfe_Basis_InterpolationXiGet - - !>Sets/changes the interpolation type in each Xi directions for a basis. - INTERFACE cmfe_Basis_InterpolationXiSet - MODULE PROCEDURE cmfe_Basis_InterpolationXiSetNumber - MODULE PROCEDURE cmfe_Basis_InterpolationXiSetObj - END INTERFACE cmfe_Basis_InterpolationXiSet - - !>Returns the number of local nodes in a basis. - INTERFACE cmfe_Basis_NumberOfLocalNodesGet - MODULE PROCEDURE cmfe_Basis_NumberOfLocalNodesGetNumber - MODULE PROCEDURE cmfe_Basis_NumberOfLocalNodesGetObj - END INTERFACE cmfe_Basis_NumberOfLocalNodesGet - - !>Returns the number of Xi directions in a basis. - INTERFACE cmfe_Basis_NumberOfXiGet - MODULE PROCEDURE cmfe_Basis_NumberOfXiGetNumber - MODULE PROCEDURE cmfe_Basis_NumberOfXiGetObj - END INTERFACE cmfe_Basis_NumberOfXiGet - - !>Sets/changes the number of Xi directions in a basis. - INTERFACE cmfe_Basis_NumberOfXiSet - MODULE PROCEDURE cmfe_Basis_NumberOfXiSetNumber - MODULE PROCEDURE cmfe_Basis_NumberOfXiSetObj - END INTERFACE cmfe_Basis_NumberOfXiSet - - !>Returns the number of Gauss points in each Xi direction on a basis quadrature. - INTERFACE cmfe_Basis_QuadratureNumberOfGaussXiGet - MODULE PROCEDURE cmfe_Basis_QuadratureNumberOfGaussXiGetNumber - MODULE PROCEDURE cmfe_Basis_QuadratureNumberOfGaussXiGetObj - END INTERFACE cmfe_Basis_QuadratureNumberOfGaussXiGet - - !>Sets/changes the number of Gauss points in each Xi direction on a basis quadrature. - INTERFACE cmfe_Basis_QuadratureNumberOfGaussXiSet - MODULE PROCEDURE cmfe_Basis_QuadratureNumberOfGaussXiSetNumber - MODULE PROCEDURE cmfe_Basis_QuadratureNumberOfGaussXiSetObj - END INTERFACE cmfe_Basis_QuadratureNumberOfGaussXiSet - - !>Returns the xi positions of Gauss points on a basis quadrature. - INTERFACE cmfe_Basis_QuadratureGaussXiGet - MODULE PROCEDURE cmfe_Basis_QuadratureSingleGaussXiGetNumber - MODULE PROCEDURE cmfe_Basis_QuadratureSingleGaussXiGetObj - MODULE PROCEDURE cmfe_Basis_QuadratureMultipleGaussXiGetNumber - MODULE PROCEDURE cmfe_Basis_QuadratureMultipleGaussXiGetObj - END INTERFACE cmfe_Basis_QuadratureGaussXiGet - - !>Returns the order of quadrature for a basis quadrature. - INTERFACE cmfe_Basis_QuadratureOrderGet - MODULE PROCEDURE cmfe_Basis_QuadratureOrderGetNumber - MODULE PROCEDURE cmfe_Basis_QuadratureOrderGetObj - END INTERFACE cmfe_Basis_QuadratureOrderGet - - !>Sets/changes the order of quadrature for a basis quadrature. - INTERFACE cmfe_Basis_QuadratureOrderSet - MODULE PROCEDURE cmfe_Basis_QuadratureOrderSetNumber - MODULE PROCEDURE cmfe_Basis_QuadratureOrderSetObj - END INTERFACE cmfe_Basis_QuadratureOrderSet - - !>Returns the quadrature type for a basis quadrature. - INTERFACE cmfe_Basis_QuadratureTypeGet - MODULE PROCEDURE cmfe_Basis_QuadratureTypeGetNumber - MODULE PROCEDURE cmfe_Basis_QuadratureTypeGetObj - END INTERFACE cmfe_Basis_QuadratureTypeGet - - !>Sets/changes the quadrature type for a basis quadrature. - INTERFACE cmfe_Basis_QuadratureTypeSet - MODULE PROCEDURE cmfe_Basis_QuadratureTypeSetNumber - MODULE PROCEDURE cmfe_Basis_QuadratureTypeSetObj - END INTERFACE cmfe_Basis_QuadratureTypeSet - - !>Sets/changes the local face gauss evaluatoin flag for a basis quadrature. - INTERFACE cmfe_Basis_QuadratureLocalFaceGaussEvaluateSet - MODULE PROCEDURE cmfe_Basis_QuadratureLocalFaceGaussEvaluateSetNumber - MODULE PROCEDURE cmfe_Basis_QuadratureLocalFaceGaussEvaluateSetObj - END INTERFACE cmfe_Basis_QuadratureLocalFaceGaussEvaluateSet - - !>Returns the type of a basis. - INTERFACE cmfe_Basis_TypeGet - MODULE PROCEDURE cmfe_Basis_TypeGetNumber - MODULE PROCEDURE cmfe_Basis_TypeGetObj - END INTERFACE cmfe_Basis_TypeGet - - !>Sets/changes the type of a basis. - INTERFACE cmfe_Basis_TypeSet - MODULE PROCEDURE cmfe_Basis_TypeSetNumber - MODULE PROCEDURE cmfe_Basis_TypeSetObj - END INTERFACE cmfe_Basis_TypeSet - - PUBLIC CMFE_BASIS_LAGRANGE_HERMITE_TP_TYPE,CMFE_BASIS_SIMPLEX_TYPE,CMFE_BASIS_SERENDIPITY_TYPE,CMFE_BASIS_AUXILLIARY_TYPE, & - & CMFE_BASIS_B_SPLINE_TP_TYPE,CMFE_BASIS_FOURIER_LAGRANGE_HERMITE_TP_TYPE,CMFE_BASIS_EXTENDED_LAGRANGE_TP_TYPE - - PUBLIC CMFE_BASIS_LINEAR_LAGRANGE_INTERPOLATION,CMFE_BASIS_QUADRATIC_LAGRANGE_INTERPOLATION, & - & CMFE_BASIS_CUBIC_LAGRANGE_INTERPOLATION, & - & CMFE_BASIS_CUBIC_HERMITE_INTERPOLATION,CMFE_BASIS_QUADRATIC1_HERMITE_INTERPOLATION, & - & CMFE_BASIS_QUADRATIC2_HERMITE_INTERPOLATION, & - & CMFE_BASIS_LINEAR_SIMPLEX_INTERPOLATION,CMFE_BASIS_QUADRATIC_SIMPLEX_INTERPOLATION,CMFE_BASIS_CUBIC_SIMPLEX_INTERPOLATION - - PUBLIC CMFE_BASIS_DEFAULT_QUADRATURE_SCHEME,CMFE_BASIS_LOW_QUADRATURE_SCHEME,CMFE_BASIS_MID_QUADRATURE_SCHEME, & - & CMFE_BASIS_HIGH_QUADRATURE_SCHEME - - PUBLIC CMFE_BASIS_GAUSS_LEGENDRE_QUADRATURE,CMFE_BASIS_GAUSS_LAGUERRE_QUADRATURE,CMFE_BASIS_GUASS_HERMITE_QUADRATURE, & - & CMFE_BASIS_ADAPTIVE_GAUSS_LEGENDRE_QUADRATURE,CMFE_BASIS_GAUSS_SIMPLEX_QUADRATURE - - PUBLIC CMFE_BASIS_XI_COLLAPSED,CMFE_BASIS_COLLAPSED_AT_XI0,CMFE_BASIS_COLLAPSED_AT_XI1,CMFE_BASIS_NOT_COLLAPSED - - PUBLIC cmfe_Basis_CollapsedXiGet,cmfe_Basis_CollapsedXiSet + PUBLIC cmfe_ControlLoop_TimeOutputSet,cmfe_ControlLoop_TimeInputSet - PUBLIC cmfe_Basis_CreateFinish,cmfe_Basis_CreateStart,cmfe_Basis_Destroy - - PUBLIC cmfe_Basis_InterpolationXiGet,cmfe_Basis_InterpolationXiSet + PUBLIC cmfe_ControlLoop_TimesGet,cmfe_ControlLoop_TimesSet - PUBLIC cmfe_Basis_NumberOfLocalNodesGet + PUBLIC cmfe_ControlLoop_TypeSet - PUBLIC cmfe_Basis_NumberOfXiGet,cmfe_Basis_NumberOfXiSet - PUBLIC cmfe_Basis_QuadratureNumberOfGaussXiGet,cmfe_Basis_QuadratureNumberOfGaussXiSet +!================================================================================================================================== +! +! COORDINATE_ROUTINES +! +!================================================================================================================================== + + !Module parameters + + !> \addtogroup OpenCMISS_CoordinateConstants OpenCMISS::Iron::Coordinate::Constants + !> \brief Coordinate constants. + !>@{ + !> \addtogroup OpenCMISS_CoordinateSystemTypes OpenCMISS::Iron::Coordinate::SystemTypes + !> \brief Coordinate system type parameters. + !> \see OpenCMISS::Iron::Coordinate,OpenCMISS + !>@{ + INTEGER(INTG), PARAMETER :: CMFE_COORDINATE_RECTANGULAR_CARTESIAN_TYPE = COORDINATE_RECTANGULAR_CARTESIAN_TYPE !@} + !> \addtogroup OpenCMISS_CoordinateRadialInterpolations OpenCMISS::Iron::Coordinate::RadialInterpolations + !> \brief The type of radial interpolation for polar coordinate systems + !> \see OpenCMISS::Iron::Coordinate,OpenCMISS + !>@{ + INTEGER(INTG), PARAMETER :: CMFE_COORDINATE_NO_RADIAL_INTERPOLATION_TYPE = COORDINATE_NO_RADIAL_INTERPOLATION_TYPE !@} + !>@} + + !Module types + + !Module variables + + !Interfaces + + !>Finishes the creation of a coordinate system. \see OpenCMISS::Iron::cmfe_CoordinateSystem_CreateStart + INTERFACE cmfe_CoordinateSystem_CreateFinish + MODULE PROCEDURE cmfe_CoordinateSystem_CreateFinishNumber + MODULE PROCEDURE cmfe_CoordinateSystem_CreateFinishObj + END INTERFACE cmfe_CoordinateSystem_CreateFinish + + !>Starts the creation of a coordinate system. \see OpenCMISS::Iron::cmfe_CoordinateSystem_CreateFinish + INTERFACE cmfe_CoordinateSystem_CreateStart + MODULE PROCEDURE cmfe_CoordinateSystem_CreateStartNumber + MODULE PROCEDURE cmfe_CoordinateSystem_CreateStartObj + END INTERFACE cmfe_CoordinateSystem_CreateStart + + !>Destorys a coordinate system. + INTERFACE cmfe_CoordinateSystem_Destroy + MODULE PROCEDURE cmfe_CoordinateSystem_DestroyNumber + MODULE PROCEDURE cmfe_CoordinateSystem_DestroyObj + END INTERFACE cmfe_CoordinateSystem_Destroy + + !>Returns the coordinate system dimension. \todo user number method \todo fix pointers + INTERFACE cmfe_CoordinateSystem_DimensionGet + MODULE PROCEDURE cmfe_CoordinateSystem_DimensionGetNumber + MODULE PROCEDURE cmfe_CoordinateSystem_DimensionGetObj + END INTERFACE cmfe_CoordinateSystem_DimensionGet + + !>Sets/changes the coordinate system dimension. \todo fix pointers + INTERFACE cmfe_CoordinateSystem_DimensionSet + MODULE PROCEDURE cmfe_CoordinateSystem_DimensionSetNumber + MODULE PROCEDURE cmfe_CoordinateSystem_DimensionSetObj + END INTERFACE cmfe_CoordinateSystem_DimensionSet + + !>Returns the coordinate system focus. \todo user number method \todo fix pointers + INTERFACE cmfe_CoordinateSystem_FocusGet + MODULE PROCEDURE cmfe_CoordinateSystem_FocusGetNumber + MODULE PROCEDURE cmfe_CoordinateSystem_FocusGetObj + END INTERFACE cmfe_CoordinateSystem_FocusGet + + !>Sets/changes the coordinate system focus. \todo user number method \todo fix pointers + INTERFACE cmfe_CoordinateSystem_FocusSet + MODULE PROCEDURE cmfe_CoordinateSystem_FocusSetNumber + MODULE PROCEDURE cmfe_CoordinateSystem_FocusSetObj + END INTERFACE cmfe_CoordinateSystem_FocusSet + + !>Returns the coordinate system radial interpolation type. \todo user number method \todo fix pointers + INTERFACE cmfe_CoordinateSystem_RadialInterpolationGet + MODULE PROCEDURE cmfe_CoordinateSystem_RadialInterpolationGetNumber + MODULE PROCEDURE cmfe_CoordinateSystem_RadialInterpolationGetObj + END INTERFACE cmfe_CoordinateSystem_RadialInterpolationGet + + !>Sets/changes the coordinate system radial interpolation type. \todo user number method \todo fix pointers + INTERFACE cmfe_CoordinateSystem_RadialInterpolationSet + MODULE PROCEDURE cmfe_CoordinateSystem_RadialInterpolationSetNumber + MODULE PROCEDURE cmfe_CoordinateSystem_RadialInterpolationSetObj + END INTERFACE cmfe_CoordinateSystem_RadialInterpolationSet + + !>Returns the coordinate system type. \todo user number method \todo fix pointers + INTERFACE cmfe_CoordinateSystem_TypeGet + MODULE PROCEDURE cmfe_CoordinateSystem_TypeGetNumber + MODULE PROCEDURE cmfe_CoordinateSystem_TypeGetObj + END INTERFACE cmfe_CoordinateSystem_TypeGet + + !>Sets/changes the coordinate system type. \todo user number method \todo fix pointers + INTERFACE cmfe_CoordinateSystem_TypeSet + MODULE PROCEDURE cmfe_CoordinateSystem_TypeSetNumber + MODULE PROCEDURE cmfe_CoordinateSystem_TypeSetObj + END INTERFACE cmfe_CoordinateSystem_TypeSet + + !>Returns the coordinate system orign. + INTERFACE cmfe_CoordinateSystem_OriginGet + MODULE PROCEDURE cmfe_CoordinateSystem_OriginGetNumber + MODULE PROCEDURE cmfe_CoordinateSystem_OriginGetObj + END INTERFACE cmfe_CoordinateSystem_OriginGet + + !>Sets/changes the coordinate system orign. + INTERFACE cmfe_CoordinateSystem_OriginSet + MODULE PROCEDURE cmfe_CoordinateSystem_OriginSetNumber + MODULE PROCEDURE cmfe_CoordinateSystem_OriginSetObj + END INTERFACE cmfe_CoordinateSystem_OriginSet + + !>Returns the coordinate system orientation. + INTERFACE cmfe_CoordinateSystem_OrientationGet + MODULE PROCEDURE cmfe_CoordinateSystem_OrientationGetNumber + MODULE PROCEDURE cmfe_CoordinateSystem_OrientationGetObj + END INTERFACE cmfe_CoordinateSystem_OrientationGet + + !>Sets/changes the coordinate system orientation. + INTERFACE cmfe_CoordinateSystem_OrientationSet + MODULE PROCEDURE cmfe_CoordinateSystem_OrientationSetNumber + MODULE PROCEDURE cmfe_CoordinateSystem_OrientationSetObj + END INTERFACE cmfe_CoordinateSystem_OrientationSet + + PUBLIC CMFE_COORDINATE_RECTANGULAR_CARTESIAN_TYPE,CMFE_COORDINATE_CYLINDRICAL_POLAR_TYPE, & + & CMFE_COORDINATE_SPHERICAL_POLAR_TYPE, & + & CMFE_COORDINATE_PROLATE_SPHEROIDAL_TYPE,CMFE_COORDINATE_OBLATE_SPHEROIDAL_TYPE + + PUBLIC CMFE_COORDINATE_NO_RADIAL_INTERPOLATION_TYPE,CMFE_COORDINATE_RADIAL_INTERPOLATION_TYPE, & + & CMFE_COORDINATE_RADIAL_SQUARED_INTERPOLATION_TYPE,CMFE_COORDINATE_RADIAL_CUBED_INTERPOLATION_TYPE + + PUBLIC cmfe_CoordinateSystem_CreateFinish,cmfe_CoordinateSystem_CreateStart + + PUBLIC cmfe_CoordinateSystem_Destroy + + PUBLIC cmfe_CoordinateSystem_DimensionGet,cmfe_CoordinateSystem_DimensionSet + + PUBLIC cmfe_CoordinateSystem_FocusGet,cmfe_CoordinateSystem_FocusSet + + PUBLIC cmfe_CoordinateSystem_RadialInterpolationGet,cmfe_CoordinateSystem_RadialInterpolationSet + + PUBLIC cmfe_CoordinateSystem_TypeGet,cmfe_CoordinateSystem_TypeSet + + PUBLIC cmfe_CoordinateSystem_OriginGet,cmfe_CoordinateSystem_OriginSet + + PUBLIC cmfe_CoordinateSystem_OrientationGet,cmfe_CoordinateSystem_OrientationSet + +!================================================================================================================================== +! +! DataPointsRoutines +! +!================================================================================================================================== + + !Module parameters + + !Module types + + !Module variables + + !Interfaces + + !>Finishes the process of creating data points in a region. \see OpenCMISS::Iron::cmfe_DataPoints_CreateStart + INTERFACE cmfe_DataPoints_CreateFinish + MODULE PROCEDURE cmfe_DataPoints_CreateFinishNumber + MODULE PROCEDURE cmfe_DataPoints_CreateFinishObj + END INTERFACE cmfe_DataPoints_CreateFinish + + !>Starts the process of creating data points in a region. \see OpenCMISS::Iron::cmfe_DataPoints_CreateFinish + INTERFACE cmfe_DataPoints_CreateStart + MODULE PROCEDURE cmfe_DataPoints_CreateStartNumber + MODULE PROCEDURE cmfe_DataPoints_CreateStartObj + MODULE PROCEDURE cmfe_DataPoints_CreateStartInterfaceObj + END INTERFACE cmfe_DataPoints_CreateStart + + !>Destroys data points. + INTERFACE cmfe_DataPoints_Destroy + MODULE PROCEDURE cmfe_DataPoints_DestroyNumber + MODULE PROCEDURE cmfe_DataPoints_DestroyObj + END INTERFACE cmfe_DataPoints_Destroy + + !>Returns the number of data points + INTERFACE cmfe_DataPoints_NumberOfDataPointsGet + MODULE PROCEDURE cmfe_DataPoints_NumberOfDataPointsGetNumber + MODULE PROCEDURE cmfe_DataPoints_NumberOfDataPointsGetObj + END INTERFACE cmfe_DataPoints_NumberOfDataPointsGet + + !>Returns the label for a data point identified by a given user number. + INTERFACE cmfe_DataPoints_LabelGet + MODULE PROCEDURE cmfe_DataPoints_LabelGetCNumber + MODULE PROCEDURE cmfe_DataPoints_LabelGetCObj + MODULE PROCEDURE cmfe_DataPoints_LabelGetVSNumber + MODULE PROCEDURE cmfe_DataPoints_LabelGetVSObj + END INTERFACE cmfe_DataPoints_LabelGet + + !>Sets/changes the label for a data point identified by a given user number. + INTERFACE cmfe_DataPoints_LabelSet + MODULE PROCEDURE cmfe_DataPoints_LabelSetCNumber + MODULE PROCEDURE cmfe_DataPoints_LabelSetCObj + MODULE PROCEDURE cmfe_DataPoints_LabelSetVSNumber + MODULE PROCEDURE cmfe_DataPoints_LabelSetVSObj + END INTERFACE cmfe_DataPoints_LabelSet + + !>Returns the user number for a data point identified by a given global number. + INTERFACE cmfe_DataPoints_UserNumberGet + MODULE PROCEDURE cmfe_DataPoints_UserNumberGetNumber + MODULE PROCEDURE cmfe_DataPoints_UserNumberGetObj + END INTERFACE cmfe_DataPoints_UserNumberGet + + !>Sets/changes the user number for a data point identified by a given global number. + INTERFACE cmfe_DataPoints_UserNumberSet + MODULE PROCEDURE cmfe_DataPoints_UserNumberSetNumber + MODULE PROCEDURE cmfe_DataPoints_UserNumberSetObj + END INTERFACE cmfe_DataPoints_UserNumberSet + + !>Returns the position for a data point identified by a given user number. + INTERFACE cmfe_DataPoints_PositionGet + MODULE PROCEDURE cmfe_DataPoints_PositionGetNumber + MODULE PROCEDURE cmfe_DataPoints_PositionGetObj + END INTERFACE cmfe_DataPoints_PositionGet + + !>Sets/changes the position for a data point identified by a given user number. + INTERFACE cmfe_DataPoints_PositionSet + MODULE PROCEDURE cmfe_DataPoints_PositionSetNumber + MODULE PROCEDURE cmfe_DataPoints_PositionSetObj + END INTERFACE cmfe_DataPoints_PositionSet + + !>Returns the weights for a data point identified by a given user number. + INTERFACE cmfe_DataPoints_WeightsGet + MODULE PROCEDURE cmfe_DataPoints_WeightsGetNumber + MODULE PROCEDURE cmfe_DataPoints_WeightsGetObj + END INTERFACE cmfe_DataPoints_WeightsGet + + !>Sets/changes the weights for a data point identified by a given user number. + INTERFACE cmfe_DataPoints_WeightsSet + MODULE PROCEDURE cmfe_DataPoints_WeightsSetNumber + MODULE PROCEDURE cmfe_DataPoints_WeightsSetObj + END INTERFACE cmfe_DataPoints_WeightsSet + + PUBLIC cmfe_DataPoints_CreateFinish,cmfe_DataPoints_CreateStart + + PUBLIC cmfe_DataPoints_Destroy + + PUBLIC cmfe_DataPoints_NumberOfDataPointsGet + + PUBLIC cmfe_DataPoints_LabelGet,cmfe_DataPoints_LabelSet + + PUBLIC cmfe_DataPoints_UserNumberGet,cmfe_DataPoints_UserNumberSet + + PUBLIC cmfe_DataPoints_PositionGet,cmfe_DataPoints_PositionSet + + PUBLIC cmfe_DataPoints_WeightsGet,cmfe_DataPoints_WeightsSet + +!================================================================================================================================== +! +! DataProjectionRoutines +! +!================================================================================================================================== + + !Module parameters + + !> \addtogroup OpenCMISS_DataProjectionConstants OpenCMISS::Iron::DataProjection::Constants + !> \brief DataProjection constants. + !>@{ + !> \addtogroup OpenCMISS_DataProjectionProjectionTypes OpenCMISS::Iron::DataProjection::ProjectionTypes + !> \brief Data Projection types + !> \see OpenCMISS::Iron::DataProjection,OpenCMISS + !>@{ + INTEGER(INTG), PARAMETER :: CMFE_DATA_PROJECTION_BOUNDARY_LINES_PROJECTION_TYPE = DATA_PROJECTION_BOUNDARY_LINES_PROJECTION_TYPE!@} + !> \addtogroup OpenCMISS_DataProjectionExitTags OpenCMISS::Iron::DataProjection::DataProjectionExitTags + !> \brief Datapoint projection exit tags + !> \see OpenCMISS::Iron::DataProjection,OpenCMISS + !>@{ + INTEGER(INTG), PARAMETER :: CMFE_DATA_PROJECTION_CANCELLED = DATA_PROJECTION_CANCELLED !@} + !> \addtogroup OpenCMISS_DataProjectionDistanceRelations OpenCMISS::Iron::DataProjection::DataProjectionDistanceRelations + !> \brief Datapoint projection distance relations to select data points based on distance. + !> \see OpenCMISS::Iron::DataProjection,OpenCMISS + !>@{ + INTEGER(INTG), PARAMETER :: CMFE_DATA_PROJECTION_DISTANCE_GREATER = DATA_PROJECTION_DISTANCE_GREATER !@} + !>@} + + !Module types + + !Module variables + + !Interfaces + + !>Returns the absolute tolerance for a data projection. + INTERFACE cmfe_DataProjection_AbsoluteToleranceGet + MODULE PROCEDURE cmfe_DataProjection_AbsoluteToleranceGetNumber + MODULE PROCEDURE cmfe_DataProjection_AbsoluteToleranceGetObj + END INTERFACE cmfe_DataProjection_AbsoluteToleranceGet + + !>Sets/changes the absolute tolerance for a data projection. + INTERFACE cmfe_DataProjection_AbsoluteToleranceSet + MODULE PROCEDURE cmfe_DataProjection_AbsoluteToleranceSetNumber + MODULE PROCEDURE cmfe_DataProjection_AbsoluteToleranceSetObj + END INTERFACE cmfe_DataProjection_AbsoluteToleranceSet + + !>Finishes the creation of a new data projection. \see OpenCMISS::Iron::cmfe_DataProjection_CreateStart + INTERFACE cmfe_DataProjection_CreateFinish + MODULE PROCEDURE cmfe_DataProjection_CreateFinishNumber + MODULE PROCEDURE cmfe_DataProjection_CreateFinishObj + END INTERFACE cmfe_DataProjection_CreateFinish + + !>Starts the creation of a new data projection. \see OpenCMISS::Iron::cmfe_DataProjection_CreateFinish + INTERFACE cmfe_DataProjection_CreateStart + MODULE PROCEDURE cmfe_DataProjection_CreateStartNumber + MODULE PROCEDURE cmfe_DataProjection_CreateStartObj + END INTERFACE cmfe_DataProjection_CreateStart + + !>Destroy a data projection. + INTERFACE cmfe_DataProjection_Destroy + MODULE PROCEDURE cmfe_DataProjection_DestroyNumber + MODULE PROCEDURE cmfe_DataProjection_DestroyObj + END INTERFACE cmfe_DataProjection_Destroy + + !>Evaluate the data points position in a field based on data projection + INTERFACE cmfe_DataProjection_DataPointsPositionEvaluate + MODULE PROCEDURE cmfe_DataProjection_DataPointsPositionEvaluateRegionNumber + MODULE PROCEDURE cmfe_DataProjection_DataPointsPositionEvaluateInterfaceNumber + MODULE PROCEDURE cmfe_DataProjection_DataPointsPositionEvaluateObj + END INTERFACE cmfe_DataProjection_DataPointsPositionEvaluate + + !>Starts the evluation of data projection on the geometric field. + INTERFACE cmfe_DataProjection_DataPointsProjectionEvaluate + MODULE PROCEDURE cmfe_DataProjection_DataPointsProjectionEvaluateNumber + MODULE PROCEDURE cmfe_DataProjection_DataPointsProjectionEvaluateObj + END INTERFACE cmfe_DataProjection_DataPointsProjectionEvaluate + + !>Returns the maximum iteration update for a data projection. + INTERFACE cmfe_DataProjection_MaximumIterationUpdateGet + MODULE PROCEDURE cmfe_DataProjection_MaximumIterationUpdateGetNumber + MODULE PROCEDURE cmfe_DataProjection_MaximumIterationUpdateGetObj + END INTERFACE cmfe_DataProjection_MaximumIterationUpdateGet + + !>Sets/changes the maximum iteration update for a data projection. + INTERFACE cmfe_DataProjection_MaximumIterationUpdateSet + MODULE PROCEDURE cmfe_DataProjection_MaximumIterationUpdateSetNumber + MODULE PROCEDURE cmfe_DataProjection_MaximumIterationUpdateSetObj + END INTERFACE cmfe_DataProjection_MaximumIterationUpdateSet + + !>Returns the maximum number of iterations for a data projection. + INTERFACE cmfe_DataProjection_MaximumNumberOfIterationsGet + MODULE PROCEDURE cmfe_DataProjection_MaximumNumberOfIterationsGetNumber + MODULE PROCEDURE cmfe_DataProjection_MaximumNumberOfIterationsGetObj + END INTERFACE cmfe_DataProjection_MaximumNumberOfIterationsGet + + !>Sets/changes the maximum number of iterations for a data projection. + INTERFACE cmfe_DataProjection_MaximumNumberOfIterationsSet + MODULE PROCEDURE cmfe_DataProjection_MaximumNumberOfIterationsSetNumber + MODULE PROCEDURE cmfe_DataProjection_MaximumNumberOfIterationsSetObj + END INTERFACE cmfe_DataProjection_MaximumNumberOfIterationsSet + + !>Returns the number of closest elements for a data projection. + INTERFACE cmfe_DataProjection_NumberOfClosestElementsGet + MODULE PROCEDURE cmfe_DataProjection_NumberOfClosestElementsGetNumber + MODULE PROCEDURE cmfe_DataProjection_NumberOfClosestElementsGetObj + END INTERFACE cmfe_DataProjection_NumberOfClosestElementsGet + + !>Sets/changes the number of closest elements for a data projection. + INTERFACE cmfe_DataProjection_NumberOfClosestElementsSet + MODULE PROCEDURE cmfe_DataProjection_NumberOfClosestElementsSetNumber + MODULE PROCEDURE cmfe_DataProjection_NumberOfClosestElementsSetObj + END INTERFACE cmfe_DataProjection_NumberOfClosestElementsSet + + !>Cancel the data projection for data points based on the data point user numbers. + INTERFACE cmfe_DataProjection_ProjectionCancelByDataPoints + MODULE PROCEDURE cmfe_DataProjection_ProjectionCancelByDataPointsRegionNumber0 + MODULE PROCEDURE cmfe_DataProjection_ProjectionCancelByDataPointsRegionNumber1 + MODULE PROCEDURE cmfe_DataProjection_ProjectionCancelByDataPointsInterNum0 + MODULE PROCEDURE cmfe_DataProjection_ProjectionCancelByDataPointsInterNum1 + MODULE PROCEDURE cmfe_DataProjection_ProjectionCancelByDataPointsObj0 + MODULE PROCEDURE cmfe_DataProjection_ProjectionCancelByDataPointsObj1 + END INTERFACE cmfe_DataProjection_ProjectionCancelByDataPoints + + !>Cancel the data projection for data points based on the projection distance. + INTERFACE cmfe_DataProjection_ProjectionCancelByDistance + MODULE PROCEDURE cmfe_DataProjection_ProjectionCancelByDistanceRegionNumber + MODULE PROCEDURE cmfe_DataProjection_ProjectionCancelByDistanceInterfaceNumber + MODULE PROCEDURE cmfe_DataProjection_ProjectionCancelByDistanceObj + END INTERFACE cmfe_DataProjection_ProjectionCancelByDistance + + !>Cancel the data projection for data points based on the projection exit tag. + INTERFACE cmfe_DataProjection_ProjectionCancelByExitTags + MODULE PROCEDURE cmfe_DataProjection_ProjectionCancelByExitTagsRegionNumber0 + MODULE PROCEDURE cmfe_DataProjection_ProjectionCancelByExitTagsRegionNumber1 + MODULE PROCEDURE cmfe_DataProjection_ProjectionCancelByExitTagsInterfaceNumber0 + MODULE PROCEDURE cmfe_DataProjection_ProjectionCancelByExitTagsInterfaceNumber1 + MODULE PROCEDURE cmfe_DataProjection_ProjectionCancelByExitTagsObj0 + MODULE PROCEDURE cmfe_DataProjection_ProjectionCancelByExitTagsObj1 + END INTERFACE cmfe_DataProjection_ProjectionCancelByExitTags + + !>Set the data projection candidate elements for an all elements projection type. + INTERFACE cmfe_DataProjection_ProjectionCandidateElementsSet + MODULE PROCEDURE cmfe_DataProjection_ProjectionCandidateElementsSetRegionNumber + MODULE PROCEDURE cmfe_DataProjection_ProjectionCandidateElementsSetIntNum + MODULE PROCEDURE cmfe_DataProjection_ProjectionCandidateElementsSetObj + END INTERFACE cmfe_DataProjection_ProjectionCandidateElementsSet + + !>Set the data projection candidate elements for data points for an all elements projection type. + INTERFACE cmfe_DataProjection_ProjectionDataCandidateElementsSet + MODULE PROCEDURE cmfe_DataProjection_ProjectionDataCandidateElementsSetRegNum00 + MODULE PROCEDURE cmfe_DataProjection_ProjectionDataCandidateElementsSetRegNum01 + MODULE PROCEDURE cmfe_DataProjection_ProjectionDataCandidateElementsSetRegNum10 + MODULE PROCEDURE cmfe_DataProjection_ProjectionDataCandidateElementsSetRegNum11 + MODULE PROCEDURE cmfe_DataProjection_ProjectionDataCandidateElementsSetIntNum00 + MODULE PROCEDURE cmfe_DataProjection_ProjectionDataCandidateElementsSetIntNum01 + MODULE PROCEDURE cmfe_DataProjection_ProjectionDataCandidateElementsSetIntNum10 + MODULE PROCEDURE cmfe_DataProjection_ProjectionDataCandidateElementsSetIntNum11 + MODULE PROCEDURE cmfe_DataProjection_ProjectionDataCandidateElementsSetObj00 + MODULE PROCEDURE cmfe_DataProjection_ProjectionDataCandidateElementsSetObj01 + MODULE PROCEDURE cmfe_DataProjection_ProjectionDataCandidateElementsSetObj10 + MODULE PROCEDURE cmfe_DataProjection_ProjectionDataCandidateElementsSetObj11 + END INTERFACE cmfe_DataProjection_ProjectionDataCandidateElementsSet + + !>Set the data projection candidate faces for a boundary faces projection type. + INTERFACE cmfe_DataProjection_ProjectionCandidateFacesSet + MODULE PROCEDURE cmfe_DataProjection_ProjectionCandidateFacesSetRegionNumber + MODULE PROCEDURE cmfe_DataProjection_ProjectionCandidateFacesSetInterfaceNumber + MODULE PROCEDURE cmfe_DataProjection_ProjectionCandidateFacesSetObj + END INTERFACE cmfe_DataProjection_ProjectionCandidateFacesSet + + !>Set the data projection candidate faces for data points for a boundary faces projection type. + INTERFACE cmfe_DataProjection_ProjectionDataCandidateFacesSet + MODULE PROCEDURE cmfe_DataProjection_ProjectionDataCandidateFacesSetRegNum000 + MODULE PROCEDURE cmfe_DataProjection_ProjectionDataCandidateFacesSetRegNum011 + MODULE PROCEDURE cmfe_DataProjection_ProjectionDataCandidateFacesSetRegNum100 + MODULE PROCEDURE cmfe_DataProjection_ProjectionDataCandidateFacesSetRegNum111 + MODULE PROCEDURE cmfe_DataProjection_ProjectionDataCandidateFacesSetIntNum000 + MODULE PROCEDURE cmfe_DataProjection_ProjectionDataCandidateFacesSetIntNum011 + MODULE PROCEDURE cmfe_DataProjection_ProjectionDataCandidateFacesSetIntNum100 + MODULE PROCEDURE cmfe_DataProjection_ProjectionDataCandidateFacesSetIntNum111 + MODULE PROCEDURE cmfe_DataProjection_ProjectionDataCandidateFacesSetObj000 + MODULE PROCEDURE cmfe_DataProjection_ProjectionDataCandidateFacesSetObj011 + MODULE PROCEDURE cmfe_DataProjection_ProjectionDataCandidateFacesSetObj100 + MODULE PROCEDURE cmfe_DataProjection_ProjectionDataCandidateFacesSetObj111 + END INTERFACE cmfe_DataProjection_ProjectionDataCandidateFacesSet + + !>Set the data projection candidate lines for a boundary lines projection type. + INTERFACE cmfe_DataProjection_ProjectionCandidateLinesSet + MODULE PROCEDURE cmfe_DataProjection_ProjectionCandidateLinesSetRegionNumber + MODULE PROCEDURE cmfe_DataProjection_ProjectionCandidateLinesSetInterfaceNumber + MODULE PROCEDURE cmfe_DataProjection_ProjectionCandidateLinesSetObj + END INTERFACE cmfe_DataProjection_ProjectionCandidateLinesSet + + !>Set the data projection candidate lines for data points for a boundary lines projection type. + INTERFACE cmfe_DataProjection_ProjectionDataCandidateLinesSet + MODULE PROCEDURE cmfe_DataProjection_ProjectionDataCandidateLinesSetRegNum000 + MODULE PROCEDURE cmfe_DataProjection_ProjectionDataCandidateLinesSetRegNum011 + MODULE PROCEDURE cmfe_DataProjection_ProjectionDataCandidateLinesSetRegNum100 + MODULE PROCEDURE cmfe_DataProjection_ProjectionDataCandidateLinesSetRegNum111 + MODULE PROCEDURE cmfe_DataProjection_ProjectionDataCandidateLinesSetIntNum000 + MODULE PROCEDURE cmfe_DataProjection_ProjectionDataCandidateLinesSetIntNum011 + MODULE PROCEDURE cmfe_DataProjection_ProjectionDataCandidateLinesSetIntNum100 + MODULE PROCEDURE cmfe_DataProjection_ProjectionDataCandidateLinesSetIntNum111 + MODULE PROCEDURE cmfe_DataProjection_ProjectionDataCandidateLinesSetObj000 + MODULE PROCEDURE cmfe_DataProjection_ProjectionDataCandidateLinesSetObj011 + MODULE PROCEDURE cmfe_DataProjection_ProjectionDataCandidateLinesSetObj100 + MODULE PROCEDURE cmfe_DataProjection_ProjectionDataCandidateLinesSetObj111 + END INTERFACE cmfe_DataProjection_ProjectionDataCandidateLinesSet + + !>Returns the projection type for a data projection. + INTERFACE cmfe_DataProjection_ProjectionTypeGet + MODULE PROCEDURE cmfe_DataProjection_ProjectionTypeGetNumber + MODULE PROCEDURE cmfe_DataProjection_ProjectionTypeGetObj + END INTERFACE cmfe_DataProjection_ProjectionTypeGet + + !>Sets/changes the projection type for a data projection. + INTERFACE cmfe_DataProjection_ProjectionTypeSet + MODULE PROCEDURE cmfe_DataProjection_ProjectionTypeSetNumber + MODULE PROCEDURE cmfe_DataProjection_ProjectionTypeSetObj + END INTERFACE cmfe_DataProjection_ProjectionTypeSet + + !>Returns the relative tolerance for a data projection. + INTERFACE cmfe_DataProjection_RelativeToleranceGet + MODULE PROCEDURE cmfe_DataProjection_RelativeToleranceGetNumber + MODULE PROCEDURE cmfe_DataProjection_RelativeToleranceGetObj + END INTERFACE cmfe_DataProjection_RelativeToleranceGet + + !>Sets/changes the relative tolerance for a data projection. + INTERFACE cmfe_DataProjection_RelativeToleranceSet + MODULE PROCEDURE cmfe_DataProjection_RelativeToleranceSetNumber + MODULE PROCEDURE cmfe_DataProjection_RelativeToleranceSetObj + END INTERFACE cmfe_DataProjection_RelativeToleranceSet + + !>Returns the starting xi for a data projection. + INTERFACE cmfe_DataProjection_StartingXiGet + MODULE PROCEDURE cmfe_DataProjection_StartingXiGetNumber + MODULE PROCEDURE cmfe_DataProjection_StartingXiGetObj + END INTERFACE cmfe_DataProjection_StartingXiGet + + !>Sets/changes the starting xi for a data projection. + INTERFACE cmfe_DataProjection_StartingXiSet + MODULE PROCEDURE cmfe_DataProjection_StartingXiSetNumber + MODULE PROCEDURE cmfe_DataProjection_StartingXiSetObj + END INTERFACE cmfe_DataProjection_StartingXiSet + + !>Sets/changes the element number for a data point projection. + INTERFACE cmfe_DataProjection_ElementSet + MODULE PROCEDURE cmfe_DataProjection_ElementSetRegionNumber + MODULE PROCEDURE cmfe_DataProjection_ElementSetInterfaceNumber + MODULE PROCEDURE cmfe_DataProjection_ElementSetObj + END INTERFACE cmfe_DataProjection_ElementSet + + !>Gets the label for a data point projection. + INTERFACE cmfe_DataProjection_LabelGet + MODULE PROCEDURE cmfe_DataProjection_LabelGetCRegionNumber + MODULE PROCEDURE cmfe_DataProjection_LabelGetCInterfaceNumber + MODULE PROCEDURE cmfe_DataProjection_LabelGetCObj + MODULE PROCEDURE cmfe_DataProjection_LabelGetVSRegionNumber + MODULE PROCEDURE cmfe_DataProjection_LabelGetVSInterfaceNumber + MODULE PROCEDURE cmfe_DataProjection_LabelGetVSObj + END INTERFACE cmfe_DataProjection_LabelGet + + !>Sets/changes the label for a data point projection. + INTERFACE cmfe_DataProjection_LabelSet + MODULE PROCEDURE cmfe_DataProjection_LabelSetCRegionNumber + MODULE PROCEDURE cmfe_DataProjection_LabelSetCInterfaceNumber + MODULE PROCEDURE cmfe_DataProjection_LabelSetCObj + MODULE PROCEDURE cmfe_DataProjection_LabelSetVSRegionNumber + MODULE PROCEDURE cmfe_DataProjection_LabelSetVSInterfaceNumber + MODULE PROCEDURE cmfe_DataProjection_LabelSetVSObj + END INTERFACE cmfe_DataProjection_LabelSet + + !>Outputs an analysis of the data projection results + INTERFACE cmfe_DataProjection_ResultAnalysisOutput + MODULE PROCEDURE cmfe_DataProjection_ResultAnalysisOutputNumber + MODULE PROCEDURE cmfe_DataProjection_ResultAnalysisOutputObj + END INTERFACE cmfe_DataProjection_ResultAnalysisOutput + + !>Returns the projection distance for a data point identified by a given user number. + INTERFACE cmfe_DataProjection_ResultDistanceGet + MODULE PROCEDURE cmfe_DataProjection_ResultDistanceGetNumber + MODULE PROCEDURE cmfe_DataProjection_ResultDistanceGetObj + END INTERFACE cmfe_DataProjection_ResultDistanceGet + + !>Returns the projection element number for a data point identified by a given user number. + INTERFACE cmfe_DataProjection_ResultElementNumberGet + MODULE PROCEDURE cmfe_DataProjection_ResultElementNumberGetNumber + MODULE PROCEDURE cmfe_DataProjection_ResultElementNumberGetObj + END INTERFACE cmfe_DataProjection_ResultElementNumberGet + + !>Returns the projection element face number for a data point identified by a given user number. + INTERFACE cmfe_DataProjection_ResultElementFaceNumberGet + MODULE PROCEDURE cmfe_DataProjection_ResultElementFaceNumberGetNumber + MODULE PROCEDURE cmfe_DataProjection_ResultElementFaceNumberGetObj + END INTERFACE cmfe_DataProjection_ResultElementFaceNumberGet + + !>Returns the projection element line number for a data point identified by a given user number. + INTERFACE cmfe_DataProjection_ResultElementLineNumberGet + MODULE PROCEDURE cmfe_DataProjection_ResultElementLineNumberGetNumber + MODULE PROCEDURE cmfe_DataProjection_ResultElementLineNumberGetObj + END INTERFACE cmfe_DataProjection_ResultElementLineNumberGet + + !>Returns the projection exit tag for a data point identified by a given user number. + INTERFACE cmfe_DataProjection_ResultExitTagGet + MODULE PROCEDURE cmfe_DataProjection_ResultExitTagGetNumber + MODULE PROCEDURE cmfe_DataProjection_ResultExitTagGetObj + END INTERFACE cmfe_DataProjection_ResultExitTagGet - PUBLIC cmfe_Basis_QuadratureGaussXiGet + !>Returns the maximum error for a data projection. + INTERFACE cmfe_DataProjection_ResultMaximumErrorGet + MODULE PROCEDURE cmfe_DataProjection_ResultMaximumErrorGetNumber + MODULE PROCEDURE cmfe_DataProjection_ResultMaximumErrorGetObj + END INTERFACE cmfe_DataProjection_ResultMaximumErrorGet - PUBLIC cmfe_Basis_QuadratureOrderGet,cmfe_Basis_QuadratureOrderSet + !>Returns the minimum error for a data projection. + INTERFACE cmfe_DataProjection_ResultMinimumErrorGet + MODULE PROCEDURE cmfe_DataProjection_ResultMinimumErrorGetNumber + MODULE PROCEDURE cmfe_DataProjection_ResultMinimumErrorGetObj + END INTERFACE cmfe_DataProjection_ResultMinimumErrorGet - PUBLIC cmfe_Basis_QuadratureTypeGet,cmfe_Basis_QuadratureTypeSet,cmfe_Basis_QuadratureLocalFaceGaussEvaluateSet + !>Returns the RMS error for a data projection. + INTERFACE cmfe_DataProjection_ResultRMSErrorGet + MODULE PROCEDURE cmfe_DataProjection_ResultRMSErrorGetNumber + MODULE PROCEDURE cmfe_DataProjection_ResultRMSErrorGetObj + END INTERFACE cmfe_DataProjection_ResultRMSErrorGet - PUBLIC cmfe_Basis_TypeGet,cmfe_Basis_TypeSet + !>Returns the projection xi for a data point identified by a given user number. + INTERFACE cmfe_DataProjection_ResultXiGet + MODULE PROCEDURE cmfe_DataProjection_ResultXiGetNumber + MODULE PROCEDURE cmfe_DataProjection_ResultXiGetObj + END INTERFACE cmfe_DataProjection_ResultXiGet -!!================================================================================================================================== -!! -!! BOUNDARY_CONDITIONS_ROUTINES -!! -!!================================================================================================================================== + !>Sets the projection xi for a data point identified by a given user number. + INTERFACE cmfe_DataProjection_ResultXiSet + MODULE PROCEDURE cmfe_DataProjection_ResultXiSetNumber + MODULE PROCEDURE cmfe_DataProjection_ResultXiSetObj + END INTERFACE cmfe_DataProjection_ResultXiSet - !Module parameters + !>Returns the projection vector for a data point identified by a given user number. + INTERFACE cmfe_DataProjection_ResultProjectionVectorGet + MODULE PROCEDURE cmfe_DataProjection_ResultProjectionVectorGetNumber + MODULE PROCEDURE cmfe_DataProjection_ResultProjectionVectorGetObj + END INTERFACE cmfe_DataProjection_ResultProjectionVectorGet + PUBLIC CMFE_DATA_PROJECTION_BOUNDARY_LINES_PROJECTION_TYPE,CMFE_DATA_PROJECTION_BOUNDARY_FACES_PROJECTION_TYPE, & + & CMFE_DATA_PROJECTION_ALL_ELEMENTS_PROJECTION_TYPE - !> \addtogroup OpenCMISS_BoundaryConditionsConstants OpenCMISS::Iron::BoundaryConditions::Constants - !> \brief Boundary conditions constants. - !>@{ - !> \addtogroup OpenCMISS_BoundaryConditionsTypes OpenCMISS::Iron::BoundaryConditions::Types - !> \brief Specific boundary condition types, which might only be applicable to certain equation sets. - !> \see OpenCMISS::Iron::BoundaryConditions,OpenCMISS - !>@{ - INTEGER(INTG), PARAMETER :: CMFE_BOUNDARY_CONDITION_FREE = BOUNDARY_CONDITION_FREE !@} - !> \addtogroup OpenCMISS_BoundaryConditionSparsityTypes OpenCMISS::Iron::BoundaryConditions::SparsityTypes - !> \brief Storage type for matrices used by boundary conditions. - !> \see OpenCMISS::Iron::BoundaryConditions,OpenCMISS - !>@{ - INTEGER(INTG), PARAMETER :: CMFE_BOUNDARY_CONDITION_SPARSE_MATRICES = BOUNDARY_CONDITION_SPARSE_MATRICES - INTEGER(INTG), PARAMETER :: CMFE_BOUNDARY_CONDITION_FULL_MATRICES = BOUNDARY_CONDITION_FULL_MATRICES - !>@} - !>@} - - !Module types - - !Module variables - - !Interfaces - - !>Destroys boundary conditions. - INTERFACE cmfe_BoundaryConditions_Destroy - MODULE PROCEDURE cmfe_BoundaryConditions_DestroyNumber0 - MODULE PROCEDURE cmfe_BoundaryConditions_DestroyNumber1 - MODULE PROCEDURE cmfe_BoundaryConditions_DestroyObj - END INTERFACE cmfe_BoundaryConditions_Destroy - - !>Adds to the value of the specified constant and sets this as a boundary condition on the specified constant. - INTERFACE cmfe_BoundaryConditions_AddConstant - MODULE PROCEDURE cmfe_BoundaryConditions_AddConstantNumber - MODULE PROCEDURE cmfe_BoundaryConditions_AddConstantObj - END INTERFACE cmfe_BoundaryConditions_AddConstant - - !>Sets the value of the specified constant as a boundary condition on the specified constant. - INTERFACE cmfe_BoundaryConditions_SetConstant - MODULE PROCEDURE cmfe_BoundaryConditions_SetConstantNumber - MODULE PROCEDURE cmfe_BoundaryConditions_SetConstantObj - END INTERFACE cmfe_BoundaryConditions_SetConstant - - !>Adds to the value of the element constant and sets this as a boundary condition on the specified element. - INTERFACE cmfe_BoundaryConditions_AddElement - MODULE PROCEDURE cmfe_BoundaryConditions_AddElementNumber - MODULE PROCEDURE cmfe_BoundaryConditions_AddElementObj - END INTERFACE cmfe_BoundaryConditions_AddElement - - !>Sets the value of the specified element as a boundary condition on the specified element. - INTERFACE cmfe_BoundaryConditions_SetElement - MODULE PROCEDURE cmfe_BoundaryConditions_SetElementNumber - MODULE PROCEDURE cmfe_BoundaryConditions_SetElementObj - END INTERFACE cmfe_BoundaryConditions_SetElement - - !>Adds to the value of the node constant and sets this as a boundary condition on the specified node. - INTERFACE cmfe_BoundaryConditions_AddNode - MODULE PROCEDURE cmfe_BoundaryConditions_AddNodeNumber - MODULE PROCEDURE cmfe_BoundaryConditions_AddNodeObj - END INTERFACE cmfe_BoundaryConditions_AddNode - - !>Sets the value of the specified node as a boundary condition on the specified node. - INTERFACE cmfe_BoundaryConditions_SetNode - MODULE PROCEDURE cmfe_BoundaryConditions_SetNodeNumber0 - MODULE PROCEDURE cmfe_BoundaryConditions_SetNodeNumber1 - MODULE PROCEDURE cmfe_BoundaryConditions_SetNodeObj - END INTERFACE cmfe_BoundaryConditions_SetNode - - !>Sets the matrix sparsity type for Neumann integration matrices, used when integrating Neumann point values. - INTERFACE cmfe_BoundaryConditions_NeumannSparsityTypeSet - MODULE PROCEDURE cmfe_BoundaryConditions_NeumannSparsityTypeSetNumber0 - MODULE PROCEDURE cmfe_BoundaryConditions_NeumannSparsityTypeSetNumber1 - MODULE PROCEDURE cmfe_BoundaryConditions_NeumannSparsityTypeSetObj - END INTERFACE cmfe_BoundaryConditions_NeumannSparsityTypeSet + PUBLIC CMFE_DATA_PROJECTION_CANCELLED,CMFE_DATA_PROJECTION_EXIT_TAG_CONVERGED,CMFE_DATA_PROJECTION_EXIT_TAG_BOUNDS, & + & CMFE_DATA_PROJECTION_EXIT_TAG_MAX_ITERATION,CMFE_DATA_PROJECTION_EXIT_TAG_NO_ELEMENT - !>Constrain multiple nodal equations dependent field DOFs to be a single solver DOF in the solver equations - INTERFACE cmfe_BoundaryConditions_ConstrainNodeDofsEqual - MODULE PROCEDURE cmfe_BoundaryConditions_ConstrainNodeDofsEqualNumber - MODULE PROCEDURE cmfe_BoundaryConditions_ConstrainNodeDofsEqualObj - END INTERFACE cmfe_BoundaryConditions_ConstrainNodeDofsEqual + PUBLIC CMFE_DATA_PROJECTION_DISTANCE_GREATER,CMFE_DATA_PROJECTION_DISTANCE_GREATER_EQUAL,CMFE_DATA_PROJECTION_DISTANCE_LESS, & + & CMFE_DATA_PROJECTION_DISTANCE_LESS_EQUAL - PUBLIC CMFE_BOUNDARY_CONDITION_FREE,CMFE_BOUNDARY_CONDITION_FIXED, & - & CMFE_BOUNDARY_CONDITION_FIXED_WALL,CMFE_BOUNDARY_CONDITION_FIXED_INLET,CMFE_BOUNDARY_CONDITION_MOVED_WALL, & - & CMFE_BOUNDARY_CONDITION_FREE_WALL,CMFE_BOUNDARY_CONDITION_FIXED_OUTLET,CMFE_BOUNDARY_CONDITION_MOVED_WALL_INCREMENTED, & - & CMFE_BOUNDARY_CONDITION_CORRECTION_MASS_INCREASE,CMFE_BOUNDARY_CONDITION_IMPERMEABLE_WALL, & - & CMFE_BOUNDARY_CONDITION_NEUMANN_INTEGRATED_ONLY,CMFE_BOUNDARY_CONDITION_FIXED_FITTED, & - & CMFE_BOUNDARY_CONDITION_FIXED_NONREFLECTING,CMFE_BOUNDARY_CONDITION_FIXED_CELLML,CMFE_BOUNDARY_CONDITION_FIXED_STREE + PUBLIC cmfe_DataProjection_AbsoluteToleranceGet,cmfe_DataProjection_AbsoluteToleranceSet - PUBLIC CMFE_BOUNDARY_CONDITION_NEUMANN_POINT,CMFE_BOUNDARY_CONDITION_NEUMANN_INTEGRATED,CMFE_BOUNDARY_CONDITION_DIRICHLET - PUBLIC CMFE_BOUNDARY_CONDITION_CAUCHY,CMFE_BOUNDARY_CONDITION_ROBIN,CMFE_BOUNDARY_CONDITION_FIXED_INCREMENTED - PUBLIC CMFE_BOUNDARY_CONDITION_PRESSURE,CMFE_BOUNDARY_CONDITION_FIXED_PRESSURE,CMFE_BOUNDARY_CONDITION_PRESSURE_INCREMENTED - PUBLIC CMFE_BOUNDARY_CONDITION_NEUMANN_POINT_INCREMENTED + PUBLIC cmfe_DataProjection_CreateFinish,cmfe_DataProjection_CreateStart - PUBLIC CMFE_BOUNDARY_CONDITION_SPARSE_MATRICES,CMFE_BOUNDARY_CONDITION_FULL_MATRICES + PUBLIC cmfe_DataProjection_Destroy - PUBLIC cmfe_BoundaryConditions_Destroy + PUBLIC cmfe_DataProjection_DataPointsPositionEvaluate - PUBLIC cmfe_BoundaryConditions_AddConstant,cmfe_BoundaryConditions_SetConstant + PUBLIC cmfe_DataProjection_ProjectionCancelByDataPoints - PUBLIC cmfe_BoundaryConditions_AddElement,cmfe_BoundaryConditions_SetElement + PUBLIC cmfe_DataProjection_ProjectionCancelByDistance - PUBLIC cmfe_BoundaryConditions_AddNode,cmfe_BoundaryConditions_SetNode + PUBLIC cmfe_DataProjection_ProjectionCancelByExitTags - PUBLIC cmfe_BoundaryConditions_NeumannSparsityTypeSet + PUBLIC cmfe_DataProjection_ProjectionCandidateElementsSet - PUBLIC cmfe_BoundaryConditions_ConstrainNodeDofsEqual + PUBLIC cmfe_DataProjection_ProjectionDataCandidateElementsSet -!!================================================================================================================================== -!! -!! CMISS -!! -!!================================================================================================================================== + PUBLIC cmfe_DataProjection_ProjectionCandidateFacesSet - !Module parameters - !> \addtogroup OpenCMISS_CMISSConstants OpenCMISS::Iron::cmfe_::Constants - !> \brief CMISS constants. - !>@{ - !> \addtogroup OpenCMISS_CMISSErrorHandlingModes OpenCMISS::Iron::cmfe_::ErrorHandlingModes - !> \brief CMISS error handling mode parameters - !> \see OpenCMISS::Iron::cmfe_,OpenCMISS - !>@{ - INTEGER(INTG), PARAMETER :: CMFE_ERRORS_RETURN_ERROR_CODE = CMFE_RETURN_ERROR_CODE !@} - !>@} + PUBLIC cmfe_DataProjection_ProjectionDataCandidateFacesSet - !Module types + PUBLIC cmfe_DataProjection_ProjectionCandidateLinesSet - !Module variables + PUBLIC cmfe_DataProjection_ProjectionDataCandidateLinesSet - !Interfaces + PUBLIC cmfe_DataProjection_DataPointsProjectionEvaluate - !>Extracts the OpenCMISS error message. - INTERFACE cmfe_ExtractErrorMessage - MODULE PROCEDURE cmfe_ExtractErrorMessageC - MODULE PROCEDURE cmfe_ExtractErrorMessageVS - END INTERFACE cmfe_ExtractErrorMessage + PUBLIC cmfe_DataProjection_MaximumIterationUpdateGet,cmfe_DataProjection_MaximumIterationUpdateSet - !>Extracts the OpenCMISS error stack. - INTERFACE cmfe_ExtractErrorStack - MODULE PROCEDURE cmfe_ExtractErrorStackC - MODULE PROCEDURE cmfe_ExtractErrorStackVS - END INTERFACE cmfe_ExtractErrorStack + PUBLIC cmfe_DataProjection_MaximumNumberOfIterationsGet,cmfe_DataProjection_MaximumNumberOfIterationsSet - !>Gets the random seeds for OpenCMISS. - INTERFACE cmfe_RandomSeedsGet - MODULE PROCEDURE cmfe_RandomSeedsGet0 - MODULE PROCEDURE cmfe_RandomSeedsGet1 - END INTERFACE cmfe_RandomSeedsGet + PUBLIC cmfe_DataProjection_NumberOfClosestElementsGet,cmfe_DataProjection_NumberOfClosestElementsSet - !>Sets the random seeds for OpenCMISS. - INTERFACE cmfe_RandomSeedsSet - MODULE PROCEDURE cmfe_RandomSeedsSet0 - MODULE PROCEDURE cmfe_RandomSeedsSet1 - END INTERFACE cmfe_RandomSeedsSet + PUBLIC cmfe_DataProjection_ProjectionTypeGet,cmfe_DataProjection_ProjectionTypeSet - PUBLIC CMFE_ERRORS_RETURN_ERROR_CODE,CMFE_ERRORS_OUTPUT_ERROR,CMFE_ERRORS_TRAP_ERROR + PUBLIC cmfe_DataProjection_RelativeToleranceGet,cmfe_DataProjection_RelativeToleranceSet - PUBLIC cmfe_ErrorHandlingModeGet,cmfe_ErrorHandlingModeSet + PUBLIC cmfe_DataProjection_StartingXiGet,cmfe_DataProjection_StartingXiSet - PUBLIC cmfe_ExtractErrorMessage,cmfe_ExtractErrorStack + PUBLIC cmfe_DataProjection_ElementSet - PUBLIC cmfe_RandomSeedsGet,cmfe_RandomSeedsSizeGet,cmfe_RandomSeedsSet + PUBLIC cmfe_DataProjection_LabelGet,cmfe_DataProjection_LabelSet -!!================================================================================================================================== -!! -!! CMISS_CELLML -!! -!!================================================================================================================================== + PUBLIC cmfe_DataProjection_ResultAnalysisOutput - !Module parameters + PUBLIC cmfe_DataProjection_ResultDistanceGet,cmfe_DataProjection_ResultElementNumberGet - !> \addtogroup OpenCMISS_CellMLConstants OpenCMISS::Iron::CellML::Constants - !> \brief CellML constants. - !>@{ - !> \addtogroup OpenCMISS_CellMLFieldTypes OpenCMISS::Iron::CellML::FieldTypes - !> \brief CellML field type parameters. - !> \see OpenCMISS::Iron::CellML,OpenCMISS - !>@{ - INTEGER(INTG), PARAMETER :: CMFE_CELLML_MODELS_FIELD = CELLML_MODELS_FIELD !@} - !>@} - - !Module types - - !Module variables - - !Interfaces - - !>Set a CellML model variable as being known (the value will be set from an OpenCMISS field) - INTERFACE cmfe_CellML_VariableSetAsKnown - MODULE PROCEDURE cmfe_CellML_VariableSetAsKnownNumberC - MODULE PROCEDURE cmfe_CellML_VariableSetAsKnownObjC - MODULE PROCEDURE cmfe_CellML_VariableSetAsKnownNumberVS - MODULE PROCEDURE cmfe_CellML_VariableSetAsKnownObjVS - END INTERFACE cmfe_CellML_VariableSetAsKnown - - !>Set a CellML model variable as being wanted (the value will be extracted from the model to an OpenCMISS field) - INTERFACE cmfe_CellML_VariableSetAsWanted - MODULE PROCEDURE cmfe_CellML_VariableSetAsWantedNumberC - MODULE PROCEDURE cmfe_CellML_VariableSetAsWantedObjC - MODULE PROCEDURE cmfe_CellML_VariableSetAsWantedNumberVS - MODULE PROCEDURE cmfe_CellML_VariableSetAsWantedObjVS - END INTERFACE cmfe_CellML_VariableSetAsWanted - - !>Map a CellML model variable to a field variable component in this CellML environment. - INTERFACE cmfe_CellML_CreateCellMLToFieldMap - MODULE PROCEDURE cmfe_CellML_CreateCellMLToFieldMapNumberC - MODULE PROCEDURE cmfe_CellML_CreateCellMLToFieldMapObjC - MODULE PROCEDURE cmfe_CellML_CreateCellMLToFieldMapNumberVS - MODULE PROCEDURE cmfe_CellML_CreateCellMLToFieldMapObjVS - END INTERFACE cmfe_CellML_CreateCellMLToFieldMap - - !>Map a field variable component to a CellML model variable in this CellML environment. - INTERFACE cmfe_CellML_CreateFieldToCellMLMap - MODULE PROCEDURE cmfe_CellML_CreateFieldToCellMLMapNumberC - MODULE PROCEDURE cmfe_CellML_CreateFieldToCellMLMapObjC - MODULE PROCEDURE cmfe_CellML_CreateFieldToCellMLMapNumberVS - MODULE PROCEDURE cmfe_CellML_CreateFieldToCellMLMapObjVS - END INTERFACE cmfe_CellML_CreateFieldToCellMLMap - - !>Finishes the creation of a CellML environment. \see OpenCMISS::Iron::cmfe_CellML_CreateStart - INTERFACE cmfe_CellML_CreateFinish - MODULE PROCEDURE cmfe_CellML_CreateFinishNumber - MODULE PROCEDURE cmfe_CellML_CreateFinishObj - END INTERFACE cmfe_CellML_CreateFinish - - !>Starts the creation of a CellML environment. \see OpenCMISS::Iron::cmfe_CellML_CreateFinish - INTERFACE cmfe_CellML_CreateStart - MODULE PROCEDURE cmfe_CellML_CreateStartNumber - MODULE PROCEDURE cmfe_CellML_CreateStartObj - END INTERFACE cmfe_CellML_CreateStart - - !>Destroys a CellML environment. - INTERFACE cmfe_CellML_Destroy - MODULE PROCEDURE cmfe_CellML_DestroyNumber - MODULE PROCEDURE cmfe_CellML_DestroyObj - END INTERFACE cmfe_CellML_Destroy - - !>Finishes the creation of field maps for a CellML environment. \see OpenCMISS::Iron::cmfe_CellML_FieldMapsCreateStart - INTERFACE cmfe_CellML_FieldMapsCreateFinish - MODULE PROCEDURE cmfe_CellML_FieldMapsCreateFinishNumber - MODULE PROCEDURE cmfe_CellML_FieldMapsCreateFinishObj - END INTERFACE cmfe_CellML_FieldMapsCreateFinish - - !>Starts the creation of field maps for a CellML environment. \see OpenCMISS::Iron::cmfe_CellML_FieldMapsCreateFinish - INTERFACE cmfe_CellML_FieldMapsCreateStart - MODULE PROCEDURE cmfe_CellML_FieldMapsCreateStartNumber - MODULE PROCEDURE cmfe_CellML_FieldMapsCreateStartObj - END INTERFACE cmfe_CellML_FieldMapsCreateStart - - !>Imports the specified CellML model into a CellML models environment. - INTERFACE cmfe_CellML_ModelImport - MODULE PROCEDURE cmfe_CellML_ModelImportNumberC - MODULE PROCEDURE cmfe_CellML_ModelImportObjC - MODULE PROCEDURE cmfe_CellML_ModelImportNumberVS - MODULE PROCEDURE cmfe_CellML_ModelImportObjVS - END INTERFACE cmfe_CellML_ModelImport - - !>Finishes the creation of CellML models field. \see OpenCMISS::Iron::cmfe_CellML_ModelsFieldCreateStart - INTERFACE cmfe_CellML_ModelsFieldCreateFinish - MODULE PROCEDURE cmfe_CellML_ModelsFieldCreateFinishNumber - MODULE PROCEDURE cmfe_CellML_ModelsFieldCreateFinishObj - END INTERFACE cmfe_CellML_ModelsFieldCreateFinish - - !>Starts the creation of CellML models field. \see OpenCMISS::Iron::cmfe_CellML_ModelsFieldCreateFinish - INTERFACE cmfe_CellML_ModelsFieldCreateStart - MODULE PROCEDURE cmfe_CellML_ModelsFieldCreateStartNumber - MODULE PROCEDURE cmfe_CellML_ModelsFieldCreateStartObj - END INTERFACE cmfe_CellML_ModelsFieldCreateStart - - !>Returns the CellML models field for a CellML environment. - INTERFACE cmfe_CellML_ModelsFieldGet - MODULE PROCEDURE cmfe_CellML_ModelsFieldGetNumber - MODULE PROCEDURE cmfe_CellML_ModelsFieldGetObj - END INTERFACE cmfe_CellML_ModelsFieldGet - - !>Finishes the creation of CellML state field. \see OpenCMISS::Iron::cmfe_CellML_StateFieldCreateStart - INTERFACE cmfe_CellML_StateFieldCreateFinish - MODULE PROCEDURE cmfe_CellML_StateFieldCreateFinishNumber - MODULE PROCEDURE cmfe_CellML_StateFieldCreateFinishObj - END INTERFACE cmfe_CellML_StateFieldCreateFinish - - !>Starts the creation of CellML state field. \see OpenCMISS::Iron::cmfe_CellML_StateFieldCreateFinish - INTERFACE cmfe_CellML_StateFieldCreateStart - MODULE PROCEDURE cmfe_CellML_StateFieldCreateStartNumber - MODULE PROCEDURE cmfe_CellML_StateFieldCreateStartObj - END INTERFACE cmfe_CellML_StateFieldCreateStart - - !>Returns the CellML state field for a CellML environment. - INTERFACE cmfe_CellML_StateFieldGet - MODULE PROCEDURE cmfe_CellML_StateFieldGetNumber - MODULE PROCEDURE cmfe_CellML_StateFieldGetObj - END INTERFACE cmfe_CellML_StateFieldGet - - !>Returns the component for a given CellML field that corresponds to the specified CellML variable ID. - INTERFACE cmfe_CellML_FieldComponentGet - MODULE PROCEDURE cmfe_CellML_FieldComponentGetNumberC - MODULE PROCEDURE cmfe_CellML_FieldComponentGetObjC - MODULE PROCEDURE cmfe_CellML_FieldComponentGetNumberVS - MODULE PROCEDURE cmfe_CellML_FieldComponentGetObjVS - END INTERFACE cmfe_CellML_FieldComponentGet - - !>Finishes the creation of CellML intermediate field. \see OpenCMISS::Iron::cmfe_CellML_IntermediateFieldCreateStart - INTERFACE cmfe_CellML_IntermediateFieldCreateFinish - MODULE PROCEDURE cmfe_CellML_IntermediateFieldCreateFinishNumber - MODULE PROCEDURE cmfe_CellML_IntermediateFieldCreateFinishObj - END INTERFACE cmfe_CellML_IntermediateFieldCreateFinish - - !>Starts the creation of CellML intermediate field. \see OpenCMISS::Iron::cmfe_CellML_IntermediateFieldCreateFinish - INTERFACE cmfe_CellML_IntermediateFieldCreateStart - MODULE PROCEDURE cmfe_CellML_IntermediateFieldCreateStartNumber - MODULE PROCEDURE cmfe_CellML_IntermediateFieldCreateStartObj - END INTERFACE cmfe_CellML_IntermediateFieldCreateStart - - !>Returns the CellML intermediate field for a CellML environment. - INTERFACE cmfe_CellML_IntermediateFieldGet - MODULE PROCEDURE cmfe_CellML_IntermediateFieldGetNumber - MODULE PROCEDURE cmfe_CellML_IntermediateFieldGetObj - END INTERFACE cmfe_CellML_IntermediateFieldGet - - !>Finishes the creation of CellML parameters field. \see OpenCMISS::Iron::cmfe_CellML_ParametersFieldCreateStart - INTERFACE cmfe_CellML_ParametersFieldCreateFinish - MODULE PROCEDURE cmfe_CellML_ParametersFieldCreateFinishNumber - MODULE PROCEDURE cmfe_CellML_ParametersFieldCreateFinishObj - END INTERFACE cmfe_CellML_ParametersFieldCreateFinish - - !>Starts the creation of CellML parameters field. \see OpenCMISS::Iron::cmfe_CellML_ParametersFieldCreateFinish - INTERFACE cmfe_CellML_ParametersFieldCreateStart - MODULE PROCEDURE cmfe_CellML_ParametersFieldCreateStartNumber - MODULE PROCEDURE cmfe_CellML_ParametersFieldCreateStartObj - END INTERFACE cmfe_CellML_ParametersFieldCreateStart - - !>Returns the CellML parameters field for a CellML environment. - INTERFACE cmfe_CellML_ParametersFieldGet - MODULE PROCEDURE cmfe_CellML_ParametersFieldGetNumber - MODULE PROCEDURE cmfe_CellML_ParametersFieldGetObj - END INTERFACE cmfe_CellML_ParametersFieldGet - - !>Validate and instantiate the specified CellML environment. - INTERFACE cmfe_CellML_Generate - MODULE PROCEDURE cmfe_CellML_GenerateNumber - MODULE PROCEDURE cmfe_CellML_GenerateObj - END INTERFACE cmfe_CellML_Generate - - PUBLIC CMFE_CELLML_MODELS_FIELD,CMFE_CELLML_STATE_FIELD,CMFE_CELLML_INTERMEDIATE_FIELD,CMFE_CELLML_PARAMETERS_FIELD - - PUBLIC cmfe_CellML_VariableSetAsKnown,cmfe_CellML_VariableSetAsWanted - - PUBLIC cmfe_CellML_CreateCellMLToFieldMap,cmfe_CellML_CreateFieldToCellMLMap + PUBLIC cmfe_DataProjection_ResultElementFaceNumberGet,cmfe_DataProjection_ResultElementLineNumberGet - PUBLIC cmfe_CellML_CreateFinish,cmfe_CellML_CreateStart - - PUBLIC cmfe_CellML_Destroy + PUBLIC cmfe_DataProjection_ResultExitTagGet - PUBLIC cmfe_CellML_FieldMapsCreateStart,cmfe_CellML_FieldMapsCreateFinish + PUBLIC cmfe_DataProjection_ResultMaximumErrorGet,cmfe_DataProjection_ResultMinimumErrorGet - PUBLIC cmfe_CellML_ModelImport + PUBLIC cmfe_DataProjection_ResultRMSErrorGet - PUBLIC cmfe_CellML_ModelsFieldCreateFinish,cmfe_CellML_ModelsFieldCreateStart,cmfe_CellML_ModelsFieldGet + PUBLIC cmfe_DataProjection_ResultXiGet,cmfe_DataProjection_ResultXiSet - PUBLIC cmfe_CellML_StateFieldCreateFinish,cmfe_CellML_StateFieldCreateStart,cmfe_CellML_StateFieldGet + PUBLIC cmfe_DataProjection_ResultProjectionVectorGet - PUBLIC cmfe_CellML_FieldComponentGet +!================================================================================================================================== +! +! EquationsRoutines +! +!================================================================================================================================== + + !Module parameters + + !> \addtogroup OpenCMISS_EquationsConstants OpenCMISS::Iron::Equations::Constants + !> \brief Equations constants. + !>@{ + !> \addtogroup OpenCMISS_EquationsOutputTypes OpenCMISS::Iron::Equations::OutputTypes + !> \brief Equations output types + !> \see OpenCMISS::Iron::Equations,OpenCMISS + !>@{ + INTEGER(INTG), PARAMETER :: CMFE_EQUATIONS_NO_OUTPUT = EQUATIONS_NO_OUTPUT!@} + !> \addtogroup OpenCMISS_EquationsSparsityTypes OpenCMISS::Iron::Equations::SparsityTypes + !> \brief Equations sparsity types + !> \see OpenCMISS::Iron::Equations,OpenCMISS + !>@{ + INTEGER(INTG), PARAMETER :: CMFE_EQUATIONS_SPARSE_MATRICES = EQUATIONS_SPARSE_MATRICES !@} + !> \addtogroup OpenCMISS_EquationsLumpingTypes OpenCMISS::Iron::Equations::LumpingTypes + !> \brief Equations lumping types + !> \see OpenCMISS::Iron::Equations,OpenCMISS + !>@{ + INTEGER(INTG), PARAMETER :: CMFE_EQUATIONS_UNLUMPED_MATRICES = EQUATIONS_UNLUMPED_MATRICES !@} + !> \addtogroup OpenCMISS_EquationsLinearityTypes OpenCMISS::Iron::Equations::LinearityTypes + !> \brief The equations linearity types + !> \see OpenCMISS::Iron::Equations,OpenCMISS + !>@{ + INTEGER(INTG), PARAMETER :: CMFE_EQUATIONS_LINEAR = EQUATIONS_LINEAR !@} + !> \addtogroup OpenCMISS_EquationsTimeDependenceTypes OpenCMISS::Iron::Equations::TimeDependenceTypes + !> \brief The equations time dependence types + !> \see OpenCMISS::Iron::Equations,OpenCMISS + !>@{ + INTEGER(INTG), PARAMETER :: CMFE_EQUATIONS_STATIC = EQUATIONS_STATIC !@} + !> \addtogroup OpenCMISS_EquationsJacobianCalculated OpenCMISS::Iron::Equations::JacobianCalculated + !> \brief Equations Jacobian matrices calculation types + !> \see OpenCMISS::Iron::Equations,OpenCMISS + !>@{ + INTEGER(INTG), PARAMETER :: CMFE_EQUATIONS_JACOBIAN_FINITE_DIFFERENCE_CALCULATED = EQUATIONS_JACOBIAN_FINITE_DIFFERENCE_CALCULATED!@} + !>@} + + !Module types + + !Module variables + + !Interfaces + + !>Destroys equations for an equations set. + INTERFACE cmfe_Equations_Destroy + MODULE PROCEDURE cmfe_Equations_DestroyNumber + MODULE PROCEDURE cmfe_Equations_DestroyObj + END INTERFACE cmfe_Equations_Destroy + + !>Gets the linearity type for equations. + INTERFACE cmfe_Equations_LinearityTypeGet + MODULE PROCEDURE cmfe_Equations_LinearityTypeGetNumber + MODULE PROCEDURE cmfe_Equations_LinearityTypeGetObj + END INTERFACE cmfe_Equations_LinearityTypeGet + + !>Gets the lumping type for equations. + INTERFACE cmfe_Equations_LumpingTypeGet + MODULE PROCEDURE cmfe_Equations_LumpingTypeGetNumber + MODULE PROCEDURE cmfe_Equations_LumpingTypeGetObj + END INTERFACE cmfe_Equations_LumpingTypeGet + + !>Sets/changes the lumping type for equations. + INTERFACE cmfe_Equations_LumpingTypeSet + MODULE PROCEDURE cmfe_Equations_LumpingTypeSetNumber + MODULE PROCEDURE cmfe_Equations_LumpingTypeSetObj + END INTERFACE cmfe_Equations_LumpingTypeSet + + !>Gets the output type for equations. + INTERFACE cmfe_Equations_OutputTypeGet + MODULE PROCEDURE cmfe_Equations_OutputTypeGetNumber + MODULE PROCEDURE cmfe_Equations_OutputTypeGetObj + END INTERFACE cmfe_Equations_OutputTypeGet + + !>Sets/changes the output type for equations. + INTERFACE cmfe_Equations_OutputTypeSet + MODULE PROCEDURE cmfe_Equations_OutputTypeSetNumber + MODULE PROCEDURE cmfe_Equations_OutputTypeSetObj + END INTERFACE cmfe_Equations_OutputTypeSet + +!>Gets the sparsity type for equations. + INTERFACE cmfe_Equations_SparsityTypeGet + MODULE PROCEDURE cmfe_Equations_SparsityTypeGetNumber + MODULE PROCEDURE cmfe_Equations_SparsityTypeGetObj + END INTERFACE cmfe_Equations_SparsityTypeGet + + !>Sets/changes the sparsity type for equations. + INTERFACE cmfe_Equations_SparsityTypeSet + MODULE PROCEDURE cmfe_Equations_SparsityTypeSetNumber + MODULE PROCEDURE cmfe_Equations_SparsityTypeSetObj + END INTERFACE cmfe_Equations_SparsityTypeSet + + !>Gets the time dependence type for equations. + INTERFACE cmfe_Equations_TimeDependenceTypeGet + MODULE PROCEDURE cmfe_Equations_TimeDependenceTypeGetNumber + MODULE PROCEDURE cmfe_Equations_TimeDependenceTypeGetObj + END INTERFACE cmfe_Equations_TimeDependenceTypeGet - PUBLIC cmfe_CellML_IntermediateFieldCreateFinish,cmfe_CellML_IntermediateFieldCreateStart + PUBLIC CMFE_EQUATIONS_NO_OUTPUT,CMFE_EQUATIONS_TIMING_OUTPUT,CMFE_EQUATIONS_MATRIX_OUTPUT, & + & CMFE_EQUATIONS_ELEMENT_MATRIX_OUTPUT,CMFE_EQUATIONS_NODAL_MATRIX_OUTPUT - PUBLIC cmfe_CellML_IntermediateFieldGet + PUBLIC CMFE_EQUATIONS_SPARSE_MATRICES,CMFE_EQUATIONS_FULL_MATRICES - PUBLIC cmfe_CellML_ParametersFieldCreateFinish,cmfe_CellML_ParametersFieldCreateStart,cmfe_CellML_ParametersFieldGet + PUBLIC CMFE_EQUATIONS_JACOBIAN_FINITE_DIFFERENCE_CALCULATED, CMFE_EQUATIONS_JACOBIAN_ANALYTIC_CALCULATED - PUBLIC cmfe_CellML_Generate + PUBLIC CMFE_EQUATIONS_UNLUMPED_MATRICES,CMFE_EQUATIONS_LUMPED_MATRICES -!!================================================================================================================================== -!! -!! ComputationalEnvironment -!! -!!================================================================================================================================== + PUBLIC CMFE_EQUATIONS_LINEAR,CMFE_EQUATIONS_NONLINEAR,CMFE_EQUATIONS_NONLINEAR_BCS - !Module parameters + PUBLIC CMFE_EQUATIONS_STATIC,CMFE_EQUATIONS_QUASISTATIC,CMFE_EQUATIONS_FIRST_ORDER_DYNAMIC, & + & CMFE_EQUATIONS_SECOND_ORDER_DYNAMIC, & + & CMFE_EQUATIONS_TIME_STEPPING - !Module types + PUBLIC cmfe_Equations_Destroy - !Module variables + PUBLIC cmfe_Equations_LinearityTypeGet - !Interfaces + PUBLIC cmfe_Equations_LumpingTypeGet,cmfe_Equations_LumpingTypeSet - PUBLIC cmfe_ComputationalWorldCommunicatorGet,cmfe_ComputationalWorldCommunicatorSet + PUBLIC cmfe_Equations_OutputTypeGet,cmfe_Equations_OutputTypeSet - PUBLIC cmfe_ComputationalNodeNumberGet + PUBLIC cmfe_Equations_SparsityTypeGet,cmfe_Equations_SparsityTypeSet - PUBLIC cmfe_ComputationalNumberOfNodesGet + PUBLIC cmfe_Equations_TimeDependenceTypeGet - PUBLIC cmfe_ComputationalWorkGroup_CreateStart + PUBLIC cmfe_Equations_JacobianMatricesTypesSet - PUBLIC cmfe_ComputationalWorkGroup_CreateFinish + PUBLIC cmfe_Equations_NumberOfLinearMatricesGet - PUBLIC cmfe_ComputationalWorkGroup_SubgroupAdd + PUBLIC cmfe_Equations_NumberOfJacobianMatricesGet - PUBLIC cmfe_Decomposition_WorldWorkGroupSet + PUBLIC cmfe_Equations_NumberOfDynamicMatricesGet -!!================================================================================================================================== -!! -!! CONSTANTS -!! -!!================================================================================================================================== + PUBLIC cmfe_Equations_LinearMatrixGet - !Module parameters + PUBLIC cmfe_Equations_JacobianMatrixGet - !> \addtogroup OpenCMISS_Constants OpenCMISS::Iron::Constants - !> \brief OpeCMISS constants. - !>@{ - !> \addtogroup OpenCMISS_DataTypeConstants OpenCMISS::Iron::Constants::DataTypeConstants - !> \brief Data type constants for base data types - !> \see OpenCMISS_Constants,OpenCMISS - !>@{ - INTEGER(INTG), PARAMETER :: CMFE_INTEGER_TYPE = INTEGER_TYPE !@} - !> \addtogroup OpenCMISS_GlobalDerivativeConstants OpenCMISS::Iron::Constants::GlobalDerivativeConstants - !> \brief Global derivative constant identifiers - !> \see OpenCMISS_CONSTANTS,OpenCMISS - !>@{ - INTEGER(INTG), PARAMETER :: CMFE_NO_GLOBAL_DERIV = NO_GLOBAL_DERIV !@} - !> \addtogroup OpenCMISS_ElementNormalXiDirections OpenCMISS::Iron::Constants::ElementNormalXiDirections - !> \brief Xi directions normal to element faces and lines. - !> \see OpenCMISS_CONSTANTS,OpenCMISS - !>@{ - INTEGER(INTG), PARAMETER :: CMFE_ELEMENT_NORMAL_MINUS_XI1 = ELEMENT_NORMAL_MINUS_XI1 !@} - !>@} + PUBLIC cmfe_Equations_DynamicMatrixGet - !Module types + PUBLIC cmfe_Equations_DynamicMatrixGetByType - !Module variables + PUBLIC cmfe_Equations_DynamicMatrixTypeGet - !Interfaces + PUBLIC cmfe_Equations_RhsVectorGet - PUBLIC CMFE_INTEGER_TYPE,CMFE_SHORT_INTEGER_TYPE,CMFE_LONG_INTEGER_TYPE,CMFE_SINGLE_REAL_TYPE,CMFE_DOUBLE_REAL_TYPE, & - & CMFE_QUADRAUPLE_REAL_TYPE,CMFE_CHARACTER_TYPE,CMFE_LOGICAL_TYPE,CMFE_SINGLE_COMPLEX_TYPE,CMFE_DOUBLE_COMPLEX_TYPE, & - & CMFE_QUADRUPLE_COMPLEX_TYPE + PUBLIC cmfe_Equations_ResidualVectorGet - PUBLIC CMFE_NO_GLOBAL_DERIV,CMFE_GLOBAL_DERIV_S1,CMFE_GLOBAL_DERIV_S2,CMFE_GLOBAL_DERIV_S1_S2, & - & CMFE_GLOBAL_DERIV_S3,CMFE_GLOBAL_DERIV_S1_S3,CMFE_GLOBAL_DERIV_S2_S3,CMFE_GLOBAL_DERIV_S1_S2_S3 + PUBLIC cmfe_Equations_ResidualNumberOfVariablesGet - PUBLIC CMFE_ELEMENT_NORMAL_MINUS_XI1,CMFE_ELEMENT_NORMAL_MINUS_XI2,CMFE_ELEMENT_NORMAL_MINUS_XI3,CMFE_ELEMENT_NORMAL_MINUS_XI4, & - & CMFE_ELEMENT_NORMAL_PLUS_XI1,CMFE_ELEMENT_NORMAL_PLUS_XI2,CMFE_ELEMENT_NORMAL_PLUS_XI3,CMFE_ELEMENT_NORMAL_PLUS_XI4 + PUBLIC cmfe_Equations_ResidualVariablesGet -!!================================================================================================================================== -!! -!! CONTROL_LOOP_ROUTINES -!! -!!================================================================================================================================== + PUBLIC cmfe_Equations_SourceVectorGet - !Module parameters +!================================================================================================================================== +! +! EquationsSetConstants +! +!================================================================================================================================== + + !Module parameters + + !> \addtogroup OpenCMISS_EquationsSetConstants OpenCMISS::Iron::EquationsSet::Constants + !> \brief Equations set constants. + !>@{ + !> \addtogroup OpenCMISS_EquationsSetClasses OpenCMISS::Iron::EquationsSet::Classes + !> \brief Equations set classes. + !> \see OpenCMISS::Iron::EquationsSet,OpenCMISS + !>@{ + INTEGER(INTG), PARAMETER :: CMFE_EQUATIONS_SET_NO_CLASS = EQUATIONS_SET_NO_CLASS !@} + !> \addtogroup OpenCMISS_EquationsSetTypes OpenCMISS::Iron::EquationsSet::Types + !> \brief Equations set Types. + !> \see OpenCMISS::Iron::EquationsSet,OpenCMISS + !>@{ + INTEGER(INTG), PARAMETER :: CMFE_EQUATIONS_SET_NO_TYPE = EQUATIONS_SET_NO_TYPE !@} + !> \addtogroup OpenCMISS_EquationsSetSubtypes OpenCMISS::Iron::EquationsSet::Subtypes + !> \brief Equations set subtypes. + !> \see OpenCMISS::Iron::EquationsSet,OpenCMISS + !>@{ + INTEGER(INTG), PARAMETER :: CMFE_EQUATIONS_SET_NO_SUBTYPE = EQUATIONS_SET_NO_SUBTYPE !@} + !> \addtogroup OpenCMISS_EquationsSetFittingSmoothingTypes OpenCMISS::Iron::EquationsSet::Fitting::SmoothingTypes + !> \brief The smoothing types for fitting equations sets. + !> \see OpenCMISS::Iron::EquationsSet,OpenCMISS + !>@{ + INTEGER(INTG), PARAMETER :: CMFE_EQUATIONS_SET_FITTING_NO_SMOOTHING = & + & EQUATIONS_SET_FITTING_NO_SMOOTHING !@} + + !>@} + !> \addtogroup OpenCMISS_EquationsSetSolutionMethods OpenCMISS::Iron::EquationsSet::SolutionMethods + !> \brief The solution method parameters + !> \see OpenCMISS::Iron::EquationsSet,OpenCMISS + !>@{ + INTEGER(INTG), PARAMETER :: CMFE_EQUATIONS_SET_FEM_SOLUTION_METHOD = EQUATIONS_SET_FEM_SOLUTION_METHOD !@} + + !> \addtogroup OpenCMISS_EquationsSetDerivedTensorTypes OpenCMISS::Iron::EquationsSet::DerivedTensorTypes + !> \brief EquationsSet derived tensor type parameters + !> \see OpenCMISS::Iron::EquationsSet,OpenCMISS + !>@{ + INTEGER(INTG), PARAMETER :: CMFE_EQUATIONS_SET_DERIVED_DEFORMATION_GRADIENT = EQUATIONS_SET_DEFORMATION_GRADIENT_TENSOR !@} + + !> \addtogroup OpenCMISS_EquationsSetDynamicMatrixTypes OpenCMISS::Iron::EquationsSet::DynamicMatrixTypes + !> \brief Type of matrix in a dynamic equations set + !>@{ + INTEGER(INTG), PARAMETER :: CMFE_EQUATIONS_MATRIX_STIFFNESS=EQUATIONS_MATRIX_STIFFNESS !@} + !> \addtogroup OpenCMISS_EquationsSetOutputTypes OpenCMISS::Iron::EquationsSet::OutputTypes + !> \brief Equations set output types + !> \see OpenCMISS::Iron::EquationsSet,OpenCMISS + !>@{ + INTEGER(INTG), PARAMETER :: CMFE_EQUATIONS_SET_NO_OUTPUT = EQUATIONS_SET_NO_OUTPUT!@} + + !> \addtogroup OpenCMISS_EquationsSetAnalyticFunctionTypes OpenCMISS::Iron::EquationsSet::AnalyticFunctionTypes + !> \brief The analytic function types. + !> \see OpenCMISS::Iron::EquationsSet,OpenCMISS + !>@{ + !> \addtogroup OpenCMISS_EquationsSetLaplaceAnalyticFunctionTypes OpenCMISS::Iron::EquationsSet::AnalyticFunctionTypes::Laplace + !> \brief The analytic function types for a Laplace equation + !> \see OpenCMISS::Iron::EquationsSet::AnalyticFunctionTypes,OpenCMISS + !>@{ + INTEGER(INTG), PARAMETER :: CMFE_EQUATIONS_SET_LAPLACE_EQUATION_TWO_DIM_1 = EQUATIONS_SET_LAPLACE_EQUATION_TWO_DIM_1 !@} + !> \addtogroup OpenCMISS_EquationsSetHelmholtzAnalyticFunctionTypes OpenCMISS::Iron::EquationsSet::AnalyticFunctionTypes::Helmholtz + !> \brief The analytic function types for a Helmholtz equation + !> \see OpenCMISS::Iron::EquationsSet::AnalyticFunctionTypes,OpenCMISS + !>@{ + INTEGER(INTG), PARAMETER :: CMFE_EQUATIONS_SET_HELMHOLTZ_EQUATION_TWO_DIM_1 = EQUATIONS_SET_HELMHOLTZ_EQUATION_TWO_DIM_1 !@} + !> \addtogroup OpenCMISS_PoiseuilleAnalyticFunctionTypes OpenCMISS::Iron::EquationsSet::AnalyticFunctionTypes::Poiseuille + !> \brief The analytic function types for a Poiseuille equation. + !> \see OpenCMISS::Iron::EquationsSet::AnalyticFunctionTypes,OpenCMISS + !>@{ + INTEGER(INTG), PARAMETER :: CMFE_EQUATIONS_SET_POISEUILLE_EQUATION_TWO_DIM_1 = EQUATIONS_SET_POISEUILLE_EQUATION_TWO_DIM_1 !@} + !> \addtogroup OpenCMISS_PoissonAnalyticFunctionTypes OpenCMISS::Iron::EquationsSet::AnalyticFunctionTypes::Poisson + !> \brief The analytic function types for a Poisson equation. + !> \see OpenCMISS::Iron::EquationsSet::AnalyticFunctionTypes,OpenCMISS + !>@{ + INTEGER(INTG), PARAMETER :: CMFE_EQUATIONS_SET_POISSON_EQUATION_TWO_DIM_1 = EQUATIONS_SET_POISSON_EQUATION_TWO_DIM_1 !@} + !> \addtogroup OpenCMISS_DiffusionAnalyticFunctionTypes OpenCMISS::Iron::EquationsSet::AnalyticFunctionTypes::Diffusion + !> \brief The analytic function types for a diffusion equation. + !> \see OpenCMISS::Iron::EquationsSet::AnalyticFunctionTypes,OpenCMISS + !>@{ + INTEGER(INTG), PARAMETER :: CMFE_EQUATIONS_SET_DIFFUSION_EQUATION_ONE_DIM_1 = EQUATIONS_SET_DIFFUSION_EQUATION_ONE_DIM_1 + INTEGER(INTG), PARAMETER :: CMFE_EQUATIONS_SET_DIFFUSION_EQUATION_TWO_DIM_1 = EQUATIONS_SET_DIFFUSION_EQUATION_TWO_DIM_1 !@} + !> \addtogroup OpenCMISS_AdvectionDiffusionAnalyticFunctionTypes OpenCMISS::Iron::EquationsSet::AnalyticFunctionTypes::AdvectionDiffusion + !> \brief The analytic function types for an advection-diffusion equation. + !> \see OpenCMISS::Iron::EquationsSet::AnalyticFunctionTypes,OpenCMISS + !>@{ + INTEGER(INTG), PARAMETER :: CMFE_EQUATIONS_SET_ADVECTION_DIFFUSION_EQUATION_TWO_DIM_1 = & + & EQUATIONS_SET_ADVECTION_DIFFUSION_EQUATION_TWO_DIM_1 ! \addtogroup OpenCMISS_StokesAnalyticFunctionTypes OpenCMISS::Iron::EquationsSet::AnalyticFunctionTypes::Stokes + !> \brief The analytic function types for a Stokes equation. + !> \see OpenCMISS::Iron::EquationsSet::AnalyticFunctionTypes,OpenCMISS + !>@{ + INTEGER(INTG), PARAMETER :: CMFE_EQUATIONS_SET_STOKES_EQUATION_TWO_DIM_1 = EQUATIONS_SET_STOKES_EQUATION_TWO_DIM_1 !@} + !> \addtogroup OpenCMISS_NavierStokesAnalyticFunctionTypes OpenCMISS::Iron::EquationsSet::AnalyticFunctionTypes::NavierStokes + !> \brief The analytic function types for a Navier-Stokes equation. + !> \see OpenCMISS::Iron::EquationsSet::AnalyticFunctionTypes,OpenCMISS + !>@{ + INTEGER(INTG), PARAMETER :: CMFE_EQUATIONS_SET_NAVIER_STOKES_EQUATION_TWO_DIM_POISEUILLE= & + & EQUATIONS_SET_NAVIER_STOKES_EQUATION_TWO_DIM_POISEUILLE !< fully developed 2D channel flow (parabolic) \see OpenCMISS_EquationsSetNavierStokesAnalyticFunctionTypes,OpenCMISS + INTEGER(INTG), PARAMETER :: CMFE_EQUATIONS_SET_NAVIER_STOKES_EQUATION_TWO_DIM_TAYLOR_GREEN= & + & EQUATIONS_SET_NAVIER_STOKES_EQUATION_TWO_DIM_TAYLOR_GREEN !< 2D dynamic nonlinear Taylor-Green vortex decay \see OpenCMISS_EquationsSetNavierStokesAnalyticFunctionTypes,OpenCMISS + INTEGER(INTG), PARAMETER :: CMFE_EQUATIONS_SET_NAVIER_STOKES_EQUATION_FLOWRATE_AORTA= & + & EQUATIONS_SET_NAVIER_STOKES_EQUATION_FLOWRATE_AORTA !< A fourier decomposed flow waveform for boundary conditions + INTEGER(INTG), PARAMETER :: CMFE_EQUATIONS_SET_NAVIER_STOKES_EQUATION_SINUSOID= & + & EQUATIONS_SET_NAVIER_STOKES_EQUATION_SINUSOID !< A sinusoidal flow waveform + INTEGER(INTG), PARAMETER :: CMFE_EQUATIONS_SET_NAVIER_STOKES_EQUATION_SPLINT_FROM_FILE= & + & EQUATIONS_SET_NAVIER_STOKES_EQUATION_SPLINT_FROM_FILE !< Spline integration of dependent values specified in a file + INTEGER(INTG), PARAMETER :: CMFE_EQUATIONS_SET_NAVIER_STOKES_EQUATION_TWO_DIM_1 = EQUATIONS_SET_NAVIER_STOKES_EQUATION_TWO_DIM_1 !@} + !> \addtogroup OpenCMISS_DarcyAnalyticFunctionTypes OpenCMISS::Iron::EquationsSet::AnalyticFunctionTypes::Darcy + !> \brief The analytic function types for a Darcy equation. + !> \see OpenCMISS::Iron::EquationsSet::AnalyticFunctionTypes,OpenCMISS + !>@{ + INTEGER(INTG), PARAMETER :: CMFE_EQUATIONS_SET_DARCY_EQUATION_TWO_DIM_1 = EQUATIONS_SET_DARCY_EQUATION_TWO_DIM_1 !@} + !> \addtogroup OpenCMISS_BurgersAnalyticFunctionTypes OpenCMISS::Iron::EquationsSet::AnalyticFunctionTypes::Burgers + !> \brief The analytic function types for a Burgers equation. + !> \see OpenCMISS::Iron::EquationsSet::AnalyticFunctionTypes,OpenCMISS + !>@{ + INTEGER(INTG), PARAMETER :: CMFE_EQUATIONS_SET_BURGERS_EQUATION_ONE_DIM_1 = EQUATIONS_SET_BURGERS_EQUATION_ONE_DIM_1 + INTEGER(INTG), PARAMETER :: CMFE_EQUATIONS_SET_GENERALISED_BURGERS_EQUATION_ONE_DIM_1 = & + & EQUATIONS_SET_GENERALISED_BURGERS_EQUATION_ONE_DIM_1 + INTEGER(INTG), PARAMETER :: CMFE_EQUATIONS_SET_GENERALISED_BURGERS_EQUATION_ONE_DIM_2 = & + & EQUATIONS_SET_GENERALISED_BURGERS_EQUATION_ONE_DIM_2 + INTEGER(INTG), PARAMETER :: CMFE_EQUATIONS_SET_STATIC_BURGERS_EQUATION_ONE_DIM_1 = & + & EQUATIONS_SET_STATIC_BURGERS_EQUATION_ONE_DIM_1 + !>@} + + !> \addtogroup OpenCMISS_EquationsSetLinearElasticityAnalyticFunctionTypes OpenCMISS::Iron::EquationsSet::AnalyticFunctionTypes::LinearElasticity + !> \brief The analytic function types for a LinearElasticity equation + !> \see OpenCMISS::Iron::EquationsSet::AnalyticFunctionTypes,OpenCMISS + !>@{ + INTEGER(INTG), PARAMETER :: CMFE_EQUATIONS_SET_LINEAR_ELASTICITY_ONE_DIM_1 = EQUATIONS_SET_LINEAR_ELASTICITY_ONE_DIM_1 !@} + !> \addtogroup OpenCMISS_EquationsSetFiniteElasticityAnalyticFunctionTypes OpenCMISS::Iron::EquationsSet::AnalyticFunctionTypes::FiniteElasticity + !> \brief The analytic function types for a FiniteElasticity equation + !> \see OpenCMISS::Iron::EquationsSet::AnalyticFunctionTypes,OpenCMISS + !>@{ + INTEGER(INTG), PARAMETER :: CMFE_EQUATIONS_SET_FINITE_ELASTICITY_CYLINDER = EQUATIONS_SET_FINITE_ELASTICITY_CYLINDER !@} + !>@} + !>@} + + !> \addtogroup OpenCMISS_AnalyticParamIndices OpenCMISS::Iron::FiniteElasticity::AnalyticParamIndices + !> \brief Indices for EQUATIONS_SET_ANALYTIC_TYPE%ANALYTIC_USER_PARAMS + !> \see OpenCMISS::Iron::FiniteElasticity::AnalyticParamIndices,OpenCMISS + !>@{ + INTEGER(INTG), PARAMETER :: CMFE_FINITE_ELASTICITY_ANALYTIC_CYLINDER_PARAM_PIN_IDX = & + & FINITE_ELASTICITY_ANALYTIC_CYLINDER_PARAM_PIN_IDX !@} + + !Module types + + !Module variables + + !Interfaces + + PUBLIC CMFE_EQUATIONS_SET_NO_CLASS,CMFE_EQUATIONS_SET_ELASTICITY_CLASS,CMFE_EQUATIONS_SET_FLUID_MECHANICS_CLASS, & + & CMFE_EQUATIONS_SET_ELECTROMAGNETICS_CLASS,CMFE_EQUATIONS_SET_CLASSICAL_FIELD_CLASS,CMFE_EQUATIONS_SET_BIOELECTRICS_CLASS, & + & CMFE_EQUATIONS_SET_MODAL_CLASS,CMFE_EQUATIONS_SET_FITTING_CLASS,CMFE_EQUATIONS_SET_OPTIMISATION_CLASS, & + & CMFE_EQUATIONS_SET_MULTI_PHYSICS_CLASS + + PUBLIC CMFE_EQUATIONS_SET_NO_TYPE,CMFE_EQUATIONS_SET_LINEAR_ELASTICITY_TYPE,CMFE_EQUATIONS_SET_FINITE_ELASTICITY_TYPE, & + & CMFE_EQUATIONS_SET_STOKES_EQUATION_TYPE,CMFE_EQUATIONS_SET_NAVIER_STOKES_EQUATION_TYPE, & + & CMFE_EQUATIONS_SET_DARCY_EQUATION_TYPE, & + & CMFE_EQUATIONS_SET_DARCY_PRESSURE_EQUATION_TYPE,CMFE_EQUATIONS_SET_BURGERS_EQUATION_TYPE, & + & CMFE_EQUATIONS_SET_STATIC_POISEUILLE_SUBTYPE, & + & CMFE_EQUATIONS_SET_DYNAMIC_POISEUILLE_SUBTYPE, & + & CMFE_EQUATIONS_SET_CHARACTERISTIC_EQUATION_TYPE, & + & CMFE_EQUATIONS_SET_STREE_EQUATION_TYPE, & + & CMFE_EQUATIONS_SET_ELECTROSTATIC_TYPE,CMFE_EQUATIONS_SET_MAGNETOSTATIC_TYPE,CMFE_EQUATIONS_SET_MAXWELLS_EQUATIONS_TYPE, & + & CMFE_EQUATIONS_SET_LAPLACE_EQUATION_TYPE,CMFE_EQUATIONS_SET_POISEUILLE_EQUATION_TYPE, & + & CMFE_EQUATIONS_SET_POISSON_EQUATION_TYPE, & + & CMFE_EQUATIONS_SET_HELMHOLTZ_EQUATION_TYPE,CMFE_EQUATIONS_SET_WAVE_EQUATION_TYPE, & + & CMFE_EQUATIONS_SET_DIFFUSION_EQUATION_TYPE,CMFE_EQUATIONS_SET_ADVECTION_EQUATION_TYPE, & + & CMFE_EQUATIONS_SET_ADVECTION_DIFFUSION_EQUATION_TYPE,CMFE_EQUATIONS_SET_REACTION_DIFFUSION_EQUATION_TYPE, & + & CMFE_EQUATIONS_SET_BIHARMONIC_EQUATION_TYPE,CMFE_EQUATIONS_SET_MONODOMAIN_EQUATION_TYPE, & + & CMFE_EQUATIONS_SET_BIDOMAIN_EQUATION_TYPE, & + & CMFE_EQUATIONS_SET_LINEAR_ELASTIC_MODAL_TYPE, & + & CMFE_EQUATIONS_SET_DATA_FITTING_EQUATION_TYPE,CMFE_EQUATIONS_SET_GAUSS_FITTING_EQUATION_TYPE, & + & CMFE_EQUATIONS_SET_MONODOMAIN_STRANG_SPLITTING_EQUATION_TYPE + + PUBLIC CMFE_EQUATIONS_SET_FINITE_ELASTICITY_DARCY_TYPE, & + & CMFE_EQUATIONS_SET_FINITE_ELASTICITY_STOKES_TYPE, CMFE_EQUATIONS_SET_FINITE_ELASTICITY_NAVIER_STOKES_TYPE, & + & CMFE_EQUATIONS_SET_DIFFUSION_DIFFUSION_TYPE, CMFE_EQUATIONS_SET_DIFFUSION_ADVECTION_DIFFUSION_TYPE + + PUBLIC CMFE_EQUATIONS_SET_NO_SUBTYPE,CMFE_EQUATIONS_SET_THREE_DIMENSIONAL_SUBTYPE, & + & CMFE_EQUATIONS_SET_TWO_DIMENSIONAL_PLANE_STRESS_SUBTYPE, & + & CMFE_EQUATIONS_SET_TWO_DIMENSIONAL_PLANE_STRAIN_SUBTYPE,CMFE_EQUATIONS_SET_ONE_DIMENSIONAL_SUBTYPE, & + & CMFE_EQUATIONS_SET_PLATE_SUBTYPE, & + & CMFE_EQUATIONS_SET_SHELL_SUBTYPE, & + & CMFE_EQUATIONS_SET_INCOMPRESSIBLE_MOONEY_RIVLIN_SUBTYPE,CMFE_EQUATIONS_SET_NEARLY_INCOMPRESSIBLE_MOONEY_RIVLIN_SUBTYPE, & + & CMFE_EQUATIONS_SET_MOONEY_RIVLIN_SUBTYPE, & + & CMFE_EQUATIONS_SET_REFERENCE_STATE_MOONEY_RIVLIN_SUBTYPE, CMFE_EQUATIONS_SET_ISOTROPIC_EXPONENTIAL_SUBTYPE, & + & CMFE_EQUATIONS_SET_ACTIVECONTRACTION_SUBTYPE,CMFE_EQUATIONS_SET_MOONEY_RIVLIN_ACTIVECONTRACTION_SUBTYPE, & + & CMFE_EQUATIONS_SET_COMPRESSIBLE_ACTIVECONTRACTION_SUBTYPE,CMFE_EQUATIONS_SET_TRANSVERSE_ISOTROPIC_ACTIVE_SUBTYPE, & + & CMFE_EQUATIONS_SET_TRANS_ISOTROPIC_ACTIVE_TRANSITION_SUBTYPE, & + & CMFE_EQUATIONS_SET_TRANSVERSE_ISOTROPIC_POLYNOMIAL_SUBTYPE,CMFE_EQUATIONS_SET_STVENANT_KIRCHOFF_ACTIVECONTRACTION_SUBTYPE, & + & CMFE_EQUATIONS_SET_ANISOTROPIC_POLYNOMIAL_SUBTYPE,CMFE_EQUATIONS_SET_ANISOTROPIC_POLYNOMIAL_ACTIVE_SUBTYPE, & + & CMFE_EQUATIONS_SET_TRANSVERSE_ISOTROPIC_EXPONENTIAL_SUBTYPE,CMFE_EQUATIONS_SET_ORTHOTROPIC_MATERIAL_COSTA_SUBTYPE, & + & CMFE_EQUATIONS_SET_COMPRESSIBLE_FINITE_ELASTICITY_SUBTYPE,CMFE_EQUATIONS_SET_INCOMPRESS_FINITE_ELASTICITY_DARCY_SUBTYPE, & + & CMFE_EQUATIONS_SET_ELASTICITY_DARCY_INRIA_MODEL_SUBTYPE,CMFE_EQUATIONS_SET_ELASTICITY_MULTI_COMP_DARCY_INRIA_SUBTYPE, & + & CMFE_EQUATIONS_SET_INCOMPRESS_ELASTICITY_DRIVEN_DARCY_SUBTYPE, & + & CMFE_EQUATIONS_SET_INCOMPRESSIBLE_ELASTICITY_DRIVEN_MR_SUBTYPE, & + & CMFE_EQUATIONS_SET_INCOMPRESS_ELAST_MULTI_COMP_DARCY_SUBTYPE,CMFE_EQUATIONS_SET_TRANSVERSE_ISOTROPIC_GUCCIONE_SUBTYPE, & + & CMFE_EQUATIONS_SET_GUCCIONE_ACTIVECONTRACTION_SUBTYPE, & + & CMFE_EQUATIONS_SET_ACTIVE_STRAIN_SUBTYPE, & + & CMFE_EQUATIONS_SET_MULTISCALE_ACTIVE_STRAIN_SUBTYPE, & + & CMFE_EQUATIONS_SET_REFERENCE_STATE_TRANSVERSE_GUCCIONE_SUBTYPE, & + & CMFE_EQUATIONS_SET_MEMBRANE_SUBTYPE, CMFE_EQUATIONS_SET_ORTHOTROPIC_HOLZAPFEL_OGDEN_SUBTYPE, & + & CMFE_EQUATIONS_SET_HOLZAPFEL_OGDEN_ACTIVECONTRACTION_SUBTYPE, & + & CMFE_EQUATIONS_SET_ELASTICITY_FLUID_PRES_STATIC_INRIA_SUBTYPE, & + & CMFE_EQUATIONS_SET_ELASTICITY_FLUID_PRES_HOLMES_MOW_SUBTYPE, & + & CMFE_EQUATIONS_SET_ELASTI_FLUID_PRES_HOLMES_MOW_ACTIVE_SUBTYPE, & + & CMFE_EQUATIONS_SET_TRANSVERSE_ISOTROPIC_HUMPHREY_YIN_SUBTYPE, & + & CMFE_EQUATIONS_SET_STATIC_STOKES_SUBTYPE, CMFE_EQUATIONS_SET_LAPLACE_STOKES_SUBTYPE, & + & CMFE_EQUATIONS_SET_TRANSIENT_STOKES_SUBTYPE,CMFE_EQUATIONS_SET_ALE_STOKES_SUBTYPE, & + & CMFE_EQUATIONS_SET_ALE_NAVIER_STOKES_SUBTYPE, CMFE_EQUATIONS_SET_ALE_RBS_NAVIER_STOKES_SUBTYPE, & + & CMFE_EQUATIONS_SET_OPTIMISED_STOKES_SUBTYPE,CMFE_EQUATIONS_SET_STATIC_NAVIER_STOKES_SUBTYPE, & + & CMFE_EQUATIONS_SET_LAPLACE_NAVIER_STOKES_SUBTYPE,CMFE_EQUATIONS_SET_TRANSIENT_NAVIER_STOKES_SUBTYPE, & + & CMFE_EQUATIONS_SET_TRANSIENT1D_NAVIER_STOKES_SUBTYPE, CMFE_EQUATIONS_SET_TRANSIENT_RBS_NAVIER_STOKES_SUBTYPE, & + & CMFE_EQUATIONS_SET_STATIC_RBS_NAVIER_STOKES_SUBTYPE, & + & CMFE_EQUATIONS_SET_CHARACTERISTIC_SUBTYPE, & + & CMFE_EQUATIONS_SET_TRANSIENT1D_ADV_NAVIER_STOKES_SUBTYPE, CMFE_EQUATIONS_SET_COUPLED1D0D_ADV_NAVIER_STOKES_SUBTYPE, & + & CMFE_EQUATIONS_SET_STREE1D0D_SUBTYPE, CMFE_EQUATIONS_SET_STREE1D0D_ADV_SUBTYPE, & + & CMFE_EQUATIONS_SET_MULTISCALE3D_NAVIER_STOKES_SUBTYPE, & + & CMFE_EQUATIONS_SET_CONSTITUTIVE_MU_NAVIER_STOKES_SUBTYPE, & + & CMFE_EQUATIONS_SET_COUPLED1D0D_NAVIER_STOKES_SUBTYPE, & + & CMFE_EQUATIONS_SET_OPTIMISED_NAVIER_STOKES_SUBTYPE,CMFE_EQUATIONS_SET_STANDARD_DARCY_SUBTYPE, & + & CMFE_EQUATIONS_SET_QUASISTATIC_DARCY_SUBTYPE,CMFE_EQUATIONS_SET_ALE_DARCY_SUBTYPE, & + & CMFE_EQUATIONS_SET_TRANSIENT_DARCY_SUBTYPE, & + & CMFE_EQUATIONS_SET_TRANSIENT_ALE_DARCY_SUBTYPE,CMFE_EQUATIONS_SET_MULTI_COMPARTMENT_DARCY_SUBTYPE, & + & CMFE_EQUATIONS_SET_STANDARD_LAPLACE_SUBTYPE,CMFE_EQUATIONS_SET_MOVING_MESH_LAPLACE_SUBTYPE, & + & CMFE_EQUATIONS_SET_GENERALISED_LAPLACE_SUBTYPE,CMFE_EQUATIONS_SET_CONSTANT_SOURCE_POISSON_SUBTYPE, & + & CMFE_EQUATIONS_SET_EXTRACELLULAR_BIDOMAIN_POISSON_SUBTYPE, & + & CMFE_EQUATIONS_SET_LINEAR_PRESSURE_POISSON_SUBTYPE, CMFE_EQUATIONS_SET_NONLINEAR_PRESSURE_POISSON_SUBTYPE, & + & CMFE_EQUATIONS_SET_ALE_PRESSURE_POISSON_SUBTYPE, CMFE_EQUATIONS_SET_FITTED_PRESSURE_POISSON_SUBTYPE,& + & CMFE_EQUATIONS_SET_LINEAR_SOURCE_POISSON_SUBTYPE,CMFE_EQUATIONS_SET_QUADRATIC_SOURCE_POISSON_SUBTYPE, & + & CMFE_EQUATIONS_SET_EXPONENTIAL_SOURCE_POISSON_SUBTYPE,CMFE_EQUATIONS_SET_STANDARD_HELMHOLTZ_SUBTYPE, & + & CMFE_EQUATIONS_SET_GENERALISED_HELMHOLTZ_SUBTYPE, & + & CMFE_EQUATIONS_SET_NO_SOURCE_DIFFUSION_SUBTYPE,CMFE_EQUATIONS_SET_CONSTANT_SOURCE_DIFFUSION_SUBTYPE, & + & CMFE_EQUATIONS_SET_LINEAR_SOURCE_DIFFUSION_SUBTYPE,CMFE_EQUATIONS_SET_QUADRATIC_SOURCE_DIFFUSION_SUBTYPE, & + & CMFE_EQUATIONS_SET_EXPONENTIAL_SOURCE_DIFFUSION_SUBTYPE,CMFE_EQUATIONS_SET_MULTI_COMP_TRANSPORT_DIFFUSION_SUBTYPE, & + & CMFE_EQUATIONS_SET_NO_SOURCE_ALE_DIFFUSION_SUBTYPE,CMFE_EQUATIONS_SET_CONSTANT_SOURCE_ALE_DIFFUSION_SUBTYPE, & + & CMFE_EQUATIONS_SET_LINEAR_SOURCE_ALE_DIFFUSION_SUBTYPE,CMFE_EQUATIONS_SET_QUADRATIC_SOURCE_ALE_DIFFUSION_SUBTYPE, & + & CMFE_EQUATIONS_SET_EXPONENTIAL_SOURCE_ALE_DIFFUSION_SUBTYPE, & + & CMFE_EQUATIONS_SET_ADVECTION_SUBTYPE, & + & CMFE_EQUATIONS_SET_NO_SOURCE_ADVECTION_DIFFUSION_SUBTYPE, & + & CMFE_EQUATIONS_SET_CONSTANT_SOURCE_ADVECTION_DIFFUSION_SUBTYPE, & + & CMFE_EQUATIONS_SET_LINEAR_SOURCE_ADVECTION_DIFFUSION_SUBTYPE, & + & CMFE_EQUATIONS_SET_QUADRATIC_SOURCE_ADVEC_DIFF_SUBTYPE,CMFE_EQUATIONS_SET_EXPONENTIAL_SOURCE_ADVEC_DIFF_SUBTYPE, & + & CMFE_EQUATIONS_SET_NO_SOURCE_ALE_ADVECTION_DIFFUSION_SUBTYPE, & + & CMFE_EQUATIONS_SET_CONSTANT_SOURCE_ALE_ADVEC_DIFF_SUBTYPE,CMFE_EQUATIONS_SET_LINEAR_SOURCE_ALE_ADVEC_DIFF_SUBTYPE, & + & CMFE_EQUATIONS_SET_QUADRATIC_SOURCE_ALE_ADVEC_DIFF_SUBTYPE,CMFE_EQUATIONS_SET_EXP_SOURCE_ALE_ADVECTION_DIFFUSION_SUBTYPE, & + & CMFE_EQUATIONS_SET_NO_SOURCE_STATIC_ADVEC_DIFF_SUBTYPE, CMFE_EQUATIONS_SET_CONSTANT_SOURCE_STATIC_ADVEC_DIFF_SUBTYPE, & + & CMFE_EQUATIONS_SET_LINEAR_SOURCE_STATIC_ADVEC_DIFF_SUBTYPE, & + & CMFE_EQUATIONS_SET_NO_SOURCE_ADVECTION_DIFF_SUPG_SUBTYPE, CMFE_EQUATIONS_SET_CONSTANT_SOURCE_ADVECTION_DIFF_SUPG_SUBTYPE, & + & CMFE_EQUATIONS_SET_LINEAR_SOURCE_ADVECTION_DIFF_SUPG_SUBTYPE, CMFE_EQUATIONS_SET_QUAD_SOURCE_ADVECTION_DIFF_SUPG_SUBTYPE, & + & CMFE_EQUATIONS_SET_EXP_SOURCE_ADVECTION_DIFF_SUPG_SUBTYPE, & + & CMFE_EQUATIONS_SET_NO_SOURCE_ALE_ADVECTION_DIFF_SUPG_SUBTYPE, & + & CMFE_EQUATIONS_SET_CONSTANT_SOURCE_ALE_ADVEC_DIFF_SUPG_SUBTYPE, & + & CMFE_EQUATIONS_SET_LINEAR_SOURCE_ALE_ADVEC_DIFF_SUPG_SUBTYPE, & + & CMFE_EQUATIONS_SET_QUAD_SOURCE_ALE_ADVECTION_DIFF_SUPG_SUBTYPE, & + & CMFE_EQUATIONS_SET_EXP_SOURCE_ALE_ADVECTION_DIFF_SUPG_SUBTYPE, & + & CMFE_EQUATIONS_SET_NO_SOURCE_STATIC_ADVEC_DIFF_SUPG_SUBTYPE, & + & CMFE_EQUATIONS_SET_CONST_SOURCE_STATIC_ADVEC_DIFF_SUPG_SUBTYPE, & + & CMFE_EQUATIONS_SET_LIN_SOURCE_STATIC_ADVEC_DIFF_SUPG_SUBTYPE, & + & CMFE_EQUATIONS_SET_MULTI_COMP_TRANSPORT_ADVEC_DIFF_SUBTYPE,CMFE_EQUATIONS_SET_MULT_COMP_TRANSPORT_ADVEC_DIFF_SUPG_SUBTYPE, & + & CMFE_EQUATIONS_SET_PGM_STOKES_SUBTYPE, & + & CMFE_EQUATIONS_SET_FIRST_BIDOMAIN_SUBTYPE,CMFE_EQUATIONS_SET_SECOND_BIDOMAIN_SUBTYPE, & + & CMFE_EQUATIONS_SET_MONODOMAIN_BUENOOROVIO_SUBTYPE,& + & CMFE_EQUATIONS_SET_MONODOMAIN_TENTUSSCHER06_SUBTYPE ,& + & CMFE_EQUATIONS_SET_DATA_POINT_FITTING_SUBTYPE,CMFE_EQUATIONS_SET_GENERALISED_DATA_FITTING_SUBTYPE, & + & CMFE_EQUATIONS_SET_VECTOR_DATA_FITTING_SUBTYPE,CMFE_EQUATIONS_SET_DIVFREE_VECTOR_DATA_FITTING_SUBTYPE, & + & CMFE_EQUATIONS_SET_VECTOR_DATA_PRE_FITTING_SUBTYPE,CMFE_EQUATIONS_SET_DIVFREE_VECTOR_DATA_PRE_FITTING_SUBTYPE, & + & CMFE_EQUATIONS_SET_MAT_PROPERTIES_DATA_FITTING_SUBTYPE,CMFE_EQUATIONS_SET_MAT_PROP_INRIA_MODEL_DATA_FITTING_SUBTYPE, & + & CMFE_EQUATIONS_SET_DATA_POINT_VECTOR_STATIC_FITTING_SUBTYPE, & + & CMFE_EQUATIONS_SET_DATA_PT_VECTOR_QUASISTATIC_FITTING_SUBTYPE, & + & CMFE_EQUATIONS_SET_GAUSS_POINT_FITTING_SUBTYPE, & + & CMFE_EQUATIONS_SET_PGM_NAVIER_STOKES_SUBTYPE, & + & CMFE_EQUATIONS_SET_CONSTITUTIVE_LAW_IN_CELLML_EVALUATE_SUBTYPE, & + & CMFE_EQUATIONS_SET_COUPLED_SOURCE_DIFFUSION_DIFFUSION_SUBTYPE, & + & CMFE_EQUATIONS_SET_COUPLED_SOURCE_DIFFUSION_ADVEC_DIFF_SUBTYPE, & + & CMFE_EQUATIONS_SET_BURGERS_SUBTYPE,CMFE_EQUATIONS_SET_GENERALISED_BURGERS_SUBTYPE, & + & CMFE_EQUATIONS_SET_STATIC_BURGERS_SUBTYPE, & + & CMFE_EQUATIONS_SET_INVISCID_BURGERS_SUBTYPE,CMFE_EQUATIONS_SET_STANDARD_MONODOMAIN_ELASTICITY_SUBTYPE, & + & CMFE_EQUATIONS_SET_1D3D_MONODOMAIN_ELASTICITY_SUBTYPE,CMFE_EQUATIONS_SET_MONODOMAIN_ELASTICITY_W_TITIN_SUBTYPE, & + & CMFE_EQUATIONS_SET_1D3D_MONODOMAIN_ACTIVE_STRAIN_SUBTYPE, & + & CMFE_EQUATIONS_SET_CONSTIT_AND_GROWTH_LAW_IN_CELLML_SUBTYPE, & + & CMFE_EQUATIONS_SET_GROWTH_LAW_IN_CELLML_SUBTYPE, & + & CMFE_EQUATIONS_SET_MR_AND_GROWTH_LAW_IN_CELLML_SUBTYPE, & + & CMFE_EQUATIONS_SET_MONODOMAIN_ELASTICITY_VELOCITY_SUBTYPE, & + & CMFE_EQUATIONS_SET_FINITE_ELASTICITY_NAVIER_STOKES_ALE_SUBTYPE, & + & CMFE_EQUATIONS_SET_RATE_BASED_SMOOTH_MODEL_SUBTYPE,CMFE_EQUATIONS_SET_COMPRESSIBLE_RATE_BASED_SMOOTH_MODEL_SUBTYPE, & + & CMFE_EQUATIONS_SET_RATE_BASED_GROWTH_MODEL_SUBTYPE,CMFE_EQUATIONS_SET_COMPRESSIBLE_RATE_BASED_GROWTH_MODEL_SUBTYPE + + PUBLIC CMFE_EQUATIONS_SET_FITTING_NO_SMOOTHING,CMFE_EQUATIONS_SET_FITTING_SOBOLEV_VALUE_SMOOTHING, & + & CMFE_EQUATIONS_SET_FITTING_SOBOLEV_DIFFERENCE_SMOOTHING,CMFE_EQUATIONS_SET_FITTING_STRAIN_ENERGY_SMOOTHING + + PUBLIC CMFE_EQUATIONS_SET_CELLML_REAC_SPLIT_REAC_DIFF_SUBTYPE, CMFE_EQUATIONS_SET_CELLML_REAC_NO_SPLIT_REAC_DIFF_SUBTYPE, & + & CMFE_EQUATIONS_SET_CONSTANT_REAC_DIFF_SUBTYPE + + PUBLIC CMFE_EQUATIONS_SET_FEM_SOLUTION_METHOD,CMFE_EQUATIONS_SET_BEM_SOLUTION_METHOD,CMFE_EQUATIONS_SET_FD_SOLUTION_METHOD, & + & CMFE_EQUATIONS_SET_FV_SOLUTION_METHOD,CMFE_EQUATIONS_SET_GFEM_SOLUTION_METHOD,CMFE_EQUATIONS_SET_GFD_SOLUTION_METHOD, & + & CMFE_EQUATIONS_SET_GFV_SOLUTION_METHOD + + PUBLIC CMFE_EQUATIONS_SET_DERIVED_DEFORMATION_GRADIENT,CMFE_EQUATIONS_SET_DERIVED_R_CAUCHY_GREEN_DEFORMATION, & + & CMFE_EQUATIONS_SET_DERIVED_L_CAUCHY_GREEN_DEFORMATION,CMFE_EQUATIONS_SET_DERIVED_GREEN_LAGRANGE_STRAIN, & + & CMFE_EQUATIONS_SET_DERIVED_CAUCHY_STRESS,CMFE_EQUATIONS_SET_DERIVED_FIRST_PK_STRESS, & + & CMFE_EQUATIONS_SET_DERIVED_SECOND_PK_STRESS + + PUBLIC CMFE_EQUATIONS_MATRIX_STIFFNESS,CMFE_EQUATIONS_MATRIX_DAMPING,CMFE_EQUATIONS_MATRIX_MASS + + PUBLIC CMFE_EQUATIONS_SET_NO_OUTPUT,CMFE_EQUATIONS_SET_PROGRESS_OUTPUT + + PUBLIC CMFE_EQUATIONS_SET_LAPLACE_EQUATION_TWO_DIM_1,CMFE_EQUATIONS_SET_LAPLACE_EQUATION_TWO_DIM_2, & + & CMFE_EQUATIONS_SET_LAPLACE_EQUATION_THREE_DIM_1,CMFE_EQUATIONS_SET_LAPLACE_EQUATION_THREE_DIM_2 + + PUBLIC CMFE_EQUATIONS_SET_HELMHOLTZ_EQUATION_TWO_DIM_1 + + PUBLIC CMFE_EQUATIONS_SET_LINEAR_ELASTICITY_ONE_DIM_1,CMFE_EQUATIONS_SET_LINEAR_ELASTICITY_TWO_DIM_1, & + & CMFE_EQUATIONS_SET_LINEAR_ELASTICITY_TWO_DIM_2,CMFE_EQUATIONS_SET_LINEAR_ELASTICITY_THREE_DIM_1, & + & CMFE_EQUATIONS_SET_LINEAR_ELASTICITY_THREE_DIM_2 + + PUBLIC CMFE_EQUATIONS_SET_DIFFUSION_EQUATION_ONE_DIM_1,CMFE_EQUATIONS_SET_DIFFUSION_EQUATION_TWO_DIM_1, & + & CMFE_EQUATIONS_SET_DIFFUSION_EQUATION_THREE_DIM_1, & + & CMFE_EQUATIONS_SET_LINEAR_SOURCE_DIFFUSION_THREE_DIM_1,CMFE_EQUATIONS_SET_QUADRATIC_SOURCE_DIFFUSION_ONE_DIM_1, & + & CMFE_EQUATIONS_SET_EXPONENTIAL_SOURCE_DIFFUSION_ONE_DIM_1,CMFE_EQUATIONS_SET_MULTI_COMP_DIFFUSION_TWO_COMP_TWO_DIM, & + & CMFE_EQUATIONS_SET_MULTI_COMP_DIFFUSION_TWO_COMP_THREE_DIM,CMFE_EQUATIONS_SET_MULTI_COMP_DIFFUSION_THREE_COMP_THREE_DIM, & + & CMFE_EQUATIONS_SET_MULTI_COMP_DIFFUSION_FOUR_COMP_THREE_DIM + + PUBLIC CMFE_EQUATIONS_SET_ADVECTION_DIFFUSION_EQUATION_TWO_DIM_1 + + PUBLIC CMFE_EQUATIONS_SET_POISEUILLE_EQUATION_TWO_DIM_1 + + PUBLIC CMFE_EQUATIONS_SET_BURGERS_EQUATION_ONE_DIM_1,CMFE_EQUATIONS_SET_GENERALISED_BURGERS_EQUATION_ONE_DIM_1, & + & CMFE_EQUATIONS_SET_GENERALISED_BURGERS_EQUATION_ONE_DIM_2, & + & CMFE_EQUATIONS_SET_STATIC_BURGERS_EQUATION_ONE_DIM_1 + + PUBLIC CMFE_EQUATIONS_SET_POISSON_EQUATION_TWO_DIM_1,CMFE_EQUATIONS_SET_POISSON_EQUATION_TWO_DIM_2, & + & CMFE_EQUATIONS_SET_POISSON_EQUATION_TWO_DIM_3 + PUBLIC CMFE_EQUATIONS_SET_POISSON_EQUATION_THREE_DIM_1,CMFE_EQUATIONS_SET_POISSON_EQUATION_THREE_DIM_2, & + & CMFE_EQUATIONS_SET_POISSON_EQUATION_THREE_DIM_3 + PUBLIC CMFE_EQUATIONS_SET_PRESSURE_POISSON_THREE_DIM_1, & + & CMFE_EQUATIONS_SET_PRESSURE_POISSON_THREE_DIM_2 + + PUBLIC CMFE_EQUATIONS_SET_STOKES_EQUATION_TWO_DIM_1,CMFE_EQUATIONS_SET_STOKES_EQUATION_TWO_DIM_2, & + & CMFE_EQUATIONS_SET_STOKES_EQUATION_TWO_DIM_3 + PUBLIC CMFE_EQUATIONS_SET_STOKES_EQUATION_TWO_DIM_4,CMFE_EQUATIONS_SET_STOKES_EQUATION_TWO_DIM_5 + PUBLIC CMFE_EQUATIONS_SET_STOKES_EQUATION_THREE_DIM_1,CMFE_EQUATIONS_SET_STOKES_EQUATION_THREE_DIM_2, & + & CMFE_EQUATIONS_SET_STOKES_EQUATION_THREE_DIM_3 + PUBLIC CMFE_EQUATIONS_SET_STOKES_EQUATION_THREE_DIM_4,CMFE_EQUATIONS_SET_STOKES_EQUATION_THREE_DIM_5 + + PUBLIC CMFE_EQUATIONS_SET_NAVIER_STOKES_EQUATION_TWO_DIM_POISEUILLE, & + & CMFE_EQUATIONS_SET_NAVIER_STOKES_EQUATION_TWO_DIM_TAYLOR_GREEN + PUBLIC CMFE_EQUATIONS_SET_NAVIER_STOKES_EQUATION_FLOWRATE_AORTA, & + & CMFE_EQUATIONS_SET_NAVIER_STOKES_EQUATION_SINUSOID, & + & CMFE_EQUATIONS_SET_NAVIER_STOKES_EQUATION_SPLINT_FROM_FILE + PUBLIC CMFE_EQUATIONS_SET_NAVIER_STOKES_EQUATION_TWO_DIM_1,CMFE_EQUATIONS_SET_NAVIER_STOKES_EQUATION_TWO_DIM_2, & + & CMFE_EQUATIONS_SET_NAVIER_STOKES_EQUATION_TWO_DIM_3 + PUBLIC CMFE_EQUATIONS_SET_NAVIER_STOKES_EQUATION_TWO_DIM_4,CMFE_EQUATIONS_SET_NAVIER_STOKES_EQUATION_TWO_DIM_5 + PUBLIC CMFE_EQUATIONS_SET_NAVIER_STOKES_EQUATION_THREE_DIM_1,CMFE_EQUATIONS_SET_NAVIER_STOKES_EQUATION_THREE_DIM_2, & + & CMFE_EQUATIONS_SET_NAVIER_STOKES_EQUATION_THREE_DIM_3 + PUBLIC CMFE_EQUATIONS_SET_NAVIER_STOKES_EQUATION_THREE_DIM_4,CMFE_EQUATIONS_SET_NAVIER_STOKES_EQUATION_THREE_DIM_5 + + PUBLIC CMFE_EQUATIONS_SET_DARCY_EQUATION_TWO_DIM_1,CMFE_EQUATIONS_SET_DARCY_EQUATION_TWO_DIM_2, & + & CMFE_EQUATIONS_SET_DARCY_EQUATION_TWO_DIM_3 + PUBLIC CMFE_EQUATIONS_SET_DARCY_EQUATION_THREE_DIM_1,CMFE_EQUATIONS_SET_DARCY_EQUATION_THREE_DIM_2, & + & CMFE_EQUATIONS_SET_DARCY_EQUATION_THREE_DIM_3 + PUBLIC CMFE_EQUATIONS_SET_INCOMP_ELAST_DARCY_ANALYTIC_DARCY + + PUBLIC CMFE_EQUATIONS_SET_FINITE_ELASTICITY_CYLINDER + PUBLIC CMFE_FINITE_ELASTICITY_ANALYTIC_CYLINDER_PARAM_PIN_IDX,CMFE_FINITE_ELASTICITY_ANALYTIC_CYLINDER_PARAM_POUT_IDX + PUBLIC CMFE_FINITE_ELASTICITY_ANALYTIC_CYLINDER_PARAM_LAMBDA_IDX,CMFE_FINITE_ELASTICITY_ANALYTIC_CYLINDER_PARAM_TSI_IDX + PUBLIC CMFE_FINITE_ELASTICITY_ANALYTIC_CYLINDER_PARAM_RIN_IDX,CMFE_FINITE_ELASTICITY_ANALYTIC_CYLINDER_PARAM_ROUT_IDX + PUBLIC CMFE_FINITE_ELASTICITY_ANALYTIC_CYLINDER_PARAM_C1_IDX,CMFE_FINITE_ELASTICITY_ANALYTIC_CYLINDER_PARAM_C2_IDX + +!================================================================================================================================== +! +! EQUATIONS_SET_ROUTINES +! +!================================================================================================================================== + + !Module parameters + + !Module types + + !Module variables + + !Interfaces + + !>Finish the creation of a analytic solution for an equations set. \see OpenCMISS::Iron::cmfe_EquationsSet_AnalyticCreateStart + INTERFACE cmfe_EquationsSet_AnalyticCreateFinish + MODULE PROCEDURE cmfe_EquationsSet_AnalyticCreateFinishNumber + MODULE PROCEDURE cmfe_EquationsSet_AnalyticCreateFinishObj + END INTERFACE cmfe_EquationsSet_AnalyticCreateFinish + + !>Start the creation of a analytic solution for an equations set. \see OpenCMISS::Iron::cmfe_EquationsSet_AnalyticCreateFinish + INTERFACE cmfe_EquationsSet_AnalyticCreateStart + MODULE PROCEDURE cmfe_EquationsSet_AnalyticCreateStartNumber + MODULE PROCEDURE cmfe_EquationsSet_AnalyticCreateStartObj + END INTERFACE cmfe_EquationsSet_AnalyticCreateStart + + !>Destroy the analytic solution for an equations set. + INTERFACE cmfe_EquationsSet_AnalyticDestroy + MODULE PROCEDURE cmfe_EquationsSet_AnalyticDestroyNumber + MODULE PROCEDURE cmfe_EquationsSet_AnalyticDestroyObj + END INTERFACE cmfe_EquationsSet_AnalyticDestroy + + !>Evaluates the current analytic solution for an equations set. + INTERFACE cmfe_EquationsSet_AnalyticEvaluate + MODULE PROCEDURE cmfe_EquationsSet_AnalyticEvaluateNumber + MODULE PROCEDURE cmfe_EquationsSet_AnalyticEvaluateObj + END INTERFACE cmfe_EquationsSet_AnalyticEvaluate + + !>Returns the analytic time for an equations set. + INTERFACE cmfe_EquationsSet_AnalyticTimeGet + MODULE PROCEDURE cmfe_EquationsSet_AnalyticTimeGetNumber + MODULE PROCEDURE cmfe_EquationsSet_AnalyticTimeGetObj + END INTERFACE cmfe_EquationsSet_AnalyticTimeGet + + !>Sets/changes the analytic time for an equations set. + INTERFACE cmfe_EquationsSet_AnalyticTimeSet + MODULE PROCEDURE cmfe_EquationsSet_AnalyticTimeSetNumber + MODULE PROCEDURE cmfe_EquationsSet_AnalyticTimeSetObj + END INTERFACE cmfe_EquationsSet_AnalyticTimeSet + + !>Finish the creation of an equations set. \see OpenCMISS::Iron::cmfe_EquationsSet_CreateStart + INTERFACE cmfe_EquationsSet_CreateFinish + MODULE PROCEDURE cmfe_EquationsSet_CreateFinishNumber + MODULE PROCEDURE cmfe_EquationsSet_CreateFinishObj + END INTERFACE cmfe_EquationsSet_CreateFinish + + !>Start the creation of an equations set on a region. \see OpenCMISS::Iron::cmfe_EquationsSet_CreateFinish + INTERFACE cmfe_EquationsSet_CreateStart + MODULE PROCEDURE cmfe_EquationsSet_CreateStartNumber + MODULE PROCEDURE cmfe_EquationsSet_CreateStartObj + END INTERFACE cmfe_EquationsSet_CreateStart + + !>Destroy an equations set. + INTERFACE cmfe_EquationsSet_Destroy + MODULE PROCEDURE cmfe_EquationsSet_DestroyNumber + MODULE PROCEDURE cmfe_EquationsSet_DestroyObj + END INTERFACE cmfe_EquationsSet_Destroy + + !>Finish the creation of dependent variables for an equations set. \see OpenCMISS::Iron::cmfe_EquationsSet_DependentCreateStart + INTERFACE cmfe_EquationsSet_DependentCreateFinish + MODULE PROCEDURE cmfe_EquationsSet_DependentCreateFinishNumber + MODULE PROCEDURE cmfe_EquationsSet_DependentCreateFinishObj + END INTERFACE cmfe_EquationsSet_DependentCreateFinish + + !>Start the creation of dependent variables for an equations set. \see OpenCMISS::Iron::cmfe_EquationsSet_DependentCreateFinish + INTERFACE cmfe_EquationsSet_DependentCreateStart + MODULE PROCEDURE cmfe_EquationsSet_DependentCreateStartNumber + MODULE PROCEDURE cmfe_EquationsSet_DependentCreateStartObj + END INTERFACE cmfe_EquationsSet_DependentCreateStart + + !>Destroy the dependent variables for an equations set. + INTERFACE cmfe_EquationsSet_DependentDestroy + MODULE PROCEDURE cmfe_EquationsSet_DependentDestroyNumber + MODULE PROCEDURE cmfe_EquationsSet_DependentDestroyObj + END INTERFACE cmfe_EquationsSet_DependentDestroy + + !>Finish the creation of derived variables for an equations set. \see OpenCMISS::Iron::cmfe_EquationsSet_DerivedCreateStart + INTERFACE cmfe_EquationsSet_DerivedCreateFinish + MODULE PROCEDURE cmfe_EquationsSet_DerivedCreateFinishNumber + MODULE PROCEDURE cmfe_EquationsSet_DerivedCreateFinishObj + END INTERFACE cmfe_EquationsSet_DerivedCreateFinish + + !>Start the creation of derived variables for an equations set. These are used to store any intermediate + !>calculated values, for example stress and strain fields in an elasticity problem. \see OpenCMISS::Iron::cmfe_EquationsSet_DerivedCreateFinish + INTERFACE cmfe_EquationsSet_DerivedCreateStart + MODULE PROCEDURE cmfe_EquationsSet_DerivedCreateStartNumber + MODULE PROCEDURE cmfe_EquationsSet_DerivedCreateStartObj + END INTERFACE cmfe_EquationsSet_DerivedCreateStart + + !>Destroy the derived variables for an equations set. + INTERFACE cmfe_EquationsSet_DerivedDestroy + MODULE PROCEDURE cmfe_EquationsSet_DerivedDestroyNumber + MODULE PROCEDURE cmfe_EquationsSet_DerivedDestroyObj + END INTERFACE cmfe_EquationsSet_DerivedDestroy + + !>Finish the creation of equations for an equations set. \see OpenCMISS::Iron::cmfe_EquationsSet_EquationsCreateStart + INTERFACE cmfe_EquationsSet_EquationsCreateFinish + MODULE PROCEDURE cmfe_EquationsSet_EquationsCreateFinishNumber + MODULE PROCEDURE cmfe_EquationsSet_EquationsCreateFinishObj + END INTERFACE cmfe_EquationsSet_EquationsCreateFinish + + !>Start the creation of equations for an equations set. \see OpenCMISS::Iron::cmfe_EquationsSet_EquationsCreateFinish + INTERFACE cmfe_EquationsSet_EquationsCreateStart + MODULE PROCEDURE cmfe_EquationsSet_EquationsCreateStartNumber + MODULE PROCEDURE cmfe_EquationsSet_EquationsCreateStartObj + END INTERFACE cmfe_EquationsSet_EquationsCreateStart + + !>Destroy the equations for an equations set. + INTERFACE cmfe_EquationsSet_EquationsDestroy + MODULE PROCEDURE cmfe_EquationsSet_EquationsDestroyNumber + MODULE PROCEDURE cmfe_EquationsSet_EquationsDestroyObj + END INTERFACE cmfe_EquationsSet_EquationsDestroy + + !>Finish the creation of independent fields for an equations set. \see OpenCMISS::Iron::cmfe_EquationsSet_IndependentCreateStart + INTERFACE cmfe_EquationsSet_IndependentCreateFinish + MODULE PROCEDURE cmfe_EquationsSet_IndependentCreateFinishNumber + MODULE PROCEDURE cmfe_EquationsSet_IndependentCreateFinishObj + END INTERFACE cmfe_EquationsSet_IndependentCreateFinish + + !>Start the creation of independent fields for an equations set. \see OpenCMISS::Iron::cmfe_EquationsSet_MaterialsCreateFinish + INTERFACE cmfe_EquationsSet_IndependentCreateStart + MODULE PROCEDURE cmfe_EquationsSet_IndependentCreateStartNumber + MODULE PROCEDURE cmfe_EquationsSet_IndependentCreateStartObj + END INTERFACE cmfe_EquationsSet_IndependentCreateStart + + !>Destroy the independent fields for an equations set. + INTERFACE cmfe_EquationsSet_IndependentDestroy + MODULE PROCEDURE cmfe_EquationsSet_IndependentDestroyNumber + MODULE PROCEDURE cmfe_EquationsSet_IndependentDestroyObj + END INTERFACE cmfe_EquationsSet_IndependentDestroy + + !>Returns the label for an equations set. + INTERFACE cmfe_EquationsSet_LabelGet + MODULE PROCEDURE cmfe_EquationsSet_LabelGetCNumber + MODULE PROCEDURE cmfe_EquationsSet_LabelGetCObj + MODULE PROCEDURE cmfe_EquationsSet_LabelGetVSNumber + MODULE PROCEDURE cmfe_EquationsSet_LabelGetVSObj + END INTERFACE cmfe_EquationsSet_LabelGet + + !>Sets/changes the label for an equations set. + INTERFACE cmfe_EquationsSet_LabelSet + MODULE PROCEDURE cmfe_EquationsSet_LabelSetCNumber + MODULE PROCEDURE cmfe_EquationsSet_LabelSetCObj + MODULE PROCEDURE cmfe_EquationsSet_LabelSetVSNumber + MODULE PROCEDURE cmfe_EquationsSet_LabelSetVSObj + END INTERFACE cmfe_EquationsSet_LabelSet + + !>Finish the creation of materials for an equations set. \see OpenCMISS::Iron::cmfe_EquationsSet_MaterialsCreateStart + INTERFACE cmfe_EquationsSet_MaterialsCreateFinish + MODULE PROCEDURE cmfe_EquationsSet_MaterialsCreateFinishNumber + MODULE PROCEDURE cmfe_EquationsSet_MaterialsCreateFinishObj + END INTERFACE cmfe_EquationsSet_MaterialsCreateFinish + + !>Start the creation of materials for an equations set. \see OpenCMISS::Iron::cmfe_EquationsSet_MaterialsCreateFinish + INTERFACE cmfe_EquationsSet_MaterialsCreateStart + MODULE PROCEDURE cmfe_EquationsSet_MaterialsCreateStartNumber + MODULE PROCEDURE cmfe_EquationsSet_MaterialsCreateStartObj + END INTERFACE cmfe_EquationsSet_MaterialsCreateStart + + !>Destroy the materials for an equations set. + INTERFACE cmfe_EquationsSet_MaterialsDestroy + MODULE PROCEDURE cmfe_EquationsSet_MaterialsDestroyNumber + MODULE PROCEDURE cmfe_EquationsSet_MaterialsDestroyObj + END INTERFACE cmfe_EquationsSet_MaterialsDestroy + + !>Gets the output type for an equations set. + INTERFACE cmfe_EquationsSet_OutputTypeGet + MODULE PROCEDURE cmfe_EquationsSet_OutputTypeGetNumber + MODULE PROCEDURE cmfe_EquationsSet_OutputTypeGetObj + END INTERFACE cmfe_EquationsSet_OutputTypeGet + + !>Sets/changes the output type an equations set. + INTERFACE cmfe_EquationsSet_OutputTypeSet + MODULE PROCEDURE cmfe_EquationsSet_OutputTypeSetNumber + MODULE PROCEDURE cmfe_EquationsSet_OutputTypeSetObj + END INTERFACE cmfe_EquationsSet_OutputTypeSet + + !>Returns the solution method for an equations set. + INTERFACE cmfe_EquationsSet_SolutionMethodGet + MODULE PROCEDURE cmfe_EquationsSet_SolutionMethodGetNumber + MODULE PROCEDURE cmfe_EquationsSet_SolutionMethodGetObj + END INTERFACE cmfe_EquationsSet_SolutionMethodGet + + !>Sets/changes the solution method for an equations set. + INTERFACE cmfe_EquationsSet_SolutionMethodSet + MODULE PROCEDURE cmfe_EquationsSet_SolutionMethodSetNumber + MODULE PROCEDURE cmfe_EquationsSet_SolutionMethodSetObj + END INTERFACE cmfe_EquationsSet_SolutionMethodSet + + !>Finish the creation of a source for an equations set. \see OpenCMISS::Iron::cmfe_EquationsSet_SourceCreateStart + INTERFACE cmfe_EquationsSet_SourceCreateFinish + MODULE PROCEDURE cmfe_EquationsSet_SourceCreateFinishNumber + MODULE PROCEDURE cmfe_EquationsSet_SourceCreateFinishObj + END INTERFACE cmfe_EquationsSet_SourceCreateFinish + + !>Start the creation of a source for an equations set. \see OpenCMISS::Iron::cmfe_EquationsSet_SourceCreateFinish + INTERFACE cmfe_EquationsSet_SourceCreateStart + MODULE PROCEDURE cmfe_EquationsSet_SourceCreateStartNumber + MODULE PROCEDURE cmfe_EquationsSet_SourceCreateStartObj + END INTERFACE cmfe_EquationsSet_SourceCreateStart + + !>Destroy the source for an equations set. + INTERFACE cmfe_EquationsSet_SourceDestroy + MODULE PROCEDURE cmfe_EquationsSet_SourceDestroyNumber + MODULE PROCEDURE cmfe_EquationsSet_SourceDestroyObj + END INTERFACE cmfe_EquationsSet_SourceDestroy + + !>Returns the equations set specification array + INTERFACE cmfe_EquationsSet_SpecificationGet + MODULE PROCEDURE cmfe_EquationsSet_SpecificationGetNumber + MODULE PROCEDURE cmfe_EquationsSet_SpecificationGetObj + END INTERFACE cmfe_EquationsSet_SpecificationGet + + !>Returns the size of the equations set specification array. + INTERFACE cmfe_EquationsSet_SpecificationSizeGet + MODULE PROCEDURE cmfe_EquationsSet_SpecificationSizeGetNumber + MODULE PROCEDURE cmfe_EquationsSet_SpecificationSizeGetObj + END INTERFACE cmfe_EquationsSet_SpecificationSizeGet + + !>Calculates an output field for the equations set. + INTERFACE cmfe_EquationsSet_DerivedVariableCalculate + MODULE PROCEDURE cmfe_EquationsSet_DerivedVariableCalculateNumber + MODULE PROCEDURE cmfe_EquationsSet_DerivedVariableCalculateObj + END INTERFACE cmfe_EquationsSet_DerivedVariableCalculate + + !>Set the derived field variable type to be used by a derived variable + INTERFACE cmfe_EquationsSet_DerivedVariableSet + MODULE PROCEDURE cmfe_EquationsSet_DerivedVariableSetNumber + MODULE PROCEDURE cmfe_EquationsSet_DerivedVariableSetObj + END INTERFACE cmfe_EquationsSet_DerivedVariableSet + + !>Evaluate a tensor at a given element Gauss location. + INTERFACE cmfe_EquationsSet_TensorInterpolateGaussPoint + MODULE PROCEDURE cmfe_EquationsSet_TensorInterpolateGaussPointNumber + MODULE PROCEDURE cmfe_EquationsSet_TensorInterpolateGaussPointObj + END INTERFACE cmfe_EquationsSet_TensorInterpolateGaussPoint - !> \addtogroup OpenCMISS_ControlLoopConstants OpenCMISS::Iron::ControlLoop::Constants - !> \brief Control loops constants. - !>@{ - !> \addtogroup OpenCMISS_ControlLoopIdentifiers OpenCMISS::Iron::ControlLoop::Identifiers - !> \brief The control loop identification parameters. - !> \see OpenCMISS::Iron::ControlLoop,OpenCMISS - !>@{ - INTEGER(INTG), PARAMETER :: CMFE_CONTROL_LOOP_NODE = CONTROL_LOOP_NODE !@} - !> \addtogroup OpenCMISS_ControlLoopOutputTypes OpenCMISS::Iron::ControlLoop::OutputTypes - !> \brief The control loop output types. - !> \see OpenCMISS::Iron::ControlLoop,OpenCMISS - !>@{ - INTEGER(INTG), PARAMETER :: CMFE_CONTROL_LOOP_NO_OUTPUT = CONTROL_LOOP_NO_OUTPUT !@} - !>@} + !>Evaluate a tensor at a given element xi location. + INTERFACE cmfe_EquationsSet_TensorInterpolateXi + MODULE PROCEDURE cmfe_EquationsSet_TensorInterpolateXiNumber + MODULE PROCEDURE cmfe_EquationsSet_TensorInterpolateXiObj + END INTERFACE cmfe_EquationsSet_TensorInterpolateXi - !Module types + !>Returns the equations set current times + INTERFACE cmfe_EquationsSet_TimesGet + MODULE PROCEDURE cmfe_EquationsSet_TimesGetNumber + MODULE PROCEDURE cmfe_EquationsSet_TimesGetObj + END INTERFACE cmfe_EquationsSet_TimesGet - !Module variables + !>Sets/changes the equations set current times + INTERFACE cmfe_EquationsSet_TimesSet + MODULE PROCEDURE cmfe_EquationsSet_TimesSetNumber + MODULE PROCEDURE cmfe_EquationsSet_TimesSetObj + END INTERFACE cmfe_EquationsSet_TimesSet - !Interfaces + !>Gets the equations set analytic user parameter + INTERFACE cmfe_EquationsSet_AnalyticUserParamGet + MODULE PROCEDURE cmfe_EquationsSet_AnalyticUserParamGetNumber + MODULE PROCEDURE cmfe_EquationsSet_AnalyticUserParamGetObj + END INTERFACE cmfe_EquationsSet_AnalyticUserParamGet - !>Returns the current time parameters for a time control loop. - INTERFACE cmfe_ControlLoop_CurrentTimesGet - MODULE PROCEDURE cmfe_ControlLoop_CurrentTimesGetNumber0 - MODULE PROCEDURE cmfe_ControlLoop_CurrentTimesGetNumber1 - MODULE PROCEDURE cmfe_ControlLoop_CurrentTimesGetObj - END INTERFACE cmfe_ControlLoop_CurrentTimesGet + !>Sets/changes the equations set analytic user parameter + INTERFACE cmfe_EquationsSet_AnalyticUserParamSet + MODULE PROCEDURE cmfe_EquationsSet_AnalyticUserParamSetNumber + MODULE PROCEDURE cmfe_EquationsSet_AnalyticUserParamSetObj + END INTERFACE cmfe_EquationsSet_AnalyticUserParamSet - !>Destroy a control loop. - INTERFACE cmfe_ControlLoop_Destroy - MODULE PROCEDURE cmfe_ControlLoop_DestroyNumber0 - MODULE PROCEDURE cmfe_ControlLoop_DestroyNumber1 - MODULE PROCEDURE cmfe_ControlLoop_DestroyObj - END INTERFACE cmfe_ControlLoop_Destroy + PUBLIC cmfe_EquationsSet_AnalyticCreateFinish,cmfe_EquationsSet_AnalyticCreateStart - !>Returns the specified control loop as indexed by the control loop identifier from the control loop root. - INTERFACE cmfe_ControlLoop_ControlLoopGet - MODULE PROCEDURE cmfe_ControlLoop_ControlLoopGetNumber00 - MODULE PROCEDURE cmfe_ControlLoop_ControlLoopGetNumber10 - MODULE PROCEDURE cmfe_ControlLoop_ControlLoopGetNumber01 - MODULE PROCEDURE cmfe_ControlLoop_ControlLoopGetNumber11 - MODULE PROCEDURE cmfe_ControlLoop_ControlLoopGetObj0 - MODULE PROCEDURE cmfe_ControlLoop_ControlLoopGetObj1 - END INTERFACE cmfe_ControlLoop_ControlLoopGet - - !>Sets/changes the iteration parameters for a fixed control loop. \todo need a get metod - INTERFACE cmfe_ControlLoop_IterationsSet - MODULE PROCEDURE cmfe_ControlLoop_IterationsSetNumber0 - MODULE PROCEDURE cmfe_ControlLoop_IterationsSetNumber1 - MODULE PROCEDURE cmfe_ControlLoop_IterationsSetObj - END INTERFACE cmfe_ControlLoop_IterationsSet - - !>Returns the label of a control loop. - INTERFACE cmfe_ControlLoop_LabelGet - MODULE PROCEDURE cmfe_ControlLoop_LabelGetCNumber0 - MODULE PROCEDURE cmfe_ControlLoop_LabelGetCNumber1 - MODULE PROCEDURE cmfe_ControlLoop_LabelGetCObj - MODULE PROCEDURE cmfe_ControlLoop_LabelGetVSNumber0 - MODULE PROCEDURE cmfe_ControlLoop_LabelGetVSNumber1 - MODULE PROCEDURE cmfe_ControlLoop_LabelGetVSObj - END INTERFACE cmfe_ControlLoop_LabelGet - - !>Sets/changes the label of a control loop. - INTERFACE cmfe_ControlLoop_LabelSet - MODULE PROCEDURE cmfe_ControlLoop_LabelSetCNumber0 - MODULE PROCEDURE cmfe_ControlLoop_LabelSetCNumber1 - MODULE PROCEDURE cmfe_ControlLoop_LabelSetCObj - MODULE PROCEDURE cmfe_ControlLoop_LabelSetVSNumber0 - MODULE PROCEDURE cmfe_ControlLoop_LabelSetVSNumber1 - MODULE PROCEDURE cmfe_ControlLoop_LabelSetVSObj - END INTERFACE cmfe_ControlLoop_LabelSet - - !>Sets/changes the maximum iterations for a while control loop. \todo need a get method - INTERFACE cmfe_ControlLoop_MaximumIterationsSet - MODULE PROCEDURE cmfe_ControlLoop_MaximumIterationsSetNumber0 - MODULE PROCEDURE cmfe_ControlLoop_MaximumIterationsSetNumber1 - MODULE PROCEDURE cmfe_ControlLoop_MaximumIterationsSetObj - END INTERFACE cmfe_ControlLoop_MaximumIterationsSet - - !>Sets/changes the convergence tolerance for a while control loop. \todo need a get method - INTERFACE cmfe_ControlLoop_AbsoluteToleranceSet - MODULE PROCEDURE cmfe_ControlLoop_AbsoluteToleranceSetNumber0 - MODULE PROCEDURE cmfe_ControlLoop_AbsoluteToleranceSetNumber1 - MODULE PROCEDURE cmfe_ControlLoop_AbsoluteToleranceSetObj - END INTERFACE cmfe_ControlLoop_AbsoluteToleranceSet - - !>Returns the number of iterations for a time control loop. If the returned value is 0, that means that the number has not yet been computed. - INTERFACE cmfe_ControlLoop_NumberOfIterationsGet - MODULE PROCEDURE cmfe_ControlLoop_NumberOfIterationsGetNumber0 - MODULE PROCEDURE cmfe_ControlLoop_NumberOfIterationsGetNumber1 - MODULE PROCEDURE cmfe_ControlLoop_NumberOfIterationsGetObj - END INTERFACE cmfe_ControlLoop_NumberOfIterationsGet - - !>Sets/changes the number of iterations for a time control loop. If set to 0, it will be computed from time increment and start/stop time - INTERFACE cmfe_ControlLoop_NumberOfIterationsSet - MODULE PROCEDURE cmfe_ControlLoop_NumberOfIterationsSetNumber0 - MODULE PROCEDURE cmfe_ControlLoop_NumberOfIterationsSetNumber1 - MODULE PROCEDURE cmfe_ControlLoop_NumberOfIterationsSetObj - END INTERFACE cmfe_ControlLoop_NumberOfIterationsSet - - !>Returns the number of sub loops for a control loop. - INTERFACE cmfe_ControlLoop_NumberOfSubLoopsGet - MODULE PROCEDURE cmfe_ControlLoop_NumberOfSubLoopsGetNumber0 - MODULE PROCEDURE cmfe_ControlLoop_NumberOfSubLoopsGetNumber1 - MODULE PROCEDURE cmfe_ControlLoop_NumberOfSubLoopsGetObj - END INTERFACE cmfe_ControlLoop_NumberOfSubLoopsGet - - !>Sets/changes the number of sub loops for a control loop. \todo is this really a public method??? - INTERFACE cmfe_ControlLoop_NumberOfSubLoopsSet - MODULE PROCEDURE cmfe_ControlLoop_NumberOfSubLoopsSetNumber0 - MODULE PROCEDURE cmfe_ControlLoop_NumberOfSubLoopsSetNumber1 - MODULE PROCEDURE cmfe_ControlLoop_NumberOfSubLoopsSetObj - END INTERFACE cmfe_ControlLoop_NumberOfSubLoopsSet - - !>Sets/changes the output parameters for a time control loop. - INTERFACE cmfe_ControlLoop_TimeOutputSet - MODULE PROCEDURE cmfe_ControlLoop_TimeOutputSetNumber0 - MODULE PROCEDURE cmfe_ControlLoop_TimeOutputSetNumber1 - MODULE PROCEDURE cmfe_ControlLoop_TimeOutputSetObj - END INTERFACE cmfe_ControlLoop_TimeOutputSet - - !>Returns the output type for a control loop. - INTERFACE cmfe_ControlLoop_OutputTypeGet - MODULE PROCEDURE cmfe_ControlLoop_OutputTypeGetNumber0 - MODULE PROCEDURE cmfe_ControlLoop_OutputTypeGetNumber1 - MODULE PROCEDURE cmfe_ControlLoop_OutputTypeGetObj - END INTERFACE cmfe_ControlLoop_OutputTypeGet - - !>Sets/changes the output type for a control loop. - INTERFACE cmfe_ControlLoop_OutputTypeSet - MODULE PROCEDURE cmfe_ControlLoop_OutputTypeSetNumber0 - MODULE PROCEDURE cmfe_ControlLoop_OutputTypeSetNumber1 - MODULE PROCEDURE cmfe_ControlLoop_OutputTypeSetObj - END INTERFACE cmfe_ControlLoop_OutputTypeSet - - !>Sets/changes the input parameters for a time control loop. - INTERFACE cmfe_ControlLoop_TimeInputSet - MODULE PROCEDURE cmfe_ControlLoop_TimeInputSetNumber0 - MODULE PROCEDURE cmfe_ControlLoop_TimeInputSetNumber1 - MODULE PROCEDURE cmfe_ControlLoop_TimeInputSetObj - END INTERFACE cmfe_ControlLoop_TimeInputSet - - !>Returns the time parameters for a time control loop. - INTERFACE cmfe_ControlLoop_TimesGet - MODULE PROCEDURE cmfe_ControlLoop_TimesGetNumber0 - MODULE PROCEDURE cmfe_ControlLoop_TimesGetNumber1 - MODULE PROCEDURE cmfe_ControlLoop_TimesGetObj - END INTERFACE cmfe_ControlLoop_TimesGet - - !>Sets/Changes the time parameters for a time control loop. - INTERFACE cmfe_ControlLoop_TimesSet - MODULE PROCEDURE cmfe_ControlLoop_TimesSetNumber0 - MODULE PROCEDURE cmfe_ControlLoop_TimesSetNumber1 - MODULE PROCEDURE cmfe_ControlLoop_TimesSetObj - END INTERFACE cmfe_ControlLoop_TimesSet - - !>Sets/Changes the loop type for a control loop. \todo Is this really a public method? \todo need a get method - INTERFACE cmfe_ControlLoop_TypeSet - MODULE PROCEDURE cmfe_ControlLoop_TypeSetNumber0 - MODULE PROCEDURE cmfe_ControlLoop_TypeSetNumber1 - MODULE PROCEDURE cmfe_ControlLoop_TypeSetObj - END INTERFACE cmfe_ControlLoop_TypeSet - - PUBLIC CMFE_CONTROL_LOOP_NODE - - PUBLIC CMFE_CONTROL_LOOP_NO_OUTPUT,CMFE_CONTROL_LOOP_PROGRESS_OUTPUT,CMFE_CONTROL_LOOP_TIMING_OUTPUT - - PUBLIC cmfe_ControlLoop_CurrentTimesGet - - PUBLIC cmfe_ControlLoop_Destroy - - PUBLIC cmfe_ControlLoop_ControlLoopGet - - PUBLIC cmfe_ControlLoop_IterationsSet - - PUBLIC cmfe_ControlLoop_LabelGet,cmfe_ControlLoop_LabelSet - - PUBLIC cmfe_ControlLoop_MaximumIterationsSet - - PUBLIC cmfe_ControlLoop_AbsoluteToleranceSet - - PUBLIC cmfe_ControlLoop_NumberOfIterationsGet, cmfe_ControlLoop_NumberOfIterationsSet - - PUBLIC cmfe_ControlLoop_NumberOfSubLoopsGet,cmfe_ControlLoop_NumberOfSubLoopsSet + PUBLIC cmfe_EquationsSet_AnalyticDestroy - PUBLIC cmfe_ControlLoop_OutputTypeGet,cmfe_ControlLoop_OutputTypeSet + PUBLIC cmfe_EquationsSet_AnalyticEvaluate - PUBLIC cmfe_ControlLoop_TimeOutputSet,cmfe_ControlLoop_TimeInputSet + PUBLIC cmfe_EquationsSet_AnalyticTimeGet,cmfe_EquationsSet_AnalyticTimeSet - PUBLIC cmfe_ControlLoop_TimesGet,cmfe_ControlLoop_TimesSet + PUBLIC cmfe_EquationsSet_CreateFinish,cmfe_EquationsSet_CreateStart - PUBLIC cmfe_ControlLoop_TypeSet + PUBLIC cmfe_EquationsSet_Destroy + PUBLIC cmfe_EquationsSet_DependentCreateFinish,cmfe_EquationsSet_DependentCreateStart -!!================================================================================================================================== -!! -!! COORDINATE_ROUTINES -!! -!!================================================================================================================================== + PUBLIC cmfe_EquationsSet_DependentDestroy - !Module parameters + PUBLIC cmfe_EquationsSet_DerivedCreateFinish,cmfe_EquationsSet_DerivedCreateStart - !> \addtogroup OpenCMISS_CoordinateConstants OpenCMISS::Iron::Coordinate::Constants - !> \brief Coordinate constants. - !>@{ - !> \addtogroup OpenCMISS_CoordinateSystemTypes OpenCMISS::Iron::Coordinate::SystemTypes - !> \brief Coordinate system type parameters. - !> \see OpenCMISS::Iron::Coordinate,OpenCMISS - !>@{ - INTEGER(INTG), PARAMETER :: CMFE_COORDINATE_RECTANGULAR_CARTESIAN_TYPE = COORDINATE_RECTANGULAR_CARTESIAN_TYPE !@} - !> \addtogroup OpenCMISS_CoordinateRadialInterpolations OpenCMISS::Iron::Coordinate::RadialInterpolations - !> \brief The type of radial interpolation for polar coordinate systems - !> \see OpenCMISS::Iron::Coordinate,OpenCMISS - !>@{ - INTEGER(INTG), PARAMETER :: CMFE_COORDINATE_NO_RADIAL_INTERPOLATION_TYPE = COORDINATE_NO_RADIAL_INTERPOLATION_TYPE !@} - !>@} - - !Module types - - !Module variables - - !Interfaces - - !>Finishes the creation of a coordinate system. \see OpenCMISS::Iron::cmfe_CoordinateSystem_CreateStart - INTERFACE cmfe_CoordinateSystem_CreateFinish - MODULE PROCEDURE cmfe_CoordinateSystem_CreateFinishNumber - MODULE PROCEDURE cmfe_CoordinateSystem_CreateFinishObj - END INTERFACE cmfe_CoordinateSystem_CreateFinish - - !>Starts the creation of a coordinate system. \see OpenCMISS::Iron::cmfe_CoordinateSystem_CreateFinish - INTERFACE cmfe_CoordinateSystem_CreateStart - MODULE PROCEDURE cmfe_CoordinateSystem_CreateStartNumber - MODULE PROCEDURE cmfe_CoordinateSystem_CreateStartObj - END INTERFACE cmfe_CoordinateSystem_CreateStart - - !>Destorys a coordinate system. - INTERFACE cmfe_CoordinateSystem_Destroy - MODULE PROCEDURE cmfe_CoordinateSystem_DestroyNumber - MODULE PROCEDURE cmfe_CoordinateSystem_DestroyObj - END INTERFACE cmfe_CoordinateSystem_Destroy - - !>Returns the coordinate system dimension. \todo user number method \todo fix pointers - INTERFACE cmfe_CoordinateSystem_DimensionGet - MODULE PROCEDURE cmfe_CoordinateSystem_DimensionGetNumber - MODULE PROCEDURE cmfe_CoordinateSystem_DimensionGetObj - END INTERFACE cmfe_CoordinateSystem_DimensionGet - - !>Sets/changes the coordinate system dimension. \todo fix pointers - INTERFACE cmfe_CoordinateSystem_DimensionSet - MODULE PROCEDURE cmfe_CoordinateSystem_DimensionSetNumber - MODULE PROCEDURE cmfe_CoordinateSystem_DimensionSetObj - END INTERFACE cmfe_CoordinateSystem_DimensionSet - - !>Returns the coordinate system focus. \todo user number method \todo fix pointers - INTERFACE cmfe_CoordinateSystem_FocusGet - MODULE PROCEDURE cmfe_CoordinateSystem_FocusGetNumber - MODULE PROCEDURE cmfe_CoordinateSystem_FocusGetObj - END INTERFACE cmfe_CoordinateSystem_FocusGet - - !>Sets/changes the coordinate system focus. \todo user number method \todo fix pointers - INTERFACE cmfe_CoordinateSystem_FocusSet - MODULE PROCEDURE cmfe_CoordinateSystem_FocusSetNumber - MODULE PROCEDURE cmfe_CoordinateSystem_FocusSetObj - END INTERFACE cmfe_CoordinateSystem_FocusSet - - !>Returns the coordinate system radial interpolation type. \todo user number method \todo fix pointers - INTERFACE cmfe_CoordinateSystem_RadialInterpolationGet - MODULE PROCEDURE cmfe_CoordinateSystem_RadialInterpolationGetNumber - MODULE PROCEDURE cmfe_CoordinateSystem_RadialInterpolationGetObj - END INTERFACE cmfe_CoordinateSystem_RadialInterpolationGet - - !>Sets/changes the coordinate system radial interpolation type. \todo user number method \todo fix pointers - INTERFACE cmfe_CoordinateSystem_RadialInterpolationSet - MODULE PROCEDURE cmfe_CoordinateSystem_RadialInterpolationSetNumber - MODULE PROCEDURE cmfe_CoordinateSystem_RadialInterpolationSetObj - END INTERFACE cmfe_CoordinateSystem_RadialInterpolationSet - - !>Returns the coordinate system type. \todo user number method \todo fix pointers - INTERFACE cmfe_CoordinateSystem_TypeGet - MODULE PROCEDURE cmfe_CoordinateSystem_TypeGetNumber - MODULE PROCEDURE cmfe_CoordinateSystem_TypeGetObj - END INTERFACE cmfe_CoordinateSystem_TypeGet - - !>Sets/changes the coordinate system type. \todo user number method \todo fix pointers - INTERFACE cmfe_CoordinateSystem_TypeSet - MODULE PROCEDURE cmfe_CoordinateSystem_TypeSetNumber - MODULE PROCEDURE cmfe_CoordinateSystem_TypeSetObj - END INTERFACE cmfe_CoordinateSystem_TypeSet - - !>Returns the coordinate system orign. - INTERFACE cmfe_CoordinateSystem_OriginGet - MODULE PROCEDURE cmfe_CoordinateSystem_OriginGetNumber - MODULE PROCEDURE cmfe_CoordinateSystem_OriginGetObj - END INTERFACE cmfe_CoordinateSystem_OriginGet - - !>Sets/changes the coordinate system orign. - INTERFACE cmfe_CoordinateSystem_OriginSet - MODULE PROCEDURE cmfe_CoordinateSystem_OriginSetNumber - MODULE PROCEDURE cmfe_CoordinateSystem_OriginSetObj - END INTERFACE cmfe_CoordinateSystem_OriginSet - - !>Returns the coordinate system orientation. - INTERFACE cmfe_CoordinateSystem_OrientationGet - MODULE PROCEDURE cmfe_CoordinateSystem_OrientationGetNumber - MODULE PROCEDURE cmfe_CoordinateSystem_OrientationGetObj - END INTERFACE cmfe_CoordinateSystem_OrientationGet - - !>Sets/changes the coordinate system orientation. - INTERFACE cmfe_CoordinateSystem_OrientationSet - MODULE PROCEDURE cmfe_CoordinateSystem_OrientationSetNumber - MODULE PROCEDURE cmfe_CoordinateSystem_OrientationSetObj - END INTERFACE cmfe_CoordinateSystem_OrientationSet - - PUBLIC CMFE_COORDINATE_RECTANGULAR_CARTESIAN_TYPE,CMFE_COORDINATE_CYLINDRICAL_POLAR_TYPE, & - & CMFE_COORDINATE_SPHERICAL_POLAR_TYPE, & - & CMFE_COORDINATE_PROLATE_SPHEROIDAL_TYPE,CMFE_COORDINATE_OBLATE_SPHEROIDAL_TYPE - - PUBLIC CMFE_COORDINATE_NO_RADIAL_INTERPOLATION_TYPE,CMFE_COORDINATE_RADIAL_INTERPOLATION_TYPE, & - & CMFE_COORDINATE_RADIAL_SQUARED_INTERPOLATION_TYPE,CMFE_COORDINATE_RADIAL_CUBED_INTERPOLATION_TYPE - - PUBLIC cmfe_CoordinateSystem_CreateFinish,cmfe_CoordinateSystem_CreateStart - - PUBLIC cmfe_CoordinateSystem_Destroy - - PUBLIC cmfe_CoordinateSystem_DimensionGet,cmfe_CoordinateSystem_DimensionSet - - PUBLIC cmfe_CoordinateSystem_FocusGet,cmfe_CoordinateSystem_FocusSet - - PUBLIC cmfe_CoordinateSystem_RadialInterpolationGet,cmfe_CoordinateSystem_RadialInterpolationSet - - PUBLIC cmfe_CoordinateSystem_TypeGet,cmfe_CoordinateSystem_TypeSet - - PUBLIC cmfe_CoordinateSystem_OriginGet,cmfe_CoordinateSystem_OriginSet - - PUBLIC cmfe_CoordinateSystem_OrientationGet,cmfe_CoordinateSystem_OrientationSet + PUBLIC cmfe_EquationsSet_DerivedDestroy -!!================================================================================================================================== -!! -!! DataPointsRoutines -!! -!!================================================================================================================================== + PUBLIC cmfe_EquationsSet_DerivedVariableCalculate,cmfe_EquationsSet_DerivedVariableSet - !Module parameters + PUBLIC cmfe_EquationsSet_EquationsCreateFinish,cmfe_EquationsSet_EquationsCreateStart - !Module types + PUBLIC cmfe_EquationsSet_EquationsDestroy - !Module variables + PUBLIC cmfe_EquationsSet_IndependentCreateFinish,cmfe_EquationsSet_IndependentCreateStart - !Interfaces + PUBLIC cmfe_EquationsSet_IndependentDestroy - !>Finishes the process of creating data points in a region. \see OpenCMISS::Iron::cmfe_DataPoints_CreateStart - INTERFACE cmfe_DataPoints_CreateFinish - MODULE PROCEDURE cmfe_DataPoints_CreateFinishNumber - MODULE PROCEDURE cmfe_DataPoints_CreateFinishObj - END INTERFACE cmfe_DataPoints_CreateFinish + PUBLIC cmfe_EquationsSet_LabelGet,cmfe_EquationsSet_LabelSet - !>Starts the process of creating data points in a region. \see OpenCMISS::Iron::cmfe_DataPoints_CreateFinish - INTERFACE cmfe_DataPoints_CreateStart - MODULE PROCEDURE cmfe_DataPoints_CreateStartNumber - MODULE PROCEDURE cmfe_DataPoints_CreateStartObj - MODULE PROCEDURE cmfe_DataPoints_CreateStartInterfaceObj - END INTERFACE cmfe_DataPoints_CreateStart + PUBLIC cmfe_EquationsSet_MaterialsCreateFinish,cmfe_EquationsSet_MaterialsCreateStart - !>Destroys data points. - INTERFACE cmfe_DataPoints_Destroy - MODULE PROCEDURE cmfe_DataPoints_DestroyNumber - MODULE PROCEDURE cmfe_DataPoints_DestroyObj - END INTERFACE cmfe_DataPoints_Destroy + PUBLIC cmfe_EquationsSet_MaterialsDestroy - !>Returns the number of data points - INTERFACE cmfe_DataPoints_NumberOfDataPointsGet - MODULE PROCEDURE cmfe_DataPoints_NumberOfDataPointsGetNumber - MODULE PROCEDURE cmfe_DataPoints_NumberOfDataPointsGetObj - END INTERFACE cmfe_DataPoints_NumberOfDataPointsGet - - !>Returns the label for a data point identified by a given user number. - INTERFACE cmfe_DataPoints_LabelGet - MODULE PROCEDURE cmfe_DataPoints_LabelGetCNumber - MODULE PROCEDURE cmfe_DataPoints_LabelGetCObj - MODULE PROCEDURE cmfe_DataPoints_LabelGetVSNumber - MODULE PROCEDURE cmfe_DataPoints_LabelGetVSObj - END INTERFACE cmfe_DataPoints_LabelGet - - !>Sets/changes the label for a data point identified by a given user number. - INTERFACE cmfe_DataPoints_LabelSet - MODULE PROCEDURE cmfe_DataPoints_LabelSetCNumber - MODULE PROCEDURE cmfe_DataPoints_LabelSetCObj - MODULE PROCEDURE cmfe_DataPoints_LabelSetVSNumber - MODULE PROCEDURE cmfe_DataPoints_LabelSetVSObj - END INTERFACE cmfe_DataPoints_LabelSet - - !>Returns the user number for a data point identified by a given global number. - INTERFACE cmfe_DataPoints_UserNumberGet - MODULE PROCEDURE cmfe_DataPoints_UserNumberGetNumber - MODULE PROCEDURE cmfe_DataPoints_UserNumberGetObj - END INTERFACE cmfe_DataPoints_UserNumberGet - - !>Sets/changes the user number for a data point identified by a given global number. - INTERFACE cmfe_DataPoints_UserNumberSet - MODULE PROCEDURE cmfe_DataPoints_UserNumberSetNumber - MODULE PROCEDURE cmfe_DataPoints_UserNumberSetObj - END INTERFACE cmfe_DataPoints_UserNumberSet - - !>Returns the position for a data point identified by a given user number. - INTERFACE cmfe_DataPoints_PositionGet - MODULE PROCEDURE cmfe_DataPoints_PositionGetNumber - MODULE PROCEDURE cmfe_DataPoints_PositionGetObj - END INTERFACE cmfe_DataPoints_PositionGet - - !>Sets/changes the position for a data point identified by a given user number. - INTERFACE cmfe_DataPoints_PositionSet - MODULE PROCEDURE cmfe_DataPoints_PositionSetNumber - MODULE PROCEDURE cmfe_DataPoints_PositionSetObj - END INTERFACE cmfe_DataPoints_PositionSet - - !>Returns the weights for a data point identified by a given user number. - INTERFACE cmfe_DataPoints_WeightsGet - MODULE PROCEDURE cmfe_DataPoints_WeightsGetNumber - MODULE PROCEDURE cmfe_DataPoints_WeightsGetObj - END INTERFACE cmfe_DataPoints_WeightsGet - - !>Sets/changes the weights for a data point identified by a given user number. - INTERFACE cmfe_DataPoints_WeightsSet - MODULE PROCEDURE cmfe_DataPoints_WeightsSetNumber - MODULE PROCEDURE cmfe_DataPoints_WeightsSetObj - END INTERFACE cmfe_DataPoints_WeightsSet - - PUBLIC cmfe_DataPoints_CreateFinish,cmfe_DataPoints_CreateStart - - PUBLIC cmfe_DataPoints_Destroy - - PUBLIC cmfe_DataPoints_NumberOfDataPointsGet - - PUBLIC cmfe_DataPoints_LabelGet,cmfe_DataPoints_LabelSet - - PUBLIC cmfe_DataPoints_UserNumberGet,cmfe_DataPoints_UserNumberSet - - PUBLIC cmfe_DataPoints_PositionGet,cmfe_DataPoints_PositionSet - - PUBLIC cmfe_DataPoints_WeightsGet,cmfe_DataPoints_WeightsSet + PUBLIC cmfe_Equationsset_OutputTypeGet,cmfe_EquationsSet_OutputTypeSet -!!================================================================================================================================== -!! -!! DataProjectionRoutines -!! -!!================================================================================================================================== + PUBLIC cmfe_EquationsSet_SolutionMethodGet,cmfe_EquationsSet_SolutionMethodSet - !Module parameters + PUBLIC cmfe_EquationsSet_SourceCreateFinish,cmfe_EquationsSet_SourceCreateStart - !> \addtogroup OpenCMISS_DataProjectionConstants OpenCMISS::Iron::DataProjection::Constants - !> \brief DataProjection constants. - !>@{ - !> \addtogroup OpenCMISS_DataProjectionProjectionTypes OpenCMISS::Iron::DataProjection::ProjectionTypes - !> \brief Data Projection types - !> \see OpenCMISS::Iron::DataProjection,OpenCMISS - !>@{ - INTEGER(INTG), PARAMETER :: CMFE_DATA_PROJECTION_BOUNDARY_LINES_PROJECTION_TYPE = DATA_PROJECTION_BOUNDARY_LINES_PROJECTION_TYPE!@} - !> \addtogroup OpenCMISS_DataProjectionExitTags OpenCMISS::Iron::DataProjection::DataProjectionExitTags - !> \brief Datapoint projection exit tags - !> \see OpenCMISS::Iron::DataProjection,OpenCMISS - !>@{ - INTEGER(INTG), PARAMETER :: CMFE_DATA_PROJECTION_CANCELLED = DATA_PROJECTION_CANCELLED !@} - !> \addtogroup OpenCMISS_DataProjectionDistanceRelations OpenCMISS::Iron::DataProjection::DataProjectionDistanceRelations - !> \brief Datapoint projection distance relations to select data points based on distance. - !> \see OpenCMISS::Iron::DataProjection,OpenCMISS - !>@{ - INTEGER(INTG), PARAMETER :: CMFE_DATA_PROJECTION_DISTANCE_GREATER = DATA_PROJECTION_DISTANCE_GREATER !@} - !>@} - - !Module types - - !Module variables - - !Interfaces - - !>Returns the absolute tolerance for a data projection. - INTERFACE cmfe_DataProjection_AbsoluteToleranceGet - MODULE PROCEDURE cmfe_DataProjection_AbsoluteToleranceGetNumber - MODULE PROCEDURE cmfe_DataProjection_AbsoluteToleranceGetObj - END INTERFACE cmfe_DataProjection_AbsoluteToleranceGet - - !>Sets/changes the absolute tolerance for a data projection. - INTERFACE cmfe_DataProjection_AbsoluteToleranceSet - MODULE PROCEDURE cmfe_DataProjection_AbsoluteToleranceSetNumber - MODULE PROCEDURE cmfe_DataProjection_AbsoluteToleranceSetObj - END INTERFACE cmfe_DataProjection_AbsoluteToleranceSet - - !>Finishes the creation of a new data projection. \see OpenCMISS::Iron::cmfe_DataProjection_CreateStart - INTERFACE cmfe_DataProjection_CreateFinish - MODULE PROCEDURE cmfe_DataProjection_CreateFinishNumber - MODULE PROCEDURE cmfe_DataProjection_CreateFinishObj - END INTERFACE cmfe_DataProjection_CreateFinish - - !>Starts the creation of a new data projection. \see OpenCMISS::Iron::cmfe_DataProjection_CreateFinish - INTERFACE cmfe_DataProjection_CreateStart - MODULE PROCEDURE cmfe_DataProjection_CreateStartNumber - MODULE PROCEDURE cmfe_DataProjection_CreateStartObj - END INTERFACE cmfe_DataProjection_CreateStart - - !>Destroy a data projection. - INTERFACE cmfe_DataProjection_Destroy - MODULE PROCEDURE cmfe_DataProjection_DestroyNumber - MODULE PROCEDURE cmfe_DataProjection_DestroyObj - END INTERFACE cmfe_DataProjection_Destroy - - !>Evaluate the data points position in a field based on data projection - INTERFACE cmfe_DataProjection_DataPointsPositionEvaluate - MODULE PROCEDURE cmfe_DataProjection_DataPointsPositionEvaluateRegionNumber - MODULE PROCEDURE cmfe_DataProjection_DataPointsPositionEvaluateInterfaceNumber - MODULE PROCEDURE cmfe_DataProjection_DataPointsPositionEvaluateObj - END INTERFACE cmfe_DataProjection_DataPointsPositionEvaluate - - !>Starts the evluation of data projection on the geometric field. - INTERFACE cmfe_DataProjection_DataPointsProjectionEvaluate - MODULE PROCEDURE cmfe_DataProjection_DataPointsProjectionEvaluateNumber - MODULE PROCEDURE cmfe_DataProjection_DataPointsProjectionEvaluateObj - END INTERFACE cmfe_DataProjection_DataPointsProjectionEvaluate - - !>Returns the maximum iteration update for a data projection. - INTERFACE cmfe_DataProjection_MaximumIterationUpdateGet - MODULE PROCEDURE cmfe_DataProjection_MaximumIterationUpdateGetNumber - MODULE PROCEDURE cmfe_DataProjection_MaximumIterationUpdateGetObj - END INTERFACE cmfe_DataProjection_MaximumIterationUpdateGet - - !>Sets/changes the maximum iteration update for a data projection. - INTERFACE cmfe_DataProjection_MaximumIterationUpdateSet - MODULE PROCEDURE cmfe_DataProjection_MaximumIterationUpdateSetNumber - MODULE PROCEDURE cmfe_DataProjection_MaximumIterationUpdateSetObj - END INTERFACE cmfe_DataProjection_MaximumIterationUpdateSet - - !>Returns the maximum number of iterations for a data projection. - INTERFACE cmfe_DataProjection_MaximumNumberOfIterationsGet - MODULE PROCEDURE cmfe_DataProjection_MaximumNumberOfIterationsGetNumber - MODULE PROCEDURE cmfe_DataProjection_MaximumNumberOfIterationsGetObj - END INTERFACE cmfe_DataProjection_MaximumNumberOfIterationsGet - - !>Sets/changes the maximum number of iterations for a data projection. - INTERFACE cmfe_DataProjection_MaximumNumberOfIterationsSet - MODULE PROCEDURE cmfe_DataProjection_MaximumNumberOfIterationsSetNumber - MODULE PROCEDURE cmfe_DataProjection_MaximumNumberOfIterationsSetObj - END INTERFACE cmfe_DataProjection_MaximumNumberOfIterationsSet - - !>Returns the number of closest elements for a data projection. - INTERFACE cmfe_DataProjection_NumberOfClosestElementsGet - MODULE PROCEDURE cmfe_DataProjection_NumberOfClosestElementsGetNumber - MODULE PROCEDURE cmfe_DataProjection_NumberOfClosestElementsGetObj - END INTERFACE cmfe_DataProjection_NumberOfClosestElementsGet - - !>Sets/changes the number of closest elements for a data projection. - INTERFACE cmfe_DataProjection_NumberOfClosestElementsSet - MODULE PROCEDURE cmfe_DataProjection_NumberOfClosestElementsSetNumber - MODULE PROCEDURE cmfe_DataProjection_NumberOfClosestElementsSetObj - END INTERFACE cmfe_DataProjection_NumberOfClosestElementsSet - - !>Cancel the data projection for data points based on the data point user numbers. - INTERFACE cmfe_DataProjection_ProjectionCancelByDataPoints - MODULE PROCEDURE cmfe_DataProjection_ProjectionCancelByDataPointsRegionNumber0 - MODULE PROCEDURE cmfe_DataProjection_ProjectionCancelByDataPointsRegionNumber1 - MODULE PROCEDURE cmfe_DataProjection_ProjectionCancelByDataPointsInterNum0 - MODULE PROCEDURE cmfe_DataProjection_ProjectionCancelByDataPointsInterNum1 - MODULE PROCEDURE cmfe_DataProjection_ProjectionCancelByDataPointsObj0 - MODULE PROCEDURE cmfe_DataProjection_ProjectionCancelByDataPointsObj1 - END INTERFACE cmfe_DataProjection_ProjectionCancelByDataPoints - - !>Cancel the data projection for data points based on the projection distance. - INTERFACE cmfe_DataProjection_ProjectionCancelByDistance - MODULE PROCEDURE cmfe_DataProjection_ProjectionCancelByDistanceRegionNumber - MODULE PROCEDURE cmfe_DataProjection_ProjectionCancelByDistanceInterfaceNumber - MODULE PROCEDURE cmfe_DataProjection_ProjectionCancelByDistanceObj - END INTERFACE cmfe_DataProjection_ProjectionCancelByDistance - - !>Cancel the data projection for data points based on the projection exit tag. - INTERFACE cmfe_DataProjection_ProjectionCancelByExitTags - MODULE PROCEDURE cmfe_DataProjection_ProjectionCancelByExitTagsRegionNumber0 - MODULE PROCEDURE cmfe_DataProjection_ProjectionCancelByExitTagsRegionNumber1 - MODULE PROCEDURE cmfe_DataProjection_ProjectionCancelByExitTagsInterfaceNumber0 - MODULE PROCEDURE cmfe_DataProjection_ProjectionCancelByExitTagsInterfaceNumber1 - MODULE PROCEDURE cmfe_DataProjection_ProjectionCancelByExitTagsObj0 - MODULE PROCEDURE cmfe_DataProjection_ProjectionCancelByExitTagsObj1 - END INTERFACE cmfe_DataProjection_ProjectionCancelByExitTags - - !>Set the data projection candidate elements for an all elements projection type. - INTERFACE cmfe_DataProjection_ProjectionCandidateElementsSet - MODULE PROCEDURE cmfe_DataProjection_ProjectionCandidateElementsSetRegionNumber - MODULE PROCEDURE cmfe_DataProjection_ProjectionCandidateElementsSetIntNum - MODULE PROCEDURE cmfe_DataProjection_ProjectionCandidateElementsSetObj - END INTERFACE cmfe_DataProjection_ProjectionCandidateElementsSet - - !>Set the data projection candidate elements for data points for an all elements projection type. - INTERFACE cmfe_DataProjection_ProjectionDataCandidateElementsSet - MODULE PROCEDURE cmfe_DataProjection_ProjectionDataCandidateElementsSetRegNum00 - MODULE PROCEDURE cmfe_DataProjection_ProjectionDataCandidateElementsSetRegNum01 - MODULE PROCEDURE cmfe_DataProjection_ProjectionDataCandidateElementsSetRegNum10 - MODULE PROCEDURE cmfe_DataProjection_ProjectionDataCandidateElementsSetRegNum11 - MODULE PROCEDURE cmfe_DataProjection_ProjectionDataCandidateElementsSetIntNum00 - MODULE PROCEDURE cmfe_DataProjection_ProjectionDataCandidateElementsSetIntNum01 - MODULE PROCEDURE cmfe_DataProjection_ProjectionDataCandidateElementsSetIntNum10 - MODULE PROCEDURE cmfe_DataProjection_ProjectionDataCandidateElementsSetIntNum11 - MODULE PROCEDURE cmfe_DataProjection_ProjectionDataCandidateElementsSetObj00 - MODULE PROCEDURE cmfe_DataProjection_ProjectionDataCandidateElementsSetObj01 - MODULE PROCEDURE cmfe_DataProjection_ProjectionDataCandidateElementsSetObj10 - MODULE PROCEDURE cmfe_DataProjection_ProjectionDataCandidateElementsSetObj11 - END INTERFACE cmfe_DataProjection_ProjectionDataCandidateElementsSet - - !>Set the data projection candidate faces for a boundary faces projection type. - INTERFACE cmfe_DataProjection_ProjectionCandidateFacesSet - MODULE PROCEDURE cmfe_DataProjection_ProjectionCandidateFacesSetRegionNumber - MODULE PROCEDURE cmfe_DataProjection_ProjectionCandidateFacesSetInterfaceNumber - MODULE PROCEDURE cmfe_DataProjection_ProjectionCandidateFacesSetObj - END INTERFACE cmfe_DataProjection_ProjectionCandidateFacesSet - - !>Set the data projection candidate faces for data points for a boundary faces projection type. - INTERFACE cmfe_DataProjection_ProjectionDataCandidateFacesSet - MODULE PROCEDURE cmfe_DataProjection_ProjectionDataCandidateFacesSetRegNum000 - MODULE PROCEDURE cmfe_DataProjection_ProjectionDataCandidateFacesSetRegNum011 - MODULE PROCEDURE cmfe_DataProjection_ProjectionDataCandidateFacesSetRegNum100 - MODULE PROCEDURE cmfe_DataProjection_ProjectionDataCandidateFacesSetRegNum111 - MODULE PROCEDURE cmfe_DataProjection_ProjectionDataCandidateFacesSetIntNum000 - MODULE PROCEDURE cmfe_DataProjection_ProjectionDataCandidateFacesSetIntNum011 - MODULE PROCEDURE cmfe_DataProjection_ProjectionDataCandidateFacesSetIntNum100 - MODULE PROCEDURE cmfe_DataProjection_ProjectionDataCandidateFacesSetIntNum111 - MODULE PROCEDURE cmfe_DataProjection_ProjectionDataCandidateFacesSetObj000 - MODULE PROCEDURE cmfe_DataProjection_ProjectionDataCandidateFacesSetObj011 - MODULE PROCEDURE cmfe_DataProjection_ProjectionDataCandidateFacesSetObj100 - MODULE PROCEDURE cmfe_DataProjection_ProjectionDataCandidateFacesSetObj111 - END INTERFACE cmfe_DataProjection_ProjectionDataCandidateFacesSet - - !>Set the data projection candidate lines for a boundary lines projection type. - INTERFACE cmfe_DataProjection_ProjectionCandidateLinesSet - MODULE PROCEDURE cmfe_DataProjection_ProjectionCandidateLinesSetRegionNumber - MODULE PROCEDURE cmfe_DataProjection_ProjectionCandidateLinesSetInterfaceNumber - MODULE PROCEDURE cmfe_DataProjection_ProjectionCandidateLinesSetObj - END INTERFACE cmfe_DataProjection_ProjectionCandidateLinesSet - - !>Set the data projection candidate lines for data points for a boundary lines projection type. - INTERFACE cmfe_DataProjection_ProjectionDataCandidateLinesSet - MODULE PROCEDURE cmfe_DataProjection_ProjectionDataCandidateLinesSetRegNum000 - MODULE PROCEDURE cmfe_DataProjection_ProjectionDataCandidateLinesSetRegNum011 - MODULE PROCEDURE cmfe_DataProjection_ProjectionDataCandidateLinesSetRegNum100 - MODULE PROCEDURE cmfe_DataProjection_ProjectionDataCandidateLinesSetRegNum111 - MODULE PROCEDURE cmfe_DataProjection_ProjectionDataCandidateLinesSetIntNum000 - MODULE PROCEDURE cmfe_DataProjection_ProjectionDataCandidateLinesSetIntNum011 - MODULE PROCEDURE cmfe_DataProjection_ProjectionDataCandidateLinesSetIntNum100 - MODULE PROCEDURE cmfe_DataProjection_ProjectionDataCandidateLinesSetIntNum111 - MODULE PROCEDURE cmfe_DataProjection_ProjectionDataCandidateLinesSetObj000 - MODULE PROCEDURE cmfe_DataProjection_ProjectionDataCandidateLinesSetObj011 - MODULE PROCEDURE cmfe_DataProjection_ProjectionDataCandidateLinesSetObj100 - MODULE PROCEDURE cmfe_DataProjection_ProjectionDataCandidateLinesSetObj111 - END INTERFACE cmfe_DataProjection_ProjectionDataCandidateLinesSet - - !>Returns the projection type for a data projection. - INTERFACE cmfe_DataProjection_ProjectionTypeGet - MODULE PROCEDURE cmfe_DataProjection_ProjectionTypeGetNumber - MODULE PROCEDURE cmfe_DataProjection_ProjectionTypeGetObj - END INTERFACE cmfe_DataProjection_ProjectionTypeGet - - !>Sets/changes the projection type for a data projection. - INTERFACE cmfe_DataProjection_ProjectionTypeSet - MODULE PROCEDURE cmfe_DataProjection_ProjectionTypeSetNumber - MODULE PROCEDURE cmfe_DataProjection_ProjectionTypeSetObj - END INTERFACE cmfe_DataProjection_ProjectionTypeSet - - !>Returns the relative tolerance for a data projection. - INTERFACE cmfe_DataProjection_RelativeToleranceGet - MODULE PROCEDURE cmfe_DataProjection_RelativeToleranceGetNumber - MODULE PROCEDURE cmfe_DataProjection_RelativeToleranceGetObj - END INTERFACE cmfe_DataProjection_RelativeToleranceGet - - !>Sets/changes the relative tolerance for a data projection. - INTERFACE cmfe_DataProjection_RelativeToleranceSet - MODULE PROCEDURE cmfe_DataProjection_RelativeToleranceSetNumber - MODULE PROCEDURE cmfe_DataProjection_RelativeToleranceSetObj - END INTERFACE cmfe_DataProjection_RelativeToleranceSet - - !>Returns the starting xi for a data projection. - INTERFACE cmfe_DataProjection_StartingXiGet - MODULE PROCEDURE cmfe_DataProjection_StartingXiGetNumber - MODULE PROCEDURE cmfe_DataProjection_StartingXiGetObj - END INTERFACE cmfe_DataProjection_StartingXiGet - - !>Sets/changes the starting xi for a data projection. - INTERFACE cmfe_DataProjection_StartingXiSet - MODULE PROCEDURE cmfe_DataProjection_StartingXiSetNumber - MODULE PROCEDURE cmfe_DataProjection_StartingXiSetObj - END INTERFACE cmfe_DataProjection_StartingXiSet - - !>Sets/changes the element number for a data point projection. - INTERFACE cmfe_DataProjection_ElementSet - MODULE PROCEDURE cmfe_DataProjection_ElementSetRegionNumber - MODULE PROCEDURE cmfe_DataProjection_ElementSetInterfaceNumber - MODULE PROCEDURE cmfe_DataProjection_ElementSetObj - END INTERFACE cmfe_DataProjection_ElementSet - - !>Gets the label for a data point projection. - INTERFACE cmfe_DataProjection_LabelGet - MODULE PROCEDURE cmfe_DataProjection_LabelGetCRegionNumber - MODULE PROCEDURE cmfe_DataProjection_LabelGetCInterfaceNumber - MODULE PROCEDURE cmfe_DataProjection_LabelGetCObj - MODULE PROCEDURE cmfe_DataProjection_LabelGetVSRegionNumber - MODULE PROCEDURE cmfe_DataProjection_LabelGetVSInterfaceNumber - MODULE PROCEDURE cmfe_DataProjection_LabelGetVSObj - END INTERFACE cmfe_DataProjection_LabelGet - - !>Sets/changes the label for a data point projection. - INTERFACE cmfe_DataProjection_LabelSet - MODULE PROCEDURE cmfe_DataProjection_LabelSetCRegionNumber - MODULE PROCEDURE cmfe_DataProjection_LabelSetCInterfaceNumber - MODULE PROCEDURE cmfe_DataProjection_LabelSetCObj - MODULE PROCEDURE cmfe_DataProjection_LabelSetVSRegionNumber - MODULE PROCEDURE cmfe_DataProjection_LabelSetVSInterfaceNumber - MODULE PROCEDURE cmfe_DataProjection_LabelSetVSObj - END INTERFACE cmfe_DataProjection_LabelSet - - !>Outputs an analysis of the data projection results - INTERFACE cmfe_DataProjection_ResultAnalysisOutput - MODULE PROCEDURE cmfe_DataProjection_ResultAnalysisOutputNumber - MODULE PROCEDURE cmfe_DataProjection_ResultAnalysisOutputObj - END INTERFACE cmfe_DataProjection_ResultAnalysisOutput - - !>Returns the projection distance for a data point identified by a given user number. - INTERFACE cmfe_DataProjection_ResultDistanceGet - MODULE PROCEDURE cmfe_DataProjection_ResultDistanceGetNumber - MODULE PROCEDURE cmfe_DataProjection_ResultDistanceGetObj - END INTERFACE cmfe_DataProjection_ResultDistanceGet - - !>Returns the projection element number for a data point identified by a given user number. - INTERFACE cmfe_DataProjection_ResultElementNumberGet - MODULE PROCEDURE cmfe_DataProjection_ResultElementNumberGetNumber - MODULE PROCEDURE cmfe_DataProjection_ResultElementNumberGetObj - END INTERFACE cmfe_DataProjection_ResultElementNumberGet - - !>Returns the projection element face number for a data point identified by a given user number. - INTERFACE cmfe_DataProjection_ResultElementFaceNumberGet - MODULE PROCEDURE cmfe_DataProjection_ResultElementFaceNumberGetNumber - MODULE PROCEDURE cmfe_DataProjection_ResultElementFaceNumberGetObj - END INTERFACE cmfe_DataProjection_ResultElementFaceNumberGet - - !>Returns the projection element line number for a data point identified by a given user number. - INTERFACE cmfe_DataProjection_ResultElementLineNumberGet - MODULE PROCEDURE cmfe_DataProjection_ResultElementLineNumberGetNumber - MODULE PROCEDURE cmfe_DataProjection_ResultElementLineNumberGetObj - END INTERFACE cmfe_DataProjection_ResultElementLineNumberGet - - !>Returns the projection exit tag for a data point identified by a given user number. - INTERFACE cmfe_DataProjection_ResultExitTagGet - MODULE PROCEDURE cmfe_DataProjection_ResultExitTagGetNumber - MODULE PROCEDURE cmfe_DataProjection_ResultExitTagGetObj - END INTERFACE cmfe_DataProjection_ResultExitTagGet + PUBLIC cmfe_EquationsSet_SourceDestroy - !>Returns the maximum error for a data projection. - INTERFACE cmfe_DataProjection_ResultMaximumErrorGet - MODULE PROCEDURE cmfe_DataProjection_ResultMaximumErrorGetNumber - MODULE PROCEDURE cmfe_DataProjection_ResultMaximumErrorGetObj - END INTERFACE cmfe_DataProjection_ResultMaximumErrorGet + PUBLIC cmfe_EquationsSet_SpecificationGet,cmfe_EquationsSet_SpecificationSizeGet - !>Returns the minimum error for a data projection. - INTERFACE cmfe_DataProjection_ResultMinimumErrorGet - MODULE PROCEDURE cmfe_DataProjection_ResultMinimumErrorGetNumber - MODULE PROCEDURE cmfe_DataProjection_ResultMinimumErrorGetObj - END INTERFACE cmfe_DataProjection_ResultMinimumErrorGet + PUBLIC cmfe_EquationsSet_TensorInterpolateGaussPoint - !>Returns the RMS error for a data projection. - INTERFACE cmfe_DataProjection_ResultRMSErrorGet - MODULE PROCEDURE cmfe_DataProjection_ResultRMSErrorGetNumber - MODULE PROCEDURE cmfe_DataProjection_ResultRMSErrorGetObj - END INTERFACE cmfe_DataProjection_ResultRMSErrorGet + PUBLIC cmfe_EquationsSet_TensorInterpolateXi - !>Returns the projection xi for a data point identified by a given user number. - INTERFACE cmfe_DataProjection_ResultXiGet - MODULE PROCEDURE cmfe_DataProjection_ResultXiGetNumber - MODULE PROCEDURE cmfe_DataProjection_ResultXiGetObj - END INTERFACE cmfe_DataProjection_ResultXiGet + PUBLIC cmfe_EquationsSet_TimesGet,cmfe_EquationsSet_TimesSet - !>Sets the projection xi for a data point identified by a given user number. - INTERFACE cmfe_DataProjection_ResultXiSet - MODULE PROCEDURE cmfe_DataProjection_ResultXiSetNumber - MODULE PROCEDURE cmfe_DataProjection_ResultXiSetObj - END INTERFACE cmfe_DataProjection_ResultXiSet + PUBLIC cmfe_EquationsSet_AnalyticUserParamSet,cmfe_EquationsSet_AnalyticUserParamGet - !>Returns the projection vector for a data point identified by a given user number. - INTERFACE cmfe_DataProjection_ResultProjectionVectorGet - MODULE PROCEDURE cmfe_DataProjection_ResultProjectionVectorGetNumber - MODULE PROCEDURE cmfe_DataProjection_ResultProjectionVectorGetObj - END INTERFACE cmfe_DataProjection_ResultProjectionVectorGet +!================================================================================================================================== +! +! FIELD_ROUTINES +! +!================================================================================================================================== + + !Module parameters + + !> \addtogroup OpenCMISS_FieldConstants OpenCMISS::Iron::Field::Constants + !> \brief Field constants. + !>@{ + !> \addtogroup OpenCMISS_FieldDependentTypes OpenCMISS::Iron::Field::DependentTypes + !> \brief Depedent field parameter types. + !> \see OpenCMISS::Iron::Field,OpenCMISS + !>@{ + INTEGER(INTG), PARAMETER :: CMFE_FIELD_INDEPENDENT_TYPE = FIELD_INDEPENDENT_TYPE !@} + !> \addtogroup OpenCMISS_FieldDimensionTypes OpenCMISS::Iron::Field::DimensionTypes + !> \brief Field dimension parameter types. + !> \see OpenCMISS::Iron::Field,OpenCMISS + !>@{ + INTEGER(INTG), PARAMETER :: CMFE_FIELD_SCALAR_DIMENSION_TYPE = FIELD_SCALAR_DIMENSION_TYPE !@} + !> \addtogroup OpenCMISS_FieldTypes OpenCMISS::Iron::Field::Types + !> \brief Field type parameters. + !> \see OpenCMISS::Iron::Field,OpenCMISS + !>@{ + INTEGER(INTG), PARAMETER :: CMFE_FIELD_GEOMETRIC_TYPE = FIELD_GEOMETRIC_TYPE !@} + !> \addtogroup OpenCMISS_FieldInterpolationTypes OpenCMISS::Iron::Field::InterpolationTypes + !> \brief Field interpolation parameters. + !> \see OpenCMISS::Iron::Field,OpenCMISS + !>@{ + INTEGER(INTG), PARAMETER :: CMFE_FIELD_CONSTANT_INTERPOLATION = FIELD_CONSTANT_INTERPOLATION !@} + !> \addtogroup OpenCMISS_FieldVariableTypes OpenCMISS::Iron::Field::VariableTypes + !> \brief Field variable type parameters. + !> \see OpenCMISS::Iron::Field,OpenCMISS + !>@{ + INTEGER(INTG), PARAMETER :: CMFE_FIELD_NUMBER_OF_VARIABLE_SUBTYPES = FIELD_NUMBER_OF_VARIABLE_SUBTYPES !@} + !> \addtogroup OpenCMISS_FieldDataTypes OpenCMISS::Iron::Field::DataTypes + !> \brief Field data types + !> \see OpenCMISS::Iron::Field,OpenCMISS + !>@{ + INTEGER(INTG), PARAMETER :: CMFE_FIELD_INTG_TYPE = FIELD_INTG_TYPE !@} + !> \addtogroup OpenCMISS_FieldDOFOrderTypes OpenCMISS::Iron::Field::DOFOrderTypes + !> \brief Field DOF order types + !> \see OpenCMISS::Iron::Field,OpenCMISS + !>@{ + INTEGER(INTG), PARAMETER :: CMFE_FIELD_SEPARATED_COMPONENT_DOF_ORDER = FIELD_SEPARATED_COMPONENT_DOF_ORDER !@} + !> \addtogroup OpenCMISS_FieldParameterSetTypes OpenCMISS::Iron::Field::ParameterSetTypes + !> \brief Field parameter set type parameters + !> \see OpenCMISS::Iron::Field,OpenCMISS + !>@{ + INTEGER(INTG), PARAMETER :: CMFE_FIELD_VALUES_SET_TYPE = FIELD_VALUES_SET_TYPE !@} + !> \addtogroup OpenCMISS_FieldScalingTypes OpenCMISS::Iron::Field::ScalingTypes + !> \brief Field scaling type parameters + !> \see OpenCMISS::Iron::Field,OpenCMISS + !>@{ + INTEGER(INTG), PARAMETER :: CMFE_FIELD_NO_SCALING = FIELD_NO_SCALING !@} + !>@} + + !Module types + + !Module variables + + !Interfaces + + !>Returns the interpolation type for a field variable component. + INTERFACE cmfe_Field_ComponentInterpolationGet + MODULE PROCEDURE cmfe_Field_ComponentInterpolationGetNumber + MODULE PROCEDURE cmfe_Field_ComponentInterpolationGetObj + END INTERFACE cmfe_Field_ComponentInterpolationGet + + !>Sets/changes the interpolation type for a field variable component. + INTERFACE cmfe_Field_ComponentInterpolationSet + MODULE PROCEDURE cmfe_Field_ComponentInterpolationSetNumber + MODULE PROCEDURE cmfe_Field_ComponentInterpolationSetObj + END INTERFACE cmfe_Field_ComponentInterpolationSet + + !>Returns the label for a field variable component. + INTERFACE cmfe_Field_ComponentLabelGet + MODULE PROCEDURE cmfe_Field_ComponentLabelGetCNumber + MODULE PROCEDURE cmfe_Field_ComponentLabelGetCObj + MODULE PROCEDURE cmfe_Field_ComponentLabelGetVSNumber + MODULE PROCEDURE cmfe_Field_ComponentLabelGetVSObj + END INTERFACE cmfe_Field_ComponentLabelGet + + !>Sets/changes the label for a field variable component. + INTERFACE cmfe_Field_ComponentLabelSet + MODULE PROCEDURE cmfe_Field_ComponentLabelSetCNumber + MODULE PROCEDURE cmfe_Field_ComponentLabelSetCObj + MODULE PROCEDURE cmfe_Field_ComponentLabelSetVSNumber + MODULE PROCEDURE cmfe_Field_ComponentLabelSetVSObj + END INTERFACE cmfe_Field_ComponentLabelSet + + !>Returns the mesh component number for a field variable component. + INTERFACE cmfe_Field_ComponentMeshComponentGet + MODULE PROCEDURE cmfe_Field_ComponentMeshComponentGetNumber + MODULE PROCEDURE cmfe_Field_ComponentMeshComponentGetObj + END INTERFACE cmfe_Field_ComponentMeshComponentGet + + !>Sets/changes the mesh component number for a field variable component. + INTERFACE cmfe_Field_ComponentMeshComponentSet + MODULE PROCEDURE cmfe_Field_ComponentMeshComponentSetNumber + MODULE PROCEDURE cmfe_Field_ComponentMeshComponentSetObj + END INTERFACE cmfe_Field_ComponentMeshComponentSet + + !>Initialises the values of a parameter set of a field variable component to a constant value. + INTERFACE cmfe_Field_ComponentValuesInitialise + MODULE PROCEDURE cmfe_Field_ComponentValuesInitialiseIntgNumber + MODULE PROCEDURE cmfe_Field_ComponentValuesInitialiseIntgObj + MODULE PROCEDURE cmfe_Field_ComponentValuesInitialiseSPNumber + MODULE PROCEDURE cmfe_Field_ComponentValuesInitialiseSPObj + MODULE PROCEDURE cmfe_Field_ComponentValuesInitialiseDPNumber + MODULE PROCEDURE cmfe_Field_ComponentValuesInitialiseDPObj + MODULE PROCEDURE cmfe_Field_ComponentValuesInitialiseLNumber + MODULE PROCEDURE cmfe_Field_ComponentValuesInitialiseLObj + END INTERFACE cmfe_Field_ComponentValuesInitialise + + !>Returns the data type for a field variable. + INTERFACE cmfe_Field_DataTypeGet + MODULE PROCEDURE cmfe_Field_DataTypeGetNumber + MODULE PROCEDURE cmfe_Field_DataTypeGetObj + END INTERFACE cmfe_Field_DataTypeGet + + !>Sets/changes the data type for a field variable. + INTERFACE cmfe_Field_DataTypeSet + MODULE PROCEDURE cmfe_Field_DataTypeSetNumber + MODULE PROCEDURE cmfe_Field_DataTypeSetObj + END INTERFACE cmfe_Field_DataTypeSet + + !>Returns the DOF order type for a field variable. + INTERFACE cmfe_Field_DOFOrderTypeGet + MODULE PROCEDURE cmfe_Field_DOFOrderTypeGetNumber + MODULE PROCEDURE cmfe_Field_DOFOrderTypeGetObj + END INTERFACE cmfe_Field_DOFOrderTypeGet + + !>Sets/changes the DOF order type for a field variable. Note: for contiguous coponent DOF ordering all the components of the field variable must have the same interpolation type. + INTERFACE cmfe_Field_DOFOrderTypeSet + MODULE PROCEDURE cmfe_Field_DOFOrderTypeSetNumber + MODULE PROCEDURE cmfe_Field_DOFOrderTypeSetObj + END INTERFACE cmfe_Field_DOFOrderTypeSet + + !>Finishes the creation of a field. \see OpenCMISS::Iron::cmfe_Field_CreateStart + INTERFACE cmfe_Field_CreateFinish + MODULE PROCEDURE cmfe_Field_CreateFinishNumber + MODULE PROCEDURE cmfe_Field_CreateFinishObj + END INTERFACE cmfe_Field_CreateFinish + + !>Starts the creation of a field. \see OpenCMISS::Iron::cmfe_Field_CreateFinish + INTERFACE cmfe_Field_CreateStart + MODULE PROCEDURE cmfe_Field_CreateStartNumber + MODULE PROCEDURE cmfe_Field_CreateStartInterfaceObj + MODULE PROCEDURE cmfe_Field_CreateStartRegionObj + END INTERFACE cmfe_Field_CreateStart + + !>Returns the dependent type for a field. + INTERFACE cmfe_Field_DependentTypeGet + MODULE PROCEDURE cmfe_Field_DependentTypeGetNumber + MODULE PROCEDURE cmfe_Field_DependentTypeGetObj + END INTERFACE cmfe_Field_DependentTypeGet + + !>Sets/changes the dependent type for a field. + INTERFACE cmfe_Field_DependentTypeSet + MODULE PROCEDURE cmfe_Field_DependentTypeSetNumber + MODULE PROCEDURE cmfe_Field_DependentTypeSetObj + END INTERFACE cmfe_Field_DependentTypeSet + + !>Destroys a field. + INTERFACE cmfe_Field_Destroy + MODULE PROCEDURE cmfe_Field_DestroyNumber + MODULE PROCEDURE cmfe_Field_DestroyObj + END INTERFACE cmfe_Field_Destroy + + !>Returns the field dimension for a field variable. + INTERFACE cmfe_Field_DimensionGet + MODULE PROCEDURE cmfe_Field_DimensionGetNumber + MODULE PROCEDURE cmfe_Field_DimensionGetObj + END INTERFACE cmfe_Field_DimensionGet + + !>Sets/changes the field dimension for a field variable. + INTERFACE cmfe_Field_DimensionSet + MODULE PROCEDURE cmfe_Field_DimensionSetNumber + MODULE PROCEDURE cmfe_Field_DimensionSetObj + END INTERFACE cmfe_Field_DimensionSet + + !>Returns the geometric field for a field. + INTERFACE cmfe_Field_GeometricFieldGet + MODULE PROCEDURE cmfe_Field_GeometricFieldGetNumber + MODULE PROCEDURE cmfe_Field_GeometricFieldGetObj + END INTERFACE cmfe_Field_GeometricFieldGet + + !>Sets/changes the geometric field for a field. + INTERFACE cmfe_Field_GeometricFieldSet + MODULE PROCEDURE cmfe_Field_GeometricFieldSetNumber + MODULE PROCEDURE cmfe_Field_GeometricFieldSetObj + END INTERFACE cmfe_Field_GeometricFieldSet + + !>Gets line lengths from a geometric field given an element number and element basis line number. + INTERFACE cmfe_Field_GeometricParametersElementLineLengthGet + MODULE PROCEDURE cmfe_Field_GeometricParametersElementLineLengthGetNumber + MODULE PROCEDURE cmfe_Field_GeometricParametersElementLineLengthGetObj + END INTERFACE cmfe_Field_GeometricParametersElementLineLengthGet + + !>Gets volumes from a geometric field given an element number. + INTERFACE cmfe_Field_GeometricParametersElementVolumeGet + MODULE PROCEDURE cmfe_Field_GeometricParametersElementVolumeGetNumber + MODULE PROCEDURE cmfe_Field_GeometricParametersElementVolumeGetObj + END INTERFACE cmfe_Field_GeometricParametersElementVolumeGet + + !>Returns the label for a field. + INTERFACE cmfe_Field_LabelGet + MODULE PROCEDURE cmfe_Field_LabelGetCNumber + MODULE PROCEDURE cmfe_Field_LabelGetCObj + MODULE PROCEDURE cmfe_Field_LabelGetVSNumber + MODULE PROCEDURE cmfe_Field_LabelGetVSObj + END INTERFACE cmfe_Field_LabelGet + + !>Sets/changes the label for a field. + INTERFACE cmfe_Field_LabelSet + MODULE PROCEDURE cmfe_Field_LabelSetCNumber + MODULE PROCEDURE cmfe_Field_LabelSetCObj + MODULE PROCEDURE cmfe_Field_LabelSetVSNumber + MODULE PROCEDURE cmfe_Field_LabelSetVSObj + END INTERFACE cmfe_Field_LabelSet + + INTERFACE cmfe_Field_PositionNormalTangentCalculateNode + MODULE PROCEDURE cmfe_Field_PositionNormalTangentCalculateNodeNumber + MODULE PROCEDURE cmfe_Field_PositionNormalTangentCalculateNodeObj + END INTERFACE + + !>Returns the mesh decomposition for a field. + INTERFACE cmfe_Field_MeshDecompositionGet + MODULE PROCEDURE cmfe_Field_MeshDecompositionGetNumber + MODULE PROCEDURE cmfe_Field_MeshDecompositionGetObj + END INTERFACE cmfe_Field_MeshDecompositionGet + + !>Sets/changes the mesh decomposition for a field. \todo remove when fields take decomposition argument on creation??? + INTERFACE cmfe_Field_MeshDecompositionSet + MODULE PROCEDURE cmfe_Field_MeshDecompositionSetNumber + MODULE PROCEDURE cmfe_Field_MeshDecompositionSetObj + END INTERFACE cmfe_Field_MeshDecompositionSet + + !>Sets/changes the data projection for a field. + INTERFACE cmfe_Field_DataProjectionSet + MODULE PROCEDURE cmfe_Field_DataProjectionSetNumber + MODULE PROCEDURE cmfe_Field_DataProjectionSetObj + END INTERFACE cmfe_Field_DataProjectionSet + + !>Returns the number of field components for a field variable. + INTERFACE cmfe_Field_NumberOfComponentsGet + MODULE PROCEDURE cmfe_Field_NumberOfComponentsGetNumber + MODULE PROCEDURE cmfe_Field_NumberOfComponentsGetObj + END INTERFACE cmfe_Field_NumberOfComponentsGet + + !>Sets/changes the number of field components for a field variable. + INTERFACE cmfe_Field_NumberOfComponentsSet + MODULE PROCEDURE cmfe_Field_NumberOfComponentsSetNumber + MODULE PROCEDURE cmfe_Field_NumberOfComponentsSetObj + END INTERFACE cmfe_Field_NumberOfComponentsSet + + !>Returns the number of field variables for a field. + INTERFACE cmfe_Field_NumberOfVariablesGet + MODULE PROCEDURE cmfe_Field_NumberOfVariablesGetNumber + MODULE PROCEDURE cmfe_Field_NumberOfVariablesGetObj + END INTERFACE cmfe_Field_NumberOfVariablesGet + + !>Sets/changes the number of field variables for a field. + INTERFACE cmfe_Field_NumberOfVariablesSet + MODULE PROCEDURE cmfe_Field_NumberOfVariablesSetNumber + MODULE PROCEDURE cmfe_Field_NumberOfVariablesSetObj + END INTERFACE cmfe_Field_NumberOfVariablesSet + + !>Adds the given value to the given parameter set for the constant of the field variable component. + INTERFACE cmfe_Field_ParameterSetAddConstant + MODULE PROCEDURE cmfe_Field_ParameterSetAddConstantIntgNumber + MODULE PROCEDURE cmfe_Field_ParameterSetAddConstantIntgObj + MODULE PROCEDURE cmfe_Field_ParameterSetAddConstantSPNumber + MODULE PROCEDURE cmfe_Field_ParameterSetAddConstantSPObj + MODULE PROCEDURE cmfe_Field_ParameterSetAddConstantDPNumber + MODULE PROCEDURE cmfe_Field_ParameterSetAddConstantDPObj + MODULE PROCEDURE cmfe_Field_ParameterSetAddConstantLNumber + MODULE PROCEDURE cmfe_Field_ParameterSetAddConstantLObj + END INTERFACE cmfe_Field_ParameterSetAddConstant + + !>Adds the given value to the given parameter set for a particular user element of the field variable component. + INTERFACE cmfe_Field_ParameterSetAddElement + MODULE PROCEDURE cmfe_Field_ParameterSetAddElementIntgNumber + MODULE PROCEDURE cmfe_Field_ParameterSetAddElementIntgObj + MODULE PROCEDURE cmfe_Field_ParameterSetAddElementSPNumber + MODULE PROCEDURE cmfe_Field_ParameterSetAddElementSPObj + MODULE PROCEDURE cmfe_Field_ParameterSetAddElementDPNumber + MODULE PROCEDURE cmfe_Field_ParameterSetAddElementDPObj + MODULE PROCEDURE cmfe_Field_ParameterSetAddElementLNumber + MODULE PROCEDURE cmfe_Field_ParameterSetAddElementLObj + END INTERFACE cmfe_Field_ParameterSetAddElement + + !>Adds the given value to the given parameter set for a particular Gauss point of a user element of the field variable component. + INTERFACE cmfe_Field_ParameterSetAddGaussPoint + MODULE PROCEDURE cmfe_Field_ParameterSetAddGaussPointIntgNumber + MODULE PROCEDURE cmfe_Field_ParameterSetAddGaussPointIntgObj + MODULE PROCEDURE cmfe_Field_ParameterSetAddGaussPointSPNumber + MODULE PROCEDURE cmfe_Field_ParameterSetAddGaussPointSPObj + MODULE PROCEDURE cmfe_Field_ParameterSetAddGaussPointDPNumber + MODULE PROCEDURE cmfe_Field_ParameterSetAddGaussPointDPObj + MODULE PROCEDURE cmfe_Field_ParameterSetAddGaussPointLNumber + MODULE PROCEDURE cmfe_Field_ParameterSetAddGaussPointLObj + END INTERFACE cmfe_Field_ParameterSetAddGaussPoint + + !>Adds the given value to the given parameter set for a particular user node of the field variable component. + INTERFACE cmfe_Field_ParameterSetAddNode + MODULE PROCEDURE cmfe_Field_ParameterSetAddNodeIntgNumber + MODULE PROCEDURE cmfe_Field_ParameterSetAddNodeIntgObj + MODULE PROCEDURE cmfe_Field_ParameterSetAddNodeSPNumber + MODULE PROCEDURE cmfe_Field_ParameterSetAddNodeSPObj + MODULE PROCEDURE cmfe_Field_ParameterSetAddNodeDPNumber + MODULE PROCEDURE cmfe_Field_ParameterSetAddNodeDPObj + MODULE PROCEDURE cmfe_Field_ParameterSetAddNodeLNumber + MODULE PROCEDURE cmfe_Field_ParameterSetAddNodeLObj + END INTERFACE cmfe_Field_ParameterSetAddNode + + !>Creates a new parameter set of type set type for a field variable. + INTERFACE cmfe_Field_ParameterSetCreate + MODULE PROCEDURE cmfe_Field_ParameterSetCreateNumber + MODULE PROCEDURE cmfe_Field_ParameterSetCreateObj + END INTERFACE cmfe_Field_ParameterSetCreate + + !>Destroy a parameter set of type set type for a field variable. + INTERFACE cmfe_Field_ParameterSetDestroy + MODULE PROCEDURE cmfe_Field_ParameterSetDestroyNumber + MODULE PROCEDURE cmfe_Field_ParameterSetDestroyObj + END INTERFACE cmfe_Field_ParameterSetDestroy + + !>Returns a pointer to the specified field parameter set local data array. The pointer must be restored with a call to OpenCMISS::Iron::cmfe_Field_ParameterSetDataRestore call. Note: the values can be used for read operations but a field parameter set update or add calls must be used to change any values. + INTERFACE cmfe_Field_ParameterSetDataGet + MODULE PROCEDURE cmfe_Field_ParameterSetDataGetIntgNumber + MODULE PROCEDURE cmfe_Field_ParameterSetDataGetIntgObj + MODULE PROCEDURE cmfe_Field_ParameterSetDataGetSPNumber + MODULE PROCEDURE cmfe_Field_ParameterSetDataGetSPObj + MODULE PROCEDURE cmfe_Field_ParameterSetDataGetDPNumber + MODULE PROCEDURE cmfe_Field_ParameterSetDataGetDPObj + MODULE PROCEDURE cmfe_Field_ParameterSetDataGetLNumber + MODULE PROCEDURE cmfe_Field_ParameterSetDataGetLObj + END INTERFACE cmfe_Field_ParameterSetDataGet + + !>Restores the specified field variable parameter set local array that was obtained with an OpenCMISS::Iron::cmfe_Field_ParameterSetDataGet call. + INTERFACE cmfe_Field_ParameterSetDataRestore + MODULE PROCEDURE cmfe_Field_ParameterSetDataRestoreIntgNumber + MODULE PROCEDURE cmfe_Field_ParameterSetDataRestoreIntgObj + MODULE PROCEDURE cmfe_Field_ParameterSetDataRestoreSPNumber + MODULE PROCEDURE cmfe_Field_ParameterSetDataRestoreSPObj + MODULE PROCEDURE cmfe_Field_ParameterSetDataRestoreDPNumber + MODULE PROCEDURE cmfe_Field_ParameterSetDataRestoreDPObj + MODULE PROCEDURE cmfe_Field_ParameterSetDataRestoreLNumber + MODULE PROCEDURE cmfe_Field_ParameterSetDataRestoreLObj + END INTERFACE cmfe_Field_ParameterSetDataRestore + + !>Returns from the given parameter set a value for the specified constant of a field variable component. + INTERFACE cmfe_Field_ParameterSetGetConstant + MODULE PROCEDURE cmfe_Field_ParameterSetGetConstantIntgNumber + MODULE PROCEDURE cmfe_Field_ParameterSetGetConstantIntgObj + MODULE PROCEDURE cmfe_Field_ParameterSetGetConstantSPNumber + MODULE PROCEDURE cmfe_Field_ParameterSetGetConstantSPObj + MODULE PROCEDURE cmfe_Field_ParameterSetGetConstantDPNumber + MODULE PROCEDURE cmfe_Field_ParameterSetGetConstantDPObj + MODULE PROCEDURE cmfe_Field_ParameterSetGetConstantLNumber + MODULE PROCEDURE cmfe_Field_ParameterSetGetConstantLObj + END INTERFACE cmfe_Field_ParameterSetGetConstant + + !>Returns from the given parameter set a value for the specified data pont of a field variable component. + INTERFACE cmfe_Field_ParameterSetGetDataPoint + MODULE PROCEDURE cmfe_Field_ParameterSetGetDataPointIntgNumberI !Interface + MODULE PROCEDURE cmfe_Field_ParameterSetGetDataPointIntgNumberR !Region + MODULE PROCEDURE cmfe_Field_ParameterSetGetDataPointIntgObj + MODULE PROCEDURE cmfe_Field_ParameterSetGetDataPointSPNumberI !Interface + MODULE PROCEDURE cmfe_Field_ParameterSetGetDataPointSPNumberR !Region + MODULE PROCEDURE cmfe_Field_ParameterSetGetDataPointSPObj + MODULE PROCEDURE cmfe_Field_ParameterSetGetDataPointDPNumberI !Interface + MODULE PROCEDURE cmfe_Field_ParameterSetGetDataPointDPNumberR !Region + MODULE PROCEDURE cmfe_Field_ParameterSetGetDataPointDPObj + MODULE PROCEDURE cmfe_Field_ParameterSetGetDataPointLNumberI !Interface + MODULE PROCEDURE cmfe_Field_ParameterSetGetDataPointLNumberR !Region + MODULE PROCEDURE cmfe_Field_ParameterSetGetDataPointLObj + END INTERFACE cmfe_Field_ParameterSetGetDataPoint + + !>Returns from the given parameter set a value for the specified element of a field variable component. + INTERFACE cmfe_Field_ParameterSetGetElement + MODULE PROCEDURE cmfe_Field_ParameterSetGetElementIntgNumber + MODULE PROCEDURE cmfe_Field_ParameterSetGetElementIntgObj + MODULE PROCEDURE cmfe_Field_ParameterSetGetElementSPNumber + MODULE PROCEDURE cmfe_Field_ParameterSetGetElementSPObj + MODULE PROCEDURE cmfe_Field_ParameterSetGetElementDPNumber + MODULE PROCEDURE cmfe_Field_ParameterSetGetElementDPObj + MODULE PROCEDURE cmfe_Field_ParameterSetGetElementLNumber + MODULE PROCEDURE cmfe_Field_ParameterSetGetElementLObj + END INTERFACE cmfe_Field_ParameterSetGetElement + + !>Returns from the given parameter set a value for the specified node and derivative of a field variable component. + INTERFACE cmfe_Field_ParameterSetGetNode + MODULE PROCEDURE cmfe_Field_ParameterSetGetNodeIntgNumber + MODULE PROCEDURE cmfe_Field_ParameterSetGetNodeIntgObj + MODULE PROCEDURE cmfe_Field_ParameterSetGetNodeSPNumber + MODULE PROCEDURE cmfe_Field_ParameterSetGetNodeSPObj + MODULE PROCEDURE cmfe_Field_ParameterSetGetNodeDPNumber + MODULE PROCEDURE cmfe_Field_ParameterSetGetNodeDPObj + MODULE PROCEDURE cmfe_Field_ParameterSetGetNodeLNumber + MODULE PROCEDURE cmfe_Field_ParameterSetGetNodeLObj + END INTERFACE cmfe_Field_ParameterSetGetNode + + !>Returns from the given parameter set a value for the specified element and Gauss point of a field variable component. + INTERFACE cmfe_Field_ParameterSetGetGaussPoint ! TODO: other versions + MODULE PROCEDURE cmfe_Field_ParameterSetGetGaussPointDPObj + END INTERFACE cmfe_Field_ParameterSetGetGaussPoint + + !>Updates the given parameter set with the given value for the constant of a field variable component. + INTERFACE cmfe_Field_ParameterSetUpdateConstant + MODULE PROCEDURE cmfe_Field_ParameterSetUpdateConstantIntgNumber + MODULE PROCEDURE cmfe_Field_ParameterSetUpdateConstantIntgObj + MODULE PROCEDURE cmfe_Field_ParameterSetUpdateConstantSPNumber + MODULE PROCEDURE cmfe_Field_ParameterSetUpdateConstantSPObj + MODULE PROCEDURE cmfe_Field_ParameterSetUpdateConstantDPNumber + MODULE PROCEDURE cmfe_Field_ParameterSetUpdateConstantDPObj + MODULE PROCEDURE cmfe_Field_ParameterSetUpdateConstantLNumber + MODULE PROCEDURE cmfe_Field_ParameterSetUpdateConstantLObj + END INTERFACE cmfe_Field_ParameterSetUpdateConstant + + !>Update the given parameter set a value for the specified data pont of a field variable component. + INTERFACE cmfe_Field_ParameterSetUpdateDataPoint + MODULE PROCEDURE cmfe_Field_ParameterSetUpdateDataPointIntgNumberI !Interface + MODULE PROCEDURE cmfe_Field_ParameterSetUpdateDataPointIntgNumberR !Region + MODULE PROCEDURE cmfe_Field_ParameterSetUpdateDataPointIntgObj + MODULE PROCEDURE cmfe_Field_ParameterSetUpdateDataPointSPNumberI !Interface + MODULE PROCEDURE cmfe_Field_ParameterSetUpdateDataPointSPNumberR !Region + MODULE PROCEDURE cmfe_Field_ParameterSetUpdateDataPointSPObj + MODULE PROCEDURE cmfe_Field_ParameterSetUpdateDataPointDPNumberI !Interface + MODULE PROCEDURE cmfe_Field_ParameterSetUpdateDataPointDPNumberR !Region + MODULE PROCEDURE cmfe_Field_ParameterSetUpdateDataPointDPObj + MODULE PROCEDURE cmfe_Field_ParameterSetUpdateDataPointLNumberI !Interface + MODULE PROCEDURE cmfe_Field_ParameterSetUpdateDataPointLNumberR !Region + MODULE PROCEDURE cmfe_Field_ParameterSetUpdateDataPointLObj + END INTERFACE cmfe_Field_ParameterSetUpdateDataPoint + + !>Updates the given parameter set with the given value for a particular user element of a field variable component. + INTERFACE cmfe_Field_ParameterSetUpdateElement + MODULE PROCEDURE cmfe_Field_ParameterSetUpdateElementIntgNumber + MODULE PROCEDURE cmfe_Field_ParameterSetUpdateElementIntgObj + MODULE PROCEDURE cmfe_Field_ParameterSetUpdateElementSPNumber + MODULE PROCEDURE cmfe_Field_ParameterSetUpdateElementSPObj + MODULE PROCEDURE cmfe_Field_ParameterSetUpdateElementDPNumber + MODULE PROCEDURE cmfe_Field_ParameterSetUpdateElementDPObj + MODULE PROCEDURE cmfe_Field_ParameterSetUpdateElementLNumber + MODULE PROCEDURE cmfe_Field_ParameterSetUpdateElementLObj + END INTERFACE cmfe_Field_ParameterSetUpdateElement + + !>Finishes the parameter set update for a field variable. \see OpenCMISS::Iron::cmfe_Field_ParameterSetUpdateStart + INTERFACE cmfe_Field_ParameterSetUpdateFinish + MODULE PROCEDURE cmfe_Field_ParameterSetUpdateFinishNumber + MODULE PROCEDURE cmfe_Field_ParameterSetUpdateFinishObj + END INTERFACE cmfe_Field_ParameterSetUpdateFinish + + !>Updates the given parameter set with the given value for a particular user node of a field variable component. + INTERFACE cmfe_Field_ParameterSetUpdateNode + MODULE PROCEDURE cmfe_Field_ParameterSetUpdateNodeIntgNumber + MODULE PROCEDURE cmfe_Field_ParameterSetUpdateNodeIntgObj + MODULE PROCEDURE cmfe_Field_ParameterSetUpdateNodeSPNumber + MODULE PROCEDURE cmfe_Field_ParameterSetUpdateNodeSPObj + MODULE PROCEDURE cmfe_Field_ParameterSetUpdateNodeDPNumber + MODULE PROCEDURE cmfe_Field_ParameterSetUpdateNodeDPObj + MODULE PROCEDURE cmfe_Field_ParameterSetUpdateNodeLNumber + MODULE PROCEDURE cmfe_Field_ParameterSetUpdateNodeLObj + END INTERFACE cmfe_Field_ParameterSetUpdateNode + + !\todo: merge the two types of routines for getting scalefactors under the same interface declaration? + !>Gets a scale factor for a particular node. + INTERFACE cmfe_Field_ParameterSetNodeScaleFactorGet + MODULE PROCEDURE cmfe_Field_ParameterSetNodeScaleFactorGetNumber + MODULE PROCEDURE cmfe_Field_ParameterSetNodeScaleFactorGetObj + END INTERFACE cmfe_Field_ParameterSetNodeScaleFactorGet + + !>Gets the scale factors for all nodes + INTERFACE cmfe_Field_ParameterSetNodeScaleFactorsGet + MODULE PROCEDURE cmfe_Field_ParameterSetNodeScaleFactorsGetNumber + MODULE PROCEDURE cmfe_Field_ParameterSetNodeScaleFactorsGetObj + END INTERFACE cmfe_Field_ParameterSetNodeScaleFactorsGet + + !>Sets a scale factor for a particular node. + INTERFACE cmfe_Field_ParameterSetNodeScaleFactorSet + MODULE PROCEDURE cmfe_Field_ParameterSetNodeScaleFactorSetNumber + MODULE PROCEDURE cmfe_Field_ParameterSetNodeScaleFactorSetObj + END INTERFACE cmfe_Field_ParameterSetNodeScaleFactorSet + + !>Sets the scale factors for all nodes + INTERFACE cmfe_Field_ParameterSetNodeScaleFactorsSet + MODULE PROCEDURE cmfe_Field_ParameterSetNodeScaleFactorsSetNumber + MODULE PROCEDURE cmfe_Field_ParameterSetNodeScaleFactorsSetObj + END INTERFACE cmfe_Field_ParameterSetNodeScaleFactorsSet + + !>Gets the number of scalefactor dofs + INTERFACE cmfe_Field_ParameterSetNodeNumberOfScaleFactorDofsGet + MODULE PROCEDURE cmfe_Field_ParameterSetNodeNumberOfScaleFactorDofsGetNumber + MODULE PROCEDURE cmfe_Field_ParameterSetNodeNumberOfScaleFactorDofsGetObj + END INTERFACE cmfe_Field_ParameterSetNodeNumberOfScaleFactorDofsGet + + !>Updates the given parameter set with the given values for all local dofs of the field variable. + INTERFACE cmfe_Field_ParameterSetUpdateLocalDofs + MODULE PROCEDURE cmfe_Field_ParameterSetUpdateLocalDofsDPObj + !\todo: add Intg/SP/L routines, both indexed by Number and Obj + END INTERFACE cmfe_Field_ParameterSetUpdateLocalDofs + + !>Updates the given parameter set with the given value for a particular Gauss point of a field variable component. + INTERFACE cmfe_Field_ParameterSetUpdateGaussPoint + MODULE PROCEDURE cmfe_Field_ParameterSetUpdateGaussPointIntgNumber + MODULE PROCEDURE cmfe_Field_ParameterSetUpdateGaussPointIntgObj + MODULE PROCEDURE cmfe_Field_ParameterSetUpdateGaussPointSPNumber + MODULE PROCEDURE cmfe_Field_ParameterSetUpdateGaussPointSPObj + MODULE PROCEDURE cmfe_Field_ParameterSetUpdateGaussPointDPNumber + MODULE PROCEDURE cmfe_Field_ParameterSetUpdateGaussPointDPObj + MODULE PROCEDURE cmfe_Field_ParameterSetUpdateGaussPointLNumber + MODULE PROCEDURE cmfe_Field_ParameterSetUpdateGaussPointLObj + END INTERFACE cmfe_Field_ParameterSetUpdateGaussPoint + + !>Interpolates the given parameter set at a specified xi/set of xi locations for specified element and derviative. + INTERFACE cmfe_Field_ParameterSetInterpolateXi + MODULE PROCEDURE cmfe_Field_ParameterSetInterpolateSingleXiDPNumber + MODULE PROCEDURE cmfe_Field_ParameterSetInterpolateSingleXiDPObj + MODULE PROCEDURE cmfe_Field_ParameterSetInterpolateMultipleXiDPNumber + MODULE PROCEDURE cmfe_Field_ParameterSetInterpolateMultipleXiDPObj + END INTERFACE cmfe_Field_ParameterSetInterpolateXi + + !>Interpolates the given parameter set at a specified set of Gauss points for specified element and derviative. When interpolating at multiple Gauss points, if no Gauss points are specified then all Gauss points are interpolated. + INTERFACE cmfe_Field_ParameterSetInterpolateGauss + MODULE PROCEDURE cmfe_Field_ParameterSetInterpolateSingleGaussDPNumber + MODULE PROCEDURE cmfe_Field_ParameterSetInterpolateSingleGaussDPObj + MODULE PROCEDURE cmfe_Field_ParameterSetInterpolateMultipleGaussDPNumber + MODULE PROCEDURE cmfe_Field_ParameterSetInterpolateMultipleGaussDPObj + END INTERFACE cmfe_Field_ParameterSetInterpolateGauss + + !>Updates the given parameter set with the given value for a particular data point of a field variable component. + INTERFACE cmfe_Field_ParameterSetUpdateElementDataPoint + MODULE PROCEDURE cmfe_Field_ParameterSetUpdateElementDataPointDPObj + END INTERFACE cmfe_Field_ParameterSetUpdateElementDataPoint + + !>Starts the parameter set update for a field variable. \see OpenCMISS::Iron::cmfe_Field_ParameterSetUpdateFinish + INTERFACE cmfe_Field_ParameterSetUpdateStart + MODULE PROCEDURE cmfe_Field_ParameterSetUpdateStartNumber + MODULE PROCEDURE cmfe_Field_ParameterSetUpdateStartObj + END INTERFACE cmfe_Field_ParameterSetUpdateStart + + !>Copy the parameters from the parameter set of a component of a field variable to the paramters of a parameter set of + !>a component of another field variable. + INTERFACE cmfe_Field_ParametersToFieldParametersComponentCopy + MODULE PROCEDURE cmfe_Field_ParametersToFieldParametersComponentCopyNumber + MODULE PROCEDURE cmfe_Field_ParametersToFieldParametersComponentCopyObj + END INTERFACE cmfe_Field_ParametersToFieldParametersComponentCopy + + !>Returns the scaling type for a field. + INTERFACE cmfe_Field_ScalingTypeGet + MODULE PROCEDURE cmfe_Field_ScalingTypeGetNumber + MODULE PROCEDURE cmfe_Field_ScalingTypeGetObj + END INTERFACE cmfe_Field_ScalingTypeGet + + !>Sets/changes the scaling type for a field. + INTERFACE cmfe_Field_ScalingTypeSet + MODULE PROCEDURE cmfe_Field_ScalingTypeSetNumber + MODULE PROCEDURE cmfe_Field_ScalingTypeSetObj + END INTERFACE cmfe_Field_ScalingTypeSet + + !>Returns the type for a field. + INTERFACE cmfe_Field_TypeGet + MODULE PROCEDURE cmfe_Field_TypeGetNumber + MODULE PROCEDURE cmfe_Field_TypeGetObj + END INTERFACE cmfe_Field_TypeGet + + !>Sets/changes the type for a field. + INTERFACE cmfe_Field_TypeSet + MODULE PROCEDURE cmfe_Field_TypeSetNumber + MODULE PROCEDURE cmfe_Field_TypeSetObj + END INTERFACE cmfe_Field_TypeSet + + !>Returns the label for a field variable. + INTERFACE cmfe_Field_VariableLabelGet + MODULE PROCEDURE cmfe_Field_VariableLabelGetCNumber + MODULE PROCEDURE cmfe_Field_VariableLabelGetCObj + MODULE PROCEDURE cmfe_Field_VariableLabelGetVSNumber + MODULE PROCEDURE cmfe_Field_VariableLabelGetVSObj + END INTERFACE cmfe_Field_VariableLabelGet + + !>Sets/changes the label for a field variable. + INTERFACE cmfe_Field_VariableLabelSet + MODULE PROCEDURE cmfe_Field_VariableLabelSetCNumber + MODULE PROCEDURE cmfe_Field_VariableLabelSetCObj + MODULE PROCEDURE cmfe_Field_VariableLabelSetVSNumber + MODULE PROCEDURE cmfe_Field_VariableLabelSetVSObj + END INTERFACE cmfe_Field_VariableLabelSet + + !>Returns the field variable types for a field. + INTERFACE cmfe_Field_VariableTypesGet + MODULE PROCEDURE cmfe_Field_VariableTypesGetNumber + MODULE PROCEDURE cmfe_Field_VariableTypesGetObj + END INTERFACE cmfe_Field_VariableTypesGet + + !>Sets/changes the field variable types for a field. + INTERFACE cmfe_Field_VariableTypesSet + MODULE PROCEDURE cmfe_Field_VariableTypesSetNumber + MODULE PROCEDURE cmfe_Field_VariableTypesSetObj + END INTERFACE cmfe_Field_VariableTypesSet + + + PUBLIC CMFE_FIELD_DEPENDENT_TYPE,CMFE_FIELD_INDEPENDENT_TYPE + + PUBLIC CMFE_FIELD_SCALAR_DIMENSION_TYPE,CMFE_FIELD_VECTOR_DIMENSION_TYPE,CMFE_FIELD_TENSOR_DIMENSION_TYPE + + PUBLIC CMFE_FIELD_GEOMETRIC_TYPE,CMFE_FIELD_FIBRE_TYPE,CMFE_FIELD_GENERAL_TYPE,CMFE_FIELD_MATERIAL_TYPE, & + & CMFE_FIELD_GEOMETRIC_GENERAL_TYPE + + PUBLIC CMFE_FIELD_CONSTANT_INTERPOLATION,CMFE_FIELD_ELEMENT_BASED_INTERPOLATION,CMFE_FIELD_NODE_BASED_INTERPOLATION, & + & CMFE_FIELD_GRID_POINT_BASED_INTERPOLATION,CMFE_FIELD_GAUSS_POINT_BASED_INTERPOLATION, & + & CMFE_FIELD_DATA_POINT_BASED_INTERPOLATION - PUBLIC CMFE_DATA_PROJECTION_BOUNDARY_LINES_PROJECTION_TYPE,CMFE_DATA_PROJECTION_BOUNDARY_FACES_PROJECTION_TYPE, & - & CMFE_DATA_PROJECTION_ALL_ELEMENTS_PROJECTION_TYPE + PUBLIC CMFE_FIELD_NUMBER_OF_VARIABLE_SUBTYPES - PUBLIC CMFE_DATA_PROJECTION_CANCELLED,CMFE_DATA_PROJECTION_EXIT_TAG_CONVERGED,CMFE_DATA_PROJECTION_EXIT_TAG_BOUNDS, & - & CMFE_DATA_PROJECTION_EXIT_TAG_MAX_ITERATION,CMFE_DATA_PROJECTION_EXIT_TAG_NO_ELEMENT + PUBLIC CMFE_FIELD_U_VARIABLE_TYPE,CMFE_FIELD_DELUDELN_VARIABLE_TYPE,CMFE_FIELD_DELUDELT_VARIABLE_TYPE, & + & CMFE_FIELD_DEL2UDELT2_VARIABLE_TYPE, & + & CMFE_FIELD_V_VARIABLE_TYPE,CMFE_FIELD_DELVDELN_VARIABLE_TYPE,CMFE_FIELD_DELVDELT_VARIABLE_TYPE, & + & CMFE_FIELD_DEL2VDELT2_VARIABLE_TYPE, & + & CMFE_FIELD_W_VARIABLE_TYPE, & + & CMFE_FIELD_U1_VARIABLE_TYPE,CMFE_FIELD_DELU1DELN_VARIABLE_TYPE,CMFE_FIELD_DELU1DELT_VARIABLE_TYPE, & + & CMFE_FIELD_DEL2U1DELT2_VARIABLE_TYPE, & + & CMFE_FIELD_U2_VARIABLE_TYPE,CMFE_FIELD_DELU2DELN_VARIABLE_TYPE,CMFE_FIELD_DELU2DELT_VARIABLE_TYPE, & + & CMFE_FIELD_DEL2U2DELT2_VARIABLE_TYPE, & + & CMFE_FIELD_U3_VARIABLE_TYPE,CMFE_FIELD_DELU3DELN_VARIABLE_TYPE,CMFE_FIELD_DELU3DELT_VARIABLE_TYPE, & + & CMFE_FIELD_DEL2U3DELT2_VARIABLE_TYPE, & + & CMFE_FIELD_U4_VARIABLE_TYPE,CMFE_FIELD_DELU4DELN_VARIABLE_TYPE,CMFE_FIELD_DELU4DELT_VARIABLE_TYPE, & + & CMFE_FIELD_DEL2U4DELT2_VARIABLE_TYPE, & + & CMFE_FIELD_U5_VARIABLE_TYPE,CMFE_FIELD_DELU5DELN_VARIABLE_TYPE,CMFE_FIELD_DELU5DELT_VARIABLE_TYPE, & + & CMFE_FIELD_DEL2U5DELT2_VARIABLE_TYPE, & + & CMFE_FIELD_U6_VARIABLE_TYPE,CMFE_FIELD_DELU6DELN_VARIABLE_TYPE,CMFE_FIELD_DELU6DELT_VARIABLE_TYPE, & + & CMFE_FIELD_DEL2U6DELT2_VARIABLE_TYPE, & + & CMFE_FIELD_U7_VARIABLE_TYPE,CMFE_FIELD_DELU7DELN_VARIABLE_TYPE,CMFE_FIELD_DELU7DELT_VARIABLE_TYPE, & + & CMFE_FIELD_DEL2U7DELT2_VARIABLE_TYPE, & + & CMFE_FIELD_U8_VARIABLE_TYPE,CMFE_FIELD_DELU8DELN_VARIABLE_TYPE,CMFE_FIELD_DELU8DELT_VARIABLE_TYPE, & + & CMFE_FIELD_DEL2U8DELT2_VARIABLE_TYPE, & + & CMFE_FIELD_U9_VARIABLE_TYPE,CMFE_FIELD_DELU9DELN_VARIABLE_TYPE,CMFE_FIELD_DELU9DELT_VARIABLE_TYPE, & + & CMFE_FIELD_DEL2U9DELT2_VARIABLE_TYPE, & + & CMFE_FIELD_U10_VARIABLE_TYPE,CMFE_FIELD_DELU10DELN_VARIABLE_TYPE,CMFE_FIELD_DELU10DELT_VARIABLE_TYPE, & + & CMFE_FIELD_DEL2U10DELT2_VARIABLE_TYPE - PUBLIC CMFE_DATA_PROJECTION_DISTANCE_GREATER,CMFE_DATA_PROJECTION_DISTANCE_GREATER_EQUAL,CMFE_DATA_PROJECTION_DISTANCE_LESS, & - & CMFE_DATA_PROJECTION_DISTANCE_LESS_EQUAL + PUBLIC CMFE_FIELD_INTG_TYPE,CMFE_FIELD_SP_TYPE,CMFE_FIELD_DP_TYPE,CMFE_FIELD_L_TYPE - PUBLIC cmfe_DataProjection_AbsoluteToleranceGet,cmfe_DataProjection_AbsoluteToleranceSet + PUBLIC CMFE_FIELD_SEPARATED_COMPONENT_DOF_ORDER,CMFE_FIELD_CONTIGUOUS_COMPONENT_DOF_ORDER - PUBLIC cmfe_DataProjection_CreateFinish,cmfe_DataProjection_CreateStart + PUBLIC CMFE_FIELD_VALUES_SET_TYPE,CMFE_FIELD_INITIAL_VALUES_SET_TYPE,CMFE_FIELD_INCREMENTAL_VALUES_SET_TYPE, & + & CMFE_FIELD_BOUNDARY_CONDITIONS_SET_TYPE, & + & CMFE_FIELD_ANALYTIC_VALUES_SET_TYPE, & + & CMFE_FIELD_PREVIOUS_VALUES_SET_TYPE,CMFE_FIELD_MEAN_PREDICTED_DISPLACEMENT_SET_TYPE,CMFE_FIELD_VELOCITY_VALUES_SET_TYPE, & + & CMFE_FIELD_INITIAL_VELOCITY_SET_TYPE,CMFE_FIELD_PREVIOUS_VELOCITY_SET_TYPE,CMFE_FIELD_MEAN_PREDICTED_VELOCITY_SET_TYPE, & + & CMFE_FIELD_ACCELERATION_VALUES_SET_TYPE,CMFE_FIELD_INITIAL_ACCELERATION_SET_TYPE, & + & CMFE_FIELD_PREVIOUS_ACCELERATION_SET_TYPE, & + & CMFE_FIELD_MEAN_PREDICTED_ACCELERATION_SET_TYPE, CMFE_FIELD_PRESSURE_VALUES_SET_TYPE, & + & CMFE_FIELD_PREVIOUS_PRESSURE_SET_TYPE, & + & CMFE_FIELD_IMPERMEABLE_FLAG_VALUES_SET_TYPE,CMFE_FIELD_INTEGRATED_NEUMANN_SET_TYPE, & + & CMFE_FIELD_MESH_DISPLACEMENT_SET_TYPE,CMFE_FIELD_MESH_VELOCITY_SET_TYPE - PUBLIC cmfe_DataProjection_Destroy + PUBLIC CMFE_FIELD_NO_SCALING,CMFE_FIELD_UNIT_SCALING,CMFE_FIELD_ARC_LENGTH_SCALING,CMFE_FIELD_ARITHMETIC_MEAN_SCALING, & + & CMFE_FIELD_GEOMETRIC_MEAN_SCALING,CMFE_FIELD_HARMONIC_MEAN_SCALING - PUBLIC cmfe_DataProjection_DataPointsPositionEvaluate + PUBLIC cmfe_Field_ComponentInterpolationGet,cmfe_Field_ComponentInterpolationSet - PUBLIC cmfe_DataProjection_ProjectionCancelByDataPoints + PUBLIC cmfe_Field_ComponentLabelGet,cmfe_Field_ComponentLabelSet - PUBLIC cmfe_DataProjection_ProjectionCancelByDistance + PUBLIC cmfe_Field_ComponentMeshComponentGet,cmfe_Field_ComponentMeshComponentSet - PUBLIC cmfe_DataProjection_ProjectionCancelByExitTags + PUBLIC cmfe_Field_ComponentValuesInitialise - PUBLIC cmfe_DataProjection_ProjectionCandidateElementsSet + PUBLIC cmfe_Field_DataTypeGet,cmfe_Field_DataTypeSet - PUBLIC cmfe_DataProjection_ProjectionDataCandidateElementsSet + PUBLIC cmfe_Field_DOFOrderTypeGet,cmfe_Field_DOFOrderTypeSet - PUBLIC cmfe_DataProjection_ProjectionCandidateFacesSet + PUBLIC cmfe_Field_CreateFinish,cmfe_Field_CreateStart - PUBLIC cmfe_DataProjection_ProjectionDataCandidateFacesSet + PUBLIC cmfe_Field_DependentTypeGet,cmfe_Field_DependentTypeSet - PUBLIC cmfe_DataProjection_ProjectionCandidateLinesSet + PUBLIC cmfe_Field_Destroy - PUBLIC cmfe_DataProjection_ProjectionDataCandidateLinesSet + PUBLIC cmfe_Field_DimensionGet,cmfe_Field_DimensionSet - PUBLIC cmfe_DataProjection_DataPointsProjectionEvaluate + PUBLIC cmfe_Field_GeometricFieldGet,cmfe_Field_GeometricFieldSet - PUBLIC cmfe_DataProjection_MaximumIterationUpdateGet,cmfe_DataProjection_MaximumIterationUpdateSet + PUBLIC cmfe_Field_GeometricParametersElementLineLengthGet, cmfe_Field_GeometricParametersElementVolumeGet - PUBLIC cmfe_DataProjection_MaximumNumberOfIterationsGet,cmfe_DataProjection_MaximumNumberOfIterationsSet + PUBLIC cmfe_Field_LabelGet,cmfe_Field_LabelSet - PUBLIC cmfe_DataProjection_NumberOfClosestElementsGet,cmfe_DataProjection_NumberOfClosestElementsSet + PUBLIC cmfe_Field_MeshDecompositionGet,cmfe_Field_MeshDecompositionSet - PUBLIC cmfe_DataProjection_ProjectionTypeGet,cmfe_DataProjection_ProjectionTypeSet + PUBLIC cmfe_Field_DataProjectionSet - PUBLIC cmfe_DataProjection_RelativeToleranceGet,cmfe_DataProjection_RelativeToleranceSet + PUBLIC cmfe_Field_PositionNormalTangentCalculateNode - PUBLIC cmfe_DataProjection_StartingXiGet,cmfe_DataProjection_StartingXiSet + PUBLIC cmfe_Field_NumberOfComponentsGet,cmfe_Field_NumberOfComponentsSet - PUBLIC cmfe_DataProjection_ElementSet + PUBLIC cmfe_Field_NumberOfVariablesGet,cmfe_Field_NumberOfVariablesSet - PUBLIC cmfe_DataProjection_LabelGet,cmfe_DataProjection_LabelSet + PUBLIC cmfe_Field_ParameterSetAddConstant,cmfe_Field_ParameterSetAddElement,cmfe_Field_ParameterSetAddGaussPoint, & + & cmfe_Field_ParameterSetAddNode - PUBLIC cmfe_DataProjection_ResultAnalysisOutput + PUBLIC cmfe_Field_ParameterSetCreate - PUBLIC cmfe_DataProjection_ResultDistanceGet,cmfe_DataProjection_ResultElementNumberGet + PUBLIC cmfe_Field_ParameterSetDestroy - PUBLIC cmfe_DataProjection_ResultElementFaceNumberGet,cmfe_DataProjection_ResultElementLineNumberGet + PUBLIC cmfe_Field_ParameterSetDataGet,cmfe_Field_ParameterSetDataRestore - PUBLIC cmfe_DataProjection_ResultExitTagGet + PUBLIC cmfe_Field_ParameterSetGetConstant,cmfe_Field_ParameterSetGetElement,cmfe_Field_ParameterSetGetNode - PUBLIC cmfe_DataProjection_ResultMaximumErrorGet,cmfe_DataProjection_ResultMinimumErrorGet + PUBLIC cmfe_Field_ParameterSetGetDataPoint,cmfe_Field_ParameterSetUpdateDataPoint - PUBLIC cmfe_DataProjection_ResultRMSErrorGet + PUBLIC cmfe_Field_ParameterSetUpdateConstant,cmfe_Field_ParameterSetUpdateElement,cmfe_Field_ParameterSetUpdateNode - PUBLIC cmfe_DataProjection_ResultXiGet,cmfe_DataProjection_ResultXiSet + PUBLIC cmfe_Field_ParameterSetNodeScaleFactorGet,cmfe_Field_ParameterSetNodeScaleFactorSet - PUBLIC cmfe_DataProjection_ResultProjectionVectorGet + PUBLIC cmfe_Field_ParameterSetNodeScaleFactorsGet,cmfe_Field_ParameterSetNodeScaleFactorsSet -!!================================================================================================================================== -!! -!! EquationsRoutines -!! -!!================================================================================================================================== + PUBLIC cmfe_Field_ParameterSetNodeNumberOfScaleFactorDofsGet - !Module parameters + PUBLIC cmfe_Field_ParameterSetUpdateLocalDofs - !> \addtogroup OpenCMISS_EquationsConstants OpenCMISS::Iron::Equations::Constants - !> \brief Equations constants. - !>@{ - !> \addtogroup OpenCMISS_EquationsOutputTypes OpenCMISS::Iron::Equations::OutputTypes - !> \brief Equations output types - !> \see OpenCMISS::Iron::Equations,OpenCMISS - !>@{ - INTEGER(INTG), PARAMETER :: CMFE_EQUATIONS_NO_OUTPUT = EQUATIONS_NO_OUTPUT!@} - !> \addtogroup OpenCMISS_EquationsSparsityTypes OpenCMISS::Iron::Equations::SparsityTypes - !> \brief Equations sparsity types - !> \see OpenCMISS::Iron::Equations,OpenCMISS - !>@{ - INTEGER(INTG), PARAMETER :: CMFE_EQUATIONS_SPARSE_MATRICES = EQUATIONS_SPARSE_MATRICES !@} - !> \addtogroup OpenCMISS_EquationsLumpingTypes OpenCMISS::Iron::Equations::LumpingTypes - !> \brief Equations lumping types - !> \see OpenCMISS::Iron::Equations,OpenCMISS - !>@{ - INTEGER(INTG), PARAMETER :: CMFE_EQUATIONS_UNLUMPED_MATRICES = EQUATIONS_UNLUMPED_MATRICES !@} - !> \addtogroup OpenCMISS_EquationsLinearityTypes OpenCMISS::Iron::Equations::LinearityTypes - !> \brief The equations linearity types - !> \see OpenCMISS::Iron::Equations,OpenCMISS - !>@{ - INTEGER(INTG), PARAMETER :: CMFE_EQUATIONS_LINEAR = EQUATIONS_LINEAR !@} - !> \addtogroup OpenCMISS_EquationsTimeDependenceTypes OpenCMISS::Iron::Equations::TimeDependenceTypes - !> \brief The equations time dependence types - !> \see OpenCMISS::Iron::Equations,OpenCMISS - !>@{ - INTEGER(INTG), PARAMETER :: CMFE_EQUATIONS_STATIC = EQUATIONS_STATIC !@} - !> \addtogroup OpenCMISS_EquationsJacobianCalculated OpenCMISS::Iron::Equations::JacobianCalculated - !> \brief Equations Jacobian matrices calculation types - !> \see OpenCMISS::Iron::Equations,OpenCMISS - !>@{ - INTEGER(INTG), PARAMETER :: CMFE_EQUATIONS_JACOBIAN_FINITE_DIFFERENCE_CALCULATED = EQUATIONS_JACOBIAN_FINITE_DIFFERENCE_CALCULATED!@} - !>@} + PUBLIC cmfe_Field_ParameterSetUpdateGaussPoint,cmfe_Field_ParameterSetGetGaussPoint - !Module types + PUBLIC cmfe_Field_ParameterSetInterpolateXi - !Module variables + PUBLIC cmfe_Field_ParameterSetInterpolateGauss - !Interfaces + PUBLIC cmfe_Field_ParameterSetUpdateElementDataPoint - !>Destroys equations for an equations set. - INTERFACE cmfe_Equations_Destroy - MODULE PROCEDURE cmfe_Equations_DestroyNumber - MODULE PROCEDURE cmfe_Equations_DestroyObj - END INTERFACE cmfe_Equations_Destroy + PUBLIC cmfe_Field_ParameterSetUpdateFinish,cmfe_Field_ParameterSetUpdateStart - !>Gets the linearity type for equations. - INTERFACE cmfe_Equations_LinearityTypeGet - MODULE PROCEDURE cmfe_Equations_LinearityTypeGetNumber - MODULE PROCEDURE cmfe_Equations_LinearityTypeGetObj - END INTERFACE cmfe_Equations_LinearityTypeGet + PUBLIC cmfe_Field_ParametersToFieldParametersComponentCopy - !>Gets the lumping type for equations. - INTERFACE cmfe_Equations_LumpingTypeGet - MODULE PROCEDURE cmfe_Equations_LumpingTypeGetNumber - MODULE PROCEDURE cmfe_Equations_LumpingTypeGetObj - END INTERFACE cmfe_Equations_LumpingTypeGet + PUBLIC cmfe_Field_ScalingTypeGet,cmfe_Field_ScalingTypeSet - !>Sets/changes the lumping type for equations. - INTERFACE cmfe_Equations_LumpingTypeSet - MODULE PROCEDURE cmfe_Equations_LumpingTypeSetNumber - MODULE PROCEDURE cmfe_Equations_LumpingTypeSetObj - END INTERFACE cmfe_Equations_LumpingTypeSet + PUBLIC cmfe_Field_TypeGet,cmfe_Field_TypeSet - !>Gets the output type for equations. - INTERFACE cmfe_Equations_OutputTypeGet - MODULE PROCEDURE cmfe_Equations_OutputTypeGetNumber - MODULE PROCEDURE cmfe_Equations_OutputTypeGetObj - END INTERFACE cmfe_Equations_OutputTypeGet + PUBLIC cmfe_Field_VariableLabelGet,cmfe_Field_VariableLabelSet - !>Sets/changes the output type for equations. - INTERFACE cmfe_Equations_OutputTypeSet - MODULE PROCEDURE cmfe_Equations_OutputTypeSetNumber - MODULE PROCEDURE cmfe_Equations_OutputTypeSetObj - END INTERFACE cmfe_Equations_OutputTypeSet + PUBLIC cmfe_Field_VariableTypesGet,cmfe_Field_VariableTypesSet - !>Gets the sparsity type for equations. - INTERFACE cmfe_Equations_SparsityTypeGet - MODULE PROCEDURE cmfe_Equations_SparsityTypeGetNumber - MODULE PROCEDURE cmfe_Equations_SparsityTypeGetObj - END INTERFACE cmfe_Equations_SparsityTypeGet +!================================================================================================================================== +! +! FIELD_IO_ROUTINES +! +!================================================================================================================================== - !>Sets/changes the sparsity type for equations. - INTERFACE cmfe_Equations_SparsityTypeSet - MODULE PROCEDURE cmfe_Equations_SparsityTypeSetNumber - MODULE PROCEDURE cmfe_Equations_SparsityTypeSetObj - END INTERFACE cmfe_Equations_SparsityTypeSet + !Module parameters - !>Gets the time dependence type for equations. - INTERFACE cmfe_Equations_TimeDependenceTypeGet - MODULE PROCEDURE cmfe_Equations_TimeDependenceTypeGetNumber - MODULE PROCEDURE cmfe_Equations_TimeDependenceTypeGetObj - END INTERFACE cmfe_Equations_TimeDependenceTypeGet + !Module types - PUBLIC CMFE_EQUATIONS_NO_OUTPUT,CMFE_EQUATIONS_TIMING_OUTPUT,CMFE_EQUATIONS_MATRIX_OUTPUT, & - & CMFE_EQUATIONS_ELEMENT_MATRIX_OUTPUT,CMFE_EQUATIONS_NODAL_MATRIX_OUTPUT + !Module variables - PUBLIC CMFE_EQUATIONS_SPARSE_MATRICES,CMFE_EQUATIONS_FULL_MATRICES + !Interfaces - PUBLIC CMFE_EQUATIONS_JACOBIAN_FINITE_DIFFERENCE_CALCULATED, CMFE_EQUATIONS_JACOBIAN_ANALYTIC_CALCULATED + INTERFACE cmfe_Fields_ElementsExport + MODULE PROCEDURE cmfe_Fields_ElementsExportCCNumber + MODULE PROCEDURE cmfe_Fields_ElementsExportVSCNumber + MODULE PROCEDURE cmfe_Fields_ElementsExportCVSNumber + MODULE PROCEDURE cmfe_Fields_ElementsExportVSVSNumber + MODULE PROCEDURE cmfe_Fields_ElementsExportCCObj + MODULE PROCEDURE cmfe_Fields_ElementsExportVSCObj + MODULE PROCEDURE cmfe_Fields_ElementsExportCVSObj + MODULE PROCEDURE cmfe_Fields_ElementsExportVSVSObj + END INTERFACE cmfe_Fields_ElementsExport - PUBLIC CMFE_EQUATIONS_UNLUMPED_MATRICES,CMFE_EQUATIONS_LUMPED_MATRICES + INTERFACE cmfe_Fields_NodesExport + MODULE PROCEDURE cmfe_Fields_NodesExportCCNumber + MODULE PROCEDURE cmfe_Fields_NodesExportVSCNumber + MODULE PROCEDURE cmfe_Fields_NodesExportCVSNumber + MODULE PROCEDURE cmfe_Fields_NodesExportVSVSNumber + MODULE PROCEDURE cmfe_Fields_NodesExportCCObj + MODULE PROCEDURE cmfe_Fields_NodesExportVSCObj + MODULE PROCEDURE cmfe_Fields_NodesExportCVSObj + MODULE PROCEDURE cmfe_Fields_NodesExportVSVSObj + END INTERFACE cmfe_Fields_NodesExport - PUBLIC CMFE_EQUATIONS_LINEAR,CMFE_EQUATIONS_NONLINEAR,CMFE_EQUATIONS_NONLINEAR_BCS + PUBLIC cmfe_Fields_ElementsExport,cmfe_Fields_NodesExport - PUBLIC CMFE_EQUATIONS_STATIC,CMFE_EQUATIONS_QUASISTATIC,CMFE_EQUATIONS_FIRST_ORDER_DYNAMIC, & - & CMFE_EQUATIONS_SECOND_ORDER_DYNAMIC, & - & CMFE_EQUATIONS_TIME_STEPPING +!================================================================================================================================== +! +! GENERATED_MESH_ROUTINES +! +!================================================================================================================================== + + !Module parameters + + !> \addtogroup OpenCMISS_GeneratedMeshConstants OpenCMISS::Iron::GeneratedMesh::Constants + !> \brief Generated mesh constants. + !>@{ + !> \addtogroup OpenCMISS_GeneratedMeshTypes OpenCMISS::Iron::GeneratedMesh::Types + !> \brief Generated mesh types. + !> \see OpenCMISS::Iron::GeneratedMesh,OpenCMISS + !>@{ + INTEGER(INTG), PARAMETER :: CMFE_GENERATED_MESH_REGULAR_MESH_TYPE = GENERATED_MESH_REGULAR_MESH_TYPE !@} + !>@} + + !> \addtogroup OpenCMISS_GeneratedMeshConstants OpenCMISS::Iron::GeneratedMesh::Constants + !> \brief Generated mesh constants. + !>@{ + !> \addtogroup OpenCMISS_GeneratedMeshSurfaceTypes OpenCMISS::Iron::GeneratedMesh::SurfaceTypes + !> \brief Generated mesh surface types. + !> \see OpenCMISS::Iron::GeneratedMesh,OpenCMISS + !>@{ + INTEGER(INTG), PARAMETER :: CMFE_GENERATED_MESH_CYLINDER_INNER_SURFACE = GENERATED_MESH_CYLINDER_INNER_SURFACE !@} + !>@} + + !Module types + + !Module variables + + !Interfaces + + !>Returns the basis for a generated mesh. + INTERFACE cmfe_GeneratedMesh_BasisGet + MODULE PROCEDURE cmfe_GeneratedMesh_BasisGetNumber + MODULE PROCEDURE cmfe_GeneratedMesh_BasisGetObj + END INTERFACE cmfe_GeneratedMesh_BasisGet + + !>Sets/changes the basis for a generated mesh. + INTERFACE cmfe_GeneratedMesh_BasisSet + MODULE PROCEDURE cmfe_GeneratedMesh_BasisSetNumber0 + MODULE PROCEDURE cmfe_GeneratedMesh_BasisSetNumber1 + MODULE PROCEDURE cmfe_GeneratedMesh_BasisSetObj0 + MODULE PROCEDURE cmfe_GeneratedMesh_BasisSetObj1 + END INTERFACE cmfe_GeneratedMesh_BasisSet + + !>Sets/changes the base vectors for a generated mesh. + INTERFACE cmfe_GeneratedMesh_BaseVectorsSet + MODULE PROCEDURE cmfe_GeneratedMesh_BaseVectorsSetNumber + MODULE PROCEDURE cmfe_GeneratedMesh_BaseVectorsSetObj + END INTERFACE cmfe_GeneratedMesh_BaseVectorsSet + + !>Finishes the creation of a generated mesh. \see OpenCMISS::Iron::cmfe_GeneratedMesh_CreateStart + INTERFACE cmfe_GeneratedMesh_CreateFinish + MODULE PROCEDURE cmfe_GeneratedMesh_CreateFinishNumber + MODULE PROCEDURE cmfe_GeneratedMesh_CreateFinishObj + END INTERFACE cmfe_GeneratedMesh_CreateFinish + + !>Starts the creation of a generated mesh. \see OpenCMISS::Iron::cmfe_GeneratedMesh_CreateFinish + INTERFACE cmfe_GeneratedMesh_CreateStart + MODULE PROCEDURE cmfe_GeneratedMesh_CreateStartNumber + MODULE PROCEDURE cmfe_GeneratedMesh_CreateStartInterfaceObj + MODULE PROCEDURE cmfe_GeneratedMesh_CreateStartRegionObj + END INTERFACE cmfe_GeneratedMesh_CreateStart + + !>Destroys a generated mesh. + INTERFACE cmfe_GeneratedMesh_Destroy + MODULE PROCEDURE cmfe_GeneratedMesh_DestroyNumber + MODULE PROCEDURE cmfe_GeneratedMesh_DestroyObj + END INTERFACE cmfe_GeneratedMesh_Destroy + + !>Returns the extent of a generated mesh. + INTERFACE cmfe_GeneratedMesh_ExtentGet + MODULE PROCEDURE cmfe_GeneratedMesh_ExtentGetNumber + MODULE PROCEDURE cmfe_GeneratedMesh_ExtentGetObj + END INTERFACE cmfe_GeneratedMesh_ExtentGet + + !>Sets/changes the extent of a generated mesh. + INTERFACE cmfe_GeneratedMesh_ExtentSet + MODULE PROCEDURE cmfe_GeneratedMesh_ExtentSetNumber + MODULE PROCEDURE cmfe_GeneratedMesh_ExtentSetObj + END INTERFACE cmfe_GeneratedMesh_ExtentSet + + !>Returns the number of elements in a generated mesh. + INTERFACE cmfe_GeneratedMesh_NumberOfElementsGet + MODULE PROCEDURE cmfe_GeneratedMesh_NumberOfElementsGetNumber + MODULE PROCEDURE cmfe_GeneratedMesh_NumberOfElementsGetObj + END INTERFACE cmfe_GeneratedMesh_NumberOfElementsGet + + !>Sets/changes the number of elements in a generated mesh. + INTERFACE cmfe_GeneratedMesh_NumberOfElementsSet + MODULE PROCEDURE cmfe_GeneratedMesh_NumberOfElementsSetNumber + MODULE PROCEDURE cmfe_GeneratedMesh_NumberOfElementsSetObj + END INTERFACE cmfe_GeneratedMesh_NumberOfElementsSet + + !>Returns the origin of a generated mesh. + INTERFACE cmfe_GeneratedMesh_OriginGet + MODULE PROCEDURE cmfe_GeneratedMesh_OriginGetNumber + MODULE PROCEDURE cmfe_GeneratedMesh_OriginGetObj + END INTERFACE cmfe_GeneratedMesh_OriginGet + + !>Sets/changes the origin of a generated mesh. + INTERFACE cmfe_GeneratedMesh_OriginSet + MODULE PROCEDURE cmfe_GeneratedMesh_OriginSetNumber + MODULE PROCEDURE cmfe_GeneratedMesh_OriginSetObj + END INTERFACE cmfe_GeneratedMesh_OriginSet + + !>Returns the type of a generated mesh. + INTERFACE cmfe_GeneratedMesh_TypeGet + MODULE PROCEDURE cmfe_GeneratedMesh_TypeGetNumber + MODULE PROCEDURE cmfe_GeneratedMesh_TypeGetObj + END INTERFACE cmfe_GeneratedMesh_TypeGet + + !>Sets/changes the type of a generated mesh. + INTERFACE cmfe_GeneratedMesh_TypeSet + MODULE PROCEDURE cmfe_GeneratedMesh_TypeSetNumber + MODULE PROCEDURE cmfe_GeneratedMesh_TypeSetObj + END INTERFACE cmfe_GeneratedMesh_TypeSet + + !>Calculates and sets the geometric field parameters for a generated mesh + INTERFACE cmfe_GeneratedMesh_GeometricParametersCalculate + MODULE PROCEDURE cmfe_GeneratedMesh_GeometricParametersCalculateNumber + MODULE PROCEDURE cmfe_GeneratedMesh_GeometricParametersCalculateObj + END INTERFACE cmfe_GeneratedMesh_GeometricParametersCalculate + + !>Returns a list of nodes belonging to a surface of given type + INTERFACE cmfe_GeneratedMesh_SurfaceGet + MODULE PROCEDURE cmfe_GeneratedMesh_SurfaceGetNumber0 + MODULE PROCEDURE cmfe_GeneratedMesh_SurfaceGetNumber1 + MODULE PROCEDURE cmfe_GeneratedMesh_SurfaceGetObj0 + MODULE PROCEDURE cmfe_GeneratedMesh_SurfaceGetObj1 + END INTERFACE + + + !>Creates an embedding of one mesh in another + INTERFACE cmfe_MeshEmbedding_Create + MODULE PROCEDURE cmfe_MeshEmbedding_CreateNumber + MODULE PROCEDURE cmfe_MeshEmbedding_CreateObj + END INTERFACE + + !>Sets the embedded nodes for one parent element + INTERFACE cmfe_MeshEmbedding_SetChildNodePosition + MODULE PROCEDURE cmfe_MeshEmbedding_SetChildNodePositionObj + END INTERFACE + + + !>Pushes data from the parent field to the child field + INTERFACE cmfe_MeshEmbedding_PushData + MODULE PROCEDURE cmfe_MeshEmbedding_PushDataObj + END INTERFACE + + INTERFACE cmfe_MeshEmbedding_SetGaussPointData + MODULE PROCEDURE cmfe_MeshEmbedding_SetGaussPointDataObj + END INTERFACE + + INTERFACE cmfe_MeshEmbedding_PullGaussPointData + MODULE PROCEDURE cmfe_MeshEmbedding_PullGaussPointDataObj + END INTERFACE + + INTERFACE cmfe_MeshEmbedding_GetGaussPointCoord + MODULE PROCEDURE cmfe_Field_ParameterSetGetGaussPointCoordObj + END INTERFACE - PUBLIC cmfe_Equations_Destroy + PUBLIC cmfe_MeshEmbedding_Create,cmfe_MeshEmbedding_SetChildNodePosition, cmfe_MeshEmbeddingType - PUBLIC cmfe_Equations_LinearityTypeGet + PUBLIC cmfe_MeshEmbedding_Initialise,cmfe_MeshEmbedding_SetGaussPointData - PUBLIC cmfe_Equations_LumpingTypeGet,cmfe_Equations_LumpingTypeSet + PUBLIC cmfe_MeshEmbedding_PushData,cmfe_MeshEmbedding_PullGaussPointData - PUBLIC cmfe_Equations_OutputTypeGet,cmfe_Equations_OutputTypeSet + PUBLIC cmfe_MeshEmbedding_GetGaussPointCoord - PUBLIC cmfe_Equations_SparsityTypeGet,cmfe_Equations_SparsityTypeSet + PUBLIC CMFE_GENERATED_MESH_REGULAR_MESH_TYPE,CMFE_GENERATED_MESH_POLAR_MESH_TYPE,CMFE_GENERATED_MESH_FRACTAL_TREE_MESH_TYPE - PUBLIC cmfe_Equations_TimeDependenceTypeGet + PUBLIC CMFE_GENERATED_MESH_CYLINDER_MESH_TYPE, CMFE_GENERATED_MESH_ELLIPSOID_MESH_TYPE - PUBLIC cmfe_Equations_JacobianMatricesTypesSet + PUBLIC CMFE_GENERATED_MESH_CYLINDER_INNER_SURFACE,CMFE_GENERATED_MESH_CYLINDER_OUTER_SURFACE - PUBLIC cmfe_Equations_NumberOfLinearMatricesGet + PUBLIC CMFE_GENERATED_MESH_CYLINDER_TOP_SURFACE, CMFE_GENERATED_MESH_CYLINDER_BOTTOM_SURFACE - PUBLIC cmfe_Equations_NumberOfJacobianMatricesGet + PUBLIC CMFE_GENERATED_MESH_ELLIPSOID_INNER_SURFACE, CMFE_GENERATED_MESH_ELLIPSOID_OUTER_SURFACE - PUBLIC cmfe_Equations_NumberOfDynamicMatricesGet + PUBLIC CMFE_GENERATED_MESH_ELLIPSOID_TOP_SURFACE - PUBLIC cmfe_Equations_LinearMatrixGet + PUBLIC CMFE_GENERATED_MESH_REGULAR_LEFT_SURFACE, CMFE_GENERATED_MESH_REGULAR_RIGHT_SURFACE, & + & CMFE_GENERATED_MESH_REGULAR_TOP_SURFACE - PUBLIC cmfe_Equations_JacobianMatrixGet + PUBLIC CMFE_GENERATED_MESH_REGULAR_BOTTOM_SURFACE, CMFE_GENERATED_MESH_REGULAR_FRONT_SURFACE, & + & CMFE_GENERATED_MESH_REGULAR_BACK_SURFACE - PUBLIC cmfe_Equations_DynamicMatrixGet + PUBLIC cmfe_GeneratedMesh_BasisGet,cmfe_GeneratedMesh_BasisSet - PUBLIC cmfe_Equations_DynamicMatrixGetByType + PUBLIC cmfe_GeneratedMesh_BaseVectorsSet - PUBLIC cmfe_Equations_DynamicMatrixTypeGet + PUBLIC cmfe_GeneratedMesh_CreateFinish,cmfe_GeneratedMesh_CreateStart - PUBLIC cmfe_Equations_RhsVectorGet + PUBLIC cmfe_GeneratedMesh_Destroy - PUBLIC cmfe_Equations_ResidualVectorGet + PUBLIC cmfe_GeneratedMesh_ExtentGet,cmfe_GeneratedMesh_ExtentSet - PUBLIC cmfe_Equations_ResidualNumberOfVariablesGet + PUBLIC cmfe_GeneratedMesh_NumberOfElementsGet,cmfe_GeneratedMesh_NumberOfElementsSet - PUBLIC cmfe_Equations_ResidualVariablesGet + PUBLIC cmfe_GeneratedMesh_OriginGet,cmfe_GeneratedMesh_OriginSet - PUBLIC cmfe_Equations_SourceVectorGet + PUBLIC cmfe_GeneratedMesh_TypeGet,cmfe_GeneratedMesh_TypeSet -!!================================================================================================================================== -!! -!! EquationsSetConstants -!! -!!================================================================================================================================== + PUBLIC cmfe_GeneratedMesh_GeometricParametersCalculate - !Module parameters + PUBLIC cmfe_GeneratedMesh_SurfaceGet - !> \addtogroup OpenCMISS_EquationsSetConstants OpenCMISS::Iron::EquationsSet::Constants - !> \brief Equations set constants. - !>@{ - !> \addtogroup OpenCMISS_EquationsSetClasses OpenCMISS::Iron::EquationsSet::Classes - !> \brief Equations set classes. - !> \see OpenCMISS::Iron::EquationsSet,OpenCMISS - !>@{ - INTEGER(INTG), PARAMETER :: CMFE_EQUATIONS_SET_NO_CLASS = EQUATIONS_SET_NO_CLASS !@} - !> \addtogroup OpenCMISS_EquationsSetTypes OpenCMISS::Iron::EquationsSet::Types - !> \brief Equations set Types. - !> \see OpenCMISS::Iron::EquationsSet,OpenCMISS - !>@{ - INTEGER(INTG), PARAMETER :: CMFE_EQUATIONS_SET_NO_TYPE = EQUATIONS_SET_NO_TYPE !@} - !> \addtogroup OpenCMISS_EquationsSetSubtypes OpenCMISS::Iron::EquationsSet::Subtypes - !> \brief Equations set subtypes. - !> \see OpenCMISS::Iron::EquationsSet,OpenCMISS - !>@{ - INTEGER(INTG), PARAMETER :: CMFE_EQUATIONS_SET_NO_SUBTYPE = EQUATIONS_SET_NO_SUBTYPE !@} - !> \addtogroup OpenCMISS_EquationsSetFittingSmoothingTypes OpenCMISS::Iron::EquationsSet::Fitting::SmoothingTypes - !> \brief The smoothing types for fitting equations sets. - !> \see OpenCMISS::Iron::EquationsSet,OpenCMISS - !>@{ - INTEGER(INTG), PARAMETER :: CMFE_EQUATIONS_SET_FITTING_NO_SMOOTHING = & - & EQUATIONS_SET_FITTING_NO_SMOOTHING !@} - - !>@} - !> \addtogroup OpenCMISS_EquationsSetSolutionMethods OpenCMISS::Iron::EquationsSet::SolutionMethods - !> \brief The solution method parameters - !> \see OpenCMISS::Iron::EquationsSet,OpenCMISS - !>@{ - INTEGER(INTG), PARAMETER :: CMFE_EQUATIONS_SET_FEM_SOLUTION_METHOD = EQUATIONS_SET_FEM_SOLUTION_METHOD !@} - - !> \addtogroup OpenCMISS_EquationsSetDerivedTensorTypes OpenCMISS::Iron::EquationsSet::DerivedTensorTypes - !> \brief EquationsSet derived tensor type parameters - !> \see OpenCMISS::Iron::EquationsSet,OpenCMISS - !>@{ - INTEGER(INTG), PARAMETER :: CMFE_EQUATIONS_SET_DERIVED_DEFORMATION_GRADIENT = EQUATIONS_SET_DEFORMATION_GRADIENT_TENSOR !@} - - !> \addtogroup OpenCMISS_EquationsSetDynamicMatrixTypes OpenCMISS::Iron::EquationsSet::DynamicMatrixTypes - !> \brief Type of matrix in a dynamic equations set - !>@{ - INTEGER(INTG), PARAMETER :: CMFE_EQUATIONS_MATRIX_STIFFNESS=EQUATIONS_MATRIX_STIFFNESS !@} - !> \addtogroup OpenCMISS_EquationsSetOutputTypes OpenCMISS::Iron::EquationsSet::OutputTypes - !> \brief Equations set output types - !> \see OpenCMISS::Iron::EquationsSet,OpenCMISS - !>@{ - INTEGER(INTG), PARAMETER :: CMFE_EQUATIONS_SET_NO_OUTPUT = EQUATIONS_SET_NO_OUTPUT!@} - !> \addtogroup OpenCMISS_EquationsSetAnalyticFunctionTypes OpenCMISS::Iron::EquationsSet::AnalyticFunctionTypes - !> \brief The analytic function types. - !> \see OpenCMISS::Iron::EquationsSet,OpenCMISS - !>@{ - !> \addtogroup OpenCMISS_EquationsSetLaplaceAnalyticFunctionTypes OpenCMISS::Iron::EquationsSet::AnalyticFunctionTypes::Laplace - !> \brief The analytic function types for a Laplace equation - !> \see OpenCMISS::Iron::EquationsSet::AnalyticFunctionTypes,OpenCMISS - !>@{ - INTEGER(INTG), PARAMETER :: CMFE_EQUATIONS_SET_LAPLACE_EQUATION_TWO_DIM_1 = EQUATIONS_SET_LAPLACE_EQUATION_TWO_DIM_1 !@} - !> \addtogroup OpenCMISS_EquationsSetHelmholtzAnalyticFunctionTypes OpenCMISS::Iron::EquationsSet::AnalyticFunctionTypes::Helmholtz - !> \brief The analytic function types for a Helmholtz equation - !> \see OpenCMISS::Iron::EquationsSet::AnalyticFunctionTypes,OpenCMISS - !>@{ - INTEGER(INTG), PARAMETER :: CMFE_EQUATIONS_SET_HELMHOLTZ_EQUATION_TWO_DIM_1 = EQUATIONS_SET_HELMHOLTZ_EQUATION_TWO_DIM_1 !@} - !> \addtogroup OpenCMISS_PoiseuilleAnalyticFunctionTypes OpenCMISS::Iron::EquationsSet::AnalyticFunctionTypes::Poiseuille - !> \brief The analytic function types for a Poiseuille equation. - !> \see OpenCMISS::Iron::EquationsSet::AnalyticFunctionTypes,OpenCMISS - !>@{ - INTEGER(INTG), PARAMETER :: CMFE_EQUATIONS_SET_POISEUILLE_EQUATION_TWO_DIM_1 = EQUATIONS_SET_POISEUILLE_EQUATION_TWO_DIM_1 !@} - !> \addtogroup OpenCMISS_PoissonAnalyticFunctionTypes OpenCMISS::Iron::EquationsSet::AnalyticFunctionTypes::Poisson - !> \brief The analytic function types for a Poisson equation. - !> \see OpenCMISS::Iron::EquationsSet::AnalyticFunctionTypes,OpenCMISS - !>@{ - INTEGER(INTG), PARAMETER :: CMFE_EQUATIONS_SET_POISSON_EQUATION_TWO_DIM_1 = EQUATIONS_SET_POISSON_EQUATION_TWO_DIM_1 !@} - !> \addtogroup OpenCMISS_DiffusionAnalyticFunctionTypes OpenCMISS::Iron::EquationsSet::AnalyticFunctionTypes::Diffusion - !> \brief The analytic function types for a diffusion equation. - !> \see OpenCMISS::Iron::EquationsSet::AnalyticFunctionTypes,OpenCMISS - !>@{ - INTEGER(INTG), PARAMETER :: CMFE_EQUATIONS_SET_DIFFUSION_EQUATION_ONE_DIM_1 = EQUATIONS_SET_DIFFUSION_EQUATION_ONE_DIM_1 - INTEGER(INTG), PARAMETER :: CMFE_EQUATIONS_SET_DIFFUSION_EQUATION_TWO_DIM_1 = EQUATIONS_SET_DIFFUSION_EQUATION_TWO_DIM_1 !@} - !> \addtogroup OpenCMISS_AdvectionDiffusionAnalyticFunctionTypes OpenCMISS::Iron::EquationsSet::AnalyticFunctionTypes::AdvectionDiffusion - !> \brief The analytic function types for an advection-diffusion equation. - !> \see OpenCMISS::Iron::EquationsSet::AnalyticFunctionTypes,OpenCMISS - !>@{ - INTEGER(INTG), PARAMETER :: CMFE_EQUATIONS_SET_ADVECTION_DIFFUSION_EQUATION_TWO_DIM_1 = & - & EQUATIONS_SET_ADVECTION_DIFFUSION_EQUATION_TWO_DIM_1 ! \addtogroup OpenCMISS_StokesAnalyticFunctionTypes OpenCMISS::Iron::EquationsSet::AnalyticFunctionTypes::Stokes - !> \brief The analytic function types for a Stokes equation. - !> \see OpenCMISS::Iron::EquationsSet::AnalyticFunctionTypes,OpenCMISS - !>@{ - INTEGER(INTG), PARAMETER :: CMFE_EQUATIONS_SET_STOKES_EQUATION_TWO_DIM_1 = EQUATIONS_SET_STOKES_EQUATION_TWO_DIM_1 !@} - !> \addtogroup OpenCMISS_NavierStokesAnalyticFunctionTypes OpenCMISS::Iron::EquationsSet::AnalyticFunctionTypes::NavierStokes - !> \brief The analytic function types for a Navier-Stokes equation. - !> \see OpenCMISS::Iron::EquationsSet::AnalyticFunctionTypes,OpenCMISS - !>@{ - INTEGER(INTG), PARAMETER :: CMFE_EQUATIONS_SET_NAVIER_STOKES_EQUATION_TWO_DIM_POISEUILLE= & - & EQUATIONS_SET_NAVIER_STOKES_EQUATION_TWO_DIM_POISEUILLE !< fully developed 2D channel flow (parabolic) \see OpenCMISS_EquationsSetNavierStokesAnalyticFunctionTypes,OpenCMISS - INTEGER(INTG), PARAMETER :: CMFE_EQUATIONS_SET_NAVIER_STOKES_EQUATION_TWO_DIM_TAYLOR_GREEN= & - & EQUATIONS_SET_NAVIER_STOKES_EQUATION_TWO_DIM_TAYLOR_GREEN !< 2D dynamic nonlinear Taylor-Green vortex decay \see OpenCMISS_EquationsSetNavierStokesAnalyticFunctionTypes,OpenCMISS - INTEGER(INTG), PARAMETER :: CMFE_EQUATIONS_SET_NAVIER_STOKES_EQUATION_FLOWRATE_AORTA= & - & EQUATIONS_SET_NAVIER_STOKES_EQUATION_FLOWRATE_AORTA !< A fourier decomposed flow waveform for boundary conditions - INTEGER(INTG), PARAMETER :: CMFE_EQUATIONS_SET_NAVIER_STOKES_EQUATION_SINUSOID= & - & EQUATIONS_SET_NAVIER_STOKES_EQUATION_SINUSOID !< A sinusoidal flow waveform - INTEGER(INTG), PARAMETER :: CMFE_EQUATIONS_SET_NAVIER_STOKES_EQUATION_SPLINT_FROM_FILE= & - & EQUATIONS_SET_NAVIER_STOKES_EQUATION_SPLINT_FROM_FILE !< Spline integration of dependent values specified in a file - INTEGER(INTG), PARAMETER :: CMFE_EQUATIONS_SET_NAVIER_STOKES_EQUATION_TWO_DIM_1 = EQUATIONS_SET_NAVIER_STOKES_EQUATION_TWO_DIM_1 !@} - !> \addtogroup OpenCMISS_DarcyAnalyticFunctionTypes OpenCMISS::Iron::EquationsSet::AnalyticFunctionTypes::Darcy - !> \brief The analytic function types for a Darcy equation. - !> \see OpenCMISS::Iron::EquationsSet::AnalyticFunctionTypes,OpenCMISS - !>@{ - INTEGER(INTG), PARAMETER :: CMFE_EQUATIONS_SET_DARCY_EQUATION_TWO_DIM_1 = EQUATIONS_SET_DARCY_EQUATION_TWO_DIM_1 !@} - !> \addtogroup OpenCMISS_BurgersAnalyticFunctionTypes OpenCMISS::Iron::EquationsSet::AnalyticFunctionTypes::Burgers - !> \brief The analytic function types for a Burgers equation. - !> \see OpenCMISS::Iron::EquationsSet::AnalyticFunctionTypes,OpenCMISS - !>@{ - INTEGER(INTG), PARAMETER :: CMFE_EQUATIONS_SET_BURGERS_EQUATION_ONE_DIM_1 = EQUATIONS_SET_BURGERS_EQUATION_ONE_DIM_1 - INTEGER(INTG), PARAMETER :: CMFE_EQUATIONS_SET_GENERALISED_BURGERS_EQUATION_ONE_DIM_1 = & - & EQUATIONS_SET_GENERALISED_BURGERS_EQUATION_ONE_DIM_1 - INTEGER(INTG), PARAMETER :: CMFE_EQUATIONS_SET_GENERALISED_BURGERS_EQUATION_ONE_DIM_2 = & - & EQUATIONS_SET_GENERALISED_BURGERS_EQUATION_ONE_DIM_2 - INTEGER(INTG), PARAMETER :: CMFE_EQUATIONS_SET_STATIC_BURGERS_EQUATION_ONE_DIM_1 = & - & EQUATIONS_SET_STATIC_BURGERS_EQUATION_ONE_DIM_1 - !>@} - - !> \addtogroup OpenCMISS_EquationsSetLinearElasticityAnalyticFunctionTypes OpenCMISS::Iron::EquationsSet::AnalyticFunctionTypes::LinearElasticity - !> \brief The analytic function types for a LinearElasticity equation - !> \see OpenCMISS::Iron::EquationsSet::AnalyticFunctionTypes,OpenCMISS - !>@{ - INTEGER(INTG), PARAMETER :: CMFE_EQUATIONS_SET_LINEAR_ELASTICITY_ONE_DIM_1 = EQUATIONS_SET_LINEAR_ELASTICITY_ONE_DIM_1 !@} - !> \addtogroup OpenCMISS_EquationsSetFiniteElasticityAnalyticFunctionTypes OpenCMISS::Iron::EquationsSet::AnalyticFunctionTypes::FiniteElasticity - !> \brief The analytic function types for a FiniteElasticity equation - !> \see OpenCMISS::Iron::EquationsSet::AnalyticFunctionTypes,OpenCMISS - !>@{ - INTEGER(INTG), PARAMETER :: CMFE_EQUATIONS_SET_FINITE_ELASTICITY_CYLINDER = EQUATIONS_SET_FINITE_ELASTICITY_CYLINDER !@} - !>@} - !>@} - - !> \addtogroup OpenCMISS_AnalyticParamIndices OpenCMISS::Iron::FiniteElasticity::AnalyticParamIndices - !> \brief Indices for EQUATIONS_SET_ANALYTIC_TYPE%ANALYTIC_USER_PARAMS - !> \see OpenCMISS::Iron::FiniteElasticity::AnalyticParamIndices,OpenCMISS - !>@{ - INTEGER(INTG), PARAMETER :: CMFE_FINITE_ELASTICITY_ANALYTIC_CYLINDER_PARAM_PIN_IDX = & - & FINITE_ELASTICITY_ANALYTIC_CYLINDER_PARAM_PIN_IDX !@} - - !Module types - - !Module variables - - !Interfaces - - PUBLIC CMFE_EQUATIONS_SET_NO_CLASS,CMFE_EQUATIONS_SET_ELASTICITY_CLASS,CMFE_EQUATIONS_SET_FLUID_MECHANICS_CLASS, & - & CMFE_EQUATIONS_SET_ELECTROMAGNETICS_CLASS,CMFE_EQUATIONS_SET_CLASSICAL_FIELD_CLASS,CMFE_EQUATIONS_SET_BIOELECTRICS_CLASS, & - & CMFE_EQUATIONS_SET_MODAL_CLASS,CMFE_EQUATIONS_SET_FITTING_CLASS,CMFE_EQUATIONS_SET_OPTIMISATION_CLASS, & - & CMFE_EQUATIONS_SET_MULTI_PHYSICS_CLASS - - PUBLIC CMFE_EQUATIONS_SET_NO_TYPE,CMFE_EQUATIONS_SET_LINEAR_ELASTICITY_TYPE,CMFE_EQUATIONS_SET_FINITE_ELASTICITY_TYPE, & - & CMFE_EQUATIONS_SET_STOKES_EQUATION_TYPE,CMFE_EQUATIONS_SET_NAVIER_STOKES_EQUATION_TYPE, & - & CMFE_EQUATIONS_SET_DARCY_EQUATION_TYPE, & - & CMFE_EQUATIONS_SET_DARCY_PRESSURE_EQUATION_TYPE,CMFE_EQUATIONS_SET_BURGERS_EQUATION_TYPE, & - & CMFE_EQUATIONS_SET_STATIC_POISEUILLE_SUBTYPE, & - & CMFE_EQUATIONS_SET_DYNAMIC_POISEUILLE_SUBTYPE, & - & CMFE_EQUATIONS_SET_CHARACTERISTIC_EQUATION_TYPE, & - & CMFE_EQUATIONS_SET_STREE_EQUATION_TYPE, & - & CMFE_EQUATIONS_SET_ELECTROSTATIC_TYPE,CMFE_EQUATIONS_SET_MAGNETOSTATIC_TYPE,CMFE_EQUATIONS_SET_MAXWELLS_EQUATIONS_TYPE, & - & CMFE_EQUATIONS_SET_LAPLACE_EQUATION_TYPE,CMFE_EQUATIONS_SET_POISEUILLE_EQUATION_TYPE, & - & CMFE_EQUATIONS_SET_POISSON_EQUATION_TYPE, & - & CMFE_EQUATIONS_SET_HELMHOLTZ_EQUATION_TYPE,CMFE_EQUATIONS_SET_WAVE_EQUATION_TYPE, & - & CMFE_EQUATIONS_SET_DIFFUSION_EQUATION_TYPE,CMFE_EQUATIONS_SET_ADVECTION_EQUATION_TYPE, & - & CMFE_EQUATIONS_SET_ADVECTION_DIFFUSION_EQUATION_TYPE,CMFE_EQUATIONS_SET_REACTION_DIFFUSION_EQUATION_TYPE, & - & CMFE_EQUATIONS_SET_BIHARMONIC_EQUATION_TYPE,CMFE_EQUATIONS_SET_MONODOMAIN_EQUATION_TYPE, & - & CMFE_EQUATIONS_SET_BIDOMAIN_EQUATION_TYPE, & - & CMFE_EQUATIONS_SET_LINEAR_ELASTIC_MODAL_TYPE, & - & CMFE_EQUATIONS_SET_DATA_FITTING_EQUATION_TYPE,CMFE_EQUATIONS_SET_GAUSS_FITTING_EQUATION_TYPE, & - & CMFE_EQUATIONS_SET_MONODOMAIN_STRANG_SPLITTING_EQUATION_TYPE - - PUBLIC CMFE_EQUATIONS_SET_FINITE_ELASTICITY_DARCY_TYPE, & - & CMFE_EQUATIONS_SET_FINITE_ELASTICITY_STOKES_TYPE, CMFE_EQUATIONS_SET_FINITE_ELASTICITY_NAVIER_STOKES_TYPE, & - & CMFE_EQUATIONS_SET_DIFFUSION_DIFFUSION_TYPE, CMFE_EQUATIONS_SET_DIFFUSION_ADVECTION_DIFFUSION_TYPE - - PUBLIC CMFE_EQUATIONS_SET_NO_SUBTYPE,CMFE_EQUATIONS_SET_THREE_DIMENSIONAL_SUBTYPE, & - & CMFE_EQUATIONS_SET_TWO_DIMENSIONAL_PLANE_STRESS_SUBTYPE, & - & CMFE_EQUATIONS_SET_TWO_DIMENSIONAL_PLANE_STRAIN_SUBTYPE,CMFE_EQUATIONS_SET_ONE_DIMENSIONAL_SUBTYPE, & - & CMFE_EQUATIONS_SET_PLATE_SUBTYPE, & - & CMFE_EQUATIONS_SET_SHELL_SUBTYPE, & - & CMFE_EQUATIONS_SET_INCOMPRESSIBLE_MOONEY_RIVLIN_SUBTYPE,CMFE_EQUATIONS_SET_NEARLY_INCOMPRESSIBLE_MOONEY_RIVLIN_SUBTYPE, & - & CMFE_EQUATIONS_SET_MOONEY_RIVLIN_SUBTYPE, & - & CMFE_EQUATIONS_SET_REFERENCE_STATE_MOONEY_RIVLIN_SUBTYPE, CMFE_EQUATIONS_SET_ISOTROPIC_EXPONENTIAL_SUBTYPE, & - & CMFE_EQUATIONS_SET_ACTIVECONTRACTION_SUBTYPE,CMFE_EQUATIONS_SET_MOONEY_RIVLIN_ACTIVECONTRACTION_SUBTYPE, & - & CMFE_EQUATIONS_SET_COMPRESSIBLE_ACTIVECONTRACTION_SUBTYPE,CMFE_EQUATIONS_SET_TRANSVERSE_ISOTROPIC_ACTIVE_SUBTYPE, & - & CMFE_EQUATIONS_SET_TRANS_ISOTROPIC_ACTIVE_TRANSITION_SUBTYPE, & - & CMFE_EQUATIONS_SET_TRANSVERSE_ISOTROPIC_POLYNOMIAL_SUBTYPE,CMFE_EQUATIONS_SET_STVENANT_KIRCHOFF_ACTIVECONTRACTION_SUBTYPE, & - & CMFE_EQUATIONS_SET_ANISOTROPIC_POLYNOMIAL_SUBTYPE,CMFE_EQUATIONS_SET_ANISOTROPIC_POLYNOMIAL_ACTIVE_SUBTYPE, & - & CMFE_EQUATIONS_SET_TRANSVERSE_ISOTROPIC_EXPONENTIAL_SUBTYPE,CMFE_EQUATIONS_SET_ORTHOTROPIC_MATERIAL_COSTA_SUBTYPE, & - & CMFE_EQUATIONS_SET_COMPRESSIBLE_FINITE_ELASTICITY_SUBTYPE,CMFE_EQUATIONS_SET_INCOMPRESS_FINITE_ELASTICITY_DARCY_SUBTYPE, & - & CMFE_EQUATIONS_SET_ELASTICITY_DARCY_INRIA_MODEL_SUBTYPE,CMFE_EQUATIONS_SET_ELASTICITY_MULTI_COMP_DARCY_INRIA_SUBTYPE, & - & CMFE_EQUATIONS_SET_INCOMPRESS_ELASTICITY_DRIVEN_DARCY_SUBTYPE, & - & CMFE_EQUATIONS_SET_INCOMPRESSIBLE_ELASTICITY_DRIVEN_MR_SUBTYPE, & - & CMFE_EQUATIONS_SET_INCOMPRESS_ELAST_MULTI_COMP_DARCY_SUBTYPE,CMFE_EQUATIONS_SET_TRANSVERSE_ISOTROPIC_GUCCIONE_SUBTYPE, & - & CMFE_EQUATIONS_SET_GUCCIONE_ACTIVECONTRACTION_SUBTYPE, & - & CMFE_EQUATIONS_SET_ACTIVE_STRAIN_SUBTYPE, & - & CMFE_EQUATIONS_SET_MULTISCALE_ACTIVE_STRAIN_SUBTYPE, & - & CMFE_EQUATIONS_SET_REFERENCE_STATE_TRANSVERSE_GUCCIONE_SUBTYPE, & - & CMFE_EQUATIONS_SET_MEMBRANE_SUBTYPE, CMFE_EQUATIONS_SET_ORTHOTROPIC_HOLZAPFEL_OGDEN_SUBTYPE, & - & CMFE_EQUATIONS_SET_HOLZAPFEL_OGDEN_ACTIVECONTRACTION_SUBTYPE, & - & CMFE_EQUATIONS_SET_ELASTICITY_FLUID_PRES_STATIC_INRIA_SUBTYPE, & - & CMFE_EQUATIONS_SET_ELASTICITY_FLUID_PRES_HOLMES_MOW_SUBTYPE, & - & CMFE_EQUATIONS_SET_ELASTI_FLUID_PRES_HOLMES_MOW_ACTIVE_SUBTYPE, & - & CMFE_EQUATIONS_SET_TRANSVERSE_ISOTROPIC_HUMPHREY_YIN_SUBTYPE, & - & CMFE_EQUATIONS_SET_STATIC_STOKES_SUBTYPE, CMFE_EQUATIONS_SET_LAPLACE_STOKES_SUBTYPE, & - & CMFE_EQUATIONS_SET_TRANSIENT_STOKES_SUBTYPE,CMFE_EQUATIONS_SET_ALE_STOKES_SUBTYPE, & - & CMFE_EQUATIONS_SET_ALE_NAVIER_STOKES_SUBTYPE, CMFE_EQUATIONS_SET_ALE_RBS_NAVIER_STOKES_SUBTYPE, & - & CMFE_EQUATIONS_SET_OPTIMISED_STOKES_SUBTYPE,CMFE_EQUATIONS_SET_STATIC_NAVIER_STOKES_SUBTYPE, & - & CMFE_EQUATIONS_SET_LAPLACE_NAVIER_STOKES_SUBTYPE,CMFE_EQUATIONS_SET_TRANSIENT_NAVIER_STOKES_SUBTYPE, & - & CMFE_EQUATIONS_SET_TRANSIENT1D_NAVIER_STOKES_SUBTYPE, CMFE_EQUATIONS_SET_TRANSIENT_RBS_NAVIER_STOKES_SUBTYPE, & - & CMFE_EQUATIONS_SET_STATIC_RBS_NAVIER_STOKES_SUBTYPE, & - & CMFE_EQUATIONS_SET_CHARACTERISTIC_SUBTYPE, & - & CMFE_EQUATIONS_SET_TRANSIENT1D_ADV_NAVIER_STOKES_SUBTYPE, CMFE_EQUATIONS_SET_COUPLED1D0D_ADV_NAVIER_STOKES_SUBTYPE, & - & CMFE_EQUATIONS_SET_STREE1D0D_SUBTYPE, CMFE_EQUATIONS_SET_STREE1D0D_ADV_SUBTYPE, & - & CMFE_EQUATIONS_SET_MULTISCALE3D_NAVIER_STOKES_SUBTYPE, & - & CMFE_EQUATIONS_SET_CONSTITUTIVE_MU_NAVIER_STOKES_SUBTYPE, & - & CMFE_EQUATIONS_SET_COUPLED1D0D_NAVIER_STOKES_SUBTYPE, & - & CMFE_EQUATIONS_SET_OPTIMISED_NAVIER_STOKES_SUBTYPE,CMFE_EQUATIONS_SET_STANDARD_DARCY_SUBTYPE, & - & CMFE_EQUATIONS_SET_QUASISTATIC_DARCY_SUBTYPE,CMFE_EQUATIONS_SET_ALE_DARCY_SUBTYPE, & - & CMFE_EQUATIONS_SET_TRANSIENT_DARCY_SUBTYPE, & - & CMFE_EQUATIONS_SET_TRANSIENT_ALE_DARCY_SUBTYPE,CMFE_EQUATIONS_SET_MULTI_COMPARTMENT_DARCY_SUBTYPE, & - & CMFE_EQUATIONS_SET_STANDARD_LAPLACE_SUBTYPE,CMFE_EQUATIONS_SET_MOVING_MESH_LAPLACE_SUBTYPE, & - & CMFE_EQUATIONS_SET_GENERALISED_LAPLACE_SUBTYPE,CMFE_EQUATIONS_SET_CONSTANT_SOURCE_POISSON_SUBTYPE, & - & CMFE_EQUATIONS_SET_EXTRACELLULAR_BIDOMAIN_POISSON_SUBTYPE, & - & CMFE_EQUATIONS_SET_LINEAR_PRESSURE_POISSON_SUBTYPE, CMFE_EQUATIONS_SET_NONLINEAR_PRESSURE_POISSON_SUBTYPE, & - & CMFE_EQUATIONS_SET_ALE_PRESSURE_POISSON_SUBTYPE, CMFE_EQUATIONS_SET_FITTED_PRESSURE_POISSON_SUBTYPE,& - & CMFE_EQUATIONS_SET_LINEAR_SOURCE_POISSON_SUBTYPE,CMFE_EQUATIONS_SET_QUADRATIC_SOURCE_POISSON_SUBTYPE, & - & CMFE_EQUATIONS_SET_EXPONENTIAL_SOURCE_POISSON_SUBTYPE,CMFE_EQUATIONS_SET_STANDARD_HELMHOLTZ_SUBTYPE, & - & CMFE_EQUATIONS_SET_GENERALISED_HELMHOLTZ_SUBTYPE, & - & CMFE_EQUATIONS_SET_NO_SOURCE_DIFFUSION_SUBTYPE,CMFE_EQUATIONS_SET_CONSTANT_SOURCE_DIFFUSION_SUBTYPE, & - & CMFE_EQUATIONS_SET_LINEAR_SOURCE_DIFFUSION_SUBTYPE,CMFE_EQUATIONS_SET_QUADRATIC_SOURCE_DIFFUSION_SUBTYPE, & - & CMFE_EQUATIONS_SET_EXPONENTIAL_SOURCE_DIFFUSION_SUBTYPE,CMFE_EQUATIONS_SET_MULTI_COMP_TRANSPORT_DIFFUSION_SUBTYPE, & - & CMFE_EQUATIONS_SET_NO_SOURCE_ALE_DIFFUSION_SUBTYPE,CMFE_EQUATIONS_SET_CONSTANT_SOURCE_ALE_DIFFUSION_SUBTYPE, & - & CMFE_EQUATIONS_SET_LINEAR_SOURCE_ALE_DIFFUSION_SUBTYPE,CMFE_EQUATIONS_SET_QUADRATIC_SOURCE_ALE_DIFFUSION_SUBTYPE, & - & CMFE_EQUATIONS_SET_EXPONENTIAL_SOURCE_ALE_DIFFUSION_SUBTYPE, & - & CMFE_EQUATIONS_SET_ADVECTION_SUBTYPE, & - & CMFE_EQUATIONS_SET_NO_SOURCE_ADVECTION_DIFFUSION_SUBTYPE, & - & CMFE_EQUATIONS_SET_CONSTANT_SOURCE_ADVECTION_DIFFUSION_SUBTYPE, & - & CMFE_EQUATIONS_SET_LINEAR_SOURCE_ADVECTION_DIFFUSION_SUBTYPE, & - & CMFE_EQUATIONS_SET_QUADRATIC_SOURCE_ADVEC_DIFF_SUBTYPE,CMFE_EQUATIONS_SET_EXPONENTIAL_SOURCE_ADVEC_DIFF_SUBTYPE, & - & CMFE_EQUATIONS_SET_NO_SOURCE_ALE_ADVECTION_DIFFUSION_SUBTYPE, & - & CMFE_EQUATIONS_SET_CONSTANT_SOURCE_ALE_ADVEC_DIFF_SUBTYPE,CMFE_EQUATIONS_SET_LINEAR_SOURCE_ALE_ADVEC_DIFF_SUBTYPE, & - & CMFE_EQUATIONS_SET_QUADRATIC_SOURCE_ALE_ADVEC_DIFF_SUBTYPE,CMFE_EQUATIONS_SET_EXP_SOURCE_ALE_ADVECTION_DIFFUSION_SUBTYPE, & - & CMFE_EQUATIONS_SET_NO_SOURCE_STATIC_ADVEC_DIFF_SUBTYPE, CMFE_EQUATIONS_SET_CONSTANT_SOURCE_STATIC_ADVEC_DIFF_SUBTYPE, & - & CMFE_EQUATIONS_SET_LINEAR_SOURCE_STATIC_ADVEC_DIFF_SUBTYPE, & - & CMFE_EQUATIONS_SET_NO_SOURCE_ADVECTION_DIFF_SUPG_SUBTYPE, CMFE_EQUATIONS_SET_CONSTANT_SOURCE_ADVECTION_DIFF_SUPG_SUBTYPE, & - & CMFE_EQUATIONS_SET_LINEAR_SOURCE_ADVECTION_DIFF_SUPG_SUBTYPE, CMFE_EQUATIONS_SET_QUAD_SOURCE_ADVECTION_DIFF_SUPG_SUBTYPE, & - & CMFE_EQUATIONS_SET_EXP_SOURCE_ADVECTION_DIFF_SUPG_SUBTYPE, & - & CMFE_EQUATIONS_SET_NO_SOURCE_ALE_ADVECTION_DIFF_SUPG_SUBTYPE, & - & CMFE_EQUATIONS_SET_CONSTANT_SOURCE_ALE_ADVEC_DIFF_SUPG_SUBTYPE, & - & CMFE_EQUATIONS_SET_LINEAR_SOURCE_ALE_ADVEC_DIFF_SUPG_SUBTYPE, & - & CMFE_EQUATIONS_SET_QUAD_SOURCE_ALE_ADVECTION_DIFF_SUPG_SUBTYPE, & - & CMFE_EQUATIONS_SET_EXP_SOURCE_ALE_ADVECTION_DIFF_SUPG_SUBTYPE, & - & CMFE_EQUATIONS_SET_NO_SOURCE_STATIC_ADVEC_DIFF_SUPG_SUBTYPE, & - & CMFE_EQUATIONS_SET_CONST_SOURCE_STATIC_ADVEC_DIFF_SUPG_SUBTYPE, & - & CMFE_EQUATIONS_SET_LIN_SOURCE_STATIC_ADVEC_DIFF_SUPG_SUBTYPE, & - & CMFE_EQUATIONS_SET_MULTI_COMP_TRANSPORT_ADVEC_DIFF_SUBTYPE,CMFE_EQUATIONS_SET_MULT_COMP_TRANSPORT_ADVEC_DIFF_SUPG_SUBTYPE, & - & CMFE_EQUATIONS_SET_PGM_STOKES_SUBTYPE, & - & CMFE_EQUATIONS_SET_FIRST_BIDOMAIN_SUBTYPE,CMFE_EQUATIONS_SET_SECOND_BIDOMAIN_SUBTYPE, & - & CMFE_EQUATIONS_SET_MONODOMAIN_BUENOOROVIO_SUBTYPE,& - & CMFE_EQUATIONS_SET_MONODOMAIN_TENTUSSCHER06_SUBTYPE ,& - & CMFE_EQUATIONS_SET_DATA_POINT_FITTING_SUBTYPE,CMFE_EQUATIONS_SET_GENERALISED_DATA_FITTING_SUBTYPE, & - & CMFE_EQUATIONS_SET_VECTOR_DATA_FITTING_SUBTYPE,CMFE_EQUATIONS_SET_DIVFREE_VECTOR_DATA_FITTING_SUBTYPE, & - & CMFE_EQUATIONS_SET_VECTOR_DATA_PRE_FITTING_SUBTYPE,CMFE_EQUATIONS_SET_DIVFREE_VECTOR_DATA_PRE_FITTING_SUBTYPE, & - & CMFE_EQUATIONS_SET_MAT_PROPERTIES_DATA_FITTING_SUBTYPE,CMFE_EQUATIONS_SET_MAT_PROP_INRIA_MODEL_DATA_FITTING_SUBTYPE, & - & CMFE_EQUATIONS_SET_DATA_POINT_VECTOR_STATIC_FITTING_SUBTYPE, & - & CMFE_EQUATIONS_SET_DATA_PT_VECTOR_QUASISTATIC_FITTING_SUBTYPE, & - & CMFE_EQUATIONS_SET_GAUSS_POINT_FITTING_SUBTYPE, & - & CMFE_EQUATIONS_SET_PGM_NAVIER_STOKES_SUBTYPE, & - & CMFE_EQUATIONS_SET_CONSTITUTIVE_LAW_IN_CELLML_EVALUATE_SUBTYPE, & - & CMFE_EQUATIONS_SET_COUPLED_SOURCE_DIFFUSION_DIFFUSION_SUBTYPE, & - & CMFE_EQUATIONS_SET_COUPLED_SOURCE_DIFFUSION_ADVEC_DIFF_SUBTYPE, & - & CMFE_EQUATIONS_SET_BURGERS_SUBTYPE,CMFE_EQUATIONS_SET_GENERALISED_BURGERS_SUBTYPE, & - & CMFE_EQUATIONS_SET_STATIC_BURGERS_SUBTYPE, & - & CMFE_EQUATIONS_SET_INVISCID_BURGERS_SUBTYPE,CMFE_EQUATIONS_SET_STANDARD_MONODOMAIN_ELASTICITY_SUBTYPE, & - & CMFE_EQUATIONS_SET_1D3D_MONODOMAIN_ELASTICITY_SUBTYPE,CMFE_EQUATIONS_SET_MONODOMAIN_ELASTICITY_W_TITIN_SUBTYPE, & - & CMFE_EQUATIONS_SET_1D3D_MONODOMAIN_ACTIVE_STRAIN_SUBTYPE, & - & CMFE_EQUATIONS_SET_CONSTIT_AND_GROWTH_LAW_IN_CELLML_SUBTYPE, & - & CMFE_EQUATIONS_SET_GROWTH_LAW_IN_CELLML_SUBTYPE, & - & CMFE_EQUATIONS_SET_MR_AND_GROWTH_LAW_IN_CELLML_SUBTYPE, & - & CMFE_EQUATIONS_SET_MONODOMAIN_ELASTICITY_VELOCITY_SUBTYPE, & - & CMFE_EQUATIONS_SET_FINITE_ELASTICITY_NAVIER_STOKES_ALE_SUBTYPE, & - & CMFE_EQUATIONS_SET_RATE_BASED_SMOOTH_MODEL_SUBTYPE,CMFE_EQUATIONS_SET_COMPRESSIBLE_RATE_BASED_SMOOTH_MODEL_SUBTYPE, & - & CMFE_EQUATIONS_SET_RATE_BASED_GROWTH_MODEL_SUBTYPE,CMFE_EQUATIONS_SET_COMPRESSIBLE_RATE_BASED_GROWTH_MODEL_SUBTYPE - - PUBLIC CMFE_EQUATIONS_SET_FITTING_NO_SMOOTHING,CMFE_EQUATIONS_SET_FITTING_SOBOLEV_VALUE_SMOOTHING, & - & CMFE_EQUATIONS_SET_FITTING_SOBOLEV_DIFFERENCE_SMOOTHING,CMFE_EQUATIONS_SET_FITTING_STRAIN_ENERGY_SMOOTHING - - PUBLIC CMFE_EQUATIONS_SET_CELLML_REAC_SPLIT_REAC_DIFF_SUBTYPE, CMFE_EQUATIONS_SET_CELLML_REAC_NO_SPLIT_REAC_DIFF_SUBTYPE, & - & CMFE_EQUATIONS_SET_CONSTANT_REAC_DIFF_SUBTYPE - - PUBLIC CMFE_EQUATIONS_SET_FEM_SOLUTION_METHOD,CMFE_EQUATIONS_SET_BEM_SOLUTION_METHOD,CMFE_EQUATIONS_SET_FD_SOLUTION_METHOD, & - & CMFE_EQUATIONS_SET_FV_SOLUTION_METHOD,CMFE_EQUATIONS_SET_GFEM_SOLUTION_METHOD,CMFE_EQUATIONS_SET_GFD_SOLUTION_METHOD, & - & CMFE_EQUATIONS_SET_GFV_SOLUTION_METHOD - - PUBLIC CMFE_EQUATIONS_SET_DERIVED_DEFORMATION_GRADIENT,CMFE_EQUATIONS_SET_DERIVED_R_CAUCHY_GREEN_DEFORMATION, & - & CMFE_EQUATIONS_SET_DERIVED_L_CAUCHY_GREEN_DEFORMATION,CMFE_EQUATIONS_SET_DERIVED_GREEN_LAGRANGE_STRAIN, & - & CMFE_EQUATIONS_SET_DERIVED_CAUCHY_STRESS,CMFE_EQUATIONS_SET_DERIVED_FIRST_PK_STRESS, & - & CMFE_EQUATIONS_SET_DERIVED_SECOND_PK_STRESS - - PUBLIC CMFE_EQUATIONS_MATRIX_STIFFNESS,CMFE_EQUATIONS_MATRIX_DAMPING,CMFE_EQUATIONS_MATRIX_MASS - - PUBLIC CMFE_EQUATIONS_SET_NO_OUTPUT,CMFE_EQUATIONS_SET_PROGRESS_OUTPUT - - PUBLIC CMFE_EQUATIONS_SET_LAPLACE_EQUATION_TWO_DIM_1,CMFE_EQUATIONS_SET_LAPLACE_EQUATION_TWO_DIM_2, & - & CMFE_EQUATIONS_SET_LAPLACE_EQUATION_THREE_DIM_1,CMFE_EQUATIONS_SET_LAPLACE_EQUATION_THREE_DIM_2 - - PUBLIC CMFE_EQUATIONS_SET_HELMHOLTZ_EQUATION_TWO_DIM_1 - - PUBLIC CMFE_EQUATIONS_SET_LINEAR_ELASTICITY_ONE_DIM_1,CMFE_EQUATIONS_SET_LINEAR_ELASTICITY_TWO_DIM_1, & - & CMFE_EQUATIONS_SET_LINEAR_ELASTICITY_TWO_DIM_2,CMFE_EQUATIONS_SET_LINEAR_ELASTICITY_THREE_DIM_1, & - & CMFE_EQUATIONS_SET_LINEAR_ELASTICITY_THREE_DIM_2 - - PUBLIC CMFE_EQUATIONS_SET_DIFFUSION_EQUATION_ONE_DIM_1,CMFE_EQUATIONS_SET_DIFFUSION_EQUATION_TWO_DIM_1, & - & CMFE_EQUATIONS_SET_DIFFUSION_EQUATION_THREE_DIM_1, & - & CMFE_EQUATIONS_SET_LINEAR_SOURCE_DIFFUSION_THREE_DIM_1,CMFE_EQUATIONS_SET_QUADRATIC_SOURCE_DIFFUSION_ONE_DIM_1, & - & CMFE_EQUATIONS_SET_EXPONENTIAL_SOURCE_DIFFUSION_ONE_DIM_1,CMFE_EQUATIONS_SET_MULTI_COMP_DIFFUSION_TWO_COMP_TWO_DIM, & - & CMFE_EQUATIONS_SET_MULTI_COMP_DIFFUSION_TWO_COMP_THREE_DIM,CMFE_EQUATIONS_SET_MULTI_COMP_DIFFUSION_THREE_COMP_THREE_DIM, & - & CMFE_EQUATIONS_SET_MULTI_COMP_DIFFUSION_FOUR_COMP_THREE_DIM - - PUBLIC CMFE_EQUATIONS_SET_ADVECTION_DIFFUSION_EQUATION_TWO_DIM_1 - - PUBLIC CMFE_EQUATIONS_SET_POISEUILLE_EQUATION_TWO_DIM_1 - - PUBLIC CMFE_EQUATIONS_SET_BURGERS_EQUATION_ONE_DIM_1,CMFE_EQUATIONS_SET_GENERALISED_BURGERS_EQUATION_ONE_DIM_1, & - & CMFE_EQUATIONS_SET_GENERALISED_BURGERS_EQUATION_ONE_DIM_2, & - & CMFE_EQUATIONS_SET_STATIC_BURGERS_EQUATION_ONE_DIM_1 - - PUBLIC CMFE_EQUATIONS_SET_POISSON_EQUATION_TWO_DIM_1,CMFE_EQUATIONS_SET_POISSON_EQUATION_TWO_DIM_2, & - & CMFE_EQUATIONS_SET_POISSON_EQUATION_TWO_DIM_3 - PUBLIC CMFE_EQUATIONS_SET_POISSON_EQUATION_THREE_DIM_1,CMFE_EQUATIONS_SET_POISSON_EQUATION_THREE_DIM_2, & - & CMFE_EQUATIONS_SET_POISSON_EQUATION_THREE_DIM_3 - PUBLIC CMFE_EQUATIONS_SET_PRESSURE_POISSON_THREE_DIM_1, & - & CMFE_EQUATIONS_SET_PRESSURE_POISSON_THREE_DIM_2 - - PUBLIC CMFE_EQUATIONS_SET_STOKES_EQUATION_TWO_DIM_1,CMFE_EQUATIONS_SET_STOKES_EQUATION_TWO_DIM_2, & - & CMFE_EQUATIONS_SET_STOKES_EQUATION_TWO_DIM_3 - PUBLIC CMFE_EQUATIONS_SET_STOKES_EQUATION_TWO_DIM_4,CMFE_EQUATIONS_SET_STOKES_EQUATION_TWO_DIM_5 - PUBLIC CMFE_EQUATIONS_SET_STOKES_EQUATION_THREE_DIM_1,CMFE_EQUATIONS_SET_STOKES_EQUATION_THREE_DIM_2, & - & CMFE_EQUATIONS_SET_STOKES_EQUATION_THREE_DIM_3 - PUBLIC CMFE_EQUATIONS_SET_STOKES_EQUATION_THREE_DIM_4,CMFE_EQUATIONS_SET_STOKES_EQUATION_THREE_DIM_5 - - PUBLIC CMFE_EQUATIONS_SET_NAVIER_STOKES_EQUATION_TWO_DIM_POISEUILLE, & - & CMFE_EQUATIONS_SET_NAVIER_STOKES_EQUATION_TWO_DIM_TAYLOR_GREEN - PUBLIC CMFE_EQUATIONS_SET_NAVIER_STOKES_EQUATION_FLOWRATE_AORTA, & - & CMFE_EQUATIONS_SET_NAVIER_STOKES_EQUATION_SINUSOID, & - & CMFE_EQUATIONS_SET_NAVIER_STOKES_EQUATION_SPLINT_FROM_FILE - PUBLIC CMFE_EQUATIONS_SET_NAVIER_STOKES_EQUATION_TWO_DIM_1,CMFE_EQUATIONS_SET_NAVIER_STOKES_EQUATION_TWO_DIM_2, & - & CMFE_EQUATIONS_SET_NAVIER_STOKES_EQUATION_TWO_DIM_3 - PUBLIC CMFE_EQUATIONS_SET_NAVIER_STOKES_EQUATION_TWO_DIM_4,CMFE_EQUATIONS_SET_NAVIER_STOKES_EQUATION_TWO_DIM_5 - PUBLIC CMFE_EQUATIONS_SET_NAVIER_STOKES_EQUATION_THREE_DIM_1,CMFE_EQUATIONS_SET_NAVIER_STOKES_EQUATION_THREE_DIM_2, & - & CMFE_EQUATIONS_SET_NAVIER_STOKES_EQUATION_THREE_DIM_3 - PUBLIC CMFE_EQUATIONS_SET_NAVIER_STOKES_EQUATION_THREE_DIM_4,CMFE_EQUATIONS_SET_NAVIER_STOKES_EQUATION_THREE_DIM_5 - - PUBLIC CMFE_EQUATIONS_SET_DARCY_EQUATION_TWO_DIM_1,CMFE_EQUATIONS_SET_DARCY_EQUATION_TWO_DIM_2, & - & CMFE_EQUATIONS_SET_DARCY_EQUATION_TWO_DIM_3 - PUBLIC CMFE_EQUATIONS_SET_DARCY_EQUATION_THREE_DIM_1,CMFE_EQUATIONS_SET_DARCY_EQUATION_THREE_DIM_2, & - & CMFE_EQUATIONS_SET_DARCY_EQUATION_THREE_DIM_3 - PUBLIC CMFE_EQUATIONS_SET_INCOMP_ELAST_DARCY_ANALYTIC_DARCY - - PUBLIC CMFE_EQUATIONS_SET_FINITE_ELASTICITY_CYLINDER - PUBLIC CMFE_FINITE_ELASTICITY_ANALYTIC_CYLINDER_PARAM_PIN_IDX,CMFE_FINITE_ELASTICITY_ANALYTIC_CYLINDER_PARAM_POUT_IDX - PUBLIC CMFE_FINITE_ELASTICITY_ANALYTIC_CYLINDER_PARAM_LAMBDA_IDX,CMFE_FINITE_ELASTICITY_ANALYTIC_CYLINDER_PARAM_TSI_IDX - PUBLIC CMFE_FINITE_ELASTICITY_ANALYTIC_CYLINDER_PARAM_RIN_IDX,CMFE_FINITE_ELASTICITY_ANALYTIC_CYLINDER_PARAM_ROUT_IDX - PUBLIC CMFE_FINITE_ELASTICITY_ANALYTIC_CYLINDER_PARAM_C1_IDX,CMFE_FINITE_ELASTICITY_ANALYTIC_CYLINDER_PARAM_C2_IDX +!================================================================================================================================== +! +! INTERFACE_ROUTINES +! +!================================================================================================================================== + + !Module parameters + + !Module types + + !Module variables + + !Interfaces + + !>Adds a mesh to an interface. + INTERFACE cmfe_Interface_MeshAdd + MODULE PROCEDURE cmfe_Interface_MeshAddNumber + MODULE PROCEDURE cmfe_Interface_MeshAddObj + END INTERFACE cmfe_Interface_MeshAdd + + !>Finishes the creation of an interface. \see OpenCMISS::Iron::cmfe_Interface_CreateStart + INTERFACE cmfe_Interface_CreateFinish + MODULE PROCEDURE cmfe_Interface_CreateFinishNumber + MODULE PROCEDURE cmfe_Interface_CreateFinishObj + END INTERFACE cmfe_Interface_CreateFinish + + !>Starts the creation of an interface. \see OpenCMISS::Iron::cmfe_Interface_CreateFinish + INTERFACE cmfe_Interface_CreateStart + MODULE PROCEDURE cmfe_Interface_CreateStartNumber + MODULE PROCEDURE cmfe_Interface_CreateStartObj + END INTERFACE cmfe_Interface_CreateStart + + !>Set the coordinate system of an inteface + INTERFACE cmfe_Interface_CoordinateSystemSet + MODULE PROCEDURE cmfe_Interface_CoordinateSystemSetNumber + MODULE PROCEDURE cmfe_Interface_CoordinateSystemSetObj + END INTERFACE cmfe_Interface_CoordinateSystemSet + + !>Get the coordinate system of an inteface + INTERFACE cmfe_Interface_CoordinateSystemGet + MODULE PROCEDURE cmfe_Interface_CoordinateSystemGetNumber + MODULE PROCEDURE cmfe_Interface_CoordinateSystemGetObj + END INTERFACE cmfe_Interface_CoordinateSystemGet + + !>Destroys an interface. + INTERFACE cmfe_Interface_Destroy + MODULE PROCEDURE cmfe_Interface_DestroyNumber + MODULE PROCEDURE cmfe_Interface_DestroyObj + END INTERFACE cmfe_Interface_Destroy + + !>Returns the label of an interface. + INTERFACE cmfe_Interface_LabelGet + MODULE PROCEDURE cmfe_Interface_LabelGetCNumber + MODULE PROCEDURE cmfe_Interface_LabelGetCObj + MODULE PROCEDURE cmfe_Interface_LabelGetVSNumber + MODULE PROCEDURE cmfe_Interface_LabelGetVSObj + END INTERFACE cmfe_Interface_LabelGet + + !>Sets/changes the label of an interface. + INTERFACE cmfe_Interface_LabelSet + MODULE PROCEDURE cmfe_Interface_LabelSetCNumber + MODULE PROCEDURE cmfe_Interface_LabelSetCObj + MODULE PROCEDURE cmfe_Interface_LabelSetVSNumber + MODULE PROCEDURE cmfe_Interface_LabelSetVSObj + END INTERFACE cmfe_Interface_LabelSet + + !>Returns the nodes for a interface. + INTERFACE cmfe_Interface_NodesGet + MODULE PROCEDURE cmfe_Interface_NodesGetObj + END INTERFACE cmfe_Interface_NodesGet + + !>Finishes the creation of an interface meshes connectivity. \see OpenCMISS::Iron::cmfe_InterfaceMeshConnectivity_CreateStart + INTERFACE cmfe_InterfaceMeshConnectivity_CreateFinish + MODULE PROCEDURE cmfe_InterfaceMeshConnectivity_CreateFinishNumber + MODULE PROCEDURE cmfe_InterfaceMeshConnectivity_CreateFinishObj + END INTERFACE cmfe_InterfaceMeshConnectivity_CreateFinish + + !>Starts the creation of an interface meshes connectivity. + INTERFACE cmfe_InterfaceMeshConnectivity_CreateStart + MODULE PROCEDURE cmfe_InterfaceMeshConnectivity_CreateStartNumber + MODULE PROCEDURE cmfe_InterfaceMeshConnectivity_CreateStartObj + END INTERFACE cmfe_InterfaceMeshConnectivity_CreateStart + + !>Sets the element xi values for the mesh connectivity between an element in the interface mesh and an element in a region mesh + INTERFACE cmfe_InterfaceMeshConnectivity_ElementXiSet + MODULE PROCEDURE cmfe_InterfaceMeshConnectivity_ElementXiSetNumber + MODULE PROCEDURE cmfe_InterfaceMeshConnectivity_ElementXiSetObj + END INTERFACE cmfe_InterfaceMeshConnectivity_ElementXiSet + + !>Sets the number of elements coupled through a given interface mesh element + INTERFACE cmfe_InterfaceMeshConnectivity_ElementNumberSet + MODULE PROCEDURE cmfe_InterfaceMeshConnectivity_ElementNumberSetNumber + MODULE PROCEDURE cmfe_InterfaceMeshConnectivity_ElementNumberSetObj + END INTERFACE cmfe_InterfaceMeshConnectivity_ElementNumberSet + + !>Sets the coupled node numbers + INTERFACE cmfe_InterfaceMeshConnectivity_NodeNumberSet + MODULE PROCEDURE cmfe_InterfaceMeshConnectivity_NodeNumberSetNumber + MODULE PROCEDURE cmfe_InterfaceMeshConnectivity_NodeNumberSetObj + END INTERFACE cmfe_InterfaceMeshConnectivity_NodeNumberSet + + !>Sets the number of elements coupled through a given interface mesh element + INTERFACE cmfe_InterfaceMeshConnectivity_BasisSet + MODULE PROCEDURE cmfe_InterfaceMeshConnectivity_BasisSetNumber + MODULE PROCEDURE cmfe_InterfaceMeshConnectivity_BasisSetObj + END INTERFACE cmfe_InterfaceMeshConnectivity_BasisSet + + !>Destroys an interface meshes connectivity. + INTERFACE cmfe_InterfaceMeshConnectivity_Destroy + MODULE PROCEDURE cmfe_InterfaceMeshConnectivity_DestroyNumber + MODULE PROCEDURE cmfe_InterfaceMeshConnectivity_DestroyObj + END INTERFACE cmfe_InterfaceMeshConnectivity_Destroy + + !>Finishes the creation of an interface points connectivity. + INTERFACE cmfe_InterfacePointsConnectivity_CreateFinish + MODULE PROCEDURE cmfe_InterfacePointsConnectivity_CreateFinishNumber + MODULE PROCEDURE cmfe_InterfacePointsConnectivity_CreateFinishObj + END INTERFACE cmfe_InterfacePointsConnectivity_CreateFinish + + !>Starts the creation of an interface points connectivity. + INTERFACE cmfe_InterfacePointsConnectivity_CreateStart + MODULE PROCEDURE cmfe_InterfacePointsConnectivity_CreateStartNumber + MODULE PROCEDURE cmfe_InterfacePointsConnectivity_CreateStartObj + END INTERFACE cmfe_InterfacePointsConnectivity_CreateStart + + !>Destroys an interface points connectivity. + INTERFACE cmfe_InterfacePointsConnectivity_Destroy + MODULE PROCEDURE cmfe_InterfacePointsConnectivity_DestroyNumber + MODULE PROCEDURE cmfe_InterfacePointsConnectivity_DestroyObj + END INTERFACE cmfe_InterfacePointsConnectivity_Destroy + + !>Get the coupled mesh element number that defines points connectivity + INTERFACE cmfe_InterfacePointsConnectivity_ElementNumberGet + MODULE PROCEDURE cmfe_InterfacePointsConnectivity_ElementNumberGetNumber + MODULE PROCEDURE cmfe_InterfacePointsConnectivity_ElementNumberGetObj + END INTERFACE cmfe_InterfacePointsConnectivity_ElementNumberGet + + !>Gets the element xi values for the points connectivity between a data point in the interface mesh and an element in a region mesh + INTERFACE cmfe_InterfacePointsConnectivity_PointXiGet + MODULE PROCEDURE cmfe_InterfacePointsConnectivity_PointXiGetNumber + MODULE PROCEDURE cmfe_InterfacePointsConnectivity_PointXiGetObj + END INTERFACE cmfe_InterfacePointsConnectivity_PointXiGet + + !>Sets the coupled mesh element number that defines points connectivity + INTERFACE cmfe_InterfacePointsConnectivity_ElementNumberSet + MODULE PROCEDURE cmfe_InterfacePointsConnectivity_ElementNumberSetNumber + MODULE PROCEDURE cmfe_InterfacePointsConnectivity_ElementNumberSetObj + END INTERFACE cmfe_InterfacePointsConnectivity_ElementNumberSet + + !>Sets the element xi values for the points connectivity between a data point in the interface mesh and an element in a region mesh + INTERFACE cmfe_InterfacePointsConnectivity_PointXiSet + MODULE PROCEDURE cmfe_InterfacePointsConnectivity_PointXiSetNumber + MODULE PROCEDURE cmfe_InterfacePointsConnectivity_PointXiSetObj + END INTERFACE cmfe_InterfacePointsConnectivity_PointXiSet + + !>Update points connectivity information with projection results + INTERFACE cmfe_InterfacePointsConnectivity_UpdateFromProjection + MODULE PROCEDURE cmfe_InterfacePointsConnectivity_UpdateFromProjectionRNumber + MODULE PROCEDURE cmfe_InterfacePointsConnectivity_UpdateFromProjectionINumber + MODULE PROCEDURE cmfe_InterfacePointsConnectivity_UpdateFromProjectionObj + END INTERFACE cmfe_InterfacePointsConnectivity_UpdateFromProjection + + PUBLIC cmfe_Interface_MeshAdd -!!================================================================================================================================== -!! -!! EQUATIONS_SET_ROUTINES -!! -!!================================================================================================================================== + PUBLIC cmfe_Interface_CreateFinish,cmfe_Interface_CreateStart - !Module parameters - - !Module types - - !Module variables - - !Interfaces - - !>Finish the creation of a analytic solution for an equations set. \see OpenCMISS::Iron::cmfe_EquationsSet_AnalyticCreateStart - INTERFACE cmfe_EquationsSet_AnalyticCreateFinish - MODULE PROCEDURE cmfe_EquationsSet_AnalyticCreateFinishNumber - MODULE PROCEDURE cmfe_EquationsSet_AnalyticCreateFinishObj - END INTERFACE cmfe_EquationsSet_AnalyticCreateFinish - - !>Start the creation of a analytic solution for an equations set. \see OpenCMISS::Iron::cmfe_EquationsSet_AnalyticCreateFinish - INTERFACE cmfe_EquationsSet_AnalyticCreateStart - MODULE PROCEDURE cmfe_EquationsSet_AnalyticCreateStartNumber - MODULE PROCEDURE cmfe_EquationsSet_AnalyticCreateStartObj - END INTERFACE cmfe_EquationsSet_AnalyticCreateStart - - !>Destroy the analytic solution for an equations set. - INTERFACE cmfe_EquationsSet_AnalyticDestroy - MODULE PROCEDURE cmfe_EquationsSet_AnalyticDestroyNumber - MODULE PROCEDURE cmfe_EquationsSet_AnalyticDestroyObj - END INTERFACE cmfe_EquationsSet_AnalyticDestroy - - !>Evaluates the current analytic solution for an equations set. - INTERFACE cmfe_EquationsSet_AnalyticEvaluate - MODULE PROCEDURE cmfe_EquationsSet_AnalyticEvaluateNumber - MODULE PROCEDURE cmfe_EquationsSet_AnalyticEvaluateObj - END INTERFACE cmfe_EquationsSet_AnalyticEvaluate - - !>Returns the analytic time for an equations set. - INTERFACE cmfe_EquationsSet_AnalyticTimeGet - MODULE PROCEDURE cmfe_EquationsSet_AnalyticTimeGetNumber - MODULE PROCEDURE cmfe_EquationsSet_AnalyticTimeGetObj - END INTERFACE cmfe_EquationsSet_AnalyticTimeGet - - !>Sets/changes the analytic time for an equations set. - INTERFACE cmfe_EquationsSet_AnalyticTimeSet - MODULE PROCEDURE cmfe_EquationsSet_AnalyticTimeSetNumber - MODULE PROCEDURE cmfe_EquationsSet_AnalyticTimeSetObj - END INTERFACE cmfe_EquationsSet_AnalyticTimeSet - - !>Finish the creation of an equations set. \see OpenCMISS::Iron::cmfe_EquationsSet_CreateStart - INTERFACE cmfe_EquationsSet_CreateFinish - MODULE PROCEDURE cmfe_EquationsSet_CreateFinishNumber - MODULE PROCEDURE cmfe_EquationsSet_CreateFinishObj - END INTERFACE cmfe_EquationsSet_CreateFinish - - !>Start the creation of an equations set on a region. \see OpenCMISS::Iron::cmfe_EquationsSet_CreateFinish - INTERFACE cmfe_EquationsSet_CreateStart - MODULE PROCEDURE cmfe_EquationsSet_CreateStartNumber - MODULE PROCEDURE cmfe_EquationsSet_CreateStartObj - END INTERFACE cmfe_EquationsSet_CreateStart - - !>Destroy an equations set. - INTERFACE cmfe_EquationsSet_Destroy - MODULE PROCEDURE cmfe_EquationsSet_DestroyNumber - MODULE PROCEDURE cmfe_EquationsSet_DestroyObj - END INTERFACE cmfe_EquationsSet_Destroy - - !>Finish the creation of dependent variables for an equations set. \see OpenCMISS::Iron::cmfe_EquationsSet_DependentCreateStart - INTERFACE cmfe_EquationsSet_DependentCreateFinish - MODULE PROCEDURE cmfe_EquationsSet_DependentCreateFinishNumber - MODULE PROCEDURE cmfe_EquationsSet_DependentCreateFinishObj - END INTERFACE cmfe_EquationsSet_DependentCreateFinish - - !>Start the creation of dependent variables for an equations set. \see OpenCMISS::Iron::cmfe_EquationsSet_DependentCreateFinish - INTERFACE cmfe_EquationsSet_DependentCreateStart - MODULE PROCEDURE cmfe_EquationsSet_DependentCreateStartNumber - MODULE PROCEDURE cmfe_EquationsSet_DependentCreateStartObj - END INTERFACE cmfe_EquationsSet_DependentCreateStart - - !>Destroy the dependent variables for an equations set. - INTERFACE cmfe_EquationsSet_DependentDestroy - MODULE PROCEDURE cmfe_EquationsSet_DependentDestroyNumber - MODULE PROCEDURE cmfe_EquationsSet_DependentDestroyObj - END INTERFACE cmfe_EquationsSet_DependentDestroy - - !>Finish the creation of derived variables for an equations set. \see OpenCMISS::Iron::cmfe_EquationsSet_DerivedCreateStart - INTERFACE cmfe_EquationsSet_DerivedCreateFinish - MODULE PROCEDURE cmfe_EquationsSet_DerivedCreateFinishNumber - MODULE PROCEDURE cmfe_EquationsSet_DerivedCreateFinishObj - END INTERFACE cmfe_EquationsSet_DerivedCreateFinish - - !>Start the creation of derived variables for an equations set. These are used to store any intermediate - !>calculated values, for example stress and strain fields in an elasticity problem. \see OpenCMISS::Iron::cmfe_EquationsSet_DerivedCreateFinish - INTERFACE cmfe_EquationsSet_DerivedCreateStart - MODULE PROCEDURE cmfe_EquationsSet_DerivedCreateStartNumber - MODULE PROCEDURE cmfe_EquationsSet_DerivedCreateStartObj - END INTERFACE cmfe_EquationsSet_DerivedCreateStart - - !>Destroy the derived variables for an equations set. - INTERFACE cmfe_EquationsSet_DerivedDestroy - MODULE PROCEDURE cmfe_EquationsSet_DerivedDestroyNumber - MODULE PROCEDURE cmfe_EquationsSet_DerivedDestroyObj - END INTERFACE cmfe_EquationsSet_DerivedDestroy - - !>Finish the creation of equations for an equations set. \see OpenCMISS::Iron::cmfe_EquationsSet_EquationsCreateStart - INTERFACE cmfe_EquationsSet_EquationsCreateFinish - MODULE PROCEDURE cmfe_EquationsSet_EquationsCreateFinishNumber - MODULE PROCEDURE cmfe_EquationsSet_EquationsCreateFinishObj - END INTERFACE cmfe_EquationsSet_EquationsCreateFinish - - !>Start the creation of equations for an equations set. \see OpenCMISS::Iron::cmfe_EquationsSet_EquationsCreateFinish - INTERFACE cmfe_EquationsSet_EquationsCreateStart - MODULE PROCEDURE cmfe_EquationsSet_EquationsCreateStartNumber - MODULE PROCEDURE cmfe_EquationsSet_EquationsCreateStartObj - END INTERFACE cmfe_EquationsSet_EquationsCreateStart - - !>Destroy the equations for an equations set. - INTERFACE cmfe_EquationsSet_EquationsDestroy - MODULE PROCEDURE cmfe_EquationsSet_EquationsDestroyNumber - MODULE PROCEDURE cmfe_EquationsSet_EquationsDestroyObj - END INTERFACE cmfe_EquationsSet_EquationsDestroy - - !>Finish the creation of independent fields for an equations set. \see OpenCMISS::Iron::cmfe_EquationsSet_IndependentCreateStart - INTERFACE cmfe_EquationsSet_IndependentCreateFinish - MODULE PROCEDURE cmfe_EquationsSet_IndependentCreateFinishNumber - MODULE PROCEDURE cmfe_EquationsSet_IndependentCreateFinishObj - END INTERFACE cmfe_EquationsSet_IndependentCreateFinish - - !>Start the creation of independent fields for an equations set. \see OpenCMISS::Iron::cmfe_EquationsSet_MaterialsCreateFinish - INTERFACE cmfe_EquationsSet_IndependentCreateStart - MODULE PROCEDURE cmfe_EquationsSet_IndependentCreateStartNumber - MODULE PROCEDURE cmfe_EquationsSet_IndependentCreateStartObj - END INTERFACE cmfe_EquationsSet_IndependentCreateStart - - !>Destroy the independent fields for an equations set. - INTERFACE cmfe_EquationsSet_IndependentDestroy - MODULE PROCEDURE cmfe_EquationsSet_IndependentDestroyNumber - MODULE PROCEDURE cmfe_EquationsSet_IndependentDestroyObj - END INTERFACE cmfe_EquationsSet_IndependentDestroy - - !>Returns the label for an equations set. - INTERFACE cmfe_EquationsSet_LabelGet - MODULE PROCEDURE cmfe_EquationsSet_LabelGetCNumber - MODULE PROCEDURE cmfe_EquationsSet_LabelGetCObj - MODULE PROCEDURE cmfe_EquationsSet_LabelGetVSNumber - MODULE PROCEDURE cmfe_EquationsSet_LabelGetVSObj - END INTERFACE cmfe_EquationsSet_LabelGet - - !>Sets/changes the label for an equations set. - INTERFACE cmfe_EquationsSet_LabelSet - MODULE PROCEDURE cmfe_EquationsSet_LabelSetCNumber - MODULE PROCEDURE cmfe_EquationsSet_LabelSetCObj - MODULE PROCEDURE cmfe_EquationsSet_LabelSetVSNumber - MODULE PROCEDURE cmfe_EquationsSet_LabelSetVSObj - END INTERFACE cmfe_EquationsSet_LabelSet - - !>Finish the creation of materials for an equations set. \see OpenCMISS::Iron::cmfe_EquationsSet_MaterialsCreateStart - INTERFACE cmfe_EquationsSet_MaterialsCreateFinish - MODULE PROCEDURE cmfe_EquationsSet_MaterialsCreateFinishNumber - MODULE PROCEDURE cmfe_EquationsSet_MaterialsCreateFinishObj - END INTERFACE cmfe_EquationsSet_MaterialsCreateFinish - - !>Start the creation of materials for an equations set. \see OpenCMISS::Iron::cmfe_EquationsSet_MaterialsCreateFinish - INTERFACE cmfe_EquationsSet_MaterialsCreateStart - MODULE PROCEDURE cmfe_EquationsSet_MaterialsCreateStartNumber - MODULE PROCEDURE cmfe_EquationsSet_MaterialsCreateStartObj - END INTERFACE cmfe_EquationsSet_MaterialsCreateStart - - !>Destroy the materials for an equations set. - INTERFACE cmfe_EquationsSet_MaterialsDestroy - MODULE PROCEDURE cmfe_EquationsSet_MaterialsDestroyNumber - MODULE PROCEDURE cmfe_EquationsSet_MaterialsDestroyObj - END INTERFACE cmfe_EquationsSet_MaterialsDestroy - - !>Gets the output type for an equations set. - INTERFACE cmfe_EquationsSet_OutputTypeGet - MODULE PROCEDURE cmfe_EquationsSet_OutputTypeGetNumber - MODULE PROCEDURE cmfe_EquationsSet_OutputTypeGetObj - END INTERFACE cmfe_EquationsSet_OutputTypeGet - - !>Sets/changes the output type an equations set. - INTERFACE cmfe_EquationsSet_OutputTypeSet - MODULE PROCEDURE cmfe_EquationsSet_OutputTypeSetNumber - MODULE PROCEDURE cmfe_EquationsSet_OutputTypeSetObj - END INTERFACE cmfe_EquationsSet_OutputTypeSet - - !>Returns the solution method for an equations set. - INTERFACE cmfe_EquationsSet_SolutionMethodGet - MODULE PROCEDURE cmfe_EquationsSet_SolutionMethodGetNumber - MODULE PROCEDURE cmfe_EquationsSet_SolutionMethodGetObj - END INTERFACE cmfe_EquationsSet_SolutionMethodGet - - !>Sets/changes the solution method for an equations set. - INTERFACE cmfe_EquationsSet_SolutionMethodSet - MODULE PROCEDURE cmfe_EquationsSet_SolutionMethodSetNumber - MODULE PROCEDURE cmfe_EquationsSet_SolutionMethodSetObj - END INTERFACE cmfe_EquationsSet_SolutionMethodSet - - !>Finish the creation of a source for an equations set. \see OpenCMISS::Iron::cmfe_EquationsSet_SourceCreateStart - INTERFACE cmfe_EquationsSet_SourceCreateFinish - MODULE PROCEDURE cmfe_EquationsSet_SourceCreateFinishNumber - MODULE PROCEDURE cmfe_EquationsSet_SourceCreateFinishObj - END INTERFACE cmfe_EquationsSet_SourceCreateFinish - - !>Start the creation of a source for an equations set. \see OpenCMISS::Iron::cmfe_EquationsSet_SourceCreateFinish - INTERFACE cmfe_EquationsSet_SourceCreateStart - MODULE PROCEDURE cmfe_EquationsSet_SourceCreateStartNumber - MODULE PROCEDURE cmfe_EquationsSet_SourceCreateStartObj - END INTERFACE cmfe_EquationsSet_SourceCreateStart - - !>Destroy the source for an equations set. - INTERFACE cmfe_EquationsSet_SourceDestroy - MODULE PROCEDURE cmfe_EquationsSet_SourceDestroyNumber - MODULE PROCEDURE cmfe_EquationsSet_SourceDestroyObj - END INTERFACE cmfe_EquationsSet_SourceDestroy - - !>Returns the equations set specification array - INTERFACE cmfe_EquationsSet_SpecificationGet - MODULE PROCEDURE cmfe_EquationsSet_SpecificationGetNumber - MODULE PROCEDURE cmfe_EquationsSet_SpecificationGetObj - END INTERFACE cmfe_EquationsSet_SpecificationGet - - !>Returns the size of the equations set specification array. - INTERFACE cmfe_EquationsSet_SpecificationSizeGet - MODULE PROCEDURE cmfe_EquationsSet_SpecificationSizeGetNumber - MODULE PROCEDURE cmfe_EquationsSet_SpecificationSizeGetObj - END INTERFACE cmfe_EquationsSet_SpecificationSizeGet - - !>Calculates an output field for the equations set. - INTERFACE cmfe_EquationsSet_DerivedVariableCalculate - MODULE PROCEDURE cmfe_EquationsSet_DerivedVariableCalculateNumber - MODULE PROCEDURE cmfe_EquationsSet_DerivedVariableCalculateObj - END INTERFACE cmfe_EquationsSet_DerivedVariableCalculate - - !>Set the derived field variable type to be used by a derived variable - INTERFACE cmfe_EquationsSet_DerivedVariableSet - MODULE PROCEDURE cmfe_EquationsSet_DerivedVariableSetNumber - MODULE PROCEDURE cmfe_EquationsSet_DerivedVariableSetObj - END INTERFACE cmfe_EquationsSet_DerivedVariableSet - - !>Evaluate a tensor at a given element Gauss location. - INTERFACE cmfe_EquationsSet_TensorInterpolateGaussPoint - MODULE PROCEDURE cmfe_EquationsSet_TensorInterpolateGaussPointNumber - MODULE PROCEDURE cmfe_EquationsSet_TensorInterpolateGaussPointObj - END INTERFACE cmfe_EquationsSet_TensorInterpolateGaussPoint + PUBLIC cmfe_Interface_CoordinateSystemSet,cmfe_Interface_CoordinateSystemGet - !>Evaluate a tensor at a given element xi location. - INTERFACE cmfe_EquationsSet_TensorInterpolateXi - MODULE PROCEDURE cmfe_EquationsSet_TensorInterpolateXiNumber - MODULE PROCEDURE cmfe_EquationsSet_TensorInterpolateXiObj - END INTERFACE cmfe_EquationsSet_TensorInterpolateXi + PUBLIC cmfe_Interface_Destroy - !>Returns the equations set current times - INTERFACE cmfe_EquationsSet_TimesGet - MODULE PROCEDURE cmfe_EquationsSet_TimesGetNumber - MODULE PROCEDURE cmfe_EquationsSet_TimesGetObj - END INTERFACE cmfe_EquationsSet_TimesGet + PUBLIC cmfe_Interface_LabelGet,cmfe_Interface_LabelSet - !>Sets/changes the equations set current times - INTERFACE cmfe_EquationsSet_TimesSet - MODULE PROCEDURE cmfe_EquationsSet_TimesSetNumber - MODULE PROCEDURE cmfe_EquationsSet_TimesSetObj - END INTERFACE cmfe_EquationsSet_TimesSet + PUBLIC cmfe_Interface_NodesGet - !>Gets the equations set analytic user parameter - INTERFACE cmfe_EquationsSet_AnalyticUserParamGet - MODULE PROCEDURE cmfe_EquationsSet_AnalyticUserParamGetNumber - MODULE PROCEDURE cmfe_EquationsSet_AnalyticUserParamGetObj - END INTERFACE cmfe_EquationsSet_AnalyticUserParamGet + PUBLIC cmfe_InterfaceMeshConnectivity_CreateFinish,cmfe_InterfaceMeshConnectivity_CreateStart - !>Sets/changes the equations set analytic user parameter - INTERFACE cmfe_EquationsSet_AnalyticUserParamSet - MODULE PROCEDURE cmfe_EquationsSet_AnalyticUserParamSetNumber - MODULE PROCEDURE cmfe_EquationsSet_AnalyticUserParamSetObj - END INTERFACE cmfe_EquationsSet_AnalyticUserParamSet + PUBLIC cmfe_InterfaceMeshConnectivity_Destroy,cmfe_InterfaceMeshConnectivity_BasisSet - PUBLIC cmfe_EquationsSet_AnalyticCreateFinish,cmfe_EquationsSet_AnalyticCreateStart + PUBLIC cmfe_InterfaceMeshConnectivity_ElementNumberSet,cmfe_InterfaceMeshConnectivity_ElementXiSet - PUBLIC cmfe_EquationsSet_AnalyticDestroy + PUBLIC cmfe_InterfaceMeshConnectivity_NodeNumberSet - PUBLIC cmfe_EquationsSet_AnalyticEvaluate + PUBLIC cmfe_InterfacePointsConnectivity_CreateFinish,cmfe_InterfacePointsConnectivity_CreateStart - PUBLIC cmfe_EquationsSet_AnalyticTimeGet,cmfe_EquationsSet_AnalyticTimeSet + PUBLIC cmfe_InterfacePointsConnectivity_Destroy - PUBLIC cmfe_EquationsSet_CreateFinish,cmfe_EquationsSet_CreateStart + PUBLIC cmfe_InterfacePointsConnectivity_ElementNumberGet,cmfe_InterfacePointsConnectivity_PointXiGet - PUBLIC cmfe_EquationsSet_Destroy + PUBLIC cmfe_InterfacePointsConnectivity_ElementNumberSet,cmfe_InterfacePointsConnectivity_PointXiSet - PUBLIC cmfe_EquationsSet_DependentCreateFinish,cmfe_EquationsSet_DependentCreateStart + PUBLIC cmfe_InterfacePointsConnectivity_UpdateFromProjection - PUBLIC cmfe_EquationsSet_DependentDestroy +!================================================================================================================================== +! +! INTERFACE_CONDITION_ROUTINES +! +!================================================================================================================================== + + !Module parameters + + !> \addtogroup OpenCMISS_InterfaceConditionConstants OpenCMISS::Iron::InterfaceConditions::Constants + !> \brief Interface conditions constants. + !>@{ + !> \addtogroup OpenCMISS_InterfaceConditionMethods OpenCMISS::Iron::InterfaceConditions::Methods + !> \brief Interface condition methods. + !> \see OpenCMISS::Iron::InterfaceConditions,OpenCMISS + !>@{ + INTEGER(INTG), PARAMETER :: CMFE_INTERFACE_CONDITION_LAGRANGE_MULTIPLIERS_METHOD = & + & INTERFACE_CONDITION_LAGRANGE_MULTIPLIERS_METHOD !@} + !> \addtogroup OpenCMISS_InterfaceConditionOperators OpenCMISS::Iron::InterfaceConditions::Operators + !> \brief Interface condition operator types. + !> \see OpenCMISS::Iron::InterfaceConditions,OpenCMISS + !>@{ + INTEGER(INTG), PARAMETER :: CMFE_INTERFACE_CONDITION_FIELD_CONTINUITY_OPERATOR = & + & INTERFACE_CONDITION_FIELD_CONTINUITY_OPERATOR !@} + !> \addtogroup OpenCMISS_InterfaceConditionOutputTypes OpenCMISS::Iron::InterfaceConditions::OutputTypes + !> \brief Interface conditions output types + !> \see OpenCMISS::Iron::InterfaceConditions,OpenCMISS + !>@{ + INTEGER(INTG), PARAMETER :: CMFE_INTERFACE_CONDITION_NO_OUTPUT = INTERFACE_CONDITION_NO_OUTPUT!@} + !> \addtogroup OpenCMISS_InterfaceConditionIntegrationTypes OpenCMISS::Iron::InterfaceConditions::IntegrationTypes + !> \brief Interface condition integration types. + !> \see OpenCMISS::Iron::InterfaceConditions,OpenCMISS + !>@{ + INTEGER(INTG), PARAMETER :: CMFE_INTERFACE_CONDITION_GAUSS_INTEGRATION=INTERFACE_CONDITION_GAUSS_INTEGRATION !@} + !>@} + + !Module types + + !Module variables + + !Interfaces + + !>Finishes the creation of an interface condition. \see OpenCMISS::Iron::cmfe_InterfaceCondition_CreateStart + INTERFACE cmfe_InterfaceCondition_CreateFinish + MODULE PROCEDURE cmfe_InterfaceCondition_CreateFinishNumber + MODULE PROCEDURE cmfe_InterfaceCondition_CreateFinishObj + END INTERFACE cmfe_InterfaceCondition_CreateFinish + + !>Starts the creation of an interface condition. \see OpenCMISS::Iron::cmfe_InterfaceCondition_CreateFinish + INTERFACE cmfe_InterfaceCondition_CreateStart + MODULE PROCEDURE cmfe_InterfaceCondition_CreateStartNumber + MODULE PROCEDURE cmfe_InterfaceCondition_CreateStartObj + END INTERFACE cmfe_InterfaceCondition_CreateStart + + !>Adds in a dependent variable to an interface condition. + INTERFACE cmfe_InterfaceCondition_DependentVariableAdd + MODULE PROCEDURE cmfe_InterfaceCondition_DependentVariableAddNumber + MODULE PROCEDURE cmfe_InterfaceCondition_DependentVariableAddObj + END INTERFACE cmfe_InterfaceCondition_DependentVariableAdd + + !>Destroys an interface condition. + INTERFACE cmfe_InterfaceCondition_Destroy + MODULE PROCEDURE cmfe_InterfaceCondition_DestroyNumber + MODULE PROCEDURE cmfe_InterfaceCondition_DestroyObj + END INTERFACE cmfe_InterfaceCondition_Destroy + + !>Finishes the creation of equations for an interface condition. \see OpenCMISS::Iron::cmfe_InterfaceCondition_EquationsCreateStart + INTERFACE cmfe_InterfaceCondition_EquationsCreateFinish + MODULE PROCEDURE cmfe_InterfaceCondition_EquationsCreateFinishNumber + MODULE PROCEDURE cmfe_InterfaceCondition_EquationsCreateFinishObj + END INTERFACE cmfe_InterfaceCondition_EquationsCreateFinish + + !>Starts the creation of equations for an interface condition. \see OpenCMISS::Iron::cmfe_InterfaceCondition_EquationsCreateFinish + INTERFACE cmfe_InterfaceCondition_EquationsCreateStart + MODULE PROCEDURE cmfe_InterfaceCondition_EquationsCreateStartNumber + MODULE PROCEDURE cmfe_InterfaceCondition_EquationsCreateStartObj + END INTERFACE cmfe_InterfaceCondition_EquationsCreateStart + + !>Destroys the interface equations for an interface condition. + INTERFACE cmfe_InterfaceCondition_EquationsDestroy + MODULE PROCEDURE cmfe_InterfaceCondition_EquationsDestroyNumber + MODULE PROCEDURE cmfe_InterfaceCondition_EquationsDestroyObj + END INTERFACE cmfe_InterfaceCondition_EquationsDestroy + + !>Returns the integration type for an interface condition. + INTERFACE cmfe_InterfaceCondition_IntegrationTypeGet + MODULE PROCEDURE cmfe_InterfaceCondition_IntegrationTypeGetNumber + MODULE PROCEDURE cmfe_InterfaceCondition_IntegrationTypeGetObj + END INTERFACE cmfe_InterfaceCondition_IntegrationTypeGet + + !>Sets/changes the integration type for an interface condition. + INTERFACE cmfe_InterfaceCondition_IntegrationTypeSet + MODULE PROCEDURE cmfe_InterfaceCondition_IntegrationTypeSetNumber + MODULE PROCEDURE cmfe_InterfaceCondition_IntegrationTypeSetObj + END INTERFACE cmfe_InterfaceCondition_IntegrationTypeSet + + !>Finishes the creation of a Lagrange multipliers field for an interface condition. \see OpenCMISS::Iron::cmfe_InterfaceCondition_LagrangeFieldCreateStart + INTERFACE cmfe_InterfaceCondition_LagrangeFieldCreateFinish + MODULE PROCEDURE cmfe_InterfaceCondition_LagrangeFieldCreateFinishNumber + MODULE PROCEDURE cmfe_InterfaceCondition_LagrangeFieldCreateFinishObj + END INTERFACE cmfe_InterfaceCondition_LagrangeFieldCreateFinish + + !>Starts the creation of a Lagrange multipliers field for an interface condition. \see OpenCMISS::Iron::cmfe_InterfaceCondition_LagrangeFieldCreateFinish + INTERFACE cmfe_InterfaceCondition_LagrangeFieldCreateStart + MODULE PROCEDURE cmfe_InterfaceCondition_LagrangeFieldCreateStartNumber + MODULE PROCEDURE cmfe_InterfaceCondition_LagrangeFieldCreateStartObj + END INTERFACE cmfe_InterfaceCondition_LagrangeFieldCreateStart + + !>Returns the label for an interface condition. + INTERFACE cmfe_InterfaceCondition_LabelGet + MODULE PROCEDURE cmfe_InterfaceCondition_LabelGetCNumber + MODULE PROCEDURE cmfe_InterfaceCondition_LabelGetCObj + MODULE PROCEDURE cmfe_InterfaceCondition_LabelGetVSNumber + MODULE PROCEDURE cmfe_InterfaceCondition_LabelGetVSObj + END INTERFACE cmfe_InterfaceCondition_LabelGet + + !>Sets/changes the label for an interface condition. + INTERFACE cmfe_InterfaceCondition_LabelSet + MODULE PROCEDURE cmfe_InterfaceCondition_LabelSetCNumber + MODULE PROCEDURE cmfe_InterfaceCondition_LabelSetCObj + MODULE PROCEDURE cmfe_InterfaceCondition_LabelSetVSNumber + MODULE PROCEDURE cmfe_InterfaceCondition_LabelSetVSObj + END INTERFACE cmfe_InterfaceCondition_LabelSet + + !>Gets the output type for an interface condition. + INTERFACE cmfe_InterfaceCondition_OutputTypeGet + MODULE PROCEDURE cmfe_InterfaceCondition_OutputTypeGetNumber + MODULE PROCEDURE cmfe_InterfaceCondition_OutputTypeGetObj + END INTERFACE cmfe_InterfaceCondition_OutputTypeGet + + !>Sets/changes the output type an equations set. + INTERFACE cmfe_InterfaceCondition_OutputTypeSet + MODULE PROCEDURE cmfe_InterfaceCondition_OutputTypeSetNumber + MODULE PROCEDURE cmfe_InterfaceCondition_OutputTypeSetObj + END INTERFACE cmfe_InterfaceCondition_OutputTypeSet + + !>Finishes the creation of a Penalty field for an interface condition. \see OpenCMISS::Iron::cmfe_InterfaceCondition_PenaltyFieldCreateStart + INTERFACE cmfe_InterfaceCondition_PenaltyFieldCreateFinish + MODULE PROCEDURE cmfe_InterfaceCondition_PenaltyFieldCreateFinishNumber + MODULE PROCEDURE cmfe_InterfaceCondition_PenaltyFieldCreateFinishObj + END INTERFACE cmfe_InterfaceCondition_PenaltyFieldCreateFinish + + !>Starts the creation of a Penalty field for an interface condition. \see OpenCMISS::Iron::cmfe_InterfaceCondition_PenaltyFieldCreateFinish + INTERFACE cmfe_InterfaceCondition_PenaltyFieldCreateStart + MODULE PROCEDURE cmfe_InterfaceCondition_PenaltyFieldCreateStartNumber + MODULE PROCEDURE cmfe_InterfaceCondition_PenaltyFieldCreateStartObj + END INTERFACE cmfe_InterfaceCondition_PenaltyFieldCreateStart + + !>Returns the method for an interface condition. + INTERFACE cmfe_InterfaceCondition_MethodGet + MODULE PROCEDURE cmfe_InterfaceCondition_MethodGetNumber + MODULE PROCEDURE cmfe_InterfaceCondition_MethodGetObj + END INTERFACE cmfe_InterfaceCondition_MethodGet + + !>Sets/changes the method for an interface condition. + INTERFACE cmfe_InterfaceCondition_MethodSet + MODULE PROCEDURE cmfe_InterfaceCondition_MethodSetNumber + MODULE PROCEDURE cmfe_InterfaceCondition_MethodSetObj + END INTERFACE cmfe_InterfaceCondition_MethodSet + + !>Returns the operator for an interface condition. + INTERFACE cmfe_InterfaceCondition_OperatorGet + MODULE PROCEDURE cmfe_InterfaceCondition_OperatorGetNumber + MODULE PROCEDURE cmfe_InterfaceCondition_OperatorGetObj + END INTERFACE cmfe_InterfaceCondition_OperatorGet + + !>Sets/changes the operator for an interface condition. + INTERFACE cmfe_InterfaceCondition_OperatorSet + MODULE PROCEDURE cmfe_InterfaceCondition_OperatorSetNumber + MODULE PROCEDURE cmfe_InterfaceCondition_OperatorSetObj + END INTERFACE cmfe_InterfaceCondition_OperatorSet + + !>Returns the interface matrix time dependence type for interface equations. + INTERFACE cmfe_InterfaceEquations_MatrixTimeDependenceTypeGet + MODULE PROCEDURE cmfe_InterfaceEquations_MatrixTimeDependenceTypeGetNumber0 + MODULE PROCEDURE cmfe_InterfaceEquations_MatrixTimeDependenceTypeGetNumber1 + MODULE PROCEDURE cmfe_InterfaceEquations_MatrixTimeDependenceTypeGetObj0 + MODULE PROCEDURE cmfe_InterfaceEquations_MatrixTimeDependenceTypeGetObj1 + END INTERFACE cmfe_InterfaceEquations_MatrixTimeDependenceTypeGet + + !>Sets/changes the interface matrix time dependence type for interface equations. + INTERFACE cmfe_InterfaceEquations_MatrixTimeDependenceTypeSet + MODULE PROCEDURE cmfe_InterfaceEquations_MatrixTimeDependenceTypeSetNumber0 + MODULE PROCEDURE cmfe_InterfaceEquations_MatrixTimeDependenceTypeSetNumber1 + MODULE PROCEDURE cmfe_InterfaceEquations_MatrixTimeDependenceTypeSetObj0 + MODULE PROCEDURE cmfe_InterfaceEquations_MatrixTimeDependenceTypeSetObj1 + END INTERFACE cmfe_InterfaceEquations_MatrixTimeDependenceTypeSet + + !>Returns the output type for interface equations. + INTERFACE cmfe_InterfaceEquations_OutputTypeGet + MODULE PROCEDURE cmfe_InterfaceEquations_OutputTypeGetNumber + MODULE PROCEDURE cmfe_InterfaceEquations_OutputTypeGetObj + END INTERFACE cmfe_InterfaceEquations_OutputTypeGet + + !>Sets/changes the output type for interface equations. + INTERFACE cmfe_InterfaceEquations_OutputTypeSet + MODULE PROCEDURE cmfe_InterfaceEquations_OutputTypeSetNumber + MODULE PROCEDURE cmfe_InterfaceEquations_OutputTypeSetObj + END INTERFACE cmfe_InterfaceEquations_OutputTypeSet + + !>Returns the sparsity for interface equations. + INTERFACE cmfe_InterfaceEquations_SparsityGet + MODULE PROCEDURE cmfe_InterfaceEquations_SparsityGetNumber + MODULE PROCEDURE cmfe_InterfaceEquations_SparsityGetObj + END INTERFACE cmfe_InterfaceEquations_SparsityGet + + !>Sets/changes the sparsity for interface equations. + INTERFACE cmfe_InterfaceEquations_SparsitySet + MODULE PROCEDURE cmfe_InterfaceEquations_SparsitySetNumber + MODULE PROCEDURE cmfe_InterfaceEquations_SparsitySetObj + END INTERFACE cmfe_InterfaceEquations_SparsitySet - PUBLIC cmfe_EquationsSet_DerivedCreateFinish,cmfe_EquationsSet_DerivedCreateStart + PUBLIC CMFE_INTERFACE_CONDITION_LAGRANGE_MULTIPLIERS_METHOD,CMFE_INTERFACE_CONDITION_AUGMENTED_LAGRANGE_METHOD, & + & CMFE_INTERFACE_CONDITION_PENALTY_METHOD,CMFE_INTERFACE_CONDITION_POINT_TO_POINT_METHOD - PUBLIC cmfe_EquationsSet_DerivedDestroy + PUBLIC CMFE_INTERFACE_CONDITION_FIELD_CONTINUITY_OPERATOR,CMFE_INTERFACE_CONDITION_FIELD_NORMAL_CONTINUITY_OPERATOR, & + & CMFE_INTERFACE_CONDITION_FLS_CONTACT_OPERATOR,CMFE_INTERFACE_CONDITION_FLS_CONTACT_REPROJECT_OPERATOR, & + & CMFE_INTERFACE_CONDITION_SOLID_FLUID_OPERATOR,CMFE_INTERFACE_CONDITION_SOLID_FLUID_NORMAL_OPERATOR - PUBLIC cmfe_EquationsSet_DerivedVariableCalculate,cmfe_EquationsSet_DerivedVariableSet + PUBLIC CMFE_INTERFACE_CONDITION_GAUSS_INTEGRATION,CMFE_INTERFACE_CONDITION_DATA_POINTS_INTEGRATION - PUBLIC cmfe_EquationsSet_EquationsCreateFinish,cmfe_EquationsSet_EquationsCreateStart + PUBLIC CMFE_INTERFACE_CONDITION_NO_OUTPUT,CMFE_INTERFACE_CONDITION_PROGRESS_OUTPUT - PUBLIC cmfe_EquationsSet_EquationsDestroy + PUBLIC cmfe_InterfaceCondition_CreateFinish,cmfe_InterfaceCondition_CreateStart - PUBLIC cmfe_EquationsSet_IndependentCreateFinish,cmfe_EquationsSet_IndependentCreateStart + PUBLIC cmfe_InterfaceCondition_DependentVariableAdd - PUBLIC cmfe_EquationsSet_IndependentDestroy + PUBLIC cmfe_InterfaceCondition_Destroy - PUBLIC cmfe_EquationsSet_LabelGet,cmfe_EquationsSet_LabelSet + PUBLIC cmfe_InterfaceCondition_EquationsCreateFinish,cmfe_InterfaceCondition_EquationsCreateStart - PUBLIC cmfe_EquationsSet_MaterialsCreateFinish,cmfe_EquationsSet_MaterialsCreateStart + PUBLIC cmfe_InterfaceCondition_EquationsDestroy - PUBLIC cmfe_EquationsSet_MaterialsDestroy + PUBLIC cmfe_InterfaceCondition_IntegrationTypeGet,cmfe_InterfaceCondition_IntegrationTypeSet - PUBLIC cmfe_Equationsset_OutputTypeGet,cmfe_EquationsSet_OutputTypeSet + PUBLIC cmfe_InterfaceCondition_LagrangeFieldCreateFinish,cmfe_InterfaceCondition_LagrangeFieldCreateStart - PUBLIC cmfe_EquationsSet_SolutionMethodGet,cmfe_EquationsSet_SolutionMethodSet + PUBLIC cmfe_InterfaceCondition_LabelGet,cmfe_InterfaceCondition_LabelSet - PUBLIC cmfe_EquationsSet_SourceCreateFinish,cmfe_EquationsSet_SourceCreateStart + PUBLIC cmfe_InterfaceCondition_OutputTypeGet,cmfe_InterfaceCondition_OutputTypeSet - PUBLIC cmfe_EquationsSet_SourceDestroy + PUBLIC cmfe_InterfaceCondition_PenaltyFieldCreateFinish,cmfe_InterfaceCondition_PenaltyFieldCreateStart - PUBLIC cmfe_EquationsSet_SpecificationGet,cmfe_EquationsSet_SpecificationSizeGet + PUBLIC cmfe_InterfaceCondition_MethodGet,cmfe_InterfaceCondition_MethodSet - PUBLIC cmfe_EquationsSet_TensorInterpolateGaussPoint + PUBLIC cmfe_InterfaceCondition_OperatorGet,cmfe_InterfaceCondition_OperatorSet - PUBLIC cmfe_EquationsSet_TensorInterpolateXi + PUBLIC cmfe_InterfaceEquations_MatrixTimeDependenceTypeGet,cmfe_InterfaceEquations_MatrixTimeDependenceTypeSet - PUBLIC cmfe_EquationsSet_TimesGet,cmfe_EquationsSet_TimesSet + PUBLIC cmfe_InterfaceEquations_OutputTypeGet,cmfe_InterfaceEquations_OutputTypeSet - PUBLIC cmfe_EquationsSet_AnalyticUserParamSet,cmfe_EquationsSet_AnalyticUserParamGet + PUBLIC cmfe_InterfaceEquations_SparsityGet,cmfe_InterfaceEquations_SparsitySet -!!================================================================================================================================== -!! -!! FIELD_ROUTINES -!! -!!================================================================================================================================== +!================================================================================================================================== +! +! INTERFACE MATRICES ROUTINES +! +!================================================================================================================================== - !Module parameters + !Module parameters - !> \addtogroup OpenCMISS_FieldConstants OpenCMISS::Iron::Field::Constants - !> \brief Field constants. - !>@{ - !> \addtogroup OpenCMISS_FieldDependentTypes OpenCMISS::Iron::Field::DependentTypes - !> \brief Depedent field parameter types. - !> \see OpenCMISS::Iron::Field,OpenCMISS - !>@{ - INTEGER(INTG), PARAMETER :: CMFE_FIELD_INDEPENDENT_TYPE = FIELD_INDEPENDENT_TYPE !@} - !> \addtogroup OpenCMISS_FieldDimensionTypes OpenCMISS::Iron::Field::DimensionTypes - !> \brief Field dimension parameter types. - !> \see OpenCMISS::Iron::Field,OpenCMISS - !>@{ - INTEGER(INTG), PARAMETER :: CMFE_FIELD_SCALAR_DIMENSION_TYPE = FIELD_SCALAR_DIMENSION_TYPE !@} - !> \addtogroup OpenCMISS_FieldTypes OpenCMISS::Iron::Field::Types - !> \brief Field type parameters. - !> \see OpenCMISS::Iron::Field,OpenCMISS + !> \addtogroup OpenCMISS_InterfaceMatricesTimeDependenceTypes OpenCMISS::Iron::InterfaceMatrices::TimeDependenceTypes + !> \brief Interface matrices time dependency types + !> \see OpenCMISS::Iron::InterfaceEquations,OpenCMISS !>@{ - INTEGER(INTG), PARAMETER :: CMFE_FIELD_GEOMETRIC_TYPE = FIELD_GEOMETRIC_TYPE !@} - !> \addtogroup OpenCMISS_FieldInterpolationTypes OpenCMISS::Iron::Field::InterpolationTypes - !> \brief Field interpolation parameters. - !> \see OpenCMISS::Iron::Field,OpenCMISS - !>@{ - INTEGER(INTG), PARAMETER :: CMFE_FIELD_CONSTANT_INTERPOLATION = FIELD_CONSTANT_INTERPOLATION !@} - !> \addtogroup OpenCMISS_FieldVariableTypes OpenCMISS::Iron::Field::VariableTypes - !> \brief Field variable type parameters. - !> \see OpenCMISS::Iron::Field,OpenCMISS - !>@{ - INTEGER(INTG), PARAMETER :: CMFE_FIELD_NUMBER_OF_VARIABLE_SUBTYPES = FIELD_NUMBER_OF_VARIABLE_SUBTYPES !@} - !> \addtogroup OpenCMISS_FieldDataTypes OpenCMISS::Iron::Field::DataTypes - !> \brief Field data types - !> \see OpenCMISS::Iron::Field,OpenCMISS - !>@{ - INTEGER(INTG), PARAMETER :: CMFE_FIELD_INTG_TYPE = FIELD_INTG_TYPE !@} - !> \addtogroup OpenCMISS_FieldDOFOrderTypes OpenCMISS::Iron::Field::DOFOrderTypes - !> \brief Field DOF order types - !> \see OpenCMISS::Iron::Field,OpenCMISS - !>@{ - INTEGER(INTG), PARAMETER :: CMFE_FIELD_SEPARATED_COMPONENT_DOF_ORDER = FIELD_SEPARATED_COMPONENT_DOF_ORDER !@} - !> \addtogroup OpenCMISS_FieldParameterSetTypes OpenCMISS::Iron::Field::ParameterSetTypes - !> \brief Field parameter set type parameters - !> \see OpenCMISS::Iron::Field,OpenCMISS - !>@{ - INTEGER(INTG), PARAMETER :: CMFE_FIELD_VALUES_SET_TYPE = FIELD_VALUES_SET_TYPE !@} - !> \addtogroup OpenCMISS_FieldScalingTypes OpenCMISS::Iron::Field::ScalingTypes - !> \brief Field scaling type parameters - !> \see OpenCMISS::Iron::Field,OpenCMISS - !>@{ - INTEGER(INTG), PARAMETER :: CMFE_FIELD_NO_SCALING = FIELD_NO_SCALING !@} - !>@} - - !Module types - - !Module variables - - !Interfaces - - !>Returns the interpolation type for a field variable component. - INTERFACE cmfe_Field_ComponentInterpolationGet - MODULE PROCEDURE cmfe_Field_ComponentInterpolationGetNumber - MODULE PROCEDURE cmfe_Field_ComponentInterpolationGetObj - END INTERFACE cmfe_Field_ComponentInterpolationGet - - !>Sets/changes the interpolation type for a field variable component. - INTERFACE cmfe_Field_ComponentInterpolationSet - MODULE PROCEDURE cmfe_Field_ComponentInterpolationSetNumber - MODULE PROCEDURE cmfe_Field_ComponentInterpolationSetObj - END INTERFACE cmfe_Field_ComponentInterpolationSet - - !>Returns the label for a field variable component. - INTERFACE cmfe_Field_ComponentLabelGet - MODULE PROCEDURE cmfe_Field_ComponentLabelGetCNumber - MODULE PROCEDURE cmfe_Field_ComponentLabelGetCObj - MODULE PROCEDURE cmfe_Field_ComponentLabelGetVSNumber - MODULE PROCEDURE cmfe_Field_ComponentLabelGetVSObj - END INTERFACE cmfe_Field_ComponentLabelGet - - !>Sets/changes the label for a field variable component. - INTERFACE cmfe_Field_ComponentLabelSet - MODULE PROCEDURE cmfe_Field_ComponentLabelSetCNumber - MODULE PROCEDURE cmfe_Field_ComponentLabelSetCObj - MODULE PROCEDURE cmfe_Field_ComponentLabelSetVSNumber - MODULE PROCEDURE cmfe_Field_ComponentLabelSetVSObj - END INTERFACE cmfe_Field_ComponentLabelSet - - !>Returns the mesh component number for a field variable component. - INTERFACE cmfe_Field_ComponentMeshComponentGet - MODULE PROCEDURE cmfe_Field_ComponentMeshComponentGetNumber - MODULE PROCEDURE cmfe_Field_ComponentMeshComponentGetObj - END INTERFACE cmfe_Field_ComponentMeshComponentGet - - !>Sets/changes the mesh component number for a field variable component. - INTERFACE cmfe_Field_ComponentMeshComponentSet - MODULE PROCEDURE cmfe_Field_ComponentMeshComponentSetNumber - MODULE PROCEDURE cmfe_Field_ComponentMeshComponentSetObj - END INTERFACE cmfe_Field_ComponentMeshComponentSet - - !>Initialises the values of a parameter set of a field variable component to a constant value. - INTERFACE cmfe_Field_ComponentValuesInitialise - MODULE PROCEDURE cmfe_Field_ComponentValuesInitialiseIntgNumber - MODULE PROCEDURE cmfe_Field_ComponentValuesInitialiseIntgObj - MODULE PROCEDURE cmfe_Field_ComponentValuesInitialiseSPNumber - MODULE PROCEDURE cmfe_Field_ComponentValuesInitialiseSPObj - MODULE PROCEDURE cmfe_Field_ComponentValuesInitialiseDPNumber - MODULE PROCEDURE cmfe_Field_ComponentValuesInitialiseDPObj - MODULE PROCEDURE cmfe_Field_ComponentValuesInitialiseLNumber - MODULE PROCEDURE cmfe_Field_ComponentValuesInitialiseLObj - END INTERFACE cmfe_Field_ComponentValuesInitialise - - !>Returns the data type for a field variable. - INTERFACE cmfe_Field_DataTypeGet - MODULE PROCEDURE cmfe_Field_DataTypeGetNumber - MODULE PROCEDURE cmfe_Field_DataTypeGetObj - END INTERFACE cmfe_Field_DataTypeGet - - !>Sets/changes the data type for a field variable. - INTERFACE cmfe_Field_DataTypeSet - MODULE PROCEDURE cmfe_Field_DataTypeSetNumber - MODULE PROCEDURE cmfe_Field_DataTypeSetObj - END INTERFACE cmfe_Field_DataTypeSet - - !>Returns the DOF order type for a field variable. - INTERFACE cmfe_Field_DOFOrderTypeGet - MODULE PROCEDURE cmfe_Field_DOFOrderTypeGetNumber - MODULE PROCEDURE cmfe_Field_DOFOrderTypeGetObj - END INTERFACE cmfe_Field_DOFOrderTypeGet - - !>Sets/changes the DOF order type for a field variable. Note: for contiguous coponent DOF ordering all the components of the field variable must have the same interpolation type. - INTERFACE cmfe_Field_DOFOrderTypeSet - MODULE PROCEDURE cmfe_Field_DOFOrderTypeSetNumber - MODULE PROCEDURE cmfe_Field_DOFOrderTypeSetObj - END INTERFACE cmfe_Field_DOFOrderTypeSet - - !>Finishes the creation of a field. \see OpenCMISS::Iron::cmfe_Field_CreateStart - INTERFACE cmfe_Field_CreateFinish - MODULE PROCEDURE cmfe_Field_CreateFinishNumber - MODULE PROCEDURE cmfe_Field_CreateFinishObj - END INTERFACE cmfe_Field_CreateFinish - - !>Starts the creation of a field. \see OpenCMISS::Iron::cmfe_Field_CreateFinish - INTERFACE cmfe_Field_CreateStart - MODULE PROCEDURE cmfe_Field_CreateStartNumber - MODULE PROCEDURE cmfe_Field_CreateStartInterfaceObj - MODULE PROCEDURE cmfe_Field_CreateStartRegionObj - END INTERFACE cmfe_Field_CreateStart - - !>Returns the dependent type for a field. - INTERFACE cmfe_Field_DependentTypeGet - MODULE PROCEDURE cmfe_Field_DependentTypeGetNumber - MODULE PROCEDURE cmfe_Field_DependentTypeGetObj - END INTERFACE cmfe_Field_DependentTypeGet - - !>Sets/changes the dependent type for a field. - INTERFACE cmfe_Field_DependentTypeSet - MODULE PROCEDURE cmfe_Field_DependentTypeSetNumber - MODULE PROCEDURE cmfe_Field_DependentTypeSetObj - END INTERFACE cmfe_Field_DependentTypeSet - - !>Destroys a field. - INTERFACE cmfe_Field_Destroy - MODULE PROCEDURE cmfe_Field_DestroyNumber - MODULE PROCEDURE cmfe_Field_DestroyObj - END INTERFACE cmfe_Field_Destroy - - !>Returns the field dimension for a field variable. - INTERFACE cmfe_Field_DimensionGet - MODULE PROCEDURE cmfe_Field_DimensionGetNumber - MODULE PROCEDURE cmfe_Field_DimensionGetObj - END INTERFACE cmfe_Field_DimensionGet - - !>Sets/changes the field dimension for a field variable. - INTERFACE cmfe_Field_DimensionSet - MODULE PROCEDURE cmfe_Field_DimensionSetNumber - MODULE PROCEDURE cmfe_Field_DimensionSetObj - END INTERFACE cmfe_Field_DimensionSet - - !>Returns the geometric field for a field. - INTERFACE cmfe_Field_GeometricFieldGet - MODULE PROCEDURE cmfe_Field_GeometricFieldGetNumber - MODULE PROCEDURE cmfe_Field_GeometricFieldGetObj - END INTERFACE cmfe_Field_GeometricFieldGet - - !>Sets/changes the geometric field for a field. - INTERFACE cmfe_Field_GeometricFieldSet - MODULE PROCEDURE cmfe_Field_GeometricFieldSetNumber - MODULE PROCEDURE cmfe_Field_GeometricFieldSetObj - END INTERFACE cmfe_Field_GeometricFieldSet - - !>Gets line lengths from a geometric field given an element number and element basis line number. - INTERFACE cmfe_Field_GeometricParametersElementLineLengthGet - MODULE PROCEDURE cmfe_Field_GeometricParametersElementLineLengthGetNumber - MODULE PROCEDURE cmfe_Field_GeometricParametersElementLineLengthGetObj - END INTERFACE cmfe_Field_GeometricParametersElementLineLengthGet - - !>Gets volumes from a geometric field given an element number. - INTERFACE cmfe_Field_GeometricParametersElementVolumeGet - MODULE PROCEDURE cmfe_Field_GeometricParametersElementVolumeGetNumber - MODULE PROCEDURE cmfe_Field_GeometricParametersElementVolumeGetObj - END INTERFACE cmfe_Field_GeometricParametersElementVolumeGet - - !>Returns the label for a field. - INTERFACE cmfe_Field_LabelGet - MODULE PROCEDURE cmfe_Field_LabelGetCNumber - MODULE PROCEDURE cmfe_Field_LabelGetCObj - MODULE PROCEDURE cmfe_Field_LabelGetVSNumber - MODULE PROCEDURE cmfe_Field_LabelGetVSObj - END INTERFACE cmfe_Field_LabelGet - - !>Sets/changes the label for a field. - INTERFACE cmfe_Field_LabelSet - MODULE PROCEDURE cmfe_Field_LabelSetCNumber - MODULE PROCEDURE cmfe_Field_LabelSetCObj - MODULE PROCEDURE cmfe_Field_LabelSetVSNumber - MODULE PROCEDURE cmfe_Field_LabelSetVSObj - END INTERFACE cmfe_Field_LabelSet - - INTERFACE cmfe_Field_PositionNormalTangentCalculateNode - MODULE PROCEDURE cmfe_Field_PositionNormalTangentCalculateNodeNumber - MODULE PROCEDURE cmfe_Field_PositionNormalTangentCalculateNodeObj - END INTERFACE + INTEGER(INTG), PARAMETER :: CMFE_INTERFACE_MATRIX_STATIC=INTERFACE_MATRIX_STATIC !@} - !>Returns the mesh decomposition for a field. - INTERFACE cmfe_Field_MeshDecompositionGet - MODULE PROCEDURE cmfe_Field_MeshDecompositionGetNumber - MODULE PROCEDURE cmfe_Field_MeshDecompositionGetObj - END INTERFACE cmfe_Field_MeshDecompositionGet - - !>Sets/changes the mesh decomposition for a field. \todo remove when fields take decomposition argument on creation??? - INTERFACE cmfe_Field_MeshDecompositionSet - MODULE PROCEDURE cmfe_Field_MeshDecompositionSetNumber - MODULE PROCEDURE cmfe_Field_MeshDecompositionSetObj - END INTERFACE cmfe_Field_MeshDecompositionSet - - !>Sets/changes the data projection for a field. - INTERFACE cmfe_Field_DataProjectionSet - MODULE PROCEDURE cmfe_Field_DataProjectionSetNumber - MODULE PROCEDURE cmfe_Field_DataProjectionSetObj - END INTERFACE cmfe_Field_DataProjectionSet - - !>Returns the number of field components for a field variable. - INTERFACE cmfe_Field_NumberOfComponentsGet - MODULE PROCEDURE cmfe_Field_NumberOfComponentsGetNumber - MODULE PROCEDURE cmfe_Field_NumberOfComponentsGetObj - END INTERFACE cmfe_Field_NumberOfComponentsGet - - !>Sets/changes the number of field components for a field variable. - INTERFACE cmfe_Field_NumberOfComponentsSet - MODULE PROCEDURE cmfe_Field_NumberOfComponentsSetNumber - MODULE PROCEDURE cmfe_Field_NumberOfComponentsSetObj - END INTERFACE cmfe_Field_NumberOfComponentsSet - - !>Returns the number of field variables for a field. - INTERFACE cmfe_Field_NumberOfVariablesGet - MODULE PROCEDURE cmfe_Field_NumberOfVariablesGetNumber - MODULE PROCEDURE cmfe_Field_NumberOfVariablesGetObj - END INTERFACE cmfe_Field_NumberOfVariablesGet - - !>Sets/changes the number of field variables for a field. - INTERFACE cmfe_Field_NumberOfVariablesSet - MODULE PROCEDURE cmfe_Field_NumberOfVariablesSetNumber - MODULE PROCEDURE cmfe_Field_NumberOfVariablesSetObj - END INTERFACE cmfe_Field_NumberOfVariablesSet - - !>Adds the given value to the given parameter set for the constant of the field variable component. - INTERFACE cmfe_Field_ParameterSetAddConstant - MODULE PROCEDURE cmfe_Field_ParameterSetAddConstantIntgNumber - MODULE PROCEDURE cmfe_Field_ParameterSetAddConstantIntgObj - MODULE PROCEDURE cmfe_Field_ParameterSetAddConstantSPNumber - MODULE PROCEDURE cmfe_Field_ParameterSetAddConstantSPObj - MODULE PROCEDURE cmfe_Field_ParameterSetAddConstantDPNumber - MODULE PROCEDURE cmfe_Field_ParameterSetAddConstantDPObj - MODULE PROCEDURE cmfe_Field_ParameterSetAddConstantLNumber - MODULE PROCEDURE cmfe_Field_ParameterSetAddConstantLObj - END INTERFACE cmfe_Field_ParameterSetAddConstant - - !>Adds the given value to the given parameter set for a particular user element of the field variable component. - INTERFACE cmfe_Field_ParameterSetAddElement - MODULE PROCEDURE cmfe_Field_ParameterSetAddElementIntgNumber - MODULE PROCEDURE cmfe_Field_ParameterSetAddElementIntgObj - MODULE PROCEDURE cmfe_Field_ParameterSetAddElementSPNumber - MODULE PROCEDURE cmfe_Field_ParameterSetAddElementSPObj - MODULE PROCEDURE cmfe_Field_ParameterSetAddElementDPNumber - MODULE PROCEDURE cmfe_Field_ParameterSetAddElementDPObj - MODULE PROCEDURE cmfe_Field_ParameterSetAddElementLNumber - MODULE PROCEDURE cmfe_Field_ParameterSetAddElementLObj - END INTERFACE cmfe_Field_ParameterSetAddElement - - !>Adds the given value to the given parameter set for a particular Gauss point of a user element of the field variable component. - INTERFACE cmfe_Field_ParameterSetAddGaussPoint - MODULE PROCEDURE cmfe_Field_ParameterSetAddGaussPointIntgNumber - MODULE PROCEDURE cmfe_Field_ParameterSetAddGaussPointIntgObj - MODULE PROCEDURE cmfe_Field_ParameterSetAddGaussPointSPNumber - MODULE PROCEDURE cmfe_Field_ParameterSetAddGaussPointSPObj - MODULE PROCEDURE cmfe_Field_ParameterSetAddGaussPointDPNumber - MODULE PROCEDURE cmfe_Field_ParameterSetAddGaussPointDPObj - MODULE PROCEDURE cmfe_Field_ParameterSetAddGaussPointLNumber - MODULE PROCEDURE cmfe_Field_ParameterSetAddGaussPointLObj - END INTERFACE cmfe_Field_ParameterSetAddGaussPoint - - !>Adds the given value to the given parameter set for a particular user node of the field variable component. - INTERFACE cmfe_Field_ParameterSetAddNode - MODULE PROCEDURE cmfe_Field_ParameterSetAddNodeIntgNumber - MODULE PROCEDURE cmfe_Field_ParameterSetAddNodeIntgObj - MODULE PROCEDURE cmfe_Field_ParameterSetAddNodeSPNumber - MODULE PROCEDURE cmfe_Field_ParameterSetAddNodeSPObj - MODULE PROCEDURE cmfe_Field_ParameterSetAddNodeDPNumber - MODULE PROCEDURE cmfe_Field_ParameterSetAddNodeDPObj - MODULE PROCEDURE cmfe_Field_ParameterSetAddNodeLNumber - MODULE PROCEDURE cmfe_Field_ParameterSetAddNodeLObj - END INTERFACE cmfe_Field_ParameterSetAddNode - - !>Creates a new parameter set of type set type for a field variable. - INTERFACE cmfe_Field_ParameterSetCreate - MODULE PROCEDURE cmfe_Field_ParameterSetCreateNumber - MODULE PROCEDURE cmfe_Field_ParameterSetCreateObj - END INTERFACE cmfe_Field_ParameterSetCreate - - !>Destroy a parameter set of type set type for a field variable. - INTERFACE cmfe_Field_ParameterSetDestroy - MODULE PROCEDURE cmfe_Field_ParameterSetDestroyNumber - MODULE PROCEDURE cmfe_Field_ParameterSetDestroyObj - END INTERFACE cmfe_Field_ParameterSetDestroy - - !>Returns a pointer to the specified field parameter set local data array. The pointer must be restored with a call to OpenCMISS::Iron::cmfe_Field_ParameterSetDataRestore call. Note: the values can be used for read operations but a field parameter set update or add calls must be used to change any values. - INTERFACE cmfe_Field_ParameterSetDataGet - MODULE PROCEDURE cmfe_Field_ParameterSetDataGetIntgNumber - MODULE PROCEDURE cmfe_Field_ParameterSetDataGetIntgObj - MODULE PROCEDURE cmfe_Field_ParameterSetDataGetSPNumber - MODULE PROCEDURE cmfe_Field_ParameterSetDataGetSPObj - MODULE PROCEDURE cmfe_Field_ParameterSetDataGetDPNumber - MODULE PROCEDURE cmfe_Field_ParameterSetDataGetDPObj - MODULE PROCEDURE cmfe_Field_ParameterSetDataGetLNumber - MODULE PROCEDURE cmfe_Field_ParameterSetDataGetLObj - END INTERFACE cmfe_Field_ParameterSetDataGet - - !>Restores the specified field variable parameter set local array that was obtained with an OpenCMISS::Iron::cmfe_Field_ParameterSetDataGet call. - INTERFACE cmfe_Field_ParameterSetDataRestore - MODULE PROCEDURE cmfe_Field_ParameterSetDataRestoreIntgNumber - MODULE PROCEDURE cmfe_Field_ParameterSetDataRestoreIntgObj - MODULE PROCEDURE cmfe_Field_ParameterSetDataRestoreSPNumber - MODULE PROCEDURE cmfe_Field_ParameterSetDataRestoreSPObj - MODULE PROCEDURE cmfe_Field_ParameterSetDataRestoreDPNumber - MODULE PROCEDURE cmfe_Field_ParameterSetDataRestoreDPObj - MODULE PROCEDURE cmfe_Field_ParameterSetDataRestoreLNumber - MODULE PROCEDURE cmfe_Field_ParameterSetDataRestoreLObj - END INTERFACE cmfe_Field_ParameterSetDataRestore - - !>Returns from the given parameter set a value for the specified constant of a field variable component. - INTERFACE cmfe_Field_ParameterSetGetConstant - MODULE PROCEDURE cmfe_Field_ParameterSetGetConstantIntgNumber - MODULE PROCEDURE cmfe_Field_ParameterSetGetConstantIntgObj - MODULE PROCEDURE cmfe_Field_ParameterSetGetConstantSPNumber - MODULE PROCEDURE cmfe_Field_ParameterSetGetConstantSPObj - MODULE PROCEDURE cmfe_Field_ParameterSetGetConstantDPNumber - MODULE PROCEDURE cmfe_Field_ParameterSetGetConstantDPObj - MODULE PROCEDURE cmfe_Field_ParameterSetGetConstantLNumber - MODULE PROCEDURE cmfe_Field_ParameterSetGetConstantLObj - END INTERFACE cmfe_Field_ParameterSetGetConstant - - !>Returns from the given parameter set a value for the specified data pont of a field variable component. - INTERFACE cmfe_Field_ParameterSetGetDataPoint - MODULE PROCEDURE cmfe_Field_ParameterSetGetDataPointIntgNumberI !Interface - MODULE PROCEDURE cmfe_Field_ParameterSetGetDataPointIntgNumberR !Region - MODULE PROCEDURE cmfe_Field_ParameterSetGetDataPointIntgObj - MODULE PROCEDURE cmfe_Field_ParameterSetGetDataPointSPNumberI !Interface - MODULE PROCEDURE cmfe_Field_ParameterSetGetDataPointSPNumberR !Region - MODULE PROCEDURE cmfe_Field_ParameterSetGetDataPointSPObj - MODULE PROCEDURE cmfe_Field_ParameterSetGetDataPointDPNumberI !Interface - MODULE PROCEDURE cmfe_Field_ParameterSetGetDataPointDPNumberR !Region - MODULE PROCEDURE cmfe_Field_ParameterSetGetDataPointDPObj - MODULE PROCEDURE cmfe_Field_ParameterSetGetDataPointLNumberI !Interface - MODULE PROCEDURE cmfe_Field_ParameterSetGetDataPointLNumberR !Region - MODULE PROCEDURE cmfe_Field_ParameterSetGetDataPointLObj - END INTERFACE cmfe_Field_ParameterSetGetDataPoint - - !>Returns from the given parameter set a value for the specified element of a field variable component. - INTERFACE cmfe_Field_ParameterSetGetElement - MODULE PROCEDURE cmfe_Field_ParameterSetGetElementIntgNumber - MODULE PROCEDURE cmfe_Field_ParameterSetGetElementIntgObj - MODULE PROCEDURE cmfe_Field_ParameterSetGetElementSPNumber - MODULE PROCEDURE cmfe_Field_ParameterSetGetElementSPObj - MODULE PROCEDURE cmfe_Field_ParameterSetGetElementDPNumber - MODULE PROCEDURE cmfe_Field_ParameterSetGetElementDPObj - MODULE PROCEDURE cmfe_Field_ParameterSetGetElementLNumber - MODULE PROCEDURE cmfe_Field_ParameterSetGetElementLObj - END INTERFACE cmfe_Field_ParameterSetGetElement - - !>Returns from the given parameter set a value for the specified node and derivative of a field variable component. - INTERFACE cmfe_Field_ParameterSetGetNode - MODULE PROCEDURE cmfe_Field_ParameterSetGetNodeIntgNumber - MODULE PROCEDURE cmfe_Field_ParameterSetGetNodeIntgObj - MODULE PROCEDURE cmfe_Field_ParameterSetGetNodeSPNumber - MODULE PROCEDURE cmfe_Field_ParameterSetGetNodeSPObj - MODULE PROCEDURE cmfe_Field_ParameterSetGetNodeDPNumber - MODULE PROCEDURE cmfe_Field_ParameterSetGetNodeDPObj - MODULE PROCEDURE cmfe_Field_ParameterSetGetNodeLNumber - MODULE PROCEDURE cmfe_Field_ParameterSetGetNodeLObj - END INTERFACE cmfe_Field_ParameterSetGetNode - - !>Returns from the given parameter set a value for the specified element and Gauss point of a field variable component. - INTERFACE cmfe_Field_ParameterSetGetGaussPoint ! TODO: other versions - MODULE PROCEDURE cmfe_Field_ParameterSetGetGaussPointDPObj - END INTERFACE cmfe_Field_ParameterSetGetGaussPoint - - !>Updates the given parameter set with the given value for the constant of a field variable component. - INTERFACE cmfe_Field_ParameterSetUpdateConstant - MODULE PROCEDURE cmfe_Field_ParameterSetUpdateConstantIntgNumber - MODULE PROCEDURE cmfe_Field_ParameterSetUpdateConstantIntgObj - MODULE PROCEDURE cmfe_Field_ParameterSetUpdateConstantSPNumber - MODULE PROCEDURE cmfe_Field_ParameterSetUpdateConstantSPObj - MODULE PROCEDURE cmfe_Field_ParameterSetUpdateConstantDPNumber - MODULE PROCEDURE cmfe_Field_ParameterSetUpdateConstantDPObj - MODULE PROCEDURE cmfe_Field_ParameterSetUpdateConstantLNumber - MODULE PROCEDURE cmfe_Field_ParameterSetUpdateConstantLObj - END INTERFACE cmfe_Field_ParameterSetUpdateConstant - - !>Update the given parameter set a value for the specified data pont of a field variable component. - INTERFACE cmfe_Field_ParameterSetUpdateDataPoint - MODULE PROCEDURE cmfe_Field_ParameterSetUpdateDataPointIntgNumberI !Interface - MODULE PROCEDURE cmfe_Field_ParameterSetUpdateDataPointIntgNumberR !Region - MODULE PROCEDURE cmfe_Field_ParameterSetUpdateDataPointIntgObj - MODULE PROCEDURE cmfe_Field_ParameterSetUpdateDataPointSPNumberI !Interface - MODULE PROCEDURE cmfe_Field_ParameterSetUpdateDataPointSPNumberR !Region - MODULE PROCEDURE cmfe_Field_ParameterSetUpdateDataPointSPObj - MODULE PROCEDURE cmfe_Field_ParameterSetUpdateDataPointDPNumberI !Interface - MODULE PROCEDURE cmfe_Field_ParameterSetUpdateDataPointDPNumberR !Region - MODULE PROCEDURE cmfe_Field_ParameterSetUpdateDataPointDPObj - MODULE PROCEDURE cmfe_Field_ParameterSetUpdateDataPointLNumberI !Interface - MODULE PROCEDURE cmfe_Field_ParameterSetUpdateDataPointLNumberR !Region - MODULE PROCEDURE cmfe_Field_ParameterSetUpdateDataPointLObj - END INTERFACE cmfe_Field_ParameterSetUpdateDataPoint - - !>Updates the given parameter set with the given value for a particular user element of a field variable component. - INTERFACE cmfe_Field_ParameterSetUpdateElement - MODULE PROCEDURE cmfe_Field_ParameterSetUpdateElementIntgNumber - MODULE PROCEDURE cmfe_Field_ParameterSetUpdateElementIntgObj - MODULE PROCEDURE cmfe_Field_ParameterSetUpdateElementSPNumber - MODULE PROCEDURE cmfe_Field_ParameterSetUpdateElementSPObj - MODULE PROCEDURE cmfe_Field_ParameterSetUpdateElementDPNumber - MODULE PROCEDURE cmfe_Field_ParameterSetUpdateElementDPObj - MODULE PROCEDURE cmfe_Field_ParameterSetUpdateElementLNumber - MODULE PROCEDURE cmfe_Field_ParameterSetUpdateElementLObj - END INTERFACE cmfe_Field_ParameterSetUpdateElement - - !>Finishes the parameter set update for a field variable. \see OpenCMISS::Iron::cmfe_Field_ParameterSetUpdateStart - INTERFACE cmfe_Field_ParameterSetUpdateFinish - MODULE PROCEDURE cmfe_Field_ParameterSetUpdateFinishNumber - MODULE PROCEDURE cmfe_Field_ParameterSetUpdateFinishObj - END INTERFACE cmfe_Field_ParameterSetUpdateFinish - - !>Updates the given parameter set with the given value for a particular user node of a field variable component. - INTERFACE cmfe_Field_ParameterSetUpdateNode - MODULE PROCEDURE cmfe_Field_ParameterSetUpdateNodeIntgNumber - MODULE PROCEDURE cmfe_Field_ParameterSetUpdateNodeIntgObj - MODULE PROCEDURE cmfe_Field_ParameterSetUpdateNodeSPNumber - MODULE PROCEDURE cmfe_Field_ParameterSetUpdateNodeSPObj - MODULE PROCEDURE cmfe_Field_ParameterSetUpdateNodeDPNumber - MODULE PROCEDURE cmfe_Field_ParameterSetUpdateNodeDPObj - MODULE PROCEDURE cmfe_Field_ParameterSetUpdateNodeLNumber - MODULE PROCEDURE cmfe_Field_ParameterSetUpdateNodeLObj - END INTERFACE cmfe_Field_ParameterSetUpdateNode - - !\todo: merge the two types of routines for getting scalefactors under the same interface declaration? - !>Gets a scale factor for a particular node. - INTERFACE cmfe_Field_ParameterSetNodeScaleFactorGet - MODULE PROCEDURE cmfe_Field_ParameterSetNodeScaleFactorGetNumber - MODULE PROCEDURE cmfe_Field_ParameterSetNodeScaleFactorGetObj - END INTERFACE cmfe_Field_ParameterSetNodeScaleFactorGet - - !>Gets the scale factors for all nodes - INTERFACE cmfe_Field_ParameterSetNodeScaleFactorsGet - MODULE PROCEDURE cmfe_Field_ParameterSetNodeScaleFactorsGetNumber - MODULE PROCEDURE cmfe_Field_ParameterSetNodeScaleFactorsGetObj - END INTERFACE cmfe_Field_ParameterSetNodeScaleFactorsGet - - !>Sets a scale factor for a particular node. - INTERFACE cmfe_Field_ParameterSetNodeScaleFactorSet - MODULE PROCEDURE cmfe_Field_ParameterSetNodeScaleFactorSetNumber - MODULE PROCEDURE cmfe_Field_ParameterSetNodeScaleFactorSetObj - END INTERFACE cmfe_Field_ParameterSetNodeScaleFactorSet - - !>Sets the scale factors for all nodes - INTERFACE cmfe_Field_ParameterSetNodeScaleFactorsSet - MODULE PROCEDURE cmfe_Field_ParameterSetNodeScaleFactorsSetNumber - MODULE PROCEDURE cmfe_Field_ParameterSetNodeScaleFactorsSetObj - END INTERFACE cmfe_Field_ParameterSetNodeScaleFactorsSet - - !>Gets the number of scalefactor dofs - INTERFACE cmfe_Field_ParameterSetNodeNumberOfScaleFactorDofsGet - MODULE PROCEDURE cmfe_Field_ParameterSetNodeNumberOfScaleFactorDofsGetNumber - MODULE PROCEDURE cmfe_Field_ParameterSetNodeNumberOfScaleFactorDofsGetObj - END INTERFACE cmfe_Field_ParameterSetNodeNumberOfScaleFactorDofsGet - - !>Updates the given parameter set with the given values for all local dofs of the field variable. - INTERFACE cmfe_Field_ParameterSetUpdateLocalDofs - MODULE PROCEDURE cmfe_Field_ParameterSetUpdateLocalDofsDPObj - !\todo: add Intg/SP/L routines, both indexed by Number and Obj - END INTERFACE cmfe_Field_ParameterSetUpdateLocalDofs - - !>Updates the given parameter set with the given value for a particular Gauss point of a field variable component. - INTERFACE cmfe_Field_ParameterSetUpdateGaussPoint - MODULE PROCEDURE cmfe_Field_ParameterSetUpdateGaussPointIntgNumber - MODULE PROCEDURE cmfe_Field_ParameterSetUpdateGaussPointIntgObj - MODULE PROCEDURE cmfe_Field_ParameterSetUpdateGaussPointSPNumber - MODULE PROCEDURE cmfe_Field_ParameterSetUpdateGaussPointSPObj - MODULE PROCEDURE cmfe_Field_ParameterSetUpdateGaussPointDPNumber - MODULE PROCEDURE cmfe_Field_ParameterSetUpdateGaussPointDPObj - MODULE PROCEDURE cmfe_Field_ParameterSetUpdateGaussPointLNumber - MODULE PROCEDURE cmfe_Field_ParameterSetUpdateGaussPointLObj - END INTERFACE cmfe_Field_ParameterSetUpdateGaussPoint - - !>Interpolates the given parameter set at a specified xi/set of xi locations for specified element and derviative. - INTERFACE cmfe_Field_ParameterSetInterpolateXi - MODULE PROCEDURE cmfe_Field_ParameterSetInterpolateSingleXiDPNumber - MODULE PROCEDURE cmfe_Field_ParameterSetInterpolateSingleXiDPObj - MODULE PROCEDURE cmfe_Field_ParameterSetInterpolateMultipleXiDPNumber - MODULE PROCEDURE cmfe_Field_ParameterSetInterpolateMultipleXiDPObj - END INTERFACE cmfe_Field_ParameterSetInterpolateXi - - !>Interpolates the given parameter set at a specified set of Gauss points for specified element and derviative. When interpolating at multiple Gauss points, if no Gauss points are specified then all Gauss points are interpolated. - INTERFACE cmfe_Field_ParameterSetInterpolateGauss - MODULE PROCEDURE cmfe_Field_ParameterSetInterpolateSingleGaussDPNumber - MODULE PROCEDURE cmfe_Field_ParameterSetInterpolateSingleGaussDPObj - MODULE PROCEDURE cmfe_Field_ParameterSetInterpolateMultipleGaussDPNumber - MODULE PROCEDURE cmfe_Field_ParameterSetInterpolateMultipleGaussDPObj - END INTERFACE cmfe_Field_ParameterSetInterpolateGauss - - !>Updates the given parameter set with the given value for a particular data point of a field variable component. - INTERFACE cmfe_Field_ParameterSetUpdateElementDataPoint - MODULE PROCEDURE cmfe_Field_ParameterSetUpdateElementDataPointDPObj - END INTERFACE cmfe_Field_ParameterSetUpdateElementDataPoint - - !>Starts the parameter set update for a field variable. \see OpenCMISS::Iron::cmfe_Field_ParameterSetUpdateFinish - INTERFACE cmfe_Field_ParameterSetUpdateStart - MODULE PROCEDURE cmfe_Field_ParameterSetUpdateStartNumber - MODULE PROCEDURE cmfe_Field_ParameterSetUpdateStartObj - END INTERFACE cmfe_Field_ParameterSetUpdateStart + !Module types - !>Copy the parameters from the parameter set of a component of a field variable to the paramters of a parameter set of - !>a component of another field variable. - INTERFACE cmfe_Field_ParametersToFieldParametersComponentCopy - MODULE PROCEDURE cmfe_Field_ParametersToFieldParametersComponentCopyNumber - MODULE PROCEDURE cmfe_Field_ParametersToFieldParametersComponentCopyObj - END INTERFACE cmfe_Field_ParametersToFieldParametersComponentCopy - - !>Returns the scaling type for a field. - INTERFACE cmfe_Field_ScalingTypeGet - MODULE PROCEDURE cmfe_Field_ScalingTypeGetNumber - MODULE PROCEDURE cmfe_Field_ScalingTypeGetObj - END INTERFACE cmfe_Field_ScalingTypeGet - - !>Sets/changes the scaling type for a field. - INTERFACE cmfe_Field_ScalingTypeSet - MODULE PROCEDURE cmfe_Field_ScalingTypeSetNumber - MODULE PROCEDURE cmfe_Field_ScalingTypeSetObj - END INTERFACE cmfe_Field_ScalingTypeSet - - !>Returns the type for a field. - INTERFACE cmfe_Field_TypeGet - MODULE PROCEDURE cmfe_Field_TypeGetNumber - MODULE PROCEDURE cmfe_Field_TypeGetObj - END INTERFACE cmfe_Field_TypeGet - - !>Sets/changes the type for a field. - INTERFACE cmfe_Field_TypeSet - MODULE PROCEDURE cmfe_Field_TypeSetNumber - MODULE PROCEDURE cmfe_Field_TypeSetObj - END INTERFACE cmfe_Field_TypeSet - - !>Returns the label for a field variable. - INTERFACE cmfe_Field_VariableLabelGet - MODULE PROCEDURE cmfe_Field_VariableLabelGetCNumber - MODULE PROCEDURE cmfe_Field_VariableLabelGetCObj - MODULE PROCEDURE cmfe_Field_VariableLabelGetVSNumber - MODULE PROCEDURE cmfe_Field_VariableLabelGetVSObj - END INTERFACE cmfe_Field_VariableLabelGet - - !>Sets/changes the label for a field variable. - INTERFACE cmfe_Field_VariableLabelSet - MODULE PROCEDURE cmfe_Field_VariableLabelSetCNumber - MODULE PROCEDURE cmfe_Field_VariableLabelSetCObj - MODULE PROCEDURE cmfe_Field_VariableLabelSetVSNumber - MODULE PROCEDURE cmfe_Field_VariableLabelSetVSObj - END INTERFACE cmfe_Field_VariableLabelSet - - !>Returns the field variable types for a field. - INTERFACE cmfe_Field_VariableTypesGet - MODULE PROCEDURE cmfe_Field_VariableTypesGetNumber - MODULE PROCEDURE cmfe_Field_VariableTypesGetObj - END INTERFACE cmfe_Field_VariableTypesGet - - !>Sets/changes the field variable types for a field. - INTERFACE cmfe_Field_VariableTypesSet - MODULE PROCEDURE cmfe_Field_VariableTypesSetNumber - MODULE PROCEDURE cmfe_Field_VariableTypesSetObj - END INTERFACE cmfe_Field_VariableTypesSet + !Module variables + !Interfaces - PUBLIC CMFE_FIELD_DEPENDENT_TYPE,CMFE_FIELD_INDEPENDENT_TYPE + PUBLIC CMFE_INTERFACE_MATRIX_STATIC,CMFE_INTERFACE_MATRIX_QUASI_STATIC,CMFE_INTERFACE_MATRIX_FIRST_ORDER_DYNAMIC, & + & CMFE_INTERFACE_MATRIX_SECOND_ORDER_DYNAMIC - PUBLIC CMFE_FIELD_SCALAR_DIMENSION_TYPE,CMFE_FIELD_VECTOR_DIMENSION_TYPE,CMFE_FIELD_TENSOR_DIMENSION_TYPE +!================================================================================================================================== +! +! MESH_ROUTINES +! +!================================================================================================================================== + + !Module parameters + + !> \addtogroup OpenCMISS_MeshConstants OpenCMISS::Iron::Mesh::Constants + !> \brief Mesh constants. + !>@{ + !> \addtogroup OpenCMISS_DecompositionTypes OpenCMISS::Iron::Mesh::DecompositionTypes + !> \brief The Decomposition types parameters + !> \see OpenCMISS::Iron::Mesh,OpenCMISS + !>@{ + INTEGER(INTG), PARAMETER :: CMFE_DECOMPOSITION_ALL_TYPE = DECOMPOSITION_ALL_TYPE !@} + !> \addtogroup OpenCMISS_MeshBoundaryTypes OpenCMISS::Iron::Mesh::MeshBoundaryTypes + !> \brief The boundary type parameters for a mesh domain + !> \see OpenCMISS::Iron::Mesh,OpenCMISS + !>@{ + INTEGER(INTG), PARAMETER :: CMFE_MESH_OFF_DOMAIN_BOUNDARY = MESH_OFF_DOMAIN_BOUNDARY !@} + !>@} + + !Module types + + !Module variables + + !Interfaces + + !>Finishes the creation of a domain decomposition. \see OpenCMISS::Iron::cmfe_Decomposition_CreateStart + INTERFACE cmfe_Decomposition_CreateFinish + MODULE PROCEDURE cmfe_Decomposition_CreateFinishNumber + MODULE PROCEDURE cmfe_Decomposition_CreateFinishObj + END INTERFACE cmfe_Decomposition_CreateFinish + + !>Start the creation of a domain decomposition for a given mesh. \see OpenCMISS::Iron::cmfe_Decomposition_CreateStart + INTERFACE cmfe_Decomposition_CreateStart + MODULE PROCEDURE cmfe_Decomposition_CreateStartNumber + MODULE PROCEDURE cmfe_Decomposition_CreateStartObj + END INTERFACE cmfe_Decomposition_CreateStart + + !>Destroys a domain decomposition. + INTERFACE cmfe_Decomposition_Destroy + MODULE PROCEDURE cmfe_Decomposition_DestroyNumber + MODULE PROCEDURE cmfe_Decomposition_DestroyObj + END INTERFACE cmfe_Decomposition_Destroy + + !>Calculates the element domains for the decomposition of a mesh. + INTERFACE cmfe_Decomposition_ElementDomainCalculate + MODULE PROCEDURE cmfe_Decomposition_ElementDomainCalculateNumber + MODULE PROCEDURE cmfe_Decomposition_ElementDomainCalculateObj + END INTERFACE cmfe_Decomposition_ElementDomainCalculate + + !>Returns the domain for a given element in a decomposition of a mesh. + INTERFACE cmfe_Decomposition_ElementDomainGet + MODULE PROCEDURE cmfe_Decomposition_ElementDomainGetNumber + MODULE PROCEDURE cmfe_Decomposition_ElementDomainGetObj + END INTERFACE cmfe_Decomposition_ElementDomainGet + + !>Sets/changes the domain for a given element in a decomposition of a mesh. + INTERFACE cmfe_Decomposition_ElementDomainSet + MODULE PROCEDURE cmfe_Decomposition_ElementDomainSetNumber + MODULE PROCEDURE cmfe_Decomposition_ElementDomainSetObj + END INTERFACE cmfe_Decomposition_ElementDomainSet + + !>Returns the mesh component number used for the decomposition of a mesh. + INTERFACE cmfe_Decomposition_MeshComponentGet + MODULE PROCEDURE cmfe_Decomposition_MeshComponentGetNumber + MODULE PROCEDURE cmfe_Decomposition_MeshComponentGetObj + END INTERFACE cmfe_Decomposition_MeshComponentGet + + !>Sets/changes the mesh component number used for the decomposition of a mesh. + INTERFACE cmfe_Decomposition_MeshComponentSet + MODULE PROCEDURE cmfe_Decomposition_MeshComponentSetNumber + MODULE PROCEDURE cmfe_Decomposition_MeshComponentSetObj + END INTERFACE cmfe_Decomposition_MeshComponentSet + + !>Returns the number of domains used for the decomposition of a mesh. + INTERFACE cmfe_Decomposition_NumberOfDomainsGet + MODULE PROCEDURE cmfe_Decomposition_NumberOfDomainsGetNumber + MODULE PROCEDURE cmfe_Decomposition_NumberOfDomainsGetObj + END INTERFACE cmfe_Decomposition_NumberOfDomainsGet + + !>Sets/changes the number of domains used for the decomposition of a mesh. + INTERFACE cmfe_Decomposition_NumberOfDomainsSet + MODULE PROCEDURE cmfe_Decomposition_NumberOfDomainsSetNumber + MODULE PROCEDURE cmfe_Decomposition_NumberOfDomainsSetObj + END INTERFACE cmfe_Decomposition_NumberOfDomainsSet + + !>Returns the type of decomposition. + INTERFACE cmfe_Decomposition_TypeGet + MODULE PROCEDURE cmfe_Decomposition_TypeGetNumber + MODULE PROCEDURE cmfe_Decomposition_TypeGetObj + END INTERFACE cmfe_Decomposition_TypeGet + + !>Sets/changes the type of decomposition. + INTERFACE cmfe_Decomposition_TypeSet + MODULE PROCEDURE cmfe_Decomposition_TypeSetNumber + MODULE PROCEDURE cmfe_Decomposition_TypeSetObj + END INTERFACE cmfe_Decomposition_TypeSet + + !>Sets/changes the work group for a decomposition. + INTERFACE cmfe_Decomposition_WorkGroupSet + MODULE PROCEDURE cmfe_Decomposition_WorkGroupSetNumber + MODULE PROCEDURE cmfe_Decomposition_WorkGroupSetObj + END INTERFACE cmfe_Decomposition_WorkGroupSet + + !>Sets/changes whether lines should be calculated for the decomposition. + INTERFACE cmfe_Decomposition_CalculateLinesSet + MODULE PROCEDURE cmfe_Decomposition_CalculateLinesSetNumber + MODULE PROCEDURE cmfe_Decomposition_CalculateLinesSetObj + END INTERFACE cmfe_Decomposition_CalculateLinesSet + + !>Sets/changes whether faces should be calculated for the decomposition. + INTERFACE cmfe_Decomposition_CalculateFacesSet + MODULE PROCEDURE cmfe_Decomposition_CalculateFacesSetNumber + MODULE PROCEDURE cmfe_Decomposition_CalculateFacesSetObj + END INTERFACE cmfe_Decomposition_CalculateFacesSet + + !>Finishes the creation of a mesh. \see OpenCMISS::Iron::cmfe_Mesh_CreateStart + INTERFACE cmfe_Mesh_CreateFinish + MODULE PROCEDURE cmfe_Mesh_CreateFinishNumber + MODULE PROCEDURE cmfe_Mesh_CreateFinishObj + END INTERFACE cmfe_Mesh_CreateFinish + + !>Starts the creation of a mesh. \see OpenCMISS::Iron::cmfe_Mesh_CreateFinish + INTERFACE cmfe_Mesh_CreateStart + MODULE PROCEDURE cmfe_Mesh_CreateStartNumber + MODULE PROCEDURE cmfe_Mesh_CreateStartObj + MODULE PROCEDURE cmfe_Mesh_CreateStartInterfaceObj + END INTERFACE cmfe_Mesh_CreateStart + + !>Destroys a mesh. + INTERFACE cmfe_Mesh_Destroy + MODULE PROCEDURE cmfe_Mesh_DestroyNumber + MODULE PROCEDURE cmfe_Mesh_DestroyObj + END INTERFACE cmfe_Mesh_Destroy + + !>Returns the number of mesh components in a mesh. + INTERFACE cmfe_Mesh_NumberOfComponentsGet + MODULE PROCEDURE cmfe_Mesh_NumberOfComponentsGetNumber + MODULE PROCEDURE cmfe_Mesh_NumberOfComponentsGetObj + END INTERFACE cmfe_Mesh_NumberOfComponentsGet + + !>Sets/changes the number of mesh components in a mesh. + INTERFACE cmfe_Mesh_NumberOfComponentsSet + MODULE PROCEDURE cmfe_Mesh_NumberOfComponentsSetNumber + MODULE PROCEDURE cmfe_Mesh_NumberOfComponentsSetObj + END INTERFACE cmfe_Mesh_NumberOfComponentsSet + + !>Returns the number of elements in a mesh. + INTERFACE cmfe_Mesh_NumberOfElementsGet + MODULE PROCEDURE cmfe_Mesh_NumberOfElementsGetNumber + MODULE PROCEDURE cmfe_Mesh_NumberOfElementsGetObj + END INTERFACE cmfe_Mesh_NumberOfElementsGet + + !>Sets/changes the number of elements in a mesh. + INTERFACE cmfe_Mesh_NumberOfElementsSet + MODULE PROCEDURE cmfe_Mesh_NumberOfElementsSetNumber + MODULE PROCEDURE cmfe_Mesh_NumberOfElementsSetObj + END INTERFACE cmfe_Mesh_NumberOfElementsSet + + !>Sets/changes the surrounding elements calculate flag for the mesh. + INTERFACE cmfe_Mesh_SurroundingElementsCalculateSet + MODULE PROCEDURE cmfe_Mesh_SurroundingElementsCalculateSetNumber + MODULE PROCEDURE cmfe_Mesh_SurroundingElementsCalculateSetObj + END INTERFACE cmfe_Mesh_SurroundingElementsCalculateSet + + !>Sets/changes whether data points topology should be calculated for the decomposition. + INTERFACE cmfe_Mesh_TopologyDataPointsCalculateProjection + MODULE PROCEDURE cmfe_Mesh_TopologyDataPointsCalculateProjectionInterfaceNumber + MODULE PROCEDURE cmfe_Mesh_TopologyDataPointsCalculateProjectionRegionNumber + MODULE PROCEDURE cmfe_Mesh_TopologyDataPointsCalculateProjectionObj + END INTERFACE cmfe_Mesh_TopologyDataPointsCalculateProjection + + !>Returns the basis for an element in a mesh. + INTERFACE cmfe_MeshElements_BasisGet + MODULE PROCEDURE cmfe_MeshElements_BasisGetNumber + MODULE PROCEDURE cmfe_MeshElements_BasisGetObj + END INTERFACE cmfe_MeshElements_BasisGet + + !>Sets/changes the basis for an element in a mesh. + INTERFACE cmfe_MeshElements_BasisSet + MODULE PROCEDURE cmfe_MeshElements_BasisSetNumber + MODULE PROCEDURE cmfe_MeshElements_BasisSetObj + END INTERFACE cmfe_MeshElements_BasisSet + + !>Returns the adjacent elements for a given element and adjacent xi direction for an element in a mesh. + INTERFACE cmfe_MeshElements_AdjacentElementGet + MODULE PROCEDURE cmfe_MeshElements_AdjacentElementGetNumber + MODULE PROCEDURE cmfe_MeshElements_AdjacentElementGetObj + END INTERFACE cmfe_MeshElements_AdjacentElementGet + + !>Finishes the creation of a mesh elements for a mesh component. \see OpenCMISS::Iron::cmfe_MeshElements_CreateStart + INTERFACE cmfe_MeshElements_CreateFinish + MODULE PROCEDURE cmfe_MeshElements_CreateFinishNumber + MODULE PROCEDURE cmfe_MeshElements_CreateFinishObj + END INTERFACE cmfe_MeshElements_CreateFinish + + !>Starts the creation of a mesh elements for a mesh component. \see OpenCMISS::Iron::cmfe_MeshElements_CreateFinish + INTERFACE cmfe_MeshElements_CreateStart + MODULE PROCEDURE cmfe_MeshElements_CreateStartNumber + MODULE PROCEDURE cmfe_MeshElements_CreateStartObj + END INTERFACE cmfe_MeshElements_CreateStart + + !>Gets the mesh boundary type for an element + INTERFACE cmfe_MeshElements_ElementOnBoundaryGet + MODULE PROCEDURE cmfe_MeshElements_ElementOnBoundaryGetNumber + MODULE PROCEDURE cmfe_MeshElements_ElementOnBoundaryGetObj + END INTERFACE cmfe_MeshElements_ElementOnBoundaryGet + + !>Get the mesh elements belonging to a mesh component. + INTERFACE cmfe_Mesh_ElementsGet + MODULE PROCEDURE cmfe_Mesh_ElementsGetNumber + MODULE PROCEDURE cmfe_Mesh_ElementsGetObj + END INTERFACE cmfe_Mesh_ElementsGet + + !>Returns the element nodes for an element in a mesh. + INTERFACE cmfe_MeshElements_NodesGet + MODULE PROCEDURE cmfe_MeshElements_NodesGetNumber + MODULE PROCEDURE cmfe_MeshElements_NodesGetObj + END INTERFACE cmfe_MeshElements_NodesGet + + !>Sets/changes the element nodes for an element in a mesh. + INTERFACE cmfe_MeshElements_NodesSet + MODULE PROCEDURE cmfe_MeshElements_NodesSetNumber + MODULE PROCEDURE cmfe_MeshElements_NodesSetObj + END INTERFACE cmfe_MeshElements_NodesSet + + !>Sets/changes a user node's derivative version for an element in a mesh. + INTERFACE cmfe_MeshElements_UserNodeVersionSet + MODULE PROCEDURE cmfe_MeshElements_UserNodeVersionSetNumber + MODULE PROCEDURE cmfe_MeshElements_UserNodeVersionSetObj + END INTERFACE cmfe_MeshElements_UserNodeVersionSet + + !>Sets/changes a local element's node derivative version for an element in a mesh. + INTERFACE cmfe_MeshElements_LocalElementNodeVersionSet + MODULE PROCEDURE cmfe_MeshElements_LocalElementNodeVersionSetNumber + MODULE PROCEDURE cmfe_MeshElements_LocalElementNodeVersionSetObj + END INTERFACE cmfe_MeshElements_LocalElementNodeVersionSet + + !>Returns the element user number for an element in a mesh. + INTERFACE cmfe_MeshElements_UserNumberGet + MODULE PROCEDURE cmfe_MeshElements_UserNumberGetNumber + MODULE PROCEDURE cmfe_MeshElements_UserNumberGetObj + END INTERFACE cmfe_MeshElements_UserNumberGet + + !>Sets/changes the element user number for an element in a mesh. + INTERFACE cmfe_MeshElements_UserNumberSet + MODULE PROCEDURE cmfe_MeshElements_UserNumberSetNumber + MODULE PROCEDURE cmfe_MeshElements_UserNumberSetObj + END INTERFACE cmfe_MeshElements_UserNumberSet + + !>Sets/changes the element user numbers for all element in a mesh. + INTERFACE cmfe_MeshElements_UserNumbersAllSet + MODULE PROCEDURE cmfe_MeshElements_UserNumbersAllSetNumber + MODULE PROCEDURE cmfe_MeshElements_UserNumbersAllSetObj + END INTERFACE cmfe_MeshElements_UserNumbersAllSet + + !>Returns true if the given node is in the given mesh component. + INTERFACE cmfe_Mesh_NodeExists + MODULE PROCEDURE cmfe_Mesh_NodeExistsNumber + MODULE PROCEDURE cmfe_Mesh_NodeExistsObj + END INTERFACE cmfe_Mesh_NodeExists + + !>Returns true if the given element is in the given mesh component. + INTERFACE cmfe_Mesh_ElementExists + MODULE PROCEDURE cmfe_Mesh_ElementExistsNumber + MODULE PROCEDURE cmfe_Mesh_ElementExistsObj + END INTERFACE cmfe_Mesh_ElementExists + + !>Get the mesh nodes belonging to a mesh component. + INTERFACE cmfe_Mesh_NodesGet + MODULE PROCEDURE cmfe_Mesh_NodesGetNumber + MODULE PROCEDURE cmfe_Mesh_NodesGetObj + END INTERFACE cmfe_Mesh_NodesGet + + !>Get the mesh boundary type for a node. + INTERFACE cmfe_MeshNodes_NodeOnBoundaryGet + MODULE PROCEDURE cmfe_MeshNodes_NodeOnBoundaryGetNumber + MODULE PROCEDURE cmfe_MeshNodes_NodeOnBoundaryGetObj + END INTERFACE cmfe_MeshNodes_NodeOnBoundaryGet - PUBLIC CMFE_FIELD_GEOMETRIC_TYPE,CMFE_FIELD_FIBRE_TYPE,CMFE_FIELD_GENERAL_TYPE,CMFE_FIELD_MATERIAL_TYPE, & - & CMFE_FIELD_GEOMETRIC_GENERAL_TYPE + !>Returns the number of derivatives for a node in a mesh. + INTERFACE cmfe_MeshNodes_NumberOfDerivativesGet + MODULE PROCEDURE cmfe_MeshNodes_NumberOfDerivativesGetNumber + MODULE PROCEDURE cmfe_MeshNodes_NumberOfDerivativesGetObj + END INTERFACE cmfe_MeshNodes_NumberOfDerivativesGet - PUBLIC CMFE_FIELD_CONSTANT_INTERPOLATION,CMFE_FIELD_ELEMENT_BASED_INTERPOLATION,CMFE_FIELD_NODE_BASED_INTERPOLATION, & - & CMFE_FIELD_GRID_POINT_BASED_INTERPOLATION,CMFE_FIELD_GAUSS_POINT_BASED_INTERPOLATION, & - & CMFE_FIELD_DATA_POINT_BASED_INTERPOLATION + !>Returns the derivatives for a node in a mesh. + INTERFACE cmfe_MeshNodes_DerivativesGet + MODULE PROCEDURE cmfe_MeshNodes_DerivativesGetNumber + MODULE PROCEDURE cmfe_MeshNodes_DerivativesGetObj + END INTERFACE cmfe_MeshNodes_DerivativesGet - PUBLIC CMFE_FIELD_NUMBER_OF_VARIABLE_SUBTYPES + !>Returns the number of versions for a derivative at a node in a mesh. + INTERFACE cmfe_MeshNodes_NumberOfVersionsGet + MODULE PROCEDURE cmfe_MeshNodes_NumberOfVersionsGetNumber + MODULE PROCEDURE cmfe_MeshNodes_NumberOfVersionsGetObj + END INTERFACE cmfe_MeshNodes_NumberOfVersionsGet - PUBLIC CMFE_FIELD_U_VARIABLE_TYPE,CMFE_FIELD_DELUDELN_VARIABLE_TYPE,CMFE_FIELD_DELUDELT_VARIABLE_TYPE, & - & CMFE_FIELD_DEL2UDELT2_VARIABLE_TYPE, & - & CMFE_FIELD_V_VARIABLE_TYPE,CMFE_FIELD_DELVDELN_VARIABLE_TYPE,CMFE_FIELD_DELVDELT_VARIABLE_TYPE, & - & CMFE_FIELD_DEL2VDELT2_VARIABLE_TYPE, & - & CMFE_FIELD_W_VARIABLE_TYPE, & - & CMFE_FIELD_U1_VARIABLE_TYPE,CMFE_FIELD_DELU1DELN_VARIABLE_TYPE,CMFE_FIELD_DELU1DELT_VARIABLE_TYPE, & - & CMFE_FIELD_DEL2U1DELT2_VARIABLE_TYPE, & - & CMFE_FIELD_U2_VARIABLE_TYPE,CMFE_FIELD_DELU2DELN_VARIABLE_TYPE,CMFE_FIELD_DELU2DELT_VARIABLE_TYPE, & - & CMFE_FIELD_DEL2U2DELT2_VARIABLE_TYPE, & - & CMFE_FIELD_U3_VARIABLE_TYPE,CMFE_FIELD_DELU3DELN_VARIABLE_TYPE,CMFE_FIELD_DELU3DELT_VARIABLE_TYPE, & - & CMFE_FIELD_DEL2U3DELT2_VARIABLE_TYPE, & - & CMFE_FIELD_U4_VARIABLE_TYPE,CMFE_FIELD_DELU4DELN_VARIABLE_TYPE,CMFE_FIELD_DELU4DELT_VARIABLE_TYPE, & - & CMFE_FIELD_DEL2U4DELT2_VARIABLE_TYPE, & - & CMFE_FIELD_U5_VARIABLE_TYPE,CMFE_FIELD_DELU5DELN_VARIABLE_TYPE,CMFE_FIELD_DELU5DELT_VARIABLE_TYPE, & - & CMFE_FIELD_DEL2U5DELT2_VARIABLE_TYPE, & - & CMFE_FIELD_U6_VARIABLE_TYPE,CMFE_FIELD_DELU6DELN_VARIABLE_TYPE,CMFE_FIELD_DELU6DELT_VARIABLE_TYPE, & - & CMFE_FIELD_DEL2U6DELT2_VARIABLE_TYPE, & - & CMFE_FIELD_U7_VARIABLE_TYPE,CMFE_FIELD_DELU7DELN_VARIABLE_TYPE,CMFE_FIELD_DELU7DELT_VARIABLE_TYPE, & - & CMFE_FIELD_DEL2U7DELT2_VARIABLE_TYPE, & - & CMFE_FIELD_U8_VARIABLE_TYPE,CMFE_FIELD_DELU8DELN_VARIABLE_TYPE,CMFE_FIELD_DELU8DELT_VARIABLE_TYPE, & - & CMFE_FIELD_DEL2U8DELT2_VARIABLE_TYPE, & - & CMFE_FIELD_U9_VARIABLE_TYPE,CMFE_FIELD_DELU9DELN_VARIABLE_TYPE,CMFE_FIELD_DELU9DELT_VARIABLE_TYPE, & - & CMFE_FIELD_DEL2U9DELT2_VARIABLE_TYPE, & - & CMFE_FIELD_U10_VARIABLE_TYPE,CMFE_FIELD_DELU10DELN_VARIABLE_TYPE,CMFE_FIELD_DELU10DELT_VARIABLE_TYPE, & - & CMFE_FIELD_DEL2U10DELT2_VARIABLE_TYPE + !>Returns the number of nodes in a mesh. + INTERFACE cmfe_MeshNodes_NumberOfNodesGet + MODULE PROCEDURE cmfe_MeshNodes_NumberOfNodesGetNumber + MODULE PROCEDURE cmfe_MeshNodes_NumberOfNodesGetObj + END INTERFACE cmfe_MeshNodes_NumberOfNodesGet - PUBLIC CMFE_FIELD_INTG_TYPE,CMFE_FIELD_SP_TYPE,CMFE_FIELD_DP_TYPE,CMFE_FIELD_L_TYPE + !>Returns the domain for a given element in a decomposition of a mesh. + INTERFACE cmfe_Decomposition_NodeDomainGet + MODULE PROCEDURE cmfe_Decomposition_NodeDomainGetNumber + MODULE PROCEDURE cmfe_Decomposition_NodeDomainGetObj + END INTERFACE cmfe_Decomposition_NodeDomainGet - PUBLIC CMFE_FIELD_SEPARATED_COMPONENT_DOF_ORDER,CMFE_FIELD_CONTIGUOUS_COMPONENT_DOF_ORDER + !>Calculates the decomposition topology for data points . + INTERFACE cmfe_Decomposition_TopologyDataProjectionCalculate + MODULE PROCEDURE cmfe_Decomposition_TopologyDataProjectionCalculateObj + END INTERFACE cmfe_Decomposition_TopologyDataProjectionCalculate - PUBLIC CMFE_FIELD_VALUES_SET_TYPE,CMFE_FIELD_INITIAL_VALUES_SET_TYPE,CMFE_FIELD_INCREMENTAL_VALUES_SET_TYPE, & - & CMFE_FIELD_BOUNDARY_CONDITIONS_SET_TYPE, & - & CMFE_FIELD_ANALYTIC_VALUES_SET_TYPE, & - & CMFE_FIELD_PREVIOUS_VALUES_SET_TYPE,CMFE_FIELD_MEAN_PREDICTED_DISPLACEMENT_SET_TYPE,CMFE_FIELD_VELOCITY_VALUES_SET_TYPE, & - & CMFE_FIELD_INITIAL_VELOCITY_SET_TYPE,CMFE_FIELD_PREVIOUS_VELOCITY_SET_TYPE,CMFE_FIELD_MEAN_PREDICTED_VELOCITY_SET_TYPE, & - & CMFE_FIELD_ACCELERATION_VALUES_SET_TYPE,CMFE_FIELD_INITIAL_ACCELERATION_SET_TYPE, & - & CMFE_FIELD_PREVIOUS_ACCELERATION_SET_TYPE, & - & CMFE_FIELD_MEAN_PREDICTED_ACCELERATION_SET_TYPE, CMFE_FIELD_PRESSURE_VALUES_SET_TYPE, & - & CMFE_FIELD_PREVIOUS_PRESSURE_SET_TYPE, & - & CMFE_FIELD_IMPERMEABLE_FLAG_VALUES_SET_TYPE,CMFE_FIELD_INTEGRATED_NEUMANN_SET_TYPE, & - & CMFE_FIELD_MESH_DISPLACEMENT_SET_TYPE,CMFE_FIELD_MESH_VELOCITY_SET_TYPE + !>Gets the local data point number for data points projected on an element + INTERFACE cmfe_Decomposition_TopologyElementDataPointLocalNumberGet + MODULE PROCEDURE cmfe_Decomposition_TopologyElementDataPointLocalNumberGetObj + END INTERFACE cmfe_Decomposition_TopologyElementDataPointLocalNumberGet - PUBLIC CMFE_FIELD_NO_SCALING,CMFE_FIELD_UNIT_SCALING,CMFE_FIELD_ARC_LENGTH_SCALING,CMFE_FIELD_ARITHMETIC_MEAN_SCALING, & - & CMFE_FIELD_GEOMETRIC_MEAN_SCALING,CMFE_FIELD_HARMONIC_MEAN_SCALING + !>Gets the user data point number for data points projected on an element + INTERFACE cmfe_Decomposition_TopologyElementDataPointUserNumberGet + MODULE PROCEDURE cmfe_Decomposition_TopologyElementDataPointUserNumberGetObj + END INTERFACE cmfe_Decomposition_TopologyElementDataPointUserNumberGet - PUBLIC cmfe_Field_ComponentInterpolationGet,cmfe_Field_ComponentInterpolationSet + !>Gets the number of data points projected on an element + INTERFACE cmfe_Decomposition_TopologyNumberOfElementDataPointsGet + MODULE PROCEDURE cmfe_Decomposition_TopologyNumberOfElementDataPointsGetObj + END INTERFACE cmfe_Decomposition_TopologyNumberOfElementDataPointsGet - PUBLIC cmfe_Field_ComponentLabelGet,cmfe_Field_ComponentLabelSet + PUBLIC CMFE_DECOMPOSITION_ALL_TYPE,CMFE_DECOMPOSITION_CALCULATED_TYPE,CMFE_DECOMPOSITION_USER_DEFINED_TYPE - PUBLIC cmfe_Field_ComponentMeshComponentGet,cmfe_Field_ComponentMeshComponentSet + PUBLIC CMFE_MESH_OFF_DOMAIN_BOUNDARY,CMFE_MESH_ON_DOMAIN_BOUNDARY - PUBLIC cmfe_Field_ComponentValuesInitialise + PUBLIC cmfe_Decomposition_CreateFinish,cmfe_Decomposition_CreateStart - PUBLIC cmfe_Field_DataTypeGet,cmfe_Field_DataTypeSet + PUBLIC cmfe_Decomposition_TopologyDataProjectionCalculate - PUBLIC cmfe_Field_DOFOrderTypeGet,cmfe_Field_DOFOrderTypeSet + PUBLIC cmfe_Decomposition_TopologyElementDataPointLocalNumberGet - PUBLIC cmfe_Field_CreateFinish,cmfe_Field_CreateStart + PUBLIC cmfe_Decomposition_TopologyElementDataPointUserNumberGet - PUBLIC cmfe_Field_DependentTypeGet,cmfe_Field_DependentTypeSet + PUBLIC cmfe_Decomposition_TopologyNumberOfElementDataPointsGet - PUBLIC cmfe_Field_Destroy + PUBLIC cmfe_Decomposition_Destroy - PUBLIC cmfe_Field_DimensionGet,cmfe_Field_DimensionSet + PUBLIC cmfe_Decomposition_ElementDomainCalculate - PUBLIC cmfe_Field_GeometricFieldGet,cmfe_Field_GeometricFieldSet + PUBLIC cmfe_Decomposition_ElementDomainGet,cmfe_Decomposition_ElementDomainSet - PUBLIC cmfe_Field_GeometricParametersElementLineLengthGet, cmfe_Field_GeometricParametersElementVolumeGet + PUBLIC cmfe_Decomposition_MeshComponentGet,cmfe_Decomposition_MeshComponentSet - PUBLIC cmfe_Field_LabelGet,cmfe_Field_LabelSet + PUBLIC cmfe_Decomposition_NumberOfDomainsGet,cmfe_Decomposition_NumberOfDomainsSet - PUBLIC cmfe_Field_MeshDecompositionGet,cmfe_Field_MeshDecompositionSet + PUBLIC cmfe_Decomposition_TypeGet,cmfe_Decomposition_TypeSet - PUBLIC cmfe_Field_DataProjectionSet + PUBLIC cmfe_Decomposition_WorkGroupSet - PUBLIC cmfe_Field_PositionNormalTangentCalculateNode + PUBLIC cmfe_Decomposition_NodeDomainGet - PUBLIC cmfe_Field_NumberOfComponentsGet,cmfe_Field_NumberOfComponentsSet + PUBLIC cmfe_Mesh_CreateFinish,cmfe_Mesh_CreateStart - PUBLIC cmfe_Field_NumberOfVariablesGet,cmfe_Field_NumberOfVariablesSet + PUBLIC cmfe_Mesh_Destroy - PUBLIC cmfe_Field_ParameterSetAddConstant,cmfe_Field_ParameterSetAddElement,cmfe_Field_ParameterSetAddGaussPoint, & - & cmfe_Field_ParameterSetAddNode + PUBLIC cmfe_Mesh_NumberOfComponentsGet,cmfe_Mesh_NumberOfComponentsSet - PUBLIC cmfe_Field_ParameterSetCreate + PUBLIC cmfe_Mesh_NumberOfElementsGet,cmfe_Mesh_NumberOfElementsSet - PUBLIC cmfe_Field_ParameterSetDestroy + PUBLIC cmfe_MeshElements_BasisGet,cmfe_MeshElements_BasisSet - PUBLIC cmfe_Field_ParameterSetDataGet,cmfe_Field_ParameterSetDataRestore + PUBLIC cmfe_MeshElements_AdjacentElementGet - PUBLIC cmfe_Field_ParameterSetGetConstant,cmfe_Field_ParameterSetGetElement,cmfe_Field_ParameterSetGetNode + PUBLIC cmfe_MeshElements_ElementOnBoundaryGet - PUBLIC cmfe_Field_ParameterSetGetDataPoint,cmfe_Field_ParameterSetUpdateDataPoint + PUBLIC cmfe_MeshElements_UserNodeVersionSet,cmfe_MeshElements_LocalElementNodeVersionSet - PUBLIC cmfe_Field_ParameterSetUpdateConstant,cmfe_Field_ParameterSetUpdateElement,cmfe_Field_ParameterSetUpdateNode + PUBLIC cmfe_MeshElements_CreateFinish,cmfe_MeshElements_CreateStart - PUBLIC cmfe_Field_ParameterSetNodeScaleFactorGet,cmfe_Field_ParameterSetNodeScaleFactorSet + PUBLIC cmfe_MeshElements_NodesGet,cmfe_MeshElements_NodesSet - PUBLIC cmfe_Field_ParameterSetNodeScaleFactorsGet,cmfe_Field_ParameterSetNodeScaleFactorsSet + PUBLIC cmfe_MeshElements_UserNumberGet,cmfe_MeshElements_UserNumberSet - PUBLIC cmfe_Field_ParameterSetNodeNumberOfScaleFactorDofsGet + PUBLIC cmfe_MeshElements_UserNumbersAllSet - PUBLIC cmfe_Field_ParameterSetUpdateLocalDofs + PUBLIC cmfe_MeshNodes_NodeOnBoundaryGet - PUBLIC cmfe_Field_ParameterSetUpdateGaussPoint,cmfe_Field_ParameterSetGetGaussPoint + PUBLIC cmfe_MeshNodes_NumberOfDerivativesGet,cmfe_MeshNodes_DerivativesGet - PUBLIC cmfe_Field_ParameterSetInterpolateXi + PUBLIC cmfe_MeshNodes_NumberOfVersionsGet - PUBLIC cmfe_Field_ParameterSetInterpolateGauss + PUBLIC cmfe_MeshNodes_NumberOfNodesGet - PUBLIC cmfe_Field_ParameterSetUpdateElementDataPoint + PUBLIC cmfe_Mesh_ElementsGet - PUBLIC cmfe_Field_ParameterSetUpdateFinish,cmfe_Field_ParameterSetUpdateStart + PUBLIC cmfe_Mesh_NodesGet - PUBLIC cmfe_Field_ParametersToFieldParametersComponentCopy + PUBLIC cmfe_Mesh_NodeExists,cmfe_Mesh_ElementExists - PUBLIC cmfe_Field_ScalingTypeGet,cmfe_Field_ScalingTypeSet + PUBLIC cmfe_Mesh_SurroundingElementsCalculateSet - PUBLIC cmfe_Field_TypeGet,cmfe_Field_TypeSet + PUBLIC cmfe_Mesh_TopologyDataPointsCalculateProjection - PUBLIC cmfe_Field_VariableLabelGet,cmfe_Field_VariableLabelSet +!================================================================================================================================== +! +! DistributedMatrixVector +! +!================================================================================================================================== + + !> \addtogroup OpenCMISS_MatrixVectorConstants OpenCMISS::Iron::MatrixVector::Constants + !> \brief Distributed matrix and vector function constants. + !>@{ + !> \addtogroup OpenCMISS_MatrixStorageTypes OpenCMISS::Iron::MatrixVector::MatrixStorageTypes + !> \brief Type of matrix storage. + !> \see OpenCMISS::Iron::MatrixVectorConstants,OpenCMISS + !>@{ + INTEGER(INTG), PARAMETER :: CMFE_MATRIX_BLOCK_STORAGE_TYPE=DISTRIBUTED_MATRIX_BLOCK_STORAGE_TYPE !@} + !> \addtogroup OpenCMISS_MatrixVectorDataTypes OpenCMISS::Iron::MatrixVector::DataTypes + !> \brief Type of data stored in matrices and vectors. + !> \see OpenCMISS::Iron::MatrixVectorConstants,OpenCMISS + !>@{ + INTEGER(INTG), PARAMETER :: CMFE_MATRIX_VECTOR_INTG_TYPE=DISTRIBUTED_MATRIX_VECTOR_INTG_TYPE !@} + !>@} + + PUBLIC CMFE_MATRIX_BLOCK_STORAGE_TYPE,CMFE_MATRIX_DIAGONAL_STORAGE_TYPE,CMFE_MATRIX_COLUMN_MAJOR_STORAGE_TYPE, & + & CMFE_MATRIX_ROW_MAJOR_STORAGE_TYPE,CMFE_MATRIX_COMPRESSED_ROW_STORAGE_TYPE,CMFE_MATRIX_COMPRESSED_COLUMN_STORAGE_TYPE, & + & CMFE_MATRIX_ROW_COLUMN_STORAGE_TYPE + + PUBLIC CMFE_MATRIX_VECTOR_INTG_TYPE,CMFE_MATRIX_VECTOR_SP_TYPE,CMFE_MATRIX_VECTOR_DP_TYPE,CMFE_MATRIX_VECTOR_L_TYPE + + !Note that currently we don't have any user number based routines for distributed matrices + !as if we can't use a pointer to a CMISS object, a pointer to matrix data isn't going to + !be much use either. It's also more awkward when matrices and vectors themselves don't have + !user numbers and there are multiple ways to access them through user numbers, eg. solver equations + !matrices or equations set matrices + + !>Get the storage type for a distributed matrix + INTERFACE cmfe_DistributedMatrix_StorageTypeGet + MODULE PROCEDURE cmfe_DistributedMatrix_StorageTypeGetObj + END INTERFACE cmfe_DistributedMatrix_StorageTypeGet + + !>Get the data type for a distributed matrix + INTERFACE cmfe_DistributedMatrix_DataTypeGet + MODULE PROCEDURE cmfe_DistributedMatrix_DataTypeGetObj + END INTERFACE cmfe_DistributedMatrix_DataTypeGet + + !>Get the dimensions for a distributed matrix on this computation node + INTERFACE cmfe_DistributedMatrix_DimensionsGet + MODULE PROCEDURE cmfe_DistributedMatrix_DimensionsGetObj + END INTERFACE cmfe_DistributedMatrix_DimensionsGet + + !>Get the row indices and column indices for a sparse matrix + INTERFACE cmfe_DistributedMatrix_StorageLocationsGet + MODULE PROCEDURE cmfe_DistributedMatrix_StorageLocationsGetObj + END INTERFACE cmfe_DistributedMatrix_StorageLocationsGet + + !>Get the data array for this matrix on this computation node + INTERFACE cmfe_DistributedMatrix_DataGet + MODULE PROCEDURE cmfe_DistributedMatrix_DataGetIntgObj + MODULE PROCEDURE cmfe_DistributedMatrix_DataGetDPObj + MODULE PROCEDURE cmfe_DistributedMatrix_DataGetSPObj + MODULE PROCEDURE cmfe_DistributedMatrix_DataGetLObj + END INTERFACE cmfe_DistributedMatrix_DataGet + + !>Restore the data array for this matrix once it has finished being used + INTERFACE cmfe_DistributedMatrix_DataRestore + MODULE PROCEDURE cmfe_DistributedMatrix_DataRestoreIntgObj + MODULE PROCEDURE cmfe_DistributedMatrix_DataRestoreDPObj + MODULE PROCEDURE cmfe_DistributedMatrix_DataRestoreSPObj + MODULE PROCEDURE cmfe_DistributedMatrix_DataRestoreLObj + END INTERFACE cmfe_DistributedMatrix_DataRestore + + !>Get the data type for a distributed vector + INTERFACE cmfe_DistributedVector_DataTypeGet + MODULE PROCEDURE cmfe_DistributedVector_DataTypeGetObj + END INTERFACE cmfe_DistributedVector_DataTypeGet + + !>Get the data array for this vector on this computation node + INTERFACE cmfe_DistributedVector_DataGet + MODULE PROCEDURE cmfe_DistributedVector_DataGetIntgObj + MODULE PROCEDURE cmfe_DistributedVector_DataGetDPObj + MODULE PROCEDURE cmfe_DistributedVector_DataGetSPObj + MODULE PROCEDURE cmfe_DistributedVector_DataGetLObj + END INTERFACE cmfe_DistributedVector_DataGet + + !>Restore the data array for this vector once it has finished being used + INTERFACE cmfe_DistributedVector_DataRestore + MODULE PROCEDURE cmfe_DistributedVector_DataRestoreIntgObj + MODULE PROCEDURE cmfe_DistributedVector_DataRestoreDPObj + MODULE PROCEDURE cmfe_DistributedVector_DataRestoreSPObj + MODULE PROCEDURE cmfe_DistributedVector_DataRestoreLObj + END INTERFACE cmfe_DistributedVector_DataRestore + + PUBLIC cmfe_DistributedMatrix_StorageTypeGet,cmfe_DistributedMatrix_StorageLocationsGet + PUBLIC cmfe_DistributedMatrix_DataTypeGet,cmfe_DistributedMatrix_DimensionsGet + PUBLIC cmfe_DistributedMatrix_DataGet,cmfe_DistributedMatrix_DataRestore + PUBLIC cmfe_DistributedVector_DataTypeGet + PUBLIC cmfe_DistributedVector_DataGet,cmfe_DistributedVector_DataRestore + +!================================================================================================================================== +! +! NODE_ROUTINES +! +!================================================================================================================================== + + !Module parameters + + !Module types + + !Module variables + + !Interfaces + + !>Finishes the process of creating nodes in a region. \see OpenCMISS::Iron::cmfe_Nodes_CreateStart + INTERFACE cmfe_Nodes_CreateFinish + MODULE PROCEDURE cmfe_Nodes_CreateFinishNumber + MODULE PROCEDURE cmfe_Nodes_CreateFinishObj + END INTERFACE cmfe_Nodes_CreateFinish + + !>Starts the process of creating nodes in a region. \see OpenCMISS::Iron::cmfe_Nodes_CreateFinish + INTERFACE cmfe_Nodes_CreateStart + MODULE PROCEDURE cmfe_Nodes_CreateStartNumber + MODULE PROCEDURE cmfe_Nodes_CreateStartObj + MODULE PROCEDURE cmfe_Nodes_CreateStartInterfaceObj + END INTERFACE cmfe_Nodes_CreateStart + + !>Destroys nodes. + INTERFACE cmfe_Nodes_Destroy + MODULE PROCEDURE cmfe_Nodes_DestroyNumber + MODULE PROCEDURE cmfe_Nodes_DestroyObj + END INTERFACE cmfe_Nodes_Destroy + + !>Returns the number of nodes + INTERFACE cmfe_Nodes_NumberOfNodesGet + MODULE PROCEDURE cmfe_Nodes_NumberOfNodesGetNumber + MODULE PROCEDURE cmfe_Nodes_NumberOfNodesGetObj + END INTERFACE cmfe_Nodes_NumberOfNodesGet + + !>Returns the label for a node identified by a given global number. \todo should this be a user number? + INTERFACE cmfe_Nodes_LabelGet + MODULE PROCEDURE cmfe_Nodes_LabelGetCNumber + MODULE PROCEDURE cmfe_Nodes_LabelGetCObj + MODULE PROCEDURE cmfe_Nodes_LabelGetVSNumber + MODULE PROCEDURE cmfe_Nodes_LabelGetVSObj + END INTERFACE cmfe_Nodes_LabelGet + + !>Sets/changes the label for a node identified by a given global number. \todo should this be a user number? + INTERFACE cmfe_Nodes_LabelSet + MODULE PROCEDURE cmfe_Nodes_LabelSetCNumber + MODULE PROCEDURE cmfe_Nodes_LabelSetCObj + MODULE PROCEDURE cmfe_Nodes_LabelSetVSNumber + MODULE PROCEDURE cmfe_Nodes_LabelSetVSObj + END INTERFACE cmfe_Nodes_LabelSet + + !>Returns the user number for a node identified by a given global number. + INTERFACE cmfe_Nodes_UserNumberGet + MODULE PROCEDURE cmfe_Nodes_UserNumberGetNumber + MODULE PROCEDURE cmfe_Nodes_UserNumberGetObj + END INTERFACE cmfe_Nodes_UserNumberGet + + !>Sets/changes the user number for a node identified by a given global number. + INTERFACE cmfe_Nodes_UserNumberSet + MODULE PROCEDURE cmfe_Nodes_UserNumberSetNumber + MODULE PROCEDURE cmfe_Nodes_UserNumberSetObj + END INTERFACE cmfe_Nodes_UserNumberSet + + !>Sets/changes the all user number for nodes. + INTERFACE cmfe_Nodes_UserNumbersAllSet + MODULE PROCEDURE cmfe_Nodes_UserNumbersAllSetNumber + MODULE PROCEDURE cmfe_Nodes_UserNumbersAllSetObj + END INTERFACE cmfe_Nodes_UserNumbersAllSet + + PUBLIC cmfe_Nodes_CreateFinish,cmfe_Nodes_CreateStart + + PUBLIC cmfe_Nodes_Destroy + + PUBLIC cmfe_Nodes_NumberOfNodesGet + + PUBLIC cmfe_Nodes_LabelGet,cmfe_Nodes_LabelSet + + PUBLIC cmfe_Nodes_UserNumberGet,cmfe_Nodes_UserNumberSet,cmfe_Nodes_UserNumbersAllSet + +!================================================================================================================================== +! +! PROBLEM_CONSTANTS_ROUTINES +! +!================================================================================================================================== + + !Module parameters + + !> \addtogroup OpenCMISS_ProblemConstants OpenCMISS::Iron::Problem::Constants + !> \brief Problem constants. + !>@{ + !> \addtogroup OpenCMISS_ProblemClasses OpenCMISS::Iron::Problem::Classes + !> \brief Problem classes. + !> \see OpenCMISS::Iron::Problem,OpenCMISS + !>@{ + INTEGER(INTG), PARAMETER :: CMFE_PROBLEM_NO_CLASS = PROBLEM_NO_CLASS !@} + !> \addtogroup OpenCMISS_ProblemTypes OpenCMISS::Iron::Problem::Types + !> \brief Problem Types. + !> \see OpenCMISS::Iron::Problem,OpenCMISS + !>@{ + INTEGER(INTG), PARAMETER :: CMFE_PROBLEM_NO_TYPE = PROBLEM_NO_TYPE !@} + !> \addtogroup OpenCMISS_ProblemSubtypes OpenCMISS::Iron::Problem::Subtypes + !> \brief Problem Subtypes. + !> \see OpenCMISS::Iron::Problem,OpenCMISS + !>@{ + INTEGER(INTG), PARAMETER :: CMFE_PROBLEM_NO_SUBTYPE = PROBLEM_NO_SUBTYPE !@} + !> \addtogroup OpenCMISS_ProblemControlLoopTypes OpenCMISS::Iron::Problem::ControlLoopTypes + !> \brief Problem control loop type parameters + !> \see OpenCMISS::Iron::Problem,OpenCMISS + !>@{ + INTEGER(INTG), PARAMETER :: CMFE_PROBLEM_CONTROL_SIMPLE_TYPE = PROBLEM_CONTROL_SIMPLE_TYPE !@} + !>@} + + !Module types + + !Module variables + + !Interfaces + + PUBLIC CMFE_PROBLEM_NO_CLASS,CMFE_PROBLEM_ELASTICITY_CLASS,CMFE_PROBLEM_FLUID_MECHANICS_CLASS, & + & CMFE_PROBLEM_ELECTROMAGNETICS_CLASS, & + & CMFE_PROBLEM_CLASSICAL_FIELD_CLASS,CMFE_PROBLEM_BIOELECTRICS_CLASS,CMFE_PROBLEM_MODAL_CLASS,CMFE_PROBLEM_FITTING_CLASS, & + & CMFE_PROBLEM_OPTIMISATION_CLASS,CMFE_PROBLEM_MULTI_PHYSICS_CLASS + + PUBLIC CMFE_PROBLEM_NO_TYPE + + PUBLIC CMFE_PROBLEM_LINEAR_ELASTICITY_TYPE,CMFE_PROBLEM_FINITE_ELASTICITY_TYPE + + PUBLIC CMFE_PROBLEM_LINEAR_ELASTICITY_CONTACT_TYPE, CMFE_PROBLEM_FINITE_ELASTICITY_CONTACT_TYPE + + PUBLIC CMFE_PROBLEM_STOKES_EQUATION_TYPE,CMFE_PROBLEM_NAVIER_STOKES_EQUATION_TYPE,CMFE_PROBLEM_DARCY_EQUATION_TYPE, & + & CMFE_PROBLEM_POISEUILLE_EQUATION_TYPE,CMFE_PROBLEM_BURGERS_EQUATION_TYPE + + PUBLIC CMFE_PROBLEM_ELECTROSTATIC_TYPE,CMFE_PROBLEM_MAGNETOSTATIC_TYPE,CMFE_PROBLEM_MAXWELLS_EQUATIONS_TYPE + + PUBLIC CMFE_PROBLEM_LAPLACE_EQUATION_TYPE,CMFE_PROBLEM_POISSON_EQUATION_TYPE,CMFE_PROBLEM_HELMHOLTZ_EQUATION_TYPE, & + & CMFE_PROBLEM_WAVE_EQUATION_TYPE,CMFE_PROBLEM_DIFFUSION_EQUATION_TYPE,CMFE_PROBLEM_ADVECTION_DIFFUSION_EQUATION_TYPE, & + & CMFE_PROBLEM_REACTION_DIFFUSION_EQUATION_TYPE,CMFE_PROBLEM_BIHARMONIC_EQUATION_TYPE + + PUBLIC CMFE_PROBLEM_MONODOMAIN_EQUATION_TYPE,CMFE_PROBLEM_BIDOMAIN_EQUATION_TYPE + + PUBLIC CMFE_PROBLEM_LINEAR_ELASTIC_MODAL_TYPE + + PUBLIC CMFE_PROBLEM_DATA_FITTING_TYPE + + PUBLIC CMFE_PROBLEM_FINITE_ELASTICITY_DARCY_TYPE, & + & CMFE_PROBLEM_FINITE_ELASTICITY_STOKES_TYPE, CMFE_PROBLEM_FINITE_ELASTICITY_NAVIER_STOKES_TYPE, & + & CMFE_PROBLEM_DIFFUSION_DIFFUSION_TYPE, CMFE_PROBLEM_DIFFUSION_ADVECTION_DIFFUSION_TYPE, & + & CMFE_PROBLEM_MULTI_COMPARTMENT_TRANSPORT_TYPE,CMFE_PROBLEM_FINITE_ELASTICITY_FLUID_PRESSURE_TYPE, & + & CMFE_PROBLEM_BIOELECTRIC_FINITE_ELASTICITY_TYPE + + PUBLIC CMFE_PROBLEM_NO_SUBTYPE + + PUBLIC CMFE_PROBLEM_LE_CONTACT_TRANSFORM_REPROJECT_SUBTYPE, CMFE_PROBLEM_LE_CONTACT_TRANSFORM_SUBTYPE, & + & CMFE_PROBLEM_LE_CONTACT_REPROJECT_SUBTYPE + + PUBLIC CMFE_PROBLEM_FE_CONTACT_TRANSFORM_REPROJECT_SUBTYPE, CMFE_PROBLEM_FE_CONTACT_TRANSFORM_SUBTYPE, & + & CMFE_PROBLEM_FE_CONTACT_REPROJECT_SUBTYPE + + PUBLIC CMFE_PROBLEM_STATIC_STOKES_SUBTYPE,CMFE_PROBLEM_LAPLACE_STOKES_SUBTYPE,CMFE_PROBLEM_TRANSIENT_STOKES_SUBTYPE, & + & CMFE_PROBLEM_OPTIMISED_STOKES_SUBTYPE,CMFE_PROBLEM_ALE_STOKES_SUBTYPE,CMFE_PROBLEM_PGM_STOKES_SUBTYPE - PUBLIC cmfe_Field_VariableTypesGet,cmfe_Field_VariableTypesSet + PUBLIC CMFE_PROBLEM_STATIC_NAVIER_STOKES_SUBTYPE,CMFE_PROBLEM_LAPLACE_NAVIER_STOKES_SUBTYPE, & + & CMFE_PROBLEM_TRANSIENT_NAVIER_STOKES_SUBTYPE,CMFE_PROBLEM_TRANSIENT_RBS_NAVIER_STOKES_SUBTYPE, & + & CMFE_PROBLEM_PGM_NAVIER_STOKES_SUBTYPE,CMFE_PROBLEM_OPTIMISED_NAVIER_STOKES_SUBTYPE, & + & CMFE_PROBLEM_TRANSIENT1D_NAVIER_STOKES_SUBTYPE,CMFE_PROBLEM_COUPLED1D0D_NAVIER_STOKES_SUBTYPE, & + & CMFE_PROBLEM_TRANSIENT1D_ADV_NAVIER_STOKES_SUBTYPE,CMFE_PROBLEM_COUPLED1D0D_ADV_NAVIER_STOKES_SUBTYPE, & + & CMFE_PROBLEM_STREE1D0D_ADV_SUBTYPE,CMFE_PROBLEM_STREE1D0D_SUBTYPE, & + & CMFE_PROBLEM_ALE_NAVIER_STOKES_SUBTYPE,CMFE_PROBLEM_MULTISCALE_NAVIER_STOKES_SUBTYPE -!!================================================================================================================================== -!! -!! FIELD_IO_ROUTINES -!! -!!================================================================================================================================== + PUBLIC CMFE_PROBLEM_STANDARD_DARCY_SUBTYPE,CMFE_PROBLEM_QUASISTATIC_DARCY_SUBTYPE,CMFE_PROBLEM_ALE_DARCY_SUBTYPE, & + & CMFE_PROBLEM_TRANSIENT_DARCY_SUBTYPE,CMFE_PROBLEM_PGM_DARCY_SUBTYPE,CMFE_PROBLEM_PGM_TRANSIENT_DARCY_SUBTYPE - !Module parameters + PUBLIC CMFE_PROBLEM_STATIC_POISEUILLE_SUBTYPE,CMFE_PROBLEM_DYNAMIC_POISEUILLE_SUBTYPE - !Module types + PUBLIC CMFE_PROBLEM_STATIC_BURGERS_SUBTYPE,CMFE_PROBLEM_DYNAMIC_BURGERS_SUBTYPE - !Module variables + PUBLIC CMFE_PROBLEM_STANDARD_LAPLACE_SUBTYPE,CMFE_PROBLEM_GENERALISED_LAPLACE_SUBTYPE, & + & CMFE_PROBLEM_MONODOMAIN_STRANG_SPLITTING_EQUATION_TYPE - !Interfaces + PUBLIC CMFE_PROBLEM_LINEAR_SOURCE_POISSON_SUBTYPE,CMFE_PROBLEM_NONLINEAR_SOURCE_POISSON_SUBTYPE, & + & CMFE_PROBLEM_LINEAR_PRESSURE_POISSON_SUBTYPE,CMFE_PROBLEM_NONLINEAR_PRESSURE_POISSON_SUBTYPE, & + & CMFE_PROBLEM_ALE_PRESSURE_POISSON_SUBTYPE, CMFE_PROBLEM_FITTED_PRESSURE_POISSON_SUBTYPE, & + & CMFE_PROBLEM_EXTRACELLULAR_BIDOMAIN_POISSON_SUBTYPE - INTERFACE cmfe_Fields_ElementsExport - MODULE PROCEDURE cmfe_Fields_ElementsExportCCObj - MODULE PROCEDURE cmfe_Fields_ElementsExportVSCObj - MODULE PROCEDURE cmfe_Fields_ElementsExportCVSObj - MODULE PROCEDURE cmfe_Fields_ElementsExportVSVSObj - END INTERFACE cmfe_Fields_ElementsExport + PUBLIC CMFE_PROBLEM_STANDARD_HELMHOLTZ_SUBTYPE,CMFE_PROBLEM_GENERALISED_HELMHOLTZ_SUBTYPE - INTERFACE cmfe_Fields_NodesExport - MODULE PROCEDURE cmfe_Fields_NodesExportCCObj - MODULE PROCEDURE cmfe_Fields_NodesExportVSCObj - MODULE PROCEDURE cmfe_Fields_NodesExportCVSObj - MODULE PROCEDURE cmfe_Fields_NodesExportVSVSObj - END INTERFACE cmfe_Fields_NodesExport + PUBLIC CMFE_PROBLEM_NO_SOURCE_DIFFUSION_SUBTYPE,CMFE_PROBLEM_LINEAR_SOURCE_DIFFUSION_SUBTYPE, & + & CMFE_PROBLEM_NONLINEAR_SOURCE_DIFFUSION_SUBTYPE - PUBLIC cmfe_Fields_ElementsExport,cmfe_Fields_NodesExport + PUBLIC CMFE_PROBLEM_NO_SOURCE_ALE_DIFFUSION_SUBTYPE,CMFE_PROBLEM_LINEAR_SOURCE_ALE_DIFFUSION_SUBTYPE, & + & CMFE_PROBLEM_NONLINEAR_SOURCE_ALE_DIFFUSION_SUBTYPE -!!================================================================================================================================== -!! -!! GENERATED_MESH_ROUTINES -!! -!!================================================================================================================================== + PUBLIC CMFE_PROBLEM_NO_SOURCE_ADVECTION_DIFFUSION_SUBTYPE,CMFE_PROBLEM_LINEAR_SOURCE_ADVECTION_DIFFUSION_SUBTYPE, & + & CMFE_PROBLEM_NONLINEAR_SOURCE_ADVECTION_DIFFUSION_SUBTYPE - !Module parameters + PUBLIC CMFE_PROBLEM_NO_SOURCE_ALE_ADVECTION_DIFFUSION_SUBTYPE,CMFE_PROBLEM_LINEAR_SOURCE_ALE_ADVECTION_DIFFUSION_SUBTYPE, & + & CMFE_PROBLEM_NONLINEAR_SOURCE_ALE_ADVECTION_DIFFUSION_SUBTYPE - !> \addtogroup OpenCMISS_GeneratedMeshConstants OpenCMISS::Iron::GeneratedMesh::Constants - !> \brief Generated mesh constants. - !>@{ - !> \addtogroup OpenCMISS_GeneratedMeshTypes OpenCMISS::Iron::GeneratedMesh::Types - !> \brief Generated mesh types. - !> \see OpenCMISS::Iron::GeneratedMesh,OpenCMISS - !>@{ - INTEGER(INTG), PARAMETER :: CMFE_GENERATED_MESH_REGULAR_MESH_TYPE = GENERATED_MESH_REGULAR_MESH_TYPE !@} - !>@} - - !> \addtogroup OpenCMISS_GeneratedMeshConstants OpenCMISS::Iron::GeneratedMesh::Constants - !> \brief Generated mesh constants. - !>@{ - !> \addtogroup OpenCMISS_GeneratedMeshSurfaceTypes OpenCMISS::Iron::GeneratedMesh::SurfaceTypes - !> \brief Generated mesh surface types. - !> \see OpenCMISS::Iron::GeneratedMesh,OpenCMISS - !>@{ - INTEGER(INTG), PARAMETER :: CMFE_GENERATED_MESH_CYLINDER_INNER_SURFACE = GENERATED_MESH_CYLINDER_INNER_SURFACE !@} - !>@} - - !Module types - - !Module variables - - !Interfaces - - !>Returns the basis for a generated mesh. - INTERFACE cmfe_GeneratedMesh_BasisGet - MODULE PROCEDURE cmfe_GeneratedMesh_BasisGetNumber - MODULE PROCEDURE cmfe_GeneratedMesh_BasisGetObj - END INTERFACE cmfe_GeneratedMesh_BasisGet - - !>Sets/changes the basis for a generated mesh. - INTERFACE cmfe_GeneratedMesh_BasisSet - MODULE PROCEDURE cmfe_GeneratedMesh_BasisSetNumber0 - MODULE PROCEDURE cmfe_GeneratedMesh_BasisSetNumber1 - MODULE PROCEDURE cmfe_GeneratedMesh_BasisSetObj0 - MODULE PROCEDURE cmfe_GeneratedMesh_BasisSetObj1 - END INTERFACE cmfe_GeneratedMesh_BasisSet - - !>Sets/changes the base vectors for a generated mesh. - INTERFACE cmfe_GeneratedMesh_BaseVectorsSet - MODULE PROCEDURE cmfe_GeneratedMesh_BaseVectorsSetNumber - MODULE PROCEDURE cmfe_GeneratedMesh_BaseVectorsSetObj - END INTERFACE cmfe_GeneratedMesh_BaseVectorsSet - - !>Finishes the creation of a generated mesh. \see OpenCMISS::Iron::cmfe_GeneratedMesh_CreateStart - INTERFACE cmfe_GeneratedMesh_CreateFinish - MODULE PROCEDURE cmfe_GeneratedMesh_CreateFinishNumber - MODULE PROCEDURE cmfe_GeneratedMesh_CreateFinishObj - END INTERFACE cmfe_GeneratedMesh_CreateFinish - - !>Starts the creation of a generated mesh. \see OpenCMISS::Iron::cmfe_GeneratedMesh_CreateFinish - INTERFACE cmfe_GeneratedMesh_CreateStart - MODULE PROCEDURE cmfe_GeneratedMesh_CreateStartNumber - MODULE PROCEDURE cmfe_GeneratedMesh_CreateStartInterfaceObj - MODULE PROCEDURE cmfe_GeneratedMesh_CreateStartRegionObj - END INTERFACE cmfe_GeneratedMesh_CreateStart - - !>Destroys a generated mesh. - INTERFACE cmfe_GeneratedMesh_Destroy - MODULE PROCEDURE cmfe_GeneratedMesh_DestroyNumber - MODULE PROCEDURE cmfe_GeneratedMesh_DestroyObj - END INTERFACE cmfe_GeneratedMesh_Destroy - - !>Returns the extent of a generated mesh. - INTERFACE cmfe_GeneratedMesh_ExtentGet - MODULE PROCEDURE cmfe_GeneratedMesh_ExtentGetNumber - MODULE PROCEDURE cmfe_GeneratedMesh_ExtentGetObj - END INTERFACE cmfe_GeneratedMesh_ExtentGet - - !>Sets/changes the extent of a generated mesh. - INTERFACE cmfe_GeneratedMesh_ExtentSet - MODULE PROCEDURE cmfe_GeneratedMesh_ExtentSetNumber - MODULE PROCEDURE cmfe_GeneratedMesh_ExtentSetObj - END INTERFACE cmfe_GeneratedMesh_ExtentSet - - !>Returns the number of elements in a generated mesh. - INTERFACE cmfe_GeneratedMesh_NumberOfElementsGet - MODULE PROCEDURE cmfe_GeneratedMesh_NumberOfElementsGetNumber - MODULE PROCEDURE cmfe_GeneratedMesh_NumberOfElementsGetObj - END INTERFACE cmfe_GeneratedMesh_NumberOfElementsGet - - !>Sets/changes the number of elements in a generated mesh. - INTERFACE cmfe_GeneratedMesh_NumberOfElementsSet - MODULE PROCEDURE cmfe_GeneratedMesh_NumberOfElementsSetNumber - MODULE PROCEDURE cmfe_GeneratedMesh_NumberOfElementsSetObj - END INTERFACE cmfe_GeneratedMesh_NumberOfElementsSet - - !>Returns the origin of a generated mesh. - INTERFACE cmfe_GeneratedMesh_OriginGet - MODULE PROCEDURE cmfe_GeneratedMesh_OriginGetNumber - MODULE PROCEDURE cmfe_GeneratedMesh_OriginGetObj - END INTERFACE cmfe_GeneratedMesh_OriginGet - - !>Sets/changes the origin of a generated mesh. - INTERFACE cmfe_GeneratedMesh_OriginSet - MODULE PROCEDURE cmfe_GeneratedMesh_OriginSetNumber - MODULE PROCEDURE cmfe_GeneratedMesh_OriginSetObj - END INTERFACE cmfe_GeneratedMesh_OriginSet - - !>Returns the type of a generated mesh. - INTERFACE cmfe_GeneratedMesh_TypeGet - MODULE PROCEDURE cmfe_GeneratedMesh_TypeGetNumber - MODULE PROCEDURE cmfe_GeneratedMesh_TypeGetObj - END INTERFACE cmfe_GeneratedMesh_TypeGet - - !>Sets/changes the type of a generated mesh. - INTERFACE cmfe_GeneratedMesh_TypeSet - MODULE PROCEDURE cmfe_GeneratedMesh_TypeSetNumber - MODULE PROCEDURE cmfe_GeneratedMesh_TypeSetObj - END INTERFACE cmfe_GeneratedMesh_TypeSet - - !>Calculates and sets the geometric field parameters for a generated mesh - INTERFACE cmfe_GeneratedMesh_GeometricParametersCalculate - MODULE PROCEDURE cmfe_GeneratedMesh_GeometricParametersCalculateNumber - MODULE PROCEDURE cmfe_GeneratedMesh_GeometricParametersCalculateObj - END INTERFACE cmfe_GeneratedMesh_GeometricParametersCalculate - - !>Returns a list of nodes belonging to a surface of given type - INTERFACE cmfe_GeneratedMesh_SurfaceGet - MODULE PROCEDURE cmfe_GeneratedMesh_SurfaceGetNumber0 - MODULE PROCEDURE cmfe_GeneratedMesh_SurfaceGetNumber1 - MODULE PROCEDURE cmfe_GeneratedMesh_SurfaceGetObj0 - MODULE PROCEDURE cmfe_GeneratedMesh_SurfaceGetObj1 - END INTERFACE + PUBLIC CMFE_PROBLEM_NO_SOURCE_STATIC_ADVEC_DIFF_SUBTYPE,CMFE_PROBLEM_LINEAR_SOURCE_STATIC_ADVEC_DIFF_SUBTYPE, & + & CMFE_PROBLEM_NONLINEAR_SOURCE_STATIC_ADVEC_DIFF_SUBTYPE + PUBLIC CMFE_PROBLEM_CELLML_REAC_INTEG_REAC_DIFF_STRANG_SPLIT_SUBTYPE, & + & CMFE_PROBLEM_CELLML_REAC_EVAL_REAC_DIFF_NO_SPLIT_SUBTYPE, & + & CMFE_PROBLEM_CONSTANT_REAC_DIFF_NO_SPLIT_SUBTYPE - !>Creates an embedding of one mesh in another - INTERFACE cmfe_MeshEmbedding_Create - MODULE PROCEDURE cmfe_MeshEmbedding_CreateNumber - MODULE PROCEDURE cmfe_MeshEmbedding_CreateObj - END INTERFACE + PUBLIC CMFE_PROBLEM_STATIC_FITTING_SUBTYPE,CMFE_PROBLEM_STANDARD_DATA_FITTING_SUBTYPE, & + & CMFE_PROBLEM_GENERALISED_DATA_FITTING_SUBTYPE, & + & CMFE_PROBLEM_VECTOR_DATA_FITTING_SUBTYPE,CMFE_PROBLEM_DIV_FREE_VECTOR_DATA_FITTING_SUBTYPE, & + & CMFE_PROBLEM_VECTOR_DATA_PRE_FITTING_SUBTYPE,CMFE_PROBLEM_DIV_FREE_VECTOR_DATA_PRE_FITTING_SUBTYPE, & + & CMFE_PROBLEM_MAT_PROPERTIES_DATA_FITTING_SUBTYPE,CMFE_PROBLEM_DATA_POINT_VECTOR_STATIC_FITTING_SUBTYPE, & + & CMFE_PROBLEM_DATA_PT_VECTOR_QUASISTATIC_FITTING_SUBTYPE - !>Sets the embedded nodes for one parent element - INTERFACE cmfe_MeshEmbedding_SetChildNodePosition - MODULE PROCEDURE cmfe_MeshEmbedding_SetChildNodePositionObj - END INTERFACE + PUBLIC CMFE_PROBLEM_MONODOMAIN_GUDUNOV_SPLIT_SUBTYPE,CMFE_PROBLEM_MONODOMAIN_STRANG_SPLIT_SUBTYPE, & + & CMFE_PROBLEM_BIDOMAIN_GUDUNOV_SPLIT_SUBTYPE,CMFE_PROBLEM_BIDOMAIN_STRANG_SPLIT_SUBTYPE + PUBLIC CMFE_PROBLEM_MONODOMAIN_BUENOOROVIO_SUBTYPE, CMFE_PROBLEM_MONODOMAIN_TENTUSSCHER06_SUBTYPE - !>Pushes data from the parent field to the child field - INTERFACE cmfe_MeshEmbedding_PushData - MODULE PROCEDURE cmfe_MeshEmbedding_PushDataObj - END INTERFACE + PUBLIC CMFE_PROBLEM_CONTROL_SIMPLE_TYPE,CMFE_PROBLEM_CONTROL_FIXED_LOOP_TYPE,CMFE_PROBLEM_CONTROL_TIME_LOOP_TYPE, & + & CMFE_PROBLEM_CONTROL_WHILE_LOOP_TYPE,CMFE_PROBLEM_CONTROL_LOAD_INCREMENT_LOOP_TYPE - INTERFACE cmfe_MeshEmbedding_SetGaussPointData - MODULE PROCEDURE cmfe_MeshEmbedding_SetGaussPointDataObj - END INTERFACE + PUBLIC CMFE_PROBLEM_STANDARD_ELASTICITY_DARCY_SUBTYPE, CMFE_PROBLEM_PGM_ELASTICITY_DARCY_SUBTYPE, & + & CMFE_PROBLEM_QUASISTATIC_ELASTICITY_TRANSIENT_DARCY_SUBTYPE,CMFE_PROBLEM_QUASISTATIC_ELAST_TRANS_DARCY_MAT_SOLVE_SUBTYPE, & + & CMFE_PROBLEM_COUPLED_SOURCE_DIFFUSION_DIFFUSION_SUBTYPE, CMFE_PROBLEM_COUPLED_SOURCE_DIFFUSION_ADVEC_DIFFUSION_SUBTYPE, & + & CMFE_PROBLEM_STANDARD_MULTI_COMPARTMENT_TRANSPORT_SUBTYPE,CMFE_PROBLEM_STANDARD_ELASTICITY_FLUID_PRESSURE_SUBTYPE, & + & CMFE_PROBLEM_GUDUNOV_MONODOMAIN_SIMPLE_ELASTICITY_SUBTYPE,CMFE_PROBLEM_GUDUNOV_MONODOMAIN_1D3D_ELASTICITY_SUBTYPE, & + & CMFE_PROBLEM_MONODOMAIN_ELASTICITY_W_TITIN_SUBTYPE,CMFE_PROBLEM_MONODOMAIN_ELASTICITY_VELOCITY_SUBTYPE, & + & CMFE_PROBLEM_MONODOMAIN_1D3D_ACTIVE_STRAIN_SUBTYPE, & + & CMFE_PROBLEM_FINITE_ELASTICITY_NAVIER_STOKES_ALE_SUBTYPE, & + & CMFE_PROBLEM_FINITE_ELASTICITY_RBS_NAVIER_STOKES_ALE_SUBTYPE,& + & CMFE_PROBLEM_GROWTH_FINITE_ELASTICITY_NAVIER_STOKES_ALE_SUBTYPE, & + & CMFE_PROBLEM_GROWTH_FINITE_ELAST_RBS_NAVIER_STOKES_ALE_SUBTYPE - INTERFACE cmfe_MeshEmbedding_PullGaussPointData - MODULE PROCEDURE cmfe_MeshEmbedding_PullGaussPointDataObj - END INTERFACE + PUBLIC CMFE_PROBLEM_STATIC_FINITE_ELASTICITY_SUBTYPE,CMFE_PROBLEM_QUASISTATIC_FINITE_ELASTICITY_SUBTYPE, & + & CMFE_PROBLEM_QUASISTATIC_FINITE_ELASTICITY_WITH_GROWTH_SUBTYPE,CMFE_PROBLEM_DYNAMIC_FINITE_ELASTICITY_SUBTYPE - INTERFACE cmfe_MeshEmbedding_GetGaussPointCoord - MODULE PROCEDURE cmfe_Field_ParameterSetGetGaussPointCoordObj - END INTERFACE + PUBLIC CMFE_PROBLEM_FINITE_ELASTICITY_WITH_ACTIVE_SUBTYPE,CMFE_PROBLEM_FINITE_ELASTICITY_WITH_CELLML_SUBTYPE, & + & CMFE_PROBLEM_FINITE_ELASTICITY_WITH_GROWTH_CELLML_SUBTYPE - PUBLIC cmfe_MeshEmbedding_Create,cmfe_MeshEmbedding_SetChildNodePosition, cmfe_MeshEmbeddingType +!================================================================================================================================== +! +! PROBLEM_ROUTINES +! +!================================================================================================================================== + + !Module parameters + + !Module types + + !Module variables + + !Interfaces + + !>Finish the creation of CellML equations for a problem. \see OpenCMISS::Iron::cmfe_Problem_CellMLEquationsCreateStart + INTERFACE cmfe_Problem_CellMLEquationsCreateFinish + MODULE PROCEDURE cmfe_Problem_CellMLEquationsCreateFinishNumber + MODULE PROCEDURE cmfe_Problem_CellMLEquationsCreateFinishObj + END INTERFACE cmfe_Problem_CellMLEquationsCreateFinish + + !>Start the creation of solver equations for a problem. \see OpenCMISS::Iron::cmfe_Problem_CellMLEquationsCreateFinish + INTERFACE cmfe_Problem_CellMLEquationsCreateStart + MODULE PROCEDURE cmfe_Problem_CellMLEquationsCreateStartNumber + MODULE PROCEDURE cmfe_Problem_CellMLEquationsCreateStartObj + END INTERFACE cmfe_Problem_CellMLEquationsCreateStart + + !>Returns the CellML equations for a problem. + INTERFACE cmfe_Problem_CellMLEquationsGet + MODULE PROCEDURE cmfe_Problem_CellMLEquationsGetNumber0 + MODULE PROCEDURE cmfe_Problem_CellMLEquationsGetNumber1 + MODULE PROCEDURE cmfe_Problem_CellMLEquationsGetObj0 + MODULE PROCEDURE cmfe_Problem_CellMLEquationsGetObj1 + END INTERFACE cmfe_Problem_CellMLEquationsGet + + !>Finishes the process of creating a problem. \see OpenCMISS::Iron::cmfe_Problem_CreateStart + INTERFACE cmfe_Problem_CreateFinish + MODULE PROCEDURE cmfe_Problem_CreateFinishNumber + MODULE PROCEDURE cmfe_Problem_CreateFinishObj + END INTERFACE cmfe_Problem_CreateFinish + + !>Start the process of creating a problem. \see OpenCMISS::Iron::cmfe_Problem_CreateFinish + INTERFACE cmfe_Problem_CreateStart + MODULE PROCEDURE cmfe_Problem_CreateStartNumber + MODULE PROCEDURE cmfe_Problem_CreateStartObj + END INTERFACE cmfe_Problem_CreateStart + + !>Finishes the process of creating a control loop on a problem. \see OpenCMISS::Iron::cmfe_Problem_ControlLoopCreateStart + INTERFACE cmfe_Problem_ControlLoopCreateFinish + MODULE PROCEDURE cmfe_Problem_ControlLoopCreateFinishNumber + MODULE PROCEDURE cmfe_Problem_ControlLoopCreateFinishObj + END INTERFACE cmfe_Problem_ControlLoopCreateFinish + + !>Starts the process of creating a control loop on a problem. \see OpenCMISS::Iron::cmfe_Problem_ControlLoopCreateFinish + INTERFACE cmfe_Problem_ControlLoopCreateStart + MODULE PROCEDURE cmfe_Problem_ControlLoopCreateStartNumber + MODULE PROCEDURE cmfe_Problem_ControlLoopCreateStartObj + END INTERFACE cmfe_Problem_ControlLoopCreateStart + + !>Destroys the control loop for a problem. + INTERFACE cmfe_Problem_ControlLoopDestroy + MODULE PROCEDURE cmfe_Problem_ControlLoopDestroyNumber + MODULE PROCEDURE cmfe_Problem_ControlLoopDestroyObj + END INTERFACE cmfe_Problem_ControlLoopDestroy + + !>Returns a control loop for a problem. + INTERFACE cmfe_Problem_ControlLoopGet + MODULE PROCEDURE cmfe_Problem_ControlLoopGetNumber0 + MODULE PROCEDURE cmfe_Problem_ControlLoopGetNumber1 + MODULE PROCEDURE cmfe_Problem_ControlLoopGetObj0 + MODULE PROCEDURE cmfe_Problem_ControlLoopGetObj1 + END INTERFACE cmfe_Problem_ControlLoopGet + + !>Destroys a problem. + INTERFACE cmfe_Problem_Destroy + MODULE PROCEDURE cmfe_Problem_DestroyNumber + MODULE PROCEDURE cmfe_Problem_DestroyObj + END INTERFACE cmfe_Problem_Destroy + + !>Solve a problem. + INTERFACE cmfe_Problem_Solve + MODULE PROCEDURE cmfe_Problem_SolveNumber + MODULE PROCEDURE cmfe_Problem_SolveObj + END INTERFACE cmfe_Problem_Solve + + !>Returns the solver for a problem control loop. + INTERFACE cmfe_Problem_SolverGet + MODULE PROCEDURE cmfe_Problem_SolverGetNumber0 + MODULE PROCEDURE cmfe_Problem_SolverGetNumber1 + MODULE PROCEDURE cmfe_Problem_SolverGetObj0 + MODULE PROCEDURE cmfe_Problem_SolverGetObj1 + END INTERFACE cmfe_Problem_SolverGet + + !>Set boundary conditions for solver equations according to the analytic equations. + INTERFACE cmfe_SolverEquations_BoundaryConditionsAnalytic + MODULE PROCEDURE cmfe_SolverEquations_BoundaryConditionsAnalyticNumber0 + MODULE PROCEDURE cmfe_SolverEquations_BoundaryConditionsAnalyticNumber1 + MODULE PROCEDURE cmfe_SolverEquations_BoundaryConditionsAnalyticObj + END INTERFACE cmfe_SolverEquations_BoundaryConditionsAnalytic + + !>Finish the creation of solver equations for a problem. \see OpenCMISS::Iron::cmfe_Problem_SolverEquationsCreateStart + INTERFACE cmfe_Problem_SolverEquationsCreateFinish + MODULE PROCEDURE cmfe_Problem_SolverEquationsCreateFinishNumber + MODULE PROCEDURE cmfe_Problem_SolverEquationsCreateFinishObj + END INTERFACE cmfe_Problem_SolverEquationsCreateFinish + + !>Start the creation of solver equations for a problem. \see OpenCMISS::Iron::cmfe_Problem_SolverEquationsCreateFinish + INTERFACE cmfe_Problem_SolverEquationsCreateStart + MODULE PROCEDURE cmfe_Problem_SolverEquationsCreateStartNumber + MODULE PROCEDURE cmfe_Problem_SolverEquationsCreateStartObj + END INTERFACE cmfe_Problem_SolverEquationsCreateStart + + !>Destroys the solver equations for a problem. + INTERFACE cmfe_Problem_SolverEquationsDestroy + MODULE PROCEDURE cmfe_Problem_SolverEquationsDestroyNumber + MODULE PROCEDURE cmfe_Problem_SolverEquationsDestroyObj + END INTERFACE cmfe_Problem_SolverEquationsDestroy + + !>Returns the solver equations for a problem. + INTERFACE cmfe_Problem_SolverEquationsGet + MODULE PROCEDURE cmfe_Problem_SolverEquationsGetNumber0 + MODULE PROCEDURE cmfe_Problem_SolverEquationsGetNumber1 + MODULE PROCEDURE cmfe_Problem_SolverEquationsGetObj0 + MODULE PROCEDURE cmfe_Problem_SolverEquationsGetObj1 + END INTERFACE cmfe_Problem_SolverEquationsGet + + !>Finish the creation of solvers for a problem. \see OpenCMISS::Iron::cmfe_Problem_SolversCreateStart + INTERFACE cmfe_Problem_SolversCreateFinish + MODULE PROCEDURE cmfe_Problem_SolversCreateFinishNumber + MODULE PROCEDURE cmfe_Problem_SolversCreateFinishObj + END INTERFACE cmfe_Problem_SolversCreateFinish + + !>Start the creation of solvers for a problem. \see OpenCMISS::Iron::cmfe_Problem_SolversCreateFinish + INTERFACE cmfe_Problem_SolversCreateStart + MODULE PROCEDURE cmfe_Problem_SolversCreateStartNumber + MODULE PROCEDURE cmfe_Problem_SolversCreateStartObj + END INTERFACE cmfe_Problem_SolversCreateStart + + !>Destroy the solvers for a problem. + INTERFACE cmfe_Problem_SolversDestroy + MODULE PROCEDURE cmfe_Problem_SolversDestroyNumber + MODULE PROCEDURE cmfe_Problem_SolversDestroyObj + END INTERFACE cmfe_Problem_SolversDestroy + + !>Returns the problem specification array for a problem. + INTERFACE cmfe_Problem_SpecificationGet + MODULE PROCEDURE cmfe_Problem_SpecificationGetNumber + MODULE PROCEDURE cmfe_Problem_SpecificationGetObj + END INTERFACE cmfe_Problem_SpecificationGet + + !>Returns the size of the problem specification array for a problem. + INTERFACE cmfe_Problem_SpecificationSizeGet + MODULE PROCEDURE cmfe_Problem_SpecificationSizeGetNumber + MODULE PROCEDURE cmfe_Problem_SpecificationSizeGetObj + END INTERFACE cmfe_Problem_SpecificationSizeGet + + !>Sets/changes the work group for a problem. + INTERFACE cmfe_Problem_WorkGroupSet + MODULE PROCEDURE cmfe_Problem_WorkGroupSetNumber + MODULE PROCEDURE cmfe_Problem_WorkGroupSetObj + END INTERFACE cmfe_Problem_WorkGroupSet + + PUBLIC cmfe_Problem_CellMLEquationsCreateFinish,cmfe_Problem_CellMLEquationsCreateStart - PUBLIC cmfe_MeshEmbedding_Initialise,cmfe_MeshEmbedding_SetGaussPointData + PUBLIC cmfe_Problem_CellMLEquationsGet + + PUBLIC cmfe_Problem_CreateFinish,cmfe_Problem_CreateStart - PUBLIC cmfe_MeshEmbedding_PushData,cmfe_MeshEmbedding_PullGaussPointData + PUBLIC cmfe_Problem_ControlLoopCreateFinish,cmfe_Problem_ControlLoopCreateStart - PUBLIC cmfe_MeshEmbedding_GetGaussPointCoord + PUBLIC cmfe_Problem_ControlLoopDestroy - PUBLIC CMFE_GENERATED_MESH_REGULAR_MESH_TYPE,CMFE_GENERATED_MESH_POLAR_MESH_TYPE,CMFE_GENERATED_MESH_FRACTAL_TREE_MESH_TYPE + PUBLIC cmfe_Problem_ControlLoopGet - PUBLIC CMFE_GENERATED_MESH_CYLINDER_MESH_TYPE, CMFE_GENERATED_MESH_ELLIPSOID_MESH_TYPE + PUBLIC cmfe_Problem_Destroy - PUBLIC CMFE_GENERATED_MESH_CYLINDER_INNER_SURFACE,CMFE_GENERATED_MESH_CYLINDER_OUTER_SURFACE + PUBLIC cmfe_Problem_Solve - PUBLIC CMFE_GENERATED_MESH_CYLINDER_TOP_SURFACE, CMFE_GENERATED_MESH_CYLINDER_BOTTOM_SURFACE + PUBLIC cmfe_Problem_SolverGet - PUBLIC CMFE_GENERATED_MESH_ELLIPSOID_INNER_SURFACE, CMFE_GENERATED_MESH_ELLIPSOID_OUTER_SURFACE + PUBLIC cmfe_SolverEquations_BoundaryConditionsAnalytic - PUBLIC CMFE_GENERATED_MESH_ELLIPSOID_TOP_SURFACE + PUBLIC cmfe_Problem_SolverEquationsCreateFinish,cmfe_Problem_SolverEquationsCreateStart - PUBLIC CMFE_GENERATED_MESH_REGULAR_LEFT_SURFACE, CMFE_GENERATED_MESH_REGULAR_RIGHT_SURFACE, & - & CMFE_GENERATED_MESH_REGULAR_TOP_SURFACE + PUBLIC cmfe_Problem_SolverEquationsDestroy - PUBLIC CMFE_GENERATED_MESH_REGULAR_BOTTOM_SURFACE, CMFE_GENERATED_MESH_REGULAR_FRONT_SURFACE, & - & CMFE_GENERATED_MESH_REGULAR_BACK_SURFACE + PUBLIC cmfe_Problem_SolverEquationsGet - PUBLIC cmfe_GeneratedMesh_BasisGet,cmfe_GeneratedMesh_BasisSet + PUBLIC cmfe_Problem_SolversCreateFinish,cmfe_Problem_SolversCreateStart - PUBLIC cmfe_GeneratedMesh_BaseVectorsSet + PUBLIC cmfe_Problem_SolversDestroy - PUBLIC cmfe_GeneratedMesh_CreateFinish,cmfe_GeneratedMesh_CreateStart + PUBLIC cmfe_Problem_SpecificationGet,cmfe_Problem_SpecificationSizeGet - PUBLIC cmfe_GeneratedMesh_Destroy + PUBLIC cmfe_Problem_WorkGroupSet - PUBLIC cmfe_GeneratedMesh_ExtentGet,cmfe_GeneratedMesh_ExtentSet +!================================================================================================================================== +! +! REGION_ROUTINES +! +!================================================================================================================================== - PUBLIC cmfe_GeneratedMesh_NumberOfElementsGet,cmfe_GeneratedMesh_NumberOfElementsSet + !Module parameters - PUBLIC cmfe_GeneratedMesh_OriginGet,cmfe_GeneratedMesh_OriginSet + !Module types - PUBLIC cmfe_GeneratedMesh_TypeGet,cmfe_GeneratedMesh_TypeSet + !Module variables - PUBLIC cmfe_GeneratedMesh_GeometricParametersCalculate + !Interfaces - PUBLIC cmfe_GeneratedMesh_SurfaceGet + !>Returns the coordinate system of region. + INTERFACE cmfe_Region_CoordinateSystemGet + MODULE PROCEDURE cmfe_Region_CoordinateSystemGetNumber + MODULE PROCEDURE cmfe_Region_CoordinateSystemGetObj + END INTERFACE cmfe_Region_CoordinateSystemGet + !>Sets/changes the coordinate system of region. + INTERFACE cmfe_Region_CoordinateSystemSet + MODULE PROCEDURE cmfe_Region_CoordinateSystemSetNumber + MODULE PROCEDURE cmfe_Region_CoordinateSystemSetObj + END INTERFACE cmfe_Region_CoordinateSystemSet -!!================================================================================================================================== -!! -!! INTERFACE_ROUTINES -!! -!!================================================================================================================================== + !>Finishes the creation of a region. \see OpenCMISS::Iron::cmfe_Region_CreateStart + INTERFACE cmfe_Region_CreateFinish + MODULE PROCEDURE cmfe_Region_CreateFinishNumber + MODULE PROCEDURE cmfe_Region_CreateFinishObj + END INTERFACE cmfe_Region_CreateFinish - !Module parameters - - !Module types - - !Module variables - - !Interfaces - - !>Adds a mesh to an interface. - INTERFACE cmfe_Interface_MeshAdd - MODULE PROCEDURE cmfe_Interface_MeshAddNumber - MODULE PROCEDURE cmfe_Interface_MeshAddObj - END INTERFACE cmfe_Interface_MeshAdd - - !>Finishes the creation of an interface. \see OpenCMISS::Iron::cmfe_Interface_CreateStart - INTERFACE cmfe_Interface_CreateFinish - MODULE PROCEDURE cmfe_Interface_CreateFinishNumber - MODULE PROCEDURE cmfe_Interface_CreateFinishObj - END INTERFACE cmfe_Interface_CreateFinish - - !>Starts the creation of an interface. \see OpenCMISS::Iron::cmfe_Interface_CreateFinish - INTERFACE cmfe_Interface_CreateStart - MODULE PROCEDURE cmfe_Interface_CreateStartNumber - MODULE PROCEDURE cmfe_Interface_CreateStartObj - END INTERFACE cmfe_Interface_CreateStart - - !>Set the coordinate system of an inteface - INTERFACE cmfe_Interface_CoordinateSystemSet - MODULE PROCEDURE cmfe_Interface_CoordinateSystemSetNumber - MODULE PROCEDURE cmfe_Interface_CoordinateSystemSetObj - END INTERFACE cmfe_Interface_CoordinateSystemSet - - !>Get the coordinate system of an inteface - INTERFACE cmfe_Interface_CoordinateSystemGet - MODULE PROCEDURE cmfe_Interface_CoordinateSystemGetNumber - MODULE PROCEDURE cmfe_Interface_CoordinateSystemGetObj - END INTERFACE cmfe_Interface_CoordinateSystemGet - - !>Destroys an interface. - INTERFACE cmfe_Interface_Destroy - MODULE PROCEDURE cmfe_Interface_DestroyNumber - MODULE PROCEDURE cmfe_Interface_DestroyObj - END INTERFACE cmfe_Interface_Destroy - - !>Returns the label of an interface. - INTERFACE cmfe_Interface_LabelGet - MODULE PROCEDURE cmfe_Interface_LabelGetCNumber - MODULE PROCEDURE cmfe_Interface_LabelGetCObj - MODULE PROCEDURE cmfe_Interface_LabelGetVSNumber - MODULE PROCEDURE cmfe_Interface_LabelGetVSObj - END INTERFACE cmfe_Interface_LabelGet - - !>Sets/changes the label of an interface. - INTERFACE cmfe_Interface_LabelSet - MODULE PROCEDURE cmfe_Interface_LabelSetCNumber - MODULE PROCEDURE cmfe_Interface_LabelSetCObj - MODULE PROCEDURE cmfe_Interface_LabelSetVSNumber - MODULE PROCEDURE cmfe_Interface_LabelSetVSObj - END INTERFACE cmfe_Interface_LabelSet - - !>Returns the nodes for a interface. - INTERFACE cmfe_Interface_NodesGet - MODULE PROCEDURE cmfe_Interface_NodesGetObj - END INTERFACE cmfe_Interface_NodesGet - - !>Finishes the creation of an interface meshes connectivity. \see OpenCMISS::Iron::cmfe_InterfaceMeshConnectivity_CreateStart - INTERFACE cmfe_InterfaceMeshConnectivity_CreateFinish - MODULE PROCEDURE cmfe_InterfaceMeshConnectivity_CreateFinishNumber - MODULE PROCEDURE cmfe_InterfaceMeshConnectivity_CreateFinishObj - END INTERFACE cmfe_InterfaceMeshConnectivity_CreateFinish - - !>Starts the creation of an interface meshes connectivity. - INTERFACE cmfe_InterfaceMeshConnectivity_CreateStart - MODULE PROCEDURE cmfe_InterfaceMeshConnectivity_CreateStartNumber - MODULE PROCEDURE cmfe_InterfaceMeshConnectivity_CreateStartObj - END INTERFACE cmfe_InterfaceMeshConnectivity_CreateStart - - !>Sets the element xi values for the mesh connectivity between an element in the interface mesh and an element in a region mesh - INTERFACE cmfe_InterfaceMeshConnectivity_ElementXiSet - MODULE PROCEDURE cmfe_InterfaceMeshConnectivity_ElementXiSetNumber - MODULE PROCEDURE cmfe_InterfaceMeshConnectivity_ElementXiSetObj - END INTERFACE cmfe_InterfaceMeshConnectivity_ElementXiSet - - !>Sets the number of elements coupled through a given interface mesh element - INTERFACE cmfe_InterfaceMeshConnectivity_ElementNumberSet - MODULE PROCEDURE cmfe_InterfaceMeshConnectivity_ElementNumberSetNumber - MODULE PROCEDURE cmfe_InterfaceMeshConnectivity_ElementNumberSetObj - END INTERFACE cmfe_InterfaceMeshConnectivity_ElementNumberSet - - !>Sets the coupled node numbers - INTERFACE cmfe_InterfaceMeshConnectivity_NodeNumberSet - MODULE PROCEDURE cmfe_InterfaceMeshConnectivity_NodeNumberSetNumber - MODULE PROCEDURE cmfe_InterfaceMeshConnectivity_NodeNumberSetObj - END INTERFACE cmfe_InterfaceMeshConnectivity_NodeNumberSet - - !>Sets the number of elements coupled through a given interface mesh element - INTERFACE cmfe_InterfaceMeshConnectivity_BasisSet - MODULE PROCEDURE cmfe_InterfaceMeshConnectivity_BasisSetNumber - MODULE PROCEDURE cmfe_InterfaceMeshConnectivity_BasisSetObj - END INTERFACE cmfe_InterfaceMeshConnectivity_BasisSet - - !>Destroys an interface meshes connectivity. - INTERFACE cmfe_InterfaceMeshConnectivity_Destroy - MODULE PROCEDURE cmfe_InterfaceMeshConnectivity_DestroyNumber - MODULE PROCEDURE cmfe_InterfaceMeshConnectivity_DestroyObj - END INTERFACE cmfe_InterfaceMeshConnectivity_Destroy - - !>Finishes the creation of an interface points connectivity. - INTERFACE cmfe_InterfacePointsConnectivity_CreateFinish - MODULE PROCEDURE cmfe_InterfacePointsConnectivity_CreateFinishNumber - MODULE PROCEDURE cmfe_InterfacePointsConnectivity_CreateFinishObj - END INTERFACE cmfe_InterfacePointsConnectivity_CreateFinish - - !>Starts the creation of an interface points connectivity. - INTERFACE cmfe_InterfacePointsConnectivity_CreateStart - MODULE PROCEDURE cmfe_InterfacePointsConnectivity_CreateStartNumber - MODULE PROCEDURE cmfe_InterfacePointsConnectivity_CreateStartObj - END INTERFACE cmfe_InterfacePointsConnectivity_CreateStart - - !>Destroys an interface points connectivity. - INTERFACE cmfe_InterfacePointsConnectivity_Destroy - MODULE PROCEDURE cmfe_InterfacePointsConnectivity_DestroyNumber - MODULE PROCEDURE cmfe_InterfacePointsConnectivity_DestroyObj - END INTERFACE cmfe_InterfacePointsConnectivity_Destroy - - !>Get the coupled mesh element number that defines points connectivity - INTERFACE cmfe_InterfacePointsConnectivity_ElementNumberGet - MODULE PROCEDURE cmfe_InterfacePointsConnectivity_ElementNumberGetNumber - MODULE PROCEDURE cmfe_InterfacePointsConnectivity_ElementNumberGetObj - END INTERFACE cmfe_InterfacePointsConnectivity_ElementNumberGet - - !>Gets the element xi values for the points connectivity between a data point in the interface mesh and an element in a region mesh - INTERFACE cmfe_InterfacePointsConnectivity_PointXiGet - MODULE PROCEDURE cmfe_InterfacePointsConnectivity_PointXiGetNumber - MODULE PROCEDURE cmfe_InterfacePointsConnectivity_PointXiGetObj - END INTERFACE cmfe_InterfacePointsConnectivity_PointXiGet - - !>Sets the coupled mesh element number that defines points connectivity - INTERFACE cmfe_InterfacePointsConnectivity_ElementNumberSet - MODULE PROCEDURE cmfe_InterfacePointsConnectivity_ElementNumberSetNumber - MODULE PROCEDURE cmfe_InterfacePointsConnectivity_ElementNumberSetObj - END INTERFACE cmfe_InterfacePointsConnectivity_ElementNumberSet - - !>Sets the element xi values for the points connectivity between a data point in the interface mesh and an element in a region mesh - INTERFACE cmfe_InterfacePointsConnectivity_PointXiSet - MODULE PROCEDURE cmfe_InterfacePointsConnectivity_PointXiSetNumber - MODULE PROCEDURE cmfe_InterfacePointsConnectivity_PointXiSetObj - END INTERFACE cmfe_InterfacePointsConnectivity_PointXiSet - - !>Update points connectivity information with projection results - INTERFACE cmfe_InterfacePointsConnectivity_UpdateFromProjection - MODULE PROCEDURE cmfe_InterfacePointsConnectivity_UpdateFromProjectionRNumber - MODULE PROCEDURE cmfe_InterfacePointsConnectivity_UpdateFromProjectionINumber - MODULE PROCEDURE cmfe_InterfacePointsConnectivity_UpdateFromProjectionObj - END INTERFACE cmfe_InterfacePointsConnectivity_UpdateFromProjection + !>Starts the creation of a region. \see OpenCMISS::Iron::cmfe_Region_CreateFinish + INTERFACE cmfe_Region_CreateStart + MODULE PROCEDURE cmfe_Region_CreateStartNumber + MODULE PROCEDURE cmfe_Region_CreateStartObj + END INTERFACE cmfe_Region_CreateStart - PUBLIC cmfe_Interface_MeshAdd + !>Returns the data points for a region. + INTERFACE cmfe_Region_DataPointsGet + MODULE PROCEDURE cmfe_Region_DataPointsGetObj + END INTERFACE cmfe_Region_DataPointsGet - PUBLIC cmfe_Interface_CreateFinish,cmfe_Interface_CreateStart + !>Destroys a region. + INTERFACE cmfe_Region_Destroy + MODULE PROCEDURE cmfe_Region_DestroyNumber + MODULE PROCEDURE cmfe_Region_DestroyObj + END INTERFACE cmfe_Region_Destroy - PUBLIC cmfe_Interface_CoordinateSystemSet,cmfe_Interface_CoordinateSystemGet + !>Returns the label of a region. + INTERFACE cmfe_Region_LabelGet + MODULE PROCEDURE cmfe_Region_LabelGetCNumber + MODULE PROCEDURE cmfe_Region_LabelGetCObj + MODULE PROCEDURE cmfe_Region_LabelGetVSNumber + MODULE PROCEDURE cmfe_Region_LabelGetVSObj + END INTERFACE cmfe_Region_LabelGet - PUBLIC cmfe_Interface_Destroy + !>Sets/changes the label of a region. + INTERFACE cmfe_Region_LabelSet + MODULE PROCEDURE cmfe_Region_LabelSetCNumber + MODULE PROCEDURE cmfe_Region_LabelSetCObj + MODULE PROCEDURE cmfe_Region_LabelSetVSNumber + MODULE PROCEDURE cmfe_Region_LabelSetVSObj + END INTERFACE cmfe_Region_LabelSet - PUBLIC cmfe_Interface_LabelGet,cmfe_Interface_LabelSet + !>Returns the nodes for a region. + INTERFACE cmfe_Region_NodesGet + MODULE PROCEDURE cmfe_Region_NodesGetObj + END INTERFACE cmfe_Region_NodesGet - PUBLIC cmfe_Interface_NodesGet + PUBLIC cmfe_Region_CoordinateSystemGet,cmfe_Region_CoordinateSystemSet - PUBLIC cmfe_InterfaceMeshConnectivity_CreateFinish,cmfe_InterfaceMeshConnectivity_CreateStart + PUBLIC cmfe_Region_CreateFinish,cmfe_Region_CreateStart - PUBLIC cmfe_InterfaceMeshConnectivity_Destroy,cmfe_InterfaceMeshConnectivity_BasisSet + PUBLIC cmfe_Region_DataPointsGet - PUBLIC cmfe_InterfaceMeshConnectivity_ElementNumberSet,cmfe_InterfaceMeshConnectivity_ElementXiSet + PUBLIC cmfe_Region_Destroy - PUBLIC cmfe_InterfaceMeshConnectivity_NodeNumberSet + PUBLIC cmfe_Region_LabelGet,cmfe_Region_LabelSet - PUBLIC cmfe_InterfacePointsConnectivity_CreateFinish,cmfe_InterfacePointsConnectivity_CreateStart + PUBLIC cmfe_Region_NodesGet - PUBLIC cmfe_InterfacePointsConnectivity_Destroy +!================================================================================================================================== +! +! SOLVER_ROUTINES +! +!================================================================================================================================== + + !Module parameters + + !> \addtogroup OpenCMISS_CellMLEquationsConstants OpenCMISS::Iron::CellMLEquations::Constants + !> \brief CellML equations constants. + !>@{ + !> \addtogroup OpenCMISS_CellMLEquationsLinearityTypes OpenCMISS::Iron::CellMLEquations::Constants::LinearityTypes + !> \brief The CellML equations linearity types + !> \see OpenCMISS::Iron::CellMLEquations,OpenCMISS + !>@{ + INTEGER(INTG), PARAMETER :: CMFE_CELLML_EQUATIONS_LINEAR = CELLML_EQUATIONS_LINEAR !@} + !> \addtogroup OpenCMISS_CellMLEquationsTimeDependenceTypes OpenCMISS::Iron::CellMLEquations::Constants:TimeDependenceTypes + !> \brief The CellML equations time dependence types + !> \see OpenCMISS::Iron::CellMLEquations,OpenCMISS + !>@{ + INTEGER(INTG), PARAMETER :: CMFE_CELLML_EQUATIONS_STATIC = CELLML_EQUATIONS_STATIC !@} + !>@} + + !> \addtogroup OpenCMISS_SolverConstants OpenCMISS::Iron::Solver::Constants + !> \brief Solver constants. + !>@{ + !> \addtogroup OpenCMISS_SolverTypes OpenCMISS::Iron::Solver::SolverTypes + !> \brief The types of solver + !> \see OpenCMISS::Iron::Solver::Constants,OpenCMISS + !>@{ + INTEGER(INTG), PARAMETER :: CMFE_SOLVER_LINEAR_TYPE = SOLVER_LINEAR_TYPE !@} + !> \addtogroup OpenCMISS_SolverLibraries OpenCMISS::Iron::Solver::SolverLibraries + !> \brief The types of solver libraries. + !> \see OpenCMISS::Iron::Solver::Constants,OpenCMISS + !>@{ + INTEGER(INTG), PARAMETER :: CMFE_SOLVER_CMISS_LIBRARY = SOLVER_CMISS_LIBRARY !@} + !> \addtogroup OpenCMISS_LinearSolverTypes OpenCMISS::Iron::Solver::LinearSolverTypes + !> \brief The types of linear solvers. + !> \see OpenCMISS::Iron::Solver::Constants,OpenCMISS + !>@{ + INTEGER(INTG), PARAMETER :: CMFE_SOLVER_LINEAR_DIRECT_SOLVE_TYPE = SOLVER_LINEAR_DIRECT_SOLVE_TYPE !@} + !> \addtogroup OpenCMISS_DirectLinearSolverTypes OpenCMISS::Iron::Solver::DirectLinearSolverTypes + !> \brief The types of direct linear solvers. \todo Move libraries to a more appropriate place. + !> \see OpenCMISS::Iron::Solver::Constants,OpenCMISS + !>@{ + INTEGER(INTG), PARAMETER :: CMFE_SOLVER_DIRECT_LU = SOLVER_DIRECT_LU !@} + !> \addtogroup OpenCMISS_IterativeLinearSolverTypes OpenCMISS::Iron::Solver::IterativeLinearSolverTypes + !> \brief The types of iterative linear solvers. + !> \see OpenCMISS::Iron::Solver::Constants,OpenCMISS + !>@{ + INTEGER(INTG), PARAMETER :: CMFE_SOLVER_ITERATIVE_RICHARDSON = SOLVER_ITERATIVE_RICHARDSON !@} + !> \addtogroup OpenCMISS_IterativePreconditionerTypes OpenCMISS::Iron::Solver::IterativePreconditionerTypes + !> \brief The types of iterative preconditioners. + !> \see OpenCMISS::Iron::Solver::Constants,OpenCMISS + !>@{ + INTEGER(INTG), PARAMETER :: CMFE_SOLVER_ITERATIVE_NO_PRECONDITIONER = SOLVER_ITERATIVE_NO_PRECONDITIONER !@} + !> \addtogroup OpenCMISS_NonlinearSolverTypes OpenCMISS::Iron::Solver::NonlinearSolverTypes + !> \brief The types of nonlinear solvers. + !> \see OpenCMISS::Iron::Solver::Constants,OpenCMISS + !>@{ + INTEGER(INTG), PARAMETER :: CMFE_SOLVER_NONLINEAR_NEWTON = SOLVER_NONLINEAR_NEWTON !@} + !> \addtogroup OpenCMISS_QuasiNewtonSolverTypes OpenCMISS::Iron::Solver::QuasiNewtonSolverTypes + !> \brief The types of nonlinear Quasi-Newton solvers + !> \see OpenCMISS::Iron::Solver::Constants,OpenCMISS + !>@{ + INTEGER(INTG), PARAMETER :: CMFE_SOLVER_QUASI_NEWTON_LINESEARCH=SOLVER_QUASI_NEWTON_LINESEARCH !@} + !> \addtogroup OpenCMISS_QuasiNewtonTypes OpenCMISS::Iron::Solver::QuasiNewtonTypes + !> \brief The nonlinear Quasi-Newton types + !> \see OpenCMISS::Iron::Solver::Constants,OpenCMISS + !>@{ + INTEGER(INTG), PARAMETER :: CMFE_SOLVER_QUASI_NEWTON_LBFGS=SOLVER_QUASI_NEWTON_LBFGS !@} + !> \addtogroup OpenCMISS_QuasiNewtonLineSearchTypes OpenCMISS::Iron::Solver::NonlinearQuasiNewtonLineSearchTypes + !> \brief The types of line search techniques for Quasi-Newton line search nonlinear solvers + !> \see OpenCMISS::Iron::Solver::Constants,OpenCMISS + !>@{ + INTEGER(INTG), PARAMETER :: CMFE_SOLVER_QUASI_NEWTON_LINESEARCH_BASIC=SOLVER_QUASI_NEWTON_LINESEARCH_BASIC !@} + !> \addtogroup OpenCMISS_QuasiNewtonRestartTypes OpenCMISS::Iron::Solver::QuasiNewtonRestartTypes + !> \brief The nonlinear Quasi-Newton restart types + !> \see OpenCMISS::Iron::Solver::Constants,OpenCMISS + !>@{ + INTEGER(INTG), PARAMETER :: CMFE_SOLVER_QUASI_NEWTON_RESTART_NONE=SOLVER_QUASI_NEWTON_RESTART_NONE !@} + !> \addtogroup OpenCMISS_QuasiNewtonScaleTypes OpenCMISS::Iron::Solver::QuasiNewtonScaleTypes + !> \brief The nonlinear Quasi-Newton scale types + !> \see OpenCMISS::Iron::Solver::Constants,OpenCMISS + !>@{ + INTEGER(INTG), PARAMETER :: CMFE_SOLVER_QUASI_NEWTON_SCALE_NONE=SOLVER_QUASI_NEWTON_SCALE_NONE !@} + !> \addtogroup OpenCMISS_NewtonSolverTypes OpenCMISS::Iron::Solver::NewtonSolverTypes + !> \brief The types of nonlinear Newton solvers. + !> \see OpenCMISS::Iron::Solver::Constants,OpenCMISS + !>@{ + INTEGER(INTG), PARAMETER :: CMFE_SOLVER_NEWTON_LINESEARCH = SOLVER_NEWTON_LINESEARCH !@} + !> \addtogroup OpenCMISS_NewtonLineSearchTypes OpenCMISS::Iron::Solver::NewtonLineSearchTypes + !> \brief The types line search techniques for Newton line search nonlinear solvers. + !> \see OpenCMISS::Iron::Solver::Constants,OpenCMISS + !>@{ + INTEGER(INTG), PARAMETER :: CMFE_SOLVER_NEWTON_LINESEARCH_LINEAR = SOLVER_NEWTON_LINESEARCH_LINEAR !@} + !> \addtogroup OpenCMISS_JacobianCalculationTypes OpenCMISS::Iron::Solver::JacobianCalculationTypes + !> \brief The Jacobian calculation types for a nonlinear solver. + !> \see OpenCMISS::Iron::Solver::Constants,OpenCMISS + !>@{ + INTEGER(INTG), PARAMETER :: CMFE_SOLVER_NEWTON_JACOBIAN_NOT_CALCULATED = SOLVER_NEWTON_JACOBIAN_NOT_CALCULATED !@} + !> \addtogroup OpenCMISS_NewtonConvergenceTypes OpenCMISS::Iron::Solver::NewtonConvergenceTypes + !> \brief The convergence test types for a nonlinear newton solver. + !> \see OpenCMISS::Iron::Solver::Constants,OpenCMISS + !>@{ + INTEGER(INTG), PARAMETER :: CMFE_SOLVER_NEWTON_CONVERGENCE_PETSC_DEFAULT = SOLVER_NEWTON_CONVERGENCE_PETSC_DEFAULT !@} + !> \addtogroup OpenCMISS_DynamicOrderTypes OpenCMISS::Iron::Solver::DynamicOrderTypes + !> \brief The order types for a dynamic solver. + !> \see OpenCMISS::Iron::Solver::Constants,OpenCMISS + !>@{ + INTEGER(INTG), PARAMETER :: CMFE_SOLVER_DYNAMIC_FIRST_ORDER = SOLVER_DYNAMIC_FIRST_ORDER !@} + !> \addtogroup OpenCMISS_DynamicLinearityTypes OpenCMISS::Iron::Solver::DynamicLinearityTypes + !> \brief The time linearity types for a dynamic solver. + !> \see OpenCMISS::Iron::Solver::Constants,OpenCMISS + !>@{ + INTEGER(INTG), PARAMETER :: CMFE_SOLVER_DYNAMIC_LINEAR = SOLVER_DYNAMIC_LINEAR !@} + !> \addtogroup OpenCMISS_DynamicDegreeTypes OpenCMISS::Iron::Solver::DynamicDegreeTypes + !> \brief The time interpolation polynomial degree types for a dynamic solver. + !> \see OpenCMISS::Iron::Solver::Constants,OpenCMISS + !>@{ + INTEGER(INTG), PARAMETER :: CMFE_SOLVER_DYNAMIC_FIRST_DEGREE = SOLVER_DYNAMIC_FIRST_DEGREE !@} + !> \addtogroup OpenCMISS_DynamicSchemeTypes OpenCMISS::Iron::Solver::DynamicSchemeTypes + !> \brief The types of dynamic solver scheme. + !> \see OpenCMISS::Iron::Solver::Constants,OpenCMISS + !>@{ + INTEGER(INTG), PARAMETER :: CMFE_SOLVER_DYNAMIC_EULER_SCHEME = SOLVER_DYNAMIC_EULER_SCHEME !@} + !> \addtogroup OpenCMISS_DAETypes OpenCMISS::Iron::Solver::DAETypes + !> \brief The type of differential-algebraic equation. + !> \see OpenCMISS::Iron::Solver::Constants,OpenCMISS + !>@{ + INTEGER(INTG), PARAMETER :: CMFE_SOLVER_DAE_DIFFERENTIAL_ONLY = SOLVER_DAE_DIFFERENTIAL_ONLY !@} + !> \addtogroup OpenCMISS_DAESolverTypes OpenCMISS::Iron::Solver::DAESolverTypes + !> \brief The differential-algebraic equation solver types for a differential-algebraic equation solver. + !> \see OpenCMISS::Iron::Solver::Constants,OpenCMISS + !>@{ + INTEGER(INTG), PARAMETER :: CMFE_SOLVER_DAE_EULER = SOLVER_DAE_EULER !@} + !> \addtogroup OpenCMISS_EulerDAESolverTypes OpenCMISS::Iron::Solver::EulerDAESolverTypes + !> \brief The Euler solver types for a differential-algebriac equation solver. + !> \see OpenCMISS::Iron::Solver::Constants,OpenCMISS + !>@{ + INTEGER(INTG), PARAMETER :: CMFE_SOLVER_DAE_EULER_FORWARD = SOLVER_DAE_EULER_FORWARD !@} + !> \addtogroup OpenCMISS_SolutionInitialiseTypes OpenCMISS::Iron::Solver::SolutionInitialiseTypes + !> \brief The types of solution initialisation. + !> \see OpenCMISS::Iron::Solver::Constants,OpenCMISS + !>@{ + INTEGER(INTG), PARAMETER :: CMFE_SOLVER_SOLUTION_INITIALISE_ZERO = SOLVER_SOLUTION_INITIALISE_ZERO !@} + !> \addtogroup OpenCMISS_SolverOutputTypes OpenCMISS::Iron::Solver::OutputTypes + !> \brief The types of output. + !> \see OpenCMISS::Iron::Solver::Constants,OpenCMISS + !>@{ + INTEGER(INTG), PARAMETER :: CMFE_SOLVER_NO_OUTPUT = SOLVER_NO_OUTPUT !@} + !> \addtogroup OpenCMISS_SolverEquationsSparsityTypes OpenCMISS::Iron::SolverEquations::SparsityTypes + !> \brief The types of sparse solver equations matrices. + !> \see OpenCMISS::Iron::Solver::Constants,OpenCMISS + !>@{ + INTEGER(INTG), PARAMETER :: CMFE_SOLVER_SPARSE_MATRICES = SOLVER_SPARSE_MATRICES !@} + !> \addtogroup OpenCMISS_SolverEquationsSymmetryTypes OpenCMISS::Iron::SolverEquations::SymmetryTypes + !> \brief The types of symmetry for the solver equations matrices. + !> \see OpenCMISS::Iron::Solver::Constants,OpenCMISS + !>@{ + INTEGER(INTG), PARAMETER :: CMFE_SOLVER_SYMMETRIC_MATRICES = SOLVER_SYMMETRIC_MATRICES !@} + !>@} + + !Module types + + !Module variables + + !Interfaces + + !>Returns the CellML equations for a solver. + INTERFACE cmfe_Solver_CellMLEquationsGet + MODULE PROCEDURE cmfe_Solver_CellMLEquationsGetNumber0 + MODULE PROCEDURE cmfe_Solver_CellMLEquationsGetNumber1 + MODULE PROCEDURE cmfe_Solver_CellMLEquationsGetObj + END INTERFACE cmfe_Solver_CellMLEquationsGet + + !>Adds CellML environments to CellML equations. + INTERFACE cmfe_CellMLEquations_CellMLAdd + MODULE PROCEDURE cmfe_CellMLEquations_CellMLAddNumber0 + MODULE PROCEDURE cmfe_CellMLEquations_CellMLAddNumber1 + MODULE PROCEDURE cmfe_CellMLEquations_CellMLAddObj + END INTERFACE cmfe_CellMLEquations_CellMLAdd + + !>Returns the linearity type of CellML equations. + INTERFACE cmfe_CellMLEquations_LinearityTypeGet + MODULE PROCEDURE cmfe_CellMLEquations_LinearityTypeGetNumber + MODULE PROCEDURE cmfe_CellMLEquations_LinearityTypeGetObj + END INTERFACE cmfe_CellMLEquations_LinearityTypeGet + + !>Sets/changes the linearity type of CellML equations. + INTERFACE cmfe_CellMLEquations_LinearityTypeSet + MODULE PROCEDURE cmfe_CellMLEquations_LinearityTypeSetNumber + MODULE PROCEDURE cmfe_CellMLEquations_LinearityTypeSetObj + END INTERFACE cmfe_CellMLEquations_LinearityTypeSet + + !>Returns the time dependence type of CellML equations. + INTERFACE cmfe_CellMLEquations_TimeDependenceTypeGet + MODULE PROCEDURE cmfe_CellMLEquations_TimeDependenceTypeGetNumber + MODULE PROCEDURE cmfe_CellMLEquations_TimeDependenceTypeGetObj + END INTERFACE cmfe_CellMLEquations_TimeDependenceTypeGet + + !>Sets/changes the time dependence type of CellML equations. + INTERFACE cmfe_CellMLEquations_TimeDependenceTypeSet + MODULE PROCEDURE cmfe_CellMLEquations_TimeDependenceTypeSetNumber + MODULE PROCEDURE cmfe_CellMLEquations_TimeDependenceTypeSetObj + END INTERFACE cmfe_CellMLEquations_TimeDependenceTypeSet + + !>Returns the solver type for an Euler differential-algebraic equation solver. \todo should this be CMISSSolver_DAEEulerSolverTypeGet??? + INTERFACE cmfe_Solver_DAEEulerSolverTypeGet + MODULE PROCEDURE cmfe_Solver_DAEEulerSolverTypeGetNumber0 + MODULE PROCEDURE cmfe_Solver_DAEEulerSolverTypeGetNumber1 + MODULE PROCEDURE cmfe_Solver_DAEEulerSolverTypeGetObj + END INTERFACE cmfe_Solver_DAEEulerSolverTypeGet + + !>Sets/changes the solver type for an Euler differential-algebraic equation solver. \todo should this be CMISSSolver_DAEEulerSolverTypeSet??? + INTERFACE cmfe_Solver_DAEEulerSolverTypeSet + MODULE PROCEDURE cmfe_Solver_DAEEulerSolverTypeSetNumber0 + MODULE PROCEDURE cmfe_Solver_DAEEulerSolverTypeSetNumber1 + MODULE PROCEDURE cmfe_Solver_DAEEulerSolverTypeSetObj + END INTERFACE cmfe_Solver_DAEEulerSolverTypeSet + + !>Returns the solver type for an differential-algebraic equation solver. + INTERFACE cmfe_Solver_DAESolverTypeGet + MODULE PROCEDURE cmfe_Solver_DAESolverTypeGetNumber0 + MODULE PROCEDURE cmfe_Solver_DAESolverTypeGetNumber1 + MODULE PROCEDURE cmfe_Solver_DAESolverTypeGetObj + END INTERFACE cmfe_Solver_DAESolverTypeGet + + !>Sets/changes the solver type for an differential-algebraic equation solver. + INTERFACE cmfe_Solver_DAESolverTypeSet + MODULE PROCEDURE cmfe_Solver_DAESolverTypeSetNumber0 + MODULE PROCEDURE cmfe_Solver_DAESolverTypeSetNumber1 + MODULE PROCEDURE cmfe_Solver_DAESolverTypeSetObj + END INTERFACE cmfe_Solver_DAESolverTypeSet + + !>Sets/changes the times for a differential-algebraic equation solver. + INTERFACE cmfe_Solver_DAETimesSet + MODULE PROCEDURE cmfe_Solver_DAETimesSetNumber0 + MODULE PROCEDURE cmfe_Solver_DAETimesSetNumber1 + MODULE PROCEDURE cmfe_Solver_DAETimesSetObj + END INTERFACE cmfe_Solver_DAETimesSet + + !>Sets/changes the (initial) time step for a differential-algebraic equation solver. + INTERFACE cmfe_Solver_DAETimeStepSet + MODULE PROCEDURE cmfe_Solver_DAETimeStepSetNumber0 + MODULE PROCEDURE cmfe_Solver_DAETimeStepSetNumber1 + MODULE PROCEDURE cmfe_Solver_DAETimeStepSetObj + END INTERFACE cmfe_Solver_DAETimeStepSet + + !>Returns the degree of the polynomial used to interpolate time for a dynamic solver. + INTERFACE cmfe_Solver_DynamicDegreeGet + MODULE PROCEDURE cmfe_Solver_DynamicDegreeGetNumber0 + MODULE PROCEDURE cmfe_Solver_DynamicDegreeGetNumber1 + MODULE PROCEDURE cmfe_Solver_DynamicDegreeGetObj + END INTERFACE cmfe_Solver_DynamicDegreeGet + + !>Sets/changes the degree of the polynomial used to interpolate time for a dynamic solver. + INTERFACE cmfe_Solver_DynamicDegreeSet + MODULE PROCEDURE cmfe_Solver_DynamicDegreeSetNumber0 + MODULE PROCEDURE cmfe_Solver_DynamicDegreeSetNumber1 + MODULE PROCEDURE cmfe_Solver_DynamicDegreeSetObj + END INTERFACE cmfe_Solver_DynamicDegreeSet + + !>Returns the linearity type for the dynamic solver. + INTERFACE cmfe_Solver_DynamicLinearityTypeGet + MODULE PROCEDURE cmfe_Solver_DynamicLinearityTypeGetNumber0 + MODULE PROCEDURE cmfe_Solver_DynamicLinearityTypeGetNumber1 + MODULE PROCEDURE cmfe_Solver_DynamicLinearityTypeGetObj + END INTERFACE cmfe_Solver_DynamicLinearityTypeGet + + !>Returns the linear solver associated with a linear dynamic solver. + INTERFACE cmfe_Solver_DynamicLinearSolverGet + MODULE PROCEDURE cmfe_Solver_DynamicLinearSolverGetNumber0 + MODULE PROCEDURE cmfe_Solver_DynamicLinearSolverGetNumber1 + MODULE PROCEDURE cmfe_Solver_DynamicLinearSolverGetObj + END INTERFACE cmfe_Solver_DynamicLinearSolverGet + + !>Returns the nonlinear solver associated with a nonlinear dynamic solver. + INTERFACE cmfe_Solver_DynamicNonlinearSolverGet + MODULE PROCEDURE cmfe_Solver_DynamicNonlinearSolverGetNumber0 + MODULE PROCEDURE cmfe_Solver_DynamicNonlinearSolverGetNumber1 + MODULE PROCEDURE cmfe_Solver_DynamicNonlinearSolverGetObj + END INTERFACE cmfe_Solver_DynamicNonlinearSolverGet + + !>Sets/changes the scheme for a dynamic solver. + INTERFACE cmfe_Solver_DynamicSchemeSet + MODULE PROCEDURE cmfe_Solver_DynamicSchemeSetNumber0 + MODULE PROCEDURE cmfe_Solver_DynamicSchemeSetNumber1 + MODULE PROCEDURE cmfe_Solver_DynamicSchemeSetObj + END INTERFACE cmfe_Solver_DynamicSchemeSet + + !>Sets/changes the theta scheme values for a dynamic solver. + INTERFACE cmfe_Solver_DynamicThetaSet + MODULE PROCEDURE cmfe_Solver_DynamicThetaSetNumber00 + MODULE PROCEDURE cmfe_Solver_DynamicThetaSetNumber01 + MODULE PROCEDURE cmfe_Solver_DynamicThetaSetNumber10 + MODULE PROCEDURE cmfe_Solver_DynamicThetaSetNumber11 + MODULE PROCEDURE cmfe_Solver_DynamicThetaSetObj0 + MODULE PROCEDURE cmfe_Solver_DynamicThetaSetObj1 + END INTERFACE cmfe_Solver_DynamicThetaSet + + !>Sets/changes the dynamic times for a dynamic solver. + INTERFACE cmfe_Solver_DynamicTimesSet + MODULE PROCEDURE cmfe_Solver_DynamicTimesSetNumber0 + MODULE PROCEDURE cmfe_Solver_DynamicTimesSetNumber1 + MODULE PROCEDURE cmfe_Solver_DynamicTimesSetObj + END INTERFACE cmfe_Solver_DynamicTimesSet + + !Sets the arbitrary path logical for the transformation + INTERFACE cmfe_Solver_GeometricTransformationArbitraryPathSet + MODULE PROCEDURE cmfe_Solver_GeometricTransformationArbitraryPathSetNumber + MODULE PROCEDURE cmfe_Solver_GeometricTransformationArbitraryPathSetObj + END INTERFACE cmfe_Solver_GeometricTransformationArbitraryPathSet + + !Clear transformation for a geometric transformation solver + INTERFACE cmfe_Solver_GeometricTransformationClear + MODULE PROCEDURE cmfe_Solver_GeometricTransformationClearNumber + MODULE PROCEDURE cmfe_Solver_GeometricTransformationClearObj + END INTERFACE cmfe_Solver_GeometricTransformationClear + + !Sets the field to transform + INTERFACE cmfe_Solver_GeometricTransformationFieldSet + MODULE PROCEDURE cmfe_Solver_GeometricTransformationFieldSetNumber + MODULE PROCEDURE cmfe_Solver_GeometricTransformationFieldSetObj + END INTERFACE cmfe_Solver_GeometricTransformationFieldSet + + !Sets the full transformation matrix for a geometric transformation + INTERFACE cmfe_Solver_GeometricTransformationMatrixSet + MODULE PROCEDURE cmfe_Solver_GeometricTransformationMatrixSetNumber0 + MODULE PROCEDURE cmfe_Solver_GeometricTransformationMatrixSetObj0 + MODULE PROCEDURE cmfe_Solver_GeometricTransformationMatrixSetNumber1 + MODULE PROCEDURE cmfe_Solver_GeometricTransformationMatrixSetObj1 + END INTERFACE cmfe_Solver_GeometricTransformationMatrixSet + + !Sets number of load increments for the transformation + INTERFACE cmfe_Solver_GeometricTransformationNumberOfLoadIncrementsSet + MODULE PROCEDURE cmfe_Solver_GeometricTransformationNoLoadIncrementsSetNumber + MODULE PROCEDURE cmfe_Solver_GeometricTransformationNoLoadIncrementsSetObj + END INTERFACE cmfe_Solver_GeometricTransformationNumberOfLoadIncrementsSet + + !Sets the rotation for a geometric transformation + INTERFACE cmfe_Solver_GeometricTransformationRotationSet + MODULE PROCEDURE cmfe_Solver_GeometricTransformationRotationSetNumber0 + MODULE PROCEDURE cmfe_Solver_GeometricTransformationRotationSetObj0 + MODULE PROCEDURE cmfe_Solver_GeometricTransformationRotationSetNumber1 + MODULE PROCEDURE cmfe_Solver_GeometricTransformationRotationSetObj1 + END INTERFACE cmfe_Solver_GeometricTransformationRotationSet + + !Sets the scalings for a uni-directional geometric transformation + INTERFACE cmfe_Solver_GeometricTransformationScalingsSet + MODULE PROCEDURE cmfe_Solver_GeometricTransformationScalingsSetNumber + MODULE PROCEDURE cmfe_Solver_GeometricTransformationScalingsSetObj + END INTERFACE cmfe_Solver_GeometricTransformationScalingsSet + + !Sets the translation for a geometric transformation + INTERFACE cmfe_Solver_GeometricTransformationTranslationSet + MODULE PROCEDURE cmfe_Solver_GeometricTransformationTranslationSetNumber0 + MODULE PROCEDURE cmfe_Solver_GeometricTransformationTranslationSetObj0 + MODULE PROCEDURE cmfe_Solver_GeometricTransformationTranslationSetNumber1 + MODULE PROCEDURE cmfe_Solver_GeometricTransformationTranslationSetObj1 + END INTERFACE cmfe_Solver_GeometricTransformationTranslationSet + + !>Returns the label of a solver. + INTERFACE cmfe_Solver_LabelGet + MODULE PROCEDURE cmfe_Solver_LabelGetCNumber0 + MODULE PROCEDURE cmfe_Solver_LabelGetCNumber1 + MODULE PROCEDURE cmfe_Solver_LabelGetCObj + MODULE PROCEDURE cmfe_Solver_LabelGetVSNumber0 + MODULE PROCEDURE cmfe_Solver_LabelGetVSNumber1 + MODULE PROCEDURE cmfe_Solver_LabelGetVSObj + END INTERFACE cmfe_Solver_LabelGet + + !>Sets/changes the label of a control loop. + INTERFACE cmfe_Solver_LabelSet + MODULE PROCEDURE cmfe_Solver_LabelSetCNumber0 + MODULE PROCEDURE cmfe_Solver_LabelSetCNumber1 + MODULE PROCEDURE cmfe_Solver_LabelSetCObj + MODULE PROCEDURE cmfe_Solver_LabelSetVSNumber0 + MODULE PROCEDURE cmfe_Solver_LabelSetVSNumber1 + MODULE PROCEDURE cmfe_Solver_LabelSetVSObj + END INTERFACE cmfe_Solver_LabelSet + + !>Returns the type of library to use for the solver. + INTERFACE cmfe_Solver_LibraryTypeGet + MODULE PROCEDURE cmfe_Solver_LibraryTypeGetNumber0 + MODULE PROCEDURE cmfe_Solver_LibraryTypeGetNumber1 + MODULE PROCEDURE cmfe_Solver_LibraryTypeGetObj + END INTERFACE cmfe_Solver_LibraryTypeGet + + !>Sets/changes the type of library to use for the solver. + INTERFACE cmfe_Solver_LibraryTypeSet + MODULE PROCEDURE cmfe_Solver_LibraryTypeSetNumber0 + MODULE PROCEDURE cmfe_Solver_LibraryTypeSetNumber1 + MODULE PROCEDURE cmfe_Solver_LibraryTypeSetObj + END INTERFACE cmfe_Solver_LibraryTypeSet + + !>Sets/changes the type of direct linear solver. + INTERFACE cmfe_Solver_LinearDirectTypeSet + MODULE PROCEDURE cmfe_Solver_LinearDirectTypeSetNumber0 + MODULE PROCEDURE cmfe_Solver_LinearDirectTypeSetNumber1 + MODULE PROCEDURE cmfe_Solver_LinearDirectTypeSetObj + END INTERFACE cmfe_Solver_LinearDirectTypeSet + + !>Sets/changes the absolute tolerance for an iterative linear solver. + INTERFACE cmfe_Solver_LinearIterativeAbsoluteToleranceSet + MODULE PROCEDURE cmfe_Solver_LinearIterativeAbsoluteToleranceSetNumber0 + MODULE PROCEDURE cmfe_Solver_LinearIterativeAbsoluteToleranceSetNumber1 + MODULE PROCEDURE cmfe_Solver_LinearIterativeAbsoluteToleranceSetObj + END INTERFACE cmfe_Solver_LinearIterativeAbsoluteToleranceSet + + !>Sets/changes the divergence tolerance for an iterative linear solver. + INTERFACE cmfe_Solver_LinearIterativeDivergenceToleranceSet + MODULE PROCEDURE cmfe_Solver_LinearIterativeDivergenceToleranceSetNumber0 + MODULE PROCEDURE cmfe_Solver_LinearIterativeDivergenceToleranceSetNumber1 + MODULE PROCEDURE cmfe_Solver_LinearIterativeDivergenceToleranceSetObj + END INTERFACE cmfe_Solver_LinearIterativeDivergenceToleranceSet + + !>Sets/changes the GMRES restart value for a GMRES iterative linear solver. + INTERFACE cmfe_Solver_LinearIterativeGMRESRestartSet + MODULE PROCEDURE cmfe_Solver_LinearIterativeGMRESRestartSetNumber0 + MODULE PROCEDURE cmfe_Solver_LinearIterativeGMRESRestartSetNumber1 + MODULE PROCEDURE cmfe_Solver_LinearIterativeGMRESRestartSetObj + END INTERFACE cmfe_Solver_LinearIterativeGMRESRestartSet + + !>Sets/changes the maximum number of iterations for an iterative linear solver. + INTERFACE cmfe_Solver_LinearIterativeMaximumIterationsSet + MODULE PROCEDURE cmfe_Solver_LinearIterativeMaximumIterationsSetNumber0 + MODULE PROCEDURE cmfe_Solver_LinearIterativeMaximumIterationsSetNumber1 + MODULE PROCEDURE cmfe_Solver_LinearIterativeMaximumIterationsSetObj + END INTERFACE cmfe_Solver_LinearIterativeMaximumIterationsSet + + !>Sets/changes the type of preconditioner for an iterative linear solver. + INTERFACE cmfe_Solver_LinearIterativePreconditionerTypeSet + MODULE PROCEDURE cmfe_Solver_LinearIterativePreconditionerTypeSetNumber0 + MODULE PROCEDURE cmfe_Solver_LinearIterativePreconditionerTypeSetNumber1 + MODULE PROCEDURE cmfe_Solver_LinearIterativePreconditionerTypeSetObj + END INTERFACE cmfe_Solver_LinearIterativePreconditionerTypeSet + + !>Sets/changes the relative tolerance for an iterative linear solver. + INTERFACE cmfe_Solver_LinearIterativeRelativeToleranceSet + MODULE PROCEDURE cmfe_Solver_LinearIterativeRelativeToleranceSetNumber0 + MODULE PROCEDURE cmfe_Solver_LinearIterativeRelativeToleranceSetNumber1 + MODULE PROCEDURE cmfe_Solver_LinearIterativeRelativeToleranceSetObj + END INTERFACE cmfe_Solver_LinearIterativeRelativeToleranceSet + + !>Sets/changes the type of iterative linear solver. + INTERFACE cmfe_Solver_LinearIterativeTypeSet + MODULE PROCEDURE cmfe_Solver_LinearIterativeTypeSetNumber0 + MODULE PROCEDURE cmfe_Solver_LinearIterativeTypeSetNumber1 + MODULE PROCEDURE cmfe_Solver_LinearIterativeTypeSetObj + END INTERFACE cmfe_Solver_LinearIterativeTypeSet + + !>Sets/changes the type of linear solver. + INTERFACE cmfe_Solver_LinearTypeSet + MODULE PROCEDURE cmfe_Solver_LinearTypeSetNumber0 + MODULE PROCEDURE cmfe_Solver_LinearTypeSetNumber1 + MODULE PROCEDURE cmfe_Solver_LinearTypeSetObj + END INTERFACE cmfe_Solver_LinearTypeSet + + !>Sets/changes the absolute tolerance for a nonlinear Quasi-Newton solver. + INTERFACE cmfe_Solver_QuasiNewtonAbsoluteToleranceSet + MODULE PROCEDURE cmfe_Solver_QuasiNewtonAbsoluteToleranceSetNumber0 + MODULE PROCEDURE cmfe_Solver_QuasiNewtonAbsoluteToleranceSetNumber1 + MODULE PROCEDURE cmfe_Solver_QuasiNewtonAbsoluteToleranceSetObj + END INTERFACE cmfe_Solver_QuasiNewtonAbsoluteToleranceSet + + !>Enables/disables output monitoring for a nonlinear Quasi-Newton line search solver. + INTERFACE cmfe_Solver_QuasiNewtonLineSearchMonitorOutputSet + MODULE PROCEDURE cmfe_Solver_QuasiNewtonLineSearchMonitorOutputSetNumber0 + MODULE PROCEDURE cmfe_Solver_QuasiNewtonLineSearchMonitorOutputSetNumber1 + MODULE PROCEDURE cmfe_Solver_QuasiNewtonLineSearchMonitorOutputSetObj + END INTERFACE cmfe_Solver_QuasiNewtonLineSearchMonitorOutputSet + + !>Sets/changes the Jacobian calculation type for a nonlinear Quasi-Newton solver. + INTERFACE cmfe_Solver_QuasiNewtonJacobianCalculationTypeSet + MODULE PROCEDURE cmfe_Solver_QuasiNewtonJacobianCalculationTypeSetNumber0 + MODULE PROCEDURE cmfe_Solver_QuasiNewtonJacobianCalculationTypeSetNumber1 + MODULE PROCEDURE cmfe_Solver_QuasiNewtonJacobianCalculationTypeSetObj + END INTERFACE cmfe_Solver_QuasiNewtonJacobianCalculationTypeSet + + !>Returns the linear solver associated with a nonlinear Quasi-Newton solver. + INTERFACE cmfe_Solver_QuasiNewtonLinearSolverGet + MODULE PROCEDURE cmfe_Solver_QuasiNewtonLinearSolverGetNumber0 + MODULE PROCEDURE cmfe_Solver_QuasiNewtonLinearSolverGetNumber1 + MODULE PROCEDURE cmfe_Solver_QuasiNewtonLinearSolverGetObj + END INTERFACE cmfe_Solver_QuasiNewtonLinearSolverGet + + !>Returns the linear solver associated with a nonlinear Quasi-Newton solver. + INTERFACE cmfe_Solver_QuasiNewtonCellMLSolverGet + MODULE PROCEDURE cmfe_Solver_QuasiNewtonCellMLSolverGetNumber0 + MODULE PROCEDURE cmfe_Solver_QuasiNewtonCellMLSolverGetNumber1 + MODULE PROCEDURE cmfe_Solver_QuasiNewtonCellMLSolverGetObj + END INTERFACE cmfe_Solver_QuasiNewtonCellMLSolverGet + + !>Sets/change the convergence test for a nonlinear Quasi-Newton solver. + INTERFACE cmfe_Solver_QuasiNewtonConvergenceTestTypeSet + MODULE PROCEDURE cmfe_Solver_QuasiNewtonConvergenceTestTypeSetNumber0 + MODULE PROCEDURE cmfe_Solver_QuasiNewtonConvergenceTestTypeSetNumber1 + MODULE PROCEDURE cmfe_Solver_QuasiNewtonConvergenceTestTypeSetObj + END INTERFACE cmfe_Solver_QuasiNewtonConvergenceTestTypeSet + + !>Sets/changes the line search maximum step for a nonlinear Quasi-Newton solver. + INTERFACE cmfe_Solver_QuasiNewtonLineSearchMaxStepSet + MODULE PROCEDURE cmfe_Solver_QuasiNewtonLineSearchMaxStepSetNumber0 + MODULE PROCEDURE cmfe_Solver_QuasiNewtonLineSearchMaxStepSetNumber1 + MODULE PROCEDURE cmfe_Solver_QuasiNewtonLineSearchMaxStepSetObj + END INTERFACE cmfe_Solver_QuasiNewtonLineSearchMaxStepSet + + !>Sets/changes the line search step tolerance for a nonlinear Quasi-Newton solver. + INTERFACE cmfe_Solver_QuasiNewtonLineSearchStepTolSet + MODULE PROCEDURE cmfe_Solver_QuasiNewtonLineSearchStepTolSetNumber0 + MODULE PROCEDURE cmfe_Solver_QuasiNewtonLineSearchStepTolSetNumber1 + MODULE PROCEDURE cmfe_Solver_QuasiNewtonLineSearchStepTolSetObj + END INTERFACE cmfe_Solver_QuasiNewtonLineSearchStepTolSet + + !>Sets/changes the type of line search for a nonlinear Quasi-Newton solver. + INTERFACE cmfe_Solver_QuasiNewtonLineSearchTypeSet + MODULE PROCEDURE cmfe_Solver_QuasiNewtonLineSearchTypeSetNumber0 + MODULE PROCEDURE cmfe_Solver_QuasiNewtonLineSearchTypeSetNumber1 + MODULE PROCEDURE cmfe_Solver_QuasiNewtonLineSearchTypeSetObj + END INTERFACE cmfe_Solver_QuasiNewtonLineSearchTypeSet + + !>Sets/changes the maximum number of function evaluations for a nonlinear Quasi-Newton solver. + INTERFACE cmfe_Solver_QuasiNewtonMaximumFunctionEvaluationsSet + MODULE PROCEDURE cmfe_Solver_QuasiNewtonMaximumFunctionEvaluationsSetNumber0 + MODULE PROCEDURE cmfe_Solver_QuasiNewtonMaximumFunctionEvaluationsSetNumber1 + MODULE PROCEDURE cmfe_Solver_QuasiNewtonMaximumFunctionEvaluationsSetObj + END INTERFACE cmfe_Solver_QuasiNewtonMaximumFunctionEvaluationsSet + + !>Sets/changes the maximum number of iterations for a nonlinear Quasi-Newton solver. + INTERFACE cmfe_Solver_QuasiNewtonMaximumIterationsSet + MODULE PROCEDURE cmfe_Solver_QuasiNewtonMaximumIterationsSetNumber0 + MODULE PROCEDURE cmfe_Solver_QuasiNewtonMaximumIterationsSetNumber1 + MODULE PROCEDURE cmfe_Solver_QuasiNewtonMaximumIterationsSetObj + END INTERFACE cmfe_Solver_QuasiNewtonMaximumIterationsSet + + !>Sets/changes the relative tolerance for a nonlinear Quasi-Newton solver. + INTERFACE cmfe_Solver_QuasiNewtonRelativeToleranceSet + MODULE PROCEDURE cmfe_Solver_QuasiNewtonRelativeToleranceSetNumber0 + MODULE PROCEDURE cmfe_Solver_QuasiNewtonRelativeToleranceSetNumber1 + MODULE PROCEDURE cmfe_Solver_QuasiNewtonRelativeToleranceSetObj + END INTERFACE cmfe_Solver_QuasiNewtonRelativeToleranceSet + + !>Sets/changes the solution tolerance for a nonlinear Quasi-Newton solver. + INTERFACE cmfe_Solver_QuasiNewtonSolutionToleranceSet + MODULE PROCEDURE cmfe_Solver_QuasiNewtonSolutionToleranceSetNumber0 + MODULE PROCEDURE cmfe_Solver_QuasiNewtonSolutionToleranceSetNumber1 + MODULE PROCEDURE cmfe_Solver_QuasiNewtonSolutionToleranceSetObj + END INTERFACE cmfe_Solver_QuasiNewtonSolutionToleranceSet + + !>Sets/changes the trust region delta0 tolerance for a nonlinear Quasi-Newton trust region solver. + INTERFACE cmfe_Solver_QuasiNewtonTrustRegionDelta0Set + MODULE PROCEDURE cmfe_Solver_QuasiNewtonTrustRegionDelta0SetNumber0 + MODULE PROCEDURE cmfe_Solver_QuasiNewtonTrustRegionDelta0SetNumber1 + MODULE PROCEDURE cmfe_Solver_QuasiNewtonTrustRegionDelta0SetObj + END INTERFACE cmfe_Solver_QuasiNewtonTrustRegionDelta0Set + + !>Sets/changes the trust region tolerance for a nonlinear Quasi-Newton trust region solver. + INTERFACE cmfe_Solver_QuasiNewtonTrustRegionToleranceSet + MODULE PROCEDURE cmfe_Solver_QuasiNewtonTrustRegionToleranceSetNumber0 + MODULE PROCEDURE cmfe_Solver_QuasiNewtonTrustRegionToleranceSetNumber1 + MODULE PROCEDURE cmfe_Solver_QuasiNewtonTrustRegionToleranceSetObj + END INTERFACE cmfe_Solver_QuasiNewtonTrustRegionToleranceSet + + !>Sets/changes the nonlinear Quasi-Newton restart. + INTERFACE cmfe_Solver_QuasiNewtonRestartSet + MODULE PROCEDURE cmfe_Solver_QuasiNewtonRestartSetNumber0 + MODULE PROCEDURE cmfe_Solver_QuasiNewtonRestartSetNumber1 + MODULE PROCEDURE cmfe_Solver_QuasiNewtonRestartSetObj + END INTERFACE cmfe_Solver_QuasiNewtonRestartSet + + !>Sets/changes the nonlinear Quasi-Newton restart type. + INTERFACE cmfe_Solver_QuasiNewtonRestartTypeSet + MODULE PROCEDURE cmfe_Solver_QuasiNewtonRestartTypeSetNumber0 + MODULE PROCEDURE cmfe_Solver_QuasiNewtonRestartTypeSetNumber1 + MODULE PROCEDURE cmfe_Solver_QuasiNewtonRestartTypeSetObj + END INTERFACE cmfe_Solver_QuasiNewtonRestartTypeSet + + !>Sets/changes the nonlinear Quasi-Newton scale type. + INTERFACE cmfe_Solver_QuasiNewtonScaleTypeSet + MODULE PROCEDURE cmfe_Solver_QuasiNewtonScaleTypeSetNumber0 + MODULE PROCEDURE cmfe_Solver_QuasiNewtonScaleTypeSetNumber1 + MODULE PROCEDURE cmfe_Solver_QuasiNewtonScaleTypeSetObj + END INTERFACE cmfe_Solver_QuasiNewtonScaleTypeSet + + !>Sets/changes the type of nonlinear Quasi-Newton solver. + INTERFACE cmfe_Solver_QuasiNewtonSolveTypeSet + MODULE PROCEDURE cmfe_Solver_QuasiNewtonSolveTypeSetNumber0 + MODULE PROCEDURE cmfe_Solver_QuasiNewtonSolveTypeSetNumber1 + MODULE PROCEDURE cmfe_Solver_QuasiNewtonSolveTypeSetObj + END INTERFACE cmfe_Solver_QuasiNewtonSolveTypeSet + + !>Sets/changes the nonlinear Quasi-Newton type. + INTERFACE cmfe_Solver_QuasiNewtonTypeSet + MODULE PROCEDURE cmfe_Solver_QuasiNewtonTypeSetNumber0 + MODULE PROCEDURE cmfe_Solver_QuasiNewtonTypeSetNumber1 + MODULE PROCEDURE cmfe_Solver_QuasiNewtonTypeSetObj + END INTERFACE cmfe_Solver_QuasiNewtonTypeSet + + !>Sets/changes the absolute tolerance for a nonlinear Newton solver. + INTERFACE cmfe_Solver_NewtonAbsoluteToleranceSet + MODULE PROCEDURE cmfe_Solver_NewtonAbsoluteToleranceSetNumber0 + MODULE PROCEDURE cmfe_Solver_NewtonAbsoluteToleranceSetNumber1 + MODULE PROCEDURE cmfe_Solver_NewtonAbsoluteToleranceSetObj + END INTERFACE cmfe_Solver_NewtonAbsoluteToleranceSet + + !>Enables/disables output monitoring for a nonlinear Newton line search solver. + INTERFACE cmfe_Solver_NewtonLineSearchMonitorOutputSet + MODULE PROCEDURE cmfe_Solver_NewtonLineSearchMonitorOutputSetNumber0 + MODULE PROCEDURE cmfe_Solver_NewtonLineSearchMonitorOutputSetNumber1 + MODULE PROCEDURE cmfe_Solver_NewtonLineSearchMonitorOutputSetObj + END INTERFACE cmfe_Solver_NewtonLineSearchMonitorOutputSet + + !>Sets/changes the Jacobian calculation type for a nonlinear Newton solver. + INTERFACE cmfe_Solver_NewtonJacobianCalculationTypeSet + MODULE PROCEDURE cmfe_Solver_NewtonJacobianCalculationTypeSetNumber0 + MODULE PROCEDURE cmfe_Solver_NewtonJacobianCalculationTypeSetNumber1 + MODULE PROCEDURE cmfe_Solver_NewtonJacobianCalculationTypeSetObj + END INTERFACE cmfe_Solver_NewtonJacobianCalculationTypeSet + + !>Returns the linear solver associated with a nonlinear Newton solver. + INTERFACE cmfe_Solver_NewtonLinearSolverGet + MODULE PROCEDURE cmfe_Solver_NewtonLinearSolverGetNumber0 + MODULE PROCEDURE cmfe_Solver_NewtonLinearSolverGetNumber1 + MODULE PROCEDURE cmfe_Solver_NewtonLinearSolverGetObj + END INTERFACE cmfe_Solver_NewtonLinearSolverGet + + !>Returns the linear solver associated with a nonlinear Newton solver. + INTERFACE cmfe_Solver_NewtonCellMLSolverGet + MODULE PROCEDURE cmfe_Solver_NewtonCellMLSolverGetNumber0 + MODULE PROCEDURE cmfe_Solver_NewtonCellMLSolverGetNumber1 + MODULE PROCEDURE cmfe_Solver_NewtonCellMLSolverGetObj + END INTERFACE cmfe_Solver_NewtonCellMLSolverGet + + !>Sets/change the convergence test for a nonlinear Newton solver. + INTERFACE cmfe_Solver_NewtonConvergenceTestTypeSet + MODULE PROCEDURE cmfe_Solver_NewtonConvergenceTestTypeSetNumber0 + MODULE PROCEDURE cmfe_Solver_NewtonConvergenceTestTypeSetNumber1 + MODULE PROCEDURE cmfe_Solver_NewtonConvergenceTestTypeSetObj + END INTERFACE cmfe_Solver_NewtonConvergenceTestTypeSet + + !>Sets/changes the line search alpha for a nonlinear Newton solver. + INTERFACE cmfe_Solver_NewtonLineSearchAlphaSet + MODULE PROCEDURE cmfe_Solver_NewtonLineSearchAlphaSetNumber0 + MODULE PROCEDURE cmfe_Solver_NewtonLineSearchAlphaSetNumber1 + MODULE PROCEDURE cmfe_Solver_NewtonLineSearchAlphaSetObj + END INTERFACE cmfe_Solver_NewtonLineSearchAlphaSet + + !>Sets/changes the line search maximum step for a nonlinear Newton solver. + INTERFACE cmfe_Solver_NewtonLineSearchMaxStepSet + MODULE PROCEDURE cmfe_Solver_NewtonLineSearchMaxStepSetNumber0 + MODULE PROCEDURE cmfe_Solver_NewtonLineSearchMaxStepSetNumber1 + MODULE PROCEDURE cmfe_Solver_NewtonLineSearchMaxStepSetObj + END INTERFACE cmfe_Solver_NewtonLineSearchMaxStepSet + + !>Sets/changes the line search step tolerance for a nonlinear Newton solver. + INTERFACE cmfe_Solver_NewtonLineSearchStepTolSet + MODULE PROCEDURE cmfe_Solver_NewtonLineSearchStepTolSetNumber0 + MODULE PROCEDURE cmfe_Solver_NewtonLineSearchStepTolSetNumber1 + MODULE PROCEDURE cmfe_Solver_NewtonLineSearchStepTolSetObj + END INTERFACE cmfe_Solver_NewtonLineSearchStepTolSet + + !>Sets/changes the type of line search for a nonlinear Newton solver. + INTERFACE cmfe_Solver_NewtonLineSearchTypeSet + MODULE PROCEDURE cmfe_Solver_NewtonLineSearchTypeSetNumber0 + MODULE PROCEDURE cmfe_Solver_NewtonLineSearchTypeSetNumber1 + MODULE PROCEDURE cmfe_Solver_NewtonLineSearchTypeSetObj + END INTERFACE cmfe_Solver_NewtonLineSearchTypeSet + + !>Sets/changes the maximum number of function evaluations for a nonlinear Newton solver. + INTERFACE cmfe_Solver_NewtonMaximumFunctionEvaluationsSet + MODULE PROCEDURE cmfe_Solver_NewtonMaximumFunctionEvaluationsSetNumber0 + MODULE PROCEDURE cmfe_Solver_NewtonMaximumFunctionEvaluationsSetNumber1 + MODULE PROCEDURE cmfe_Solver_NewtonMaximumFunctionEvaluationsSetObj + END INTERFACE cmfe_Solver_NewtonMaximumFunctionEvaluationsSet + + !>Sets/changes the maximum number of iterations for a nonlinear Newton solver. + INTERFACE cmfe_Solver_NewtonMaximumIterationsSet + MODULE PROCEDURE cmfe_Solver_NewtonMaximumIterationsSetNumber0 + MODULE PROCEDURE cmfe_Solver_NewtonMaximumIterationsSetNumber1 + MODULE PROCEDURE cmfe_Solver_NewtonMaximumIterationsSetObj + END INTERFACE cmfe_Solver_NewtonMaximumIterationsSet + + !>Sets/changes the relative tolerance for a nonlinear Newton solver. + INTERFACE cmfe_Solver_NewtonRelativeToleranceSet + MODULE PROCEDURE cmfe_Solver_NewtonRelativeToleranceSetNumber0 + MODULE PROCEDURE cmfe_Solver_NewtonRelativeToleranceSetNumber1 + MODULE PROCEDURE cmfe_Solver_NewtonRelativeToleranceSetObj + END INTERFACE cmfe_Solver_NewtonRelativeToleranceSet + + !>Sets/changes the solution tolerance for a nonlinear Newton solver. + INTERFACE cmfe_Solver_NewtonSolutionToleranceSet + MODULE PROCEDURE cmfe_Solver_NewtonSolutionToleranceSetNumber0 + MODULE PROCEDURE cmfe_Solver_NewtonSolutionToleranceSetNumber1 + MODULE PROCEDURE cmfe_Solver_NewtonSolutionToleranceSetObj + END INTERFACE cmfe_Solver_NewtonSolutionToleranceSet + + !>Sets/changes the trust region delta0 tolerance for a nonlinear Newton trust region solver. + INTERFACE cmfe_Solver_NewtonTrustRegionDelta0Set + MODULE PROCEDURE cmfe_Solver_NewtonTrustRegionDelta0SetNumber0 + MODULE PROCEDURE cmfe_Solver_NewtonTrustRegionDelta0SetNumber1 + MODULE PROCEDURE cmfe_Solver_NewtonTrustRegionDelta0SetObj + END INTERFACE cmfe_Solver_NewtonTrustRegionDelta0Set + + !>Sets/changes the trust region tolerance for a nonlinear Newton trust region solver. + INTERFACE cmfe_Solver_NewtonTrustRegionToleranceSet + MODULE PROCEDURE cmfe_Solver_NewtonTrustRegionToleranceSetNumber0 + MODULE PROCEDURE cmfe_Solver_NewtonTrustRegionToleranceSetNumber1 + MODULE PROCEDURE cmfe_Solver_NewtonTrustRegionToleranceSetObj + END INTERFACE cmfe_Solver_NewtonTrustRegionToleranceSet + + !>Sets/changes the type of nonlinear Newton trust region solver. + INTERFACE cmfe_Solver_NewtonTypeSet + MODULE PROCEDURE cmfe_Solver_NewtonTypeSetNumber0 + MODULE PROCEDURE cmfe_Solver_NewtonTypeSetNumber1 + MODULE PROCEDURE cmfe_Solver_NewtonTypeSetObj + END INTERFACE cmfe_Solver_NewtonTypeSet + + !>Sets/changes the type of nonlinear solver. + INTERFACE cmfe_Solver_NonlinearTypeSet + MODULE PROCEDURE cmfe_Solver_NonlinearTypeSetNumber0 + MODULE PROCEDURE cmfe_Solver_NonlinearTypeSetNumber1 + MODULE PROCEDURE cmfe_Solver_NonlinearTypeSetObj + END INTERFACE cmfe_Solver_NonlinearTypeSet + + !>Sets/changes the output type for a solver. + INTERFACE cmfe_Solver_OutputTypeSet + MODULE PROCEDURE cmfe_Solver_OutputTypeSetNumber0 + MODULE PROCEDURE cmfe_Solver_OutputTypeSetNumber1 + MODULE PROCEDURE cmfe_Solver_OutputTypeSetObj + END INTERFACE cmfe_Solver_OutputTypeSet + + !>Returns the solver equations for a solver. + INTERFACE cmfe_Solver_SolverEquationsGet + MODULE PROCEDURE cmfe_Solver_SolverEquationsGetNumber0 + MODULE PROCEDURE cmfe_Solver_SolverEquationsGetNumber1 + MODULE PROCEDURE cmfe_Solver_SolverEquationsGetObj + END INTERFACE cmfe_Solver_SolverEquationsGet + + !>Adds equations sets to solver equations. + INTERFACE cmfe_SolverEquations_EquationsSetAdd + MODULE PROCEDURE cmfe_SolverEquations_EquationsSetAddNumber0 + MODULE PROCEDURE cmfe_SolverEquations_EquationsSetAddNumber1 + MODULE PROCEDURE cmfe_SolverEquations_EquationsSetAddObj + END INTERFACE cmfe_SolverEquations_EquationsSetAdd + + !>Adds an interface condition to solver equations. + INTERFACE cmfe_SolverEquations_InterfaceConditionAdd + MODULE PROCEDURE cmfe_SolverEquations_InterfaceConditionAddNumber0 + MODULE PROCEDURE cmfe_SolverEquations_InterfaceConditionAddNumber1 + MODULE PROCEDURE cmfe_SolverEquations_InterfaceConditionAddObj + END INTERFACE cmfe_SolverEquations_InterfaceConditionAdd + + !>Sets/changes the sparsity type for solver equations. + INTERFACE cmfe_SolverEquations_SparsityTypeSet + MODULE PROCEDURE cmfe_SolverEquations_SparsityTypeSetNumber0 + MODULE PROCEDURE cmfe_SolverEquations_SparsityTypeSetNumber1 + MODULE PROCEDURE cmfe_SolverEquations_SparsityTypeSetObj + END INTERFACE cmfe_SolverEquations_SparsityTypeSet + + !>Gets the symmetry type for solver equations. + INTERFACE cmfe_SolverEquations_SymmetryTypeGet + MODULE PROCEDURE cmfe_SolverEquations_SymmetryTypeGetNumber0 + MODULE PROCEDURE cmfe_SolverEquations_SymmetryTypeGetNumber1 + MODULE PROCEDURE cmfe_SolverEquations_SymmetryTypeGetObj + END INTERFACE cmfe_SolverEquations_SymmetryTypeGet + + !>Sets/changes the symmetry type for solver equations. + INTERFACE cmfe_SolverEquations_SymmetryTypeSet + MODULE PROCEDURE cmfe_SolverEquations_SymmetryTypeSetNumber0 + MODULE PROCEDURE cmfe_SolverEquations_SymmetryTypeSetNumber1 + MODULE PROCEDURE cmfe_SolverEquations_SymmetryTypeSetObj + END INTERFACE cmfe_SolverEquations_SymmetryTypeSet + + !>Finish the creation of boundary conditions for solver equations. \see OpenCMISS::Iron::cmfe_SolverEquations_BoundaryConditionsCreateStart + INTERFACE cmfe_SolverEquations_BoundaryConditionsCreateFinish + MODULE PROCEDURE cmfe_SolverEquations_BoundaryConditionsCreateFinishNumber0 + MODULE PROCEDURE cmfe_SolverEquations_BoundaryConditionsCreateFinishNumber1 + MODULE PROCEDURE cmfe_SolverEquations_BoundaryConditionsCreateFinishObj + END INTERFACE cmfe_SolverEquations_BoundaryConditionsCreateFinish + + !>Start the creation of boundary conditions for solver equations. \see OpenCMISS::Iron::cmfe_SolverEquations_BoundaryConditionsCreateFinish + INTERFACE cmfe_SolverEquations_BoundaryConditionsCreateStart + MODULE PROCEDURE cmfe_SolverEquations_BoundaryConditionsCreateStartNumber0 + MODULE PROCEDURE cmfe_SolverEquations_BoundaryConditionsCreateStartNumber1 + MODULE PROCEDURE cmfe_SolverEquations_BoundaryConditionsCreateStartObj + END INTERFACE cmfe_SolverEquations_BoundaryConditionsCreateStart + + !>Get the boundary conditions for solver equations. \see OpenCMISS::Iron::cmfe_SolverEquations_BoundaryConditionsCreateFinish + INTERFACE cmfe_SolverEquations_BoundaryConditionsGet + MODULE PROCEDURE cmfe_SolverEquations_BoundaryConditionsGetNumber0 + MODULE PROCEDURE cmfe_SolverEquations_BoundaryConditionsGetNumber1 + MODULE PROCEDURE cmfe_SolverEquations_BoundaryConditionsGetObj + END INTERFACE cmfe_SolverEquations_BoundaryConditionsGet - PUBLIC cmfe_InterfacePointsConnectivity_ElementNumberGet,cmfe_InterfacePointsConnectivity_PointXiGet + PUBLIC CMFE_CELLML_EQUATIONS_LINEAR,CMFE_CELLML_EQUATIONS_NONLINEAR - PUBLIC cmfe_InterfacePointsConnectivity_ElementNumberSet,cmfe_InterfacePointsConnectivity_PointXiSet + PUBLIC CMFE_CELLML_EQUATIONS_STATIC,CMFE_CELLML_EQUATIONS_QUASISTATIC,CMFE_CELLML_EQUATIONS_DYNAMIC - PUBLIC cmfe_InterfacePointsConnectivity_UpdateFromProjection + PUBLIC CMFE_SOLVER_LINEAR_TYPE,CMFE_SOLVER_NONLINEAR_TYPE,CMFE_SOLVER_DYNAMIC_TYPE,CMFE_SOLVER_DAE_TYPE, & + & CMFE_SOLVER_EIGENPROBLEM_TYPE, & + & CMFE_SOLVER_OPTIMISER_TYPE -!!================================================================================================================================== -!! -!! INTERFACE_CONDITION_ROUTINES -!! -!!================================================================================================================================== + PUBLIC CMFE_SOLVER_CMISS_LIBRARY,CMFE_SOLVER_PETSC_LIBRARY,CMFE_SOLVER_MUMPS_LIBRARY,CMFE_SOLVER_SUPERLU_LIBRARY, & + & CMFE_SOLVER_SPOOLES_LIBRARY,CMFE_SOLVER_UMFPACK_LIBRARY,CMFE_SOLVER_LUSOL_LIBRARY,CMFE_SOLVER_ESSL_LIBRARY, & + & CMFE_SOLVER_LAPACK_LIBRARY,CMFE_SOLVER_HYPRE_LIBRARY,CMFE_SOLVER_PASTIX_LIBRARY - !Module parameters + PUBLIC CMFE_SOLVER_LINEAR_DIRECT_SOLVE_TYPE,CMFE_SOLVER_LINEAR_ITERATIVE_SOLVE_TYPE - !> \addtogroup OpenCMISS_InterfaceConditionConstants OpenCMISS::Iron::InterfaceConditions::Constants - !> \brief Interface conditions constants. - !>@{ - !> \addtogroup OpenCMISS_InterfaceConditionMethods OpenCMISS::Iron::InterfaceConditions::Methods - !> \brief Interface condition methods. - !> \see OpenCMISS::Iron::InterfaceConditions,OpenCMISS - !>@{ - INTEGER(INTG), PARAMETER :: CMFE_INTERFACE_CONDITION_LAGRANGE_MULTIPLIERS_METHOD = & - & INTERFACE_CONDITION_LAGRANGE_MULTIPLIERS_METHOD !@} - !> \addtogroup OpenCMISS_InterfaceConditionOperators OpenCMISS::Iron::InterfaceConditions::Operators - !> \brief Interface condition operator types. - !> \see OpenCMISS::Iron::InterfaceConditions,OpenCMISS - !>@{ - INTEGER(INTG), PARAMETER :: CMFE_INTERFACE_CONDITION_FIELD_CONTINUITY_OPERATOR = & - & INTERFACE_CONDITION_FIELD_CONTINUITY_OPERATOR !@} - !> \addtogroup OpenCMISS_InterfaceConditionOutputTypes OpenCMISS::Iron::InterfaceConditions::OutputTypes - !> \brief Interface conditions output types - !> \see OpenCMISS::Iron::InterfaceConditions,OpenCMISS - !>@{ - INTEGER(INTG), PARAMETER :: CMFE_INTERFACE_CONDITION_NO_OUTPUT = INTERFACE_CONDITION_NO_OUTPUT!@} - !> \addtogroup OpenCMISS_InterfaceConditionIntegrationTypes OpenCMISS::Iron::InterfaceConditions::IntegrationTypes - !> \brief Interface condition integration types. - !> \see OpenCMISS::Iron::InterfaceConditions,OpenCMISS - !>@{ - INTEGER(INTG), PARAMETER :: CMFE_INTERFACE_CONDITION_GAUSS_INTEGRATION=INTERFACE_CONDITION_GAUSS_INTEGRATION !@} - !>@} - - !Module types - - !Module variables - - !Interfaces - - !>Finishes the creation of an interface condition. \see OpenCMISS::Iron::cmfe_InterfaceCondition_CreateStart - INTERFACE cmfe_InterfaceCondition_CreateFinish - MODULE PROCEDURE cmfe_InterfaceCondition_CreateFinishNumber - MODULE PROCEDURE cmfe_InterfaceCondition_CreateFinishObj - END INTERFACE cmfe_InterfaceCondition_CreateFinish - - !>Starts the creation of an interface condition. \see OpenCMISS::Iron::cmfe_InterfaceCondition_CreateFinish - INTERFACE cmfe_InterfaceCondition_CreateStart - MODULE PROCEDURE cmfe_InterfaceCondition_CreateStartNumber - MODULE PROCEDURE cmfe_InterfaceCondition_CreateStartObj - END INTERFACE cmfe_InterfaceCondition_CreateStart - - !>Adds in a dependent variable to an interface condition. - INTERFACE cmfe_InterfaceCondition_DependentVariableAdd - MODULE PROCEDURE cmfe_InterfaceCondition_DependentVariableAddNumber - MODULE PROCEDURE cmfe_InterfaceCondition_DependentVariableAddObj - END INTERFACE cmfe_InterfaceCondition_DependentVariableAdd - - !>Destroys an interface condition. - INTERFACE cmfe_InterfaceCondition_Destroy - MODULE PROCEDURE cmfe_InterfaceCondition_DestroyNumber - MODULE PROCEDURE cmfe_InterfaceCondition_DestroyObj - END INTERFACE cmfe_InterfaceCondition_Destroy - - !>Finishes the creation of equations for an interface condition. \see OpenCMISS::Iron::cmfe_InterfaceCondition_EquationsCreateStart - INTERFACE cmfe_InterfaceCondition_EquationsCreateFinish - MODULE PROCEDURE cmfe_InterfaceCondition_EquationsCreateFinishNumber - MODULE PROCEDURE cmfe_InterfaceCondition_EquationsCreateFinishObj - END INTERFACE cmfe_InterfaceCondition_EquationsCreateFinish - - !>Starts the creation of equations for an interface condition. \see OpenCMISS::Iron::cmfe_InterfaceCondition_EquationsCreateFinish - INTERFACE cmfe_InterfaceCondition_EquationsCreateStart - MODULE PROCEDURE cmfe_InterfaceCondition_EquationsCreateStartNumber - MODULE PROCEDURE cmfe_InterfaceCondition_EquationsCreateStartObj - END INTERFACE cmfe_InterfaceCondition_EquationsCreateStart - - !>Destroys the interface equations for an interface condition. - INTERFACE cmfe_InterfaceCondition_EquationsDestroy - MODULE PROCEDURE cmfe_InterfaceCondition_EquationsDestroyNumber - MODULE PROCEDURE cmfe_InterfaceCondition_EquationsDestroyObj - END INTERFACE cmfe_InterfaceCondition_EquationsDestroy - - !>Returns the integration type for an interface condition. - INTERFACE cmfe_InterfaceCondition_IntegrationTypeGet - MODULE PROCEDURE cmfe_InterfaceCondition_IntegrationTypeGetNumber - MODULE PROCEDURE cmfe_InterfaceCondition_IntegrationTypeGetObj - END INTERFACE cmfe_InterfaceCondition_IntegrationTypeGet - - !>Sets/changes the integration type for an interface condition. - INTERFACE cmfe_InterfaceCondition_IntegrationTypeSet - MODULE PROCEDURE cmfe_InterfaceCondition_IntegrationTypeSetNumber - MODULE PROCEDURE cmfe_InterfaceCondition_IntegrationTypeSetObj - END INTERFACE cmfe_InterfaceCondition_IntegrationTypeSet - - !>Finishes the creation of a Lagrange multipliers field for an interface condition. \see OpenCMISS::Iron::cmfe_InterfaceCondition_LagrangeFieldCreateStart - INTERFACE cmfe_InterfaceCondition_LagrangeFieldCreateFinish - MODULE PROCEDURE cmfe_InterfaceCondition_LagrangeFieldCreateFinishNumber - MODULE PROCEDURE cmfe_InterfaceCondition_LagrangeFieldCreateFinishObj - END INTERFACE cmfe_InterfaceCondition_LagrangeFieldCreateFinish - - !>Starts the creation of a Lagrange multipliers field for an interface condition. \see OpenCMISS::Iron::cmfe_InterfaceCondition_LagrangeFieldCreateFinish - INTERFACE cmfe_InterfaceCondition_LagrangeFieldCreateStart - MODULE PROCEDURE cmfe_InterfaceCondition_LagrangeFieldCreateStartNumber - MODULE PROCEDURE cmfe_InterfaceCondition_LagrangeFieldCreateStartObj - END INTERFACE cmfe_InterfaceCondition_LagrangeFieldCreateStart - - !>Returns the label for an interface condition. - INTERFACE cmfe_InterfaceCondition_LabelGet - MODULE PROCEDURE cmfe_InterfaceCondition_LabelGetCNumber - MODULE PROCEDURE cmfe_InterfaceCondition_LabelGetCObj - MODULE PROCEDURE cmfe_InterfaceCondition_LabelGetVSNumber - MODULE PROCEDURE cmfe_InterfaceCondition_LabelGetVSObj - END INTERFACE cmfe_InterfaceCondition_LabelGet - - !>Sets/changes the label for an interface condition. - INTERFACE cmfe_InterfaceCondition_LabelSet - MODULE PROCEDURE cmfe_InterfaceCondition_LabelSetCNumber - MODULE PROCEDURE cmfe_InterfaceCondition_LabelSetCObj - MODULE PROCEDURE cmfe_InterfaceCondition_LabelSetVSNumber - MODULE PROCEDURE cmfe_InterfaceCondition_LabelSetVSObj - END INTERFACE cmfe_InterfaceCondition_LabelSet - - !>Gets the output type for an interface condition. - INTERFACE cmfe_InterfaceCondition_OutputTypeGet - MODULE PROCEDURE cmfe_InterfaceCondition_OutputTypeGetNumber - MODULE PROCEDURE cmfe_InterfaceCondition_OutputTypeGetObj - END INTERFACE cmfe_InterfaceCondition_OutputTypeGet - - !>Sets/changes the output type an equations set. - INTERFACE cmfe_InterfaceCondition_OutputTypeSet - MODULE PROCEDURE cmfe_InterfaceCondition_OutputTypeSetNumber - MODULE PROCEDURE cmfe_InterfaceCondition_OutputTypeSetObj - END INTERFACE cmfe_InterfaceCondition_OutputTypeSet - - !>Finishes the creation of a Penalty field for an interface condition. \see OpenCMISS::Iron::cmfe_InterfaceCondition_PenaltyFieldCreateStart - INTERFACE cmfe_InterfaceCondition_PenaltyFieldCreateFinish - MODULE PROCEDURE cmfe_InterfaceCondition_PenaltyFieldCreateFinishNumber - MODULE PROCEDURE cmfe_InterfaceCondition_PenaltyFieldCreateFinishObj - END INTERFACE cmfe_InterfaceCondition_PenaltyFieldCreateFinish - - !>Starts the creation of a Penalty field for an interface condition. \see OpenCMISS::Iron::cmfe_InterfaceCondition_PenaltyFieldCreateFinish - INTERFACE cmfe_InterfaceCondition_PenaltyFieldCreateStart - MODULE PROCEDURE cmfe_InterfaceCondition_PenaltyFieldCreateStartNumber - MODULE PROCEDURE cmfe_InterfaceCondition_PenaltyFieldCreateStartObj - END INTERFACE cmfe_InterfaceCondition_PenaltyFieldCreateStart - - !>Returns the method for an interface condition. - INTERFACE cmfe_InterfaceCondition_MethodGet - MODULE PROCEDURE cmfe_InterfaceCondition_MethodGetNumber - MODULE PROCEDURE cmfe_InterfaceCondition_MethodGetObj - END INTERFACE cmfe_InterfaceCondition_MethodGet - - !>Sets/changes the method for an interface condition. - INTERFACE cmfe_InterfaceCondition_MethodSet - MODULE PROCEDURE cmfe_InterfaceCondition_MethodSetNumber - MODULE PROCEDURE cmfe_InterfaceCondition_MethodSetObj - END INTERFACE cmfe_InterfaceCondition_MethodSet - - !>Returns the operator for an interface condition. - INTERFACE cmfe_InterfaceCondition_OperatorGet - MODULE PROCEDURE cmfe_InterfaceCondition_OperatorGetNumber - MODULE PROCEDURE cmfe_InterfaceCondition_OperatorGetObj - END INTERFACE cmfe_InterfaceCondition_OperatorGet - - !>Sets/changes the operator for an interface condition. - INTERFACE cmfe_InterfaceCondition_OperatorSet - MODULE PROCEDURE cmfe_InterfaceCondition_OperatorSetNumber - MODULE PROCEDURE cmfe_InterfaceCondition_OperatorSetObj - END INTERFACE cmfe_InterfaceCondition_OperatorSet - - !>Returns the interface matrix time dependence type for interface equations. - INTERFACE cmfe_InterfaceEquations_MatrixTimeDependenceTypeGet - MODULE PROCEDURE cmfe_InterfaceEquations_MatrixTimeDependenceTypeGetNumber0 - MODULE PROCEDURE cmfe_InterfaceEquations_MatrixTimeDependenceTypeGetNumber1 - MODULE PROCEDURE cmfe_InterfaceEquations_MatrixTimeDependenceTypeGetObj0 - MODULE PROCEDURE cmfe_InterfaceEquations_MatrixTimeDependenceTypeGetObj1 - END INTERFACE cmfe_InterfaceEquations_MatrixTimeDependenceTypeGet - - !>Sets/changes the interface matrix time dependence type for interface equations. - INTERFACE cmfe_InterfaceEquations_MatrixTimeDependenceTypeSet - MODULE PROCEDURE cmfe_InterfaceEquations_MatrixTimeDependenceTypeSetNumber0 - MODULE PROCEDURE cmfe_InterfaceEquations_MatrixTimeDependenceTypeSetNumber1 - MODULE PROCEDURE cmfe_InterfaceEquations_MatrixTimeDependenceTypeSetObj0 - MODULE PROCEDURE cmfe_InterfaceEquations_MatrixTimeDependenceTypeSetObj1 - END INTERFACE cmfe_InterfaceEquations_MatrixTimeDependenceTypeSet - - !>Returns the output type for interface equations. - INTERFACE cmfe_InterfaceEquations_OutputTypeGet - MODULE PROCEDURE cmfe_InterfaceEquations_OutputTypeGetNumber - MODULE PROCEDURE cmfe_InterfaceEquations_OutputTypeGetObj - END INTERFACE cmfe_InterfaceEquations_OutputTypeGet - - !>Sets/changes the output type for interface equations. - INTERFACE cmfe_InterfaceEquations_OutputTypeSet - MODULE PROCEDURE cmfe_InterfaceEquations_OutputTypeSetNumber - MODULE PROCEDURE cmfe_InterfaceEquations_OutputTypeSetObj - END INTERFACE cmfe_InterfaceEquations_OutputTypeSet - - !>Returns the sparsity for interface equations. - INTERFACE cmfe_InterfaceEquations_SparsityGet - MODULE PROCEDURE cmfe_InterfaceEquations_SparsityGetNumber - MODULE PROCEDURE cmfe_InterfaceEquations_SparsityGetObj - END INTERFACE cmfe_InterfaceEquations_SparsityGet - - !>Sets/changes the sparsity for interface equations. - INTERFACE cmfe_InterfaceEquations_SparsitySet - MODULE PROCEDURE cmfe_InterfaceEquations_SparsitySetNumber - MODULE PROCEDURE cmfe_InterfaceEquations_SparsitySetObj - END INTERFACE cmfe_InterfaceEquations_SparsitySet + PUBLIC CMFE_SOLVER_DIRECT_LU,CMFE_SOLVER_DIRECT_CHOLESKY,CMFE_SOLVER_DIRECT_SVD - PUBLIC CMFE_INTERFACE_CONDITION_LAGRANGE_MULTIPLIERS_METHOD,CMFE_INTERFACE_CONDITION_AUGMENTED_LAGRANGE_METHOD, & - & CMFE_INTERFACE_CONDITION_PENALTY_METHOD,CMFE_INTERFACE_CONDITION_POINT_TO_POINT_METHOD + PUBLIC CMFE_SOLVER_ITERATIVE_RICHARDSON,CMFE_SOLVER_ITERATIVE_CONJUGATE_GRADIENT,CMFE_SOLVER_ITERATIVE_CHEBYSHEV, & + & CMFE_SOLVER_ITERATIVE_BICONJUGATE_GRADIENT,CMFE_SOLVER_ITERATIVE_GMRES,CMFE_SOLVER_ITERATIVE_BiCGSTAB, & + & CMFE_SOLVER_ITERATIVE_CONJGRAD_SQUARED - PUBLIC CMFE_INTERFACE_CONDITION_FIELD_CONTINUITY_OPERATOR,CMFE_INTERFACE_CONDITION_FIELD_NORMAL_CONTINUITY_OPERATOR, & - & CMFE_INTERFACE_CONDITION_FLS_CONTACT_OPERATOR,CMFE_INTERFACE_CONDITION_FLS_CONTACT_REPROJECT_OPERATOR, & - & CMFE_INTERFACE_CONDITION_SOLID_FLUID_OPERATOR,CMFE_INTERFACE_CONDITION_SOLID_FLUID_NORMAL_OPERATOR + PUBLIC CMFE_SOLVER_ITERATIVE_NO_PRECONDITIONER,CMFE_SOLVER_ITERATIVE_JACOBI_PRECONDITIONER, & + & CMFE_SOLVER_ITERATIVE_BLOCK_JACOBI_PRECONDITIONER,CMFE_SOLVER_ITERATIVE_SOR_PRECONDITIONER, & + & CMFE_SOLVER_ITERATIVE_INCOMPLETE_CHOLESKY_PRECONDITIONER,CMFE_SOLVER_ITERATIVE_INCOMPLETE_LU_PRECONDITIONER, & + & CMFE_SOLVER_ITERATIVE_ADDITIVE_SCHWARZ_PRECONDITIONER - PUBLIC CMFE_INTERFACE_CONDITION_GAUSS_INTEGRATION,CMFE_INTERFACE_CONDITION_DATA_POINTS_INTEGRATION + PUBLIC CMFE_SOLVER_NONLINEAR_NEWTON,CMFE_SOLVER_NONLINEAR_BFGS_INVERSE,CMFE_SOLVER_NONLINEAR_SQP - PUBLIC CMFE_INTERFACE_CONDITION_NO_OUTPUT,CMFE_INTERFACE_CONDITION_PROGRESS_OUTPUT + PUBLIC CMFE_SOLVER_NONLINEAR_QUASI_NEWTON - PUBLIC cmfe_InterfaceCondition_CreateFinish,cmfe_InterfaceCondition_CreateStart + PUBLIC CMFE_SOLVER_QUASI_NEWTON_LINESEARCH,CMFE_SOLVER_QUASI_NEWTON_TRUSTREGION - PUBLIC cmfe_InterfaceCondition_DependentVariableAdd + PUBLIC CMFE_SOLVER_QUASI_NEWTON_LBFGS,CMFE_SOLVER_QUASI_NEWTON_GOODBROYDEN,CMFE_SOLVER_QUASI_NEWTON_BADBROYDEN - PUBLIC cmfe_InterfaceCondition_Destroy + PUBLIC CMFE_SOLVER_QUASI_NEWTON_LINESEARCH_BASIC,CMFE_SOLVER_QUASI_NEWTON_LINESEARCH_L2, & + & CMFE_SOLVER_QUASI_NEWTON_LINESEARCH_CP - PUBLIC cmfe_InterfaceCondition_EquationsCreateFinish,cmfe_InterfaceCondition_EquationsCreateStart + PUBLIC CMFE_SOLVER_QUASI_NEWTON_RESTART_NONE,CMFE_SOLVER_QUASI_NEWTON_RESTART_POWELL, & + & CMFE_SOLVER_QUASI_NEWTON_RESTART_PERIODIC - PUBLIC cmfe_InterfaceCondition_EquationsDestroy + PUBLIC CMFE_SOLVER_QUASI_NEWTON_SCALE_NONE,CMFE_SOLVER_QUASI_NEWTON_SCALE_SHANNO, & + & CMFE_SOLVER_QUASI_NEWTON_SCALE_LINESEARCH,CMFE_SOLVER_QUASI_NEWTON_SCALE_JACOBIAN - PUBLIC cmfe_InterfaceCondition_IntegrationTypeGet,cmfe_InterfaceCondition_IntegrationTypeSet + PUBLIC CMFE_SOLVER_NEWTON_LINESEARCH,CMFE_SOLVER_NEWTON_TRUSTREGION - PUBLIC cmfe_InterfaceCondition_LagrangeFieldCreateFinish,cmfe_InterfaceCondition_LagrangeFieldCreateStart + PUBLIC CMFE_SOLVER_NEWTON_LINESEARCH_LINEAR,CMFE_SOLVER_NEWTON_LINESEARCH_QUADRATIC,CMFE_SOLVER_NEWTON_LINESEARCH_CUBIC - PUBLIC cmfe_InterfaceCondition_LabelGet,cmfe_InterfaceCondition_LabelSet + PUBLIC CMFE_SOLVER_NEWTON_JACOBIAN_NOT_CALCULATED,CMFE_SOLVER_NEWTON_JACOBIAN_EQUATIONS_CALCULATED, & + & CMFE_SOLVER_NEWTON_JACOBIAN_FD_CALCULATED - PUBLIC cmfe_InterfaceCondition_OutputTypeGet,cmfe_InterfaceCondition_OutputTypeSet + PUBLIC CMFE_SOLVER_NEWTON_CONVERGENCE_PETSC_DEFAULT,CMFE_SOLVER_NEWTON_CONVERGENCE_ENERGY_NORM, & + & CMFE_SOLVER_NEWTON_CONVERGENCE_DIFFERENTIATED_RATIO - PUBLIC cmfe_InterfaceCondition_PenaltyFieldCreateFinish,cmfe_InterfaceCondition_PenaltyFieldCreateStart + PUBLIC CMFE_SOLVER_DYNAMIC_FIRST_ORDER,CMFE_SOLVER_DYNAMIC_SECOND_ORDER - PUBLIC cmfe_InterfaceCondition_MethodGet,cmfe_InterfaceCondition_MethodSet + PUBLIC CMFE_SOLVER_DYNAMIC_LINEAR,CMFE_SOLVER_DYNAMIC_NONLINEAR - PUBLIC cmfe_InterfaceCondition_OperatorGet,cmfe_InterfaceCondition_OperatorSet + PUBLIC CMFE_SOLVER_DYNAMIC_FIRST_DEGREE,CMFE_SOLVER_DYNAMIC_SECOND_DEGREE,CMFE_SOLVER_DYNAMIC_THIRD_DEGREE - PUBLIC cmfe_InterfaceEquations_MatrixTimeDependenceTypeGet,cmfe_InterfaceEquations_MatrixTimeDependenceTypeSet + PUBLIC CMFE_SOLVER_DYNAMIC_EULER_SCHEME,CMFE_SOLVER_DYNAMIC_BACKWARD_EULER_SCHEME,CMFE_SOLVER_DYNAMIC_CRANK_NICOLSON_SCHEME, & + & CMFE_SOLVER_DYNAMIC_GALERKIN_SCHEME,CMFE_SOLVER_DYNAMIC_ZLAMAL_SCHEME,CMFE_SOLVER_DYNAMIC_SECOND_DEGREE_GEAR_SCHEME, & + & CMFE_SOLVER_DYNAMIC_SECOND_DEGREE_LINIGER1_SCHEME,CMFE_SOLVER_DYNAMIC_SECOND_DEGREE_LINIGER2_SCHEME, & + & CMFE_SOLVER_DYNAMIC_NEWMARK1_SCHEME,CMFE_SOLVER_DYNAMIC_NEWMARK2_SCHEME,CMFE_SOLVER_DYNAMIC_NEWMARK3_SCHEME, & + & CMFE_SOLVER_DYNAMIC_THIRD_DEGREE_GEAR_SCHEME,CMFE_SOLVER_DYNAMIC_THIRD_DEGREE_LINIGER1_SCHEME, & + & CMFE_SOLVER_DYNAMIC_THIRD_DEGREE_LINIGER2_SCHEME,CMFE_SOLVER_DYNAMIC_HOUBOLT_SCHEME,CMFE_SOLVER_DYNAMIC_WILSON_SCHEME, & + & CMFE_SOLVER_DYNAMIC_BOSSAK_NEWMARK1_SCHEME,CMFE_SOLVER_DYNAMIC_BOSSAK_NEWMARK2_SCHEME, & + & CMFE_SOLVER_DYNAMIC_HILBERT_HUGHES_TAYLOR1_SCHEME, & + & CMFE_SOLVER_DYNAMIC_HILBERT_HUGHES_TAYLOR2_SCHEME,CMFE_SOLVER_DYNAMIC_USER_DEFINED_SCHEME - PUBLIC cmfe_InterfaceEquations_OutputTypeGet,cmfe_InterfaceEquations_OutputTypeSet + PUBLIC CMFE_SOLVER_DAE_DIFFERENTIAL_ONLY,CMFE_SOLVER_DAE_INDEX_1,CMFE_SOLVER_DAE_INDEX_2,CMFE_SOLVER_DAE_INDEX_3 - PUBLIC cmfe_InterfaceEquations_SparsityGet,cmfe_InterfaceEquations_SparsitySet + PUBLIC CMFE_SOLVER_DAE_EULER,CMFE_SOLVER_DAE_CRANK_NICOLSON,CMFE_SOLVER_DAE_RUNGE_KUTTA,CMFE_SOLVER_DAE_ADAMS_MOULTON, & + & CMFE_SOLVER_DAE_BDF, & + & CMFE_SOLVER_DAE_RUSH_LARSON,CMFE_SOLVER_DAE_EXTERNAL -!!================================================================================================================================== -!! -!! INTERFACE MATRICES ROUTINES -!! -!!================================================================================================================================== + PUBLIC CMFE_SOLVER_DAE_EULER_FORWARD,CMFE_SOLVER_DAE_EULER_BACKWARD,CMFE_SOLVER_DAE_EULER_IMPROVED - !Module parameters + PUBLIC CMFE_SOLVER_SOLUTION_INITIALISE_ZERO,CMFE_SOLVER_SOLUTION_INITIALISE_CURRENT_FIELD, & + & CMFE_SOLVER_SOLUTION_INITIALISE_NO_CHANGE - !> \addtogroup OpenCMISS_InterfaceMatricesTimeDependenceTypes OpenCMISS::Iron::InterfaceMatrices::TimeDependenceTypes - !> \brief Interface matrices time dependency types - !> \see OpenCMISS::Iron::InterfaceEquations,OpenCMISS - !>@{ - INTEGER(INTG), PARAMETER :: CMFE_INTERFACE_MATRIX_STATIC=INTERFACE_MATRIX_STATIC !@} + PUBLIC CMFE_SOLVER_NO_OUTPUT,CMFE_SOLVER_MONITOR_OUTPUT,CMFE_SOLVER_PROGRESS_OUTPUT,CMFE_SOLVER_TIMING_OUTPUT, & + & CMFE_SOLVER_SOLVER_OUTPUT,CMFE_SOLVER_MATRIX_OUTPUT - !Module types + PUBLIC CMFE_SOLVER_SPARSE_MATRICES,CMFE_SOLVER_FULL_MATRICES - !Module variables + PUBLIC CMFE_SOLVER_SYMMETRIC_MATRICES,CMFE_SOLVER_UNSYMMETRIC_MATRICES - !Interfaces + PUBLIC cmfe_Solver_CellMLEquationsGet - PUBLIC CMFE_INTERFACE_MATRIX_STATIC,CMFE_INTERFACE_MATRIX_QUASI_STATIC,CMFE_INTERFACE_MATRIX_FIRST_ORDER_DYNAMIC, & - & CMFE_INTERFACE_MATRIX_SECOND_ORDER_DYNAMIC + PUBLIC cmfe_CellMLEquations_CellMLAdd -!!================================================================================================================================== -!! -!! MESH_ROUTINES -!! -!!================================================================================================================================== + PUBLIC cmfe_CellMLEquations_LinearityTypeGet,cmfe_CellMLEquations_LinearityTypeSet - !Module parameters + PUBLIC cmfe_CellMLEquations_TimeDependenceTypeGet,cmfe_CellMLEquations_TimeDependenceTypeSet - !> \addtogroup OpenCMISS_MeshConstants OpenCMISS::Iron::Mesh::Constants - !> \brief Mesh constants. - !>@{ - !> \addtogroup OpenCMISS_DecompositionTypes OpenCMISS::Iron::Mesh::DecompositionTypes - !> \brief The Decomposition types parameters - !> \see OpenCMISS::Iron::Mesh,OpenCMISS - !>@{ - INTEGER(INTG), PARAMETER :: CMFE_DECOMPOSITION_ALL_TYPE = DECOMPOSITION_ALL_TYPE !@} - !> \addtogroup OpenCMISS_MeshBoundaryTypes OpenCMISS::Iron::Mesh::MeshBoundaryTypes - !> \brief The boundary type parameters for a mesh domain - !> \see OpenCMISS::Iron::Mesh,OpenCMISS - !>@{ - INTEGER(INTG), PARAMETER :: CMFE_MESH_OFF_DOMAIN_BOUNDARY = MESH_OFF_DOMAIN_BOUNDARY !@} - !>@} - - !Module types - - !Module variables - - !Interfaces - - !>Finishes the creation of a domain decomposition. \see OpenCMISS::Iron::cmfe_Decomposition_CreateStart - INTERFACE cmfe_Decomposition_CreateFinish - MODULE PROCEDURE cmfe_Decomposition_CreateFinishNumber - MODULE PROCEDURE cmfe_Decomposition_CreateFinishObj - END INTERFACE cmfe_Decomposition_CreateFinish - - !>Start the creation of a domain decomposition for a given mesh. \see OpenCMISS::Iron::cmfe_Decomposition_CreateStart - INTERFACE cmfe_Decomposition_CreateStart - MODULE PROCEDURE cmfe_Decomposition_CreateStartNumber - MODULE PROCEDURE cmfe_Decomposition_CreateStartObj - END INTERFACE cmfe_Decomposition_CreateStart - - !>Destroys a domain decomposition. - INTERFACE cmfe_Decomposition_Destroy - MODULE PROCEDURE cmfe_Decomposition_DestroyNumber - MODULE PROCEDURE cmfe_Decomposition_DestroyObj - END INTERFACE cmfe_Decomposition_Destroy - - !>Calculates the element domains for the decomposition of a mesh. - INTERFACE cmfe_Decomposition_ElementDomainCalculate - MODULE PROCEDURE cmfe_Decomposition_ElementDomainCalculateNumber - MODULE PROCEDURE cmfe_Decomposition_ElementDomainCalculateObj - END INTERFACE cmfe_Decomposition_ElementDomainCalculate - - !>Returns the domain for a given element in a decomposition of a mesh. - INTERFACE cmfe_Decomposition_ElementDomainGet - MODULE PROCEDURE cmfe_Decomposition_ElementDomainGetNumber - MODULE PROCEDURE cmfe_Decomposition_ElementDomainGetObj - END INTERFACE cmfe_Decomposition_ElementDomainGet - - !>Sets/changes the domain for a given element in a decomposition of a mesh. - INTERFACE cmfe_Decomposition_ElementDomainSet - MODULE PROCEDURE cmfe_Decomposition_ElementDomainSetNumber - MODULE PROCEDURE cmfe_Decomposition_ElementDomainSetObj - END INTERFACE cmfe_Decomposition_ElementDomainSet - - !>Returns the mesh component number used for the decomposition of a mesh. - INTERFACE cmfe_Decomposition_MeshComponentGet - MODULE PROCEDURE cmfe_Decomposition_MeshComponentGetNumber - MODULE PROCEDURE cmfe_Decomposition_MeshComponentGetObj - END INTERFACE cmfe_Decomposition_MeshComponentGet - - !>Sets/changes the mesh component number used for the decomposition of a mesh. - INTERFACE cmfe_Decomposition_MeshComponentSet - MODULE PROCEDURE cmfe_Decomposition_MeshComponentSetNumber - MODULE PROCEDURE cmfe_Decomposition_MeshComponentSetObj - END INTERFACE cmfe_Decomposition_MeshComponentSet - - !>Returns the number of domains used for the decomposition of a mesh. - INTERFACE cmfe_Decomposition_NumberOfDomainsGet - MODULE PROCEDURE cmfe_Decomposition_NumberOfDomainsGetNumber - MODULE PROCEDURE cmfe_Decomposition_NumberOfDomainsGetObj - END INTERFACE cmfe_Decomposition_NumberOfDomainsGet - - !>Sets/changes the number of domains used for the decomposition of a mesh. - INTERFACE cmfe_Decomposition_NumberOfDomainsSet - MODULE PROCEDURE cmfe_Decomposition_NumberOfDomainsSetNumber - MODULE PROCEDURE cmfe_Decomposition_NumberOfDomainsSetObj - END INTERFACE cmfe_Decomposition_NumberOfDomainsSet - - !>Returns the type of decomposition. - INTERFACE cmfe_Decomposition_TypeGet - MODULE PROCEDURE cmfe_Decomposition_TypeGetNumber - MODULE PROCEDURE cmfe_Decomposition_TypeGetObj - END INTERFACE cmfe_Decomposition_TypeGet - - !>Sets/changes the type of decomposition. - INTERFACE cmfe_Decomposition_TypeSet - MODULE PROCEDURE cmfe_Decomposition_TypeSetNumber - MODULE PROCEDURE cmfe_Decomposition_TypeSetObj - END INTERFACE cmfe_Decomposition_TypeSet - - !>Sets/changes whether lines should be calculated for the decomposition. - INTERFACE cmfe_Decomposition_CalculateLinesSet - MODULE PROCEDURE cmfe_Decomposition_CalculateLinesSetNumber - MODULE PROCEDURE cmfe_Decomposition_CalculateLinesSetObj - END INTERFACE cmfe_Decomposition_CalculateLinesSet - - !>Sets/changes whether faces should be calculated for the decomposition. - INTERFACE cmfe_Decomposition_CalculateFacesSet - MODULE PROCEDURE cmfe_Decomposition_CalculateFacesSetNumber - MODULE PROCEDURE cmfe_Decomposition_CalculateFacesSetObj - END INTERFACE cmfe_Decomposition_CalculateFacesSet - - !>Finishes the creation of a mesh. \see OpenCMISS::Iron::cmfe_Mesh_CreateStart - INTERFACE cmfe_Mesh_CreateFinish - MODULE PROCEDURE cmfe_Mesh_CreateFinishNumber - MODULE PROCEDURE cmfe_Mesh_CreateFinishObj - END INTERFACE cmfe_Mesh_CreateFinish - - !>Starts the creation of a mesh. \see OpenCMISS::Iron::cmfe_Mesh_CreateFinish - INTERFACE cmfe_Mesh_CreateStart - MODULE PROCEDURE cmfe_Mesh_CreateStartNumber - MODULE PROCEDURE cmfe_Mesh_CreateStartObj - MODULE PROCEDURE cmfe_Mesh_CreateStartInterfaceObj - END INTERFACE cmfe_Mesh_CreateStart - - !>Destroys a mesh. - INTERFACE cmfe_Mesh_Destroy - MODULE PROCEDURE cmfe_Mesh_DestroyNumber - MODULE PROCEDURE cmfe_Mesh_DestroyObj - END INTERFACE cmfe_Mesh_Destroy - - !>Returns the number of mesh components in a mesh. - INTERFACE cmfe_Mesh_NumberOfComponentsGet - MODULE PROCEDURE cmfe_Mesh_NumberOfComponentsGetNumber - MODULE PROCEDURE cmfe_Mesh_NumberOfComponentsGetObj - END INTERFACE cmfe_Mesh_NumberOfComponentsGet - - !>Sets/changes the number of mesh components in a mesh. - INTERFACE cmfe_Mesh_NumberOfComponentsSet - MODULE PROCEDURE cmfe_Mesh_NumberOfComponentsSetNumber - MODULE PROCEDURE cmfe_Mesh_NumberOfComponentsSetObj - END INTERFACE cmfe_Mesh_NumberOfComponentsSet - - !>Returns the number of elements in a mesh. - INTERFACE cmfe_Mesh_NumberOfElementsGet - MODULE PROCEDURE cmfe_Mesh_NumberOfElementsGetNumber - MODULE PROCEDURE cmfe_Mesh_NumberOfElementsGetObj - END INTERFACE cmfe_Mesh_NumberOfElementsGet - - !>Sets/changes the number of elements in a mesh. - INTERFACE cmfe_Mesh_NumberOfElementsSet - MODULE PROCEDURE cmfe_Mesh_NumberOfElementsSetNumber - MODULE PROCEDURE cmfe_Mesh_NumberOfElementsSetObj - END INTERFACE cmfe_Mesh_NumberOfElementsSet - - !>Sets/changes the surrounding elements calculate flag for the mesh. - INTERFACE cmfe_Mesh_SurroundingElementsCalculateSet - MODULE PROCEDURE cmfe_Mesh_SurroundingElementsCalculateSetNumber - MODULE PROCEDURE cmfe_Mesh_SurroundingElementsCalculateSetObj - END INTERFACE cmfe_Mesh_SurroundingElementsCalculateSet - - !>Sets/changes whether data points topology should be calculated for the decomposition. - INTERFACE cmfe_Mesh_TopologyDataPointsCalculateProjection - MODULE PROCEDURE cmfe_Mesh_TopologyDataPointsCalculateProjectionInterfaceNumber - MODULE PROCEDURE cmfe_Mesh_TopologyDataPointsCalculateProjectionRegionNumber - MODULE PROCEDURE cmfe_Mesh_TopologyDataPointsCalculateProjectionObj - END INTERFACE cmfe_Mesh_TopologyDataPointsCalculateProjection - - !>Returns the basis for an element in a mesh. - INTERFACE cmfe_MeshElements_BasisGet - MODULE PROCEDURE cmfe_MeshElements_BasisGetNumber - MODULE PROCEDURE cmfe_MeshElements_BasisGetObj - END INTERFACE cmfe_MeshElements_BasisGet - - !>Sets/changes the basis for an element in a mesh. - INTERFACE cmfe_MeshElements_BasisSet - MODULE PROCEDURE cmfe_MeshElements_BasisSetNumber - MODULE PROCEDURE cmfe_MeshElements_BasisSetObj - END INTERFACE cmfe_MeshElements_BasisSet - - !>Returns the adjacent elements for a given element and adjacent xi direction for an element in a mesh. - INTERFACE cmfe_MeshElements_AdjacentElementGet - MODULE PROCEDURE cmfe_MeshElements_AdjacentElementGetNumber - MODULE PROCEDURE cmfe_MeshElements_AdjacentElementGetObj - END INTERFACE cmfe_MeshElements_AdjacentElementGet - - !>Finishes the creation of a mesh elements for a mesh component. \see OpenCMISS::Iron::cmfe_MeshElements_CreateStart - INTERFACE cmfe_MeshElements_CreateFinish - MODULE PROCEDURE cmfe_MeshElements_CreateFinishNumber - MODULE PROCEDURE cmfe_MeshElements_CreateFinishObj - END INTERFACE cmfe_MeshElements_CreateFinish - - !>Starts the creation of a mesh elements for a mesh component. \see OpenCMISS::Iron::cmfe_MeshElements_CreateFinish - INTERFACE cmfe_MeshElements_CreateStart - MODULE PROCEDURE cmfe_MeshElements_CreateStartNumber - MODULE PROCEDURE cmfe_MeshElements_CreateStartObj - END INTERFACE cmfe_MeshElements_CreateStart - - !>Gets the mesh boundary type for an element - INTERFACE cmfe_MeshElements_ElementOnBoundaryGet - MODULE PROCEDURE cmfe_MeshElements_ElementOnBoundaryGetNumber - MODULE PROCEDURE cmfe_MeshElements_ElementOnBoundaryGetObj - END INTERFACE cmfe_MeshElements_ElementOnBoundaryGet - - !>Get the mesh elements belonging to a mesh component. - INTERFACE cmfe_Mesh_ElementsGet - MODULE PROCEDURE cmfe_Mesh_ElementsGetNumber - MODULE PROCEDURE cmfe_Mesh_ElementsGetObj - END INTERFACE cmfe_Mesh_ElementsGet - - !>Returns the element nodes for an element in a mesh. - INTERFACE cmfe_MeshElements_NodesGet - MODULE PROCEDURE cmfe_MeshElements_NodesGetNumber - MODULE PROCEDURE cmfe_MeshElements_NodesGetObj - END INTERFACE cmfe_MeshElements_NodesGet - - !>Sets/changes the element nodes for an element in a mesh. - INTERFACE cmfe_MeshElements_NodesSet - MODULE PROCEDURE cmfe_MeshElements_NodesSetNumber - MODULE PROCEDURE cmfe_MeshElements_NodesSetObj - END INTERFACE cmfe_MeshElements_NodesSet - - !>Sets/changes a user node's derivative version for an element in a mesh. - INTERFACE cmfe_MeshElements_UserNodeVersionSet - MODULE PROCEDURE cmfe_MeshElements_UserNodeVersionSetNumber - MODULE PROCEDURE cmfe_MeshElements_UserNodeVersionSetObj - END INTERFACE cmfe_MeshElements_UserNodeVersionSet - - !>Sets/changes a local element's node derivative version for an element in a mesh. - INTERFACE cmfe_MeshElements_LocalElementNodeVersionSet - MODULE PROCEDURE cmfe_MeshElements_LocalElementNodeVersionSetNumber - MODULE PROCEDURE cmfe_MeshElements_LocalElementNodeVersionSetObj - END INTERFACE cmfe_MeshElements_LocalElementNodeVersionSet - - !>Returns the element user number for an element in a mesh. - INTERFACE cmfe_MeshElements_UserNumberGet - MODULE PROCEDURE cmfe_MeshElements_UserNumberGetNumber - MODULE PROCEDURE cmfe_MeshElements_UserNumberGetObj - END INTERFACE cmfe_MeshElements_UserNumberGet - - !>Sets/changes the element user number for an element in a mesh. - INTERFACE cmfe_MeshElements_UserNumberSet - MODULE PROCEDURE cmfe_MeshElements_UserNumberSetNumber - MODULE PROCEDURE cmfe_MeshElements_UserNumberSetObj - END INTERFACE cmfe_MeshElements_UserNumberSet - - !>Sets/changes the element user numbers for all element in a mesh. - INTERFACE cmfe_MeshElements_UserNumbersAllSet - MODULE PROCEDURE cmfe_MeshElements_UserNumbersAllSetNumber - MODULE PROCEDURE cmfe_MeshElements_UserNumbersAllSetObj - END INTERFACE cmfe_MeshElements_UserNumbersAllSet - - !>Returns true if the given node is in the given mesh component. - INTERFACE cmfe_Mesh_NodeExists - MODULE PROCEDURE cmfe_Mesh_NodeExistsNumber - MODULE PROCEDURE cmfe_Mesh_NodeExistsObj - END INTERFACE cmfe_Mesh_NodeExists - - !>Returns true if the given element is in the given mesh component. - INTERFACE cmfe_Mesh_ElementExists - MODULE PROCEDURE cmfe_Mesh_ElementExistsNumber - MODULE PROCEDURE cmfe_Mesh_ElementExistsObj - END INTERFACE cmfe_Mesh_ElementExists - - !>Get the mesh nodes belonging to a mesh component. - INTERFACE cmfe_Mesh_NodesGet - MODULE PROCEDURE cmfe_Mesh_NodesGetNumber - MODULE PROCEDURE cmfe_Mesh_NodesGetObj - END INTERFACE cmfe_Mesh_NodesGet - - !>Get the mesh boundary type for a node. - INTERFACE cmfe_MeshNodes_NodeOnBoundaryGet - MODULE PROCEDURE cmfe_MeshNodes_NodeOnBoundaryGetNumber - MODULE PROCEDURE cmfe_MeshNodes_NodeOnBoundaryGetObj - END INTERFACE cmfe_MeshNodes_NodeOnBoundaryGet - - !>Returns the number of derivatives for a node in a mesh. - INTERFACE cmfe_MeshNodes_NumberOfDerivativesGet - MODULE PROCEDURE cmfe_MeshNodes_NumberOfDerivativesGetNumber - MODULE PROCEDURE cmfe_MeshNodes_NumberOfDerivativesGetObj - END INTERFACE cmfe_MeshNodes_NumberOfDerivativesGet - - !>Returns the derivatives for a node in a mesh. - INTERFACE cmfe_MeshNodes_DerivativesGet - MODULE PROCEDURE cmfe_MeshNodes_DerivativesGetNumber - MODULE PROCEDURE cmfe_MeshNodes_DerivativesGetObj - END INTERFACE cmfe_MeshNodes_DerivativesGet - - !>Returns the number of versions for a derivative at a node in a mesh. - INTERFACE cmfe_MeshNodes_NumberOfVersionsGet - MODULE PROCEDURE cmfe_MeshNodes_NumberOfVersionsGetNumber - MODULE PROCEDURE cmfe_MeshNodes_NumberOfVersionsGetObj - END INTERFACE cmfe_MeshNodes_NumberOfVersionsGet - - !>Returns the number of nodes in a mesh. - INTERFACE cmfe_MeshNodes_NumberOfNodesGet - MODULE PROCEDURE cmfe_MeshNodes_NumberOfNodesGetNumber - MODULE PROCEDURE cmfe_MeshNodes_NumberOfNodesGetObj - END INTERFACE cmfe_MeshNodes_NumberOfNodesGet - - !>Returns the domain for a given element in a decomposition of a mesh. - INTERFACE cmfe_Decomposition_NodeDomainGet - MODULE PROCEDURE cmfe_Decomposition_NodeDomainGetNumber - MODULE PROCEDURE cmfe_Decomposition_NodeDomainGetObj - END INTERFACE cmfe_Decomposition_NodeDomainGet - - !>Calculates the decomposition topology for data points . - INTERFACE cmfe_Decomposition_TopologyDataProjectionCalculate - MODULE PROCEDURE cmfe_Decomposition_TopologyDataProjectionCalculateObj - END INTERFACE cmfe_Decomposition_TopologyDataProjectionCalculate + PUBLIC cmfe_Solver_DAEEulerSolverTypeGet,cmfe_Solver_DAEEulerSolverTypeSet - !>Gets the local data point number for data points projected on an element - INTERFACE cmfe_Decomposition_TopologyElementDataPointLocalNumberGet - MODULE PROCEDURE cmfe_Decomposition_TopologyElementDataPointLocalNumberGetObj - END INTERFACE cmfe_Decomposition_TopologyElementDataPointLocalNumberGet + PUBLIC cmfe_Solver_DAESolverTypeGet,cmfe_Solver_DAESolverTypeSet - !>Gets the user data point number for data points projected on an element - INTERFACE cmfe_Decomposition_TopologyElementDataPointUserNumberGet - MODULE PROCEDURE cmfe_Decomposition_TopologyElementDataPointUserNumberGetObj - END INTERFACE cmfe_Decomposition_TopologyElementDataPointUserNumberGet + PUBLIC cmfe_Solver_DAETimesSet,cmfe_Solver_DAETimeStepSet - !>Gets the number of data points projected on an element - INTERFACE cmfe_Decomposition_TopologyNumberOfElementDataPointsGet - MODULE PROCEDURE cmfe_Decomposition_TopologyNumberOfElementDataPointsGetObj - END INTERFACE cmfe_Decomposition_TopologyNumberOfElementDataPointsGet + PUBLIC cmfe_Solver_DynamicDegreeGet,cmfe_Solver_DynamicDegreeSet - PUBLIC CMFE_DECOMPOSITION_ALL_TYPE,CMFE_DECOMPOSITION_CALCULATED_TYPE,CMFE_DECOMPOSITION_USER_DEFINED_TYPE + PUBLIC cmfe_Solver_DynamicLinearityTypeGet - PUBLIC CMFE_MESH_OFF_DOMAIN_BOUNDARY,CMFE_MESH_ON_DOMAIN_BOUNDARY + PUBLIC cmfe_Solver_DynamicLinearSolverGet,cmfe_Solver_DynamicNonlinearSolverGet - PUBLIC cmfe_Decomposition_CreateFinish,cmfe_Decomposition_CreateStart + PUBLIC cmfe_Solver_DynamicSchemeSet - PUBLIC cmfe_Decomposition_TopologyDataProjectionCalculate + PUBLIC cmfe_Solver_DynamicThetaSet - PUBLIC cmfe_Decomposition_TopologyElementDataPointLocalNumberGet + PUBLIC cmfe_Solver_DynamicTimesSet - PUBLIC cmfe_Decomposition_TopologyElementDataPointUserNumberGet + PUBLIC cmfe_Solver_GeometricTransformationArbitraryPathSet,cmfe_Solver_GeometricTransformationClear - PUBLIC cmfe_Decomposition_TopologyNumberOfElementDataPointsGet + PUBLIC cmfe_Solver_GeometricTransformationNumberOfLoadIncrementsSet - PUBLIC cmfe_Decomposition_Destroy + PUBLIC cmfe_Solver_GeometricTransformationScalingsSet - PUBLIC cmfe_Decomposition_ElementDomainCalculate + PUBLIC cmfe_Solver_GeometricTransformationFieldSet - PUBLIC cmfe_Decomposition_ElementDomainGet,cmfe_Decomposition_ElementDomainSet + PUBLIC cmfe_Solver_GeometricTransformationMatrixSet - PUBLIC cmfe_Decomposition_MeshComponentGet,cmfe_Decomposition_MeshComponentSet + PUBLIC cmfe_Solver_GeometricTransformationRotationSet,cmfe_Solver_GeometricTransformationTranslationSet - PUBLIC cmfe_Decomposition_NumberOfDomainsGet,cmfe_Decomposition_NumberOfDomainsSet + PUBLIC cmfe_Solver_LabelGet,cmfe_Solver_LabelSet - PUBLIC cmfe_Decomposition_TypeGet,cmfe_Decomposition_TypeSet + PUBLIC cmfe_Solver_LibraryTypeGet,cmfe_Solver_LibraryTypeSet - PUBLIC cmfe_Decomposition_NodeDomainGet + PUBLIC cmfe_Solver_LinearDirectTypeSet - PUBLIC cmfe_Mesh_CreateFinish,cmfe_Mesh_CreateStart + PUBLIC cmfe_Solver_MumpsSetIcntl,cmfe_Solver_MumpsSetCntl - PUBLIC cmfe_Mesh_Destroy + PUBLIC cmfe_Solver_LinearIterativeAbsoluteToleranceSet - PUBLIC cmfe_Mesh_NumberOfComponentsGet,cmfe_Mesh_NumberOfComponentsSet + PUBLIC cmfe_Solver_LinearIterativeDivergenceToleranceSet - PUBLIC cmfe_Mesh_NumberOfElementsGet,cmfe_Mesh_NumberOfElementsSet + PUBLIC cmfe_Solver_LinearIterativeGMRESRestartSet - PUBLIC cmfe_MeshElements_BasisGet,cmfe_MeshElements_BasisSet + PUBLIC cmfe_Solver_LinearIterativeMaximumIterationsSet - PUBLIC cmfe_MeshElements_AdjacentElementGet + PUBLIC cmfe_Solver_LinearIterativePreconditionerTypeSet - PUBLIC cmfe_MeshElements_ElementOnBoundaryGet + PUBLIC cmfe_Solver_LinearIterativeRelativeToleranceSet - PUBLIC cmfe_MeshElements_UserNodeVersionSet,cmfe_MeshElements_LocalElementNodeVersionSet + PUBLIC cmfe_Solver_LinearIterativeTypeSet - PUBLIC cmfe_MeshElements_CreateFinish,cmfe_MeshElements_CreateStart + PUBLIC cmfe_Solver_LinearTypeSet - PUBLIC cmfe_MeshElements_NodesGet,cmfe_MeshElements_NodesSet + PUBLIC cmfe_Solver_NewtonAbsoluteToleranceSet - PUBLIC cmfe_MeshElements_UserNumberGet,cmfe_MeshElements_UserNumberSet + PUBLIC cmfe_Solver_NewtonLineSearchMonitorOutputSet - PUBLIC cmfe_MeshElements_UserNumbersAllSet + PUBLIC cmfe_Solver_NewtonJacobianCalculationTypeSet - PUBLIC cmfe_MeshNodes_NodeOnBoundaryGet + PUBLIC cmfe_Solver_NewtonLinearSolverGet - PUBLIC cmfe_MeshNodes_NumberOfDerivativesGet,cmfe_MeshNodes_DerivativesGet + PUBLIC cmfe_Solver_NewtonCellMLSolverGet - PUBLIC cmfe_MeshNodes_NumberOfVersionsGet + PUBLIC cmfe_Solver_NewtonConvergenceTestTypeSet - PUBLIC cmfe_MeshNodes_NumberOfNodesGet + PUBLIC cmfe_Solver_NewtonLineSearchAlphaSet - PUBLIC cmfe_Mesh_ElementsGet + PUBLIC cmfe_Solver_NewtonLineSearchMaxStepSet - PUBLIC cmfe_Mesh_NodesGet + PUBLIC cmfe_Solver_NewtonLineSearchStepTolSet - PUBLIC cmfe_Mesh_NodeExists,cmfe_Mesh_ElementExists + PUBLIC cmfe_Solver_NewtonLineSearchTypeSet - PUBLIC cmfe_Mesh_SurroundingElementsCalculateSet + PUBLIC cmfe_Solver_NewtonMaximumFunctionEvaluationsSet - PUBLIC cmfe_Mesh_TopologyDataPointsCalculateProjection + PUBLIC cmfe_Solver_NewtonMaximumIterationsSet -!!================================================================================================================================== -!! -!! DISTRIBUTED_MATRIX_VECTOR -!! -!!================================================================================================================================== + PUBLIC cmfe_Solver_NewtonRelativeToleranceSet - !> \addtogroup OpenCMISS_MatrixVectorConstants OpenCMISS::Iron::MatrixVector::Constants - !> \brief Distributed matrix and vector function constants. - !>@{ - !> \addtogroup OpenCMISS_MatrixStorageTypes OpenCMISS::Iron::MatrixVector::MatrixStorageTypes - !> \brief Type of matrix storage. - !> \see OpenCMISS::Iron::MatrixVectorConstants,OpenCMISS - !>@{ - INTEGER(INTG), PARAMETER :: CMFE_MATRIX_BLOCK_STORAGE_TYPE=DISTRIBUTED_MATRIX_BLOCK_STORAGE_TYPE !@} - !> \addtogroup OpenCMISS_MatrixVectorDataTypes OpenCMISS::Iron::MatrixVector::DataTypes - !> \brief Type of data stored in matrices and vectors. - !> \see OpenCMISS::Iron::MatrixVectorConstants,OpenCMISS - !>@{ - INTEGER(INTG), PARAMETER :: CMFE_MATRIX_VECTOR_INTG_TYPE=DISTRIBUTED_MATRIX_VECTOR_INTG_TYPE !@} - !>@} + PUBLIC cmfe_Solver_NewtonSolutionToleranceSet - PUBLIC CMFE_MATRIX_BLOCK_STORAGE_TYPE,CMFE_MATRIX_DIAGONAL_STORAGE_TYPE,CMFE_MATRIX_COLUMN_MAJOR_STORAGE_TYPE, & - & CMFE_MATRIX_ROW_MAJOR_STORAGE_TYPE,CMFE_MATRIX_COMPRESSED_ROW_STORAGE_TYPE,CMFE_MATRIX_COMPRESSED_COLUMN_STORAGE_TYPE, & - & CMFE_MATRIX_ROW_COLUMN_STORAGE_TYPE + PUBLIC cmfe_Solver_NewtonTrustRegionDelta0Set - PUBLIC CMFE_MATRIX_VECTOR_INTG_TYPE,CMFE_MATRIX_VECTOR_SP_TYPE,CMFE_MATRIX_VECTOR_DP_TYPE,CMFE_MATRIX_VECTOR_L_TYPE + PUBLIC cmfe_Solver_NewtonTrustRegionToleranceSet - !Note that currently we don't have any user number based routines for distributed matrices - !as if we can't use a pointer to a CMISS object, a pointer to matrix data isn't going to - !be much use either. It's also more awkward when matrices and vectors themselves don't have - !user numbers and there are multiple ways to access them through user numbers, eg. solver equations - !matrices or equations set matrices + PUBLIC cmfe_Solver_NewtonTypeSet - !>Get the storage type for a distributed matrix - INTERFACE cmfe_DistributedMatrix_StorageTypeGet - MODULE PROCEDURE cmfe_DistributedMatrix_StorageTypeGetObj - END INTERFACE cmfe_DistributedMatrix_StorageTypeGet + PUBLIC cmfe_Solver_QuasiNewtonAbsoluteToleranceSet - !>Get the data type for a distributed matrix - INTERFACE cmfe_DistributedMatrix_DataTypeGet - MODULE PROCEDURE cmfe_DistributedMatrix_DataTypeGetObj - END INTERFACE cmfe_DistributedMatrix_DataTypeGet + PUBLIC cmfe_Solver_QuasiNewtonLineSearchMonitorOutputSet - !>Get the dimensions for a distributed matrix on this computational node - INTERFACE cmfe_DistributedMatrix_DimensionsGet - MODULE PROCEDURE cmfe_DistributedMatrix_DimensionsGetObj - END INTERFACE cmfe_DistributedMatrix_DimensionsGet + PUBLIC cmfe_Solver_QuasiNewtonJacobianCalculationTypeSet - !>Get the row indices and column indices for a sparse matrix - INTERFACE cmfe_DistributedMatrix_StorageLocationsGet - MODULE PROCEDURE cmfe_DistributedMatrix_StorageLocationsGetObj - END INTERFACE cmfe_DistributedMatrix_StorageLocationsGet - - !>Get the data array for this matrix on this computational node - INTERFACE cmfe_DistributedMatrix_DataGet - MODULE PROCEDURE cmfe_DistributedMatrix_DataGetIntgObj - MODULE PROCEDURE cmfe_DistributedMatrix_DataGetDPObj - MODULE PROCEDURE cmfe_DistributedMatrix_DataGetSPObj - MODULE PROCEDURE cmfe_DistributedMatrix_DataGetLObj - END INTERFACE cmfe_DistributedMatrix_DataGet + PUBLIC cmfe_Solver_QuasiNewtonLinearSolverGet - !>Restore the data array for this matrix once it has finished being used - INTERFACE cmfe_DistributedMatrix_DataRestore - MODULE PROCEDURE cmfe_DistributedMatrix_DataRestoreIntgObj - MODULE PROCEDURE cmfe_DistributedMatrix_DataRestoreDPObj - MODULE PROCEDURE cmfe_DistributedMatrix_DataRestoreSPObj - MODULE PROCEDURE cmfe_DistributedMatrix_DataRestoreLObj - END INTERFACE cmfe_DistributedMatrix_DataRestore - - !>Get the data type for a distributed vector - INTERFACE cmfe_DistributedVector_DataTypeGet - MODULE PROCEDURE cmfe_DistributedVector_DataTypeGetObj - END INTERFACE cmfe_DistributedVector_DataTypeGet - - !>Get the data array for this vector on this computational node - INTERFACE cmfe_DistributedVector_DataGet - MODULE PROCEDURE cmfe_DistributedVector_DataGetIntgObj - MODULE PROCEDURE cmfe_DistributedVector_DataGetDPObj - MODULE PROCEDURE cmfe_DistributedVector_DataGetSPObj - MODULE PROCEDURE cmfe_DistributedVector_DataGetLObj - END INTERFACE cmfe_DistributedVector_DataGet + PUBLIC cmfe_Solver_QuasiNewtonCellMLSolverGet - !>Restore the data array for this vector once it has finished being used - INTERFACE cmfe_DistributedVector_DataRestore - MODULE PROCEDURE cmfe_DistributedVector_DataRestoreIntgObj - MODULE PROCEDURE cmfe_DistributedVector_DataRestoreDPObj - MODULE PROCEDURE cmfe_DistributedVector_DataRestoreSPObj - MODULE PROCEDURE cmfe_DistributedVector_DataRestoreLObj - END INTERFACE cmfe_DistributedVector_DataRestore - - PUBLIC cmfe_DistributedMatrix_StorageTypeGet,cmfe_DistributedMatrix_StorageLocationsGet - PUBLIC cmfe_DistributedMatrix_DataTypeGet,cmfe_DistributedMatrix_DimensionsGet - PUBLIC cmfe_DistributedMatrix_DataGet,cmfe_DistributedMatrix_DataRestore - PUBLIC cmfe_DistributedVector_DataTypeGet - PUBLIC cmfe_DistributedVector_DataGet,cmfe_DistributedVector_DataRestore + PUBLIC cmfe_Solver_QuasiNewtonConvergenceTestTypeSet -!!================================================================================================================================== -!! -!! NODE_ROUTINES -!! -!!================================================================================================================================== + PUBLIC cmfe_Solver_QuasiNewtonLineSearchMaxStepSet - !Module parameters + PUBLIC cmfe_Solver_QuasiNewtonLineSearchStepTolSet - !Module types + PUBLIC cmfe_Solver_QuasiNewtonLineSearchTypeSet - !Module variables + PUBLIC cmfe_Solver_QuasiNewtonMaximumFunctionEvaluationsSet - !Interfaces + PUBLIC cmfe_Solver_QuasiNewtonMaximumIterationsSet - !>Finishes the process of creating nodes in a region. \see OpenCMISS::Iron::cmfe_Nodes_CreateStart - INTERFACE cmfe_Nodes_CreateFinish - MODULE PROCEDURE cmfe_Nodes_CreateFinishNumber - MODULE PROCEDURE cmfe_Nodes_CreateFinishObj - END INTERFACE cmfe_Nodes_CreateFinish + PUBLIC cmfe_Solver_QuasiNewtonRelativeToleranceSet - !>Starts the process of creating nodes in a region. \see OpenCMISS::Iron::cmfe_Nodes_CreateFinish - INTERFACE cmfe_Nodes_CreateStart - MODULE PROCEDURE cmfe_Nodes_CreateStartNumber - MODULE PROCEDURE cmfe_Nodes_CreateStartObj - MODULE PROCEDURE cmfe_Nodes_CreateStartInterfaceObj - END INTERFACE cmfe_Nodes_CreateStart + PUBLIC cmfe_Solver_QuasiNewtonSolutionToleranceSet - !>Destroys nodes. - INTERFACE cmfe_Nodes_Destroy - MODULE PROCEDURE cmfe_Nodes_DestroyNumber - MODULE PROCEDURE cmfe_Nodes_DestroyObj - END INTERFACE cmfe_Nodes_Destroy + PUBLIC cmfe_Solver_QuasiNewtonTrustRegionDelta0Set - !>Returns the number of nodes - INTERFACE cmfe_Nodes_NumberOfNodesGet - MODULE PROCEDURE cmfe_Nodes_NumberOfNodesGetNumber - MODULE PROCEDURE cmfe_Nodes_NumberOfNodesGetObj - END INTERFACE cmfe_Nodes_NumberOfNodesGet - - !>Returns the label for a node identified by a given global number. \todo should this be a user number? - INTERFACE cmfe_Nodes_LabelGet - MODULE PROCEDURE cmfe_Nodes_LabelGetCNumber - MODULE PROCEDURE cmfe_Nodes_LabelGetCObj - MODULE PROCEDURE cmfe_Nodes_LabelGetVSNumber - MODULE PROCEDURE cmfe_Nodes_LabelGetVSObj - END INTERFACE cmfe_Nodes_LabelGet - - !>Sets/changes the label for a node identified by a given global number. \todo should this be a user number? - INTERFACE cmfe_Nodes_LabelSet - MODULE PROCEDURE cmfe_Nodes_LabelSetCNumber - MODULE PROCEDURE cmfe_Nodes_LabelSetCObj - MODULE PROCEDURE cmfe_Nodes_LabelSetVSNumber - MODULE PROCEDURE cmfe_Nodes_LabelSetVSObj - END INTERFACE cmfe_Nodes_LabelSet - - !>Returns the user number for a node identified by a given global number. - INTERFACE cmfe_Nodes_UserNumberGet - MODULE PROCEDURE cmfe_Nodes_UserNumberGetNumber - MODULE PROCEDURE cmfe_Nodes_UserNumberGetObj - END INTERFACE cmfe_Nodes_UserNumberGet - - !>Sets/changes the user number for a node identified by a given global number. - INTERFACE cmfe_Nodes_UserNumberSet - MODULE PROCEDURE cmfe_Nodes_UserNumberSetNumber - MODULE PROCEDURE cmfe_Nodes_UserNumberSetObj - END INTERFACE cmfe_Nodes_UserNumberSet - - !>Sets/changes the all user number for nodes. - INTERFACE cmfe_Nodes_UserNumbersAllSet - MODULE PROCEDURE cmfe_Nodes_UserNumbersAllSetNumber - MODULE PROCEDURE cmfe_Nodes_UserNumbersAllSetObj - END INTERFACE cmfe_Nodes_UserNumbersAllSet - - PUBLIC cmfe_Nodes_CreateFinish,cmfe_Nodes_CreateStart - - PUBLIC cmfe_Nodes_Destroy - - PUBLIC cmfe_Nodes_NumberOfNodesGet - - PUBLIC cmfe_Nodes_LabelGet,cmfe_Nodes_LabelSet - - PUBLIC cmfe_Nodes_UserNumberGet,cmfe_Nodes_UserNumberSet,cmfe_Nodes_UserNumbersAllSet + PUBLIC cmfe_Solver_QuasiNewtonTrustRegionToleranceSet -!!================================================================================================================================== -!! -!! PROBLEM_CONSTANTS_ROUTINES -!! -!!================================================================================================================================== + PUBLIC cmfe_Solver_QuasiNewtonRestartSet - !Module parameters + PUBLIC cmfe_Solver_QuasiNewtonRestartTypeSet - !> \addtogroup OpenCMISS_ProblemConstants OpenCMISS::Iron::Problem::Constants - !> \brief Problem constants. - !>@{ - !> \addtogroup OpenCMISS_ProblemClasses OpenCMISS::Iron::Problem::Classes - !> \brief Problem classes. - !> \see OpenCMISS::Iron::Problem,OpenCMISS - !>@{ - INTEGER(INTG), PARAMETER :: CMFE_PROBLEM_NO_CLASS = PROBLEM_NO_CLASS !@} - !> \addtogroup OpenCMISS_ProblemTypes OpenCMISS::Iron::Problem::Types - !> \brief Problem Types. - !> \see OpenCMISS::Iron::Problem,OpenCMISS - !>@{ - INTEGER(INTG), PARAMETER :: CMFE_PROBLEM_NO_TYPE = PROBLEM_NO_TYPE !@} - !> \addtogroup OpenCMISS_ProblemSubtypes OpenCMISS::Iron::Problem::Subtypes - !> \brief Problem Subtypes. - !> \see OpenCMISS::Iron::Problem,OpenCMISS - !>@{ - INTEGER(INTG), PARAMETER :: CMFE_PROBLEM_NO_SUBTYPE = PROBLEM_NO_SUBTYPE !@} - !> \addtogroup OpenCMISS_ProblemControlLoopTypes OpenCMISS::Iron::Problem::ControlLoopTypes - !> \brief Problem control loop type parameters - !> \see OpenCMISS::Iron::Problem,OpenCMISS - !>@{ - INTEGER(INTG), PARAMETER :: CMFE_PROBLEM_CONTROL_SIMPLE_TYPE = PROBLEM_CONTROL_SIMPLE_TYPE !@} - !>@} + PUBLIC cmfe_Solver_QuasiNewtonScaleTypeSet - !Module types + PUBLIC cmfe_Solver_QuasiNewtonSolveTypeSet - !Module variables + PUBLIC cmfe_Solver_QuasiNewtonTypeSet - !Interfaces + PUBLIC cmfe_Solver_NonlinearTypeSet - PUBLIC CMFE_PROBLEM_NO_CLASS,CMFE_PROBLEM_ELASTICITY_CLASS,CMFE_PROBLEM_FLUID_MECHANICS_CLASS, & - & CMFE_PROBLEM_ELECTROMAGNETICS_CLASS, & - & CMFE_PROBLEM_CLASSICAL_FIELD_CLASS,CMFE_PROBLEM_BIOELECTRICS_CLASS,CMFE_PROBLEM_MODAL_CLASS,CMFE_PROBLEM_FITTING_CLASS, & - & CMFE_PROBLEM_OPTIMISATION_CLASS,CMFE_PROBLEM_MULTI_PHYSICS_CLASS + PUBLIC cmfe_Solver_OutputTypeSet - PUBLIC CMFE_PROBLEM_NO_TYPE + PUBLIC cmfe_Solver_SolverEquationsGet - PUBLIC CMFE_PROBLEM_LINEAR_ELASTICITY_TYPE,CMFE_PROBLEM_FINITE_ELASTICITY_TYPE + PUBLIC cmfe_SolverEquations_BoundaryConditionsCreateFinish,cmfe_SolverEquations_BoundaryConditionsCreateStart - PUBLIC CMFE_PROBLEM_LINEAR_ELASTICITY_CONTACT_TYPE, CMFE_PROBLEM_FINITE_ELASTICITY_CONTACT_TYPE + PUBLIC cmfe_SolverEquations_BoundaryConditionsGet - PUBLIC CMFE_PROBLEM_STOKES_EQUATION_TYPE,CMFE_PROBLEM_NAVIER_STOKES_EQUATION_TYPE,CMFE_PROBLEM_DARCY_EQUATION_TYPE, & - & CMFE_PROBLEM_POISEUILLE_EQUATION_TYPE,CMFE_PROBLEM_BURGERS_EQUATION_TYPE + PUBLIC cmfe_SolverEquations_EquationsSetAdd - PUBLIC CMFE_PROBLEM_ELECTROSTATIC_TYPE,CMFE_PROBLEM_MAGNETOSTATIC_TYPE,CMFE_PROBLEM_MAXWELLS_EQUATIONS_TYPE + PUBLIC cmfe_SolverEquations_InterfaceConditionAdd - PUBLIC CMFE_PROBLEM_LAPLACE_EQUATION_TYPE,CMFE_PROBLEM_POISSON_EQUATION_TYPE,CMFE_PROBLEM_HELMHOLTZ_EQUATION_TYPE, & - & CMFE_PROBLEM_WAVE_EQUATION_TYPE,CMFE_PROBLEM_DIFFUSION_EQUATION_TYPE,CMFE_PROBLEM_ADVECTION_DIFFUSION_EQUATION_TYPE, & - & CMFE_PROBLEM_REACTION_DIFFUSION_EQUATION_TYPE,CMFE_PROBLEM_BIHARMONIC_EQUATION_TYPE + PUBLIC cmfe_SolverEquations_JacobianMatrixGet - PUBLIC CMFE_PROBLEM_MONODOMAIN_EQUATION_TYPE,CMFE_PROBLEM_BIDOMAIN_EQUATION_TYPE + PUBLIC cmfe_SolverEquations_MatrixGet - PUBLIC CMFE_PROBLEM_LINEAR_ELASTIC_MODAL_TYPE + PUBLIC cmfe_SolverEquations_NumberOfMatricesGet - PUBLIC CMFE_PROBLEM_DATA_FITTING_TYPE + PUBLIC cmfe_SolverEquations_ResidualVectorGet - PUBLIC CMFE_PROBLEM_FINITE_ELASTICITY_DARCY_TYPE, & - & CMFE_PROBLEM_FINITE_ELASTICITY_STOKES_TYPE, CMFE_PROBLEM_FINITE_ELASTICITY_NAVIER_STOKES_TYPE, & - & CMFE_PROBLEM_DIFFUSION_DIFFUSION_TYPE, CMFE_PROBLEM_DIFFUSION_ADVECTION_DIFFUSION_TYPE, & - & CMFE_PROBLEM_MULTI_COMPARTMENT_TRANSPORT_TYPE,CMFE_PROBLEM_FINITE_ELASTICITY_FLUID_PRESSURE_TYPE, & - & CMFE_PROBLEM_BIOELECTRIC_FINITE_ELASTICITY_TYPE + PUBLIC cmfe_SolverEquations_RhsVectorGet - PUBLIC CMFE_PROBLEM_NO_SUBTYPE + PUBLIC cmfe_SolverEquations_SparsityTypeSet - PUBLIC CMFE_PROBLEM_LE_CONTACT_TRANSFORM_REPROJECT_SUBTYPE, CMFE_PROBLEM_LE_CONTACT_TRANSFORM_SUBTYPE, & - & CMFE_PROBLEM_LE_CONTACT_REPROJECT_SUBTYPE + PUBLIC cmfe_SolverEquations_SymmetryTypeGet,cmfe_SolverEquations_SymmetryTypeSet - PUBLIC CMFE_PROBLEM_FE_CONTACT_TRANSFORM_REPROJECT_SUBTYPE, CMFE_PROBLEM_FE_CONTACT_TRANSFORM_SUBTYPE, & - & CMFE_PROBLEM_FE_CONTACT_REPROJECT_SUBTYPE + PUBLIC cmfe_SolverEquations_VectorGet - PUBLIC CMFE_PROBLEM_STATIC_STOKES_SUBTYPE,CMFE_PROBLEM_LAPLACE_STOKES_SUBTYPE,CMFE_PROBLEM_TRANSIENT_STOKES_SUBTYPE, & - & CMFE_PROBLEM_OPTIMISED_STOKES_SUBTYPE,CMFE_PROBLEM_ALE_STOKES_SUBTYPE,CMFE_PROBLEM_PGM_STOKES_SUBTYPE + PUBLIC cmfe_BioelectricsFiniteElasticity_UpdateGeometricField - PUBLIC CMFE_PROBLEM_STATIC_NAVIER_STOKES_SUBTYPE,CMFE_PROBLEM_LAPLACE_NAVIER_STOKES_SUBTYPE, & - & CMFE_PROBLEM_TRANSIENT_NAVIER_STOKES_SUBTYPE,CMFE_PROBLEM_TRANSIENT_RBS_NAVIER_STOKES_SUBTYPE, & - & CMFE_PROBLEM_PGM_NAVIER_STOKES_SUBTYPE,CMFE_PROBLEM_OPTIMISED_NAVIER_STOKES_SUBTYPE, & - & CMFE_PROBLEM_TRANSIENT1D_NAVIER_STOKES_SUBTYPE,CMFE_PROBLEM_COUPLED1D0D_NAVIER_STOKES_SUBTYPE, & - & CMFE_PROBLEM_TRANSIENT1D_ADV_NAVIER_STOKES_SUBTYPE,CMFE_PROBLEM_COUPLED1D0D_ADV_NAVIER_STOKES_SUBTYPE, & - & CMFE_PROBLEM_STREE1D0D_ADV_SUBTYPE,CMFE_PROBLEM_STREE1D0D_SUBTYPE, & - & CMFE_PROBLEM_ALE_NAVIER_STOKES_SUBTYPE,CMFE_PROBLEM_MULTISCALE_NAVIER_STOKES_SUBTYPE +!================================================================================================================================== +! +! FieldML routines +! +!================================================================================================================================== - PUBLIC CMFE_PROBLEM_STANDARD_DARCY_SUBTYPE,CMFE_PROBLEM_QUASISTATIC_DARCY_SUBTYPE,CMFE_PROBLEM_ALE_DARCY_SUBTYPE, & - & CMFE_PROBLEM_TRANSIENT_DARCY_SUBTYPE,CMFE_PROBLEM_PGM_DARCY_SUBTYPE,CMFE_PROBLEM_PGM_TRANSIENT_DARCY_SUBTYPE + !> Provides input and output of fields through the FieldML API + TYPE cmfe_FieldMLIOType + PRIVATE +#ifdef WITH_FIELDML + TYPE(FIELDML_IO_TYPE), POINTER :: fieldmlInfo +#endif + END TYPE cmfe_FieldMLIOType + + !> Creates a mesh component using the given FieldML evaluator. + INTERFACE cmfe_FieldML_InputCreateMeshComponent + MODULE PROCEDURE cmfe_FieldML_InputCreateMeshComponentObjVS + MODULE PROCEDURE cmfe_FieldML_InputCreateMeshComponentNumberVS + MODULE PROCEDURE cmfe_FieldML_InputCreateMeshComponentObjC + MODULE PROCEDURE cmfe_FieldML_InputCreateMeshComponentNumberC + END INTERFACE cmfe_FieldML_InputCreateMeshComponent + + !> Creates a field component using the given FieldML evaluator. + INTERFACE cmfe_FieldML_InputFieldCreateStart + MODULE PROCEDURE cmfe_FieldML_InputFieldCreateStartObjVS + MODULE PROCEDURE cmfe_FieldML_InputFieldCreateStartNumberVS + MODULE PROCEDURE cmfe_FieldML_InputFieldCreateStartObjC + MODULE PROCEDURE cmfe_FieldML_InputFieldCreateStartNumberC + END INTERFACE cmfe_FieldML_InputFieldCreateStart + + !> Updates the given field's dofs using the given parameter evaluator. + INTERFACE cmfe_FieldML_InputFieldParametersUpdate + MODULE PROCEDURE cmfe_FieldML_InputFieldParametersUpdateObjVS + MODULE PROCEDURE cmfe_FieldML_InputFieldParametersUpdateNumberVS + MODULE PROCEDURE cmfe_FieldML_InputFieldParametersUpdateObjC + MODULE PROCEDURE cmfe_FieldML_InputFieldParametersUpdateNumberC + END INTERFACE cmfe_FieldML_InputFieldParametersUpdate + + !> Creates a basis using the given FieldML evaluator. + INTERFACE cmfe_FieldML_InputBasisCreateStart + MODULE PROCEDURE cmfe_FieldML_InputBasisCreateStartObjVS + MODULE PROCEDURE cmfe_FieldML_InputBasisCreateStartNumberVS + MODULE PROCEDURE cmfe_FieldML_InputBasisCreateStartObjC + MODULE PROCEDURE cmfe_FieldML_InputBasisCreateStartNumberC + END INTERFACE cmfe_FieldML_InputBasisCreateStart + + !> Creates the region's nodes using the given FieldML evaluator. + INTERFACE cmfe_FieldML_InputNodesCreateStart + MODULE PROCEDURE cmfe_FieldML_InputNodesCreateStartObjVS + MODULE PROCEDURE cmfe_FieldML_InputNodesCreateStartNumberVS + MODULE PROCEDURE cmfe_FieldML_InputNodesCreateStartObjC + MODULE PROCEDURE cmfe_FieldML_InputNodesCreateStartNumberC + END INTERFACE cmfe_FieldML_InputNodesCreateStart + + !> Creates the region's coordinate system using the given FieldML evaluator. + INTERFACE cmfe_FieldML_InputCoordinateSystemCreateStart + MODULE PROCEDURE cmfe_FieldML_InputCoordinateSystemCreateStartObjVS + MODULE PROCEDURE cmfe_FieldML_InputCoordinateSystemCreateStartNumberVS + MODULE PROCEDURE cmfe_FieldML_InputCoordinateSystemCreateStartObjC + MODULE PROCEDURE cmfe_FieldML_InputCoordinateSystemCreateStartNumberC + END INTERFACE cmfe_FieldML_InputCoordinateSystemCreateStart + + !> Creates a mesh using the given FieldML evaluator. + INTERFACE cmfe_FieldML_InputMeshCreateStart + MODULE PROCEDURE cmfe_FieldML_InputMeshCreateStartObjVS + MODULE PROCEDURE cmfe_FieldML_InputMeshCreateStartNumberVS + MODULE PROCEDURE cmfe_FieldML_InputMeshCreateStartObjC + MODULE PROCEDURE cmfe_FieldML_InputMeshCreateStartNumberC + END INTERFACE cmfe_FieldML_InputMeshCreateStart + + !> Initialise the given FieldML context using the given FieldML XML file. + INTERFACE cmfe_FieldML_InputCreateFromFile + MODULE PROCEDURE cmfe_FieldML_InputCreateFromFileVS + MODULE PROCEDURE cmfe_FieldML_InputCreateFromFileC + END INTERFACE cmfe_FieldML_InputCreateFromFile + + PUBLIC :: cmfe_FieldML_InputCreateFromFile,cmfe_FieldML_InputMeshCreateStart, & + & cmfe_FieldML_InputCoordinateSystemCreateStart,cmfe_FieldML_InputCreateMeshComponent, & + & cmfe_FieldML_InputFieldCreateStart,cmfe_FieldML_InputBasisCreateStart,cmfe_FieldML_InputNodesCreateStart, & + & cmfe_FieldML_InputFieldParametersUpdate + + PUBLIC :: cmfe_FieldMLIO_Finalise,cmfe_FieldMLIO_Initialise,cmfe_FieldMLIO_GetSession + + !> Add the given field to the current FieldML context. + INTERFACE cmfe_FieldML_OutputAddField + MODULE PROCEDURE cmfe_FieldML_OutputAddFieldNoTypeObjVS + MODULE PROCEDURE cmfe_FieldML_OutputAddFieldNoTypeNumberVS + MODULE PROCEDURE cmfe_FieldML_OutputAddFieldWithTypeObjVS + MODULE PROCEDURE cmfe_FieldML_OutputAddFieldWithTypeNumberVS + MODULE PROCEDURE cmfe_FieldML_OutputAddFieldNoTypeObjC + MODULE PROCEDURE cmfe_FieldML_OutputAddFieldNoTypeNumberC + MODULE PROCEDURE cmfe_FieldML_OutputAddFieldWithTypeObjC + MODULE PROCEDURE cmfe_FieldML_OutputAddFieldWithTypeNumberC + END INTERFACE cmfe_FieldML_OutputAddField + + !> Initialise a new FieldML context. + INTERFACE cmfe_FieldML_OutputCreate + MODULE PROCEDURE cmfe_FieldML_OutputCreateObjVS + MODULE PROCEDURE cmfe_FieldML_OutputCreateNumberVS + MODULE PROCEDURE cmfe_FieldML_OutputCreateObjC + MODULE PROCEDURE cmfe_FieldML_OutputCreateNumberC + END INTERFACE cmfe_FieldML_OutputCreate + + !> Add the given field to the current FieldML context, using only the given components. + INTERFACE cmfe_FieldML_OutputAddFieldComponents + MODULE PROCEDURE cmfe_FieldML_OutputAddFieldComponentsObjVS + MODULE PROCEDURE cmfe_FieldML_OutputAddFieldComponentsNumberVS + MODULE PROCEDURE cmfe_FieldML_OutputAddFieldComponentsObjC + MODULE PROCEDURE cmfe_FieldML_OutputAddFieldComponentsNumberC + END INTERFACE cmfe_FieldML_OutputAddFieldComponents + + !> Write the current FieldML document to the given file. + INTERFACE cmfe_FieldML_OutputWrite + MODULE PROCEDURE cmfe_FieldML_OutputWriteVS + MODULE PROCEDURE cmfe_FieldML_OutputWriteC + END INTERFACE cmfe_FieldML_OutputWrite + + PUBLIC :: cmfe_FieldMLIOType + + PUBLIC :: cmfe_FieldML_OutputWrite,cmfe_FieldML_OutputAddField,cmfe_FieldML_OutputCreate, & + & cmfe_FieldML_OutputAddFieldComponents, & + & cmfe_FieldML_OutputAddImport + +!================================================================================================================================== +! +! GENERAL_ROUTINES +! +!================================================================================================================================== - PUBLIC CMFE_PROBLEM_STATIC_POISEUILLE_SUBTYPE,CMFE_PROBLEM_DYNAMIC_POISEUILLE_SUBTYPE + !>Returns the user number of an object. + INTERFACE cmfe_UserNumberGet + MODULE PROCEDURE cmfe_Region_UserNumberGet + MODULE PROCEDURE cmfe_Mesh_UserNumberGet + MODULE PROCEDURE cmfe_Basis_UserNumberGet + END INTERFACE cmfe_UserNumberGet - PUBLIC CMFE_PROBLEM_STATIC_BURGERS_SUBTYPE,CMFE_PROBLEM_DYNAMIC_BURGERS_SUBTYPE + PUBLIC cmfe_UserNumberGet - PUBLIC CMFE_PROBLEM_STANDARD_LAPLACE_SUBTYPE,CMFE_PROBLEM_GENERALISED_LAPLACE_SUBTYPE, & - & CMFE_PROBLEM_MONODOMAIN_STRANG_SPLITTING_EQUATION_TYPE - PUBLIC CMFE_PROBLEM_LINEAR_SOURCE_POISSON_SUBTYPE,CMFE_PROBLEM_NONLINEAR_SOURCE_POISSON_SUBTYPE, & - & CMFE_PROBLEM_LINEAR_PRESSURE_POISSON_SUBTYPE,CMFE_PROBLEM_NONLINEAR_PRESSURE_POISSON_SUBTYPE, & - & CMFE_PROBLEM_ALE_PRESSURE_POISSON_SUBTYPE, CMFE_PROBLEM_FITTED_PRESSURE_POISSON_SUBTYPE, & - & CMFE_PROBLEM_EXTRACELLULAR_BIDOMAIN_POISSON_SUBTYPE +!================================================================================================================================== - PUBLIC CMFE_PROBLEM_STANDARD_HELMHOLTZ_SUBTYPE,CMFE_PROBLEM_GENERALISED_HELMHOLTZ_SUBTYPE - PUBLIC CMFE_PROBLEM_NO_SOURCE_DIFFUSION_SUBTYPE,CMFE_PROBLEM_LINEAR_SOURCE_DIFFUSION_SUBTYPE, & - & CMFE_PROBLEM_NONLINEAR_SOURCE_DIFFUSION_SUBTYPE +CONTAINS - PUBLIC CMFE_PROBLEM_NO_SOURCE_ALE_DIFFUSION_SUBTYPE,CMFE_PROBLEM_LINEAR_SOURCE_ALE_DIFFUSION_SUBTYPE, & - & CMFE_PROBLEM_NONLINEAR_SOURCE_ALE_DIFFUSION_SUBTYPE + ! + !================================================================================================================================ + ! - PUBLIC CMFE_PROBLEM_NO_SOURCE_ADVECTION_DIFFUSION_SUBTYPE,CMFE_PROBLEM_LINEAR_SOURCE_ADVECTION_DIFFUSION_SUBTYPE, & - & CMFE_PROBLEM_NONLINEAR_SOURCE_ADVECTION_DIFFUSION_SUBTYPE + !>Finalises an OpenCMISS context specified by user number. + SUBROUTINE cmfe_FinaliseNumber(contextUserNumber,err) + !DLLEXPORT(cmfe_Finalise) - PUBLIC CMFE_PROBLEM_NO_SOURCE_ALE_ADVECTION_DIFFUSION_SUBTYPE,CMFE_PROBLEM_LINEAR_SOURCE_ALE_ADVECTION_DIFFUSION_SUBTYPE, & - & CMFE_PROBLEM_NONLINEAR_SOURCE_ALE_ADVECTION_DIFFUSION_SUBTYPE + !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Finalises an OpenCMISS context specified by an object. + SUBROUTINE cmfe_FinaliseObj(context,err) + !DLLEXPORT(cmfe_Finalise) - PUBLIC CMFE_PROBLEM_CONTROL_SIMPLE_TYPE,CMFE_PROBLEM_CONTROL_FIXED_LOOP_TYPE,CMFE_PROBLEM_CONTROL_TIME_LOOP_TYPE, & - & CMFE_PROBLEM_CONTROL_WHILE_LOOP_TYPE,CMFE_PROBLEM_CONTROL_LOAD_INCREMENT_LOOP_TYPE + !Argument variables + TYPE(cmfe_ContextType), INTENT(INOUT) :: context !Finish the creation of CellML equations for a problem. \see OpenCMISS::Iron::cmfe_Problem_CellMLEquationsCreateStart - INTERFACE cmfe_Problem_CellMLEquationsCreateFinish - MODULE PROCEDURE cmfe_Problem_CellMLEquationsCreateFinishNumber - MODULE PROCEDURE cmfe_Problem_CellMLEquationsCreateFinishObj - END INTERFACE cmfe_Problem_CellMLEquationsCreateFinish - - !>Start the creation of solver equations for a problem. \see OpenCMISS::Iron::cmfe_Problem_CellMLEquationsCreateFinish - INTERFACE cmfe_Problem_CellMLEquationsCreateStart - MODULE PROCEDURE cmfe_Problem_CellMLEquationsCreateStartNumber - MODULE PROCEDURE cmfe_Problem_CellMLEquationsCreateStartObj - END INTERFACE cmfe_Problem_CellMLEquationsCreateStart - - !>Returns the CellML equations for a problem. - INTERFACE cmfe_Problem_CellMLEquationsGet - MODULE PROCEDURE cmfe_Problem_CellMLEquationsGetNumber0 - MODULE PROCEDURE cmfe_Problem_CellMLEquationsGetNumber1 - MODULE PROCEDURE cmfe_Problem_CellMLEquationsGetObj0 - MODULE PROCEDURE cmfe_Problem_CellMLEquationsGetObj1 - END INTERFACE cmfe_Problem_CellMLEquationsGet - - !>Finishes the process of creating a problem. \see OpenCMISS::Iron::cmfe_Problem_CreateStart - INTERFACE cmfe_Problem_CreateFinish - MODULE PROCEDURE cmfe_Problem_CreateFinishNumber - MODULE PROCEDURE cmfe_Problem_CreateFinishObj - END INTERFACE cmfe_Problem_CreateFinish - - !>Start the process of creating a problem. \see OpenCMISS::Iron::cmfe_Problem_CreateFinish - INTERFACE cmfe_Problem_CreateStart - MODULE PROCEDURE cmfe_Problem_CreateStartNumber - MODULE PROCEDURE cmfe_Problem_CreateStartObj - END INTERFACE cmfe_Problem_CreateStart - - !>Finishes the process of creating a control loop on a problem. \see OpenCMISS::Iron::cmfe_Problem_ControlLoopCreateStart - INTERFACE cmfe_Problem_ControlLoopCreateFinish - MODULE PROCEDURE cmfe_Problem_ControlLoopCreateFinishNumber - MODULE PROCEDURE cmfe_Problem_ControlLoopCreateFinishObj - END INTERFACE cmfe_Problem_ControlLoopCreateFinish - - !>Starts the process of creating a control loop on a problem. \see OpenCMISS::Iron::cmfe_Problem_ControlLoopCreateFinish - INTERFACE cmfe_Problem_ControlLoopCreateStart - MODULE PROCEDURE cmfe_Problem_ControlLoopCreateStartNumber - MODULE PROCEDURE cmfe_Problem_ControlLoopCreateStartObj - END INTERFACE cmfe_Problem_ControlLoopCreateStart - - !>Destroys the control loop for a problem. - INTERFACE cmfe_Problem_ControlLoopDestroy - MODULE PROCEDURE cmfe_Problem_ControlLoopDestroyNumber - MODULE PROCEDURE cmfe_Problem_ControlLoopDestroyObj - END INTERFACE cmfe_Problem_ControlLoopDestroy - - !>Returns a control loop for a problem. - INTERFACE cmfe_Problem_ControlLoopGet - MODULE PROCEDURE cmfe_Problem_ControlLoopGetNumber0 - MODULE PROCEDURE cmfe_Problem_ControlLoopGetNumber1 - MODULE PROCEDURE cmfe_Problem_ControlLoopGetObj0 - MODULE PROCEDURE cmfe_Problem_ControlLoopGetObj1 - END INTERFACE cmfe_Problem_ControlLoopGet - - !>Destroys a problem. - INTERFACE cmfe_Problem_Destroy - MODULE PROCEDURE cmfe_Problem_DestroyNumber - MODULE PROCEDURE cmfe_Problem_DestroyObj - END INTERFACE cmfe_Problem_Destroy - - !>Solve a problem. - INTERFACE cmfe_Problem_Solve - MODULE PROCEDURE cmfe_Problem_SolveNumber - MODULE PROCEDURE cmfe_Problem_SolveObj - END INTERFACE cmfe_Problem_Solve - - !>Returns the solver for a problem control loop. - INTERFACE cmfe_Problem_SolverGet - MODULE PROCEDURE cmfe_Problem_SolverGetNumber0 - MODULE PROCEDURE cmfe_Problem_SolverGetNumber1 - MODULE PROCEDURE cmfe_Problem_SolverGetObj0 - MODULE PROCEDURE cmfe_Problem_SolverGetObj1 - END INTERFACE cmfe_Problem_SolverGet + !>Initialises OpenCMISS context returning a user number new context. + SUBROUTINE cmfe_InitialiseNumber(newContextUserNumber,err) + !DLLEXPORT(cmfe_InitialiseNumber) - !>Set boundary conditions for solver equations according to the analytic equations. - INTERFACE cmfe_SolverEquations_BoundaryConditionsAnalytic - MODULE PROCEDURE cmfe_SolverEquations_BoundaryConditionsAnalyticNumber0 - MODULE PROCEDURE cmfe_SolverEquations_BoundaryConditionsAnalyticNumber1 - MODULE PROCEDURE cmfe_SolverEquations_BoundaryConditionsAnalyticObj - END INTERFACE cmfe_SolverEquations_BoundaryConditionsAnalytic + !Argument variables + INTEGER(INTG), INTENT(OUT) :: newContextUserNumber !Finish the creation of solver equations for a problem. \see OpenCMISS::Iron::cmfe_Problem_SolverEquationsCreateStart - INTERFACE cmfe_Problem_SolverEquationsCreateFinish - MODULE PROCEDURE cmfe_Problem_SolverEquationsCreateFinishNumber - MODULE PROCEDURE cmfe_Problem_SolverEquationsCreateFinishObj - END INTERFACE cmfe_Problem_SolverEquationsCreateFinish + NULLIFY(newContext) + CALL cmfe_Initialise_(newContext,err,error,*999) + CALL Context_UserNumberGet(newContext,newContextUserNumber,err,error,*999) + + RETURN +999 CALL cmfe_HandleError(err,error) + RETURN - !>Start the creation of solver equations for a problem. \see OpenCMISS::Iron::cmfe_Problem_SolverEquationsCreateFinish - INTERFACE cmfe_Problem_SolverEquationsCreateStart - MODULE PROCEDURE cmfe_Problem_SolverEquationsCreateStartNumber - MODULE PROCEDURE cmfe_Problem_SolverEquationsCreateStartObj - END INTERFACE cmfe_Problem_SolverEquationsCreateStart + END SUBROUTINE cmfe_InitialiseNumber - !>Destroys the solver equations for a problem. - INTERFACE cmfe_Problem_SolverEquationsDestroy - MODULE PROCEDURE cmfe_Problem_SolverEquationsDestroyNumber - MODULE PROCEDURE cmfe_Problem_SolverEquationsDestroyObj - END INTERFACE cmfe_Problem_SolverEquationsDestroy + ! + !================================================================================================================================ + ! - !>Returns the solver equations for a problem. - INTERFACE cmfe_Problem_SolverEquationsGet - MODULE PROCEDURE cmfe_Problem_SolverEquationsGetNumber0 - MODULE PROCEDURE cmfe_Problem_SolverEquationsGetNumber1 - MODULE PROCEDURE cmfe_Problem_SolverEquationsGetObj0 - MODULE PROCEDURE cmfe_Problem_SolverEquationsGetObj1 - END INTERFACE cmfe_Problem_SolverEquationsGet + !>Initialises OpenCMISS returning a pointer to the new context. + SUBROUTINE cmfe_InitialiseObj(newContext,err) + !DLLEXPORT(cmfe_InitialiseObj) - !>Finish the creation of solvers for a problem. \see OpenCMISS::Iron::cmfe_Problem_SolversCreateStart - INTERFACE cmfe_Problem_SolversCreateFinish - MODULE PROCEDURE cmfe_Problem_SolversCreateFinishNumber - MODULE PROCEDURE cmfe_Problem_SolversCreateFinishObj - END INTERFACE cmfe_Problem_SolversCreateFinish + !Argument variables + TYPE(cmfe_ContextType), INTENT(INOUT) :: newContext !Start the creation of solvers for a problem. \see OpenCMISS::Iron::cmfe_Problem_SolversCreateFinish - INTERFACE cmfe_Problem_SolversCreateStart - MODULE PROCEDURE cmfe_Problem_SolversCreateStartNumber - MODULE PROCEDURE cmfe_Problem_SolversCreateStartObj - END INTERFACE cmfe_Problem_SolversCreateStart + CALL cmfe_Initialise_(newContext%context,err,error,*999) - !>Destroy the solvers for a problem. - INTERFACE cmfe_Problem_SolversDestroy - MODULE PROCEDURE cmfe_Problem_SolversDestroyNumber - MODULE PROCEDURE cmfe_Problem_SolversDestroyObj - END INTERFACE cmfe_Problem_SolversDestroy + RETURN +999 CALL cmfe_HandleError(err,error) + RETURN - !>Returns the problem specification array for a problem. - INTERFACE cmfe_Problem_SpecificationGet - MODULE PROCEDURE cmfe_Problem_SpecificationGetNumber - MODULE PROCEDURE cmfe_Problem_SpecificationGetObj - END INTERFACE cmfe_Problem_SpecificationGet + END SUBROUTINE cmfe_InitialiseObj - !>Returns the size of the problem specification array for a problem. - INTERFACE cmfe_Problem_SpecificationSizeGet - MODULE PROCEDURE cmfe_Problem_SpecificationSizeGetNumber - MODULE PROCEDURE cmfe_Problem_SpecificationSizeGetObj - END INTERFACE cmfe_Problem_SpecificationSizeGet + ! + !================================================================================================================================ + ! - PUBLIC cmfe_Problem_CellMLEquationsCreateFinish,cmfe_Problem_CellMLEquationsCreateStart + !>Finalises a cmfe_ContextType object. + SUBROUTINE cmfe_Context_Finalise(cmfe_Context,err) + !DLLEXPORT(cmfe_Context_Finalise) - PUBLIC cmfe_Problem_CellMLEquationsGet + !Argument variables + TYPE(cmfe_ContextType), INTENT(OUT) :: cmfe_Context !Initialises a cmfe_ContextType object. + SUBROUTINE cmfe_Context_Initialise(cmfe_Context,err) + !DLLEXPORT(cmfe_Context_Initialise) - PUBLIC cmfe_Problem_SolverGet + !Argument variables + TYPE(cmfe_ContextType), INTENT(OUT) :: cmfe_Context !Sets a PETSc option (so that they can be set from python when we don't have the command line.) + SUBROUTINE cmfe_PetscOptionsSetValue(name,VALUE,err) + !DLLEXPORT(cmfe_WorkingRealPrecisionGet) - PUBLIC cmfe_Problem_SpecificationGet,cmfe_Problem_SpecificationSizeGet + !Argument variables + CHARACTER(LEN=*), INTENT(IN) :: name !Returns the coordinate system of region. - INTERFACE cmfe_Region_CoordinateSystemGet - MODULE PROCEDURE cmfe_Region_CoordinateSystemGetNumber - MODULE PROCEDURE cmfe_Region_CoordinateSystemGetObj - END INTERFACE cmfe_Region_CoordinateSystemGet + !>Returns the working precision + SUBROUTINE cmfe_WorkingRealPrecisionGet(workingRealPrecision,err) + !DLLEXPORT(cmfe_WorkingRealPrecisionGet) - !>Sets/changes the coordinate system of region. - INTERFACE cmfe_Region_CoordinateSystemSet - MODULE PROCEDURE cmfe_Region_CoordinateSystemSetNumber - MODULE PROCEDURE cmfe_Region_CoordinateSystemSetObj - END INTERFACE cmfe_Region_CoordinateSystemSet + !Argument variables + INTEGER(INTG), INTENT(OUT) :: workingRealPrecision !Finishes the creation of a region. \see OpenCMISS::Iron::cmfe_Region_CreateStart - INTERFACE cmfe_Region_CreateFinish - MODULE PROCEDURE cmfe_Region_CreateFinishNumber - MODULE PROCEDURE cmfe_Region_CreateFinishObj - END INTERFACE cmfe_Region_CreateFinish + ENTERS("cmfe_WorkingRealPrecisionGet",err,error,*999) - !>Starts the creation of a region. \see OpenCMISS::Iron::cmfe_Region_CreateFinish - INTERFACE cmfe_Region_CreateStart - MODULE PROCEDURE cmfe_Region_CreateStartNumber - MODULE PROCEDURE cmfe_Region_CreateStartObj - END INTERFACE cmfe_Region_CreateStart +#ifdef SINGLE_REAL_PRECISION + workingRealPrecision=CMFE_SINGLE_REAL_TYPE +#else + workingRealPrecision=CMFE_DOUBLE_REAL_TYPE +#endif - !>Returns the data points for a region. - INTERFACE cmfe_Region_DataPointsGet - MODULE PROCEDURE cmfe_Region_DataPointsGetObj - END INTERFACE cmfe_Region_DataPointsGet + EXITS("cmfe_WorkingRealPrecisionGet") + RETURN +999 ERRORSEXITS("cmfe_WorkingRealPrecisionGet",err,error) + CALL cmfe_HandleError(err,error) + RETURN - !>Destroys a region. - INTERFACE cmfe_Region_Destroy - MODULE PROCEDURE cmfe_Region_DestroyNumber - MODULE PROCEDURE cmfe_Region_DestroyObj - END INTERFACE cmfe_Region_Destroy + END SUBROUTINE cmfe_WorkingRealPrecisionGet - !>Returns the label of a region. - INTERFACE cmfe_Region_LabelGet - MODULE PROCEDURE cmfe_Region_LabelGetCNumber - MODULE PROCEDURE cmfe_Region_LabelGetCObj - MODULE PROCEDURE cmfe_Region_LabelGetVSNumber - MODULE PROCEDURE cmfe_Region_LabelGetVSObj - END INTERFACE cmfe_Region_LabelGet + ! + !================================================================================================================================ + ! - !>Sets/changes the label of a region. - INTERFACE cmfe_Region_LabelSet - MODULE PROCEDURE cmfe_Region_LabelSetCNumber - MODULE PROCEDURE cmfe_Region_LabelSetCObj - MODULE PROCEDURE cmfe_Region_LabelSetVSNumber - MODULE PROCEDURE cmfe_Region_LabelSetVSObj - END INTERFACE cmfe_Region_LabelSet + !>Copy an array of cmfe_BasisTypes from C to an allocated Fortran array, for use by the C bindings + SUBROUTINE cmfe_BasisTypesCopy(bases,basesSize,basesPtr,err) + !DLLEXPORT(cmfe_BasisTypesCopy) - !>Returns the nodes for a region. - INTERFACE cmfe_Region_NodesGet - MODULE PROCEDURE cmfe_Region_NodesGetObj - END INTERFACE cmfe_Region_NodesGet + !Argument variables + TYPE(cmfe_BasisType), INTENT(INOUT) :: bases(:) ! Basis%basis + ELSE + CALL FlagError("error converting C pointer.",ERR,error,*999) + END IF + END DO + ELSE + CALL FlagError("error converting C pointer.",ERR,error,*999) + END IF + ELSE + CALL FlagError("bases C pointer is not associated.",ERR,error,*999) + END IF - PUBLIC cmfe_Region_DataPointsGet + EXITS("cmfe_BasisTypesCopy") + RETURN +999 ERRORSEXITS("cmfe_BasisTypesCopy",err,error) + CALL cmfe_HandleError(err,error) + RETURN - PUBLIC cmfe_Region_Destroy + END SUBROUTINE cmfe_BasisTypesCopy - PUBLIC cmfe_Region_LabelGet,cmfe_Region_LabelSet + ! + !================================================================================================================================ + ! - PUBLIC cmfe_Region_NodesGet + !>Finalises a cmfe_BasisType object. + SUBROUTINE cmfe_Basis_Finalise(cmfe_Basis,err) + !DLLEXPORT(cmfe_Basis_Finalise) -!!================================================================================================================================== -!! -!! SOLVER_ROUTINES -!! -!!================================================================================================================================== + !Argument variables + TYPE(cmfe_BasisType), INTENT(OUT) :: cmfe_Basis ! \addtogroup OpenCMISS_CellMLEquationsConstants OpenCMISS::Iron::CellMLEquations::Constants - !> \brief CellML equations constants. - !>@{ - !> \addtogroup OpenCMISS_CellMLEquationsLinearityTypes OpenCMISS::Iron::CellMLEquations::Constants::LinearityTypes - !> \brief The CellML equations linearity types - !> \see OpenCMISS::Iron::CellMLEquations,OpenCMISS - !>@{ - INTEGER(INTG), PARAMETER :: CMFE_CELLML_EQUATIONS_LINEAR = CELLML_EQUATIONS_LINEAR !@} - !> \addtogroup OpenCMISS_CellMLEquationsTimeDependenceTypes OpenCMISS::Iron::CellMLEquations::Constants:TimeDependenceTypes - !> \brief The CellML equations time dependence types - !> \see OpenCMISS::Iron::CellMLEquations,OpenCMISS - !>@{ - INTEGER(INTG), PARAMETER :: CMFE_CELLML_EQUATIONS_STATIC = CELLML_EQUATIONS_STATIC !@} - !>@} - - !> \addtogroup OpenCMISS_SolverConstants OpenCMISS::Iron::Solver::Constants - !> \brief Solver constants. - !>@{ - !> \addtogroup OpenCMISS_SolverTypes OpenCMISS::Iron::Solver::SolverTypes - !> \brief The types of solver - !> \see OpenCMISS::Iron::Solver::Constants,OpenCMISS - !>@{ - INTEGER(INTG), PARAMETER :: CMFE_SOLVER_LINEAR_TYPE = SOLVER_LINEAR_TYPE !@} - !> \addtogroup OpenCMISS_SolverLibraries OpenCMISS::Iron::Solver::SolverLibraries - !> \brief The types of solver libraries. - !> \see OpenCMISS::Iron::Solver::Constants,OpenCMISS - !>@{ - INTEGER(INTG), PARAMETER :: CMFE_SOLVER_CMISS_LIBRARY = SOLVER_CMISS_LIBRARY !@} - !> \addtogroup OpenCMISS_LinearSolverTypes OpenCMISS::Iron::Solver::LinearSolverTypes - !> \brief The types of linear solvers. - !> \see OpenCMISS::Iron::Solver::Constants,OpenCMISS - !>@{ - INTEGER(INTG), PARAMETER :: CMFE_SOLVER_LINEAR_DIRECT_SOLVE_TYPE = SOLVER_LINEAR_DIRECT_SOLVE_TYPE !@} - !> \addtogroup OpenCMISS_DirectLinearSolverTypes OpenCMISS::Iron::Solver::DirectLinearSolverTypes - !> \brief The types of direct linear solvers. \todo Move libraries to a more appropriate place. - !> \see OpenCMISS::Iron::Solver::Constants,OpenCMISS - !>@{ - INTEGER(INTG), PARAMETER :: CMFE_SOLVER_DIRECT_LU = SOLVER_DIRECT_LU !@} - !> \addtogroup OpenCMISS_IterativeLinearSolverTypes OpenCMISS::Iron::Solver::IterativeLinearSolverTypes - !> \brief The types of iterative linear solvers. - !> \see OpenCMISS::Iron::Solver::Constants,OpenCMISS - !>@{ - INTEGER(INTG), PARAMETER :: CMFE_SOLVER_ITERATIVE_RICHARDSON = SOLVER_ITERATIVE_RICHARDSON !@} - !> \addtogroup OpenCMISS_IterativePreconditionerTypes OpenCMISS::Iron::Solver::IterativePreconditionerTypes - !> \brief The types of iterative preconditioners. - !> \see OpenCMISS::Iron::Solver::Constants,OpenCMISS - !>@{ - INTEGER(INTG), PARAMETER :: CMFE_SOLVER_ITERATIVE_NO_PRECONDITIONER = SOLVER_ITERATIVE_NO_PRECONDITIONER !@} - !> \addtogroup OpenCMISS_NonlinearSolverTypes OpenCMISS::Iron::Solver::NonlinearSolverTypes - !> \brief The types of nonlinear solvers. - !> \see OpenCMISS::Iron::Solver::Constants,OpenCMISS - !>@{ - INTEGER(INTG), PARAMETER :: CMFE_SOLVER_NONLINEAR_NEWTON = SOLVER_NONLINEAR_NEWTON !@} - !> \addtogroup OpenCMISS_QuasiNewtonSolverTypes OpenCMISS::Iron::Solver::QuasiNewtonSolverTypes - !> \brief The types of nonlinear Quasi-Newton solvers - !> \see OpenCMISS::Iron::Solver::Constants,OpenCMISS - !>@{ - INTEGER(INTG), PARAMETER :: CMFE_SOLVER_QUASI_NEWTON_LINESEARCH=SOLVER_QUASI_NEWTON_LINESEARCH !@} - !> \addtogroup OpenCMISS_QuasiNewtonTypes OpenCMISS::Iron::Solver::QuasiNewtonTypes - !> \brief The nonlinear Quasi-Newton types - !> \see OpenCMISS::Iron::Solver::Constants,OpenCMISS - !>@{ - INTEGER(INTG), PARAMETER :: CMFE_SOLVER_QUASI_NEWTON_LBFGS=SOLVER_QUASI_NEWTON_LBFGS !@} - !> \addtogroup OpenCMISS_QuasiNewtonLineSearchTypes OpenCMISS::Iron::Solver::NonlinearQuasiNewtonLineSearchTypes - !> \brief The types of line search techniques for Quasi-Newton line search nonlinear solvers - !> \see OpenCMISS::Iron::Solver::Constants,OpenCMISS - !>@{ - INTEGER(INTG), PARAMETER :: CMFE_SOLVER_QUASI_NEWTON_LINESEARCH_BASIC=SOLVER_QUASI_NEWTON_LINESEARCH_BASIC !@} - !> \addtogroup OpenCMISS_QuasiNewtonRestartTypes OpenCMISS::Iron::Solver::QuasiNewtonRestartTypes - !> \brief The nonlinear Quasi-Newton restart types - !> \see OpenCMISS::Iron::Solver::Constants,OpenCMISS - !>@{ - INTEGER(INTG), PARAMETER :: CMFE_SOLVER_QUASI_NEWTON_RESTART_NONE=SOLVER_QUASI_NEWTON_RESTART_NONE !@} - !> \addtogroup OpenCMISS_QuasiNewtonScaleTypes OpenCMISS::Iron::Solver::QuasiNewtonScaleTypes - !> \brief The nonlinear Quasi-Newton scale types - !> \see OpenCMISS::Iron::Solver::Constants,OpenCMISS - !>@{ - INTEGER(INTG), PARAMETER :: CMFE_SOLVER_QUASI_NEWTON_SCALE_NONE=SOLVER_QUASI_NEWTON_SCALE_NONE !@} - !> \addtogroup OpenCMISS_NewtonSolverTypes OpenCMISS::Iron::Solver::NewtonSolverTypes - !> \brief The types of nonlinear Newton solvers. - !> \see OpenCMISS::Iron::Solver::Constants,OpenCMISS - !>@{ - INTEGER(INTG), PARAMETER :: CMFE_SOLVER_NEWTON_LINESEARCH = SOLVER_NEWTON_LINESEARCH !@} - !> \addtogroup OpenCMISS_NewtonLineSearchTypes OpenCMISS::Iron::Solver::NewtonLineSearchTypes - !> \brief The types line search techniques for Newton line search nonlinear solvers. - !> \see OpenCMISS::Iron::Solver::Constants,OpenCMISS - !>@{ - INTEGER(INTG), PARAMETER :: CMFE_SOLVER_NEWTON_LINESEARCH_LINEAR = SOLVER_NEWTON_LINESEARCH_LINEAR !@} - !> \addtogroup OpenCMISS_JacobianCalculationTypes OpenCMISS::Iron::Solver::JacobianCalculationTypes - !> \brief The Jacobian calculation types for a nonlinear solver. - !> \see OpenCMISS::Iron::Solver::Constants,OpenCMISS - !>@{ - INTEGER(INTG), PARAMETER :: CMFE_SOLVER_NEWTON_JACOBIAN_NOT_CALCULATED = SOLVER_NEWTON_JACOBIAN_NOT_CALCULATED !@} - !> \addtogroup OpenCMISS_NewtonConvergenceTypes OpenCMISS::Iron::Solver::NewtonConvergenceTypes - !> \brief The convergence test types for a nonlinear newton solver. - !> \see OpenCMISS::Iron::Solver::Constants,OpenCMISS - !>@{ - INTEGER(INTG), PARAMETER :: CMFE_SOLVER_NEWTON_CONVERGENCE_PETSC_DEFAULT = SOLVER_NEWTON_CONVERGENCE_PETSC_DEFAULT !@} - !> \addtogroup OpenCMISS_DynamicOrderTypes OpenCMISS::Iron::Solver::DynamicOrderTypes - !> \brief The order types for a dynamic solver. - !> \see OpenCMISS::Iron::Solver::Constants,OpenCMISS - !>@{ - INTEGER(INTG), PARAMETER :: CMFE_SOLVER_DYNAMIC_FIRST_ORDER = SOLVER_DYNAMIC_FIRST_ORDER !@} - !> \addtogroup OpenCMISS_DynamicLinearityTypes OpenCMISS::Iron::Solver::DynamicLinearityTypes - !> \brief The time linearity types for a dynamic solver. - !> \see OpenCMISS::Iron::Solver::Constants,OpenCMISS - !>@{ - INTEGER(INTG), PARAMETER :: CMFE_SOLVER_DYNAMIC_LINEAR = SOLVER_DYNAMIC_LINEAR !@} - !> \addtogroup OpenCMISS_DynamicDegreeTypes OpenCMISS::Iron::Solver::DynamicDegreeTypes - !> \brief The time interpolation polynomial degree types for a dynamic solver. - !> \see OpenCMISS::Iron::Solver::Constants,OpenCMISS - !>@{ - INTEGER(INTG), PARAMETER :: CMFE_SOLVER_DYNAMIC_FIRST_DEGREE = SOLVER_DYNAMIC_FIRST_DEGREE !@} - !> \addtogroup OpenCMISS_DynamicSchemeTypes OpenCMISS::Iron::Solver::DynamicSchemeTypes - !> \brief The types of dynamic solver scheme. - !> \see OpenCMISS::Iron::Solver::Constants,OpenCMISS - !>@{ - INTEGER(INTG), PARAMETER :: CMFE_SOLVER_DYNAMIC_EULER_SCHEME = SOLVER_DYNAMIC_EULER_SCHEME !@} - !> \addtogroup OpenCMISS_DAETypes OpenCMISS::Iron::Solver::DAETypes - !> \brief The type of differential-algebraic equation. - !> \see OpenCMISS::Iron::Solver::Constants,OpenCMISS - !>@{ - INTEGER(INTG), PARAMETER :: CMFE_SOLVER_DAE_DIFFERENTIAL_ONLY = SOLVER_DAE_DIFFERENTIAL_ONLY !@} - !> \addtogroup OpenCMISS_DAESolverTypes OpenCMISS::Iron::Solver::DAESolverTypes - !> \brief The differential-algebraic equation solver types for a differential-algebraic equation solver. - !> \see OpenCMISS::Iron::Solver::Constants,OpenCMISS - !>@{ - INTEGER(INTG), PARAMETER :: CMFE_SOLVER_DAE_EULER = SOLVER_DAE_EULER !@} - !> \addtogroup OpenCMISS_EulerDAESolverTypes OpenCMISS::Iron::Solver::EulerDAESolverTypes - !> \brief The Euler solver types for a differential-algebriac equation solver. - !> \see OpenCMISS::Iron::Solver::Constants,OpenCMISS - !>@{ - INTEGER(INTG), PARAMETER :: CMFE_SOLVER_DAE_EULER_FORWARD = SOLVER_DAE_EULER_FORWARD !@} - !> \addtogroup OpenCMISS_SolutionInitialiseTypes OpenCMISS::Iron::Solver::SolutionInitialiseTypes - !> \brief The types of solution initialisation. - !> \see OpenCMISS::Iron::Solver::Constants,OpenCMISS - !>@{ - INTEGER(INTG), PARAMETER :: CMFE_SOLVER_SOLUTION_INITIALISE_ZERO = SOLVER_SOLUTION_INITIALISE_ZERO !@} - !> \addtogroup OpenCMISS_SolverOutputTypes OpenCMISS::Iron::Solver::OutputTypes - !> \brief The types of output. - !> \see OpenCMISS::Iron::Solver::Constants,OpenCMISS - !>@{ - INTEGER(INTG), PARAMETER :: CMFE_SOLVER_NO_OUTPUT = SOLVER_NO_OUTPUT !@} - !> \addtogroup OpenCMISS_SolverEquationsSparsityTypes OpenCMISS::Iron::SolverEquations::SparsityTypes - !> \brief The types of sparse solver equations matrices. - !> \see OpenCMISS::Iron::Solver::Constants,OpenCMISS - !>@{ - INTEGER(INTG), PARAMETER :: CMFE_SOLVER_SPARSE_MATRICES = SOLVER_SPARSE_MATRICES !@} - !> \addtogroup OpenCMISS_SolverEquationsSymmetryTypes OpenCMISS::Iron::SolverEquations::SymmetryTypes - !> \brief The types of symmetry for the solver equations matrices. - !> \see OpenCMISS::Iron::Solver::Constants,OpenCMISS - !>@{ - INTEGER(INTG), PARAMETER :: CMFE_SOLVER_SYMMETRIC_MATRICES = SOLVER_SYMMETRIC_MATRICES !@} - !>@} - - !Module types - - !Module variables - - !Interfaces - - !>Returns the CellML equations for a solver. - INTERFACE cmfe_Solver_CellMLEquationsGet - MODULE PROCEDURE cmfe_Solver_CellMLEquationsGetNumber0 - MODULE PROCEDURE cmfe_Solver_CellMLEquationsGetNumber1 - MODULE PROCEDURE cmfe_Solver_CellMLEquationsGetObj - END INTERFACE cmfe_Solver_CellMLEquationsGet - - !>Adds CellML environments to CellML equations. - INTERFACE cmfe_CellMLEquations_CellMLAdd - MODULE PROCEDURE cmfe_CellMLEquations_CellMLAddNumber0 - MODULE PROCEDURE cmfe_CellMLEquations_CellMLAddNumber1 - MODULE PROCEDURE cmfe_CellMLEquations_CellMLAddObj - END INTERFACE cmfe_CellMLEquations_CellMLAdd - - !>Returns the linearity type of CellML equations. - INTERFACE cmfe_CellMLEquations_LinearityTypeGet - MODULE PROCEDURE cmfe_CellMLEquations_LinearityTypeGetNumber - MODULE PROCEDURE cmfe_CellMLEquations_LinearityTypeGetObj - END INTERFACE cmfe_CellMLEquations_LinearityTypeGet - - !>Sets/changes the linearity type of CellML equations. - INTERFACE cmfe_CellMLEquations_LinearityTypeSet - MODULE PROCEDURE cmfe_CellMLEquations_LinearityTypeSetNumber - MODULE PROCEDURE cmfe_CellMLEquations_LinearityTypeSetObj - END INTERFACE cmfe_CellMLEquations_LinearityTypeSet - - !>Returns the time dependence type of CellML equations. - INTERFACE cmfe_CellMLEquations_TimeDependenceTypeGet - MODULE PROCEDURE cmfe_CellMLEquations_TimeDependenceTypeGetNumber - MODULE PROCEDURE cmfe_CellMLEquations_TimeDependenceTypeGetObj - END INTERFACE cmfe_CellMLEquations_TimeDependenceTypeGet - - !>Sets/changes the time dependence type of CellML equations. - INTERFACE cmfe_CellMLEquations_TimeDependenceTypeSet - MODULE PROCEDURE cmfe_CellMLEquations_TimeDependenceTypeSetNumber - MODULE PROCEDURE cmfe_CellMLEquations_TimeDependenceTypeSetObj - END INTERFACE cmfe_CellMLEquations_TimeDependenceTypeSet - - !>Returns the solver type for an Euler differential-algebraic equation solver. \todo should this be CMISSSolver_DAEEulerSolverTypeGet??? - INTERFACE cmfe_Solver_DAEEulerSolverTypeGet - MODULE PROCEDURE cmfe_Solver_DAEEulerSolverTypeGetNumber0 - MODULE PROCEDURE cmfe_Solver_DAEEulerSolverTypeGetNumber1 - MODULE PROCEDURE cmfe_Solver_DAEEulerSolverTypeGetObj - END INTERFACE cmfe_Solver_DAEEulerSolverTypeGet - - !>Sets/changes the solver type for an Euler differential-algebraic equation solver. \todo should this be CMISSSolver_DAEEulerSolverTypeSet??? - INTERFACE cmfe_Solver_DAEEulerSolverTypeSet - MODULE PROCEDURE cmfe_Solver_DAEEulerSolverTypeSetNumber0 - MODULE PROCEDURE cmfe_Solver_DAEEulerSolverTypeSetNumber1 - MODULE PROCEDURE cmfe_Solver_DAEEulerSolverTypeSetObj - END INTERFACE cmfe_Solver_DAEEulerSolverTypeSet - - !>Returns the solver type for an differential-algebraic equation solver. - INTERFACE cmfe_Solver_DAESolverTypeGet - MODULE PROCEDURE cmfe_Solver_DAESolverTypeGetNumber0 - MODULE PROCEDURE cmfe_Solver_DAESolverTypeGetNumber1 - MODULE PROCEDURE cmfe_Solver_DAESolverTypeGetObj - END INTERFACE cmfe_Solver_DAESolverTypeGet - - !>Sets/changes the solver type for an differential-algebraic equation solver. - INTERFACE cmfe_Solver_DAESolverTypeSet - MODULE PROCEDURE cmfe_Solver_DAESolverTypeSetNumber0 - MODULE PROCEDURE cmfe_Solver_DAESolverTypeSetNumber1 - MODULE PROCEDURE cmfe_Solver_DAESolverTypeSetObj - END INTERFACE cmfe_Solver_DAESolverTypeSet - - !>Sets/changes the times for a differential-algebraic equation solver. - INTERFACE cmfe_Solver_DAETimesSet - MODULE PROCEDURE cmfe_Solver_DAETimesSetNumber0 - MODULE PROCEDURE cmfe_Solver_DAETimesSetNumber1 - MODULE PROCEDURE cmfe_Solver_DAETimesSetObj - END INTERFACE cmfe_Solver_DAETimesSet - - !>Sets/changes the (initial) time step for a differential-algebraic equation solver. - INTERFACE cmfe_Solver_DAETimeStepSet - MODULE PROCEDURE cmfe_Solver_DAETimeStepSetNumber0 - MODULE PROCEDURE cmfe_Solver_DAETimeStepSetNumber1 - MODULE PROCEDURE cmfe_Solver_DAETimeStepSetObj - END INTERFACE cmfe_Solver_DAETimeStepSet - - !>Returns the degree of the polynomial used to interpolate time for a dynamic solver. - INTERFACE cmfe_Solver_DynamicDegreeGet - MODULE PROCEDURE cmfe_Solver_DynamicDegreeGetNumber0 - MODULE PROCEDURE cmfe_Solver_DynamicDegreeGetNumber1 - MODULE PROCEDURE cmfe_Solver_DynamicDegreeGetObj - END INTERFACE cmfe_Solver_DynamicDegreeGet - - !>Sets/changes the degree of the polynomial used to interpolate time for a dynamic solver. - INTERFACE cmfe_Solver_DynamicDegreeSet - MODULE PROCEDURE cmfe_Solver_DynamicDegreeSetNumber0 - MODULE PROCEDURE cmfe_Solver_DynamicDegreeSetNumber1 - MODULE PROCEDURE cmfe_Solver_DynamicDegreeSetObj - END INTERFACE cmfe_Solver_DynamicDegreeSet - - !>Returns the linearity type for the dynamic solver. - INTERFACE cmfe_Solver_DynamicLinearityTypeGet - MODULE PROCEDURE cmfe_Solver_DynamicLinearityTypeGetNumber0 - MODULE PROCEDURE cmfe_Solver_DynamicLinearityTypeGetNumber1 - MODULE PROCEDURE cmfe_Solver_DynamicLinearityTypeGetObj - END INTERFACE cmfe_Solver_DynamicLinearityTypeGet - - !>Returns the linear solver associated with a linear dynamic solver. - INTERFACE cmfe_Solver_DynamicLinearSolverGet - MODULE PROCEDURE cmfe_Solver_DynamicLinearSolverGetNumber0 - MODULE PROCEDURE cmfe_Solver_DynamicLinearSolverGetNumber1 - MODULE PROCEDURE cmfe_Solver_DynamicLinearSolverGetObj - END INTERFACE cmfe_Solver_DynamicLinearSolverGet - - !>Returns the nonlinear solver associated with a nonlinear dynamic solver. - INTERFACE cmfe_Solver_DynamicNonlinearSolverGet - MODULE PROCEDURE cmfe_Solver_DynamicNonlinearSolverGetNumber0 - MODULE PROCEDURE cmfe_Solver_DynamicNonlinearSolverGetNumber1 - MODULE PROCEDURE cmfe_Solver_DynamicNonlinearSolverGetObj - END INTERFACE cmfe_Solver_DynamicNonlinearSolverGet - - !>Sets/changes the scheme for a dynamic solver. - INTERFACE cmfe_Solver_DynamicSchemeSet - MODULE PROCEDURE cmfe_Solver_DynamicSchemeSetNumber0 - MODULE PROCEDURE cmfe_Solver_DynamicSchemeSetNumber1 - MODULE PROCEDURE cmfe_Solver_DynamicSchemeSetObj - END INTERFACE cmfe_Solver_DynamicSchemeSet - - !>Sets/changes the theta scheme values for a dynamic solver. - INTERFACE cmfe_Solver_DynamicThetaSet - MODULE PROCEDURE cmfe_Solver_DynamicThetaSetNumber00 - MODULE PROCEDURE cmfe_Solver_DynamicThetaSetNumber01 - MODULE PROCEDURE cmfe_Solver_DynamicThetaSetNumber10 - MODULE PROCEDURE cmfe_Solver_DynamicThetaSetNumber11 - MODULE PROCEDURE cmfe_Solver_DynamicThetaSetObj0 - MODULE PROCEDURE cmfe_Solver_DynamicThetaSetObj1 - END INTERFACE cmfe_Solver_DynamicThetaSet - - !>Sets/changes the dynamic times for a dynamic solver. - INTERFACE cmfe_Solver_DynamicTimesSet - MODULE PROCEDURE cmfe_Solver_DynamicTimesSetNumber0 - MODULE PROCEDURE cmfe_Solver_DynamicTimesSetNumber1 - MODULE PROCEDURE cmfe_Solver_DynamicTimesSetObj - END INTERFACE cmfe_Solver_DynamicTimesSet - - !Sets the arbitrary path logical for the transformation - INTERFACE cmfe_Solver_GeometricTransformationArbitraryPathSet - MODULE PROCEDURE cmfe_Solver_GeometricTransformationArbitraryPathSetNumber - MODULE PROCEDURE cmfe_Solver_GeometricTransformationArbitraryPathSetObj - END INTERFACE cmfe_Solver_GeometricTransformationArbitraryPathSet - - !Clear transformation for a geometric transformation solver - INTERFACE cmfe_Solver_GeometricTransformationClear - MODULE PROCEDURE cmfe_Solver_GeometricTransformationClearNumber - MODULE PROCEDURE cmfe_Solver_GeometricTransformationClearObj - END INTERFACE cmfe_Solver_GeometricTransformationClear - - !Sets the field to transform - INTERFACE cmfe_Solver_GeometricTransformationFieldSet - MODULE PROCEDURE cmfe_Solver_GeometricTransformationFieldSetNumber - MODULE PROCEDURE cmfe_Solver_GeometricTransformationFieldSetObj - END INTERFACE cmfe_Solver_GeometricTransformationFieldSet - - !Sets the full transformation matrix for a geometric transformation - INTERFACE cmfe_Solver_GeometricTransformationMatrixSet - MODULE PROCEDURE cmfe_Solver_GeometricTransformationMatrixSetNumber0 - MODULE PROCEDURE cmfe_Solver_GeometricTransformationMatrixSetObj0 - MODULE PROCEDURE cmfe_Solver_GeometricTransformationMatrixSetNumber1 - MODULE PROCEDURE cmfe_Solver_GeometricTransformationMatrixSetObj1 - END INTERFACE cmfe_Solver_GeometricTransformationMatrixSet - - !Sets number of load increments for the transformation - INTERFACE cmfe_Solver_GeometricTransformationNumberOfLoadIncrementsSet - MODULE PROCEDURE cmfe_Solver_GeometricTransformationNoLoadIncrementsSetNumber - MODULE PROCEDURE cmfe_Solver_GeometricTransformationNoLoadIncrementsSetObj - END INTERFACE cmfe_Solver_GeometricTransformationNumberOfLoadIncrementsSet - - !Sets the rotation for a geometric transformation - INTERFACE cmfe_Solver_GeometricTransformationRotationSet - MODULE PROCEDURE cmfe_Solver_GeometricTransformationRotationSetNumber0 - MODULE PROCEDURE cmfe_Solver_GeometricTransformationRotationSetObj0 - MODULE PROCEDURE cmfe_Solver_GeometricTransformationRotationSetNumber1 - MODULE PROCEDURE cmfe_Solver_GeometricTransformationRotationSetObj1 - END INTERFACE cmfe_Solver_GeometricTransformationRotationSet - - !Sets the scalings for a uni-directional geometric transformation - INTERFACE cmfe_Solver_GeometricTransformationScalingsSet - MODULE PROCEDURE cmfe_Solver_GeometricTransformationScalingsSetNumber - MODULE PROCEDURE cmfe_Solver_GeometricTransformationScalingsSetObj - END INTERFACE cmfe_Solver_GeometricTransformationScalingsSet - - !Sets the translation for a geometric transformation - INTERFACE cmfe_Solver_GeometricTransformationTranslationSet - MODULE PROCEDURE cmfe_Solver_GeometricTransformationTranslationSetNumber0 - MODULE PROCEDURE cmfe_Solver_GeometricTransformationTranslationSetObj0 - MODULE PROCEDURE cmfe_Solver_GeometricTransformationTranslationSetNumber1 - MODULE PROCEDURE cmfe_Solver_GeometricTransformationTranslationSetObj1 - END INTERFACE cmfe_Solver_GeometricTransformationTranslationSet - - !>Returns the label of a solver. - INTERFACE cmfe_Solver_LabelGet - MODULE PROCEDURE cmfe_Solver_LabelGetCNumber0 - MODULE PROCEDURE cmfe_Solver_LabelGetCNumber1 - MODULE PROCEDURE cmfe_Solver_LabelGetCObj - MODULE PROCEDURE cmfe_Solver_LabelGetVSNumber0 - MODULE PROCEDURE cmfe_Solver_LabelGetVSNumber1 - MODULE PROCEDURE cmfe_Solver_LabelGetVSObj - END INTERFACE cmfe_Solver_LabelGet - - !>Sets/changes the label of a control loop. - INTERFACE cmfe_Solver_LabelSet - MODULE PROCEDURE cmfe_Solver_LabelSetCNumber0 - MODULE PROCEDURE cmfe_Solver_LabelSetCNumber1 - MODULE PROCEDURE cmfe_Solver_LabelSetCObj - MODULE PROCEDURE cmfe_Solver_LabelSetVSNumber0 - MODULE PROCEDURE cmfe_Solver_LabelSetVSNumber1 - MODULE PROCEDURE cmfe_Solver_LabelSetVSObj - END INTERFACE cmfe_Solver_LabelSet - - !>Returns the type of library to use for the solver. - INTERFACE cmfe_Solver_LibraryTypeGet - MODULE PROCEDURE cmfe_Solver_LibraryTypeGetNumber0 - MODULE PROCEDURE cmfe_Solver_LibraryTypeGetNumber1 - MODULE PROCEDURE cmfe_Solver_LibraryTypeGetObj - END INTERFACE cmfe_Solver_LibraryTypeGet - - !>Sets/changes the type of library to use for the solver. - INTERFACE cmfe_Solver_LibraryTypeSet - MODULE PROCEDURE cmfe_Solver_LibraryTypeSetNumber0 - MODULE PROCEDURE cmfe_Solver_LibraryTypeSetNumber1 - MODULE PROCEDURE cmfe_Solver_LibraryTypeSetObj - END INTERFACE cmfe_Solver_LibraryTypeSet - - !>Sets/changes the type of direct linear solver. - INTERFACE cmfe_Solver_LinearDirectTypeSet - MODULE PROCEDURE cmfe_Solver_LinearDirectTypeSetNumber0 - MODULE PROCEDURE cmfe_Solver_LinearDirectTypeSetNumber1 - MODULE PROCEDURE cmfe_Solver_LinearDirectTypeSetObj - END INTERFACE cmfe_Solver_LinearDirectTypeSet - - !>Sets/changes the absolute tolerance for an iterative linear solver. - INTERFACE cmfe_Solver_LinearIterativeAbsoluteToleranceSet - MODULE PROCEDURE cmfe_Solver_LinearIterativeAbsoluteToleranceSetNumber0 - MODULE PROCEDURE cmfe_Solver_LinearIterativeAbsoluteToleranceSetNumber1 - MODULE PROCEDURE cmfe_Solver_LinearIterativeAbsoluteToleranceSetObj - END INTERFACE cmfe_Solver_LinearIterativeAbsoluteToleranceSet - - !>Sets/changes the divergence tolerance for an iterative linear solver. - INTERFACE cmfe_Solver_LinearIterativeDivergenceToleranceSet - MODULE PROCEDURE cmfe_Solver_LinearIterativeDivergenceToleranceSetNumber0 - MODULE PROCEDURE cmfe_Solver_LinearIterativeDivergenceToleranceSetNumber1 - MODULE PROCEDURE cmfe_Solver_LinearIterativeDivergenceToleranceSetObj - END INTERFACE cmfe_Solver_LinearIterativeDivergenceToleranceSet - - !>Sets/changes the GMRES restart value for a GMRES iterative linear solver. - INTERFACE cmfe_Solver_LinearIterativeGMRESRestartSet - MODULE PROCEDURE cmfe_Solver_LinearIterativeGMRESRestartSetNumber0 - MODULE PROCEDURE cmfe_Solver_LinearIterativeGMRESRestartSetNumber1 - MODULE PROCEDURE cmfe_Solver_LinearIterativeGMRESRestartSetObj - END INTERFACE cmfe_Solver_LinearIterativeGMRESRestartSet - - !>Sets/changes the maximum number of iterations for an iterative linear solver. - INTERFACE cmfe_Solver_LinearIterativeMaximumIterationsSet - MODULE PROCEDURE cmfe_Solver_LinearIterativeMaximumIterationsSetNumber0 - MODULE PROCEDURE cmfe_Solver_LinearIterativeMaximumIterationsSetNumber1 - MODULE PROCEDURE cmfe_Solver_LinearIterativeMaximumIterationsSetObj - END INTERFACE cmfe_Solver_LinearIterativeMaximumIterationsSet - - !>Sets/changes the type of preconditioner for an iterative linear solver. - INTERFACE cmfe_Solver_LinearIterativePreconditionerTypeSet - MODULE PROCEDURE cmfe_Solver_LinearIterativePreconditionerTypeSetNumber0 - MODULE PROCEDURE cmfe_Solver_LinearIterativePreconditionerTypeSetNumber1 - MODULE PROCEDURE cmfe_Solver_LinearIterativePreconditionerTypeSetObj - END INTERFACE cmfe_Solver_LinearIterativePreconditionerTypeSet - - !>Sets/changes the relative tolerance for an iterative linear solver. - INTERFACE cmfe_Solver_LinearIterativeRelativeToleranceSet - MODULE PROCEDURE cmfe_Solver_LinearIterativeRelativeToleranceSetNumber0 - MODULE PROCEDURE cmfe_Solver_LinearIterativeRelativeToleranceSetNumber1 - MODULE PROCEDURE cmfe_Solver_LinearIterativeRelativeToleranceSetObj - END INTERFACE cmfe_Solver_LinearIterativeRelativeToleranceSet - - !>Sets/changes the type of iterative linear solver. - INTERFACE cmfe_Solver_LinearIterativeTypeSet - MODULE PROCEDURE cmfe_Solver_LinearIterativeTypeSetNumber0 - MODULE PROCEDURE cmfe_Solver_LinearIterativeTypeSetNumber1 - MODULE PROCEDURE cmfe_Solver_LinearIterativeTypeSetObj - END INTERFACE cmfe_Solver_LinearIterativeTypeSet - - !>Sets/changes the type of linear solver. - INTERFACE cmfe_Solver_LinearTypeSet - MODULE PROCEDURE cmfe_Solver_LinearTypeSetNumber0 - MODULE PROCEDURE cmfe_Solver_LinearTypeSetNumber1 - MODULE PROCEDURE cmfe_Solver_LinearTypeSetObj - END INTERFACE cmfe_Solver_LinearTypeSet - - !>Sets/changes the absolute tolerance for a nonlinear Quasi-Newton solver. - INTERFACE cmfe_Solver_QuasiNewtonAbsoluteToleranceSet - MODULE PROCEDURE cmfe_Solver_QuasiNewtonAbsoluteToleranceSetNumber0 - MODULE PROCEDURE cmfe_Solver_QuasiNewtonAbsoluteToleranceSetNumber1 - MODULE PROCEDURE cmfe_Solver_QuasiNewtonAbsoluteToleranceSetObj - END INTERFACE cmfe_Solver_QuasiNewtonAbsoluteToleranceSet - - !>Enables/disables output monitoring for a nonlinear Quasi-Newton line search solver. - INTERFACE cmfe_Solver_QuasiNewtonLineSearchMonitorOutputSet - MODULE PROCEDURE cmfe_Solver_QuasiNewtonLineSearchMonitorOutputSetNumber0 - MODULE PROCEDURE cmfe_Solver_QuasiNewtonLineSearchMonitorOutputSetNumber1 - MODULE PROCEDURE cmfe_Solver_QuasiNewtonLineSearchMonitorOutputSetObj - END INTERFACE cmfe_Solver_QuasiNewtonLineSearchMonitorOutputSet - - !>Sets/changes the Jacobian calculation type for a nonlinear Quasi-Newton solver. - INTERFACE cmfe_Solver_QuasiNewtonJacobianCalculationTypeSet - MODULE PROCEDURE cmfe_Solver_QuasiNewtonJacobianCalculationTypeSetNumber0 - MODULE PROCEDURE cmfe_Solver_QuasiNewtonJacobianCalculationTypeSetNumber1 - MODULE PROCEDURE cmfe_Solver_QuasiNewtonJacobianCalculationTypeSetObj - END INTERFACE cmfe_Solver_QuasiNewtonJacobianCalculationTypeSet - - !>Returns the linear solver associated with a nonlinear Quasi-Newton solver. - INTERFACE cmfe_Solver_QuasiNewtonLinearSolverGet - MODULE PROCEDURE cmfe_Solver_QuasiNewtonLinearSolverGetNumber0 - MODULE PROCEDURE cmfe_Solver_QuasiNewtonLinearSolverGetNumber1 - MODULE PROCEDURE cmfe_Solver_QuasiNewtonLinearSolverGetObj - END INTERFACE cmfe_Solver_QuasiNewtonLinearSolverGet - - !>Returns the linear solver associated with a nonlinear Quasi-Newton solver. - INTERFACE cmfe_Solver_QuasiNewtonCellMLSolverGet - MODULE PROCEDURE cmfe_Solver_QuasiNewtonCellMLSolverGetNumber0 - MODULE PROCEDURE cmfe_Solver_QuasiNewtonCellMLSolverGetNumber1 - MODULE PROCEDURE cmfe_Solver_QuasiNewtonCellMLSolverGetObj - END INTERFACE cmfe_Solver_QuasiNewtonCellMLSolverGet - - !>Sets/change the convergence test for a nonlinear Quasi-Newton solver. - INTERFACE cmfe_Solver_QuasiNewtonConvergenceTestTypeSet - MODULE PROCEDURE cmfe_Solver_QuasiNewtonConvergenceTestTypeSetNumber0 - MODULE PROCEDURE cmfe_Solver_QuasiNewtonConvergenceTestTypeSetNumber1 - MODULE PROCEDURE cmfe_Solver_QuasiNewtonConvergenceTestTypeSetObj - END INTERFACE cmfe_Solver_QuasiNewtonConvergenceTestTypeSet - - !>Sets/changes the line search maximum step for a nonlinear Quasi-Newton solver. - INTERFACE cmfe_Solver_QuasiNewtonLineSearchMaxStepSet - MODULE PROCEDURE cmfe_Solver_QuasiNewtonLineSearchMaxStepSetNumber0 - MODULE PROCEDURE cmfe_Solver_QuasiNewtonLineSearchMaxStepSetNumber1 - MODULE PROCEDURE cmfe_Solver_QuasiNewtonLineSearchMaxStepSetObj - END INTERFACE cmfe_Solver_QuasiNewtonLineSearchMaxStepSet - - !>Sets/changes the line search step tolerance for a nonlinear Quasi-Newton solver. - INTERFACE cmfe_Solver_QuasiNewtonLineSearchStepTolSet - MODULE PROCEDURE cmfe_Solver_QuasiNewtonLineSearchStepTolSetNumber0 - MODULE PROCEDURE cmfe_Solver_QuasiNewtonLineSearchStepTolSetNumber1 - MODULE PROCEDURE cmfe_Solver_QuasiNewtonLineSearchStepTolSetObj - END INTERFACE cmfe_Solver_QuasiNewtonLineSearchStepTolSet - - !>Sets/changes the type of line search for a nonlinear Quasi-Newton solver. - INTERFACE cmfe_Solver_QuasiNewtonLineSearchTypeSet - MODULE PROCEDURE cmfe_Solver_QuasiNewtonLineSearchTypeSetNumber0 - MODULE PROCEDURE cmfe_Solver_QuasiNewtonLineSearchTypeSetNumber1 - MODULE PROCEDURE cmfe_Solver_QuasiNewtonLineSearchTypeSetObj - END INTERFACE cmfe_Solver_QuasiNewtonLineSearchTypeSet - - !>Sets/changes the maximum number of function evaluations for a nonlinear Quasi-Newton solver. - INTERFACE cmfe_Solver_QuasiNewtonMaximumFunctionEvaluationsSet - MODULE PROCEDURE cmfe_Solver_QuasiNewtonMaximumFunctionEvaluationsSetNumber0 - MODULE PROCEDURE cmfe_Solver_QuasiNewtonMaximumFunctionEvaluationsSetNumber1 - MODULE PROCEDURE cmfe_Solver_QuasiNewtonMaximumFunctionEvaluationsSetObj - END INTERFACE cmfe_Solver_QuasiNewtonMaximumFunctionEvaluationsSet - - !>Sets/changes the maximum number of iterations for a nonlinear Quasi-Newton solver. - INTERFACE cmfe_Solver_QuasiNewtonMaximumIterationsSet - MODULE PROCEDURE cmfe_Solver_QuasiNewtonMaximumIterationsSetNumber0 - MODULE PROCEDURE cmfe_Solver_QuasiNewtonMaximumIterationsSetNumber1 - MODULE PROCEDURE cmfe_Solver_QuasiNewtonMaximumIterationsSetObj - END INTERFACE cmfe_Solver_QuasiNewtonMaximumIterationsSet - - !>Sets/changes the relative tolerance for a nonlinear Quasi-Newton solver. - INTERFACE cmfe_Solver_QuasiNewtonRelativeToleranceSet - MODULE PROCEDURE cmfe_Solver_QuasiNewtonRelativeToleranceSetNumber0 - MODULE PROCEDURE cmfe_Solver_QuasiNewtonRelativeToleranceSetNumber1 - MODULE PROCEDURE cmfe_Solver_QuasiNewtonRelativeToleranceSetObj - END INTERFACE cmfe_Solver_QuasiNewtonRelativeToleranceSet - - !>Sets/changes the solution tolerance for a nonlinear Quasi-Newton solver. - INTERFACE cmfe_Solver_QuasiNewtonSolutionToleranceSet - MODULE PROCEDURE cmfe_Solver_QuasiNewtonSolutionToleranceSetNumber0 - MODULE PROCEDURE cmfe_Solver_QuasiNewtonSolutionToleranceSetNumber1 - MODULE PROCEDURE cmfe_Solver_QuasiNewtonSolutionToleranceSetObj - END INTERFACE cmfe_Solver_QuasiNewtonSolutionToleranceSet - - !>Sets/changes the trust region delta0 tolerance for a nonlinear Quasi-Newton trust region solver. - INTERFACE cmfe_Solver_QuasiNewtonTrustRegionDelta0Set - MODULE PROCEDURE cmfe_Solver_QuasiNewtonTrustRegionDelta0SetNumber0 - MODULE PROCEDURE cmfe_Solver_QuasiNewtonTrustRegionDelta0SetNumber1 - MODULE PROCEDURE cmfe_Solver_QuasiNewtonTrustRegionDelta0SetObj - END INTERFACE cmfe_Solver_QuasiNewtonTrustRegionDelta0Set - - !>Sets/changes the trust region tolerance for a nonlinear Quasi-Newton trust region solver. - INTERFACE cmfe_Solver_QuasiNewtonTrustRegionToleranceSet - MODULE PROCEDURE cmfe_Solver_QuasiNewtonTrustRegionToleranceSetNumber0 - MODULE PROCEDURE cmfe_Solver_QuasiNewtonTrustRegionToleranceSetNumber1 - MODULE PROCEDURE cmfe_Solver_QuasiNewtonTrustRegionToleranceSetObj - END INTERFACE cmfe_Solver_QuasiNewtonTrustRegionToleranceSet - - !>Sets/changes the nonlinear Quasi-Newton restart. - INTERFACE cmfe_Solver_QuasiNewtonRestartSet - MODULE PROCEDURE cmfe_Solver_QuasiNewtonRestartSetNumber0 - MODULE PROCEDURE cmfe_Solver_QuasiNewtonRestartSetNumber1 - MODULE PROCEDURE cmfe_Solver_QuasiNewtonRestartSetObj - END INTERFACE cmfe_Solver_QuasiNewtonRestartSet - - !>Sets/changes the nonlinear Quasi-Newton restart type. - INTERFACE cmfe_Solver_QuasiNewtonRestartTypeSet - MODULE PROCEDURE cmfe_Solver_QuasiNewtonRestartTypeSetNumber0 - MODULE PROCEDURE cmfe_Solver_QuasiNewtonRestartTypeSetNumber1 - MODULE PROCEDURE cmfe_Solver_QuasiNewtonRestartTypeSetObj - END INTERFACE cmfe_Solver_QuasiNewtonRestartTypeSet - - !>Sets/changes the nonlinear Quasi-Newton scale type. - INTERFACE cmfe_Solver_QuasiNewtonScaleTypeSet - MODULE PROCEDURE cmfe_Solver_QuasiNewtonScaleTypeSetNumber0 - MODULE PROCEDURE cmfe_Solver_QuasiNewtonScaleTypeSetNumber1 - MODULE PROCEDURE cmfe_Solver_QuasiNewtonScaleTypeSetObj - END INTERFACE cmfe_Solver_QuasiNewtonScaleTypeSet - - !>Sets/changes the type of nonlinear Quasi-Newton solver. - INTERFACE cmfe_Solver_QuasiNewtonSolveTypeSet - MODULE PROCEDURE cmfe_Solver_QuasiNewtonSolveTypeSetNumber0 - MODULE PROCEDURE cmfe_Solver_QuasiNewtonSolveTypeSetNumber1 - MODULE PROCEDURE cmfe_Solver_QuasiNewtonSolveTypeSetObj - END INTERFACE cmfe_Solver_QuasiNewtonSolveTypeSet - - !>Sets/changes the nonlinear Quasi-Newton type. - INTERFACE cmfe_Solver_QuasiNewtonTypeSet - MODULE PROCEDURE cmfe_Solver_QuasiNewtonTypeSetNumber0 - MODULE PROCEDURE cmfe_Solver_QuasiNewtonTypeSetNumber1 - MODULE PROCEDURE cmfe_Solver_QuasiNewtonTypeSetObj - END INTERFACE cmfe_Solver_QuasiNewtonTypeSet - - !>Sets/changes the absolute tolerance for a nonlinear Newton solver. - INTERFACE cmfe_Solver_NewtonAbsoluteToleranceSet - MODULE PROCEDURE cmfe_Solver_NewtonAbsoluteToleranceSetNumber0 - MODULE PROCEDURE cmfe_Solver_NewtonAbsoluteToleranceSetNumber1 - MODULE PROCEDURE cmfe_Solver_NewtonAbsoluteToleranceSetObj - END INTERFACE cmfe_Solver_NewtonAbsoluteToleranceSet - - !>Enables/disables output monitoring for a nonlinear Newton line search solver. - INTERFACE cmfe_Solver_NewtonLineSearchMonitorOutputSet - MODULE PROCEDURE cmfe_Solver_NewtonLineSearchMonitorOutputSetNumber0 - MODULE PROCEDURE cmfe_Solver_NewtonLineSearchMonitorOutputSetNumber1 - MODULE PROCEDURE cmfe_Solver_NewtonLineSearchMonitorOutputSetObj - END INTERFACE cmfe_Solver_NewtonLineSearchMonitorOutputSet - - !>Sets/changes the Jacobian calculation type for a nonlinear Newton solver. - INTERFACE cmfe_Solver_NewtonJacobianCalculationTypeSet - MODULE PROCEDURE cmfe_Solver_NewtonJacobianCalculationTypeSetNumber0 - MODULE PROCEDURE cmfe_Solver_NewtonJacobianCalculationTypeSetNumber1 - MODULE PROCEDURE cmfe_Solver_NewtonJacobianCalculationTypeSetObj - END INTERFACE cmfe_Solver_NewtonJacobianCalculationTypeSet - - !>Returns the linear solver associated with a nonlinear Newton solver. - INTERFACE cmfe_Solver_NewtonLinearSolverGet - MODULE PROCEDURE cmfe_Solver_NewtonLinearSolverGetNumber0 - MODULE PROCEDURE cmfe_Solver_NewtonLinearSolverGetNumber1 - MODULE PROCEDURE cmfe_Solver_NewtonLinearSolverGetObj - END INTERFACE cmfe_Solver_NewtonLinearSolverGet - - !>Returns the linear solver associated with a nonlinear Newton solver. - INTERFACE cmfe_Solver_NewtonCellMLSolverGet - MODULE PROCEDURE cmfe_Solver_NewtonCellMLSolverGetNumber0 - MODULE PROCEDURE cmfe_Solver_NewtonCellMLSolverGetNumber1 - MODULE PROCEDURE cmfe_Solver_NewtonCellMLSolverGetObj - END INTERFACE cmfe_Solver_NewtonCellMLSolverGet - - !>Sets/change the convergence test for a nonlinear Newton solver. - INTERFACE cmfe_Solver_NewtonConvergenceTestTypeSet - MODULE PROCEDURE cmfe_Solver_NewtonConvergenceTestTypeSetNumber0 - MODULE PROCEDURE cmfe_Solver_NewtonConvergenceTestTypeSetNumber1 - MODULE PROCEDURE cmfe_Solver_NewtonConvergenceTestTypeSetObj - END INTERFACE cmfe_Solver_NewtonConvergenceTestTypeSet - - !>Sets/changes the line search alpha for a nonlinear Newton solver. - INTERFACE cmfe_Solver_NewtonLineSearchAlphaSet - MODULE PROCEDURE cmfe_Solver_NewtonLineSearchAlphaSetNumber0 - MODULE PROCEDURE cmfe_Solver_NewtonLineSearchAlphaSetNumber1 - MODULE PROCEDURE cmfe_Solver_NewtonLineSearchAlphaSetObj - END INTERFACE cmfe_Solver_NewtonLineSearchAlphaSet - - !>Sets/changes the line search maximum step for a nonlinear Newton solver. - INTERFACE cmfe_Solver_NewtonLineSearchMaxStepSet - MODULE PROCEDURE cmfe_Solver_NewtonLineSearchMaxStepSetNumber0 - MODULE PROCEDURE cmfe_Solver_NewtonLineSearchMaxStepSetNumber1 - MODULE PROCEDURE cmfe_Solver_NewtonLineSearchMaxStepSetObj - END INTERFACE cmfe_Solver_NewtonLineSearchMaxStepSet - - !>Sets/changes the line search step tolerance for a nonlinear Newton solver. - INTERFACE cmfe_Solver_NewtonLineSearchStepTolSet - MODULE PROCEDURE cmfe_Solver_NewtonLineSearchStepTolSetNumber0 - MODULE PROCEDURE cmfe_Solver_NewtonLineSearchStepTolSetNumber1 - MODULE PROCEDURE cmfe_Solver_NewtonLineSearchStepTolSetObj - END INTERFACE cmfe_Solver_NewtonLineSearchStepTolSet - - !>Sets/changes the type of line search for a nonlinear Newton solver. - INTERFACE cmfe_Solver_NewtonLineSearchTypeSet - MODULE PROCEDURE cmfe_Solver_NewtonLineSearchTypeSetNumber0 - MODULE PROCEDURE cmfe_Solver_NewtonLineSearchTypeSetNumber1 - MODULE PROCEDURE cmfe_Solver_NewtonLineSearchTypeSetObj - END INTERFACE cmfe_Solver_NewtonLineSearchTypeSet - - !>Sets/changes the maximum number of function evaluations for a nonlinear Newton solver. - INTERFACE cmfe_Solver_NewtonMaximumFunctionEvaluationsSet - MODULE PROCEDURE cmfe_Solver_NewtonMaximumFunctionEvaluationsSetNumber0 - MODULE PROCEDURE cmfe_Solver_NewtonMaximumFunctionEvaluationsSetNumber1 - MODULE PROCEDURE cmfe_Solver_NewtonMaximumFunctionEvaluationsSetObj - END INTERFACE cmfe_Solver_NewtonMaximumFunctionEvaluationsSet - - !>Sets/changes the maximum number of iterations for a nonlinear Newton solver. - INTERFACE cmfe_Solver_NewtonMaximumIterationsSet - MODULE PROCEDURE cmfe_Solver_NewtonMaximumIterationsSetNumber0 - MODULE PROCEDURE cmfe_Solver_NewtonMaximumIterationsSetNumber1 - MODULE PROCEDURE cmfe_Solver_NewtonMaximumIterationsSetObj - END INTERFACE cmfe_Solver_NewtonMaximumIterationsSet - - !>Sets/changes the relative tolerance for a nonlinear Newton solver. - INTERFACE cmfe_Solver_NewtonRelativeToleranceSet - MODULE PROCEDURE cmfe_Solver_NewtonRelativeToleranceSetNumber0 - MODULE PROCEDURE cmfe_Solver_NewtonRelativeToleranceSetNumber1 - MODULE PROCEDURE cmfe_Solver_NewtonRelativeToleranceSetObj - END INTERFACE cmfe_Solver_NewtonRelativeToleranceSet - - !>Sets/changes the solution tolerance for a nonlinear Newton solver. - INTERFACE cmfe_Solver_NewtonSolutionToleranceSet - MODULE PROCEDURE cmfe_Solver_NewtonSolutionToleranceSetNumber0 - MODULE PROCEDURE cmfe_Solver_NewtonSolutionToleranceSetNumber1 - MODULE PROCEDURE cmfe_Solver_NewtonSolutionToleranceSetObj - END INTERFACE cmfe_Solver_NewtonSolutionToleranceSet - - !>Sets/changes the trust region delta0 tolerance for a nonlinear Newton trust region solver. - INTERFACE cmfe_Solver_NewtonTrustRegionDelta0Set - MODULE PROCEDURE cmfe_Solver_NewtonTrustRegionDelta0SetNumber0 - MODULE PROCEDURE cmfe_Solver_NewtonTrustRegionDelta0SetNumber1 - MODULE PROCEDURE cmfe_Solver_NewtonTrustRegionDelta0SetObj - END INTERFACE cmfe_Solver_NewtonTrustRegionDelta0Set - - !>Sets/changes the trust region tolerance for a nonlinear Newton trust region solver. - INTERFACE cmfe_Solver_NewtonTrustRegionToleranceSet - MODULE PROCEDURE cmfe_Solver_NewtonTrustRegionToleranceSetNumber0 - MODULE PROCEDURE cmfe_Solver_NewtonTrustRegionToleranceSetNumber1 - MODULE PROCEDURE cmfe_Solver_NewtonTrustRegionToleranceSetObj - END INTERFACE cmfe_Solver_NewtonTrustRegionToleranceSet - - !>Sets/changes the type of nonlinear Newton trust region solver. - INTERFACE cmfe_Solver_NewtonTypeSet - MODULE PROCEDURE cmfe_Solver_NewtonTypeSetNumber0 - MODULE PROCEDURE cmfe_Solver_NewtonTypeSetNumber1 - MODULE PROCEDURE cmfe_Solver_NewtonTypeSetObj - END INTERFACE cmfe_Solver_NewtonTypeSet - - !>Sets/changes the type of nonlinear solver. - INTERFACE cmfe_Solver_NonlinearTypeSet - MODULE PROCEDURE cmfe_Solver_NonlinearTypeSetNumber0 - MODULE PROCEDURE cmfe_Solver_NonlinearTypeSetNumber1 - MODULE PROCEDURE cmfe_Solver_NonlinearTypeSetObj - END INTERFACE cmfe_Solver_NonlinearTypeSet - - !>Sets/changes the output type for a solver. - INTERFACE cmfe_Solver_OutputTypeSet - MODULE PROCEDURE cmfe_Solver_OutputTypeSetNumber0 - MODULE PROCEDURE cmfe_Solver_OutputTypeSetNumber1 - MODULE PROCEDURE cmfe_Solver_OutputTypeSetObj - END INTERFACE cmfe_Solver_OutputTypeSet - - !>Returns the solver equations for a solver. - INTERFACE cmfe_Solver_SolverEquationsGet - MODULE PROCEDURE cmfe_Solver_SolverEquationsGetNumber0 - MODULE PROCEDURE cmfe_Solver_SolverEquationsGetNumber1 - MODULE PROCEDURE cmfe_Solver_SolverEquationsGetObj - END INTERFACE cmfe_Solver_SolverEquationsGet - - !>Adds equations sets to solver equations. - INTERFACE cmfe_SolverEquations_EquationsSetAdd - MODULE PROCEDURE cmfe_SolverEquations_EquationsSetAddNumber0 - MODULE PROCEDURE cmfe_SolverEquations_EquationsSetAddNumber1 - MODULE PROCEDURE cmfe_SolverEquations_EquationsSetAddObj - END INTERFACE cmfe_SolverEquations_EquationsSetAdd - - !>Adds an interface condition to solver equations. - INTERFACE cmfe_SolverEquations_InterfaceConditionAdd - MODULE PROCEDURE cmfe_SolverEquations_InterfaceConditionAddNumber0 - MODULE PROCEDURE cmfe_SolverEquations_InterfaceConditionAddNumber1 - MODULE PROCEDURE cmfe_SolverEquations_InterfaceConditionAddObj - END INTERFACE cmfe_SolverEquations_InterfaceConditionAdd - - !>Sets/changes the sparsity type for solver equations. - INTERFACE cmfe_SolverEquations_SparsityTypeSet - MODULE PROCEDURE cmfe_SolverEquations_SparsityTypeSetNumber0 - MODULE PROCEDURE cmfe_SolverEquations_SparsityTypeSetNumber1 - MODULE PROCEDURE cmfe_SolverEquations_SparsityTypeSetObj - END INTERFACE cmfe_SolverEquations_SparsityTypeSet - - !>Gets the symmetry type for solver equations. - INTERFACE cmfe_SolverEquations_SymmetryTypeGet - MODULE PROCEDURE cmfe_SolverEquations_SymmetryTypeGetNumber0 - MODULE PROCEDURE cmfe_SolverEquations_SymmetryTypeGetNumber1 - MODULE PROCEDURE cmfe_SolverEquations_SymmetryTypeGetObj - END INTERFACE cmfe_SolverEquations_SymmetryTypeGet - - !>Sets/changes the symmetry type for solver equations. - INTERFACE cmfe_SolverEquations_SymmetryTypeSet - MODULE PROCEDURE cmfe_SolverEquations_SymmetryTypeSetNumber0 - MODULE PROCEDURE cmfe_SolverEquations_SymmetryTypeSetNumber1 - MODULE PROCEDURE cmfe_SolverEquations_SymmetryTypeSetObj - END INTERFACE cmfe_SolverEquations_SymmetryTypeSet - - !>Finish the creation of boundary conditions for solver equations. \see OpenCMISS::Iron::cmfe_SolverEquations_BoundaryConditionsCreateStart - INTERFACE cmfe_SolverEquations_BoundaryConditionsCreateFinish - MODULE PROCEDURE cmfe_SolverEquations_BoundaryConditionsCreateFinishNumber0 - MODULE PROCEDURE cmfe_SolverEquations_BoundaryConditionsCreateFinishNumber1 - MODULE PROCEDURE cmfe_SolverEquations_BoundaryConditionsCreateFinishObj - END INTERFACE cmfe_SolverEquations_BoundaryConditionsCreateFinish - - !>Start the creation of boundary conditions for solver equations. \see OpenCMISS::Iron::cmfe_SolverEquations_BoundaryConditionsCreateFinish - INTERFACE cmfe_SolverEquations_BoundaryConditionsCreateStart - MODULE PROCEDURE cmfe_SolverEquations_BoundaryConditionsCreateStartNumber0 - MODULE PROCEDURE cmfe_SolverEquations_BoundaryConditionsCreateStartNumber1 - MODULE PROCEDURE cmfe_SolverEquations_BoundaryConditionsCreateStartObj - END INTERFACE cmfe_SolverEquations_BoundaryConditionsCreateStart - - !>Get the boundary conditions for solver equations. \see OpenCMISS::Iron::cmfe_SolverEquations_BoundaryConditionsCreateFinish - INTERFACE cmfe_SolverEquations_BoundaryConditionsGet - MODULE PROCEDURE cmfe_SolverEquations_BoundaryConditionsGetNumber0 - MODULE PROCEDURE cmfe_SolverEquations_BoundaryConditionsGetNumber1 - MODULE PROCEDURE cmfe_SolverEquations_BoundaryConditionsGetObj - END INTERFACE cmfe_SolverEquations_BoundaryConditionsGet - - PUBLIC CMFE_CELLML_EQUATIONS_LINEAR,CMFE_CELLML_EQUATIONS_NONLINEAR - - PUBLIC CMFE_CELLML_EQUATIONS_STATIC,CMFE_CELLML_EQUATIONS_QUASISTATIC,CMFE_CELLML_EQUATIONS_DYNAMIC - - PUBLIC CMFE_SOLVER_LINEAR_TYPE,CMFE_SOLVER_NONLINEAR_TYPE,CMFE_SOLVER_DYNAMIC_TYPE,CMFE_SOLVER_DAE_TYPE, & - & CMFE_SOLVER_EIGENPROBLEM_TYPE, & - & CMFE_SOLVER_OPTIMISER_TYPE - - PUBLIC CMFE_SOLVER_CMISS_LIBRARY,CMFE_SOLVER_PETSC_LIBRARY,CMFE_SOLVER_MUMPS_LIBRARY,CMFE_SOLVER_SUPERLU_LIBRARY, & - & CMFE_SOLVER_SPOOLES_LIBRARY,CMFE_SOLVER_UMFPACK_LIBRARY,CMFE_SOLVER_LUSOL_LIBRARY,CMFE_SOLVER_ESSL_LIBRARY, & - & CMFE_SOLVER_LAPACK_LIBRARY,CMFE_SOLVER_HYPRE_LIBRARY,CMFE_SOLVER_PASTIX_LIBRARY - - PUBLIC CMFE_SOLVER_LINEAR_DIRECT_SOLVE_TYPE,CMFE_SOLVER_LINEAR_ITERATIVE_SOLVE_TYPE - - PUBLIC CMFE_SOLVER_DIRECT_LU,CMFE_SOLVER_DIRECT_CHOLESKY,CMFE_SOLVER_DIRECT_SVD - - PUBLIC CMFE_SOLVER_ITERATIVE_RICHARDSON,CMFE_SOLVER_ITERATIVE_CONJUGATE_GRADIENT,CMFE_SOLVER_ITERATIVE_CHEBYSHEV, & - & CMFE_SOLVER_ITERATIVE_BICONJUGATE_GRADIENT,CMFE_SOLVER_ITERATIVE_GMRES,CMFE_SOLVER_ITERATIVE_BiCGSTAB, & - & CMFE_SOLVER_ITERATIVE_CONJGRAD_SQUARED - - PUBLIC CMFE_SOLVER_ITERATIVE_NO_PRECONDITIONER,CMFE_SOLVER_ITERATIVE_JACOBI_PRECONDITIONER, & - & CMFE_SOLVER_ITERATIVE_BLOCK_JACOBI_PRECONDITIONER,CMFE_SOLVER_ITERATIVE_SOR_PRECONDITIONER, & - & CMFE_SOLVER_ITERATIVE_INCOMPLETE_CHOLESKY_PRECONDITIONER,CMFE_SOLVER_ITERATIVE_INCOMPLETE_LU_PRECONDITIONER, & - & CMFE_SOLVER_ITERATIVE_ADDITIVE_SCHWARZ_PRECONDITIONER - - PUBLIC CMFE_SOLVER_NONLINEAR_NEWTON,CMFE_SOLVER_NONLINEAR_BFGS_INVERSE,CMFE_SOLVER_NONLINEAR_SQP - - PUBLIC CMFE_SOLVER_NONLINEAR_QUASI_NEWTON - - PUBLIC CMFE_SOLVER_QUASI_NEWTON_LINESEARCH,CMFE_SOLVER_QUASI_NEWTON_TRUSTREGION - - PUBLIC CMFE_SOLVER_QUASI_NEWTON_LBFGS,CMFE_SOLVER_QUASI_NEWTON_GOODBROYDEN,CMFE_SOLVER_QUASI_NEWTON_BADBROYDEN - - PUBLIC CMFE_SOLVER_QUASI_NEWTON_LINESEARCH_BASIC,CMFE_SOLVER_QUASI_NEWTON_LINESEARCH_L2, & - & CMFE_SOLVER_QUASI_NEWTON_LINESEARCH_CP - - PUBLIC CMFE_SOLVER_QUASI_NEWTON_RESTART_NONE,CMFE_SOLVER_QUASI_NEWTON_RESTART_POWELL, & - & CMFE_SOLVER_QUASI_NEWTON_RESTART_PERIODIC - - PUBLIC CMFE_SOLVER_QUASI_NEWTON_SCALE_NONE,CMFE_SOLVER_QUASI_NEWTON_SCALE_SHANNO, & - & CMFE_SOLVER_QUASI_NEWTON_SCALE_LINESEARCH,CMFE_SOLVER_QUASI_NEWTON_SCALE_JACOBIAN - - PUBLIC CMFE_SOLVER_NEWTON_LINESEARCH,CMFE_SOLVER_NEWTON_TRUSTREGION - - PUBLIC CMFE_SOLVER_NEWTON_LINESEARCH_LINEAR,CMFE_SOLVER_NEWTON_LINESEARCH_QUADRATIC,CMFE_SOLVER_NEWTON_LINESEARCH_CUBIC - - PUBLIC CMFE_SOLVER_NEWTON_JACOBIAN_NOT_CALCULATED,CMFE_SOLVER_NEWTON_JACOBIAN_EQUATIONS_CALCULATED, & - & CMFE_SOLVER_NEWTON_JACOBIAN_FD_CALCULATED - - PUBLIC CMFE_SOLVER_NEWTON_CONVERGENCE_PETSC_DEFAULT,CMFE_SOLVER_NEWTON_CONVERGENCE_ENERGY_NORM, & - & CMFE_SOLVER_NEWTON_CONVERGENCE_DIFFERENTIATED_RATIO - - PUBLIC CMFE_SOLVER_DYNAMIC_FIRST_ORDER,CMFE_SOLVER_DYNAMIC_SECOND_ORDER - - PUBLIC CMFE_SOLVER_DYNAMIC_LINEAR,CMFE_SOLVER_DYNAMIC_NONLINEAR - - PUBLIC CMFE_SOLVER_DYNAMIC_FIRST_DEGREE,CMFE_SOLVER_DYNAMIC_SECOND_DEGREE,CMFE_SOLVER_DYNAMIC_THIRD_DEGREE - - PUBLIC CMFE_SOLVER_DYNAMIC_EULER_SCHEME,CMFE_SOLVER_DYNAMIC_BACKWARD_EULER_SCHEME,CMFE_SOLVER_DYNAMIC_CRANK_NICOLSON_SCHEME, & - & CMFE_SOLVER_DYNAMIC_GALERKIN_SCHEME,CMFE_SOLVER_DYNAMIC_ZLAMAL_SCHEME,CMFE_SOLVER_DYNAMIC_SECOND_DEGREE_GEAR_SCHEME, & - & CMFE_SOLVER_DYNAMIC_SECOND_DEGREE_LINIGER1_SCHEME,CMFE_SOLVER_DYNAMIC_SECOND_DEGREE_LINIGER2_SCHEME, & - & CMFE_SOLVER_DYNAMIC_NEWMARK1_SCHEME,CMFE_SOLVER_DYNAMIC_NEWMARK2_SCHEME,CMFE_SOLVER_DYNAMIC_NEWMARK3_SCHEME, & - & CMFE_SOLVER_DYNAMIC_THIRD_DEGREE_GEAR_SCHEME,CMFE_SOLVER_DYNAMIC_THIRD_DEGREE_LINIGER1_SCHEME, & - & CMFE_SOLVER_DYNAMIC_THIRD_DEGREE_LINIGER2_SCHEME,CMFE_SOLVER_DYNAMIC_HOUBOLT_SCHEME,CMFE_SOLVER_DYNAMIC_WILSON_SCHEME, & - & CMFE_SOLVER_DYNAMIC_BOSSAK_NEWMARK1_SCHEME,CMFE_SOLVER_DYNAMIC_BOSSAK_NEWMARK2_SCHEME, & - & CMFE_SOLVER_DYNAMIC_HILBERT_HUGHES_TAYLOR1_SCHEME, & - & CMFE_SOLVER_DYNAMIC_HILBERT_HUGHES_TAYLOR2_SCHEME,CMFE_SOLVER_DYNAMIC_USER_DEFINED_SCHEME - - PUBLIC CMFE_SOLVER_DAE_DIFFERENTIAL_ONLY,CMFE_SOLVER_DAE_INDEX_1,CMFE_SOLVER_DAE_INDEX_2,CMFE_SOLVER_DAE_INDEX_3 - - PUBLIC CMFE_SOLVER_DAE_EULER,CMFE_SOLVER_DAE_CRANK_NICOLSON,CMFE_SOLVER_DAE_RUNGE_KUTTA,CMFE_SOLVER_DAE_ADAMS_MOULTON, & - & CMFE_SOLVER_DAE_BDF, & - & CMFE_SOLVER_DAE_RUSH_LARSON,CMFE_SOLVER_DAE_EXTERNAL - - PUBLIC CMFE_SOLVER_DAE_EULER_FORWARD,CMFE_SOLVER_DAE_EULER_BACKWARD,CMFE_SOLVER_DAE_EULER_IMPROVED - - PUBLIC CMFE_SOLVER_SOLUTION_INITIALISE_ZERO,CMFE_SOLVER_SOLUTION_INITIALISE_CURRENT_FIELD, & - & CMFE_SOLVER_SOLUTION_INITIALISE_NO_CHANGE - - PUBLIC CMFE_SOLVER_NO_OUTPUT,CMFE_SOLVER_MONITOR_OUTPUT,CMFE_SOLVER_PROGRESS_OUTPUT,CMFE_SOLVER_TIMING_OUTPUT, & - & CMFE_SOLVER_SOLVER_OUTPUT,CMFE_SOLVER_MATRIX_OUTPUT - - PUBLIC CMFE_SOLVER_SPARSE_MATRICES,CMFE_SOLVER_FULL_MATRICES - - PUBLIC CMFE_SOLVER_SYMMETRIC_MATRICES,CMFE_SOLVER_UNSYMMETRIC_MATRICES - - PUBLIC cmfe_Solver_CellMLEquationsGet - - PUBLIC cmfe_CellMLEquations_CellMLAdd - - PUBLIC cmfe_CellMLEquations_LinearityTypeGet,cmfe_CellMLEquations_LinearityTypeSet - - PUBLIC cmfe_CellMLEquations_TimeDependenceTypeGet,cmfe_CellMLEquations_TimeDependenceTypeSet - - PUBLIC cmfe_Solver_DAEEulerSolverTypeGet,cmfe_Solver_DAEEulerSolverTypeSet - - PUBLIC cmfe_Solver_DAESolverTypeGet,cmfe_Solver_DAESolverTypeSet - - PUBLIC cmfe_Solver_DAETimesSet,cmfe_Solver_DAETimeStepSet - - PUBLIC cmfe_Solver_DynamicDegreeGet,cmfe_Solver_DynamicDegreeSet - - PUBLIC cmfe_Solver_DynamicLinearityTypeGet - - PUBLIC cmfe_Solver_DynamicLinearSolverGet,cmfe_Solver_DynamicNonlinearSolverGet - - PUBLIC cmfe_Solver_DynamicSchemeSet - - PUBLIC cmfe_Solver_DynamicThetaSet - - PUBLIC cmfe_Solver_DynamicTimesSet - - PUBLIC cmfe_Solver_GeometricTransformationArbitraryPathSet,cmfe_Solver_GeometricTransformationClear - - PUBLIC cmfe_Solver_GeometricTransformationNumberOfLoadIncrementsSet - - PUBLIC cmfe_Solver_GeometricTransformationScalingsSet - - PUBLIC cmfe_Solver_GeometricTransformationFieldSet - - PUBLIC cmfe_Solver_GeometricTransformationMatrixSet - - PUBLIC cmfe_Solver_GeometricTransformationRotationSet,cmfe_Solver_GeometricTransformationTranslationSet - - PUBLIC cmfe_Solver_LabelGet,cmfe_Solver_LabelSet - - PUBLIC cmfe_Solver_LibraryTypeGet,cmfe_Solver_LibraryTypeSet - - PUBLIC cmfe_Solver_LinearDirectTypeSet - - PUBLIC cmfe_Solver_MumpsSetIcntl,cmfe_Solver_MumpsSetCntl - - PUBLIC cmfe_Solver_LinearIterativeAbsoluteToleranceSet - - PUBLIC cmfe_Solver_LinearIterativeDivergenceToleranceSet - - PUBLIC cmfe_Solver_LinearIterativeGMRESRestartSet - - PUBLIC cmfe_Solver_LinearIterativeMaximumIterationsSet - - PUBLIC cmfe_Solver_LinearIterativePreconditionerTypeSet - - PUBLIC cmfe_Solver_LinearIterativeRelativeToleranceSet - - PUBLIC cmfe_Solver_LinearIterativeTypeSet - - PUBLIC cmfe_Solver_LinearTypeSet - - PUBLIC cmfe_Solver_NewtonAbsoluteToleranceSet - - PUBLIC cmfe_Solver_NewtonLineSearchMonitorOutputSet - - PUBLIC cmfe_Solver_NewtonJacobianCalculationTypeSet - - PUBLIC cmfe_Solver_NewtonLinearSolverGet - - PUBLIC cmfe_Solver_NewtonCellMLSolverGet - - PUBLIC cmfe_Solver_NewtonConvergenceTestTypeSet - - PUBLIC cmfe_Solver_NewtonLineSearchAlphaSet - - PUBLIC cmfe_Solver_NewtonLineSearchMaxStepSet - - PUBLIC cmfe_Solver_NewtonLineSearchStepTolSet - - PUBLIC cmfe_Solver_NewtonLineSearchTypeSet - - PUBLIC cmfe_Solver_NewtonMaximumFunctionEvaluationsSet - - PUBLIC cmfe_Solver_NewtonMaximumIterationsSet - - PUBLIC cmfe_Solver_NewtonRelativeToleranceSet - - PUBLIC cmfe_Solver_NewtonSolutionToleranceSet - - PUBLIC cmfe_Solver_NewtonTrustRegionDelta0Set - - PUBLIC cmfe_Solver_NewtonTrustRegionToleranceSet - - PUBLIC cmfe_Solver_NewtonTypeSet - - PUBLIC cmfe_Solver_QuasiNewtonAbsoluteToleranceSet - - PUBLIC cmfe_Solver_QuasiNewtonLineSearchMonitorOutputSet - - PUBLIC cmfe_Solver_QuasiNewtonJacobianCalculationTypeSet - - PUBLIC cmfe_Solver_QuasiNewtonLinearSolverGet - - PUBLIC cmfe_Solver_QuasiNewtonCellMLSolverGet - - PUBLIC cmfe_Solver_QuasiNewtonConvergenceTestTypeSet - - PUBLIC cmfe_Solver_QuasiNewtonLineSearchMaxStepSet - - PUBLIC cmfe_Solver_QuasiNewtonLineSearchStepTolSet - - PUBLIC cmfe_Solver_QuasiNewtonLineSearchTypeSet - - PUBLIC cmfe_Solver_QuasiNewtonMaximumFunctionEvaluationsSet - - PUBLIC cmfe_Solver_QuasiNewtonMaximumIterationsSet - - PUBLIC cmfe_Solver_QuasiNewtonRelativeToleranceSet - - PUBLIC cmfe_Solver_QuasiNewtonSolutionToleranceSet - - PUBLIC cmfe_Solver_QuasiNewtonTrustRegionDelta0Set - - PUBLIC cmfe_Solver_QuasiNewtonTrustRegionToleranceSet - - PUBLIC cmfe_Solver_QuasiNewtonRestartSet - - PUBLIC cmfe_Solver_QuasiNewtonRestartTypeSet - - PUBLIC cmfe_Solver_QuasiNewtonScaleTypeSet - - PUBLIC cmfe_Solver_QuasiNewtonSolveTypeSet - - PUBLIC cmfe_Solver_QuasiNewtonTypeSet - - PUBLIC cmfe_Solver_NonlinearTypeSet - - PUBLIC cmfe_Solver_OutputTypeSet - - PUBLIC cmfe_Solver_SolverEquationsGet - - PUBLIC cmfe_SolverEquations_BoundaryConditionsCreateFinish,cmfe_SolverEquations_BoundaryConditionsCreateStart - - PUBLIC cmfe_SolverEquations_BoundaryConditionsGet - - PUBLIC cmfe_SolverEquations_EquationsSetAdd - - PUBLIC cmfe_SolverEquations_InterfaceConditionAdd - - PUBLIC cmfe_SolverEquations_JacobianMatrixGet - - PUBLIC cmfe_SolverEquations_MatrixGet - - PUBLIC cmfe_SolverEquations_NumberOfMatricesGet - - PUBLIC cmfe_SolverEquations_ResidualVectorGet - - PUBLIC cmfe_SolverEquations_RhsVectorGet - - PUBLIC cmfe_SolverEquations_SparsityTypeSet - - PUBLIC cmfe_SolverEquations_SymmetryTypeGet,cmfe_SolverEquations_SymmetryTypeSet - - PUBLIC cmfe_SolverEquations_VectorGet - - PUBLIC cmfe_BioelectricsFiniteElasticity_UpdateGeometricField - -!!================================================================================================================================== -!! -!! FieldML routines -!! -!!================================================================================================================================== - - !> Provides input and output of fields through the FieldML API - TYPE cmfe_FieldMLIOType - PRIVATE -#ifdef WITH_FIELDML - TYPE(FIELDML_IO_TYPE), POINTER :: fieldmlInfo -#endif - END TYPE cmfe_FieldMLIOType - - !> Creates a mesh component using the given FieldML evaluator. - INTERFACE cmfe_FieldML_InputCreateMeshComponent - MODULE PROCEDURE cmfe_FieldML_InputCreateMeshComponentObjVS - MODULE PROCEDURE cmfe_FieldML_InputCreateMeshComponentNumberVS - MODULE PROCEDURE cmfe_FieldML_InputCreateMeshComponentObjC - MODULE PROCEDURE cmfe_FieldML_InputCreateMeshComponentNumberC - END INTERFACE cmfe_FieldML_InputCreateMeshComponent - - !> Creates a field component using the given FieldML evaluator. - INTERFACE cmfe_FieldML_InputFieldCreateStart - MODULE PROCEDURE cmfe_FieldML_InputFieldCreateStartObjVS - MODULE PROCEDURE cmfe_FieldML_InputFieldCreateStartNumberVS - MODULE PROCEDURE cmfe_FieldML_InputFieldCreateStartObjC - MODULE PROCEDURE cmfe_FieldML_InputFieldCreateStartNumberC - END INTERFACE cmfe_FieldML_InputFieldCreateStart - - !> Updates the given field's dofs using the given parameter evaluator. - INTERFACE cmfe_FieldML_InputFieldParametersUpdate - MODULE PROCEDURE cmfe_FieldML_InputFieldParametersUpdateObjVS - MODULE PROCEDURE cmfe_FieldML_InputFieldParametersUpdateNumberVS - MODULE PROCEDURE cmfe_FieldML_InputFieldParametersUpdateObjC - MODULE PROCEDURE cmfe_FieldML_InputFieldParametersUpdateNumberC - END INTERFACE cmfe_FieldML_InputFieldParametersUpdate - - !> Creates a basis using the given FieldML evaluator. - INTERFACE cmfe_FieldML_InputBasisCreateStart - MODULE PROCEDURE cmfe_FieldML_InputBasisCreateStartObjVS - MODULE PROCEDURE cmfe_FieldML_InputBasisCreateStartNumberVS - MODULE PROCEDURE cmfe_FieldML_InputBasisCreateStartObjC - MODULE PROCEDURE cmfe_FieldML_InputBasisCreateStartNumberC - END INTERFACE cmfe_FieldML_InputBasisCreateStart - - !> Creates the region's nodes using the given FieldML evaluator. - INTERFACE cmfe_FieldML_InputNodesCreateStart - MODULE PROCEDURE cmfe_FieldML_InputNodesCreateStartObjVS - MODULE PROCEDURE cmfe_FieldML_InputNodesCreateStartNumberVS - MODULE PROCEDURE cmfe_FieldML_InputNodesCreateStartObjC - MODULE PROCEDURE cmfe_FieldML_InputNodesCreateStartNumberC - END INTERFACE cmfe_FieldML_InputNodesCreateStart - - !> Creates the region's coordinate system using the given FieldML evaluator. - INTERFACE cmfe_FieldML_InputCoordinateSystemCreateStart - MODULE PROCEDURE cmfe_FieldML_InputCoordinateSystemCreateStartObjVS - MODULE PROCEDURE cmfe_FieldML_InputCoordinateSystemCreateStartNumberVS - MODULE PROCEDURE cmfe_FieldML_InputCoordinateSystemCreateStartObjC - MODULE PROCEDURE cmfe_FieldML_InputCoordinateSystemCreateStartNumberC - END INTERFACE cmfe_FieldML_InputCoordinateSystemCreateStart - - !> Creates a mesh using the given FieldML evaluator. - INTERFACE cmfe_FieldML_InputMeshCreateStart - MODULE PROCEDURE cmfe_FieldML_InputMeshCreateStartObjVS - MODULE PROCEDURE cmfe_FieldML_InputMeshCreateStartNumberVS - MODULE PROCEDURE cmfe_FieldML_InputMeshCreateStartObjC - MODULE PROCEDURE cmfe_FieldML_InputMeshCreateStartNumberC - END INTERFACE cmfe_FieldML_InputMeshCreateStart - - !> Initialise the given FieldML context using the given FieldML XML file. - INTERFACE cmfe_FieldML_InputCreateFromFile - MODULE PROCEDURE cmfe_FieldML_InputCreateFromFileVS - MODULE PROCEDURE cmfe_FieldML_InputCreateFromFileC - END INTERFACE cmfe_FieldML_InputCreateFromFile - - PUBLIC :: cmfe_FieldML_InputCreateFromFile,cmfe_FieldML_InputMeshCreateStart, & - & cmfe_FieldML_InputCoordinateSystemCreateStart,cmfe_FieldML_InputCreateMeshComponent, & - & cmfe_FieldML_InputFieldCreateStart,cmfe_FieldML_InputBasisCreateStart,cmfe_FieldML_InputNodesCreateStart, & - & cmfe_FieldML_InputFieldParametersUpdate - - PUBLIC :: cmfe_FieldMLIO_Finalise,cmfe_FieldMLIO_Initialise,cmfe_FieldMLIO_GetSession - - !> Add the given field to the current FieldML context. - INTERFACE cmfe_FieldML_OutputAddField - MODULE PROCEDURE cmfe_FieldML_OutputAddFieldNoTypeObjVS - MODULE PROCEDURE cmfe_FieldML_OutputAddFieldNoTypeNumberVS - MODULE PROCEDURE cmfe_FieldML_OutputAddFieldWithTypeObjVS - MODULE PROCEDURE cmfe_FieldML_OutputAddFieldWithTypeNumberVS - MODULE PROCEDURE cmfe_FieldML_OutputAddFieldNoTypeObjC - MODULE PROCEDURE cmfe_FieldML_OutputAddFieldNoTypeNumberC - MODULE PROCEDURE cmfe_FieldML_OutputAddFieldWithTypeObjC - MODULE PROCEDURE cmfe_FieldML_OutputAddFieldWithTypeNumberC - END INTERFACE cmfe_FieldML_OutputAddField - - !> Initialise a new FieldML context. - INTERFACE cmfe_FieldML_OutputCreate - MODULE PROCEDURE cmfe_FieldML_OutputCreateObjVS - MODULE PROCEDURE cmfe_FieldML_OutputCreateNumberVS - MODULE PROCEDURE cmfe_FieldML_OutputCreateObjC - MODULE PROCEDURE cmfe_FieldML_OutputCreateNumberC - END INTERFACE cmfe_FieldML_OutputCreate - - !> Add the given field to the current FieldML context, using only the given components. - INTERFACE cmfe_FieldML_OutputAddFieldComponents - MODULE PROCEDURE cmfe_FieldML_OutputAddFieldComponentsObjVS - MODULE PROCEDURE cmfe_FieldML_OutputAddFieldComponentsNumberVS - MODULE PROCEDURE cmfe_FieldML_OutputAddFieldComponentsObjC - MODULE PROCEDURE cmfe_FieldML_OutputAddFieldComponentsNumberC - END INTERFACE cmfe_FieldML_OutputAddFieldComponents - - !> Write the current FieldML document to the given file. - INTERFACE cmfe_FieldML_OutputWrite - MODULE PROCEDURE cmfe_FieldML_OutputWriteVS - MODULE PROCEDURE cmfe_FieldML_OutputWriteC - END INTERFACE cmfe_FieldML_OutputWrite - - PUBLIC :: cmfe_FieldMLIOType - - PUBLIC :: cmfe_FieldML_OutputWrite,cmfe_FieldML_OutputAddField,cmfe_FieldML_OutputCreate, & - & cmfe_FieldML_OutputAddFieldComponents, & - & cmfe_FieldML_OutputAddImport - -!!================================================================================================================================== -!! -!! GENERAL_ROUTINES -!! -!!================================================================================================================================== - - !>Returns the user number of an object. - INTERFACE cmfe_UserNumberGet - MODULE PROCEDURE cmfe_Region_UserNumberGet - MODULE PROCEDURE cmfe_Mesh_UserNumberGet - MODULE PROCEDURE cmfe_Basis_UserNumberGet - END INTERFACE cmfe_UserNumberGet - - PUBLIC cmfe_UserNumberGet - -!! -!!================================================================================================================================== -!! - -CONTAINS - - ! - !================================================================================================================================ - ! - - !>Finalises CMISS. - SUBROUTINE cmfe_Finalise(err) - !DLLEXPORT(cmfe_Finalise) - - !Argument variables - INTEGER(INTG), INTENT(OUT) :: err !Initialises CMISS returning a user number to the world coordinate system and region. - SUBROUTINE cmfe_InitialiseNumber(worldCoordinateSystemUserNumber,worldRegionUserNumber,err) - !DLLEXPORT(cmfe_InitialiseNumber) - - !Argument variables - INTEGER(INTG), INTENT(OUT) :: worldCoordinateSystemUserNumber !Initialises CMISS returning a pointer to the world coordinate system and region. - SUBROUTINE cmfe_InitialiseObj(worldCoordinateSystem,worldRegion,err) - !DLLEXPORT(cmfe_InitialiseObj) - - !Argument variables - TYPE(cmfe_CoordinateSystemType), INTENT(INOUT) :: worldCoordinateSystem !Sets a PETSc option (so that they can be set from python when we don't have the command line.) - SUBROUTINE cmfe_PetscOptionsSetValue(name,VALUE,err) - !DLLEXPORT(cmfe_WorkingRealPrecisionGet) - - !Argument variables - CHARACTER(LEN=*), INTENT(IN) :: name !Returns the working precision - SUBROUTINE cmfe_WorkingRealPrecisionGet(workingRealPrecision,err) - !DLLEXPORT(cmfe_WorkingRealPrecisionGet) - - !Argument variables - INTEGER(INTG), INTENT(OUT) :: workingRealPrecision !Copy an array of cmfe_BasisTypes from C to an allocated Fortran array, for use by the C bindings - SUBROUTINE cmfe_BasisTypesCopy(bases,basesSize,basesPtr,err) - !DLLEXPORT(cmfe_BasisTypesCopy) - - !Argument variables - TYPE(cmfe_BasisType), INTENT(INOUT) :: bases(:) ! Basis%basis - ELSE - CALL FlagError("error converting C pointer.",ERR,error,*999) - END IF - END DO - ELSE - CALL FlagError("error converting C pointer.",ERR,error,*999) - END IF - ELSE - CALL FlagError("bases C pointer is not associated.",ERR,error,*999) - END IF - - EXITS("cmfe_BasisTypesCopy") - RETURN -999 ERRORSEXITS("cmfe_BasisTypesCopy",err,error) - CALL cmfe_HandleError(err,error) - RETURN - - END SUBROUTINE cmfe_BasisTypesCopy - - ! - !================================================================================================================================ - ! - - !>Finalises a cmfe_BasisType object. - SUBROUTINE cmfe_Basis_Finalise(cmfe_Basis,err) - !DLLEXPORT(cmfe_Basis_Finalise) - - !Argument variables - TYPE(cmfe_BasisType), INTENT(OUT) :: cmfe_Basis !Initialises a cmfe_ComputationalWorkGroupType object. - SUBROUTINE cmfe_ComputationalWorkGroup_Initialise(cmfe_ComputationalWorkGroup,err) - !DLLEXPORT(cmfe_ComputationalWorkGroup_Initialise) + !>Finalises a cmfe_ComputationEnvironmentType object. + SUBROUTINE cmfe_ComputationEnvironment_Finalise(cmfe_ComputationEnvironment,err) + !DLLEXPORT(cmfe_ComputationEnvironment_Finalise) + + !Argument variables + TYPE(cmfe_ComputationEnvironmentType), INTENT(OUT) :: cmfe_ComputationEnvironment !Initialises a cmfe_ComputationEnvironmentType object. + SUBROUTINE cmfe_ComputationEnvironment_Initialise(cmfe_ComputationEnvironment,err) + !DLLEXPORT(cmfe_ComputationEnvironment_Initialise) !Argument variables - TYPE(cmfe_ComputationalWorkGroupType), INTENT(OUT) :: cmfe_ComputationalWorkGroup !Initialises a cmfe_DistributedMatrixType object. + SUBROUTINE cmfe_DistributedMatrix_Initialise(cmfe_DistributedMatrix,err) + !DLLEXPORT(cmfe_DistributedMatrix_Initialise) + + !Argument variables + TYPE(cmfe_DistributedMatrixType), INTENT(OUT) :: cmfe_DistributedMatrix !Initialises a cmfe_DistributedVectorType object. + SUBROUTINE cmfe_DistributedVector_Initialise(cmfe_DistributedVector,err) + !DLLEXPORT(cmfe_DistributedVector_Initialise) + + !Argument variables + TYPE(cmfe_DistributedVectorType), INTENT(OUT) :: cmfe_DistributedVector !Finalises a cmfe_EquationsType object. SUBROUTINE cmfe_Equations_Finalise(cmfe_Equations,err) !DLLEXPORT(cmfe_Equations_Finalise) @@ -9023,56 +9366,6 @@ END SUBROUTINE cmfe_History_Initialise !================================================================================================================================ ! - !>Initialises a cmfe_DistributedMatrixType object. - SUBROUTINE cmfe_DistributedMatrix_Initialise(cmfe_DistributedMatrix,err) - !DLLEXPORT(cmfe_DistributedMatrix_Initialise) - - !Argument variables - TYPE(cmfe_DistributedMatrixType), INTENT(OUT) :: cmfe_DistributedMatrix !Initialises a cmfe_DistributedVectorType object. - SUBROUTINE cmfe_DistributedVector_Initialise(cmfe_DistributedVector,err) - !DLLEXPORT(cmfe_DistributedVector_Initialise) - - !Argument variables - TYPE(cmfe_DistributedVectorType), INTENT(OUT) :: cmfe_DistributedVector !Finalises a cmfe_MeshType object. SUBROUTINE cmfe_Mesh_Finalise(cmfe_Mesh,err) !DLLEXPORT(cmfe_Mesh_Finalise) @@ -9525,6 +9818,56 @@ SUBROUTINE cmfe_SolverEquations_Initialise(cmfe_SolverEquations,err) END SUBROUTINE cmfe_SolverEquations_Initialise + ! + !================================================================================================================================ + ! + + !>Finalises a cmfe_WorkGroupType object. + SUBROUTINE cmfe_WorkGroup_Finalise(cmfe_WorkGroup,err) + !DLLEXPORT(cmfe_WorkGroup_Finalise) + + !Argument variables + TYPE(cmfe_WorkGroupType), INTENT(OUT) :: cmfe_WorkGroup !Initialises a cmfe_WorkGroupType object. + SUBROUTINE cmfe_WorkGroup_Initialise(cmfe_WorkGroup,err) + !DLLEXPORT(cmfe_WorkGroup_Initialise) + + !Argument variables + TYPE(cmfe_WorkGroupType), INTENT(OUT) :: cmfe_WorkGroup !Output the analytic error analysis for a field specified by a user number compared to the analytic values parameter set. - SUBROUTINE cmfe_AnalyticAnalysis_OutputNumber(regionUserNumber,fieldUserNumber,fileName,err) + SUBROUTINE cmfe_AnalyticAnalysis_OutputNumber(contextUserNumber,regionUserNumber,fieldUserNumber,fileName,err) !DLLEXPORT(cmfe_AnalyticAnalysis_OutputNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Get absolute error value for the node in a field specified by a user number compared to the analytic value. - SUBROUTINE cmfe_AnalyticAnalysis_AbsoluteErrorGetNodeNumber(regionUserNumber,fieldUserNumber,variableType,versionNumber, & - & derivativeNumber, nodeNumber,componentNumber,value,err) + SUBROUTINE cmfe_AnalyticAnalysis_AbsoluteErrorGetNodeNumber(contextUserNumber,regionUserNumber,fieldUserNumber,variableType, & + & versionNumber,derivativeNumber, nodeNumber,componentNumber,value,err) !DLLEXPORT(cmfe_AnalyticAnalysis_AbsoluteErrorGetNodeNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Get percentage error value for the node in a field specified by a user number compared to the analytic value. - SUBROUTINE cmfe_AnalyticAnalysis_PercentageErrorGetNodeNumber(regionUserNumber,fieldUserNumber,variableType,versionNumber, & - & derivativeNumber,nodeNumber,componentNumber,value,err) + SUBROUTINE cmfe_AnalyticAnalysis_PercentageErrorGetNodeNumber(contextUserNumber,regionUserNumber,fieldUserNumber,variableType, & + & versionNumber,derivativeNumber,nodeNumber,componentNumber,value,err) !DLLEXPORT(cmfe_AnalyticAnalysis_PercentageErrorGetNodeNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Get relative error value for the node in a field specified by a user number compared to the analytic value. - SUBROUTINE cmfe_AnalyticAnalysis_RelativeErrorGetNodeNumber(regionUserNumber,fieldUserNumber,variableType,versionNumber, & - & derivativeNumber,nodeNumber,componentNumber,value,err) + SUBROUTINE cmfe_AnalyticAnalysis_RelativeErrorGetNodeNumber(contextUserNumber,regionUserNumber,fieldUserNumber,variableType, & + & versionNumber,derivativeNumber,nodeNumber,componentNumber,value,err) !DLLEXPORT(cmfe_AnalyticAnalysis_RelativeErrorGetNodeNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Get absolute error value for the element in a field specified by a user number compared to the analytic value. - SUBROUTINE cmfe_AnalyticAnalysis_AbsoluteErrorGetElementNumber(regionUserNumber,fieldUserNumber,variableType,elementNumber, & - & componentNumber,value,err) + SUBROUTINE cmfe_AnalyticAnalysis_AbsoluteErrorGetElementNumber(contextUserNumber,regionUserNumber,fieldUserNumber,variableType, & + & elementNumber,componentNumber,value,err) !DLLEXPORT(cmfe_AnalyticAnalysis_AbsoluteErrorGetElementNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Get percentage error value for the element in a field specified by a user number compared to the analytic value. - SUBROUTINE cmfe_AnalyticAnalysis_PercentageErrorGetElementNumber(regionUserNumber,fieldUserNumber,variableType,elementNumber, & - & componentNumber,value,err) + SUBROUTINE cmfe_AnalyticAnalysis_PercentageErrorGetElementNumber(contextUserNumber,regionUserNumber,fieldUserNumber, & + & variableType,elementNumber,componentNumber,value,err) !DLLEXPORT(cmfe_AnalyticAnalysis_PercentageErrorGetElementNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Get relative error value for the element in a field specified by a user number compared to the analytic value. - SUBROUTINE cmfe_AnalyticAnalysis_RelativeErrorGetElementNumber(regionUserNumber,fieldUserNumber,variableType,elementNumber, & - & componentNumber,value,err) + SUBROUTINE cmfe_AnalyticAnalysis_RelativeErrorGetElementNumber(contextUserNumber,regionUserNumber,fieldUserNumber,variableType, & + & elementNumber,componentNumber,value,err) !DLLEXPORT(cmfe_AnalyticAnalysis_RelativeErrorGetElementNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Get absolute error value for the constant in a field specified by a user number compared to the analytic value. - SUBROUTINE cmfe_AnalyticAnalysis_AbsoluteErrorGetConstantNumber(regionUserNumber,fieldUserNumber,variableType,componentNumber, & - & value,err) + SUBROUTINE cmfe_AnalyticAnalysis_AbsoluteErrorGetConstantNumber(contextUserNumber,regionUserNumber,fieldUserNumber, & + & variableType,componentNumber,value,err) !DLLEXPORT(cmfe_AnalyticAnalysis_AbsoluteErrorGetConstantNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Get percentage error value for the constant in a field specified by a user number compared to the analytic value. - SUBROUTINE cmfe_AnalyticAnalysis_PercentageErrorGetConstantNumber(regionUserNumber,fieldUserNumber,variableType,componentNumber, & - & value,err) + SUBROUTINE cmfe_AnalyticAnalysis_PercentageErrorGetConstantNumber(contextUserNumber,regionUserNumber,fieldUserNumber, & + & variableType,componentNumber,value,err) !DLLEXPORT(cmfe_AnalyticAnalysis_PercentageErrorGetConstantNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Get relative error value for the constant in a field specified by a user number compared to the analytic value. - SUBROUTINE cmfe_AnalyticAnalysis_RelativeErrorGetConstantNumber(regionUserNumber,fieldUserNumber,variableType,componentNumber, & - & value,err) + SUBROUTINE cmfe_AnalyticAnalysis_RelativeErrorGetConstantNumber(contextUserNumber,regionUserNumber,fieldUserNumber, & + & variableType,componentNumber,value,err) !DLLEXPORT(cmfe_AnalyticAnalysis_RelativeErrorGetConstantNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Get rms error value for nodes in a field compared to the analytic value. - SUBROUTINE cmfe_AnalyticAnalysis_RMSErrorGetNodeNumber(regionUserNumber,fieldUserNumber,variableType,componentNumber,errorType, & - & localValue,localGhostValue,globalValue,err) + SUBROUTINE cmfe_AnalyticAnalysis_RMSErrorGetNodeNumber(contextUserNumber,regionUserNumber,fieldUserNumber,variableType, & + & componentNumber,errorType,localValue,localGhostValue,globalValue,err) !DLLEXPORT(cmfe_AnalyticAnalysis_RMSErrorGetNodeNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Get rms error value for elements in a field compared to the analytic value. - SUBROUTINE cmfe_AnalyticAnalysis_RMSErrorGetElementNumber(regionUserNumber,fieldUserNumber,variableType,componentNumber, & - & errorType,localValue,localGhostValue,globalValue,err) + SUBROUTINE cmfe_AnalyticAnalysis_RMSErrorGetElementNumber(contextUserNumber,regionUserNumber,fieldUserNumber,variableType, & + & componentNumber,errorType,localValue,localGhostValue,globalValue,err) !DLLEXPORT(cmfe_AnalyticAnalysis_RMSErrorGetElementNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Get integral value for the numerical values. - SUBROUTINE cmfe_AnalyticAnalysis_IntegralNumericalValueGetNumber(regionUserNumber,fieldUserNumber,variableType,componentNumber, & - & integralValue,ghostIntegralValue,err) + SUBROUTINE cmfe_AnalyticAnalysis_IntegralNumericalValueGetNumber(contextUserNumber,regionUserNumber,fieldUserNumber, & + & variableType,componentNumber,integralValue,ghostIntegralValue,err) !DLLEXPORT(cmfe_AnalyticAnalysis_IntegralNumericalValueGetNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Get integral value for the analytic values. - SUBROUTINE cmfe_AnalyticAnalysis_IntegralAnalyticValueGetNumber(regionUserNumber,fieldUserNumber,variableType,componentNumber, & - & integralValue,ghostIntegralValue,err) + SUBROUTINE cmfe_AnalyticAnalysis_IntegralAnalyticValueGetNumber(contextUserNumber,regionUserNumber,fieldUserNumber,variableType, & + & componentNumber,integralValue,ghostIntegralValue,err) !DLLEXPORT(cmfe_AnalyticAnalysis_IntegralAnalyticValueGetNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Get integral value for the percentage errors. - SUBROUTINE cmfe_AnalyticAnalysis_IntegralPercentageErrorGetNumber(regionUserNumber,fieldUserNumber,variableType,componentNumber, & - & integralValue,ghostIntegralValue,err) + SUBROUTINE cmfe_AnalyticAnalysis_IntegralPercentageErrorGetNumber(contextUserNumber,regionUserNumber,fieldUserNumber, & + & variableType,componentNumber,integralValue,ghostIntegralValue,err) !DLLEXPORT(cmfe_AnalyticAnalysis_IntegralPercentageErrorGetNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Get integral value for the absolute errors. - SUBROUTINE cmfe_AnalyticAnalysis_IntegralAbsoluteErrorGetNumber(regionUserNumber,fieldUserNumber,variableType,componentNumber, & - & integralValue,ghostIntegralValue,err) + SUBROUTINE cmfe_AnalyticAnalysis_IntegralAbsoluteErrorGetNumber(contextUserNumber,regionUserNumber,fieldUserNumber, & + & variableType,componentNumber,integralValue,ghostIntegralValue,err) !DLLEXPORT(cmfe_AnalyticAnalysis_IntegralAbsoluteErrorGetNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Get integral value for the relative error. - SUBROUTINE cmfe_AnalyticAnalysis_IntegralRelativeErrorGetNumber(regionUserNumber,fieldUserNumber,variableType,componentNumber, & - & integralValue,ghostIntegralValue,err) + SUBROUTINE cmfe_AnalyticAnalysis_IntegralRelativeErrorGetNumber(contextUserNumber,regionUserNumber,fieldUserNumber, & + & variableType,componentNumber,integralValue,ghostIntegralValue,err) !DLLEXPORT(cmfe_AnalyticAnalysis_IntegralRelativeErrorGetNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Get integral value for the nid numerical. - SUBROUTINE cmfe_AnalyticAnalysis_IntegralNIDNumericalValueGetNumber(regionUserNumber,fieldUserNumber,variableType, & - & componentNumber,integralValue,ghostIntegralValue,err) + SUBROUTINE cmfe_AnalyticAnalysis_IntegralNIDNumericalValueGetNumber(contextUserNumber,regionUserNumber,fieldUserNumber, & + & variableType,componentNumber,integralValue,ghostIntegralValue,err) !DLLEXPORT(cmfe_AnalyticAnalysis_IntegralNIDNumericalValueGetNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Get integral value for the nid error. - SUBROUTINE cmfe_AnalyticAnalysis_IntegralNIDErrorGetNumber(regionUserNumber,fieldUserNumber,variableType,componentNumber, & - & integralValue,ghostIntegralValue,err) + SUBROUTINE cmfe_AnalyticAnalysis_IntegralNIDErrorGetNumber(contextUserNumber,regionUserNumber,fieldUserNumber,variableType, & + & componentNumber,integralValue,ghostIntegralValue,err) !DLLEXPORT(cmfe_AnalyticAnalysis_IntegralNIDErrorGetNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Returns the collapsed Xi flags of a basis identified by a user number. - SUBROUTINE cmfe_Basis_CollapsedXiGetNumber(userNumber,collapsedXi,err) + !>Returns the collapsed Xi flags of a basis identified by user number. + SUBROUTINE cmfe_Basis_CollapsedXiGetNumber(contextUserNumber,basisUserNumber,collapsedXi,err) !DLLEXPORT(cmfe_Basis_CollapsedXiGetNumber) !Argument variables - INTEGER(INTG), INTENT(IN) :: userNumber !Sets/changes the collapsed Xi flags of a basis identified by a user number. - SUBROUTINE cmfe_Basis_CollapsedXiSetNumber(userNumber,collapsedXi,err) + SUBROUTINE cmfe_Basis_CollapsedXiSetNumber(contextUserNumber,basisUserNumber,collapsedXi,err) !DLLEXPORT(cmfe_Basis_CollapsedXiSetNumber) !Argument variables - INTEGER(INTG), INTENT(IN) :: userNumber !Finishes the creation of a new basis identified by a user number. - SUBROUTINE cmfe_Basis_CreateFinishNumber(userNumber,err) + SUBROUTINE cmfe_Basis_CreateFinishNumber(contextUserNumber,basisUserNumber,err) !DLLEXPORT(cmfe_Basis_CreateFinishNumber) !Argument variables - INTEGER(INTG), INTENT(IN) :: userNumber !Starts the creation of a new basis for a basis identified by a user number. - SUBROUTINE cmfe_Basis_CreateStartNumber(userNumber,err) + SUBROUTINE cmfe_Basis_CreateStartNumber(basisUserNumber,contextUserNumber,err) !DLLEXPORT(cmfe_Basis_CreateStartNumber) !Argument variables - INTEGER(INTG), INTENT(IN) :: userNumber !Starts the creation of a new basis for a basis identified by an object. - SUBROUTINE cmfe_Basis_CreateStartObj(userNumber,basis,err) + SUBROUTINE cmfe_Basis_CreateStartObj(userNumber,context,basis,err) !DLLEXPORT(cmfe_Basis_CreateStartObj) !Argument variables INTEGER(INTG), INTENT(IN) :: userNumber !Destroys a basis identified by its basis user number. - SUBROUTINE cmfe_Basis_DestroyNumber(userNumber,err) + SUBROUTINE cmfe_Basis_DestroyNumber(contextUserNumber,basisUserNumber,err) !DLLEXPORT(cmfe_Basis_DestroyNumber) !Argument variables - INTEGER(INTG), INTENT(IN) :: userNumber !Get the interpolation type in each xi directions for a basis identified by a user number. - SUBROUTINE cmfe_Basis_InterpolationXiGetNumber(userNumber,interpolationXi,err) + SUBROUTINE cmfe_Basis_InterpolationXiGetNumber(contextUserNumber,basisUserNumber,interpolationXi,err) !DLLEXPORT(cmfe_Basis_InterpolationXiGetNumber) !Argument variables - INTEGER(INTG), INTENT(IN) :: userNumber !Sets/changes the interpolation type in each xi directions for a basis identified by a user number. - SUBROUTINE cmfe_Basis_InterpolationXiSetNumber(userNumber,interpolationXi,err) + SUBROUTINE cmfe_Basis_InterpolationXiSetNumber(contextUserNumber,basisUserNumber,interpolationXi,err) !DLLEXPORT(cmfe_Basis_InterpolationXiSetNumber) !Argument variables - INTEGER(INTG), INTENT(IN) :: userNumber !Returns the number of local nodes in a basis identified by a user number. - SUBROUTINE cmfe_Basis_NumberOfLocalNodesGetNumber(userNumber,numberOfLocalNodes,err) + SUBROUTINE cmfe_Basis_NumberOfLocalNodesGetNumber(contextUserNumber,basisUserNumber,numberOfLocalNodes,err) !DLLEXPORT(cmfe_Basis_NumberOfLocalNodesGetNumber) !Argument variables - INTEGER(INTG), INTENT(IN) :: userNumber !Returns the number of Xi directions in a basis identified by a user number. - SUBROUTINE cmfe_Basis_NumberOfXiGetNumber(userNumber,numberOfXi,err) + SUBROUTINE cmfe_Basis_NumberOfXiGetNumber(contextUserNumber,basisUserNumber,numberOfXi,err) !DLLEXPORT(cmfe_Basis_NumberOfXiGetNumber) !Argument variables - INTEGER(INTG), INTENT(IN) :: userNumber !Sets/changes the number of Xi directions in a basis identified by a user number. - SUBROUTINE cmfe_Basis_NumberOfXiSetNumber(userNumber,numberOfXi,err) + SUBROUTINE cmfe_Basis_NumberOfXiSetNumber(contextUserNumber,basisUserNumber,numberOfXi,err) !DLLEXPORT(cmfe_Basis_NumberOfXiSetNumber) !Argument variables - INTEGER(INTG), INTENT(IN) :: userNumber !Returns the number of Gauss points in each Xi directions for a basis quadrature identified by a user number. - SUBROUTINE cmfe_Basis_QuadratureNumberOfGaussXiGetNumber(userNumber,numberOfGaussXi,err) + SUBROUTINE cmfe_Basis_QuadratureNumberOfGaussXiGetNumber(contextUserNumber,basisUserNumber,numberOfGaussXi,err) !DLLEXPORT(cmfe_Basis_QuadratureNumberOfGaussXiGetNumber) !Argument variables - INTEGER(INTG), INTENT(IN) :: userNumber !Sets/changes the number of Gauss points in each Xi directions for a basis quadrature identified by a user number. - SUBROUTINE cmfe_Basis_QuadratureNumberOfGaussXiSetNumber(userNumber,numberOfGaussXi,err) + SUBROUTINE cmfe_Basis_QuadratureNumberOfGaussXiSetNumber(contextUserNumber,basisUserNumber,numberOfGaussXi,err) !DLLEXPORT(cmfe_Basis_QuadratureNumberOfGaussXiSetNumber) !Argument variables - INTEGER(INTG), INTENT(IN) :: userNumber !Returns the xi position of a Gauss point on a basis quadrature identified by a user number. - SUBROUTINE cmfe_Basis_QuadratureSingleGaussXiGetNumber(userNumber,quadratureScheme,gaussPoint,gaussXi,err) + SUBROUTINE cmfe_Basis_QuadratureSingleGaussXiGetNumber(contextUserNumber,basisUserNumber,quadratureScheme,gaussPoint,gaussXi,err) !DLLEXPORT(cmfe_Basis_QuadratureSingleGaussXiGetNumber) !Argument variables - INTEGER(INTG), INTENT(IN) :: userNumber !Returns the xi positions of Gauss points on a basis quadrature identified by a user number. - SUBROUTINE cmfe_Basis_QuadratureMultipleGaussXiGetNumber(userNumber,quadratureScheme,gaussPoints,gaussXi,err) + SUBROUTINE cmfe_Basis_QuadratureMultipleGaussXiGetNumber(contextUserNumber,basisUserNumber,quadratureScheme,gaussPoints,gaussXi, & + & err) !DLLEXPORT(cmfe_Basis_QuadratureMultipleGaussXiGetNumber) !Argument variables - INTEGER(INTG), INTENT(IN) :: userNumber !Returns the order of quadrature a basis quadrature identified by a user number. - SUBROUTINE cmfe_Basis_QuadratureOrderGetNumber(userNumber,quadratureOrder,err) + SUBROUTINE cmfe_Basis_QuadratureOrderGetNumber(contextUserNumber,basisUserNumber,quadratureOrder,err) !DLLEXPORT(cmfe_Basis_QuadratureOrderGetNumber) !Argument variables - INTEGER(INTG), INTENT(IN) :: userNumber !Sets/changes the order of quadrature a basis quadrature identified by a user number. - SUBROUTINE cmfe_Basis_QuadratureOrderSetNumber(userNumber,quadratureOrder,err) + SUBROUTINE cmfe_Basis_QuadratureOrderSetNumber(contextUserNumber,basisUserNumber,quadratureOrder,err) !DLLEXPORT(cmfe_Basis_QuadratureOrderSetNumber) !Argument variables - INTEGER(INTG), INTENT(IN) :: userNumber !Returns the type of quadrature a basis quadrature identified by a user number. - SUBROUTINE cmfe_Basis_QuadratureTypeGetNumber(userNumber,quadratureType,err) + SUBROUTINE cmfe_Basis_QuadratureTypeGetNumber(contextUserNumber,basisUserNumber,quadratureType,err) !DLLEXPORT(cmfe_Basis_QuadratureTypeGetNumber) !Argument variables - INTEGER(INTG), INTENT(IN) :: userNumber !Sets/changes the type of quadrature a basis quadrature identified by a user number. - SUBROUTINE cmfe_Basis_QuadratureTypeSetNumber(userNumber,quadratureType,err) + SUBROUTINE cmfe_Basis_QuadratureTypeSetNumber(contextUserNumber,basisUserNumber,quadratureType,err) !DLLEXPORT(cmfe_Basis_QuadratureTypeSetNumber) !Argument variables - INTEGER(INTG), INTENT(IN) :: userNumber !Sets/changes the local face Gauss scheme calculation, on a basis identified by a user number. - SUBROUTINE cmfe_Basis_QuadratureLocalFaceGaussEvaluateSetNumber(userNumber,faceGaussEvaluate,err) + SUBROUTINE cmfe_Basis_QuadratureLocalFaceGaussEvaluateSetNumber(contextUserNumber,basisUserNumber,faceGaussEvaluate,err) !DLLEXPORT(cmfe_Basis_QuadratureLocalFaceGaussEvaluateSetNumber) !Argument variables - INTEGER(INTG), INTENT(IN) :: userNumber !Returns the type of a basis identified by a user number. - SUBROUTINE cmfe_Basis_TypeGetNumber(userNumber,basisType,err) + SUBROUTINE cmfe_Basis_TypeGetNumber(contextUserNumber,basisUserNumber,basisType,err) !DLLEXPORT(cmfe_Basis_TypeGetNumber) !Argument variables - INTEGER(INTG), INTENT(IN) :: userNumber !Sets/changes the type of a basis identified by a user number. - SUBROUTINE cmfe_Basis_TypeSetNumber(userNumber,basisType,err) + SUBROUTINE cmfe_Basis_TypeSetNumber(contextUserNumber,basisUserNumber,basisType,err) !DLLEXPORT(cmfe_Basis_TypeSetNumber) !Argument variables - INTEGER(INTG), INTENT(IN) :: userNumber !Destroys the boundary conditions for solver equations identified by a control loop identifier. - SUBROUTINE cmfe_BoundaryConditions_DestroyNumber0(problemUserNumber,controlLoopIdentifier,solverIndex,err) + SUBROUTINE cmfe_BoundaryConditions_DestroyNumber0(contextUserNumber,problemUserNumber,controlLoopIdentifier,solverIndex,err) !DLLEXPORT(cmfe_BoundaryConditions_DestroyNumber0) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Destroys the boundary conditions for solver equations identified by a control loop identifier. - SUBROUTINE cmfe_BoundaryConditions_DestroyNumber1(problemUserNumber,controlLoopIdentifiers,solverIndex,err) + SUBROUTINE cmfe_BoundaryConditions_DestroyNumber1(contextUserNumber,problemUserNumber,controlLoopIdentifiers,solverIndex,err) !DLLEXPORT(cmfe_BoundaryConditions_DestroyNumber1) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Adds to the value of the specified constant and sets this as a boundary condition on the specified constant for boundary conditions identified by a user number. - SUBROUTINE cmfe_BoundaryConditions_AddConstantNumber(regionUserNumber,problemUserNumber,controlLoopIdentifiers,solverIndex, & - & fieldUserNumber,variableType,componentNumber,condition,value,err) + SUBROUTINE cmfe_BoundaryConditions_AddConstantNumber(contextUserNumber,problemUserNumber,controlLoopIdentifiers,solverIndex, & + & regionUserNumber,fieldUserNumber,variableType,componentNumber,condition,value,err) !DLLEXPORT(cmfe_BoundaryConditions_AddConstantNumber) !Argument variables - INTEGER(INTG), INTENT(IN) :: regionUserNumber !Sets the value of the specified constant as a boundary condition on the specified constant for boundary conditions identified by a user number. - SUBROUTINE cmfe_BoundaryConditions_SetConstantNumber(regionUserNumber,problemUserNumber,controlLoopIdentifiers,solverIndex, & - & variableType,fieldUserNumber,componentNumber,condition,value,err) + SUBROUTINE cmfe_BoundaryConditions_SetConstantNumber(contextUserNumber,problemUserNumber, & + & controlLoopIdentifiers,solverIndex,regionUserNumber,fieldUserNumber,variableType,componentNumber,condition,value,err) !DLLEXPORT(cmfe_BoundaryConditions_SetConstantNumber) !Argument variables - INTEGER(INTG), INTENT(IN) :: regionUserNumber !Adds the value to the specified element and sets this as a boundary condition on the specified element for boundary conditions identified by a user number. - SUBROUTINE cmfe_BoundaryConditions_AddElementNumber(regionUserNumber,problemUserNumber,controlLoopIdentifiers,solverIndex, & - & fieldUserNumber,variableType,elementUserNumber,componentNumber,condition,value,err) + SUBROUTINE cmfe_BoundaryConditions_AddElementNumber(contextUserNumber,problemUserNumber,controlLoopIdentifiers,solverIndex, & + & regionUserNumber,fieldUserNumber,variableType,elementUserNumber,componentNumber,condition,value,err) !DLLEXPORT(cmfe_BoundaryConditions_AddElementNumber) !Argument variables - INTEGER(INTG), INTENT(IN) :: regionUserNumber !Sets the value of the specified element as a boundary condition on the specified element for boundary conditions identified by a user number. - SUBROUTINE cmfe_BoundaryConditions_SetElementNumber(regionUserNumber,problemUserNumber,controlLoopIdentifiers,solverIndex, & - & fieldUserNumber,variableType,elementUserNumber,componentNumber,condition,value,err) + SUBROUTINE cmfe_BoundaryConditions_SetElementNumber(contextUserNumber,problemUserNumber,controlLoopIdentifiers,solverIndex, & + & regionUserNumber,fieldUserNumber,variableType,elementUserNumber,componentNumber,condition,value,err) !DLLEXPORT(cmfe_BoundaryConditions_SetElementNumber) !Argument variables - INTEGER(INTG), INTENT(IN) :: regionUserNumber !Adds the value to the specified node and sets this as a boundary condition on the specified node for boundary conditions identified by a user number. - SUBROUTINE cmfe_BoundaryConditions_AddNodeNumber(regionUserNumber,problemUserNumber,controlLoopIdentifiers,solverIndex, & - & fieldUserNumber,variableType,versionNumber,derivativeNumber,nodeUserNumber,componentNumber,condition,value,err) + SUBROUTINE cmfe_BoundaryConditions_AddNodeNumber(contextUserNumber,problemUserNumber,controlLoopIdentifiers,solverIndex, & + & regionUserNumber,fieldUserNumber,variableType,versionNumber,derivativeNumber,nodeUserNumber,componentNumber,condition, & + & value,err) !DLLEXPORT(cmfe_BoundaryConditions_AddNodeNumber) !Argument variables - INTEGER(INTG), INTENT(IN) :: regionUserNumber !Sets the value of the specified node as a boundary condition on the specified node for boundary conditions identified by a user number. - SUBROUTINE cmfe_BoundaryConditions_SetNodeNumber0(regionUserNumber,problemUserNumber,controlLoopIdentifier,solverIndex, & - & fieldUserNumber,variableType,versionNumber,derivativeNumber,nodeUserNumber,componentNumber,condition,value,err) + SUBROUTINE cmfe_BoundaryConditions_SetNodeNumber0(contextUserNumber,problemUserNumber,controlLoopIdentifier,solverIndex, & + & regionUserNumber,fieldUserNumber,variableType,versionNumber,derivativeNumber,nodeUserNumber,componentNumber,condition, & + & value,err) !DLLEXPORT(cmfe_BoundaryConditions_SetNodeNumber0) !Argument variables - INTEGER(INTG), INTENT(IN) :: regionUserNumber !Sets the value of the specified node as a boundary condition on the specified node for boundary conditions identified by a user number. - SUBROUTINE cmfe_BoundaryConditions_SetNodeNumber1(regionUserNumber,problemUserNumber,controlLoopIdentifiers,solverIndex, & - & fieldUserNumber,variableType,versionNumber,derivativeNumber,nodeUserNumber,componentNumber,condition,value,err) + SUBROUTINE cmfe_BoundaryConditions_SetNodeNumber1(contextUserNumber,problemUserNumber,controlLoopIdentifiers,solverIndex, & + & regionUserNumber,fieldUserNumber,variableType,versionNumber,derivativeNumber,nodeUserNumber,componentNumber,condition, & + & value,err) !DLLEXPORT(cmfe_BoundaryConditions_SetNodeNumber1) !Argument variables - INTEGER(INTG), INTENT(IN) :: regionUserNumber !Sets the Neumann integration matrix sparsity for boundary conditions identified by a control loop identifier. - SUBROUTINE cmfe_BoundaryConditions_NeumannSparsityTypeSetNumber0( & - & problemUserNumber,controlLoopIdentifier,solverIndex,sparsityType,err) + SUBROUTINE cmfe_BoundaryConditions_NeumannSparsityTypeSetNumber0(contextUserNumber,problemUserNumber,controlLoopIdentifier, & + & solverIndex,sparsityType,err) !DLLEXPORT(cmfe_BoundaryConditions_NeumannSparsityTypeSetNumber0) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets the Neumann integration matrix sparsity for boundary conditions identified by a control loop identifier. - SUBROUTINE cmfe_BoundaryConditions_NeumannSparsityTypeSetNumber1( & - & problemUserNumber,controlLoopIdentifiers,solverIndex,sparsityType,err) + SUBROUTINE cmfe_BoundaryConditions_NeumannSparsityTypeSetNumber1(contextUserNumber,problemUserNumber,controlLoopIdentifiers, & + & solverIndex,sparsityType,err) !DLLEXPORT(cmfe_BoundaryConditions_NeumannSparsityTypeSetNumber1) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Constrain multiple nodal equations dependent field DOFs to be a single solver DOF in the solver equations - SUBROUTINE cmfe_BoundaryConditions_ConstrainNodeDofsEqualNumber(regionUserNumber,problemUserNumber,controlLoopIdentifier, & - & solverIndex,fieldUserNumber,fieldVariableType,versionNumber,derivativeNumber,component,nodes,coefficient,err) + SUBROUTINE cmfe_BoundaryConditions_ConstrainNodeDofsEqualNumber(contextUserNumber,problemUserNumber,controlLoopIdentifier, & + & solverIndex,regionUserNumber,fieldUserNumber,fieldVariableType,versionNumber,derivativeNumber,component,nodes, & + & coefficient,err) !DLLEXPORT(cmfe_BoundaryConditions_ConstrainNodeDofsEqualNumber) !Argument variables - INTEGER(INTG), INTENT(IN) :: regionUserNumber !Constrain multiple nodal equations dependent field DOFs to be a single solver DOF in the solver equations - SUBROUTINE cmfe_BoundaryConditions_ConstrainNodeDofsEqualObj( & - & boundaryConditions,field,fieldVariableType,versionNumber,derivativeNumber,component,nodes,coefficient,err) + SUBROUTINE cmfe_BoundaryConditions_ConstrainNodeDofsEqualObj(boundaryConditions,field,fieldVariableType,versionNumber, & + & derivativeNumber,component,nodes,coefficient,err) !DLLEXPORT(cmfe_BoundaryConditions_ConstrainNodeDofsEqualObj) !Argument variables @@ -13217,132 +13957,6 @@ SUBROUTINE cmfe_ExtractErrorStackVS(errorStack,err) END SUBROUTINE cmfe_ExtractErrorStackVS - ! - !================================================================================================================================ - ! - - !>Returns the random seeds for OpenCMISS - SUBROUTINE cmfe_RandomSeedsGet0(randomSeed,err) - !DLLEXPORT(cmfe_RandomSeedsGet0) - - !Argument variables - INTEGER(INTG), INTENT(OUT) :: randomSeed !Returns the random seeds for OpenCMISS - SUBROUTINE cmfe_RandomSeedsGet1(randomSeeds,err) - !DLLEXPORT(cmfe_RandomSeedsGet1) - - !Argument variables - INTEGER(INTG), INTENT(OUT) :: randomSeeds(:) !Returns the size of the random seeds array for OpenCMISS - SUBROUTINE cmfe_RandomSeedsSizeGet(randomSeedsSize,err) - !DLLEXPORT(cmfe_RandomSeedsSizeGet) - - !Argument variables - INTEGER(INTG), INTENT(OUT) :: randomSeedsSize !Sets the random seeds for OpenCMISS - SUBROUTINE cmfe_RandomSeedsSet0(randomSeed,err) - !DLLEXPORT(cmfe_RandomSeedsSet0) - - !Argument variables - INTEGER(INTG), INTENT(IN) :: randomSeed !Sets the random seeds for OpenCMISS - SUBROUTINE cmfe_RandomSeedsSet1(randomSeeds,err) - !DLLEXPORT(cmfe_RandomSeedsSet1) - - !Argument variables - INTEGER(INTG), INTENT(IN) :: randomSeeds(:) !Sets a CellML model variable to be known by user number. - SUBROUTINE cmfe_CellML_VariableSetAsKnownNumberC(regionUserNumber,cellMLUserNumber,cellMLModelUserNumber,variableID,err) + SUBROUTINE cmfe_CellML_VariableSetAsKnownNumberC(contextUserNumber,regionUserNumber,cellMLUserNumber,cellMLModelUserNumber, & + & variableID,err) !DLLEXPORT(cmfe_CellML_VariableSetAsKnownNumberC) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets a CellML model variable to be known by user number. - SUBROUTINE cmfe_CellML_VariableSetAsKnownNumberVS(regionUserNumber,cellMLUserNumber,cellMLModelUserNumber,variableID,err) + SUBROUTINE cmfe_CellML_VariableSetAsKnownNumberVS(contextUserNumber,regionUserNumber,cellMLUserNumber,cellMLModelUserNumber, & + & variableID,err) !DLLEXPORT(cmfe_CellML_VariableSetAsKnownNumberVS) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets a CellML model variable to be wanted by user number. - SUBROUTINE cmfe_CellML_VariableSetAsWantedNumberC(regionUserNumber,cellMLUserNumber,cellMLModelUserNumber,variableID,err) + SUBROUTINE cmfe_CellML_VariableSetAsWantedNumberC(contextUserNumber,regionUserNumber,cellMLUserNumber,cellMLModelUserNumber, & + & variableID,err) !DLLEXPORT(cmfe_CellML_VariableSetAsWantedNumberC) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets a CellML model variable to be wanted by user number. - SUBROUTINE cmfe_CellML_VariableSetAsWantedNumberVS(regionUserNumber,cellMLUserNumber,cellMLModelUserNumber,variableID,err) + SUBROUTINE cmfe_CellML_VariableSetAsWantedNumberVS(contextUserNumber,regionUserNumber,cellMLUserNumber,cellMLModelUserNumber, & + & variableID,err) !DLLEXPORT(cmfe_CellML_VariableSetAsWantedNumberVS) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Defines a CellML model variable to field variable component map by user number - SUBROUTINE cmfe_CellML_CreateCellMLToFieldMapNumberC(regionUserNumber,cellMLUserNumber,cellMLModelUserNumber,variableID, & - & cellMLParameterSet,fieldUserNumber,variableType,componentNumber,fieldParameterSet,err) + SUBROUTINE cmfe_CellML_CreateCellMLToFieldMapNumberC(contextUserNumber,regionUserNumber,cellMLUserNumber,cellMLModelUserNumber, & + & variableID,cellMLParameterSet,fieldUserNumber,variableType,componentNumber,fieldParameterSet,err) !DLLEXPORT(cmfe_CellML_CreateCellMLToFieldMapNumberC) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Defines a CellML model variable to field variable component map by user number - SUBROUTINE cmfe_CellML_CreateCellMLToFieldMapNumberVS(regionUserNumber,cellMLUserNumber,cellMLModelUserNumber,variableID, & - & cellMLParameterSet,fieldUserNumber,variableType,componentNumber,fieldParameterSet,err) + SUBROUTINE cmfe_CellML_CreateCellMLToFieldMapNumberVS(contextUserNumber,regionUserNumber,cellMLUserNumber,cellMLModelUserNumber, & + & variableID,cellMLParameterSet,fieldUserNumber,variableType,componentNumber,fieldParameterSet,err) !DLLEXPORT(cmfe_CellML_CreateCellMLToFieldMapNumberVS) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Defines a field variable component to CellML model variable map by user number. - SUBROUTINE cmfe_CellML_CreateFieldToCellMLMapNumberC(regionUserNumber,cellMLUserNumber,fieldUserNumber,variableType, & - & componentNumber,fieldParameterSet,cellMLModelUserNumber,variableID,cellMLParameterSet,err) + SUBROUTINE cmfe_CellML_CreateFieldToCellMLMapNumberC(contextUserNumber,regionUserNumber,cellMLUserNumber,fieldUserNumber, & + & variableType,componentNumber,fieldParameterSet,cellMLModelUserNumber,variableID,cellMLParameterSet,err) !DLLEXPORT(cmfe_CellML_CreateFieldToCellMLMapNumberC) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Defines a field variable component to CellML model variable map by user number - SUBROUTINE cmfe_CellML_CreateFieldToCellMLMapNumberVS(regionUserNumber,cellMLUserNumber,fieldUserNumber,variableType, & - & fieldParameterSet,componentNumber,cellMLModelUserNumber,variableID,cellMLParameterSet,err) + SUBROUTINE cmfe_CellML_CreateFieldToCellMLMapNumberVS(contextUserNumber,regionUserNumber,cellMLUserNumber,fieldUserNumber, & + & variableType,fieldParameterSet,componentNumber,cellMLModelUserNumber,variableID,cellMLParameterSet,err) !DLLEXPORT(cmfe_CellML_CreateFieldToCellMLMapNumberVS) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Finishes the creation of a CellML environment identified by a user number. - SUBROUTINE cmfe_CellML_CreateFinishNumber(regionUserNumber,cellMLUserNumber,err) + SUBROUTINE cmfe_CellML_CreateFinishNumber(contextUserNumber,regionUserNumber,cellMLUserNumber,err) !DLLEXPORT(cmfe_CellML_CreateFinishNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Starts the creation of a CellML environment identified by a user number. - SUBROUTINE cmfe_CellML_CreateStartNumber(cellMLUserNumber,regionUserNumber,err) + SUBROUTINE cmfe_CellML_CreateStartNumber(cellMLUserNumber,contextUserNumber,regionUserNumber,err) !DLLEXPORT(cmfe_CellML_CreateStartNumber) !Argument variables INTEGER(INTG), INTENT(IN) :: cellMLUserNumber !Destroys a CellML environment identified by a user number. - SUBROUTINE cmfe_CellML_DestroyNumber(regionUserNumber,cellMLUserNumber,err) + SUBROUTINE cmfe_CellML_DestroyNumber(contextUserNumber,regionUserNumber,cellMLUserNumber,err) !DLLEXPORT(cmfe_CellML_DestroyNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Finishes the creation of field maps for a CellML environment identified by a user number. - SUBROUTINE cmfe_CellML_FieldMapsCreateFinishNumber(regionUserNumber,cellMLUserNumber,err) + SUBROUTINE cmfe_CellML_FieldMapsCreateFinishNumber(contextUserNumber,regionUserNumber,cellMLUserNumber,err) !DLLEXPORT(cmfe_CellML_FieldMapsCreateFinishNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Starts the creation of field maps for a CellML environment identified by a user number. - SUBROUTINE cmfe_CellML_FieldMapsCreateStartNumber(regionUserNumber,cellMLUserNumber,err) + SUBROUTINE cmfe_CellML_FieldMapsCreateStartNumber(contextUserNumber,regionUserNumber,cellMLUserNumber,err) !DLLEXPORT(cmfe_CellML_FieldMapsCreateStartNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Imports a specified CellML model as specified by a character URI into a CellML environment identified by a user number. - SUBROUTINE cmfe_CellML_ModelImportNumberC(regionUserNumber,cellMLUserNumber,URI,modelIndex,err) + SUBROUTINE cmfe_CellML_ModelImportNumberC(contextUserNumber,regionUserNumber,cellMLUserNumber,URI,modelIndex,err) !DLLEXPORT(cmfe_CellML_ModelImportNumberC) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Imports a specified CellML model as specified by a varying string URI into a CellML environment identified by a user number. - SUBROUTINE cmfe_CellML_ModelImportNumberVS(regionUserNumber,cellMLUserNumber,URI,modelIndex,err) + SUBROUTINE cmfe_CellML_ModelImportNumberVS(contextUserNumber,regionUserNumber,cellMLUserNumber,URI,modelIndex,err) !DLLEXPORT(cmfe_CellML_ModelImportNumberVS) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Finishes the creation of CellML models field for a CellML environment identified by a user number. - SUBROUTINE cmfe_CellML_ModelsFieldCreateFinishNumber(regionUserNumber,cellMLUserNumber,err) + SUBROUTINE cmfe_CellML_ModelsFieldCreateFinishNumber(contextUserNumber,regionUserNumber,cellMLUserNumber,err) !DLLEXPORT(cmfe_CellML_ModelsFieldCreateFinishNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Starts the creation of CellML models field for a CellML environment identified by a user number. - SUBROUTINE cmfe_CellML_ModelsFieldCreateStartNumber(regionUserNumber,cellMLUserNumber,cellMLModelsFieldUserNumber,err) + SUBROUTINE cmfe_CellML_ModelsFieldCreateStartNumber(contextUserNumber,regionUserNumber,cellMLUserNumber, & + & cellMLModelsFieldUserNumber,err) !DLLEXPORT(cmfe_CellML_ModelsFieldCreateStartNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Returns the CellML models field for a CellML environment identified by a user number. - SUBROUTINE cmfe_CellML_ModelsFieldGetNumber(regionUserNumber,cellMLUserNumber,cellMLModelsFieldUserNumber,err) + SUBROUTINE cmfe_CellML_ModelsFieldGetNumber(contextUserNumber,regionUserNumber,cellMLUserNumber,cellMLModelsFieldUserNumber,err) !DLLEXPORT(cmfe_CellML_ModelsFieldGetNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Finishes the creation of CellML state field for a CellML environment identified by a user number. - SUBROUTINE cmfe_CellML_StateFieldCreateFinishNumber(regionUserNumber,cellMLUserNumber,err) + SUBROUTINE cmfe_CellML_StateFieldCreateFinishNumber(contextUserNumber,regionUserNumber,cellMLUserNumber,err) !DLLEXPORT(cmfe_CellML_StateFieldCreateFinishNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Starts the creation of CellML state field for a CellML environment identified by a user number. - SUBROUTINE cmfe_CellML_StateFieldCreateStartNumber(regionUserNumber,cellMLUserNumber,cellMLStateFieldUserNumber,err) + SUBROUTINE cmfe_CellML_StateFieldCreateStartNumber(contextUserNumber,regionUserNumber,cellMLUserNumber, & + & cellMLStateFieldUserNumber,err) !DLLEXPORT(cmfe_CellML_StateFieldCreateStartNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Returns the CellML state field for a CellML environment identified by a user number. - SUBROUTINE cmfe_CellML_StateFieldGetNumber(regionUserNumber,cellMLUserNumber,cellMLStateFieldUserNumber,err) + SUBROUTINE cmfe_CellML_StateFieldGetNumber(contextUserNumber,regionUserNumber,cellMLUserNumber,cellMLStateFieldUserNumber,err) !DLLEXPORT(cmfe_CellML_StateFieldGetNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Returns the field component number that corresponds to a character string VariableID for a CellML environment identified by a user number. - SUBROUTINE cmfe_CellML_FieldComponentGetNumberC(regionUserNumber,cellMLUserNumber,cellMLModelUserNumber,cellMLFieldType,& - & variableID,fieldComponent,err) + SUBROUTINE cmfe_CellML_FieldComponentGetNumberC(contextUserNumber,regionUserNumber,cellMLUserNumber,cellMLModelUserNumber, & + & cellMLFieldType,variableID,fieldComponent,err) !DLLEXPORT(cmfe_CellML_FieldComponentGetNumberC) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Returns the field component number that corresponds to a varying string variable ID for a CellML environment identified by a user number. - SUBROUTINE cmfe_CellML_FieldComponentGetNumberVS(regionUserNumber,cellMLUserNumber,cellMLModelUserNumber,cellMLFieldType,& - & variableID,fieldComponent,err) + SUBROUTINE cmfe_CellML_FieldComponentGetNumberVS(contextUserNumber,regionUserNumber,cellMLUserNumber,cellMLModelUserNumber, & + & cellMLFieldType,variableID,fieldComponent,err) !DLLEXPORT(cmfe_CellML_FieldComponentGetNumberVS) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Finishes the creation of CellML intermediate field for a CellML environment identified by a user number. - SUBROUTINE cmfe_CellML_IntermediateFieldCreateFinishNumber(regionUserNumber,cellMLUserNumber,err) + SUBROUTINE cmfe_CellML_IntermediateFieldCreateFinishNumber(contextUserNumber,regionUserNumber,cellMLUserNumber,err) !DLLEXPORT(cmfe_CellML_IntermediateFieldCreateFinishNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Starts the creation of CellML intermediate field for a CellML environment identified by a user number. - SUBROUTINE cmfe_CellML_IntermediateFieldCreateStartNumber(regionUserNumber,cellMLUserNumber,cellMLIntermediateFieldUserNumber,err) + SUBROUTINE cmfe_CellML_IntermediateFieldCreateStartNumber(contextUserNumber,regionUserNumber,cellMLUserNumber, & + & cellMLIntermediateFieldUserNumber,err) !DLLEXPORT(cmfe_CellML_IntermediateFieldCreateStartNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Start the creation of CellML intermediate field for a CellML environment identified by an object. + SUBROUTINE cmfe_CellML_IntermediateFieldCreateStartObj(cellML,cellMLIntermediateFieldUserNumber,field,err) + !DLLEXPORT(cmfe_CellML_IntermediateFieldCreateStartObj) + + !Argument variables + TYPE(cmfe_CellMLType), INTENT(INOUT) :: cellML !Returns the CellML intermediate field for a CellML environment identified by a user number. + SUBROUTINE cmfe_CellML_IntermediateFieldGetNumber(contextUserNumber,regionUserNumber,cellMLUserNumber, & + & cellMLIntermediateFieldUserNumber,err) + !DLLEXPORT(cmfe_CellML_IntermediateFieldGetNumber) + + !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Returns the CellML intermediate field for a CellML environment identified by an object. + SUBROUTINE cmfe_CellML_IntermediateFieldGetObj(cellML,field,err) + !DLLEXPORT(cmfe_CellML_IntermediateFieldGetObj) + + !Argument variables + TYPE(cmfe_CellMLType), INTENT(INOUT) :: cellML !Finishes the creation of CellML parameters field for a CellML environment identified by a user number. + SUBROUTINE cmfe_CellML_ParametersFieldCreateFinishNumber(contextUserNumber,regionUserNumber,cellMLUserNumber,err) + !DLLEXPORT(cmfe_CellML_ParametersFieldCreateFinishNumber) + + !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Finish the creation of CellML parameters field for a CellML environment identified by an object. + SUBROUTINE cmfe_CellML_ParametersFieldCreateFinishObj(cellML,err) + !DLLEXPORT(cmfe_CellML_ParametersFieldCreateFinishObj) + + !Argument variables + TYPE(cmfe_CellMLType), INTENT(INOUT) :: cellML !Starts the creation of CellML parameters field for a CellML environment identified by a user number. + SUBROUTINE cmfe_CellML_ParametersFieldCreateStartNumber(contextUserNumber,regionUserNumber,cellMLUserNumber, & + & cellMLParametersFieldUserNumber,err) + !DLLEXPORT(cmfe_CellML_ParametersFieldCreateStartNumber) + + !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Start the creation of CellML parameters field for a CellML environment identified by an object. + SUBROUTINE cmfe_CellML_ParametersFieldCreateStartObj(cellML,cellMLParametersFieldUserNumber,field,err) + !DLLEXPORT(cmfe_CellML_ParametersFieldCreateStartObj) + + !Argument variables + TYPE(cmfe_CellMLType), INTENT(INOUT) :: cellML !Returns the CellML parameters field for a CellML environment identified by a user number. + SUBROUTINE cmfe_CellML_ParametersFieldGetNumber(contextUserNumber,regionUserNumber,cellMLUserNumber, & + & cellMLParametersFieldUserNumber,err) + !DLLEXPORT(cmfe_CellML_ParametersFieldGetNumber) + + !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Returns the CellML parameters field for a CellML environment identified by an object. + SUBROUTINE cmfe_CellML_ParametersFieldGetObj(cellML,field,err) + !DLLEXPORT(cmfe_CellML_ParametersFieldGetObj) + + !Argument variables + TYPE(cmfe_CellMLType), INTENT(INOUT) :: cellML !Validiate and instantiate a CellML environment identified by a user number. + SUBROUTINE cmfe_CellML_GenerateNumber(contextUserNumber,regionUserNumber,cellMLUserNumber,err) + !DLLEXPORT(cmfe_CellML_GenerateNumber) + + !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Validiate and instantiate a CellML environment identified by an object. + SUBROUTINE cmfe_CellML_GenerateObj(cellML,err) + !DLLEXPORT(cmfe_CellML_GenerateObj) + + !Argument variables + TYPE(cmfe_CellMLType), INTENT(INOUT) :: cellML !Returns the number of computation nodes in the world communicator identified by user number. + SUBROUTINE cmfe_ComputationEnvironment_NumberOfWorldNodesGetNumber(contextUserNumber,numberOfWorldNodes,err) + !DLLEXPORT(cmfe_ComputationEnvironment_NumberOfWorldNodesGetNumber) + + !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Returns the number of computation nodes in the world communicator identified by object. + SUBROUTINE cmfe_ComputationEnvironment_NumberOfWorldNodesGetObj(computationEnvironment,numberOfWorldNodes,err) + !DLLEXPORT(cmfe_ComputationEnvironment_NumberOfWorldNodesGetObj) + + !Argument variables + TYPE(cmfe_ComputationEnvironmentType), INTENT(IN) :: computationEnvironment !Returns the current world communicator for the computation environment identified by user number. + SUBROUTINE cmfe_ComputationEnvironment_WorldCommunicatorGetNumber(contextUserNumber,worldCommunicator,err) + !DLLEXPORT(cmfe_ComputationEnvironment_WorldCommunicatorGetNumber) + + !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Returns the current world communicator for the computation environment indentified by object. + SUBROUTINE cmfe_ComputationEnvironment_WorldCommunicatorGetObj(computationEnvironment,worldCommunicator,err) + !DLLEXPORT(cmfe_ComputationEnvironment_WorldCommunicatorGetObj) + + !Argument variables + TYPE(cmfe_ComputationEnvironmentType), INTENT(IN) :: computationEnvironment !Returns the computation node number in the world communicator identified by user number. + SUBROUTINE cmfe_ComputationEnvironment_WorldNodeNumberGetNumber(contextUserNumber,worldNodeNumber,err) + !DLLEXPORT(cmfe_ComputationEnvironment_WorldNodeNumberGetNumber) + + !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Returns the computation node number in the world communicator. + SUBROUTINE cmfe_ComputationEnvironment_WorldNodeNumberGetObj(computationEnvironment,worldNodeNumber,err) + !DLLEXPORT(cmfe_ComputationEnvironment_WorldNodeNumberGetObj) + + !Argument variables + TYPE(cmfe_ComputationEnvironmentType), INTENT(IN) :: computationEnvironment !Returns the world work group for the computation environment indentified by user number. + SUBROUTINE cmfe_ComputationEnvironment_WorldWorkGroupGetNumber(contextUserNumber,worldWorkGroupUserNumber,err) + !DLLEXPORT(cmfe_ComputationEnvironment_WorldWorkGroupGetNumber) + + !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Returns the world work group for the computation environment. + SUBROUTINE cmfe_ComputationEnvironment_WorldWorkGroupGetObj(computationEnvironment,worldWorkGroup,err) + !DLLEXPORT(cmfe_ComputationEnvironment_WorldWorkGroupGetObj) + + !Argument variables + TYPE(cmfe_ComputationEnvironmentType), INTENT(IN) :: computationEnvironment !Start the creation of a computation work group specified by number. + SUBROUTINE cmfe_WorkGroup_CreateStartNumber(workGroupUserNumber,contextUserNumber,parentWorkGroupUserNumber,err) + !DLLEXPORT(cmfe_WorkGroup_CreateStartNumber) + + !Argument Variables + INTEGER(INTG), INTENT(IN) :: workGroupUserNumber !Start the creation of a computation work group specified by object under a parent work group + SUBROUTINE cmfe_WorkGroup_CreateStartObj(userNumber,parentWorkGroup,workGroup,err) + !DLLEXPORT(cmfe_WorkGroup_CreateStartObj) + + !Argument Variables + INTEGER(INTG), INTENT(IN) :: userNumber !Finish the creation of a computation work group specified by number. + SUBROUTINE cmfe_WorkGroup_CreateFinishNumber(contextUserNumber,workGroupUserNumber,err) + !DLLEXPORT(cmfe_WorkGroup_CreateFinishNumber) + + !Argument Variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Finish the creation of a computation work group specified by object. + SUBROUTINE cmfe_WorkGroup_CreateFinishObj(workGroup,err) + !DLLEXPORT(cmfe_WorkGroup_CreateFinishObj) + + !Argument Variables + TYPE(cmfe_WorkGroupType), INTENT(INOUT) :: workGroup !Destroy a work group specified by number. + SUBROUTINE cmfe_WorkGroup_DestroyNumber(contextUserNumber,workGroupUserNumber,err) + !DLLEXPORT(cmfe_WorkGroup_DestroyNumber) + + !Argument Variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Destroy a work group specified by object. + SUBROUTINE cmfe_WorkGroup_DestroyObj(workGroup,err) + !DLLEXPORT(cmfe_WorkGroup_DestroyObj) + + !Argument Variables + TYPE(cmfe_WorkGroupType), INTENT(INOUT) :: workGroup !Returns the group communicator for a work group specified by a user number. + SUBROUTINE cmfe_WorkGroup_GroupCommunicatorGetNumber(contextUserNumber,workGroupUserNumber,groupCommunicator,err) + !DLLEXPORT(cmfe_WorkGroup_GroupCommunicatorNumber) + + !Argument Variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Returns the group communicator for a work group specified by an object. + SUBROUTINE cmfe_WorkGroup_GroupCommunicatorGetObj(workGroup,groupCommunicator,err) + !DLLEXPORT(cmfe_WorkGroup_GroupCommunicatorGetObj) + + !Argument Variables + TYPE(cmfe_WorkGroupType), INTENT(INOUT) :: workGroup !Returns the group node number a work group specified by a user number. + SUBROUTINE cmfe_WorkGroup_GroupNodeNumberGetNumber(contextUserNumber,workGroupUserNumber,groupNodeNumber,err) + !DLLEXPORT(cmfe_WorkGroup_GroupNodeNumberGetNumber) + + !Argument Variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Returns the group node number for a work group specified by an object. + SUBROUTINE cmfe_WorkGroup_GroupNodeNumberGetObj(workGroup,groupNodeNumber,err) + !DLLEXPORT(cmfe_WorkGroup_GroupNodeNumberGetObj) + + !Argument Variables + TYPE(cmfe_WorkGroupType), INTENT(INOUT) :: workGroup !Returns the character label a work group specified by a user number. + SUBROUTINE cmfe_WorkGroup_LabelGetCNumber(contextUserNumber,workGroupUserNumber,label,err) + !DLLEXPORT(cmfe_WorkGroup_LabelGetCNumber) + + !Argument Variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Returns the character label for a work group specified by an object. + SUBROUTINE cmfe_WorkGroup_LabelGetCObj(workGroup,label,err) + !DLLEXPORT(cmfe_WorkGroup_LabelGetCObj) + + !Argument Variables + TYPE(cmfe_WorkGroupType), INTENT(INOUT) :: workGroup !Returns the varying string label a work group specified by a user number. + SUBROUTINE cmfe_WorkGroup_LabelGetVSNumber(contextUserNumber,workGroupUserNumber,label,err) + !DLLEXPORT(cmfe_WorkGroup_LabelGetVSNumber) + + !Argument Variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Start the creation of CellML intermediate field for a CellML environment identified by an object. - SUBROUTINE cmfe_CellML_IntermediateFieldCreateStartObj(cellML,cellMLIntermediateFieldUserNumber,field,err) - !DLLEXPORT(cmfe_CellML_IntermediateFieldCreateStartObj) + !>Returns the varying string label for a work group specified by an object. + SUBROUTINE cmfe_WorkGroup_LabelGetVSObj(workGroup,label,err) + !DLLEXPORT(cmfe_WorkGroup_LabelGetVSObj) + + !Argument Variables + TYPE(cmfe_WorkGroupType), INTENT(INOUT) :: workGroup !Sets/changes the character label a work group specified by a user number. + SUBROUTINE cmfe_WorkGroup_LabelSetCNumber(contextUserNumber,workGroupUserNumber,label,err) + !DLLEXPORT(cmfe_WorkGroup_LabelSetCNumber) + + !Argument Variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Returns the CellML intermediate field for a CellML environment identified by a user number. - SUBROUTINE cmfe_CellML_IntermediateFieldGetNumber(regionUserNumber,cellMLUserNumber,cellMLIntermediateFieldUserNumber,err) - !DLLEXPORT(cmfe_CellML_IntermediateFieldGetNumber) + !>Sets/changes the character label for a work group specified by an object. + SUBROUTINE cmfe_WorkGroup_LabelSetCObj(workGroup,label,err) + !DLLEXPORT(cmfe_WorkGroup_LabelSetCObj) + + !Argument Variables + TYPE(cmfe_WorkGroupType), INTENT(INOUT) :: workGroup !Sets/changes the varying string label a work group specified by a user number. + SUBROUTINE cmfe_WorkGroup_LabelSetVSNumber(contextUserNumber,workGroupUserNumber,label,err) + !DLLEXPORT(cmfe_WorkGroup_LabelSetVSNumber) + + !Argument Variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Returns the CellML intermediate field for a CellML environment identified by an object. - SUBROUTINE cmfe_CellML_IntermediateFieldGetObj(cellML,field,err) - !DLLEXPORT(cmfe_CellML_IntermediateFieldGetObj) + !>Sets/changes the varying string label for a work group specified by an object. + SUBROUTINE cmfe_WorkGroup_LabelSetVSObj(workGroup,label,err) + !DLLEXPORT(cmfe_WorkGroup_LabelSetVSObj) + + !Argument Variables + TYPE(cmfe_WorkGroupType), INTENT(INOUT) :: workGroup !Returns the group number of nodes in a work group specified by a user number. + SUBROUTINE cmfe_WorkGroup_NumberOfGroupNodesGetNumber(contextUserNumber,workGroupUserNumber,numberOfGroupNodes,err) + !DLLEXPORT(cmfe_WorkGroup_NumberOfGroupNodesGetNumber) + + !Argument Variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Finishes the creation of CellML parameters field for a CellML environment identified by a user number. - SUBROUTINE cmfe_CellML_ParametersFieldCreateFinishNumber(regionUserNumber,cellMLUserNumber,err) - !DLLEXPORT(cmfe_CellML_ParametersFieldCreateFinishNumber) + !>Returns the group number of nodes for a work group specified by an object. + SUBROUTINE cmfe_WorkGroup_NumberOfGroupNodesGetObj(workGroup,numberOfGroupNodes,err) + !DLLEXPORT(cmfe_WorkGroup_NumberOfGroupNodesGetObj) + + !Argument Variables + TYPE(cmfe_WorkGroupType), INTENT(INOUT) :: workGroup !Sets/Changes the group number of nodes for a work group specified by a user number. + SUBROUTINE cmfe_WorkGroup_NumberOfGroupNodesSetNumber(contextUserNumber,workGroupUserNumber,numberOfGroupNodes,err) + !DLLEXPORT(cmfe_WorkGroup_NumberOfGroupNodesSetNumber) + + !Argument Variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Finish the creation of CellML parameters field for a CellML environment identified by an object. - SUBROUTINE cmfe_CellML_ParametersFieldCreateFinishObj(cellML,err) - !DLLEXPORT(cmfe_CellML_ParametersFieldCreateFinishObj) + !>Sets/Changes the group number of nodes for a work group specified by an object. + SUBROUTINE cmfe_WorkGroup_NumberOfGroupNodesSetObj(workGroup,numberOfGroupNodes,err) + !DLLEXPORT(cmfe_WorkGroup_NumberOfGroupNodesSetObj) + + !Argument Variables + TYPE(cmfe_WorkGroupType), INTENT(INOUT) :: workGroup !Returns the computation environment for an OpenCMISS context given by user number. + SUBROUTINE cmfe_Context_ComputationEnvironmentGetNumber(contextUserNumber,computationEnvironment,err) + !DLLEXPORT(cmfe_Context_ComputationEnvironmentGetNumber) - EXITS("cmfe_CellML_ParametersFieldCreateFinishObj") + !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Starts the creation of CellML parameters field for a CellML environment identified by a user number. - SUBROUTINE cmfe_CellML_ParametersFieldCreateStartNumber(regionUserNumber,cellMLUserNumber,cellMLParametersFieldUserNumber,err) - !DLLEXPORT(cmfe_CellML_ParametersFieldCreateStartNumber) + !>Returns a computation environment object for an OpenCMISS context object. + SUBROUTINE cmfe_Context_ComputationEnvironmentGetObj(context,computationEnvironment,err) + !DLLEXPORT(cmfe_Context_ComputationEnvironmentGetObj) !Argument variables - INTEGER(INTG), INTENT(IN) :: regionUserNumber !Start the creation of CellML parameters field for a CellML environment identified by an object. - SUBROUTINE cmfe_CellML_ParametersFieldCreateStartObj(cellML,cellMLParametersFieldUserNumber,field,err) - !DLLEXPORT(cmfe_CellML_ParametersFieldCreateStartObj) + !>Returns the random seeds for an OpenCMISS context specified by user number. + SUBROUTINE cmfe_Context_RandomSeedsGetNumber0(contextUserNumber,randomSeed,err) + !DLLEXPORT(cmfe_Context_RandomSeedsGetNumber0) !Argument variables - TYPE(cmfe_CellMLType), INTENT(INOUT) :: cellML !Returns the CellML parameters field for a CellML environment identified by a user number. - SUBROUTINE cmfe_CellML_ParametersFieldGetNumber(regionUserNumber,cellMLUserNumber,cellMLParametersFieldUserNumber,err) - !DLLEXPORT(cmfe_CellML_ParametersFieldGetNumber) + !>Returns the random seeds for an OpenCMISS context specified by user number. + SUBROUTINE cmfe_Context_RandomSeedsGetNumber1(contextUserNumber,randomSeeds,err) + !DLLEXPORT(cmfe_RandomSeedsGetNumber1) !Argument variables - INTEGER(INTG), INTENT(IN) :: regionUserNumber !Returns the CellML parameters field for a CellML environment identified by an object. - SUBROUTINE cmfe_CellML_ParametersFieldGetObj(cellML,field,err) - !DLLEXPORT(cmfe_CellML_ParametersFieldGetObj) + !>Returns the random seeds for an OpenCMISS context specified by object. + SUBROUTINE cmfe_Context_RandomSeedsGetObj0(context,randomSeed,err) + !DLLEXPORT(cmfe_Context_RandomSeedsGetObj0) !Argument variables - TYPE(cmfe_CellMLType), INTENT(INOUT) :: cellML !Validiate and instantiate a CellML environment identified by a user number. - SUBROUTINE cmfe_CellML_GenerateNumber(regionUserNumber,cellMLUserNumber,err) - !DLLEXPORT(cmfe_CellML_GenerateNumber) + !>Returns the random seeds for an OpenCMISS context specified by object. + SUBROUTINE cmfe_Context_RandomSeedsGetObj1(context,randomSeeds,err) + !DLLEXPORT(cmfe_RandomSeedsGetObj1) !Argument variables - INTEGER(INTG), INTENT(IN) :: regionUserNumber !Validiate and instantiate a CellML environment identified by an object. - SUBROUTINE cmfe_CellML_GenerateObj(cellML,err) - !DLLEXPORT(cmfe_CellML_GenerateObj) + !>Returns the size of the random seeds array for an OpenCMISS context specified by user number + SUBROUTINE cmfe_Context_RandomSeedsSizeGetNumber(contextUserNumber,randomSeedsSize,err) + !DLLEXPORT(cmfe_Context_RandomSeedsSizeGetNumber) !Argument variables - TYPE(cmfe_CellMLType), INTENT(INOUT) :: cellML !Returns the current world communicator. - SUBROUTINE cmfe_ComputationalWorldCommunicatorGet(worldCommunicator,err) - !DLLEXPORT(cmfe_ComputationalWorldCommunicatorGet) + !>Returns the size of the random seeds array for an OpenCMISS context specified by object + SUBROUTINE cmfe_Context_RandomSeedsSizeGetObj(context,randomSeedsSize,err) + !DLLEXPORT(cmfe_Context_RandomSeedsSizeGetObj) !Argument variables - INTEGER(INTG), INTENT(OUT) :: worldCommunicator !Sets/changes the current world communicator. - SUBROUTINE cmfe_ComputationalWorldCommunicatorSet(worldCommunicator,err) - !DLLEXPORT(cmfe_ComputationalWorldCommunicatorSet) + !>Sets the random seeds for an OpenCMISS context specified by user number. + SUBROUTINE cmfe_Context_RandomSeedsSetNumber0(contextUserNumber,randomSeed,err) + !DLLEXPORT(cmfe_Context_RandomSeedsSetNumber0) !Argument variables - INTEGER(INTG), INTENT(IN) :: worldCommunicator !Returns the computational node number of the running process. - SUBROUTINE cmfe_ComputationalNodeNumberGet(nodeNumber,err) - !DLLEXPORT(cmfe_ComputationalNodeNumberGet) + !>Sets the random seeds for an OpenCMISS context specified by user number + SUBROUTINE cmfe_Context_RandomSeedsSetNumber1(contextUserNumber,randomSeeds,err) + !DLLEXPORT(cmfe_Context_RandomSeedsSetNumber1) !Argument variables - INTEGER(INTG), INTENT(OUT) :: nodeNumber !Returns the number of computational nodes for the running process. - SUBROUTINE cmfe_ComputationalNumberOfNodesGet(numberOfNodes,err) - !DLLEXPORT(cmfe_ComputationalNumberOfNodesGet) + !>Sets the random seeds for an OpenCMISS context specified by object. + SUBROUTINE cmfe_Context_RandomSeedsSetObj0(context,randomSeed,err) + !DLLEXPORT(cmfe_Context_RandomSeedsSetObj0) !Argument variables - INTEGER(INTG), INTENT(OUT) :: numberOfNodes !CREATE THE HIGHEST LEVEL WORK GROUP (DEFAULT: GROUP_WORLD) - SUBROUTINE cmfe_ComputationalWorkGroup_CreateStart(worldWorkGroup, numberComputationalNodes, err) - !DLLEXPORT(cmfe_ComputationalWorkGroup_CreateStart) - !Argument Variables - TYPE(cmfe_ComputationalWorkGroupType), INTENT(INOUT) :: worldWorkGroup - INTEGER(INTG),INTENT(IN) :: numberComputationalNodes - INTEGER(INTG), INTENT(OUT) :: err !Sets the random seeds for an OpenCMISS context specified by object. + SUBROUTINE cmfe_Context_RandomSeedsSetObj1(context,randomSeeds,err) + !DLLEXPORT(cmfe_Context_RandomSeedsSetObj1) + + !Argument variables + TYPE(cmfe_ContextType), INTENT(IN) :: context !GENERATE THE HIERARCHY COMPUTATIONAL ENVIRONMENT BASED ON WORK GROUP TREE - SUBROUTINE cmfe_ComputationalWorkGroup_CreateFinish(worldWorkGroup, err) - !DLLEXPORT(cmfe_ComputationalWorkGroup_CreateFinish) - !Argument Variables - TYPE(cmfe_ComputationalWorkGroupType), INTENT(INOUT) :: worldWorkGroup - INTEGER(INTG), INTENT(OUT) :: err !Returns the world region user number for an OpenCMISS context given by user number. + SUBROUTINE cmfe_Context_WorldRegionGetNumber(contextUserNumber,worldRegionUserNumber,err) + !DLLEXPORT(cmfe_Context_WorldRegionGetNumber) - ENTERS("cmfe_ComputationalWorkGroup_CreateFinish",err,error,*999) + !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !ADD WORK SUB-GROUP TO THE PARENT GROUP BASED ON THE COMPUTATIONAL REQUIREMENTS (CALLED BY THE USER) - SUBROUTINE cmfe_ComputationalWorkGroup_SubgroupAdd(parentWorkGroup, numberComputationalNodes,addedWorkGroup, err) - !DLLEXPORT(cmfe_ComputationalWorkGroup_SubgroupAdd) - !Argument Variables - TYPE(cmfe_ComputationalWorkGroupType), INTENT(INOUT) :: parentWorkGroup - TYPE(cmfe_ComputationalWorkGroupType), INTENT(INOUT) :: addedWorkGroup - INTEGER(INTG),INTENT(IN) :: numberComputationalNodes - INTEGER(INTG), INTENT(OUT) :: err !Returns a world region object for an OpenCMISS context object. + SUBROUTINE cmfe_Context_WorldRegionGetObj(context,worldRegion,err) + !DLLEXPORT(cmfe_Context_WorldRegionGetObj) - ENTERS("cmfe_ComputationalWorkGroup_SubgroupAdd",err,error,*999) + !Argument variables + TYPE(cmfe_ContextType), INTENT(IN) :: context !Set the working group tree in order to performe mesh decomposition - SUBROUTINE cmfe_Decomposition_WorldWorkGroupSet(decomposition, worldWorkGroup, err) - !DLLEXPORT(cmfe_Decomposition_WorldWorkGroupSet) - !Argument Variables - TYPE(cmfe_DecompositionType), INTENT(INOUT) :: decomposition - TYPE(cmfe_ComputationalWorkGroupType),INTENT(IN) :: worldWorkGroup - INTEGER(INTG), INTENT(OUT) :: err !Returns the user number for an OpenCMISS context object. + SUBROUTINE cmfe_Context_UserNumberGet(context,contextUserNumber,err) + !DLLEXPORT(cmfe_Context_UserNumberGet) - ENTERS("cmfe_Decomposition_WorldWorkGroupSet",err,error,*999) + !Argument variables + TYPE(cmfe_ContextType), INTENT(IN) :: context !Gets the current time parameters for a time control loop identified by user numbers. - SUBROUTINE cmfe_ControlLoop_CurrentTimesGetNumber0(problemUserNumber,controlLoopIdentifier,currentTime,timeIncrement,err) + SUBROUTINE cmfe_ControlLoop_CurrentTimesGetNumber0(contextUserNumber,problemUserNumber,controlLoopIdentifier,currentTime, & + & timeIncrement,err) !DLLEXPORT(cmfe_ControlLoop_CurrentTimesGetNumber0) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Gets the current time parameters for a time control loop identified by user numbers. - SUBROUTINE cmfe_ControlLoop_CurrentTimesGetNumber1(problemUserNumber,controlLoopIdentifiers,currentTime,timeIncrement,err) + SUBROUTINE cmfe_ControlLoop_CurrentTimesGetNumber1(contextUserNumber,problemUserNumber,controlLoopIdentifiers,currentTime, & + & timeIncrement,err) !DLLEXPORT(cmfe_ControlLoop_CurrentTimesGetNumber1) !Argument variables - INTEGER(INTG), INTENT(IN) :: problemUserNumber !Destroys a control loop identified by user numbers. - SUBROUTINE cmfe_ControlLoop_DestroyNumber0(problemUserNumber,controlLoopIdentifier,err) + SUBROUTINE cmfe_ControlLoop_DestroyNumber0(contextUserNumber,problemUserNumber,controlLoopIdentifier,err) !DLLEXPORT(cmfe_ControlLoop_DestroyNumber0) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Destroys a control loop identified by user numbers. - SUBROUTINE cmfe_ControlLoop_DestroyNumber1(problemUserNumber,controlLoopIdentifiers,err) + SUBROUTINE cmfe_ControlLoop_DestroyNumber1(contextUserNumber,problemUserNumber,controlLoopIdentifiers,err) !DLLEXPORT(cmfe_ControlLoop_DestroyNumber1) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Returns the specified control loop as indexed by the control loop identifier from the control loop root identified by user numbers. - SUBROUTINE cmfe_ControlLoop_ControlLoopGetNumber00(problemUserNumber,controlLoopRootIdentifier,controlLoopIdentifier, & - & controlLoop,err) + SUBROUTINE cmfe_ControlLoop_ControlLoopGetNumber00(contextUserNumber,problemUserNumber,controlLoopRootIdentifier, & + & controlLoopIdentifier,controlLoop,err) !DLLEXPORT(cmfe_ControlLoop_ControlLoopGetNumber00) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Returns the specified control loop as indexed by the control loop identifier from the control loop root identified by user numbers. - SUBROUTINE cmfe_ControlLoop_ControlLoopGetNumber10(problemUserNumber,controlLoopRootIdentifiers,controlLoopIdentifier, & - & controlLoop,err) + SUBROUTINE cmfe_ControlLoop_ControlLoopGetNumber10(contextUserNumber,problemUserNumber,controlLoopRootIdentifiers, & + & controlLoopIdentifier,controlLoop,err) !DLLEXPORT(cmfe_ControlLoop_ControlLoopGetNumber10) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Returns the specified control loop as indexed by the control loop identifier from the control loop root identified by user numbers. - SUBROUTINE cmfe_ControlLoop_ControlLoopGetNumber01(problemUserNumber,controlLoopRootIdentifier,controlLoopIdentifiers, & - & controlLoop,err) + SUBROUTINE cmfe_ControlLoop_ControlLoopGetNumber01(contextUserNumber,problemUserNumber,controlLoopRootIdentifier, & + & controlLoopIdentifiers,controlLoop,err) !DLLEXPORT(cmfe_ControlLoop_ControlLoopGetNumber01) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Returns the specified control loop as indexed by the control loop identifier from the control loop root identified by user numbers. - SUBROUTINE cmfe_ControlLoop_ControlLoopGetNumber11(problemUserNumber,controlLoopRootIdentifiers,controlLoopIdentifiers, & - & controlLoop,err) + SUBROUTINE cmfe_ControlLoop_ControlLoopGetNumber11(contextUserNumber,problemUserNumber,controlLoopRootIdentifiers, & + & controlLoopIdentifiers,controlLoop,err) !DLLEXPORT(cmfe_ControlLoop_ControlLoopGetNumber11) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the iteration parameters for a fixed control loop identified by user numbers. - SUBROUTINE cmfe_ControlLoop_IterationsSetNumber0(problemUserNumber,controlLoopIdentifier,startIteration,stopIteration, & - & iterationIncrement,err) + SUBROUTINE cmfe_ControlLoop_IterationsSetNumber0(contextUserNumber,problemUserNumber,controlLoopIdentifier,startIteration, & + & stopIteration,iterationIncrement,err) !DLLEXPORT(cmfe_ControlLoop_IterationsSetNumber0) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the iteration parameters for a fixed control loop identified by user numbers. - SUBROUTINE cmfe_ControlLoop_IterationsSetNumber1(problemUserNumber,controlLoopIdentifiers,startIteration,stopIteration, & - & iterationIncrement,err) + SUBROUTINE cmfe_ControlLoop_IterationsSetNumber1(contextUserNumber,problemUserNumber,controlLoopIdentifiers,startIteration, & + & stopIteration,iterationIncrement,err) !DLLEXPORT(cmfe_ControlLoop_IterationsSetNumber1) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Returns the character string label for a control loop identified by an user number. - SUBROUTINE cmfe_ControlLoop_LabelGetCNumber0(problemUserNumber,controlLoopIdentifier,label,err) + SUBROUTINE cmfe_ControlLoop_LabelGetCNumber0(contextUserNumber,problemUserNumber,controlLoopIdentifier,label,err) !DLLEXPORT(cmfe_ControlLoop_LabelGetCNumber0) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Returns the character string label for a control loop identified by an user number. - SUBROUTINE cmfe_ControlLoop_LabelGetCNumber1(problemUserNumber,controlLoopIdentifiers,label,err) + SUBROUTINE cmfe_ControlLoop_LabelGetCNumber1(contextUserNumber,problemUserNumber,controlLoopIdentifiers,label,err) !DLLEXPORT(cmfe_ControlLoop_LabelGetCNumber1) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Returns the varying string label for a control loop identified by an user number. - SUBROUTINE cmfe_ControlLoop_LabelGetVSNumber0(problemUserNumber,controlLoopIdentifier,label,err) + SUBROUTINE cmfe_ControlLoop_LabelGetVSNumber0(contextUserNumber,problemUserNumber,controlLoopIdentifier,label,err) !DLLEXPORT(cmfe_ControlLoop_LabelGetVSNumber0) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Returns the varying string label for a control loop identified by an user number. - SUBROUTINE cmfe_ControlLoop_LabelGetVSNumber1(problemUserNumber,controlLoopIdentifiers,label,err) + SUBROUTINE cmfe_ControlLoop_LabelGetVSNumber1(contextUserNumber,problemUserNumber,controlLoopIdentifiers,label,err) !DLLEXPORT(cmfe_ControlLoop_LabelGetVSNumber1) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the character string label for a control loop identified by an user number. - SUBROUTINE cmfe_ControlLoop_LabelSetCNumber0(problemUserNumber,controlLoopIdentifier,label,err) + SUBROUTINE cmfe_ControlLoop_LabelSetCNumber0(contextUserNumber,problemUserNumber,controlLoopIdentifier,label,err) !DLLEXPORT(cmfe_ControlLoop_LabelSetCNumber0) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the character string label for a control loop identified by an user number. - SUBROUTINE cmfe_ControlLoop_LabelSetCNumber1(problemUserNumber,controlLoopIdentifiers,label,err) + SUBROUTINE cmfe_ControlLoop_LabelSetCNumber1(contextUserNumber,problemUserNumber,controlLoopIdentifiers,label,err) !DLLEXPORT(cmfe_ControlLoop_LabelSetCNumber1) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the varying string label for a control loop identified by an user number. - SUBROUTINE cmfe_ControlLoop_LabelSetVSNumber0(problemUserNumber,controlLoopIdentifier,label,err) + SUBROUTINE cmfe_ControlLoop_LabelSetVSNumber0(contextUserNumber,problemUserNumber,controlLoopIdentifier,label,err) !DLLEXPORT(cmfe_ControlLoop_LabelSetVSNumber0) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the varying string label for a control loop identified by an user number. - SUBROUTINE cmfe_ControlLoop_LabelSetVSNumber1(problemUserNumber,controlLoopIdentifiers,label,err) + SUBROUTINE cmfe_ControlLoop_LabelSetVSNumber1(contextUserNumber,problemUserNumber,controlLoopIdentifiers,label,err) !DLLEXPORT(cmfe_ControlLoop_LabelSetVSNumber1) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the maximum iterations for a while control loop identified by user numbers. - SUBROUTINE cmfe_ControlLoop_MaximumIterationsSetNumber0(problemUserNumber,controlLoopIdentifier,maximumIterations,err) + SUBROUTINE cmfe_ControlLoop_MaximumIterationsSetNumber0(contextUserNumber,problemUserNumber,controlLoopIdentifier, & + & maximumIterations,err) !DLLEXPORT(cmfe_ControlLoop_MaximumIterationsSetNumber0) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the maximum iterations for a while control loop identified by user numbers. - SUBROUTINE cmfe_ControlLoop_MaximumIterationsSetNumber1(problemUserNumber,controlLoopIdentifiers,maximumIterations,err) + SUBROUTINE cmfe_ControlLoop_MaximumIterationsSetNumber1(contextUserNumber,problemUserNumber,controlLoopIdentifiers, & + & maximumIterations,err) !DLLEXPORT(cmfe_ControlLoop_MaximumIterationsSetNumber1) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the maximum iterations for a while control loop identified by user numbers. - SUBROUTINE cmfe_ControlLoop_AbsoluteToleranceSetNumber0(problemUserNumber,controlLoopIdentifier,absoluteTolerance,err) + !>Sets/changes the absolute tolerance for a control loop identified by user numbers. + SUBROUTINE cmfe_ControlLoop_AbsoluteToleranceSetNumber0(contextUserNumber,problemUserNumber,controlLoopIdentifier, & + & absoluteTolerance,err) !DLLEXPORT(cmfe_ControlLoop_AbsoluteToleranceSetNumber0) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the maximum iterations for a while control loop identified by user numbers. - SUBROUTINE cmfe_ControlLoop_AbsoluteToleranceSetNumber1(problemUserNumber,controlLoopIdentifiers,absoluteTolerance,err) + !>Sets/changes the absolute tolerance for a control loop identified by user numbers. + SUBROUTINE cmfe_ControlLoop_AbsoluteToleranceSetNumber1(contextUserNumber,problemUserNumber,controlLoopIdentifiers, & + & absoluteTolerance,err) !DLLEXPORT(cmfe_ControlLoop_AbsoluteToleranceSetNumber1) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the maximum iterations for a while control loop identified by an object. + !>Sets/changes the absolute tolerance for a control loop identified by an object. SUBROUTINE cmfe_ControlLoop_AbsoluteToleranceSetObj(controlLoop,absoluteTolerance,err) !DLLEXPORT(cmfe_ControlLoop_AbsoluteToleranceSetObj) @@ -17003,35 +19050,38 @@ END SUBROUTINE cmfe_ControlLoop_AbsoluteToleranceSetObj ! !>Gets the number of iterations for a time control loop identified by user number. - SUBROUTINE cmfe_ControlLoop_NumberOfIterationsGetNumber0(problemUserNumber,controlLoopIdentifier,numberOfIterations,err) + SUBROUTINE cmfe_ControlLoop_NumberOfIterationsGetNumber0(contextUserNumber,problemUserNumber,controlLoopIdentifier, & + & numberOfIterations,err) !DLLEXPORT(cmfe_ControlLoop_NumberOfIterationsGetNumber0) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Gets the number of iterations for a time control loop identified by user numbers. - SUBROUTINE cmfe_ControlLoop_NumberOfIterationsGetNumber1(problemUserNumber,controlLoopIdentifiers,numberOfIterations,err) + SUBROUTINE cmfe_ControlLoop_NumberOfIterationsGetNumber1(contextUserNumber,problemUserNumber,controlLoopIdentifiers, & + & numberOfIterations,err) !DLLEXPORT(cmfe_ControlLoop_NumberOfIterationsGetNumber1) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets the number of iterations for a time control loop identified by user number. - SUBROUTINE cmfe_ControlLoop_NumberOfIterationsSetNumber0(problemUserNumber,controlLoopIdentifier,numberOfIterations,err) + SUBROUTINE cmfe_ControlLoop_NumberOfIterationsSetNumber0(contextUserNumber,problemUserNumber,controlLoopIdentifier, & + & numberOfIterations,err) !DLLEXPORT(cmfe_ControlLoop_NumberOfIterationsSetNumber0) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets the number of iterations for a time control loop identified by user numbers. - SUBROUTINE cmfe_ControlLoop_NumberOfIterationsSetNumber1(problemUserNumber,controlLoopIdentifiers,numberOfIterations,err) + SUBROUTINE cmfe_ControlLoop_NumberOfIterationsSetNumber1(contextUserNumber,problemUserNumber,controlLoopIdentifiers, & + & numberOfIterations,err) !DLLEXPORT(cmfe_ControlLoop_NumberOfIterationsSetNumber1) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Returns the number of sub-control loops for a control loop identified by user numbers. - SUBROUTINE cmfe_ControlLoop_NumberOfSubLoopsGetNumber0(problemUserNumber,controlLoopIdentifier,numberOfSubLoops,err) + SUBROUTINE cmfe_ControlLoop_NumberOfSubLoopsGetNumber0(contextUserNumber,problemUserNumber,controlLoopIdentifier, & + & numberOfSubLoops,err) !DLLEXPORT(cmfe_ControlLoop_NumberOfSubLoopsGetNumber0) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Returns the number of sub-control loops for a control loop identified by user numbers. - SUBROUTINE cmfe_ControlLoop_NumberOfSubLoopsGetNumber1(problemUserNumber,controlLoopIdentifiers,numberOfSubLoops,err) + SUBROUTINE cmfe_ControlLoop_NumberOfSubLoopsGetNumber1(contextUserNumber,problemUserNumber,controlLoopIdentifiers, & + & numberOfSubLoops,err) !DLLEXPORT(cmfe_ControlLoop_NumberOfSubLoopsGetNumber1) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the number of sub-control loops for a control loop identified by user numbers. \todo is this really public??? - SUBROUTINE cmfe_ControlLoop_NumberOfSubLoopsSetNumber0(problemUserNumber,controlLoopIdentifier,numberOfSubLoops,err) + SUBROUTINE cmfe_ControlLoop_NumberOfSubLoopsSetNumber0(contextUserNumber,problemUserNumber,controlLoopIdentifier, & + & numberOfSubLoops,err) !DLLEXPORT(cmfe_ControlLoop_NumberOfSubLoopsSetNumber0) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the number of sub-control loops for a control loop identified by user numbers. \todo is this really public??? - SUBROUTINE cmfe_ControlLoop_NumberOfSubLoopsSetNumber1(problemUserNumber,controlLoopIdentifiers,numberOfSubLoops,err) + SUBROUTINE cmfe_ControlLoop_NumberOfSubLoopsSetNumber1(contextUserNumber,problemUserNumber,controlLoopIdentifiers, & + & numberOfSubLoops,err) !DLLEXPORT(cmfe_ControlLoop_NumberOfSubLoopsSetNumber1) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Returns the output type for a control loop identified by user numbers. - SUBROUTINE cmfe_ControlLoop_OutputTypeGetNumber0(problemUserNumber,controlLoopIdentifier,outputType,err) + SUBROUTINE cmfe_ControlLoop_OutputTypeGetNumber0(contextUserNumber,problemUserNumber,controlLoopIdentifier,outputType,err) !DLLEXPORT(cmfe_ControlLoop_OutputTypeGetNumber0) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Returns the output type for a control loop identified by user numbers. - SUBROUTINE cmfe_ControlLoop_OutputTypeGetNumber1(problemUserNumber,controlLoopIdentifiers,outputType,err) + SUBROUTINE cmfe_ControlLoop_OutputTypeGetNumber1(contextUserNumber,problemUserNumber,controlLoopIdentifiers,outputType,err) !DLLEXPORT(cmfe_ControlLoop_OutputTypeGetNumber1) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets the output type for a control loop identified by user numbers. - SUBROUTINE cmfe_ControlLoop_OutputTypeSetNumber0(problemUserNumber,controlLoopIdentifier,outputType,err) + SUBROUTINE cmfe_ControlLoop_OutputTypeSetNumber0(contextUserNumber,problemUserNumber,controlLoopIdentifier,outputType,err) !DLLEXPORT(cmfe_ControlLoop_OutputTypeSetNumber0) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets the output type for a control loop identified by user numbers. - SUBROUTINE cmfe_ControlLoop_OutputTypeSetNumber1(problemUserNumber,controlLoopIdentifiers,outputType,err) + SUBROUTINE cmfe_ControlLoop_OutputTypeSetNumber1(contextUserNumber,problemUserNumber,controlLoopIdentifiers,outputType,err) !DLLEXPORT(cmfe_ControlLoop_OutputTypeSetNumber1) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the output parameters for a time control loop identified by user numbers. - SUBROUTINE cmfe_ControlLoop_TimeOutputSetNumber0(problemUserNumber,controlLoopIdentifier,outputFrequency,err) + SUBROUTINE cmfe_ControlLoop_TimeOutputSetNumber0(contextUserNumber,problemUserNumber,controlLoopIdentifier,outputFrequency,err) !DLLEXPORT(cmfe_ControlLoop_TimeOutputSetNumber0) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the output parameters for a time control loop identified by user numbers. - SUBROUTINE cmfe_ControlLoop_TimeOutputSetNumber1(problemUserNumber,controlLoopIdentifiers,outputFrequency,err) + SUBROUTINE cmfe_ControlLoop_TimeOutputSetNumber1(contextUserNumber,problemUserNumber,controlLoopIdentifiers,outputFrequency,err) !DLLEXPORT(cmfe_ControlLoop_TimeOutputSetNumber1) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the input parameters for a time control loop identified by user numbers. - SUBROUTINE cmfe_ControlLoop_TimeInputSetNumber0(problemUserNumber,controlLoopIdentifier,inputOption,err) + SUBROUTINE cmfe_ControlLoop_TimeInputSetNumber0(contextUserNumber,problemUserNumber,controlLoopIdentifier,inputOption,err) !DLLEXPORT(cmfe_ControlLoop_TimeInputSetNumber0) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the input parameters for a time control loop identified by user numbers. - SUBROUTINE cmfe_ControlLoop_TimeInputSetNumber1(problemUserNumber,controlLoopIdentifiers,inputOption,err) + SUBROUTINE cmfe_ControlLoop_TimeInputSetNumber1(contextUserNumber,problemUserNumber,controlLoopIdentifiers,inputOption,err) !DLLEXPORT(cmfe_ControlLoop_TimeInputSetNumber1) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Returns the time parameters for a time control loop identified by user numbers. - SUBROUTINE cmfe_ControlLoop_TimesGetNumber0(problemUserNumber,controlLoopIdentifier,startTime,stopTime,timeIncrement, & - & currentTime,currentLoopIteration,outputIterationNumber,err) + SUBROUTINE cmfe_ControlLoop_TimesGetNumber0(contextUserNumber,problemUserNumber,controlLoopIdentifier,startTime,stopTime, & + & timeIncrement,currentTime,currentLoopIteration,outputIterationNumber,err) !DLLEXPORT(cmfe_ControlLoop_TimesGetNumber0) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Returns the time parameters for a time control loop identified by user numbers. - SUBROUTINE cmfe_ControlLoop_TimesGetNumber1(problemUserNumber,controlLoopIdentifiers,startTime,stopTime,timeIncrement, & - & currentTime,currentLoopIteration,outputIterationNumber,err) + SUBROUTINE cmfe_ControlLoop_TimesGetNumber1(contextUserNumber,problemUserNumber,controlLoopIdentifiers,startTime,stopTime, & + & timeIncrement,currentTime,currentLoopIteration,outputIterationNumber,err) !DLLEXPORT(cmfe_ControlLoop_TimesGetNumber1) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the time parameters for a time control loop identified by user numbers. - SUBROUTINE cmfe_ControlLoop_TimesSetNumber0(problemUserNumber,controlLoopIdentifier,startTime,stopTime,timeIncrement,err) + SUBROUTINE cmfe_ControlLoop_TimesSetNumber0(contextUserNumber,problemUserNumber,controlLoopIdentifier,startTime,stopTime, & + & timeIncrement,err) !DLLEXPORT(cmfe_ControlLoop_TimesSetNumber0) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the time parameters for a time control loop identified by user numbers. - SUBROUTINE cmfe_ControlLoop_TimesSetNumber1(problemUserNumber,controlLoopIdentifiers,startTime,stopTime,timeIncrement,err) + SUBROUTINE cmfe_ControlLoop_TimesSetNumber1(contextUserNumber,problemUserNumber,controlLoopIdentifiers,startTime,stopTime, & + & timeIncrement,err) !DLLEXPORT(cmfe_ControlLoop_TimesSetNumber1) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the loop type for a control loop identified by user numbers. \todo is this really public??? - SUBROUTINE cmfe_ControlLoop_TypeSetNumber0(problemUserNumber,controlLoopIdentifier,loopType,err) + SUBROUTINE cmfe_ControlLoop_TypeSetNumber0(contextUserNumber,problemUserNumber,controlLoopIdentifier,loopType,err) !DLLEXPORT(cmfe_ControlLoop_TypeSetNumber0) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the loop type for a control loop identified by user numbers. \todo is this really public??? - SUBROUTINE cmfe_ControlLoop_TypeSetNumber1(problemUserNumber,controlLoopIdentifiers,loopType,err) + SUBROUTINE cmfe_ControlLoop_TypeSetNumber1(contextUserNumber,problemUserNumber,controlLoopIdentifiers,loopType,err) !DLLEXPORT(cmfe_ControlLoop_TypeSetNumber1) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Finishes the creation of a coordinate system identified by a user number. - SUBROUTINE cmfe_CoordinateSystem_CreateFinishNumber(coordinateSystemUserNumber,err) + SUBROUTINE cmfe_CoordinateSystem_CreateFinishNumber(contextUserNumber,coordinateSystemUserNumber,err) !DLLEXPORT(cmfe_CoordinateSystem_CreateFinishNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Starts the creation of a coordinate system identified by a user number. - SUBROUTINE cmfe_CoordinateSystem_CreateStartNumber(coordinateSystemUserNumber,err) + SUBROUTINE cmfe_CoordinateSystem_CreateStartNumber(contextUserNumber,coordinateSystemUserNumber,err) !DLLEXPORT(cmfe_CoordinateSystem_CreateStartNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Starts the creation of a coordinate system identified by an object. - SUBROUTINE cmfe_CoordinateSystem_CreateStartObj(coordinateSystemUserNumber,coordinateSystem,err) + SUBROUTINE cmfe_CoordinateSystem_CreateStartObj(coordinateSystemUserNumber,context,coordinateSystem,err) !DLLEXPORT(cmfe_CoordinateSystem_CreateStartObj) !Argument variables INTEGER(INTG), INTENT(IN) :: coordinateSystemUserNumber !Destroys a coordinate system identified by a user number. - SUBROUTINE cmfe_CoordinateSystem_DestroyNumber(coordinateSystemUserNumber,err) + SUBROUTINE cmfe_CoordinateSystem_DestroyNumber(contextUserNumber,coordinateSystemUserNumber,err) !DLLEXPORT(cmfe_CoordinateSystem_DestroyNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Returns the dimension of a coordinate system identified by a user number. - SUBROUTINE cmfe_CoordinateSystem_DimensionGetNumber(coordinateSystemUserNumber,coordinateSystemDimension,err) + SUBROUTINE cmfe_CoordinateSystem_DimensionGetNumber(contextUserNumber,coordinateSystemUserNumber,coordinateSystemDimension,err) !DLLEXPORT(cmfe_CoordinateSystem_DimensionGetNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the dimension of a coordinate system identified by a user number. - SUBROUTINE cmfe_CoordinateSystem_DimensionSetNumber(coordinateSystemUserNumber,coordinateSystemDimension,err) + SUBROUTINE cmfe_CoordinateSystem_DimensionSetNumber(contextUserNumber,coordinateSystemUserNumber,coordinateSystemDimension,err) !DLLEXPORT(cmfe_CoordinateSystem_DimensionSetNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Returns the focus of a coordinate system identified by a user number. - SUBROUTINE cmfe_CoordinateSystem_FocusGetNumber(coordinateSystemUserNumber,focus,err) + SUBROUTINE cmfe_CoordinateSystem_FocusGetNumber(contextUserNumber,coordinateSystemUserNumber,focus,err) !DLLEXPORT(cmfe_CoordinateSystem_FocusGetNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the focus of a coordinate system identified by a user number. - SUBROUTINE cmfe_CoordinateSystem_FocusSetNumber(coordinateSystemUserNumber,focus,err) + SUBROUTINE cmfe_CoordinateSystem_FocusSetNumber(contextUserNumber,coordinateSystemUserNumber,focus,err) !DLLEXPORT(cmfe_CoordinateSystem_FocusSetNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Returns the radial interpolation type of a coordinate system identified by a user number. - SUBROUTINE cmfe_CoordinateSystem_RadialInterpolationGetNumber(coordinateSystemUserNumber,radialInterpolationType,err) + SUBROUTINE cmfe_CoordinateSystem_RadialInterpolationGetNumber(contextUserNumber,coordinateSystemUserNumber, & + & radialInterpolationType,err) !DLLEXPORT(cmfe_CoordinateSystem_RadialInterpolationGetNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the radial interpolation type of a coordinate system identified by a user number. - SUBROUTINE cmfe_CoordinateSystem_RadialInterpolationSetNumber(coordinateSystemUserNumber,radialInterpolationType,err) + SUBROUTINE cmfe_CoordinateSystem_RadialInterpolationSetNumber(contextUserNumber,coordinateSystemUserNumber, & + & radialInterpolationType,err) !DLLEXPORT(cmfe_CoordinateSystem_RadialInterpolationSetNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Returns the type of a coordinate system identified by a user number. - SUBROUTINE cmfe_CoordinateSystem_TypeGetNumber(coordinateSystemUserNumber,coordinateSystemType,err) + SUBROUTINE cmfe_CoordinateSystem_TypeGetNumber(contextUserNumber,coordinateSystemUserNumber,coordinateSystemType,err) !DLLEXPORT(cmfe_CoordinateSystem_TypeGetNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the type of a coordinate system identified by a user number. - SUBROUTINE cmfe_CoordinateSystem_TypeSetNumber(coordinateSystemUserNumber,coordinateSystemType,err) + SUBROUTINE cmfe_CoordinateSystem_TypeSetNumber(contextUserNumber,coordinateSystemUserNumber,coordinateSystemType,err) !DLLEXPORT(cmfe_CoordinateSystem_TypeSetNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Returns the origin of a coordinate system identified by a user number. - SUBROUTINE cmfe_CoordinateSystem_OriginGetNumber(coordinateSystemUserNumber,origin,err) + SUBROUTINE cmfe_CoordinateSystem_OriginGetNumber(contextUserNumber,coordinateSystemUserNumber,origin,err) !DLLEXPORT(cmfe_CoordinateSystem_OriginGetNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the origin of a coordinate system identified by a user number. - SUBROUTINE cmfe_CoordinateSystem_OriginSetNumber(coordinateSystemUserNumber,origin,err) + SUBROUTINE cmfe_CoordinateSystem_OriginSetNumber(contextUserNumber,coordinateSystemUserNumber,origin,err) !DLLEXPORT(cmfe_CoordinateSystem_OriginSetNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Returns the orientation of a coordinate system identified by a user number. - SUBROUTINE cmfe_CoordinateSystem_OrientationGetNumber(coordinateSystemUserNumber,orientation,err) + SUBROUTINE cmfe_CoordinateSystem_OrientationGetNumber(contextUserNumber,coordinateSystemUserNumber,orientation,err) !DLLEXPORT(cmfe_CoordinateSystem_OrientationGetNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the orientation of a coordinate system identified by a user number. - SUBROUTINE cmfe_CoordinateSystem_OrientationSetNumber(coordinateSystemUserNumber,orientation,err) + SUBROUTINE cmfe_CoordinateSystem_OrientationSetNumber(contextUserNumber,coordinateSystemUserNumber,orientation,err) !DLLEXPORT(cmfe_CoordinateSystem_OrientationSetNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Finishes the process of creating data points in a region for data points identified by user number. - SUBROUTINE cmfe_DataPoints_CreateFinishNumber(regionUserNumber,dataPointsUserNumber,err) + SUBROUTINE cmfe_DataPoints_CreateFinishNumber(contextUserNumber,regionUserNumber,dataPointsUserNumber,err) !DLLEXPORT(cmfe_DataPoints_CreateFinishNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Starts the process of creating data points in a region for data points identified by user number. - SUBROUTINE cmfe_DataPoints_CreateStartNumber(dataPointsUserNumber,regionUserNumber,numberOfDataPoints,err) + SUBROUTINE cmfe_DataPoints_CreateStartNumber(dataPointsUserNumber,contextUserNumber,regionUserNumber,numberOfDataPoints,err) !DLLEXPORT(cmfe_DataPoints_CreateStartNumber) !Argument variables INTEGER(INTG), INTENT(IN) :: dataPointsUserNumber !Starts the creation of a data points in a region for data points identified by an object. - SUBROUTINE cmfe_DataPoints_CreateStartInterfaceObj(dataPointsUserNumber,INTERFACE,numberOfDataPoints,dataPoints,err) + SUBROUTINE cmfe_DataPoints_CreateStartInterfaceObj(dataPointsUserNumber,interface,numberOfDataPoints,dataPoints,err) !DLLEXPORT(cmfe_DataPoints_CreateStartInterfaceObj) !Argument variables @@ -19045,7 +21361,7 @@ SUBROUTINE cmfe_DataPoints_CreateStartInterfaceObj(dataPointsUserNumber,INTERFAC CALL TAU_STATIC_PHASE_START('dataPoints Create') #endif - CALL DataPoints_CreateStart(dataPointsUserNumber,INTERFACE%INTERFACE,numberOfDataPoints,dataPoints%dataPoints,err,error,*999) + CALL DataPoints_CreateStart(dataPointsUserNumber,interface%interface,numberOfDataPoints,dataPoints%dataPoints,err,error,*999) EXITS("cmfe_DataPoints_CreateStartInterfaceObj") RETURN @@ -19061,22 +21377,29 @@ END SUBROUTINE cmfe_DataPoints_CreateStartInterfaceObj ! !>Destroys the data points in a region for data points identified by user number. - SUBROUTINE cmfe_DataPoints_DestroyNumber(regionUserNumber,dataPointsUserNumber,err) + SUBROUTINE cmfe_DataPoints_DestroyNumber(contextUserNumber,regionUserNumber,dataPointsUserNumber,err) !DLLEXPORT(cmfe_DataPoints_DestroyNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Returns the number of data points - SUBROUTINE cmfe_DataPoints_NumberOfDataPointsGetNumber(regionUserNumber,dataPointsUserNumber,numberOfDataPoints,err) + SUBROUTINE cmfe_DataPoints_NumberOfDataPointsGetNumber(contextUserNumber,regionUserNumber,dataPointsUserNumber, & + & numberOfDataPoints,err) !DLLEXPORT(cmfe_DataPoints_NumberOfDataPointsGetNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Returns the character label for a data point in a set of data points identified by user number. - SUBROUTINE cmfe_DataPoints_LabelGetCNumber(regionUserNumber,dataPointsUserNumber,dataPointUserNumber,label,err) + SUBROUTINE cmfe_DataPoints_LabelGetCNumber(contextUserNumber,regionUserNumber,dataPointsUserNumber,dataPointUserNumber,label,err) !DLLEXPORT(cmfe_DataPoints_LabelGetCNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Returns the varying string label for a data point in a set of data points identified by user number. - SUBROUTINE cmfe_DataPoints_LabelGetVSNumber(regionUserNumber,dataPointsUserNumber,dataPointUserNumber,label,err) + SUBROUTINE cmfe_DataPoints_LabelGetVSNumber(contextUserNumber,regionUserNumber,dataPointsUserNumber,dataPointUserNumber,label,err) !DLLEXPORT(cmfe_DataPoints_LabelGetVSNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the character label for a data point in a set of data points identified by user number. - SUBROUTINE cmfe_DataPoints_LabelSetCNumber(regionUserNumber,dataPointsUserNumber,dataPointUserNumber,label,err) + SUBROUTINE cmfe_DataPoints_LabelSetCNumber(contextUserNumber,regionUserNumber,dataPointsUserNumber,dataPointUserNumber,label,err) !DLLEXPORT(cmfe_DataPoints_LabelSetCNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the varying string label for a data point in a set of data points identified by user number. - SUBROUTINE cmfe_DataPoints_LabelSetVSNumber(regionUserNumber,dataPointsUserNumber,dataPointUserNumber,label,err) + SUBROUTINE cmfe_DataPoints_LabelSetVSNumber(contextUserNumber,regionUserNumber,dataPointsUserNumber,dataPointUserNumber,label,err) !DLLEXPORT(cmfe_DataPoints_LabelSetVSNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Returns the user number for a data point in a set of data points identified by user number. - SUBROUTINE cmfe_DataPoints_UserNumberGetNumber(regionUserNumber,dataPointsUserNumber,dataPointGlobalNumber, & + SUBROUTINE cmfe_DataPoints_UserNumberGetNumber(contextUserNumber,regionUserNumber,dataPointsUserNumber,dataPointGlobalNumber, & & dataPointUserNumber,err) !DLLEXPORT(cmfe_DataPoints_UserNumberGetNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the user number for a data point in a set of data points identified by user number. - SUBROUTINE cmfe_DataPoints_UserNumberSetNumber(regionUserNumber,dataPointsUserNumber,dataPointGlobalNumber, & + SUBROUTINE cmfe_DataPoints_UserNumberSetNumber(contextUserNumber,regionUserNumber,dataPointsUserNumber,dataPointGlobalNumber, & & dataPointUserNumber,err) !DLLEXPORT(cmfe_DataPoints_UserNumberSetNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Returns the position for a data point in a set of data points identified by user number. - SUBROUTINE cmfe_DataPoints_PositionGetNumber(regionUserNumber,dataPointsUserNumber,dataPointUserNumber,dataPointPosition,err) + SUBROUTINE cmfe_DataPoints_PositionGetNumber(contextUserNumber,regionUserNumber,dataPointsUserNumber,dataPointUserNumber, & + & dataPointPosition,err) !DLLEXPORT(cmfe_DataPoints_PositionGetNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the position for a data point in a set of data points identified by user number. - SUBROUTINE cmfe_DataPoints_PositionSetNumber(regionUserNumber,dataPointsUserNumber,dataPointUserNumber,dataPointPosition,err) + SUBROUTINE cmfe_DataPoints_PositionSetNumber(contextUserNumber,regionUserNumber,dataPointsUserNumber,dataPointUserNumber, & + & dataPointPosition,err) !DLLEXPORT(cmfe_DataPoints_PositionSetNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Returns the weights for a data point in a set of data points identified by user number. - SUBROUTINE cmfe_DataPoints_WeightsGetNumber(regionUserNumber,dataPointsUserNumber,dataPointUserNumber,dataPointWeights,err) + SUBROUTINE cmfe_DataPoints_WeightsGetNumber(contextUserNumber,regionUserNumber,dataPointsUserNumber,dataPointUserNumber, & + & dataPointWeights,err) !DLLEXPORT(cmfe_DataPoints_WeightsGetNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the weights for a data point in a set of data points identified by user number. - SUBROUTINE cmfe_DataPoints_WeightsSetNumber(regionUserNumber,dataPointsUserNumber,dataPointUserNumber,dataPointWeights,err) + SUBROUTINE cmfe_DataPoints_WeightsSetNumber(contextUserNumber,regionUserNumber,dataPointsUserNumber,dataPointUserNumber, & + & dataPointWeights,err) !DLLEXPORT(cmfe_DataPoints_WeightsSetNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Returns the absolute tolerance of data projection identified by a region user number. - SUBROUTINE cmfe_DataProjection_AbsoluteToleranceGetNumber(regionUserNumber,dataPointsUserNumber,dataProjectionUserNumber, & - & absoluteTolerance,err) + SUBROUTINE cmfe_DataProjection_AbsoluteToleranceGetNumber(contextUserNumber,regionUserNumber,dataPointsUserNumber, & + & dataProjectionUserNumber,absoluteTolerance,err) !DLLEXPORT(cmfe_DataProjection_AbsoluteToleranceGetNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the absolute tolerance of data projection identified by a region user number. - SUBROUTINE cmfe_DataProjection_AbsoluteToleranceSetNumber(regionUserNumber,dataPointsUserNumber,dataProjectionUserNumber, & - & absoluteTolerance,err) + SUBROUTINE cmfe_DataProjection_AbsoluteToleranceSetNumber(contextUserNumber,regionUserNumber,dataPointsUserNumber, & + & dataProjectionUserNumber,absoluteTolerance,err) !DLLEXPORT(cmfe_DataProjection_AbsoluteToleranceSetNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Finishes the creation of a new data projection identified by a region user number. - SUBROUTINE cmfe_DataProjection_CreateFinishNumber(regionUserNumber,dataPointsUserNumber,dataProjectionUserNumber,err) + SUBROUTINE cmfe_DataProjection_CreateFinishNumber(contextUserNumber,regionUserNumber,dataPointsUserNumber, & + & dataProjectionUserNumber,err) !DLLEXPORT(cmfe_DataProjection_CreateFinishNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Starts the creation of a new data projection for a data projection identified by a region user number. - SUBROUTINE cmfe_DataProjection_CreateStartNumber(regionUserNumber,dataPointsUserNumber,dataProjectionUserNumber, & - & projectionFieldUserNumber,projectionFieldVariableType,err) + SUBROUTINE cmfe_DataProjection_CreateStartNumber(contextUserNumber,regionUserNumber,dataPointsUserNumber, & + & dataProjectionUserNumber,projectionFieldUserNumber,projectionFieldVariableType,err) !DLLEXPORT(cmfe_DataProjection_CreateStartNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Destroys a data projection identified by region user number. - SUBROUTINE cmfe_DataProjection_DestroyNumber(regionUserNumber,dataPointsUserNumber,dataProjectionUserNumber,err) + SUBROUTINE cmfe_DataProjection_DestroyNumber(contextUserNumber,regionUserNumber,dataPointsUserNumber,dataProjectionUserNumber,err) !DLLEXPORT(cmfe_DataProjection_DestroyNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Evaluate the data points position in a field based on data projection in a region, identified by user number - SUBROUTINE cmfe_DataProjection_DataPointsPositionEvaluateRegionNumber(regionUserNumber,dataPointsUserNumber, & + SUBROUTINE cmfe_DataProjection_DataPointsPositionEvaluateRegionNumber(contextUserNumber,regionUserNumber,dataPointsUserNumber, & & dataProjectionUserNumber,fieldUserNumber,fieldVariableType,fieldParameterSetType,err) !DLLEXPORT(cmfe_DataProjection_DataPointsPositionEvaluateRegionNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Evaluate the data points position in a field based on data projection in an interface, identified by user number - SUBROUTINE cmfe_DataProjection_DataPointsPositionEvaluateInterfaceNumber(parentRegionUserNumber,interfaceUserNumber, & - & dataPointsUserNumber,dataProjectionUserNumber,fieldUserNumber,fieldVariableType,fieldParameterSetType,err) + SUBROUTINE cmfe_DataProjection_DataPointsPositionEvaluateInterfaceNumber(contextUserNumber,parentRegionUserNumber, & + & interfaceUserNumber,dataPointsUserNumber,dataProjectionUserNumber,fieldUserNumber,fieldVariableType, & + & fieldParameterSetType,err) !DLLEXPORT(cmfe_DataProjection_DataPointsPositionEvaluateInterfaceNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Cancel the data projection for data points based on a data point user number in a region specified by user number - SUBROUTINE cmfe_DataProjection_ProjectionCancelByDataPointsRegionNumber0(regionUserNumber,dataPointsUserNumber, & - & dataProjectionUserNumber,dataPointUserNumber,err) + SUBROUTINE cmfe_DataProjection_ProjectionCancelByDataPointsRegionNumber0(contextUserNumber,regionUserNumber, & + & dataPointsUserNumber,dataProjectionUserNumber,dataPointUserNumber,err) !DLLEXPORT(cmfe_DataProjection_ProjectionCancelByDataPointsRegionNumber0) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Cancel the data projection for data points based on the projection exit tag in a region specified by user number - SUBROUTINE cmfe_DataProjection_ProjectionCancelByDataPointsRegionNumber1(regionUserNumber,dataPointsUserNumber, & - & dataProjectionUserNumber,dataPointUserNumbers,err) + SUBROUTINE cmfe_DataProjection_ProjectionCancelByDataPointsRegionNumber1(contextUserNumber,regionUserNumber, & + & dataPointsUserNumber,dataProjectionUserNumber,dataPointUserNumbers,err) !DLLEXPORT(cmfe_DataProjection_ProjectionCancelByDataPointsRegionNumber1) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Cancel the data projection for data points based on the projection exit tag in an interface specified by user number - SUBROUTINE cmfe_DataProjection_ProjectionCancelByDataPointsInterNum0(parentRegionUserNumber,interfaceUserNumber, & - & dataPointsUserNumber,dataProjectionUserNumber,dataPointUserNumber,err) + SUBROUTINE cmfe_DataProjection_ProjectionCancelByDataPointsInterNum0(contextUserNumber,parentRegionUserNumber, & + & interfaceUserNumber,dataPointsUserNumber,dataProjectionUserNumber,dataPointUserNumber,err) !DLLEXPORT(cmfe_DataProjection_ProjectionCancelByDataPointsInterNum0) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Cancel the data projection for data points based on the projection exit tag in an interface specified by user number - SUBROUTINE cmfe_DataProjection_ProjectionCancelByDataPointsInterNum1(parentRegionUserNumber,interfaceUserNumber, & - & dataPointsUserNumber,dataProjectionUserNumber,dataPointUserNumbers,err) + SUBROUTINE cmfe_DataProjection_ProjectionCancelByDataPointsInterNum1(contextUserNumber,parentRegionUserNumber, & + & interfaceUserNumber,dataPointsUserNumber,dataProjectionUserNumber,dataPointUserNumbers,err) !DLLEXPORT(cmfe_DataProjection_ProjectionCancelByDataPointsInterNum1) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Cancel the data projection for data points based on the projection distance in a region specified by user number - SUBROUTINE cmfe_DataProjection_ProjectionCancelByDistanceRegionNumber(regionUserNumber,dataPointsUserNumber, & + SUBROUTINE cmfe_DataProjection_ProjectionCancelByDistanceRegionNumber(contextUserNumber,regionUserNumber,dataPointsUserNumber, & & dataProjectionUserNumber,distanceRelation,distance,err) !DLLEXPORT(cmfe_DataProjection_ProjectionCancelByDistanceRegionNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Cancel the data projection for data points based on the projection distance in an interface specified by user number - SUBROUTINE cmfe_DataProjection_ProjectionCancelByDistanceInterfaceNumber(parentRegionUserNumber,interfaceUserNumber, & - & dataPointsUserNumber,dataProjectionUserNumber,distanceRelation,distance,err) + SUBROUTINE cmfe_DataProjection_ProjectionCancelByDistanceInterfaceNumber(contextUserNumber,parentRegionUserNumber, & + & interfaceUserNumber,dataPointsUserNumber,dataProjectionUserNumber,distanceRelation,distance,err) !DLLEXPORT(cmfe_DataProjection_ProjectionCancelByDistanceInterfaceNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Cancel the data projection for data points based on the projection exit tag in a region specified by user number - SUBROUTINE cmfe_DataProjection_ProjectionCancelByExitTagsRegionNumber0(regionUserNumber,dataPointsUserNumber, & - & dataProjectionUserNumber,exitTag,err) + SUBROUTINE cmfe_DataProjection_ProjectionCancelByExitTagsRegionNumber0(contextUserNumber,regionUserNumber, & + & dataPointsUserNumber,dataProjectionUserNumber,exitTag,err) !DLLEXPORT(cmfe_DataProjection_ProjectionCancelByExitTagsRegionNumber0) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Cancel the data projection for data points based on the projection exit tag in a region specified by user number - SUBROUTINE cmfe_DataProjection_ProjectionCancelByExitTagsRegionNumber1(regionUserNumber,dataPointsUserNumber, & + SUBROUTINE cmfe_DataProjection_ProjectionCancelByExitTagsRegionNumber1(contextUserNumber,regionUserNumber,dataPointsUserNumber, & & dataProjectionUserNumber,exitTags,err) !DLLEXPORT(cmfe_DataProjection_ProjectionCancelByExitTagsRegionNumber1) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Cancel the data projection for data points based on the projection exit tag in an interface specified by user number - SUBROUTINE cmfe_DataProjection_ProjectionCancelByExitTagsInterfaceNumber0(parentRegionUserNumber,interfaceUserNumber, & - & dataPointsUserNumber,dataProjectionUserNumber,exitTag,err) + SUBROUTINE cmfe_DataProjection_ProjectionCancelByExitTagsInterfaceNumber0(contextUserNumber,parentRegionUserNumber, & + & interfaceUserNumber,dataPointsUserNumber,dataProjectionUserNumber,exitTag,err) !DLLEXPORT(cmfe_DataProjection_ProjectionCancelByExitTagsInterfaceNumber0) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Cancel the data projection for data points based on the projection exit tag in an interface specified by user number - SUBROUTINE cmfe_DataProjection_ProjectionCancelByExitTagsInterfaceNumber1(parentRegionUserNumber,interfaceUserNumber, & - & dataPointsUserNumber,dataProjectionUserNumber,exitTags,err) + SUBROUTINE cmfe_DataProjection_ProjectionCancelByExitTagsInterfaceNumber1(contextUserNumber,parentRegionUserNumber, & + & interfaceUserNumber,dataPointsUserNumber,dataProjectionUserNumber,exitTags,err) !DLLEXPORT(cmfe_DataProjection_ProjectionCancelByExitTagsInterfaceNumber1) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Set the data projection candidate elements for an all elements projection type in a region specified by user number - SUBROUTINE cmfe_DataProjection_ProjectionCandidateElementsSetRegionNumber(regionUserNumber,dataPointsUserNumber, & - & dataProjectionUserNumber,candidateElementUserNumbers,err) + SUBROUTINE cmfe_DataProjection_ProjectionCandidateElementsSetRegionNumber(contextUserNumber,regionUserNumber, & + & dataPointsUserNumber,dataProjectionUserNumber,candidateElementUserNumbers,err) !DLLEXPORT(cmfe_DataProjection_ProjectionCandidateElementsSetRegionNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !ESet the data projection candidate elements for an all elements projection type in an interface specified by user number - SUBROUTINE cmfe_DataProjection_ProjectionCandidateElementsSetIntNum(parentRegionUserNumber,interfaceUserNumber, & - & dataPointsUserNumber,dataProjectionUserNumber,candidateElementUserNumbers,err) + SUBROUTINE cmfe_DataProjection_ProjectionCandidateElementsSetIntNum(contextUserNumber,parentRegionUserNumber, & + & interfaceUserNumber,dataPointsUserNumber,dataProjectionUserNumber,candidateElementUserNumbers,err) !DLLEXPORT(cmfe_DataProjection_ProjectionCandidateElementsSetIntNum) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Set the data projection candidate element for a data point for an all elements projection type in a region specified by user number - SUBROUTINE cmfe_DataProjection_ProjectionDataCandidateElementsSetRegNum00(regionUserNumber,dataPointsUserNumber, & - & dataProjectionUserNumber,dataPointUserNumber,candidateElementUserNumber,err) + SUBROUTINE cmfe_DataProjection_ProjectionDataCandidateElementsSetRegNum00(contextUserNumber,regionUserNumber, & + & dataPointsUserNumber,dataProjectionUserNumber,dataPointUserNumber,candidateElementUserNumber,err) !DLLEXPORT(cmfe_DataProjection_ProjectionDataCandidateElementsSetRegNum00) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Set the data projection candidate elements for a data point for an all elements projection type in a region specified by user number - SUBROUTINE cmfe_DataProjection_ProjectionDataCandidateElementsSetRegNum01(regionUserNumber,dataPointsUserNumber, & - & dataProjectionUserNumber,dataPointUserNumber,candidateElementUserNumbers,err) + SUBROUTINE cmfe_DataProjection_ProjectionDataCandidateElementsSetRegNum01(contextUserNumber,regionUserNumber, & + & dataPointsUserNumber,dataProjectionUserNumber,dataPointUserNumber,candidateElementUserNumbers,err) !DLLEXPORT(cmfe_DataProjection_ProjectionDataCandidateElementsSetRegNum01) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Set the data projection candidate element for data points for an all elements projection type in a region specified by user number - SUBROUTINE cmfe_DataProjection_ProjectionDataCandidateElementsSetRegNum10(regionUserNumber,dataPointsUserNumber, & - & dataProjectionUserNumber,dataPointUserNumbers,candidateElementUserNumber,err) + SUBROUTINE cmfe_DataProjection_ProjectionDataCandidateElementsSetRegNum10(contextUserNumber,regionUserNumber, & + & dataPointsUserNumber,dataProjectionUserNumber,dataPointUserNumbers,candidateElementUserNumber,err) !DLLEXPORT(cmfe_DataProjection_ProjectionDataCandidateElementsSetRegNum10) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Set the data projection candidate elements for data points for an all elements projection type in a region specified by user number - SUBROUTINE cmfe_DataProjection_ProjectionDataCandidateElementsSetRegNum11(regionUserNumber,dataPointsUserNumber, & - & dataProjectionUserNumber,dataPointUserNumbers,candidateElementUserNumbers,err) + SUBROUTINE cmfe_DataProjection_ProjectionDataCandidateElementsSetRegNum11(contextUserNumber,regionUserNumber, & + & dataPointsUserNumber,dataProjectionUserNumber,dataPointUserNumbers,candidateElementUserNumbers,err) !DLLEXPORT(cmfe_DataProjection_ProjectionDataCandidateElementsSetRegNum11) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Set the data projection candidate element for a data point for an all elements projection type in an interface specified by user number - SUBROUTINE cmfe_DataProjection_ProjectionDataCandidateElementsSetIntNum00(parentRegionUserNumber,interfaceUserNumber, & - & dataPointsUserNumber,dataProjectionUserNumber,dataPointUserNumber,candidateElementUserNumber,err) + SUBROUTINE cmfe_DataProjection_ProjectionDataCandidateElementsSetIntNum00(contextUserNumber,parentRegionUserNumber, & + & interfaceUserNumber,dataPointsUserNumber,dataProjectionUserNumber,dataPointUserNumber,candidateElementUserNumber,err) !DLLEXPORT(cmfe_DataProjection_ProjectionDataCandidateElementsSetIntNum00) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Set the data projection candidate elements for a data point for an all elements projection type in an interface specified by user number - SUBROUTINE cmfe_DataProjection_ProjectionDataCandidateElementsSetIntNum01(parentRegionUserNumber,interfaceUserNumber, & - & dataPointsUserNumber,dataProjectionUserNumber,dataPointUserNumber,candidateElementUserNumbers,err) + SUBROUTINE cmfe_DataProjection_ProjectionDataCandidateElementsSetIntNum01(contextUserNumber,parentRegionUserNumber, & + & interfaceUserNumber,dataPointsUserNumber,dataProjectionUserNumber,dataPointUserNumber,candidateElementUserNumbers,err) !DLLEXPORT(cmfe_DataProjection_ProjectionDataCandidateElementsSetIntNum01) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Set the data projection candidate element for data points for an all elements projection type in an interface specified by user number - SUBROUTINE cmfe_DataProjection_ProjectionDataCandidateElementsSetIntNum10(parentRegionUserNumber,interfaceUserNumber, & - & dataPointsUserNumber,dataProjectionUserNumber,dataPointUserNumbers,candidateElementUserNumber,err) + SUBROUTINE cmfe_DataProjection_ProjectionDataCandidateElementsSetIntNum10(contextUserNumber,parentRegionUserNumber, & + & interfaceUserNumber,dataPointsUserNumber,dataProjectionUserNumber,dataPointUserNumbers,candidateElementUserNumber,err) !DLLEXPORT(cmfe_DataProjection_ProjectionDataCandidateElementsSetIntNum10) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Set the data projection candidate elements for data points for an all elements projection type in an interface specified by user number - SUBROUTINE cmfe_DataProjection_ProjectionDataCandidateElementsSetIntNum11(parentRegionUserNumber,interfaceUserNumber, & - & dataPointsUserNumber,dataProjectionUserNumber,dataPointUserNumbers,candidateElementUserNumbers,err) + SUBROUTINE cmfe_DataProjection_ProjectionDataCandidateElementsSetIntNum11(contextUserNumber,parentRegionUserNumber, & + & interfaceUserNumber,dataPointsUserNumber,dataProjectionUserNumber,dataPointUserNumbers,candidateElementUserNumbers,err) !DLLEXPORT(cmfe_DataProjection_ProjectionDataCandidateElementsSetIntNum11) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Set the data projection candidate faces for a boundary faces projection type in a region specified by user number - SUBROUTINE cmfe_DataProjection_ProjectionCandidateFacesSetRegionNumber(regionUserNumber,dataPointsUserNumber, & + SUBROUTINE cmfe_DataProjection_ProjectionCandidateFacesSetRegionNumber(contextUserNumber,regionUserNumber,dataPointsUserNumber, & & dataProjectionUserNumber,candidateElementUserNumbers,candidateFaceNormals,err) !DLLEXPORT(cmfe_DataProjection_ProjectionCandidateFacesSetRegionNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Set the data projection candidate faces for a boundary faces projection type in an interface specified by user number - SUBROUTINE cmfe_DataProjection_ProjectionCandidateFacesSetInterfaceNumber(parentRegionUserNumber,interfaceUserNumber, & - & dataPointsUserNumber,dataProjectionUserNumber,candidateElementUserNumbers,candidateFaceNormals,err) + SUBROUTINE cmfe_DataProjection_ProjectionCandidateFacesSetInterfaceNumber(contextUserNumber,parentRegionUserNumber, & + & interfaceUserNumber,dataPointsUserNumber,dataProjectionUserNumber,candidateElementUserNumbers,candidateFaceNormals,err) !DLLEXPORT(cmfe_DataProjection_ProjectionCandidateFacesSetInterfaceNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Set the data projection candidate face for a data point in a boundary faces projection type in a region specified by user number - SUBROUTINE cmfe_DataProjection_ProjectionDataCandidateFacesSetRegNum000(regionUserNumber,dataPointsUserNumber, & - & dataProjectionUserNumber,dataPointUserNumber,candidateElementUserNumber,candidateFaceNormal,err) + SUBROUTINE cmfe_DataProjection_ProjectionDataCandidateFacesSetRegNum000(contextUserNumber,regionUserNumber, & + & dataPointsUserNumber,dataProjectionUserNumber,dataPointUserNumber,candidateElementUserNumber,candidateFaceNormal,err) !DLLEXPORT(cmfe_DataProjection_ProjectionCandidateFacesSetRegNum000) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Set the data projection candidate faces for a data point in a boundary faces projection type in a region specified by user number - SUBROUTINE cmfe_DataProjection_ProjectionDataCandidateFacesSetRegNum011(regionUserNumber,dataPointsUserNumber, & - & dataProjectionUserNumber,dataPointUserNumber,candidateElementUserNumbers,candidateFaceNormals,err) + SUBROUTINE cmfe_DataProjection_ProjectionDataCandidateFacesSetRegNum011(contextUserNumber,regionUserNumber, & + & dataPointsUserNumber,dataProjectionUserNumber,dataPointUserNumber,candidateElementUserNumbers,candidateFaceNormals,err) !DLLEXPORT(cmfe_DataProjection_ProjectionCandidateFacesSetRegNum011) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Set the data projection candidate face for data points in a boundary faces projection type in a region specified by user number - SUBROUTINE cmfe_DataProjection_ProjectionDataCandidateFacesSetRegNum100(regionUserNumber,dataPointsUserNumber, & - & dataProjectionUserNumber,dataPointUserNumbers,candidateElementUserNumber,candidateFaceNormal,err) + SUBROUTINE cmfe_DataProjection_ProjectionDataCandidateFacesSetRegNum100(contextUserNumber,regionUserNumber, & + & dataPointsUserNumber,dataProjectionUserNumber,dataPointUserNumbers,candidateElementUserNumber,candidateFaceNormal,err) !DLLEXPORT(cmfe_DataProjection_ProjectionCandidateFacesSetRegNum100) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Set the data projection candidate faces for data points in a boundary faces projection type in a region specified by user number - SUBROUTINE cmfe_DataProjection_ProjectionDataCandidateFacesSetRegNum111(regionUserNumber,dataPointsUserNumber, & - & dataProjectionUserNumber,dataPointUserNumbers,candidateElementUserNumbers,candidateFaceNormals,err) + SUBROUTINE cmfe_DataProjection_ProjectionDataCandidateFacesSetRegNum111(contextUserNumber,regionUserNumber, & + & dataPointsUserNumber,dataProjectionUserNumber,dataPointUserNumbers,candidateElementUserNumbers,candidateFaceNormals,err) !DLLEXPORT(cmfe_DataProjection_ProjectionCandidateFacesSetRegNum111) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Set the data projection candidate face for a data point for a boundary faces projection type in an interface specified by user number - SUBROUTINE cmfe_DataProjection_ProjectionDataCandidateFacesSetIntNum000(parentRegionUserNumber,interfaceUserNumber, & - & dataPointsUserNumber,dataProjectionUserNumber,dataPointUserNumber,candidateElementUserNumber,candidateFaceNormal,err) + SUBROUTINE cmfe_DataProjection_ProjectionDataCandidateFacesSetIntNum000(contextUserNumber,parentRegionUserNumber, & + & interfaceUserNumber,dataPointsUserNumber,dataProjectionUserNumber,dataPointUserNumber,candidateElementUserNumber, & + & candidateFaceNormal,err) !DLLEXPORT(cmfe_DataProjection_ProjectionDataCandidateFacesSetIntNum000) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Set the data projection candidate faces for a data point for a boundary faces projection type in an interface specified by user number - SUBROUTINE cmfe_DataProjection_ProjectionDataCandidateFacesSetIntNum011(parentRegionUserNumber,interfaceUserNumber, & - & dataPointsUserNumber,dataProjectionUserNumber,dataPointUserNumber,candidateElementUserNumbers,candidateFaceNormals,err) + SUBROUTINE cmfe_DataProjection_ProjectionDataCandidateFacesSetIntNum011(contextUserNumber,parentRegionUserNumber, & + & interfaceUserNumber,dataPointsUserNumber,dataProjectionUserNumber,dataPointUserNumber,candidateElementUserNumbers, & + & candidateFaceNormals,err) !DLLEXPORT(cmfe_DataProjection_ProjectionDataCandidateFacesSetIntNum011) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Set the data projection candidate face for data points for a boundary faces projection type in an interface specified by user number - SUBROUTINE cmfe_DataProjection_ProjectionDataCandidateFacesSetIntNum100(parentRegionUserNumber,interfaceUserNumber, & - & dataPointsUserNumber,dataProjectionUserNumber,dataPointUserNumbers,candidateElementUserNumber,candidateFaceNormal,err) + SUBROUTINE cmfe_DataProjection_ProjectionDataCandidateFacesSetIntNum100(contextUserNumber,parentRegionUserNumber, & + & interfaceUserNumber,dataPointsUserNumber,dataProjectionUserNumber,dataPointUserNumbers,candidateElementUserNumber, & + & candidateFaceNormal,err) !DLLEXPORT(cmfe_DataProjection_ProjectionDataCandidateFacesSetIntNum100) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Set the data projection candidate faces for data points for a boundary faces projection type in an interface specified by user number - SUBROUTINE cmfe_DataProjection_ProjectionDataCandidateFacesSetIntNum111(parentRegionUserNumber,interfaceUserNumber, & - & dataPointsUserNumber,dataProjectionUserNumber,dataPointUserNumbers,candidateElementUserNumbers,candidateFaceNormals,err) + SUBROUTINE cmfe_DataProjection_ProjectionDataCandidateFacesSetIntNum111(contextUserNumber,parentRegionUserNumber, & + & interfaceUserNumber,dataPointsUserNumber,dataProjectionUserNumber,dataPointUserNumbers,candidateElementUserNumbers, & + & candidateFaceNormals,err) !DLLEXPORT(cmfe_DataProjection_ProjectionDataCandidateFacesSetIntNum111) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Set the data projection candidate lines for a boundary lines projection type in a region specified by user number - SUBROUTINE cmfe_DataProjection_ProjectionCandidateLinesSetRegionNumber(regionUserNumber,dataPointsUserNumber, & - & dataProjectionUserNumber,candidateElementUserNumbers,candidateLineNormals,err) + SUBROUTINE cmfe_DataProjection_ProjectionCandidateLinesSetRegionNumber(contextUserNumber,regionUserNumber, & + & dataPointsUserNumber,dataProjectionUserNumber,candidateElementUserNumbers,candidateLineNormals,err) !DLLEXPORT(cmfe_DataProjection_ProjectionCandidateLinesSetRegionNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Set the data projection candidate lines for a boundary lines projection type in an interface specified by user number - SUBROUTINE cmfe_DataProjection_ProjectionCandidateLinesSetInterfaceNumber(parentRegionUserNumber,interfaceUserNumber, & - & dataPointsUserNumber,dataProjectionUserNumber,candidateElementUserNumbers,candidateLineNormals,err) + SUBROUTINE cmfe_DataProjection_ProjectionCandidateLinesSetInterfaceNumber(contextUserNumber,parentRegionUserNumber, & + & interfaceUserNumber,dataPointsUserNumber,dataProjectionUserNumber,candidateElementUserNumbers,candidateLineNormals,err) !DLLEXPORT(cmfe_DataProjection_ProjectionCandidateLinesSetInterfaceNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Set the data projection candidate line for a data point for a boundary lines projection type in a region specified by user number - SUBROUTINE cmfe_DataProjection_ProjectionDataCandidateLinesSetRegNum000(regionUserNumber,dataPointsUserNumber, & - & dataProjectionUserNumber,dataPointUserNumber,candidateElementUserNumber,candidateLineNormals,err) + SUBROUTINE cmfe_DataProjection_ProjectionDataCandidateLinesSetRegNum000(contextUserNumber,regionUserNumber, & + & dataPointsUserNumber,dataProjectionUserNumber,dataPointUserNumber,candidateElementUserNumber,candidateLineNormals,err) !DLLEXPORT(cmfe_DataProjection_ProjectionDataCandidateLinesSetRegNum000) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Set the data projection candidate lines for a data point for a boundary lines projection type in a region specified by user number - SUBROUTINE cmfe_DataProjection_ProjectionDataCandidateLinesSetRegNum011(regionUserNumber,dataPointsUserNumber, & - & dataProjectionUserNumber,dataPointUserNumber,candidateElementUserNumbers,candidateLineNormals,err) + SUBROUTINE cmfe_DataProjection_ProjectionDataCandidateLinesSetRegNum011(contextUserNumber,regionUserNumber, & + & dataPointsUserNumber,dataProjectionUserNumber,dataPointUserNumber,candidateElementUserNumbers,candidateLineNormals,err) !DLLEXPORT(cmfe_DataProjection_ProjectionDataCandidateLinesSetRegNum011) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Set the data projection candidate line for data points for a boundary lines projection type in a region specified by user number - SUBROUTINE cmfe_DataProjection_ProjectionDataCandidateLinesSetRegNum100(regionUserNumber,dataPointsUserNumber, & - & dataProjectionUserNumber,dataPointUserNumbers,candidateElementUserNumber,candidateLineNormals,err) + SUBROUTINE cmfe_DataProjection_ProjectionDataCandidateLinesSetRegNum100(contextUserNumber,regionUserNumber, & + & dataPointsUserNumber,dataProjectionUserNumber,dataPointUserNumbers,candidateElementUserNumber,candidateLineNormals,err) !DLLEXPORT(cmfe_DataProjection_ProjectionDataCandidateLinesSetRegNum100) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Set the data projection candidate lines for data points for a boundary lines projection type in a region specified by user number - SUBROUTINE cmfe_DataProjection_ProjectionDataCandidateLinesSetRegNum111(regionUserNumber,dataPointsUserNumber, & - & dataProjectionUserNumber,dataPointUserNumbers,candidateElementUserNumbers,candidateLineNormals,err) + SUBROUTINE cmfe_DataProjection_ProjectionDataCandidateLinesSetRegNum111(contextUserNumber,regionUserNumber, & + & dataPointsUserNumber,dataProjectionUserNumber,dataPointUserNumbers,candidateElementUserNumbers, & + & candidateLineNormals,err) !DLLEXPORT(cmfe_DataProjection_ProjectionDataCandidateLinesSetRegNum111) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Set the data projection candidate line for a data point for a boundary lines projection type in an interface specified by user number - SUBROUTINE cmfe_DataProjection_ProjectionDataCandidateLinesSetIntNum000(parentRegionUserNumber,interfaceUserNumber, & - & dataPointsUserNumber,dataProjectionUserNumber,dataPointUserNumber,candidateElementUserNumber,candidateLineNormals,err) + SUBROUTINE cmfe_DataProjection_ProjectionDataCandidateLinesSetIntNum000(contextUserNumber,parentRegionUserNumber, & + & interfaceUserNumber,dataPointsUserNumber,dataProjectionUserNumber,dataPointUserNumber,candidateElementUserNumber, & + & candidateLineNormals,err) !DLLEXPORT(cmfe_DataProjection_ProjectionDataCandidateLinesSetIntNum000) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Set the data projection candidate lines for a data point for a boundary lines projection type in an interface specified by user number - SUBROUTINE cmfe_DataProjection_ProjectionDataCandidateLinesSetIntNum011(parentRegionUserNumber,interfaceUserNumber, & - & dataPointsUserNumber,dataProjectionUserNumber,dataPointUserNumber,candidateElementUserNumbers,candidateLineNormals,err) + SUBROUTINE cmfe_DataProjection_ProjectionDataCandidateLinesSetIntNum011(contextUserNumber,parentRegionUserNumber, & + & interfaceUserNumber,dataPointsUserNumber,dataProjectionUserNumber,dataPointUserNumber,candidateElementUserNumbers, & + & candidateLineNormals,err) !DLLEXPORT(cmfe_DataProjection_ProjectionDataCandidateLinesSetIntNum011) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Set the data projection candidate line for data points for a boundary lines projection type in an interface specified by user number - SUBROUTINE cmfe_DataProjection_ProjectionDataCandidateLinesSetIntNum100(parentRegionUserNumber,interfaceUserNumber, & - & dataPointsUserNumber,dataProjectionUserNumber,dataPointUserNumbers,candidateElementUserNumber,candidateLineNormals,err) + SUBROUTINE cmfe_DataProjection_ProjectionDataCandidateLinesSetIntNum100(contextUserNumber,parentRegionUserNumber, & + & interfaceUserNumber,dataPointsUserNumber,dataProjectionUserNumber,dataPointUserNumbers,candidateElementUserNumber, & + & candidateLineNormals,err) !DLLEXPORT(cmfe_DataProjection_ProjectionDataCandidateLinesSetIntNum100) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Set the data projection candidate lines for data points for a boundary lines projection type in an interface specified by user number - SUBROUTINE cmfe_DataProjection_ProjectionDataCandidateLinesSetIntNum111(parentRegionUserNumber,interfaceUserNumber, & - & dataPointsUserNumber,dataProjectionUserNumber,dataPointUserNumbers,candidateElementUserNumbers,candidateLineNormals,err) + SUBROUTINE cmfe_DataProjection_ProjectionDataCandidateLinesSetIntNum111(contextUserNumber,parentRegionUserNumber, & + & interfaceUserNumber,dataPointsUserNumber,dataProjectionUserNumber,dataPointUserNumbers,candidateElementUserNumbers, & + & candidateLineNormals,err) !DLLEXPORT(cmfe_DataProjection_ProjectionDataCandidateLinesSetIntNum111) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Evaluate a data projection identified by a region user number. - SUBROUTINE cmfe_DataProjection_DataPointsProjectionEvaluateNumber(regionUserNumber,dataPointsUserNumber, & + SUBROUTINE cmfe_DataProjection_DataPointsProjectionEvaluateNumber(contextUserNumber,regionUserNumber,dataPointsUserNumber, & & dataProjectionUserNumber,projectionFieldSetType,err) !DLLEXPORT(cmfe_DataProjection_DataPointsProjectionEvaluateNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Returns the relative tolerance of data projection identified by a region user number. - SUBROUTINE cmfe_DataProjection_MaximumIterationUpdateGetNumber(regionUserNumber,dataPointsUserNumber,dataProjectionUserNumber, & - & maximumIterationUpdate,err) + SUBROUTINE cmfe_DataProjection_MaximumIterationUpdateGetNumber(contextUserNumber,regionUserNumber,dataPointsUserNumber, & + & dataProjectionUserNumber,maximumIterationUpdate,err) !DLLEXPORT(cmfe_DataProjection_MaximumIterationUpdateGetNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the relative tolerance of data projection identified by a region user number. - SUBROUTINE cmfe_DataProjection_MaximumIterationUpdateSetNumber(regionUserNumber,dataPointsUserNumber,dataProjectionUserNumber, & - & maximumIterationUpdate,err) + SUBROUTINE cmfe_DataProjection_MaximumIterationUpdateSetNumber(contextUserNumber,regionUserNumber,dataPointsUserNumber, & + & dataProjectionUserNumber,maximumIterationUpdate,err) !DLLEXPORT(cmfe_DataProjection_MaximumIterationUpdateSetNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Returns the maximum number of iterations of data projection identified by a region user number. - SUBROUTINE cmfe_DataProjection_MaximumNumberOfIterationsGetNumber(regionUserNumber,dataPointsUserNumber, & + SUBROUTINE cmfe_DataProjection_MaximumNumberOfIterationsGetNumber(contextUserNumber,regionUserNumber,dataPointsUserNumber, & & dataProjectionUserNumber,maximumNumberOfIterations,err) !DLLEXPORT(cmfe_DataProjection_MaximumNumberOfIterationsGetNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Outputs the analysis of data projection results for a data projection identified by user number. - SUBROUTINE cmfe_DataProjection_ResultAnalysisOutputNumber(regionUserNumber,dataPointsUserNumber,dataProjectionUserNumber, & - & filename,err) + SUBROUTINE cmfe_DataProjection_ResultAnalysisOutputNumber(contextUserNumber,regionUserNumber,dataPointsUserNumber, & + & dataProjectionUserNumber,filename,err) !DLLEXPORT(cmfe_DataProjection_ResultAnalysisOutputNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Returns the projection distance for a data point in a set of data points identified by user number. - SUBROUTINE cmfe_DataProjection_ResultDistanceGetNumber(regionUserNumber,dataPointsUserNumber,dataProjectionUserNumber, & - & dataPointUserNumber,projectionDistance,err) + SUBROUTINE cmfe_DataProjection_ResultDistanceGetNumber(contextUserNumber,regionUserNumber,dataPointsUserNumber, & + & dataProjectionUserNumber,dataPointUserNumber,projectionDistance,err) !DLLEXPORT(cmfe_DataProjection_ResultDistanceGetNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Returns the projection element number for a data point in a set of data points identified by user number. - SUBROUTINE cmfe_DataProjection_ResultElementNumberGetNumber(regionUserNumber,dataPointsUserNumber,dataProjectionUserNumber, & - & dataPointUserNumber,projectionElementNumber,err) + SUBROUTINE cmfe_DataProjection_ResultElementNumberGetNumber(contextUserNumber,regionUserNumber,dataPointsUserNumber, & + & dataProjectionUserNumber,dataPointUserNumber,projectionElementNumber,err) !DLLEXPORT(cmfe_DataProjection_ResultElementNumberGetNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Returns the projection element face number for a data point in a set of data points identified by user number. - SUBROUTINE cmfe_DataProjection_ResultElementFaceNumberGetNumber(regionUserNumber,dataPointsUserNumber, & + SUBROUTINE cmfe_DataProjection_ResultElementFaceNumberGetNumber(contextUserNumber,regionUserNumber,dataPointsUserNumber, & & dataProjectionUserNumber,dataPointUserNumber,projectionElementFaceNumber,err) !DLLEXPORT(cmfe_DataProjection_ResultElementFaceNumberGetNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Returns the projection element line number for a data point in a set of data points identified by user number. - SUBROUTINE cmfe_DataProjection_ResultElementLineNumberGetNumber(regionUserNumber,dataPointsUserNumber, & + SUBROUTINE cmfe_DataProjection_ResultElementLineNumberGetNumber(contextUserNumber,regionUserNumber,dataPointsUserNumber, & & dataProjectionUserNumber,dataPointUserNumber,projectionElementLineNumber,err) !DLLEXPORT(cmfe_DataProjection_ResultElementLineNumberGetNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Returns the projection exit tag for a data point in a set of data points identified by user number. - SUBROUTINE cmfe_DataProjection_ResultExitTagGetNumber(regionUserNumber,dataPointsUserNumber,dataProjectionUserNumber, & - & dataPointUserNumber,projectionExitTag,err) + SUBROUTINE cmfe_DataProjection_ResultExitTagGetNumber(contextUserNumber,regionUserNumber,dataPointsUserNumber, & + & dataProjectionUserNumber,dataPointUserNumber,projectionExitTag,err) !DLLEXPORT(cmfe_DataProjection_ResultExitTagGetNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Returns the maximum error for a data projection given by numbers. - SUBROUTINE cmfe_DataProjection_ResultMaximumErrorGetNumber(regionUserNumber,dataPointsUserNumber,dataProjectionUserNumber, & - & maximumDataPointUserNumber,maximumError,err) + SUBROUTINE cmfe_DataProjection_ResultMaximumErrorGetNumber(contextUserNumber,regionUserNumber,dataPointsUserNumber, & + & dataProjectionUserNumber,maximumDataPointUserNumber,maximumError,err) !DLLEXPORT(cmfe_DataProjection_ResultMaximumErrorGetNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Returns the minimum error for a data projection given by numbers. - SUBROUTINE cmfe_DataProjection_ResultMinimumErrorGetNumber(regionUserNumber,dataPointsUserNumber,dataProjectionUserNumber, & - & minimumDataPointUserNumber,minimumError,err) + SUBROUTINE cmfe_DataProjection_ResultMinimumErrorGetNumber(contextUserNumber,regionUserNumber,dataPointsUserNumber, & + & dataProjectionUserNumber,minimumDataPointUserNumber,minimumError,err) !DLLEXPORT(cmfe_DataProjection_ResultMinimumErrorGetNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Returns the RMS error for a data projection given by numbers. - SUBROUTINE cmfe_DataProjection_ResultRMSErrorGetNumber(regionUserNumber,dataPointsUserNumber,dataProjectionUserNumber, & - & rmsError,err) + SUBROUTINE cmfe_DataProjection_ResultRMSErrorGetNumber(contextUserNumber,regionUserNumber,dataPointsUserNumber, & + & dataProjectionUserNumber,rmsError,err) !DLLEXPORT(cmfe_DataProjection_ResultRmsErrorGetNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Returns the projection xi for a data point in a set of data points identified by user number. - SUBROUTINE cmfe_DataProjection_ResultXiGetNumber(regionUserNumber,dataPointsUserNumber,dataProjectionUserNumber, & - & dataPointUserNumber,projectionXi,err) + SUBROUTINE cmfe_DataProjection_ResultXiGetNumber(contextUserNumber,regionUserNumber,dataPointsUserNumber, & + & dataProjectionUserNumber,dataPointUserNumber,projectionXi,err) !DLLEXPORT(cmfe_DataProjection_ResultXiGetNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets the projection xi for a data point in a set of data points identified by user number. - SUBROUTINE cmfe_DataProjection_ResultXiSetNumber(regionUserNumber,dataPointsUserNumber,dataProjectionUserNumber, & - & dataPointUserNumber,projectionXi,err) + SUBROUTINE cmfe_DataProjection_ResultXiSetNumber(contextUserNumber,regionUserNumber,dataPointsUserNumber, & + & dataProjectionUserNumber,dataPointUserNumber,projectionXi,err) !DLLEXPORT(cmfe_DataProjection_ResultXiSetNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Returns the projection vector for a data point in a set of data points identified by user number. - SUBROUTINE cmfe_DataProjection_ResultProjectionVectorGetNumber(regionUserNumber,dataPointsUserNumber,dataProjectionUserNumber, & - & dataPointUserNumber,projectionVector,err) + SUBROUTINE cmfe_DataProjection_ResultProjectionVectorGetNumber(contextUserNumber,regionUserNumber,dataPointsUserNumber, & + & dataProjectionUserNumber,dataPointUserNumber,projectionVector,err) !DLLEXPORT(cmfe_DataProjection_ResultProjectionVectorGetNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the maximum number of iterations of data projection identified by a region user number. - SUBROUTINE cmfe_DataProjection_MaximumNumberOfIterationsSetNumber(regionUserNumber,dataPointsUserNumber, & + SUBROUTINE cmfe_DataProjection_MaximumNumberOfIterationsSetNumber(contextUserNumber,regionUserNumber,dataPointsUserNumber, & & dataProjectionUserNumber,maximumNumberOfIterations,err) !DLLEXPORT(cmfe_DataProjection_MaximumNumberOfIterationsSetNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Returns the number of closest elements of data projection identified by a region user number. - SUBROUTINE cmfe_DataProjection_NumberOfClosestElementsGetNumber(regionUserNumber,dataPointsUserNumber,dataProjectionUserNumber, & - & numberOfClosestElements,err) + SUBROUTINE cmfe_DataProjection_NumberOfClosestElementsGetNumber(contextUserNumber,regionUserNumber,dataPointsUserNumber, & + & dataProjectionUserNumber,numberOfClosestElements,err) !DLLEXPORT(cmfe_DataProjection_NumberOfClosestElementsGetNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the number of closest elements of data projection identified by a region user number. - SUBROUTINE cmfe_DataProjection_NumberOfClosestElementsSetNumber(regionUserNumber,dataPointsUserNumber,dataProjectionUserNumber, & - & numberOfClosestElements,err) + SUBROUTINE cmfe_DataProjection_NumberOfClosestElementsSetNumber(contextUserNumber,regionUserNumber,dataPointsUserNumber, & + & dataProjectionUserNumber,numberOfClosestElements,err) !DLLEXPORT(cmfe_DataProjection_NumberOfClosestElementsSetNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Returns the projection type of data projection identified by a region user number. - SUBROUTINE cmfe_DataProjection_ProjectionTypeGetNumber(regionUserNumber,dataPointsUserNumber,dataProjectionUserNumber, & - & projectionType,err) + SUBROUTINE cmfe_DataProjection_ProjectionTypeGetNumber(contextUserNumber,regionUserNumber,dataPointsUserNumber, & + & dataProjectionUserNumber,projectionType,err) !DLLEXPORT(cmfe_DataProjection_ProjectionTypeGetNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the projection type of data projection identified by a region user number. - SUBROUTINE cmfe_DataProjection_ProjectionTypeSetNumber(regionUserNumber,dataPointsUserNumber,dataProjectionUserNumber, & - & projectionType,err) + SUBROUTINE cmfe_DataProjection_ProjectionTypeSetNumber(contextUserNumber,regionUserNumber,dataPointsUserNumber, & + & dataProjectionUserNumber,projectionType,err) !DLLEXPORT(cmfe_DataProjection_ProjectionTypeSetNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Returns the relative tolerance of data projection identified by a data projection user number and a region user number. - SUBROUTINE cmfe_DataProjection_RelativeToleranceGetNumber(regionUserNumber,dataPointsUserNumber,dataProjectionUserNumber, & - & relativeTolerance,err) + SUBROUTINE cmfe_DataProjection_RelativeToleranceGetNumber(contextUserNumber,regionUserNumber,dataPointsUserNumber, & + & dataProjectionUserNumber,relativeTolerance,err) !DLLEXPORT(cmfe_DataProjection_RelativeToleranceGetNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the relative tolerance of data projection identified by a data projection user number and a region user number. - SUBROUTINE cmfe_DataProjection_RelativeToleranceSetNumber(regionUserNumber,dataPointsUserNumber,dataProjectionUserNumber, & - & relativeTolerance,err) + SUBROUTINE cmfe_DataProjection_RelativeToleranceSetNumber(contextUserNumber,regionUserNumber,dataPointsUserNumber, & + & dataProjectionUserNumber,relativeTolerance,err) !DLLEXPORT(cmfe_DataProjection_RelativeToleranceSetNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Returns the starting xi of data projection identified by a data projection user number and region user number. - SUBROUTINE cmfe_DataProjection_StartingXiGetNumber(regionUserNumber,dataPointsUserNumber,dataProjectionUserNumber,startingXi,err) + SUBROUTINE cmfe_DataProjection_StartingXiGetNumber(contextUserNumber,regionUserNumber,dataPointsUserNumber, & + & dataProjectionUserNumber,startingXi,err) !DLLEXPORT(cmfe_DataProjection_StartingXiGetNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the starting xi of data projection identified by a region user number. - SUBROUTINE cmfe_DataProjection_StartingXiSetNumber(regionUserNumber,dataPointsUserNumber,dataProjectionUserNumber,startingXi,err) + SUBROUTINE cmfe_DataProjection_StartingXiSetNumber(contextUserNumber,regionUserNumber,dataPointsUserNumber, & + & dataProjectionUserNumber,startingXi,err) !DLLEXPORT(cmfe_DataProjection_StartingXiSetNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the starting xi of data projection identified by a region user number. - SUBROUTINE cmfe_DataProjection_ElementSetInterfaceNumber(parentRegionUserNumber,interfaceUserNumber,dataPointsUserNumber, & - & dataProjectionUserNumber,dataPointNumber,elementNumber,err) + SUBROUTINE cmfe_DataProjection_ElementSetInterfaceNumber(contextUserNumber,parentRegionUserNumber,interfaceUserNumber, & + & dataPointsUserNumber,dataProjectionUserNumber,dataPointNumber,elementNumber,err) !DLLEXPORT(cmfe_DataProjection_ElementSetInterfaceNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the starting xi of data projection identified by a region user number. - SUBROUTINE cmfe_DataProjection_ElementSetRegionNumber(regionUserNumber,dataPointsUserNumber,dataProjectionUserNumber, & - & dataPointNumber,elementNumber,err) + SUBROUTINE cmfe_DataProjection_ElementSetRegionNumber(contextUserNumber,regionUserNumber,dataPointsUserNumber, & + & dataProjectionUserNumber,dataPointNumber,elementNumber,err) !DLLEXPORT(cmfe_DataProjection_ElementSetRegionNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Get the character string label of a data projection identified by a region user number. - SUBROUTINE cmfe_DataProjection_LabelGetCInterfaceNumber(parentRegionUserNumber,interfaceUserNumber,dataPointsUserNumber, & - & dataProjectionUserNumber,label,err) + SUBROUTINE cmfe_DataProjection_LabelGetCInterfaceNumber(contextUserNumber,parentRegionUserNumber,interfaceUserNumber, & + & dataPointsUserNumber,dataProjectionUserNumber,label,err) !DLLEXPORT(cmfe_DataProjection_LabelGetCInterfaceNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Get the varying string label of a data projection identified by a region user number. - SUBROUTINE cmfe_DataProjection_LabelGetVSInterfaceNumber(parentRegionUserNumber,interfaceUserNumber,dataPointsUserNumber, & - & dataProjectionUserNumber,label,err) + SUBROUTINE cmfe_DataProjection_LabelGetVSInterfaceNumber(contextUserNumber,parentRegionUserNumber,interfaceUserNumber, & + & dataPointsUserNumber,dataProjectionUserNumber,label,err) !DLLEXPORT(cmfe_DataProjection_LabelGetVSInterfaceNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Get the character string label of a data projection identified by a region user number. - SUBROUTINE cmfe_DataProjection_LabelGetCRegionNumber(regionUserNumber,dataPointsUserNumber,dataProjectionUserNumber,label,err) + SUBROUTINE cmfe_DataProjection_LabelGetCRegionNumber(contextUserNumber,regionUserNumber,dataPointsUserNumber, & + & dataProjectionUserNumber,label,err) !DLLEXPORT(cmfe_DataProjection_LabelGetCRegionNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Get the varying string label of a data projection identified by a region user number. - SUBROUTINE cmfe_DataProjection_LabelGetVSRegionNumber(regionUserNumber,dataPointsUserNumber,dataProjectionUserNumber,label,err) + SUBROUTINE cmfe_DataProjection_LabelGetVSRegionNumber(contextUserNumber,regionUserNumber,dataPointsUserNumber, & + & dataProjectionUserNumber,label,err) !DLLEXPORT(cmfe_DataProjection_LabelGetVSRegionNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the character string label of a data projection identified by a region user number. - SUBROUTINE cmfe_DataProjection_LabelSetCInterfaceNumber(parentRegionUserNumber,interfaceUserNumber,dataPointsUserNumber, & - & dataProjectionUserNumber,label,err) + SUBROUTINE cmfe_DataProjection_LabelSetCInterfaceNumber(contextUserNumber,parentRegionUserNumber,interfaceUserNumber, & + & dataPointsUserNumber,dataProjectionUserNumber,label,err) !DLLEXPORT(cmfe_DataProjection_LabelSetCInterfaceNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the varying string label of a data projection identified by a region user number. - SUBROUTINE cmfe_DataProjection_LabelSetVSInterfaceNumber(parentRegionUserNumber,interfaceUserNumber,dataPointsUserNumber, & - & dataProjectionUserNumber,label,err) + SUBROUTINE cmfe_DataProjection_LabelSetVSInterfaceNumber(contextUserNumber,parentRegionUserNumber,interfaceUserNumber, & + & dataPointsUserNumber,dataProjectionUserNumber,label,err) !DLLEXPORT(cmfe_DataProjection_LabelSetVSInterfaceNumber) !Argument variables - INTEGER(INTG), INTENT(IN) :: parentRegionUserNumber !Sets/changes the character string label of a data projection identified by a region user number. - SUBROUTINE cmfe_DataProjection_LabelSetCRegionNumber(regionUserNumber,dataPointsUserNumber,dataProjectionUserNumber,label,err) + SUBROUTINE cmfe_DataProjection_LabelSetCRegionNumber(contextUserNumber,regionUserNumber,dataPointsUserNumber, & + & dataProjectionUserNumber,label,err) !DLLEXPORT(cmfe_DataProjection_LabelSetCRegionNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the varying string label of a data projection identified by a region user number. - SUBROUTINE cmfe_DataProjection_LabelSetVSRegionNumber(regionUserNumber,dataPointsUserNumber,dataProjectionUserNumber,label,err) + SUBROUTINE cmfe_DataProjection_LabelSetVSRegionNumber(contextUserNumber,regionUserNumber,dataPointsUserNumber, & + & dataProjectionUserNumber,label,err) !DLLEXPORT(cmfe_DataProjection_LabelSetVSRegionNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Destroys equations for equations identified by a user number. - SUBROUTINE cmfe_Equations_DestroyNumber(regionUserNumber,equationsSetUserNumber,err) + SUBROUTINE cmfe_Equations_DestroyNumber(contextUserNumber,regionUserNumber,equationsSetUserNumber,err) !DLLEXPORT(cmfe_Equations_DestroyNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Gets the linearity type for equations identified by a user number. - SUBROUTINE cmfe_Equations_LinearityTypeGetNumber(regionUserNumber,equationsSetUserNumber,linearityType,err) + SUBROUTINE cmfe_Equations_LinearityTypeGetNumber(contextUserNumber,regionUserNumber,equationsSetUserNumber,linearityType,err) !DLLEXPORT(cmfe_Equations_LinearityTypeGetNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Gets the lumping type for equations identified by a user number. - SUBROUTINE cmfe_Equations_LumpingTypeGetNumber(regionUserNumber,equationsSetUserNumber,lumpingType,err) + SUBROUTINE cmfe_Equations_LumpingTypeGetNumber(contextUserNumber,regionUserNumber,equationsSetUserNumber,lumpingType,err) !DLLEXPORT(cmfe_Equations_LumpingTypeGetNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the lumping type for equations identified by a user number. - SUBROUTINE cmfe_Equations_LumpingTypeSetNumber(regionUserNumber,equationsSetUserNumber,lumpingType,err) + SUBROUTINE cmfe_Equations_LumpingTypeSetNumber(contextUserNumber,regionUserNumber,equationsSetUserNumber,lumpingType,err) !DLLEXPORT(cmfe_Equations_LumpingTypeSetNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Gets the output type for equations identified by a user number. - SUBROUTINE cmfe_Equations_OutputTypeGetNumber(regionUserNumber,equationsSetUserNumber,outputType,err) + SUBROUTINE cmfe_Equations_OutputTypeGetNumber(contextUserNumber,regionUserNumber,equationsSetUserNumber,outputType,err) !DLLEXPORT(cmfe_Equations_OutputTypeGetNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the output type for equations identified by a user number. - SUBROUTINE cmfe_Equations_OutputTypeSetNumber(regionUserNumber,equationsSetUserNumber,outputType,err) + SUBROUTINE cmfe_Equations_OutputTypeSetNumber(contextUserNumber,regionUserNumber,equationsSetUserNumber,outputType,err) !DLLEXPORT(cmfe_Equations_OutputTypeSetNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Gets the sparsity type for equations identified by a user number. - SUBROUTINE cmfe_Equations_SparsityTypeGetNumber(regionUserNumber,equationsSetUserNumber,sparsityType,err) + SUBROUTINE cmfe_Equations_SparsityTypeGetNumber(contextUserNumber,regionUserNumber,equationsSetUserNumber,sparsityType,err) !DLLEXPORT(cmfe_Equations_SparsityTypeGetNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the sparsity type for equations identified by a user number. - SUBROUTINE cmfe_Equations_SparsityTypeSetNumber(regionUserNumber,equationsSetUserNumber,sparsityType,err) + SUBROUTINE cmfe_Equations_SparsityTypeSetNumber(contextUserNumber,regionUserNumber,equationsSetUserNumber,sparsityType,err) !DLLEXPORT(cmfe_Equations_SparsityTypeSetNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Gets the time dependence type for equations identified by a user number. - SUBROUTINE cmfe_Equations_TimeDependenceTypeGetNumber(regionUserNumber,equationsSetUserNumber,timeDependenceType,err) + SUBROUTINE cmfe_Equations_TimeDependenceTypeGetNumber(contextUserNumber,regionUserNumber,equationsSetUserNumber, & + & timeDependenceType,err) !DLLEXPORT(cmfe_Equations_TimeDependenceTypeGetNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Finish the creation of derived variables for an equations set identified by a user number. - SUBROUTINE cmfe_EquationsSet_DerivedCreateFinishNumber(regionUserNumber,equationsSetUserNumber,err) - !DLLEXPORT(cmfe_EquationsSet_DerivedCreateFinishNumber) - - !Argument variables - INTEGER(INTG), INTENT(IN) :: regionUserNumber !Finish the creation of derived variables for an equations set identified by an object. - SUBROUTINE cmfe_EquationsSet_DerivedCreateFinishObj(equationsSet,err) - !DLLEXPORT(cmfe_EquationsSet_DerivedCreateFinishObj) - - !Argument variables - TYPE(cmfe_EquationsSetType), INTENT(INOUT) :: equationsSet !Start the creation of derived variables for an equations set identified by a user number. - SUBROUTINE cmfe_EquationsSet_DerivedCreateStartNumber(regionUserNumber,equationsSetUserNumber,derivedFieldUserNumber,err) - !DLLEXPORT(cmfe_EquationsSet_DerivedCreateStartNumber) - - !Argument variables - INTEGER(INTG), INTENT(IN) :: regionUserNumber !Start the creation of derived variables for an equations set identified by an object. - SUBROUTINE cmfe_EquationsSet_DerivedCreateStartObj(equationsSet,derivedFieldUserNumber,derivedField,err) - !DLLEXPORT(cmfe_EquationsSet_DerivedCreateStartObj) - - !Argument variables - TYPE(cmfe_EquationsSetType), INTENT(INOUT) :: equationsSet !Destroy the derived variables for an equations set identified by a user number. - SUBROUTINE cmfe_EquationsSet_DerivedDestroyNumber(regionUserNumber,equationsSetUserNumber,err) - !DLLEXPORT(cmfe_EquationsSet_DerivedDestroyNumber) - - !Argument variables - INTEGER(INTG), INTENT(IN) :: regionUserNumber !Destroy the derived variables for an equations set identified by an object. - SUBROUTINE cmfe_EquationsSet_DerivedDestroyObj(equationsSet,err) - !DLLEXPORT(cmfe_EquationsSet_DerivedDestroyObj) - - !Argument variables - TYPE(cmfe_EquationsSetType), INTENT(INOUT) :: equationsSet !Calculates a derived field value for the equations set and stores the result in the derived field previously set up - SUBROUTINE cmfe_EquationsSet_DerivedVariableCalculateNumber(regionUserNumber,equationsSetUserNumber,derivedTensorType,err) - !DLLEXPORT(cmfe_EquationsSet_DerivedVariableCalculateNumber) - - !Argument variables - INTEGER(INTG), INTENT(IN) :: regionUserNumber !Calculates a derived field value for the equations set and stores the result in the derived field previously set up - SUBROUTINE cmfe_EquationsSet_DerivedVariableCalculateObj(equationsSet,derivedTensorType,err) - !DLLEXPORT(cmfe_EquationsSet_DerivedVariableCalculateObj) - - !Argument variables - TYPE(cmfe_EquationsSetType), INTENT(IN) :: equationsSet !Sets the field variable type of the derived field to be used to store a derived variable - SUBROUTINE cmfe_EquationsSet_DerivedVariableSetNumber(regionUserNumber,equationsSetUserNumber,derivedTensorType, & - & fieldVariableType,err) - !DLLEXPORT(cmfe_EquationsSet_DerivedVariableSetNumber) - - !Argument variables - INTEGER(INTG), INTENT(IN) :: regionUserNumber !Sets the field variable type of the derived field to be used to store a derived variable - SUBROUTINE cmfe_EquationsSet_DerivedVariableSetObj(equationsSet,derivedTensorType,fieldVariableType,err) - !DLLEXPORT(cmfe_EquationsSet_DerivedVariableSetObj) - - !Argument variables - TYPE(cmfe_EquationsSetType), INTENT(IN) :: equationsSet !Finish the creation of a analytic solution for an equations set identified by a user number. - SUBROUTINE cmfe_EquationsSet_AnalyticCreateFinishNumber(regionUserNumber,equationsSetUserNumber,err) + SUBROUTINE cmfe_EquationsSet_AnalyticCreateFinishNumber(contextUserNumber,regionUserNumber,equationsSetUserNumber,err) !DLLEXPORT(cmfe_EquationsSet_AnalyticCreateFinishNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Start the creation of a analytic solution for an equations set identified by a user number. - SUBROUTINE cmfe_EquationsSet_AnalyticCreateStartNumber(regionUserNumber,equationsSetUserNumber,analyticFunctionType, & - & analyticFieldUserNumber,err) + SUBROUTINE cmfe_EquationsSet_AnalyticCreateStartNumber(contextUserNumber,regionUserNumber,equationsSetUserNumber, & + & analyticFunctionType,analyticFieldUserNumber,err) !DLLEXPORT(cmfe_EquationsSet_AnalyticCreateStartNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Destroy the analytic solution for an equations set identified by a user number. - SUBROUTINE cmfe_EquationsSet_AnalyticDestroyNumber(regionUserNumber,equationsSetUserNumber,err) + SUBROUTINE cmfe_EquationsSet_AnalyticDestroyNumber(contextUserNumber,regionUserNumber,equationsSetUserNumber,err) !DLLEXPORT(cmfe_EquationsSet_AnalyticDestroyNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Evaluates the current analytic solution for an equations set identified by a user number. - SUBROUTINE cmfe_EquationsSet_AnalyticEvaluateNumber(regionUserNumber,equationsSetUserNumber,err) + SUBROUTINE cmfe_EquationsSet_AnalyticEvaluateNumber(contextUserNumber,regionUserNumber,equationsSetUserNumber,err) !DLLEXPORT(cmfe_EquationsSet_AnalyticEvaluateNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Returns the analytic time for an equations set identified by a user number. - SUBROUTINE cmfe_EquationsSet_AnalyticTimeGetNumber(regionUserNumber,equationsSetUserNumber,time,err) + SUBROUTINE cmfe_EquationsSet_AnalyticTimeGetNumber(contextUserNumber,regionUserNumber,equationsSetUserNumber,time,err) !DLLEXPORT(cmfe_EquationsSet_AnalyticTimeGetNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the analytic time for an equations set identified by a user number. - SUBROUTINE cmfe_EquationsSet_AnalyticTimeSetNumber(regionUserNumber,equationsSetUserNumber,time,err) + SUBROUTINE cmfe_EquationsSet_AnalyticTimeSetNumber(contextUserNumber,regionUserNumber,equationsSetUserNumber,time,err) !DLLEXPORT(cmfe_EquationsSet_AnalyticTimeSetNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets the analytic problem user parameter - SUBROUTINE cmfe_EquationsSet_AnalyticUserParamSetNumber(regionUserNumber,equationsSetUserNumber,paramIdx,param,err) + SUBROUTINE cmfe_EquationsSet_AnalyticUserParamSetNumber(contextUserNumber,regionUserNumber,equationsSetUserNumber, & + & paramIdx,param,err) !DLLEXPORT(cmfe_EquationsSet_AnalyticUserParamSetNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets the analytic problem user parameter - SUBROUTINE cmfe_EquationsSet_AnalyticUserParamGetNumber(regionUserNumber,equationsSetUserNumber,paramIdx,param,err) + SUBROUTINE cmfe_EquationsSet_AnalyticUserParamGetNumber(contextUserNumber,regionUserNumber,equationsSetUserNumber, & + & paramIdx,param,err) !DLLEXPORT(cmfe_EquationsSet_AnalyticUserParamGetNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Finish the creation of an equations set identified by a user number. - SUBROUTINE cmfe_EquationsSet_CreateFinishNumber(regionUserNumber,equationsSetUserNumber,err) + SUBROUTINE cmfe_EquationsSet_CreateFinishNumber(contextUserNumber,regionUserNumber,equationsSetUserNumber,err) !DLLEXPORT(cmfe_EquationsSet_CreateFinishNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Start the creation of an equations set identified by a user number. - SUBROUTINE cmfe_EquationsSet_CreateStartNumber(equationsSetUserNumber,regionUserNumber,geomFibreFieldUserNumber,& - & equationsSetSpecification,equationsSetFieldUserNumber,err) + SUBROUTINE cmfe_EquationsSet_CreateStartNumber(equationsSetUserNumber,contextUserNumber,regionUserNumber,& + & geomFibreFieldUserNumber,equationsSetSpecification,equationsSetFieldUserNumber,err) !DLLEXPORT(cmfe_EquationsSet_CreateStartNumber) !Argument variables INTEGER(INTG), INTENT(IN) :: equationsSetUserNumber !Finish the creation of derived variables for an equations set identified by a user number. + SUBROUTINE cmfe_EquationsSet_DerivedCreateFinishNumber(contextUserNumber,regionUserNumber,equationsSetUserNumber,err) + !DLLEXPORT(cmfe_EquationsSet_DerivedCreateFinishNumber) + + !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Finish the creation of derived variables for an equations set identified by an object. + SUBROUTINE cmfe_EquationsSet_DerivedCreateFinishObj(equationsSet,err) + !DLLEXPORT(cmfe_EquationsSet_DerivedCreateFinishObj) + + !Argument variables + TYPE(cmfe_EquationsSetType), INTENT(INOUT) :: equationsSet !Start the creation of derived variables for an equations set identified by a user number. + SUBROUTINE cmfe_EquationsSet_DerivedCreateStartNumber(contextUserNumber,regionUserNumber,equationsSetUserNumber, & + & derivedFieldUserNumber,err) + !DLLEXPORT(cmfe_EquationsSet_DerivedCreateStartNumber) + + !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Start the creation of derived variables for an equations set identified by an object. + SUBROUTINE cmfe_EquationsSet_DerivedCreateStartObj(equationsSet,derivedFieldUserNumber,derivedField,err) + !DLLEXPORT(cmfe_EquationsSet_DerivedCreateStartObj) + + !Argument variables + TYPE(cmfe_EquationsSetType), INTENT(INOUT) :: equationsSet !Destroy the derived variables for an equations set identified by a user number. + SUBROUTINE cmfe_EquationsSet_DerivedDestroyNumber(contextUserNumber,regionUserNumber,equationsSetUserNumber,err) + !DLLEXPORT(cmfe_EquationsSet_DerivedDestroyNumber) + + !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Destroy the derived variables for an equations set identified by an object. + SUBROUTINE cmfe_EquationsSet_DerivedDestroyObj(equationsSet,err) + !DLLEXPORT(cmfe_EquationsSet_DerivedDestroyObj) + + !Argument variables + TYPE(cmfe_EquationsSetType), INTENT(INOUT) :: equationsSet !Calculates a derived field value for the equations set and stores the result in the derived field previously set up + SUBROUTINE cmfe_EquationsSet_DerivedVariableCalculateNumber(contextUserNumber,regionUserNumber,equationsSetUserNumber, & + & derivedTensorType,err) + !DLLEXPORT(cmfe_EquationsSet_DerivedVariableCalculateNumber) + + !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Calculates a derived field value for the equations set and stores the result in the derived field previously set up + SUBROUTINE cmfe_EquationsSet_DerivedVariableCalculateObj(equationsSet,derivedTensorType,err) + !DLLEXPORT(cmfe_EquationsSet_DerivedVariableCalculateObj) + + !Argument variables + TYPE(cmfe_EquationsSetType), INTENT(IN) :: equationsSet !Sets the field variable type of the derived field to be used to store a derived variable + SUBROUTINE cmfe_EquationsSet_DerivedVariableSetNumber(contextUserNumber,regionUserNumber,equationsSetUserNumber, & + & derivedTensorType,fieldVariableType,err) + !DLLEXPORT(cmfe_EquationsSet_DerivedVariableSetNumber) + + !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets the field variable type of the derived field to be used to store a derived variable + SUBROUTINE cmfe_EquationsSet_DerivedVariableSetObj(equationsSet,derivedTensorType,fieldVariableType,err) + !DLLEXPORT(cmfe_EquationsSet_DerivedVariableSetObj) + + !Argument variables + TYPE(cmfe_EquationsSetType), INTENT(IN) :: equationsSet !Destroy an equations set identified by a user number. - SUBROUTINE cmfe_EquationsSet_DestroyNumber(regionUserNumber,equationsSetUserNumber,err) + SUBROUTINE cmfe_EquationsSet_DestroyNumber(contextUserNumber,regionUserNumber,equationsSetUserNumber,err) !DLLEXPORT(cmfe_EquationsSet_DestroyNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Finish the creation of dependent variables for an equations set identified by a user number. - SUBROUTINE cmfe_EquationsSet_DependentCreateFinishNumber(regionUserNumber,equationsSetUserNumber,err) + SUBROUTINE cmfe_EquationsSet_DependentCreateFinishNumber(contextUserNumber,regionUserNumber,equationsSetUserNumber,err) !DLLEXPORT(cmfe_EquationsSet_DependentCreateFinishNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Start the creation of dependent variables for an equations set identified by a user number. - SUBROUTINE cmfe_EquationsSet_DependentCreateStartNumber(regionUserNumber,equationsSetUserNumber,dependentFieldUserNumber,err) + SUBROUTINE cmfe_EquationsSet_DependentCreateStartNumber(contextUserNumber,regionUserNumber,equationsSetUserNumber, & + & dependentFieldUserNumber,err) !DLLEXPORT(cmfe_EquationsSet_DependentCreateStartNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Destroy the dependent variables for an equations set identified by a user number. - SUBROUTINE cmfe_EquationsSet_DependentDestroyNumber(regionUserNumber,equationsSetUserNumber,err) + SUBROUTINE cmfe_EquationsSet_DependentDestroyNumber(contextUserNumber,regionUserNumber,equationsSetUserNumber,err) !DLLEXPORT(cmfe_EquationsSet_DependentDestroyNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Finish the creation of equations for an equations set identified by a user number. - SUBROUTINE cmfe_EquationsSet_EquationsCreateFinishNumber(regionUserNumber,equationsSetUserNumber,err) + SUBROUTINE cmfe_EquationsSet_EquationsCreateFinishNumber(contextUserNumber,regionUserNumber,equationsSetUserNumber,err) !DLLEXPORT(cmfe_EquationsSet_EquationsCreateFinishNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Start the creation of equations for an equations set identified by a user number. - SUBROUTINE cmfe_EquationsSet_EquationsCreateStartNumber(regionUserNumber,equationsSetUserNumber,err) + SUBROUTINE cmfe_EquationsSet_EquationsCreateStartNumber(contextUserNumber,regionUserNumber,equationsSetUserNumber,err) !DLLEXPORT(cmfe_EquationsSet_EquationsCreateStartNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Destroy the equations for an equations set identified by a user number. - SUBROUTINE cmfe_EquationsSet_EquationsDestroyNumber(regionUserNumber,equationsSetUserNumber,err) + SUBROUTINE cmfe_EquationsSet_EquationsDestroyNumber(contextUserNumber,regionUserNumber,equationsSetUserNumber,err) !DLLEXPORT(cmfe_EquationsSet_EquationsDestroyNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Finish the creation of independent variables for an equations set identified by a user number. - SUBROUTINE cmfe_EquationsSet_IndependentCreateFinishNumber(regionUserNumber,equationsSetUserNumber,err) + SUBROUTINE cmfe_EquationsSet_IndependentCreateFinishNumber(contextUserNumber,regionUserNumber,equationsSetUserNumber,err) !DLLEXPORT(cmfe_EquationsSet_IndependentCreateFinishNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Start the creation of independent variables for an equations set identified by a user number. - SUBROUTINE cmfe_EquationsSet_IndependentCreateStartNumber(regionUserNumber,equationsSetUserNumber,independentFieldUserNumber,err) + SUBROUTINE cmfe_EquationsSet_IndependentCreateStartNumber(contextUserNumber,regionUserNumber,equationsSetUserNumber, & + & independentFieldUserNumber,err) !DLLEXPORT(cmfe_EquationsSet_IndependentCreateStartNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Destroy the independent variables for an equations set identified by a user number. - SUBROUTINE cmfe_EquationsSet_IndependentDestroyNumber(regionUserNumber,equationsSetUserNumber,err) + SUBROUTINE cmfe_EquationsSet_IndependentDestroyNumber(contextUserNumber,regionUserNumber,equationsSetUserNumber,err) !DLLEXPORT(cmfe_EquationsSet_IndependentDestroyNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Returns the character string label for an equations set identified by a user number. - SUBROUTINE cmfe_EquationsSet_LabelGetCNumber(regionUserNumber,equationsSetUserNumber,label,err) + SUBROUTINE cmfe_EquationsSet_LabelGetCNumber(contextUserNumber,regionUserNumber,equationsSetUserNumber,label,err) !DLLEXPORT(cmfe_EquationsSet_LabelGetCNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Returns the varying string label for an equations set identified by a user number. - SUBROUTINE cmfe_EquationsSet_LabelGetVSNumber(regionUserNumber,equationsSetUserNumber,label,err) + SUBROUTINE cmfe_EquationsSet_LabelGetVSNumber(contextUserNumber,regionUserNumber,equationsSetUserNumber,label,err) !DLLEXPORT(cmfe_EquationsSet_LabelGetVSNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the character string label for an equations set identified by a user number. - SUBROUTINE cmfe_EquationsSet_LabelSetCNumber(regionUserNumber,equationsSetUserNumber,label,err) + SUBROUTINE cmfe_EquationsSet_LabelSetCNumber(contextUserNumber,regionUserNumber,equationsSetUserNumber,label,err) !DLLEXPORT(cmfe_EquationsSet_LabelSetCNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the varying string label for an equations set identified by a user number. - SUBROUTINE cmfe_EquationsSet_LabelSetVSNumber(regionUserNumber,equationsSetUserNumber,label,err) + SUBROUTINE cmfe_EquationsSet_LabelSetVSNumber(contextUserNumber,regionUserNumber,equationsSetUserNumber,label,err) !DLLEXPORT(cmfe_EquationsSet_LabelSetVSNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Finish the creation of materials for an equations set identified by a user number. - SUBROUTINE cmfe_EquationsSet_MaterialsCreateFinishNumber(regionUserNumber,equationsSetUserNumber,err) + SUBROUTINE cmfe_EquationsSet_MaterialsCreateFinishNumber(contextUserNumber,regionUserNumber,equationsSetUserNumber,err) !DLLEXPORT(cmfe_EquationsSet_MaterialsCreateFinishNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Start the creation of materials for an equations set identified by a user number. - SUBROUTINE cmfe_EquationsSet_MaterialsCreateStartNumber(regionUserNumber,equationsSetUserNumber,materialsFieldUserNumber,err) + SUBROUTINE cmfe_EquationsSet_MaterialsCreateStartNumber(contextUserNumber,regionUserNumber,equationsSetUserNumber, & + & materialsFieldUserNumber,err) !DLLEXPORT(cmfe_EquationsSet_MaterialsCreateStartNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Destroy the materials for an equations set identified by a user number. - SUBROUTINE cmfe_EquationsSet_MaterialsDestroyNumber(regionUserNumber,equationsSetUserNumber,err) + SUBROUTINE cmfe_EquationsSet_MaterialsDestroyNumber(contextUserNumber,regionUserNumber,equationsSetUserNumber,err) !DLLEXPORT(cmfe_EquationsSet_MaterialsDestroyNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Gets the output type an equations set identified by a user number. - SUBROUTINE cmfe_EquationsSet_OutputTypeGetNumber(regionUserNumber,equationsSetUserNumber,outputType,err) + SUBROUTINE cmfe_EquationsSet_OutputTypeGetNumber(contextUserNumber,regionUserNumber,equationsSetUserNumber,outputType,err) !DLLEXPORT(cmfe_EquationsSet_OutputTypeGetNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the output type for an equations set identified by a user number. - SUBROUTINE cmfe_EquationsSet_OutputTypeSetNumber(regionUserNumber,equationsSetUserNumber,outputType,err) + SUBROUTINE cmfe_EquationsSet_OutputTypeSetNumber(contextUserNumber,regionUserNumber,equationsSetUserNumber,outputType,err) !DLLEXPORT(cmfe_EquationsSet_OutputTypeSetNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Returns the solution method for an equations set identified by a user number. - SUBROUTINE cmfe_EquationsSet_SolutionMethodGetNumber(regionUserNumber,equationsSetUserNumber,solutionMethod,err) + SUBROUTINE cmfe_EquationsSet_SolutionMethodGetNumber(contextUserNumber,regionUserNumber,equationsSetUserNumber, & + & solutionMethod,err) !DLLEXPORT(cmfe_EquationsSet_SolutionMethodGetNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the solution method for an equations set identified by a user number. - SUBROUTINE cmfe_EquationsSet_SolutionMethodSetNumber(regionUserNumber,equationsSetUserNumber,solutionMethod,err) + SUBROUTINE cmfe_EquationsSet_SolutionMethodSetNumber(contextUserNumber,regionUserNumber,equationsSetUserNumber, & + & solutionMethod,err) !DLLEXPORT(cmfe_EquationsSet_SolutionMethodSetNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Finish the creation of a source for an equations set identified by a user number. - SUBROUTINE cmfe_EquationsSet_SourceCreateFinishNumber(regionUserNumber,equationsSetUserNumber,err) + SUBROUTINE cmfe_EquationsSet_SourceCreateFinishNumber(contextUserNumber,regionUserNumber,equationsSetUserNumber,err) !DLLEXPORT(cmfe_EquationsSet_SourceCreateFinishNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Start the creation of a source for an equations set identified by a user number. - SUBROUTINE cmfe_EquationsSet_SourceCreateStartNumber(regionUserNumber,equationsSetUserNumber,sourceFieldUserNumber,err) + SUBROUTINE cmfe_EquationsSet_SourceCreateStartNumber(contextUserNumber,regionUserNumber,equationsSetUserNumber, & + & sourceFieldUserNumber,err) !DLLEXPORT(cmfe_EquationsSet_SourceCreateStartNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Destroy the source for an equations set identified by a user number. - SUBROUTINE cmfe_EquationsSet_SourceDestroyNumber(regionUserNumber,equationsSetUserNumber,err) + SUBROUTINE cmfe_EquationsSet_SourceDestroyNumber(contextUserNumber,regionUserNumber,equationsSetUserNumber,err) !DLLEXPORT(cmfe_EquationsSet_SourceDestroyNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Returns the equations set specification array for an equations set identified by a user number. - SUBROUTINE cmfe_EquationsSet_SpecificationGetNumber(regionUserNumber,equationsSetUserNumber,equationsSetSpecification,err) + SUBROUTINE cmfe_EquationsSet_SpecificationGetNumber(contextUserNumber,regionUserNumber,equationsSetUserNumber, & + & equationsSetSpecification,err) !DLLEXPORT(cmfe_EquationsSet_SpecificationGetNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Returns the size of the equations set specification array for an equations set identified by a user number. - SUBROUTINE cmfe_EquationsSet_SpecificationSizeGetNumber(regionUserNumber,equationsSetUserNumber,specificationSize,err) + SUBROUTINE cmfe_EquationsSet_SpecificationSizeGetNumber(contextUserNumber,regionUserNumber,equationsSetUserNumber, & + & specificationSize,err) !DLLEXPORT(cmfe_EquationsSet_SpecificationSizeGetNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Evaluate a tensor at a given element Gauss point, for an equations set identified by a user number. - SUBROUTINE cmfe_EquationsSet_TensorInterpolateGaussPointNumber(regionUserNumber,equationsSetUserNumber,derivedTensorType, & - & gaussPointNumber,userElementNumber,values,err) + SUBROUTINE cmfe_EquationsSet_TensorInterpolateGaussPointNumber(contextUserNumber,regionUserNumber,equationsSetUserNumber, & + & derivedTensorType,gaussPointNumber,userElementNumber,values,err) !DLLEXPORT(cmfe_EquationsSet_TensorInterpolateGaussPointNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Evaluate a tensor at a given element xi location, for an equations set identified by a user number. - SUBROUTINE cmfe_EquationsSet_TensorInterpolateXiNumber(regionUserNumber,equationsSetUserNumber,derivedTensorType, & - & userElementNumber,xi,values,err) + SUBROUTINE cmfe_EquationsSet_TensorInterpolateXiNumber(contextUserNumber,regionUserNumber,equationsSetUserNumber, & + & derivedTensorType,userElementNumber,xi,values,err) !DLLEXPORT(cmfe_EquationsSet_TensorInterpolateXiNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Returns the equations set current times for an equations set identified by a user number. - SUBROUTINE cmfe_EquationsSet_TimesGetNumber(regionUserNumber,equationsSetUserNumber,currentTime,deltaTime,err) + SUBROUTINE cmfe_EquationsSet_TimesGetNumber(contextUserNumber,regionUserNumber,equationsSetUserNumber,currentTime,deltaTime,err) !DLLEXPORT(cmfe_EquationsSet_TimesGetNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the equations set current times for an equations set identified by a user number. - SUBROUTINE cmfe_EquationsSet_TimesSetNumber(regionUserNumber,equationsSetUserNumber,currentTime,deltaTime,err) + SUBROUTINE cmfe_EquationsSet_TimesSetNumber(contextUserNumber,regionUserNumber,equationsSetUserNumber,currentTime,deltaTime,err) !DLLEXPORT(cmfe_EquationsSet_TimesSetNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Returns the interpolation type for a field variable component for a field identified by a user number. - SUBROUTINE cmfe_Field_ComponentInterpolationGetNumber(regionUserNumber,fieldUserNumber,variableType,componentNumber, & - & interpolationType,err) + SUBROUTINE cmfe_Field_ComponentInterpolationGetNumber(contextUserNumber,regionUserNumber,fieldUserNumber,variableType, & + & componentNumber,interpolationType,err) !DLLEXPORT(cmfe_Field_ComponentInterpolationGetNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the interpolation type for a field variable component for a field identified by a user number. - SUBROUTINE cmfe_Field_ComponentInterpolationSetNumber(regionUserNumber,fieldUserNumber,variableType,componentNumber, & - & interpolationType,err) + SUBROUTINE cmfe_Field_ComponentInterpolationSetNumber(contextUserNumber,regionUserNumber,fieldUserNumber,variableType, & + & componentNumber,interpolationType,err) !DLLEXPORT(cmfe_Field_ComponentInterpolationSetNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Returns the character string label for a field variable component for a field identified by a user number. - SUBROUTINE cmfe_Field_ComponentLabelGetCNumber(regionUserNumber,fieldUserNumber,variableType,componentNumber,label,err) + SUBROUTINE cmfe_Field_ComponentLabelGetCNumber(contextUserNumber,regionUserNumber,fieldUserNumber,variableType, & + & componentNumber,label,err) !DLLEXPORT(cmfe_Field_ComponentLabelGetCNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Returns the varying string label for a field variable component for a field identified by a user number. - SUBROUTINE cmfe_Field_ComponentLabelGetVSNumber(regionUserNumber,fieldUserNumber,variableType,componentNumber,label,err) + SUBROUTINE cmfe_Field_ComponentLabelGetVSNumber(contextUserNumber,regionUserNumber,fieldUserNumber,variableType, & + & componentNumber,label,err) !DLLEXPORT(cmfe_Field_ComponentLabelGetVSNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the character string label for a field variable component for a field identified by a user number. - SUBROUTINE cmfe_Field_ComponentLabelSetCNumber(regionUserNumber,fieldUserNumber,variableType,componentNumber,label,err) + SUBROUTINE cmfe_Field_ComponentLabelSetCNumber(contextUserNumber,regionUserNumber,fieldUserNumber,variableType, & + & componentNumber,label,err) !DLLEXPORT(cmfe_Field_ComponentLabelSetCNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the varying string label for a field variable component for a field identified by a user number. - SUBROUTINE cmfe_Field_ComponentLabelSetVSNumber(regionUserNumber,fieldUserNumber,variableType,componentNumber,label,err) + SUBROUTINE cmfe_Field_ComponentLabelSetVSNumber(contextUserNumber,regionUserNumber,fieldUserNumber,variableType, & + & componentNumber,label,err) !DLLEXPORT(cmfe_Field_ComponentLabelSetVSNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Returns the mesh component number for a field variable component for a field identified by a user number. - SUBROUTINE cmfe_Field_ComponentMeshComponentGetNumber(regionUserNumber,fieldUserNumber,variableType,componentNumber, & - & meshComponent,err) + SUBROUTINE cmfe_Field_ComponentMeshComponentGetNumber(contextUserNumber,regionUserNumber,fieldUserNumber,variableType, & + & componentNumber,meshComponent,err) !DLLEXPORT(cmfe_Field_ComponentMeshComponentGetNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the mesh component number for a field variable component for a field identified by a user number. - SUBROUTINE cmfe_Field_ComponentMeshComponentSetNumber(regionUserNumber,fieldUserNumber,variableType,componentNumber, & - & meshComponent,err) + SUBROUTINE cmfe_Field_ComponentMeshComponentSetNumber(contextUserNumber,regionUserNumber,fieldUserNumber,variableType, & + & componentNumber,meshComponent,err) !DLLEXPORT(cmfe_Field_ComponentMeshComponentSetNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Initialises the values of parameter set of a field variable component to an integer constant value for a field identified by a user number. - SUBROUTINE cmfe_Field_ComponentValuesInitialiseIntgNumber(regionUserNumber,fieldUserNumber,variableType,fieldSetType, & - & componentNumber,value,err) + SUBROUTINE cmfe_Field_ComponentValuesInitialiseIntgNumber(contextUserNumber,regionUserNumber,fieldUserNumber,variableType, & + & fieldSetType,componentNumber,value,err) !DLLEXPORT(cmfe_Field_ComponentValuesInitialiseIntgNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Initialises the values of parameter set of a field variable component to a single precision constant value for a field identified by a user number. - SUBROUTINE cmfe_Field_ComponentValuesInitialiseSPNumber(regionUserNumber,fieldUserNumber,variableType,fieldSetType, & - & componentNumber,value,err) + SUBROUTINE cmfe_Field_ComponentValuesInitialiseSPNumber(contextUserNumber,regionUserNumber,fieldUserNumber,variableType, & + & fieldSetType,componentNumber,value,err) !DLLEXPORT(cmfe_Field_ComponentValuesInitialiseSPNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Initialises the values of parameter set of a field variable component to a double precision constant value for a field identified by a user number. - SUBROUTINE cmfe_Field_ComponentValuesInitialiseDPNumber(regionUserNumber,fieldUserNumber,variableType,fieldSetType, & - & componentNumber,value,err) + SUBROUTINE cmfe_Field_ComponentValuesInitialiseDPNumber(contextUserNumber,regionUserNumber,fieldUserNumber,variableType, & + & fieldSetType,componentNumber,value,err) !DLLEXPORT(cmfe_Field_ComponentValuesInitialiseDPNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Initialises the values of parameter set of a field variable component to a logical constant value for a field identified by a user number. - SUBROUTINE cmfe_Field_ComponentValuesInitialiseLNumber(regionUserNumber,fieldUserNumber,variableType,fieldSetType, & - & componentNumber,value,err) + SUBROUTINE cmfe_Field_ComponentValuesInitialiseLNumber(contextUserNumber,regionUserNumber,fieldUserNumber,variableType, & + & fieldSetType,componentNumber,value,err) !DLLEXPORT(cmfe_Field_ComponentValuesInitialiseLNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Returns the data type for a field variable for a field identified by a user number. - SUBROUTINE cmfe_Field_DataTypeGetNumber(regionUserNumber,fieldUserNumber,variableType,dataType,err) + SUBROUTINE cmfe_Field_DataTypeGetNumber(contextUserNumber,regionUserNumber,fieldUserNumber,variableType,dataType,err) !DLLEXPORT(cmfe_Field_DataTypeGetNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the data type for a field variable for a field identified by a user number. - SUBROUTINE cmfe_Field_DataTypeSetNumber(regionUserNumber,fieldUserNumber,variableType,dataType,err) + SUBROUTINE cmfe_Field_DataTypeSetNumber(contextUserNumber,regionUserNumber,fieldUserNumber,variableType,dataType,err) !DLLEXPORT(cmfe_Field_DataTypeSetNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Returns the DOF order type for a field variable for a field identified by a user number. - SUBROUTINE cmfe_Field_DOFOrderTypeGetNumber(regionUserNumber,fieldUserNumber,variableType,DOFOrderType,err) + SUBROUTINE cmfe_Field_DOFOrderTypeGetNumber(contextUserNumber,regionUserNumber,fieldUserNumber,variableType,DOFOrderType,err) !DLLEXPORT(cmfe_Field_DOFOrderTypeGetNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the DOF order type for a field variable for a field identified by a user number. - SUBROUTINE cmfe_Field_DOFOrderTypeSetNumber(regionUserNumber,fieldUserNumber,variableType,DOFOrderType,err) + SUBROUTINE cmfe_Field_DOFOrderTypeSetNumber(contextUserNumber,regionUserNumber,fieldUserNumber,variableType,DOFOrderType,err) !DLLEXPORT(cmfe_Field_DOFOrderTypeSetNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Finishes the creation of a field identified by a user number. - SUBROUTINE cmfe_Field_CreateFinishNumber(regionUserNumber,fieldUserNumber,err) + SUBROUTINE cmfe_Field_CreateFinishNumber(contextUserNumber,regionUserNumber,fieldUserNumber,err) !DLLEXPORT(cmfe_Field_CreateFinishNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Starts the creation of a field identified by a user number. - SUBROUTINE cmfe_Field_CreateStartNumber(fieldUserNumber,regionUserNumber,err) + SUBROUTINE cmfe_Field_CreateStartNumber(fieldUserNumber,contextUserNumber,regionUserNumber,err) !DLLEXPORT(cmfe_Field_CreateStartNumber) !Argument variables INTEGER(INTG), INTENT(IN) :: fieldUserNumber !Returns the dependent type for a field identified by a user number. - SUBROUTINE cmfe_Field_DependentTypeGetNumber(regionUserNumber,fieldUserNumber,dependentType,err) + SUBROUTINE cmfe_Field_DependentTypeGetNumber(contextUserNumber,regionUserNumber,fieldUserNumber,dependentType,err) !DLLEXPORT(cmfe_Field_DependentTypeGetNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the dependent type for a field identified by a user number. - SUBROUTINE cmfe_Field_DependentTypeSetNumber(regionUserNumber,fieldUserNumber,dependentType,err) + SUBROUTINE cmfe_Field_DependentTypeSetNumber(contextUserNumber,regionUserNumber,fieldUserNumber,dependentType,err) !DLLEXPORT(cmfe_Field_DependentTypeSetNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Destroys a field identified by a user number. - SUBROUTINE cmfe_Field_DestroyNumber(regionUserNumber,fieldUserNumber,err) + SUBROUTINE cmfe_Field_DestroyNumber(contextUserNumber,regionUserNumber,fieldUserNumber,err) !DLLEXPORT(cmfe_Field_DestroyNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Returns the dimension for a field identified by a user number. - SUBROUTINE cmfe_Field_DimensionGetNumber(regionUserNumber,fieldUserNumber,variableType,dimension,err) + SUBROUTINE cmfe_Field_DimensionGetNumber(contextUserNumber,regionUserNumber,fieldUserNumber,variableType,dimension,err) !DLLEXPORT(cmfe_Field_DimensionGetNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the dimension for a field identified by a user number. - SUBROUTINE cmfe_Field_DimensionSetNumber(regionUserNumber,fieldUserNumber,variableType,dimension,err) + SUBROUTINE cmfe_Field_DimensionSetNumber(contextUserNumber,regionUserNumber,fieldUserNumber,variableType,DIMENSION,err) !DLLEXPORT(cmfe_Field_DimensionSetNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Returns the geometric field for a field identified by a user number. - SUBROUTINE cmfe_Field_GeometricFieldGetNumber(regionUserNumber,fieldUserNumber,geometricFieldUserNumber,err) + SUBROUTINE cmfe_Field_GeometricFieldGetNumber(contextUserNumber,regionUserNumber,fieldUserNumber,geometricFieldUserNumber,err) !DLLEXPORT(cmfe_Field_GeometricFieldGetNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the geometric field for a field identified by a user number. - SUBROUTINE cmfe_Field_GeometricFieldSetNumber(regionUserNumber,fieldUserNumber,geometricFieldUserNumber,err) + SUBROUTINE cmfe_Field_GeometricFieldSetNumber(contextUserNumber,regionUserNumber,fieldUserNumber,geometricFieldUserNumber,err) !DLLEXPORT(cmfe_Field_GeometricFieldSetNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Gets the line length between nodes of a geometric field for a given element number and element basis line number by a user number. - SUBROUTINE cmfe_Field_GeometricParametersElementLineLengthGetNumber(regionUserNumber,geometricFieldUserNumber,elementNumber, & - & elementLineNumber,lineLength,err) + SUBROUTINE cmfe_Field_GeometricParametersElementLineLengthGetNumber(contextUserNumber,regionUserNumber, & + & geometricFieldUserNumber,elementNumber,elementLineNumber,lineLength,err) !DLLEXPORT(cmfe_Field_GeometricParametersElementLineLengthGetNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Gets the volume for a given element number by a user number. - SUBROUTINE cmfe_Field_GeometricParametersElementVolumeGetNumber(regionUserNumber,geometricFieldUserNumber,elementNumber, & - & elementVolume,err) - !DLLEXPORT(cmfe_Field_GeometricParametersElementVolumeGetNumber) + !>Gets the line length between nodes of a geometric field for a given element number and element basis line number by an object. + SUBROUTINE cmfe_Field_GeometricParametersElementLineLengthGetObj(geometricField,elementNumber,elementLineNumber,lineLength,err) + !DLLEXPORT(cmfe_Field_GeometricParametersElementLineLengthGetObj) !Argument variables - INTEGER(INTG), INTENT(IN) :: regionUserNumber !Gets the line length between nodes of a geometric field for a given element number and element basis line number by an object. - SUBROUTINE cmfe_Field_GeometricParametersElementLineLengthGetObj(geometricField,elementNumber,elementLineNumber,lineLength,err) - !DLLEXPORT(cmfe_Field_GeometricParametersElementLineLengthGetObj) + !>Gets the volume for a given element number by a user number. + SUBROUTINE cmfe_Field_GeometricParametersElementVolumeGetNumber(contextUserNumber,regionUserNumber,geometricFieldUserNumber, & + & elementNumber,elementVolume,err) + !DLLEXPORT(cmfe_Field_GeometricParametersElementVolumeGetNumber) !Argument variables - TYPE(cmfe_FieldType), INTENT(IN) :: geometricField !Gets the scale factor for a particular node identified by a user number. - SUBROUTINE cmfe_Field_ParameterSetNodeScaleFactorGetNumber(regionUserNumber,fieldUserNumber,variableType, & + SUBROUTINE cmfe_Field_ParameterSetNodeScaleFactorGetNumber(contextUserNumber,regionUserNumber,fieldUserNumber,variableType, & & versionNumber,derivativeNumber,nodeUserNumber,componentNumber,scaleFactor,err) !DLLEXPORT(cmfe_Field_ParameterSetNodeScaleFactorGetNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Gets the scale factors for all nodes identified by a user number. - SUBROUTINE cmfe_Field_ParameterSetNodeScaleFactorsGetNumber(regionUserNumber,fieldUserNumber,variableType, & + SUBROUTINE cmfe_Field_ParameterSetNodeScaleFactorsGetNumber(contextUserNumber,regionUserNumber,fieldUserNumber,variableType, & & meshComponentNumber,scaleFactors,err) !DLLEXPORT(cmfe_Field_ParameterSetNodeScaleFactorsGetNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Gets the number of scale factor dofs, identified by a user number. - SUBROUTINE cmfe_Field_ParameterSetNodeNumberOfScaleFactorDofsGetNumber(regionUserNumber,fieldUserNumber,variableType, & - & meshComponentNumber,numberOfScaleFactorsDofs,err) + SUBROUTINE cmfe_Field_ParameterSetNodeNumberOfScaleFactorDofsGetNumber(contextUserNumber,regionUserNumber,fieldUserNumber, & + & variableType,meshComponentNumber,numberOfScaleFactorsDofs,err) !DLLEXPORT(cmfe_Field_ParameterSetNodeNumberOfScaleFactorDofsGetNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets the scale factor for a particular node identified by a user number. - SUBROUTINE cmfe_Field_ParameterSetNodeScaleFactorSetNumber(regionUserNumber,fieldUserNumber,variableType, & + SUBROUTINE cmfe_Field_ParameterSetNodeScaleFactorSetNumber(contextUserNumber,regionUserNumber,fieldUserNumber,variableType, & & versionNumber,derivativeNumber,nodeUserNumber,componentNumber,scaleFactor,err) !DLLEXPORT(cmfe_Field_ParameterSetNodeScaleFactorSetNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets the scale factors for all nodes identified by a user number. - SUBROUTINE cmfe_Field_ParameterSetNodeScaleFactorsSetNumber(regionUserNumber,fieldUserNumber,variableType, & + SUBROUTINE cmfe_Field_ParameterSetNodeScaleFactorsSetNumber(contextUserNumber,regionUserNumber,fieldUserNumber,variableType, & & meshComponentNumber,scaleFactors,err) !DLLEXPORT(cmfe_Field_ParameterSetNodeScaleFactorsSetNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Returns the character string label for a field identified by a user number. - SUBROUTINE cmfe_Field_LabelGetCNumber(regionUserNumber,fieldUserNumber,label,err) + SUBROUTINE cmfe_Field_LabelGetCNumber(contextUserNumber,regionUserNumber,fieldUserNumber,label,err) !DLLEXPORT(cmfe_Field_LabelGetCNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Returns the varying string label for a field identified by a user number. - SUBROUTINE cmfe_Field_LabelGetVSNumber(regionUserNumber,fieldUserNumber,label,err) + SUBROUTINE cmfe_Field_LabelGetVSNumber(contextUserNumber,regionUserNumber,fieldUserNumber,label,err) !DLLEXPORT(cmfe_Field_LabelGetVSNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the character string label for a field identified by a user number. - SUBROUTINE cmfe_Field_LabelSetCNumber(regionUserNumber,fieldUserNumber,label,err) + SUBROUTINE cmfe_Field_LabelSetCNumber(contextUserNumber,regionUserNumber,fieldUserNumber,label,err) !DLLEXPORT(cmfe_Field_LabelSetCNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the varying string label for a field identified by a user number. - SUBROUTINE cmfe_Field_LabelSetVSNumber(regionUserNumber,fieldUserNumber,label,err) + SUBROUTINE cmfe_Field_LabelSetVSNumber(contextUserNumber,regionUserNumber,fieldUserNumber,label,err) !DLLEXPORT(cmfe_Field_LabelSetVSNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Returns the interpolation type for a field variable component for a field identified by a user number. - SUBROUTINE cmfe_Field_PositionNormalTangentCalculateNodeNumber(regionUserNumber,fieldUserNumber,variableType,componentNumber, & - & localNodeNumber,position,normal,tangents,err) + SUBROUTINE cmfe_Field_PositionNormalTangentCalculateNodeNumber(contextUserNumber,regionUserNumber,fieldUserNumber, & + & variableType,componentNumber,localNodeNumber,position,normal,tangents,err) !DLLEXPORT(cmfe_Field_PositionNormalTangentCalculateNodeNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Returns the mesh decomposition for a field identified by a user number. - SUBROUTINE cmfe_Field_MeshDecompositionGetNumber(regionUserNumber,fieldUserNumber,decompositionUserNumber,err) + SUBROUTINE cmfe_Field_MeshDecompositionGetNumber(contextUserNumber,regionUserNumber,fieldUserNumber,decompositionUserNumber,err) !DLLEXPORT(cmfe_Field_MeshDecompositionGetNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the mesh decomposition for a field identified by a user number. - SUBROUTINE cmfe_Field_MeshDecompositionSetNumber(regionUserNumber,fieldUserNumber,meshUserNumber,decompositionUserNumber,err) + SUBROUTINE cmfe_Field_MeshDecompositionSetNumber(contextUserNumber,regionUserNumber,fieldUserNumber,meshUserNumber, & + & decompositionUserNumber,err) !DLLEXPORT(cmfe_Field_MeshDecompositionSetNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the data projection for a field identified by a user number. - SUBROUTINE cmfe_Field_DataProjectionSetNumber(regionUserNumber,fieldUserNumber,dataPointsUserNumber,dataProjectionUserNumber,err) + SUBROUTINE cmfe_Field_DataProjectionSetNumber(contextUserNumber,regionUserNumber,fieldUserNumber,dataPointsUserNumber, & + & dataProjectionUserNumber,err) !DLLEXPORT(cmfe_Field_DataProjectionSetNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Returns the number of componenets for a field variable for a field identified by a user number. - SUBROUTINE cmfe_Field_NumberOfComponentsGetNumber(regionUserNumber,fieldUserNumber,variableType,numberOfComponents,err) + SUBROUTINE cmfe_Field_NumberOfComponentsGetNumber(contextUserNumber,regionUserNumber,fieldUserNumber,variableType, & + & numberOfComponents,err) !DLLEXPORT(cmfe_Field_NumberOfComponentsGetNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the number of componenets for a field variable for a field identified by a user number. - SUBROUTINE cmfe_Field_NumberOfComponentsSetNumber(regionUserNumber,fieldUserNumber,variableType,numberOfComponents,err) + SUBROUTINE cmfe_Field_NumberOfComponentsSetNumber(contextUserNumber,regionUserNumber,fieldUserNumber,variableType, & + & numberOfComponents,err) !DLLEXPORT(cmfe_Field_NumberOfComponentsSetNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Returns the number of variables for a field identified by a user number. - SUBROUTINE cmfe_Field_NumberOfVariablesGetNumber(regionUserNumber,fieldUserNumber,numberOfVariables,err) + SUBROUTINE cmfe_Field_NumberOfVariablesGetNumber(contextUserNumber,regionUserNumber,fieldUserNumber,numberOfVariables,err) !DLLEXPORT(cmfe_Field_NumberOfVariablesGetNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/chnages the number of variables for a field identified by a user number. - SUBROUTINE cmfe_Field_NumberOfVariablesSetNumber(regionUserNumber,fieldUserNumber,numberOfVariables,err) + SUBROUTINE cmfe_Field_NumberOfVariablesSetNumber(contextUserNumber,regionUserNumber,fieldUserNumber,numberOfVariables,err) !DLLEXPORT(cmfe_Field_NumberOfVariablesSetNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Adds the given integer value to the given parameter set for the constant of the field variable component for a field identified by a user number. - SUBROUTINE cmfe_Field_ParameterSetAddConstantIntgNumber(regionUserNumber,fieldUserNumber,variableType,fieldSetType, & - & componentNumber,value,err) + SUBROUTINE cmfe_Field_ParameterSetAddConstantIntgNumber(contextUserNumber,regionUserNumber,fieldUserNumber,variableType, & + & fieldSetType,componentNumber,value,err) !DLLEXPORT(cmfe_Field_ParameterSetAddConstantIntgNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Adds the given single precision value to the given parameter set for the constant of the field variable component for a field identified by a user number. - SUBROUTINE cmfe_Field_ParameterSetAddConstantSPNumber(regionUserNumber,fieldUserNumber,variableType,fieldSetType, & - & componentNumber,value,err) + SUBROUTINE cmfe_Field_ParameterSetAddConstantSPNumber(contextUserNumber,regionUserNumber,fieldUserNumber,variableType, & + & fieldSetType,componentNumber,value,err) !DLLEXPORT(cmfe_Field_ParameterSetAddConstantSPNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Adds the given double precision value to the given parameter set for the constant of the field variable component for a field identified by a user number. - SUBROUTINE cmfe_Field_ParameterSetAddConstantDPNumber(regionUserNumber,fieldUserNumber,variableType,fieldSetType, & - & componentNumber,value,err) + SUBROUTINE cmfe_Field_ParameterSetAddConstantDPNumber(contextUserNumber,regionUserNumber,fieldUserNumber,variableType, & + & fieldSetType,componentNumber,value,err) !DLLEXPORT(cmfe_Field_ParameterSetAddConstantDPNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Adds the given logical value to the given parameter set for the constant of the field variable component for a field identified by a user number. - SUBROUTINE cmfe_Field_ParameterSetAddConstantLNumber(regionUserNumber,fieldUserNumber,variableType,fieldSetType, & - & componentNumber,value,err) + SUBROUTINE cmfe_Field_ParameterSetAddConstantLNumber(contextUserNumber,regionUserNumber,fieldUserNumber,variableType, & + & fieldSetType,componentNumber,value,err) !DLLEXPORT(cmfe_Field_ParameterSetAddConstantLNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Adds the given integer value to an element in the given parameter set for field variable component for a field identified by a user number. - SUBROUTINE cmfe_Field_ParameterSetAddElementIntgNumber(regionUserNumber,fieldUserNumber,variableType,fieldSetType, & - & userElementNumber,componentNumber,value,err) + SUBROUTINE cmfe_Field_ParameterSetAddElementIntgNumber(contextUserNumber,regionUserNumber,fieldUserNumber,variableType, & + & fieldSetType,userElementNumber,componentNumber,value,err) !DLLEXPORT(cmfe_Field_ParameterSetAddElementIntgNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Adds the given single precision value to an element in the given parameter set for field variable component for a field identified by a user number. - SUBROUTINE cmfe_Field_ParameterSetAddElementSPNumber(regionUserNumber,fieldUserNumber,variableType,fieldSetType, & - & userElementNumber,componentNumber,value,err) + SUBROUTINE cmfe_Field_ParameterSetAddElementSPNumber(contextUserNumber,regionUserNumber,fieldUserNumber,variableType, & + & fieldSetType,userElementNumber,componentNumber,value,err) !DLLEXPORT(cmfe_Field_ParameterSetAddElementSPNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Adds the given double precision value to an element in the given parameter set for field variable component for a field identified by a user number. - SUBROUTINE cmfe_Field_ParameterSetAddElementDPNumber(regionUserNumber,fieldUserNumber,variableType,fieldSetType, & - & userElementNumber,componentNumber,value,err) + SUBROUTINE cmfe_Field_ParameterSetAddElementDPNumber(contextUserNumber,regionUserNumber,fieldUserNumber,variableType, & + & fieldSetType,userElementNumber,componentNumber,value,err) !DLLEXPORT(cmfe_Field_ParameterSetAddElementDPNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Adds the given logical value to an element in the given parameter set for field variable component for a field identified by a user number. - SUBROUTINE cmfe_Field_ParameterSetAddElementLNumber(regionUserNumber,fieldUserNumber,variableType,fieldSetType, & - & userElementNumber,componentNumber,value,err) + SUBROUTINE cmfe_Field_ParameterSetAddElementLNumber(contextUserNumber,regionUserNumber,fieldUserNumber,variableType, & + & fieldSetType,userElementNumber,componentNumber,value,err) !DLLEXPORT(cmfe_Field_ParameterSetAddElementLNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Adds the given integer value to a Gauss point of an element in the given parameter set for field variable component for a field identified by a user number. - SUBROUTINE cmfe_Field_ParameterSetAddGaussPointIntgNumber(regionUserNumber,fieldUserNumber,variableType,fieldSetType, & - & gaussPointNumber,userElementNumber,componentNumber,VALUE,err) + SUBROUTINE cmfe_Field_ParameterSetAddGaussPointIntgNumber(contextUserNumber,regionUserNumber,fieldUserNumber,variableType, & + & fieldSetType,gaussPointNumber,userElementNumber,componentNumber,VALUE,err) !DLLEXPORT(cmfe_Field_ParameterSetAddGaussPointIntgNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Adds the given single precision value to a Gauss point in an element in the given parameter set for field variable component for a field identified by a user number. - SUBROUTINE cmfe_Field_ParameterSetAddGaussPointSPNumber(regionUserNumber,fieldUserNumber,variableType,fieldSetType, & - & gaussPointNumber,userElementNumber,componentNumber,VALUE,err) + SUBROUTINE cmfe_Field_ParameterSetAddGaussPointSPNumber(contextUserNumber,regionUserNumber,fieldUserNumber,variableType, & + & fieldSetType,gaussPointNumber,userElementNumber,componentNumber,VALUE,err) !DLLEXPORT(cmfe_Field_ParameterSetAddGaussPointSPNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Adds the given double precision value to a Gauss point to an element in the given parameter set for field variable component for a field identified by a user number. - SUBROUTINE cmfe_Field_ParameterSetAddGaussPointDPNumber(regionUserNumber,fieldUserNumber,variableType,fieldSetType, & - & gaussPointNumber,userElementNumber,componentNumber,VALUE,err) + SUBROUTINE cmfe_Field_ParameterSetAddGaussPointDPNumber(contextUserNumber,regionUserNumber,fieldUserNumber,variableType, & + & fieldSetType,gaussPointNumber,userElementNumber,componentNumber,VALUE,err) !DLLEXPORT(cmfe_Field_ParameterSetAddGaussPointDPNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Adds the given logical value to a Gauss point in an element in the given parameter set for field variable component for a field identified by a user number. - SUBROUTINE cmfe_Field_ParameterSetAddGaussPointLNumber(regionUserNumber,fieldUserNumber,variableType,fieldSetType, & - & gaussPointNumber,userElementNumber,componentNumber,VALUE,err) + SUBROUTINE cmfe_Field_ParameterSetAddGaussPointLNumber(contextUserNumber,regionUserNumber,fieldUserNumber,variableType, & + & fieldSetType,gaussPointNumber,userElementNumber,componentNumber,VALUE,err) !DLLEXPORT(cmfe_Field_ParameterSetAddGaussPointLNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Adds the given integer value to an node in the given parameter set for field variable component for a field identified by a user number. - SUBROUTINE cmfe_Field_ParameterSetAddNodeIntgNumber(regionUserNumber,fieldUserNumber,variableType,fieldSetType,versionNumber, & - & derivativeNumber,userNodeNumber,componentNumber,value,err) + SUBROUTINE cmfe_Field_ParameterSetAddNodeIntgNumber(contextUserNumber,regionUserNumber,fieldUserNumber,variableType, & + & fieldSetType,versionNumber,derivativeNumber,userNodeNumber,componentNumber,value,err) !DLLEXPORT(cmfe_Field_ParameterSetAddNodeIntgNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Adds the given single precision value to an node in the given parameter set for field variable component for a field identified by a user number. - SUBROUTINE cmfe_Field_ParameterSetAddNodeSPNumber(regionUserNumber,fieldUserNumber,variableType,fieldSetType,versionNumber, & - & derivativeNumber,userNodeNumber,componentNumber,value,err) + SUBROUTINE cmfe_Field_ParameterSetAddNodeSPNumber(contextUserNumber,regionUserNumber,fieldUserNumber,variableType, & + & fieldSetType,versionNumber,derivativeNumber,userNodeNumber,componentNumber,value,err) !DLLEXPORT(cmfe_Field_ParameterSetAddNodeSPNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Adds the given double precision value to an node in the given parameter set for field variable component for a field identified by a user number. - SUBROUTINE cmfe_Field_ParameterSetAddNodeDPNumber(regionUserNumber,fieldUserNumber,variableType,fieldSetType,versionNumber, & - & derivativeNumber,userNodeNumber,componentNumber,value,err) + SUBROUTINE cmfe_Field_ParameterSetAddNodeDPNumber(contextUserNumber,regionUserNumber,fieldUserNumber,variableType, & + & fieldSetType,versionNumber,derivativeNumber,userNodeNumber,componentNumber,value,err) !DLLEXPORT(cmfe_Field_ParameterSetAddNodeDPNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Adds the given logical value to an node in the given parameter set for field variable component for a field identified by a user number. - SUBROUTINE cmfe_Field_ParameterSetAddNodeLNumber(regionUserNumber,fieldUserNumber,variableType,fieldSetType,versionNumber, & - & derivativeNumber,userNodeNumber,componentNumber,value,err) + SUBROUTINE cmfe_Field_ParameterSetAddNodeLNumber(contextUserNumber,regionUserNumber,fieldUserNumber,variableType, & + & fieldSetType,versionNumber,derivativeNumber,userNodeNumber,componentNumber,value,err) !DLLEXPORT(cmfe_Field_ParameterSetAddNodeLNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Creates a new parameter set of type set type for a field variable for a field identified by a user number. - SUBROUTINE cmfe_Field_ParameterSetCreateNumber(regionUserNumber,fieldUserNumber,variableType,fieldSetType,err) + SUBROUTINE cmfe_Field_ParameterSetCreateNumber(contextUserNumber,regionUserNumber,fieldUserNumber,variableType,fieldSetType,err) !DLLEXPORT(cmfe_Field_ParameterSetCreateNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Destroys the specified parameter set type for a field variable for a field identified by a user number. - SUBROUTINE cmfe_Field_ParameterSetDestroyNumber(regionUserNumber,fieldUserNumber,variableType,fieldSetType,err) + SUBROUTINE cmfe_Field_ParameterSetDestroyNumber(contextUserNumber,regionUserNumber,fieldUserNumber,variableType,fieldSetType,err) !DLLEXPORT(cmfe_Field_ParameterSetDestroyNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Returns a pointer to the specified field parameter set local integer data array for a field identified by an user number. The pointer must be restored with a call to OpenCMISS::Iron::cmfe_Field_ParameterSetDataRestore call. Note: the values can be used for read operations but a field parameter set update or add calls must be used to change any values. - SUBROUTINE cmfe_Field_ParameterSetDataGetIntgNumber(regionUserNumber,fieldUserNumber,variableType,fieldSetType,parameters,err) + SUBROUTINE cmfe_Field_ParameterSetDataGetIntgNumber(contextUserNumber,regionUserNumber,fieldUserNumber,variableType, & + & fieldSetType,parameters,err) !DLLEXPORT(cmfe_Field_ParameterSetDataGetIntgNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Returns a pointer to the specified field parameter set local single precision data array for a field identified by an user number. The pointer must be restored with a call to OpenCMISS::Iron::cmfe_Field_ParameterSetDataRestore call. Note: the values can be used for read operations but a field parameter set update or add calls must be used to change any values. - SUBROUTINE cmfe_Field_ParameterSetDataGetSPNumber(regionUserNumber,fieldUserNumber,variableType,fieldSetType,parameters,err) + SUBROUTINE cmfe_Field_ParameterSetDataGetSPNumber(contextUserNumber,regionUserNumber,fieldUserNumber,variableType, & + & fieldSetType,parameters,err) !DLLEXPORT(cmfe_Field_ParameterSetDataGetSPNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Returns a pointer to the specified field parameter set local double precision data array for a field identified by an user number. The pointer must be restored with a call to OpenCMISS::Iron::cmfe_Field_ParameterSetDataRestore call. Note: the values can be used for read operations but a field parameter set update or add calls must be used to change any values. - SUBROUTINE cmfe_Field_ParameterSetDataGetDPNumber(regionUserNumber,fieldUserNumber,variableType,fieldSetType,parameters,err) + SUBROUTINE cmfe_Field_ParameterSetDataGetDPNumber(contextUserNumber,regionUserNumber,fieldUserNumber,variableType, & + & fieldSetType,parameters,err) !DLLEXPORT(cmfe_Field_ParameterSetDataGetDPNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Returns a pointer to the specified field parameter set local logical data array for a field identified by an user number. The pointer must be restored with a call to OpenCMISS::Iron::cmfe_Field_ParameterSetDataRestore call. Note: the values can be used for read operations but a field parameter set update or add calls must be used to change any values. - SUBROUTINE cmfe_Field_ParameterSetDataGetLNumber(regionUserNumber,fieldUserNumber,variableType,fieldSetType,parameters,err) + SUBROUTINE cmfe_Field_ParameterSetDataGetLNumber(contextUserNumber,regionUserNumber,fieldUserNumber,variableType, & + & fieldSetType,parameters,err) !DLLEXPORT(cmfe_Field_ParameterSetDataGetLNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Restores the specified field variable parameter set local integer array that was obtained with an OpenCMISS::Iron::cmfe_Field_ParameterSetDataGet call for a field that is specified with an user number. - SUBROUTINE cmfe_Field_ParameterSetDataRestoreIntgNumber(regionUserNumber,fieldUserNumber,variableType,fieldSetType,parameters,err) + SUBROUTINE cmfe_Field_ParameterSetDataRestoreIntgNumber(contextUserNumber,regionUserNumber,fieldUserNumber,variableType, & + & fieldSetType,parameters,err) !DLLEXPORT(cmfe_Field_ParameterSetDataRestoreIntgNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Restores the specified field variable parameter set local single precision array that was obtained with an OpenCMISS::Iron::cmfe_Field_ParameterSetDataGet call for a field that is specified with an user number. - SUBROUTINE cmfe_Field_ParameterSetDataRestoreSPNumber(regionUserNumber,fieldUserNumber,variableType,fieldSetType,parameters,err) + SUBROUTINE cmfe_Field_ParameterSetDataRestoreSPNumber(contextUserNumber,regionUserNumber,fieldUserNumber,variableType, & + & fieldSetType,parameters,err) !DLLEXPORT(cmfe_Field_ParameterSetDataRestoreSPNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Restores the specified field variable parameter set local double precision array that was obtained with an OpenCMISS::Iron::cmfe_Field_ParameterSetDataGet call for a field that is specified with an user number. - SUBROUTINE cmfe_Field_ParameterSetDataRestoreDPNumber(regionUserNumber,fieldUserNumber,variableType,fieldSetType,parameters,err) + SUBROUTINE cmfe_Field_ParameterSetDataRestoreDPNumber(contextUserNumber,regionUserNumber,fieldUserNumber,variableType, & + & fieldSetType,parameters,err) !DLLEXPORT(cmfe_Field_ParameterSetDataRestoreDPNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Restores the specified field variable parameter set local logical array that was obtained with an OpenCMISS::Iron::cmfe_Field_ParameterSetDataGet call for a field that is specified with an user number. - SUBROUTINE cmfe_Field_ParameterSetDataRestoreLNumber(regionUserNumber,fieldUserNumber,variableType,fieldSetType,parameters,err) + SUBROUTINE cmfe_Field_ParameterSetDataRestoreLNumber(contextUserNumber,regionUserNumber,fieldUserNumber,variableType, & + & fieldSetType,parameters,err) !DLLEXPORT(cmfe_Field_ParameterSetDataRestoreLNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Returns from the given parameter set an integer value for the specified constant of a field variable component for a field identified by a user number. - SUBROUTINE cmfe_Field_ParameterSetGetConstantIntgNumber(regionUserNumber,fieldUserNumber,variableType,fieldSetType, & - & componentNumber,value,err) + SUBROUTINE cmfe_Field_ParameterSetGetConstantIntgNumber(contextUserNumber,regionUserNumber,fieldUserNumber,variableType, & + & fieldSetType,componentNumber,value,err) !DLLEXPORT(cmfe_Field_ParameterSetGetConstantIntgNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Returns from the given parameter set a single precision value for the specified constant of a field variable component for a field identified by a user number. - SUBROUTINE cmfe_Field_ParameterSetGetConstantSPNumber(regionUserNumber,fieldUserNumber,variableType,fieldSetType, & - & componentNumber,value,err) + SUBROUTINE cmfe_Field_ParameterSetGetConstantSPNumber(contextUserNumber,regionUserNumber,fieldUserNumber,variableType, & + & fieldSetType,componentNumber,value,err) !DLLEXPORT(cmfe_Field_ParameterSetGetConstantSPNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Returns from the given parameter set a double precision value for the specified constant of a field variable component for a field identified by a user number. - SUBROUTINE cmfe_Field_ParameterSetGetConstantDPNumber(regionUserNumber,fieldUserNumber,variableType,fieldSetType, & - & componentNumber,value,err) + SUBROUTINE cmfe_Field_ParameterSetGetConstantDPNumber(contextUserNumber,regionUserNumber,fieldUserNumber,variableType, & + & fieldSetType,componentNumber,value,err) !DLLEXPORT(cmfe_Field_ParameterSetGetConstantDPNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Returns from the given parameter set a logical value for the specified constant of a field variable component for a field identified by a user number. - SUBROUTINE cmfe_Field_ParameterSetGetConstantLNumber(regionUserNumber,fieldUserNumber,variableType,fieldSetType, & - & componentNumber,value,err) + SUBROUTINE cmfe_Field_ParameterSetGetConstantLNumber(contextUserNumber,regionUserNumber,fieldUserNumber,variableType, & + & fieldSetType,componentNumber,value,err) !DLLEXPORT(cmfe_Field_ParameterSetGetConstantLNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Returns from the given parameter set a integer value for the specified data point of a field variable component for a field identified by a user number. - SUBROUTINE cmfe_Field_ParameterSetGetDataPointIntgNumberI(parentRegionUserNumber,interfaceUserNumber,fieldUserNumber, & - & variableType,fieldSetType,userDataPointNumber,componentNumber,value,err) + SUBROUTINE cmfe_Field_ParameterSetGetDataPointIntgNumberI(contextUserNumber,parentRegionUserNumber,interfaceUserNumber, & + & fieldUserNumber,variableType,fieldSetType,userDataPointNumber,componentNumber,value,err) !DLLEXPORT(cmfe_Field_ParameterSetGetDataPointIntgNumberI) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Returns from the given parameter set a integer value for the specified data point of a field variable component for a field identified by a user number. - SUBROUTINE cmfe_Field_ParameterSetGetDataPointIntgNumberR(regionUserNumber,fieldUserNumber,variableType,fieldSetType, & - & userDataPointNumber,componentNumber,value,err) + SUBROUTINE cmfe_Field_ParameterSetGetDataPointIntgNumberR(contextUserNumber,regionUserNumber,fieldUserNumber,variableType, & + & fieldSetType,userDataPointNumber,componentNumber,value,err) !DLLEXPORT(cmfe_Field_ParameterSetGetDataPointIntgNumberR) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Returns from the given parameter set a single precision value for the specified data point of a field variable component for a field identified by a user number. - SUBROUTINE cmfe_Field_ParameterSetGetDataPointSPNumberI(parentRegionUserNumber,interfaceUserNumber,fieldUserNumber, & - & variableType,fieldSetType,userDataPointNumber,componentNumber,value,err) + SUBROUTINE cmfe_Field_ParameterSetGetDataPointSPNumberI(contextUserNumber,parentRegionUserNumber,interfaceUserNumber, & + & fieldUserNumber,variableType,fieldSetType,userDataPointNumber,componentNumber,value,err) !DLLEXPORT(cmfe_Field_ParameterSetGetDataPointSPNumberI) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Returns from the given parameter set a single precision value for the specified data point of a field variable component for a field identified by a user number. - SUBROUTINE cmfe_Field_ParameterSetGetDataPointSPNumberR(regionUserNumber,fieldUserNumber,variableType,fieldSetType, & - & userDataPointNumber,componentNumber,value,err) + SUBROUTINE cmfe_Field_ParameterSetGetDataPointSPNumberR(contextUserNumber,regionUserNumber,fieldUserNumber,variableType, & + & fieldSetType,userDataPointNumber,componentNumber,value,err) !DLLEXPORT(cmfe_Field_ParameterSetGetDataPointSPNumberR) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Returns from the given parameter set a double precision value for the specified data point of a field variable component for a field identified by a user number. - SUBROUTINE cmfe_Field_ParameterSetGetDataPointDPNumberI(parentRegionUserNumber,interfaceUserNumber,fieldUserNumber, & - & variableType,fieldSetType,userDataPointNumber,componentNumber,value,err) + SUBROUTINE cmfe_Field_ParameterSetGetDataPointDPNumberI(contextUserNumber,parentRegionUserNumber,interfaceUserNumber, & + & fieldUserNumber,variableType,fieldSetType,userDataPointNumber,componentNumber,value,err) !DLLEXPORT(cmfe_Field_ParameterSetGetDataPointDPNumberI) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Returns from the given parameter set a double precision value for the specified data point of a field variable component for a field identified by a user number. - SUBROUTINE cmfe_Field_ParameterSetGetDataPointDPNumberR(regionUserNumber,fieldUserNumber,variableType,fieldSetType, & - & userDataPointNumber,componentNumber,value,err) + SUBROUTINE cmfe_Field_ParameterSetGetDataPointDPNumberR(contextUserNumber,regionUserNumber,fieldUserNumber,variableType, & + & fieldSetType,userDataPointNumber,componentNumber,value,err) !DLLEXPORT(cmfe_Field_ParameterSetGetDataPointDPNumberR) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Returns from the given parameter set a logical value for the specified data point of a field variable component for a field identified by a user number. - SUBROUTINE cmfe_Field_ParameterSetGetDataPointLNumberI(parentRegionUserNumber,interfaceUserNumber,fieldUserNumber, & - & variableType,fieldSetType,userDataPointNumber,componentNumber,value,err) + SUBROUTINE cmfe_Field_ParameterSetGetDataPointLNumberI(contextUserNumber,parentRegionUserNumber,interfaceUserNumber, & + & fieldUserNumber,variableType,fieldSetType,userDataPointNumber,componentNumber,value,err) !DLLEXPORT(cmfe_Field_ParameterSetGetDataPointLNumberI) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Returns from the given parameter set a logical value for the specified data point of a field variable component for a field identified by a user number. - SUBROUTINE cmfe_Field_ParameterSetGetDataPointLNumberR(regionUserNumber,fieldUserNumber,variableType,fieldSetType, & - & userDataPointNumber,componentNumber,value,err) + SUBROUTINE cmfe_Field_ParameterSetGetDataPointLNumberR(contextUserNumber,regionUserNumber,fieldUserNumber,variableType, & + & fieldSetType,userDataPointNumber,componentNumber,value,err) !DLLEXPORT(cmfe_Field_ParameterSetGetDataPointLNumberR) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Returns from the given parameter set an integer value for the specified element of a field variable component for a field identified by a user number. - SUBROUTINE cmfe_Field_ParameterSetGetElementIntgNumber(regionUserNumber,fieldUserNumber,variableType,fieldSetType, & - & userElementNumber,componentNumber,value,err) + SUBROUTINE cmfe_Field_ParameterSetGetElementIntgNumber(contextUserNumber,regionUserNumber,fieldUserNumber,variableType, & + & fieldSetType,userElementNumber,componentNumber,value,err) !DLLEXPORT(cmfe_Field_ParameterSetGetElementIntgNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Returns from the given parameter set a single precision value for the specified element of a field variable component for a field identified by a user number. - SUBROUTINE cmfe_Field_ParameterSetGetElementSPNumber(regionUserNumber,fieldUserNumber,variableType,fieldSetType, & - & userElementNumber,componentNumber,value,err) + SUBROUTINE cmfe_Field_ParameterSetGetElementSPNumber(contextUserNumber,regionUserNumber,fieldUserNumber,variableType, & + & fieldSetType,userElementNumber,componentNumber,value,err) !DLLEXPORT(cmfe_Field_ParameterSetGetElementSPNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Returns from the given parameter set a double precision value for the specified element of a field variable component for a field identified by a user number. - SUBROUTINE cmfe_Field_ParameterSetGetElementDPNumber(regionUserNumber,fieldUserNumber,variableType,fieldSetType, & - & userElementNumber,componentNumber,value,err) + SUBROUTINE cmfe_Field_ParameterSetGetElementDPNumber(contextUserNumber,regionUserNumber,fieldUserNumber,variableType, & + & fieldSetType,userElementNumber,componentNumber,value,err) !DLLEXPORT(cmfe_Field_ParameterSetGetElementDPNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Returns from the given parameter set a logical value for the specified element of a field variable component for a field identified by a user number. - SUBROUTINE cmfe_Field_ParameterSetGetElementLNumber(regionUserNumber,fieldUserNumber,variableType,fieldSetType, & - & userElementNumber,componentNumber,value,err) + SUBROUTINE cmfe_Field_ParameterSetGetElementLNumber(contextUserNumber,regionUserNumber,fieldUserNumber,variableType, & + & fieldSetType,userElementNumber,componentNumber,value,err) !DLLEXPORT(cmfe_Field_ParameterSetGetElementLNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Returns from the given parameter set an integer value for the specified node and derivative of a field variable component for a field identified by a user number. - SUBROUTINE cmfe_Field_ParameterSetGetNodeIntgNumber(regionUserNumber,fieldUserNumber,variableType,fieldSetType, & - & versionNumber,derivativeNumber,userNodeNumber,componentNumber,value,err) + SUBROUTINE cmfe_Field_ParameterSetGetNodeIntgNumber(contextUserNumber,regionUserNumber,fieldUserNumber,variableType, & + & fieldSetType,versionNumber,derivativeNumber,userNodeNumber,componentNumber,value,err) !DLLEXPORT(cmfe_Field_ParameterSetGetNodeIntgNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Returns from the given parameter set a single precision value for the specified node and derivative of a field variable component for a field identified by a user number. - SUBROUTINE cmfe_Field_ParameterSetGetNodeSPNumber(regionUserNumber,fieldUserNumber,variableType,fieldSetType, & - & versionNumber,derivativeNumber,userNodeNumber,componentNumber,value,err) + SUBROUTINE cmfe_Field_ParameterSetGetNodeSPNumber(contextUserNumber,regionUserNumber,fieldUserNumber,variableType, & + & fieldSetType,versionNumber,derivativeNumber,userNodeNumber,componentNumber,value,err) !DLLEXPORT(cmfe_Field_ParameterSetGetNodeSPNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Returns from the given parameter set a double precision value for the specified node and derivative of a field variable component for a field identified by a user number. - SUBROUTINE cmfe_Field_ParameterSetGetNodeDPNumber(regionUserNumber,fieldUserNumber,variableType,fieldSetType, & - & versionNumber,derivativeNumber,userNodeNumber,componentNumber,value,err) + SUBROUTINE cmfe_Field_ParameterSetGetNodeDPNumber(contextUserNumber,regionUserNumber,fieldUserNumber,variableType, & + & fieldSetType,versionNumber,derivativeNumber,userNodeNumber,componentNumber,value,err) !DLLEXPORT(cmfe_Field_ParameterSetGetNodeDPNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Returns from the given parameter set a logical value for the specified node and derivative of a field variable component for a field identified by a user number. - SUBROUTINE cmfe_Field_ParameterSetGetNodeLNumber(regionUserNumber,fieldUserNumber,variableType,fieldSetType, & - & versionNumber,derivativeNumber,userNodeNumber,componentNumber,value,err) + SUBROUTINE cmfe_Field_ParameterSetGetNodeLNumber(contextUserNumber,regionUserNumber,fieldUserNumber,variableType, & + & fieldSetType,versionNumber,derivativeNumber,userNodeNumber,componentNumber,value,err) !DLLEXPORT(cmfe_Field_ParameterSetGetNodeLNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Updates the given parameter set with the given integer value for the constant of the field variable component for a field identified by a user number. - SUBROUTINE cmfe_Field_ParameterSetUpdateConstantIntgNumber(regionUserNumber,fieldUserNumber,variableType,fieldSetType, & - & componentNumber,value,err) + SUBROUTINE cmfe_Field_ParameterSetUpdateConstantIntgNumber(contextUserNumber,regionUserNumber,fieldUserNumber,variableType, & + & fieldSetType,componentNumber,value,err) !DLLEXPORT(cmfe_Field_ParameterSetUpdateConstantIntgNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Updates the given parameter set with the given single precision value for the constant of the field variable component for a field identified by a user number. - SUBROUTINE cmfe_Field_ParameterSetUpdateConstantSPNumber(regionUserNumber,fieldUserNumber,variableType,fieldSetType, & - & componentNumber,value,err) + SUBROUTINE cmfe_Field_ParameterSetUpdateConstantSPNumber(contextUserNumber,regionUserNumber,fieldUserNumber,variableType, & + & fieldSetType,componentNumber,value,err) !DLLEXPORT(cmfe_Field_ParameterSetUpdateConstantSPNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Updates the given parameter set with the given double precision value for the constant of the field variable component for a field identified by a user number. - SUBROUTINE cmfe_Field_ParameterSetUpdateConstantDPNumber(regionUserNumber,fieldUserNumber,variableType,fieldSetType, & - & componentNumber,value,err) + SUBROUTINE cmfe_Field_ParameterSetUpdateConstantDPNumber(contextUserNumber,regionUserNumber,fieldUserNumber,variableType, & + & fieldSetType,componentNumber,value,err) !DLLEXPORT(cmfe_Field_ParameterSetUpdateConstantDPNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Updates the given parameter set with the given logical value for the constant of the field variable component for a field identified by a user number. - SUBROUTINE cmfe_Field_ParameterSetUpdateConstantLNumber(regionUserNumber,fieldUserNumber,variableType,fieldSetType, & - & componentNumber,value,err) + SUBROUTINE cmfe_Field_ParameterSetUpdateConstantLNumber(contextUserNumber,regionUserNumber,fieldUserNumber,variableType, & + & fieldSetType,componentNumber,value,err) !DLLEXPORT(cmfe_Field_ParameterSetUpdateConstantLNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Update the given parameter set a integer value for the specified data point of a field variable component for a field identified by a user number. - SUBROUTINE cmfe_Field_ParameterSetUpdateDataPointIntgNumberI(parentRegionUserNumber,interfaceUserNumber,fieldUserNumber, & - & variableType,fieldSetType,userDataPointNumber,componentNumber,value,err) + SUBROUTINE cmfe_Field_ParameterSetUpdateDataPointIntgNumberI(contextUserNumber,parentRegionUserNumber,interfaceUserNumber, & + & fieldUserNumber,variableType,fieldSetType,userDataPointNumber,componentNumber,value,err) !DLLEXPORT(cmfe_Field_ParameterSetUpdateDataPointIntgNumberI) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Update the given parameter set a integer value for the specified data point of a field variable component for a field identified by a user number. - SUBROUTINE cmfe_Field_ParameterSetUpdateDataPointIntgNumberR(regionUserNumber,fieldUserNumber,variableType,fieldSetType, & - & userDataPointNumber,componentNumber,value,err) + SUBROUTINE cmfe_Field_ParameterSetUpdateDataPointIntgNumberR(contextUserNumber,regionUserNumber,fieldUserNumber,variableType, & + & fieldSetType,userDataPointNumber,componentNumber,value,err) !DLLEXPORT(cmfe_Field_ParameterSetUpdateDataPointIntgNumberR) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Update the given parameter set a single precision value for the specified data point of a field variable component for a field identified by a user number. - SUBROUTINE cmfe_Field_ParameterSetUpdateDataPointSPNumberI(parentRegionUserNumber,interfaceUserNumber,fieldUserNumber, & - & variableType,fieldSetType,userDataPointNumber,componentNumber,value,err) + SUBROUTINE cmfe_Field_ParameterSetUpdateDataPointSPNumberI(contextUserNumber,parentRegionUserNumber,interfaceUserNumber, & + & fieldUserNumber,variableType,fieldSetType,userDataPointNumber,componentNumber,value,err) !DLLEXPORT(cmfe_Field_ParameterSetUpdateDataPointSPNumberI) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Update the given parameter set a single precision value for the specified data point of a field variable component for a field identified by a user number. - SUBROUTINE cmfe_Field_ParameterSetUpdateDataPointSPNumberR(regionUserNumber,fieldUserNumber,variableType,fieldSetType, & - & userDataPointNumber,componentNumber,value,err) + SUBROUTINE cmfe_Field_ParameterSetUpdateDataPointSPNumberR(contextUserNumber,regionUserNumber,fieldUserNumber,variableType, & + & fieldSetType,userDataPointNumber,componentNumber,value,err) !DLLEXPORT(cmfe_Field_ParameterSetUpdateDataPointSPNumberR) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Update the given parameter set a double precision value for the specified data point of a field variable component for a field identified by a user number. - SUBROUTINE cmfe_Field_ParameterSetUpdateDataPointDPNumberI(parentRegionUserNumber,interfaceUserNumber,fieldUserNumber, & - & variableType,fieldSetType,userDataPointNumber,componentNumber,value,err) + SUBROUTINE cmfe_Field_ParameterSetUpdateDataPointDPNumberI(contextUserNumber,parentRegionUserNumber,interfaceUserNumber, & + & fieldUserNumber,variableType,fieldSetType,userDataPointNumber,componentNumber,value,err) !DLLEXPORT(cmfe_Field_ParameterSetUpdateDataPointDPNumberI) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Update the given parameter set a double precision value for the specified data point of a field variable component for a field identified by a user number. - SUBROUTINE cmfe_Field_ParameterSetUpdateDataPointDPNumberR(regionUserNumber,fieldUserNumber,variableType,fieldSetType, & - & userDataPointNumber,componentNumber,value,err) + SUBROUTINE cmfe_Field_ParameterSetUpdateDataPointDPNumberR(contextUserNumber,regionUserNumber,fieldUserNumber,variableType, & + & fieldSetType,userDataPointNumber,componentNumber,value,err) !DLLEXPORT(cmfe_Field_ParameterSetUpdateDataPointDPNumberR) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Update the given parameter set a logical value for the specified data point of a field variable component for a field identified by a user number. - SUBROUTINE cmfe_Field_ParameterSetUpdateDataPointLNumberI(parentRegionUserNumber,interfaceUserNumber,fieldUserNumber, & - & variableType,fieldSetType,userDataPointNumber,componentNumber,value,err) + SUBROUTINE cmfe_Field_ParameterSetUpdateDataPointLNumberI(contextUserNumber,parentRegionUserNumber,interfaceUserNumber, & + & fieldUserNumber,variableType,fieldSetType,userDataPointNumber,componentNumber,value,err) !DLLEXPORT(cmfe_Field_ParameterSetUpdateDataPointLNumberI) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Update the given parameter set a logical value for the specified data point of a field variable component for a field identified by a user number. - SUBROUTINE cmfe_Field_ParameterSetUpdateDataPointLNumberR(regionUserNumber,fieldUserNumber,variableType,fieldSetType, & - & userDataPointNumber,componentNumber,value,err) + SUBROUTINE cmfe_Field_ParameterSetUpdateDataPointLNumberR(contextUserNumber,regionUserNumber,fieldUserNumber,variableType, & + & fieldSetType,userDataPointNumber,componentNumber,value,err) !DLLEXPORT(cmfe_Field_ParameterSetUpdateDataPointLNumberR) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Updates the given parameter set with the given integer value for the element of the field variable component for a field identified by a user number. - SUBROUTINE cmfe_Field_ParameterSetUpdateElementIntgNumber(regionUserNumber,fieldUserNumber,variableType,fieldSetType, & - & userElementNumber,componentNumber,value,err) + SUBROUTINE cmfe_Field_ParameterSetUpdateElementIntgNumber(contextUserNumber,regionUserNumber,fieldUserNumber,variableType, & + & fieldSetType,userElementNumber,componentNumber,value,err) !DLLEXPORT(cmfe_Field_ParameterSetUpdateElementIntgNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Updates the given parameter set with the given single precision value for the element of the field variable component for a field identified by a user number. - SUBROUTINE cmfe_Field_ParameterSetUpdateElementSPNumber(regionUserNumber,fieldUserNumber,variableType,fieldSetType, & - & userElementNumber,componentNumber,value,err) + SUBROUTINE cmfe_Field_ParameterSetUpdateElementSPNumber(contextUserNumber,regionUserNumber,fieldUserNumber,variableType, & + & fieldSetType,userElementNumber,componentNumber,value,err) !DLLEXPORT(cmfe_Field_ParameterSetUpdateElementSPNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Updates the given parameter set with the given double precision value for the element of the field variable component for a field identified by a user number. - SUBROUTINE cmfe_Field_ParameterSetUpdateElementDPNumber(regionUserNumber,fieldUserNumber,variableType,fieldSetType, & - & userElementNumber,componentNumber,value,err) + SUBROUTINE cmfe_Field_ParameterSetUpdateElementDPNumber(contextUserNumber,regionUserNumber,fieldUserNumber,variableType, & + & fieldSetType,userElementNumber,componentNumber,value,err) !DLLEXPORT(cmfe_Field_ParameterSetUpdateElementDPNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Updates the given parameter set with the given logical value for the element of the field variable component for a field identified by a user number. - SUBROUTINE cmfe_Field_ParameterSetUpdateElementLNumber(regionUserNumber,fieldUserNumber,variableType,fieldSetType, & - & userElementNumber,componentNumber,value,err) + SUBROUTINE cmfe_Field_ParameterSetUpdateElementLNumber(contextUserNumber,regionUserNumber,fieldUserNumber,variableType, & + & fieldSetType,userElementNumber,componentNumber,value,err) !DLLEXPORT(cmfe_Field_ParameterSetUpdateElementLNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Finishes the parameter set update for a field variable for a field identified by a user number. - SUBROUTINE cmfe_Field_ParameterSetUpdateFinishNumber(regionUserNumber,fieldUserNumber,variableType,fieldSetType,err) + SUBROUTINE cmfe_Field_ParameterSetUpdateFinishNumber(contextUserNumber,regionUserNumber,fieldUserNumber,variableType, & + & fieldSetType,err) !DLLEXPORT(cmfe_Field_ParameterSetUpdateFinishNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Updates the given parameter set with the given integer value for the node and derivative of the field variable component for a field identified by a user number. - SUBROUTINE cmfe_Field_ParameterSetUpdateNodeIntgNumber(regionUserNumber,fieldUserNumber,variableType,fieldSetType, & - & versionNumber,derivativeNumber,userNodeNumber,componentNumber,value,err) + SUBROUTINE cmfe_Field_ParameterSetUpdateNodeIntgNumber(contextUserNumber,regionUserNumber,fieldUserNumber,variableType, & + & fieldSetType,versionNumber,derivativeNumber,userNodeNumber,componentNumber,value,err) !DLLEXPORT(cmfe_Field_ParameterSetUpdateNodeIntgNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Updates the given parameter set with the given single precision value for the node and derivative of the field variable component for a field identified by a user number. - SUBROUTINE cmfe_Field_ParameterSetUpdateNodeSPNumber(regionUserNumber,fieldUserNumber,variableType,fieldSetType, & - & versionNumber,derivativeNumber,userNodeNumber,componentNumber,value,err) + SUBROUTINE cmfe_Field_ParameterSetUpdateNodeSPNumber(contextUserNumber,regionUserNumber,fieldUserNumber,variableType, & + & fieldSetType,versionNumber,derivativeNumber,userNodeNumber,componentNumber,value,err) !DLLEXPORT(cmfe_Field_ParameterSetUpdateNodeSPNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Updates the given parameter set with the given double precision value for the node and derivative of the field variable component for a field identified by a user number. - SUBROUTINE cmfe_Field_ParameterSetUpdateNodeDPNumber(regionUserNumber,fieldUserNumber,variableType,fieldSetType, & - & versionNumber,derivativeNumber,userNodeNumber,componentNumber,value,err) + SUBROUTINE cmfe_Field_ParameterSetUpdateNodeDPNumber(contextUserNumber,regionUserNumber,fieldUserNumber,variableType, & + & fieldSetType,versionNumber,derivativeNumber,userNodeNumber,componentNumber,value,err) !DLLEXPORT(cmfe_Field_ParameterSetUpdateNodeDPNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Updates the given parameter set with the given logical value for the node and derivative of the field variable component for a field identified by a user number. - SUBROUTINE cmfe_Field_ParameterSetUpdateNodeLNumber(regionUserNumber,fieldUserNumber,variableType,fieldSetType, & - & versionNumber,derivativeNumber,userNodeNumber,componentNumber,value,err) + SUBROUTINE cmfe_Field_ParameterSetUpdateNodeLNumber(contextUserNumber,regionUserNumber,fieldUserNumber,variableType, & + & fieldSetType,versionNumber,derivativeNumber,userNodeNumber,componentNumber,value,err) !DLLEXPORT(cmfe_Field_ParameterSetUpdateNodeLNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Updates the given parameter set with the given integer value for the element Gauss point of the field variable component for a field identified by a user number. - SUBROUTINE cmfe_Field_ParameterSetUpdateGaussPointIntgNumber(regionUserNumber,fieldUserNumber,variableType,fieldSetType, & - & gaussPointNumber,userElementNumber,componentNumber,value,err) + SUBROUTINE cmfe_Field_ParameterSetUpdateGaussPointIntgNumber(contextUserNumber,regionUserNumber,fieldUserNumber,variableType, & + & fieldSetType,gaussPointNumber,userElementNumber,componentNumber,value,err) !DLLEXPORT(cmfe_Field_ParameterSetUpdateGaussPointIntgNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Updates the given parameter set with the given single precision value for the element Gauss point of the field variable component for a field identified by a user number. - SUBROUTINE cmfe_Field_ParameterSetUpdateGaussPointSPNumber(regionUserNumber,fieldUserNumber,variableType,fieldSetType, & - & gaussPointNumber,userElementNumber,componentNumber,value,err) + SUBROUTINE cmfe_Field_ParameterSetUpdateGaussPointSPNumber(contextUserNumber,regionUserNumber,fieldUserNumber,variableType, & + & fieldSetType,gaussPointNumber,userElementNumber,componentNumber,value,err) !DLLEXPORT(cmfe_Field_ParameterSetUpdateGaussPointSPNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Updates the given parameter set with the given double precision value for the element Gauss point of the field variable component for a field identified by a user number. - SUBROUTINE cmfe_Field_ParameterSetUpdateGaussPointDPNumber(regionUserNumber,fieldUserNumber,variableType,fieldSetType, & - & gaussPointNumber,userElementNumber,componentNumber,value,err) + SUBROUTINE cmfe_Field_ParameterSetUpdateGaussPointDPNumber(contextUserNumber,regionUserNumber,fieldUserNumber,variableType, & + & fieldSetType,gaussPointNumber,userElementNumber,componentNumber,value,err) !DLLEXPORT(cmfe_Field_ParameterSetUpdateGaussPointDPNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Updates the given parameter set with the given logical value for the element Gauss point of the field variable component for a field identified by a user number. - SUBROUTINE cmfe_Field_ParameterSetUpdateGaussPointLNumber(regionUserNumber,fieldUserNumber,variableType,fieldSetType, & - & gaussPointNumber,userElementNumber,componentNumber,value,err) + SUBROUTINE cmfe_Field_ParameterSetUpdateGaussPointLNumber(contextUserNumber,regionUserNumber,fieldUserNumber,variableType, & + & fieldSetType,gaussPointNumber,userElementNumber,componentNumber,value,err) !DLLEXPORT(cmfe_Field_ParameterSetUpdateGaussPointLNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Interpolates the given parameter set at a specified xi location for the specified element and derviative and returns double precision values for a field identified by a user number. - SUBROUTINE cmfe_Field_ParameterSetInterpolateSingleXiDPNumber(regionUserNumber,fieldUserNumber,variableType,fieldSetType, & - & derivativeNumber,userElementNumber,xi,values,err) + SUBROUTINE cmfe_Field_ParameterSetInterpolateSingleXiDPNumber(contextUserNumber,regionUserNumber,fieldUserNumber,variableType, & + & fieldSetType,derivativeNumber,userElementNumber,xi,values,err) !DLLEXPORT(cmfe_Field_ParameterSetInterpolateSingleXiDPNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Interpolates the given parameter set at a specified set of xi locations for the specified element and derviative and returns double precision values for a field identified by a user number. - SUBROUTINE cmfe_Field_ParameterSetInterpolateMultipleXiDPNumber(regionUserNumber,fieldUserNumber,variableType,fieldSetType, & - & derivativeNumber,userElementNumber,xi,values,err) + SUBROUTINE cmfe_Field_ParameterSetInterpolateMultipleXiDPNumber(contextUserNumber,regionUserNumber,fieldUserNumber,variableType, & + & fieldSetType,derivativeNumber,userElementNumber,xi,values,err) !DLLEXPORT(cmfe_Field_ParameterSetInterpolateMultipleXiDPNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Interpolates the given parameter set at a specified Gauss point for the specified element and derviative and returns double precision values for a or a field identified by a user number. - SUBROUTINE cmfe_Field_ParameterSetInterpolateSingleGaussDPNumber(regionUserNumber,fieldUserNumber,variableType,fieldSetType, & - & derivativeNumber,userElementNumber,quadratureScheme,GaussPoint,values,err) + SUBROUTINE cmfe_Field_ParameterSetInterpolateSingleGaussDPNumber(contextUserNumber,regionUserNumber,fieldUserNumber, & + & variableType,fieldSetType,derivativeNumber,userElementNumber,quadratureScheme,GaussPoint,values,err) !DLLEXPORT(cmfe_Field_ParameterSetInterpolateSingleGaussDPNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Interpolates the given parameter set at a specified set of Gauss points for the specified element and derviative and returns double precision values for a or a field identified by a user number. If no Gauss points are specified then all Gauss points are interpolated. - SUBROUTINE cmfe_Field_ParameterSetInterpolateMultipleGaussDPNumber(regionUserNumber,fieldUserNumber,variableType,fieldSetType, & - & derivativeNumber,userElementNumber,quadratureScheme,GaussPoints,values,err) + SUBROUTINE cmfe_Field_ParameterSetInterpolateMultipleGaussDPNumber(contextUserNumber,regionUserNumber,fieldUserNumber, & + & variableType,fieldSetType,derivativeNumber,userElementNumber,quadratureScheme,GaussPoints,values,err) !DLLEXPORT(cmfe_Field_ParameterSetInterpolateMultipleGaussDPNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Starts the parameter set update for a field variable for a field identified by a user number. - SUBROUTINE cmfe_Field_ParameterSetUpdateStartNumber(regionUserNumber,fieldUserNumber,variableType,fieldSetType,err) + SUBROUTINE cmfe_Field_ParameterSetUpdateStartNumber(contextUserNumber,regionUserNumber,fieldUserNumber,variableType, & + & fieldSetType,err) !DLLEXPORT(cmfe_Field_ParameterSetUpdateStartNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Copy the parameters from the parameter set of a component of a field variable to the paramters of a parameter set of !>a component of another field variable, where both fields are identified by user numbers. - SUBROUTINE cmfe_Field_ParametersToFieldParametersComponentCopyNumber(fromRegionUserNumber,fromFieldUserNumber,fromVariableType, & - & fromParameterSetType, fromComponentNumber,toRegionUserNumber,toFieldUserNumber,toVariableType,toParameterSetType, & - & toComponentNumber,err) + SUBROUTINE cmfe_Field_ParametersToFieldParametersComponentCopyNumber(contextUserNumber,fromRegionUserNumber, & + & fromFieldUserNumber,fromVariableType,fromParameterSetType,fromComponentNumber,toRegionUserNumber, & + & toFieldUserNumber,toVariableType,toParameterSetType,toComponentNumber,err) !DLLEXPORT(cmfe_Field_ParametersToFieldParametersComponentCopyNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Returns the scaling type for a field identified by a user number. - SUBROUTINE cmfe_Field_ScalingTypeGetNumber(regionUserNumber,fieldUserNumber,scalingType,err) + SUBROUTINE cmfe_Field_ScalingTypeGetNumber(contextUserNumber,regionUserNumber,fieldUserNumber,scalingType,err) !DLLEXPORT(cmfe_Field_ScalingTypeGetNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the scaling type for a field identified by a user number. - SUBROUTINE cmfe_Field_ScalingTypeSetNumber(regionUserNumber,fieldUserNumber,scalingType,err) + SUBROUTINE cmfe_Field_ScalingTypeSetNumber(contextUserNumber,regionUserNumber,fieldUserNumber,scalingType,err) !DLLEXPORT(cmfe_Field_ScalingTypeSetNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Returns the field type for a field identified by a user number. - SUBROUTINE cmfe_Field_TypeGetNumber(regionUserNumber,fieldUserNumber,fieldType,err) + SUBROUTINE cmfe_Field_TypeGetNumber(contextUserNumber,regionUserNumber,fieldUserNumber,fieldType,err) !DLLEXPORT(cmfe_Field_TypeGetNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the field type for a field identified by a user number. - SUBROUTINE cmfe_Field_TypeSetNumber(regionUserNumber,fieldUserNumber,fieldType,err) + SUBROUTINE cmfe_Field_TypeSetNumber(contextUserNumber,regionUserNumber,fieldUserNumber,fieldType,err) !DLLEXPORT(cmfe_Field_TypeSetNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Returns the character string label for a field variable for a field identified by a user number. - SUBROUTINE cmfe_Field_VariableLabelGetCNumber(regionUserNumber,fieldUserNumber,variableType,label,err) + SUBROUTINE cmfe_Field_VariableLabelGetCNumber(contextUserNumber,regionUserNumber,fieldUserNumber,variableType,label,err) !DLLEXPORT(cmfe_Field_VariableLabelGetCNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Returns the varying string label for a field variable for a field identified by a user number. - SUBROUTINE cmfe_Field_VariableLabelGetVSNumber(regionUserNumber,fieldUserNumber,variableType,label,err) + SUBROUTINE cmfe_Field_VariableLabelGetVSNumber(contextUserNumber,regionUserNumber,fieldUserNumber,variableType,label,err) !DLLEXPORT(cmfe_Field_VariableLabelGetVSNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the character string label for a field variable for a field identified by a user number. - SUBROUTINE cmfe_Field_VariableLabelSetCNumber(regionUserNumber,fieldUserNumber,variableType,label,err) + SUBROUTINE cmfe_Field_VariableLabelSetCNumber(contextUserNumber,regionUserNumber,fieldUserNumber,variableType,label,err) !DLLEXPORT(cmfe_Field_VariableLabelSetCNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the varying string label for a field variable for a field identified by a user number. - SUBROUTINE cmfe_Field_VariableLabelSetVSNumber(regionUserNumber,fieldUserNumber,variableType,label,err) + SUBROUTINE cmfe_Field_VariableLabelSetVSNumber(contextUserNumber,regionUserNumber,fieldUserNumber,variableType,label,err) !DLLEXPORT(cmfe_Field_VariableLabelSetVSNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Returns the field variable types for a field identified by a user number. - SUBROUTINE cmfe_Field_VariableTypesGetNumber(regionUserNumber,fieldUserNumber,variableTypes,err) + SUBROUTINE cmfe_Field_VariableTypesGetNumber(contextUserNumber,regionUserNumber,fieldUserNumber,variableTypes,err) !DLLEXPORT(cmfe_Field_VariableTypesGetNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the field variable types for a field identified by a user number. - SUBROUTINE cmfe_Field_VariableTypesSetNumber(regionUserNumber,fieldUserNumber,variableTypes,err) + SUBROUTINE cmfe_Field_VariableTypesSetNumber(contextUserNumber,regionUserNumber,fieldUserNumber,variableTypes,err) !DLLEXPORT(cmfe_Field_VariableTypesSetNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Export element information for fields set identified by an object. \todo number method + !>Export element information for fields set identified by user number. + SUBROUTINE cmfe_Fields_ElementsExportCCNumber(contextUserNumber,regionUserNumber,fileName,method,err) + !DLLEXPORT(cmfe_Fields_ElementsExportCCNumber) + + !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Export element information for fields set identified by user number. + SUBROUTINE cmfe_Fields_ElementsExportVSCNumber(contextUserNumber,regionUserNumber,fileName,method,err) + !DLLEXPORT(cmfe_Fields_ElementsExportVSCNumber) + + !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Export element information for fields set identified by user number + SUBROUTINE cmfe_Fields_ElementsExportCVSNumber(contextUserNumber,regionUserNumber,fileName,method,err) + !DLLEXPORT(cmfe_Fields_ElementsExportCVSNumber) + + !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Export element information for fields set identified by user number. + SUBROUTINE cmfe_Fields_ElementsExportVSVSNumber(contextUserNumber,regionUserNumber,fileName,method,err) + !DLLEXPORT(cmfe_Fields_ElementsExportVSVSNumber) + + !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Export element information for fields set identified by an object. SUBROUTINE cmfe_Fields_ElementsExportCCObj(fields,fileName,method,err) !DLLEXPORT(cmfe_Fields_ElementsExportCCObj) @@ -36960,7 +41303,7 @@ END SUBROUTINE cmfe_Fields_ElementsExportCCObj ! - !>Export element information for fields set identified by an object. \todo number method + !>Export element information for fields set identified by an object. SUBROUTINE cmfe_Fields_ElementsExportVSCObj(fields,fileName,method,err) !DLLEXPORT(cmfe_Fields_ElementsExportVSCObj) @@ -36993,7 +41336,7 @@ END SUBROUTINE cmfe_Fields_ElementsExportVSCObj ! - !>Export element information for fields set identified by an object. \todo number method + !>Export element information for fields set identified by an object. SUBROUTINE cmfe_Fields_ElementsExportCVSObj(fields,fileName,method,err) !DLLEXPORT(cmfe_Fields_ElementsExportCVSObj) @@ -37025,7 +41368,7 @@ END SUBROUTINE cmfe_Fields_ElementsExportCVSObj !================================================================================================================================ ! - !>Export element information for fields set identified by an object. \todo number method + !>Export element information for fields set identified by an object. SUBROUTINE cmfe_Fields_ElementsExportVSVSObj(fields,fileName,method,err) !DLLEXPORT(cmfe_Fields_ElementsExportVSVSObj) @@ -37052,7 +41395,173 @@ END SUBROUTINE cmfe_Fields_ElementsExportVSVSObj !================================================================================================================================ ! - !>Export nodal information for fields set identified by an object. \todo number method + !>Export nodal information for fields set identified by user number + SUBROUTINE cmfe_Fields_NodesExportCCNumber(contextUserNumber,regionUserNumber,fileName,method,err) + !DLLEXPORT(cmfe_Fields_NodesExportCCNumber) + + !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Export nodal information for fields set identified by user number + SUBROUTINE cmfe_Fields_NodesExportVSCNumber(contextUserNumber,regionUserNumber,fileName,method,err) + !DLLEXPORT(cmfe_Fields_NodesExportVSCNumber) + + !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Export nodal information for fields set identified by user number + SUBROUTINE cmfe_Fields_NodesExportCVSNumber(contextUserNumber,regionUserNumber,fileName,method,err) + !DLLEXPORT(cmfe_Fields_NodesExportCVSNumber) + + !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Export nodal information for fields set identified by user number. + SUBROUTINE cmfe_Fields_NodesExportVSVSNumber(contextUserNumber,regionUserNumber,fileName,method,err) + !DLLEXPORT(cmfe_Fields_NodesExportVSVSNumber) + + !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Export nodal information for fields set identified by an object. SUBROUTINE cmfe_Fields_NodesExportCCObj(fields,fileName,method,err) !DLLEXPORT(cmfe_Fields_NodesExportCCObj) @@ -37088,7 +41597,7 @@ END SUBROUTINE cmfe_Fields_NodesExportCCObj !================================================================================================================================ ! - !>Export nodal information for fields set identified by an object. \todo number method + !>Export nodal information for fields set identified by an object. SUBROUTINE cmfe_Fields_NodesExportVSCObj(fields,fileName,method,err) !DLLEXPORT(cmfe_Fields_NodesExportVSCObj) @@ -37120,7 +41629,7 @@ END SUBROUTINE cmfe_Fields_NodesExportVSCObj !================================================================================================================================ ! - !>Export nodal information for fields set identified by an object. \todo number method + !>Export nodal information for fields set identified by an object. SUBROUTINE cmfe_Fields_NodesExportCVSObj(fields,fileName,method,err) !DLLEXPORT(cmfe_Fields_NodesExportCVSObj) @@ -37152,7 +41661,7 @@ END SUBROUTINE cmfe_Fields_NodesExportCVSObj !================================================================================================================================ ! - !>Export nodal information for fields set identified by an object. \todo number method + !>Export nodal information for fields set identified by an object. SUBROUTINE cmfe_Fields_NodesExportVSVSObj(fields,fileName,method,err) !DLLEXPORT(cmfe_Fields_NodesExportVSVSObj) @@ -37182,27 +41691,34 @@ END SUBROUTINE cmfe_Fields_NodesExportVSVSObj !!================================================================================================================================== !>Returns the basis for a generated mesh on a region identified by a user number. - SUBROUTINE cmfe_GeneratedMesh_BasisGetNumber(regionUserNumber,generatedMeshUserNumber,basisUserNumbers,err) + SUBROUTINE cmfe_GeneratedMesh_BasisGetNumber(contextUserNumber,regionUserNumber,generatedMeshUserNumber,basisUserNumbers,err) !DLLEXPORT(cmfe_GeneratedMesh_BasisGetNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the basis for a generated mesh on a region identified by a user number. - SUBROUTINE cmfe_GeneratedMesh_BasisSetNumber0(regionUserNumber,generatedMeshUserNumber,basisUserNumber,err) + SUBROUTINE cmfe_GeneratedMesh_BasisSetNumber0(contextUserNumber,regionUserNumber,generatedMeshUserNumber,basisUserNumber,err) !DLLEXPORT(cmfe_GeneratedMesh_BasisSetNumber0) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !basis - CALL GENERATED_MESH_BASIS_SET(generatedMesh,bases,err,error,*999) + CALL cmfe_GeneratedMesh_BasisSetNumber1(contextUserNumber,regionUserNumber,generatedMeshUserNumber,[basisUserNumber],err) EXITS("cmfe_GeneratedMesh_BasisSetNumber0") RETURN @@ -37324,10 +41827,11 @@ END SUBROUTINE cmfe_GeneratedMesh_BasisSetNumber0 ! !>Sets/changes the basis for a generated mesh on a region identified by a user number. - SUBROUTINE cmfe_GeneratedMesh_BasisSetNumber1(regionUserNumber,generatedMeshUserNumber,basisUserNumbers,err) + SUBROUTINE cmfe_GeneratedMesh_BasisSetNumber1(contextUserNumber,regionUserNumber,generatedMeshUserNumber,basisUserNumbers,err) !DLLEXPORT(cmfe_GeneratedMesh_BasisSetNumber1) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !basis ENDDO !basisIdx CALL GENERATED_MESH_BASIS_SET(generatedMesh,bases,err,error,*999) @@ -37435,23 +41948,30 @@ END SUBROUTINE cmfe_GeneratedMesh_BasisSetObj1 ! !>Sets/changes the base vectors for a generated mesh on a region identified by a user number. - SUBROUTINE cmfe_GeneratedMesh_BaseVectorsSetNumber(regionUserNumber,generatedMeshUserNumber,baseVectors,err) + SUBROUTINE cmfe_GeneratedMesh_BaseVectorsSetNumber(contextUserNumber,regionUserNumber,generatedMeshUserNumber,baseVectors,err) !DLLEXPORT(cmfe_GeneratedMesh_BaseVectorsSetNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Finishes the creation of a generated mesh on a region identified by a user number. - SUBROUTINE cmfe_GeneratedMesh_CreateFinishNumber(regionUserNumber,generatedMeshUserNumber,meshUserNumber,err) + SUBROUTINE cmfe_GeneratedMesh_CreateFinishNumber(contextUserNumber,regionUserNumber,generatedMeshUserNumber,meshUserNumber,err) !DLLEXPORT(cmfe_GeneratedMesh_CreateFinishNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Starts the creation of a generated mesh on a region identified by a user number. - SUBROUTINE cmfe_GeneratedMesh_CreateStartNumber(generatedMeshUserNumber,regionUserNumber,err) + SUBROUTINE cmfe_GeneratedMesh_CreateStartNumber(generatedMeshUserNumber,contextUserNumber,regionUserNumber,err) !DLLEXPORT(cmfe_GeneratedMesh_CreateStartNumber) !Argument variables INTEGER(INTG), INTENT(IN) :: generatedMeshUserNumber !Destroys a generated mesh on a region identified by a user number. - SUBROUTINE cmfe_GeneratedMesh_DestroyNumber(regionUserNumber,generatedMeshUserNumber,err) + SUBROUTINE cmfe_GeneratedMesh_DestroyNumber(contextUserNumber,regionUserNumber,generatedMeshUserNumber,err) !DLLEXPORT(cmfe_GeneratedMesh_DestroyNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Returns the extent for a generated mesh on a region identified by a user number. - SUBROUTINE cmfe_GeneratedMesh_ExtentGetNumber(regionUserNumber,generatedMeshUserNumber,extent,err) + SUBROUTINE cmfe_GeneratedMesh_ExtentGetNumber(contextUserNumber,regionUserNumber,generatedMeshUserNumber,extent,err) !DLLEXPORT(cmfe_GeneratedMesh_ExtentGetNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the extent for a generated mesh on a region identified by a user number. - SUBROUTINE cmfe_GeneratedMesh_ExtentSetNumber(regionUserNumber,generatedMeshUserNumber,extent,err) + SUBROUTINE cmfe_GeneratedMesh_ExtentSetNumber(contextUserNumber,regionUserNumber,generatedMeshUserNumber,extent,err) !DLLEXPORT(cmfe_GeneratedMesh_ExtentSetNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Returns the number of elements for a generated mesh on a region identified by a user number. - SUBROUTINE cmfe_GeneratedMesh_NumberOfElementsGetNumber(regionUserNumber,generatedMeshUserNumber,numberOfElements,err) + SUBROUTINE cmfe_GeneratedMesh_NumberOfElementsGetNumber(contextUserNumber,regionUserNumber,generatedMeshUserNumber, & + & numberOfElements,err) !DLLEXPORT(cmfe_GeneratedMesh_NumberOfElementsGetNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the number of elements for a generated mesh on a region identified by a user number. - SUBROUTINE cmfe_GeneratedMesh_NumberOfElementsSetNumber(regionUserNumber,generatedMeshUserNumber,numberOfElements,err) + SUBROUTINE cmfe_GeneratedMesh_NumberOfElementsSetNumber(contextUserNumber,regionUserNumber,generatedMeshUserNumber, & + & numberOfElements,err) !DLLEXPORT(cmfe_GeneratedMesh_NumberOfElementsSetNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Returns the origin of a generated mesh on a region identified by a user number. - SUBROUTINE cmfe_GeneratedMesh_OriginGetNumber(regionUserNumber,generatedMeshUserNumber,origin,err) + SUBROUTINE cmfe_GeneratedMesh_OriginGetNumber(contextUserNumber,regionUserNumber,generatedMeshUserNumber,origin,err) !DLLEXPORT(cmfe_GeneratedMesh_OriginGetNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the origin of a generated mesh on a region identified by a user number. - SUBROUTINE cmfe_GeneratedMesh_OriginSetNumber(regionUserNumber,generatedMeshUserNumber,origin,err) + SUBROUTINE cmfe_GeneratedMesh_OriginSetNumber(contextUserNumber,regionUserNumber,generatedMeshUserNumber,origin,err) !DLLEXPORT(cmfe_GeneratedMesh_OriginSetNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Returns the type of a generated mesh on a region identified by a user number. - SUBROUTINE cmfe_GeneratedMesh_TypeGetNumber(regionUserNumber,generatedMeshUserNumber,generatedMeshType,err) + SUBROUTINE cmfe_GeneratedMesh_TypeGetNumber(contextUserNumber,regionUserNumber,generatedMeshUserNumber,generatedMeshType,err) !DLLEXPORT(cmfe_GeneratedMesh_TypeGetNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the type of a generated mesh on a region identified by a user number. - SUBROUTINE cmfe_GeneratedMesh_TypeSetNumber(regionUserNumber,generatedMeshUserNumber,generatedMeshType,err) + SUBROUTINE cmfe_GeneratedMesh_TypeSetNumber(contextUserNumber,regionUserNumber,generatedMeshUserNumber,generatedMeshType,err) !DLLEXPORT(cmfe_GeneratedMesh_TypeSetNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Calculates and sets the geometric field parameters for a generated mesh identified by a user number. - SUBROUTINE cmfe_GeneratedMesh_GeometricParametersCalculateNumber(regionUserNumber,generatedMeshUserNumber, & + SUBROUTINE cmfe_GeneratedMesh_GeometricParametersCalculateNumber(contextUserNumber,regionUserNumber,generatedMeshUserNumber, & & fieldUserNumber,err) !DLLEXPORT(cmfe_GeneratedMesh_GeometricParametersCalculateNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Returns a list of the nodes belonging to a surface, and their normal xi direction, of a generated mesh identified by an object. - SUBROUTINE cmfe_GeneratedMesh_SurfaceGetNumber0(regionUserNumber,generatedMeshUserNumber,surfaceType,surfaceNodes,normalXi,err) + SUBROUTINE cmfe_GeneratedMesh_SurfaceGetNumber0(contextUserNumber,regionUserNumber,generatedMeshUserNumber,surfaceType, & + & surfaceNodes,normalXi,err) !DLLEXPORT(cmfe_GeneratedMesh_SurfaceGetNumber0) !Argument variables INTEGER(INTG), INTENT(IN) :: regionUserNumber !Returns a list of the nodes belonging to a surface, and their normal xi direction, of a generated mesh identified by an object. - SUBROUTINE cmfe_GeneratedMesh_SurfaceGetNumber1(regionUserNumber,meshComponent,generatedMeshUserNumber,surfaceType, & - & surfaceNodes,normalXi,err) + SUBROUTINE cmfe_GeneratedMesh_SurfaceGetNumber1(contextUserNumber,regionUserNumber,meshComponent,generatedMeshUserNumber, & + & surfaceType,surfaceNodes,normalXi,err) !DLLEXPORT(cmfe_GeneratedMesh_SurfaceGetNumber1) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Creates a mesh embedding - SUBROUTINE cmfe_MeshEmbedding_CreateNumber(regionOneUserNumber,regionTwoUserNumber,meshEmbedding,parentMeshUserNumber, & - & childMeshUserNumber,err) + SUBROUTINE cmfe_MeshEmbedding_CreateNumber(contextUserNumber,regionOneUserNumber,regionTwoUserNumber,meshEmbedding, & + & parentMeshUserNumber,childMeshUserNumber,err) !DLLEXPORT(cmfe_MeshEmbedding_CreateNumber) + !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Finishes the creation of an interface identified by a user number. - SUBROUTINE cmfe_Interface_CreateFinishNumber(regionUserNumber,interfaceUserNumber,err) + SUBROUTINE cmfe_Interface_CreateFinishNumber(contextUserNumber,regionUserNumber,interfaceUserNumber,err) !DLLEXPORT(cmfe_Interface_CreateFinishNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Starts the creation of an interface identified by a user number. - SUBROUTINE cmfe_Interface_CreateStartNumber(interfaceUserNumber,regionUserNumber,err) + SUBROUTINE cmfe_Interface_CreateStartNumber(interfaceUserNumber,contextUserNumber,regionUserNumber,err) !DLLEXPORT(cmfe_Interface_CreateStartNumber) !Argument variables INTEGER(INTG), INTENT(IN) :: interfaceUserNumber !Sets/changes the coordinate system for an interface identified by an user number. - SUBROUTINE cmfe_Interface_CoordinateSystemSetNumber(parentRegionUserNumber,interfaceUserNumber,coordinateSystemUserNumber,err) + SUBROUTINE cmfe_Interface_CoordinateSystemSetNumber(contextUserNumber,parentRegionUserNumber,interfaceUserNumber, & + & coordinateSystemUserNumber,err) !DLLEXPORT(cmfe_Interface_CoordinateSystemSetNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Returns the coordinate system for an interface identified by an user number. - SUBROUTINE cmfe_Interface_CoordinateSystemGetNumber(parentRegionUserNumber,interfaceUserNumber,coordinateSystemUserNumber,err) + SUBROUTINE cmfe_Interface_CoordinateSystemGetNumber(contextUserNumber,parentRegionUserNumber,interfaceUserNumber, & + & coordinateSystemUserNumber,err) !DLLEXPORT(cmfe_Interface_CoordinateSystemGetNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Destroys an interface identified by a user number. - SUBROUTINE cmfe_Interface_DestroyNumber(regionUserNumber,interfaceUserNumber,err) + SUBROUTINE cmfe_Interface_DestroyNumber(contextUserNumber,regionUserNumber,interfaceUserNumber,err) !DLLEXPORT(cmfe_Interface_DestroyNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Returns the character string label for an interface identified by an user number. - SUBROUTINE cmfe_Interface_LabelGetCNumber(parentRegionUserNumber,interfaceUserNumber,label,err) + SUBROUTINE cmfe_Interface_LabelGetCNumber(contextUserNumber,parentRegionUserNumber,interfaceUserNumber,label,err) !DLLEXPORT(cmfe_Interface_LabelGetCNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Returns the varying string label for an interface identified by an user number. - SUBROUTINE cmfe_Interface_LabelGetVSNumber(parentRegionUserNumber,interfaceUserNumber,label,err) + SUBROUTINE cmfe_Interface_LabelGetVSNumber(contextUserNumber,parentRegionUserNumber,interfaceUserNumber,label,err) !DLLEXPORT(cmfe_Interface_LabelGetVSNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the character string label for an interface identified by an user number. - SUBROUTINE cmfe_Interface_LabelSetCNumber(parentRegionUserNumber,interfaceUserNumber,label,err) + SUBROUTINE cmfe_Interface_LabelSetCNumber(contextUserNumber,parentRegionUserNumber,interfaceUserNumber,label,err) !DLLEXPORT(cmfe_Interface_LabelSetCNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the varying string label for an interface identified by an user number. - SUBROUTINE cmfe_Interface_LabelSetVSNumber(parentRegionUserNumber,interfaceUserNumber,label,err) + SUBROUTINE cmfe_Interface_LabelSetVSNumber(contextUserNumber,parentRegionUserNumber,interfaceUserNumber,label,err) !DLLEXPORT(cmfe_Interface_LabelSetVSNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Adds a mesh to be coupled in an interface identified by a user number. - SUBROUTINE cmfe_Interface_MeshAddNumber(interfaceRegionUserNumber,interfaceUserNumber,meshRegionUserNumber, & + SUBROUTINE cmfe_Interface_MeshAddNumber(contextUserNumber,interfaceRegionUserNumber,interfaceUserNumber,meshRegionUserNumber, & & meshUserNumber,meshIndex,err) !DLLEXPORT(cmfe_Interface_MeshAddNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Finishes the creation of an interface coupled mesh connectivity identified by a user number. - SUBROUTINE cmfe_InterfaceMeshConnectivity_CreateFinishNumber(regionUserNumber,interfaceUserNumber,err) + SUBROUTINE cmfe_InterfaceMeshConnectivity_CreateFinishNumber(contextUserNumber,regionUserNumber,interfaceUserNumber,err) !DLLEXPORT(cmfe_InterfaceMeshConnectivity_CreateFinishNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Starts the creation of an interface meshes connectivity identified by a user number. - SUBROUTINE cmfe_InterfaceMeshConnectivity_CreateStartNumber(regionUserNumber,interfaceUserNumber,meshNumber,err) + SUBROUTINE cmfe_InterfaceMeshConnectivity_CreateStartNumber(contextUserNumber,regionUserNumber,interfaceUserNumber, & + & meshNumber,err) !DLLEXPORT(cmfe_InterfaceMeshConnectivity_CreateStartNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets the connectivity between an element in a coupled mesh to an element in the interface mesh - SUBROUTINE cmfe_InterfaceMeshConnectivity_ElementNumberSetNumber(regionUserNumber,interfaceUserNumber, & + SUBROUTINE cmfe_InterfaceMeshConnectivity_ElementNumberSetNumber(contextUserNumber,regionUserNumber,interfaceUserNumber, & & interfaceElementNumber,coupledMeshIndexNumber,coupledMeshElementNumber,err) !DLLEXPORT(cmfe_InterfaceMeshConnectivity_ElementNumberSetNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets the connectivity between an element in a coupled mesh to an element in the interface mesh - SUBROUTINE cmfe_InterfaceMeshConnectivity_NodeNumberSetNumber(regionUserNumber,interfaceUserNumber, & + SUBROUTINE cmfe_InterfaceMeshConnectivity_NodeNumberSetNumber(contextUserNumber,regionUserNumber,interfaceUserNumber, & & interfaceElementNumber,coupledMeshIndexNumber,coupledMeshElementNumber,err) !DLLEXPORT(cmfe_InterfaceMeshConnectivity_NodeNumberSetNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets the mapping from an xi position of a coupled mesh element to a node of an interface mesh element - SUBROUTINE cmfe_InterfaceMeshConnectivity_ElementXiSetNumber(regionUserNumber,interfaceUserNumber,interfaceElementNumber, & - & coupledMeshIndexNumber,coupledMeshElementNumber,interfaceMeshLocalNodeNumber,interfaceMeshComponentNodeNumber,xi,err) + SUBROUTINE cmfe_InterfaceMeshConnectivity_ElementXiSetNumber(contextUserNumber,regionUserNumber,interfaceUserNumber, & + & interfaceElementNumber,coupledMeshIndexNumber,coupledMeshElementNumber,interfaceMeshLocalNodeNumber, & + & interfaceMeshComponentNodeNumber,xi,err) !DLLEXPORT(cmfe_InterfaceMeshConnectivity_ElementXiSetNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Destroys an interface meshes connectivity identified by a user number. - SUBROUTINE cmfe_InterfaceMeshConnectivity_DestroyNumber(regionUserNumber,interfaceUserNumber,err) + SUBROUTINE cmfe_InterfaceMeshConnectivity_DestroyNumber(contextUserNumber,regionUserNumber,interfaceUserNumber,err) !DLLEXPORT(cmfe_InterfaceMeshConnectivity_DestroyNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Finishes the creation of an interface coupled mesh points connectivity identified by a user number. - SUBROUTINE cmfe_InterfacePointsConnectivity_CreateFinishNumber(regionUserNumber,interfaceUserNumber,err) + SUBROUTINE cmfe_InterfacePointsConnectivity_CreateFinishNumber(contextUserNumber,regionUserNumber,interfaceUserNumber,err) !DLLEXPORT(cmfe_InterfacePointsConnectivity_CreateFinishNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Starts the creation of an interface points connectivity identified by a user number. - SUBROUTINE cmfe_InterfacePointsConnectivity_CreateStartNumber(regionUserNumber,interfaceUserNumber,meshUserNumber, & - & dataPointsUserNumber,err) + SUBROUTINE cmfe_InterfacePointsConnectivity_CreateStartNumber(contextUserNumber,regionUserNumber,interfaceUserNumber, & + & meshUserNumber,dataPointsUserNumber,err) !DLLEXPORT(cmfe_InterfacePointsConnectivity_CreateStartNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Destroys an interface points connectivity identified by a user number. - SUBROUTINE cmfe_InterfacePointsConnectivity_DestroyNumber(regionUserNumber,interfaceUserNumber,err) + SUBROUTINE cmfe_InterfacePointsConnectivity_DestroyNumber(contextUserNumber,regionUserNumber,interfaceUserNumber,err) !DLLEXPORT(cmfe_InterfacePointsConnectivity_DestroyNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Gets coupled mesh element number that the data point in the interface is connected to - SUBROUTINE cmfe_InterfacePointsConnectivity_ElementNumberGetNumber(regionUserNumber,interfaceUserNumber, & + SUBROUTINE cmfe_InterfacePointsConnectivity_ElementNumberGetNumber(contextUserNumber,regionUserNumber,interfaceUserNumber, & & interfaceDataPointIndexNumber,coupledMeshIndexNumber,meshComponentNumber,coupledMeshElementNumber,err) !DLLEXPORT(cmfe_InterfacePointsConnectivity_ElementNumberGetNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets coupled mesh element number that the data point in the interface is connected to - SUBROUTINE cmfe_InterfacePointsConnectivity_ElementNumberSetNumber(regionUserNumber,interfaceUserNumber, & + SUBROUTINE cmfe_InterfacePointsConnectivity_ElementNumberSetNumber(contextUserNumber,regionUserNumber,interfaceUserNumber, & & interfaceDataPointIndexNumber,coupledMeshIndexNumber,coupledMeshElementNumber,meshComponentNumber,err) !DLLEXPORT(cmfe_InterfacePointsConnectivity_ElementNumberSetNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Gets the xi coordinate mapping between the data points in interface and xi coordinates in a coupled region mesh - SUBROUTINE cmfe_InterfacePointsConnectivity_PointXiGetNumber(regionUserNumber,interfaceUserNumber, & + SUBROUTINE cmfe_InterfacePointsConnectivity_PointXiGetNumber(contextUserNumber,regionUserNumber,interfaceUserNumber, & & interfaceDataPointIndexNumber,coupledMeshIndexNumber,xi,err) !DLLEXPORT(cmfe_InterfacePointsConnectivity_PointXiGetNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets the xi coordinate mapping between the data points in interface and xi coordinates in a coupled region mesh - SUBROUTINE cmfe_InterfacePointsConnectivity_PointXiSetNumber(regionUserNumber,interfaceUserNumber, & + SUBROUTINE cmfe_InterfacePointsConnectivity_PointXiSetNumber(contextUserNumber,regionUserNumber,interfaceUserNumber, & & interfaceDataPointIndexNumber,coupledMeshIndexNumber,xi,err) !DLLEXPORT(cmfe_InterfacePointsConnectivity_PointXiSetNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Update points connectivity with projection results, data projection identified by region user number - SUBROUTINE cmfe_InterfacePointsConnectivity_UpdateFromProjectionRNumber(regionUserNumber,interfaceUserNumber, & - & dataPointsRegionUserNumber,dataPointsUserNumber,dataProjectionUserNumber,coupledMeshIndex,err) + SUBROUTINE cmfe_InterfacePointsConnectivity_UpdateFromProjectionRNumber(contextUserNumber,regionUserNumber, & + & interfaceUserNumber,dataPointsRegionUserNumber,dataPointsUserNumber,dataProjectionUserNumber,coupledMeshIndex,err) !DLLEXPORT(cmfe_InterfacePointsConnectivity_UpdateFromProjectionRNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Update points connectivity with projection results, data projection identified by interface user number - SUBROUTINE cmfe_InterfacePointsConnectivity_UpdateFromProjectionINumber(regionUserNumber,interfaceUserNumber, & + SUBROUTINE cmfe_InterfacePointsConnectivity_UpdateFromProjectionINumber(contextUserNumber,regionUserNumber,interfaceUserNumber, & & dataPointsRegionUserNumber,dataPointsInterfaceUserNumber,dataPointsUserNumber,dataProjectionUserNumber,coupledMeshIndex,err) !DLLEXPORT(cmfe_InterfacePointsConnectivity_UpdateFromProjectionINumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Finishes the creation of an interface condition identified by an user number. - SUBROUTINE cmfe_InterfaceCondition_CreateFinishNumber(regionUserNumber,interfaceUserNumber,interfaceConditionUserNumber,err) + SUBROUTINE cmfe_InterfaceCondition_CreateFinishNumber(contextUserNumber,regionUserNumber,interfaceUserNumber, & + & interfaceConditionUserNumber,err) !DLLEXPORT(cmfe_InterfaceCondition_CreateFinishNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Starts the creation of an interface condition identified by a user number. - SUBROUTINE cmfe_InterfaceCondition_CreateStartNumber(interfaceConditionUserNumber,regionUserNumber,interfaceUserNumber, & - & geometricFieldUserNumber,err) + SUBROUTINE cmfe_InterfaceCondition_CreateStartNumber(interfaceConditionUserNumber,contextUserNumber,regionUserNumber, & + & interfaceUserNumber,geometricFieldUserNumber,err) !DLLEXPORT(cmfe_InterfaceCondition_CreateStartNumber) !Argument variables INTEGER(INTG), INTENT(IN) :: interfaceConditionUserNumber !Adds a dependent variable to an interface condition identified by a user number. - SUBROUTINE cmfe_InterfaceCondition_DependentVariableAddNumber(interfaceRegionUserNumber,interfaceUserNumber, & + SUBROUTINE cmfe_InterfaceCondition_DependentVariableAddNumber(contextUserNumber,interfaceRegionUserNumber,interfaceUserNumber, & & interfaceConditionUserNumber,meshIndex,equationsSetRegionUserNumber,equationsSetUserNumber,variableType,err) !DLLEXPORT(cmfe_InterfaceCondition_DependentVariableAddNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Destroys an interface condition identified by a user number. - SUBROUTINE cmfe_InterfaceCondition_DestroyNumber(regionUserNumber,interfaceUserNumber,interfaceConditionUserNumber,err) + SUBROUTINE cmfe_InterfaceCondition_DestroyNumber(contextUserNumber,regionUserNumber,interfaceUserNumber, & + & interfaceConditionUserNumber,err) !DLLEXPORT(cmfe_InterfaceCondition_DestroyNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Finishes the creation of equations for an interface condition identified by an user number. - SUBROUTINE cmfe_InterfaceCondition_EquationsCreateFinishNumber(regionUserNumber,interfaceUserNumber, & + SUBROUTINE cmfe_InterfaceCondition_EquationsCreateFinishNumber(contextUserNumber,regionUserNumber,interfaceUserNumber, & & interfaceConditionUserNumber,err) !DLLEXPORT(cmfe_InterfaceCondition_EquationsCreateFinishNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Starts the creation of interface equations for an interface condition identified by a user number. - SUBROUTINE cmfe_InterfaceCondition_EquationsCreateStartNumber(regionUserNumber,interfaceUserNumber,interfaceConditionUserNumber, & - & err) + SUBROUTINE cmfe_InterfaceCondition_EquationsCreateStartNumber(contextUserNumber,regionUserNumber,interfaceUserNumber, & + & interfaceConditionUserNumber,err) !DLLEXPORT(cmfe_InterfaceCondition_EquationsCreateStartNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Destroys interface equations for an interface condition identified by a user number. - SUBROUTINE cmfe_InterfaceCondition_EquationsDestroyNumber(regionUserNumber,interfaceUserNumber,interfaceConditionUserNumber,err) + SUBROUTINE cmfe_InterfaceCondition_EquationsDestroyNumber(contextUserNumber,regionUserNumber,interfaceUserNumber, & + & interfaceConditionUserNumber,err) !DLLEXPORT(cmfe_InterfaceCondition_EquationsDestroyNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Returns the integration type for an interface condition identified by a user number. - SUBROUTINE cmfe_InterfaceCondition_IntegrationTypeGetNumber(regionUserNumber,interfaceUserNumber,interfaceConditionUserNumber, & - & interfaceConditionIntegrationType,err) + SUBROUTINE cmfe_InterfaceCondition_IntegrationTypeGetNumber(contextUserNumber,regionUserNumber,interfaceUserNumber, & + & interfaceConditionUserNumber,interfaceConditionIntegrationType,err) !DLLEXPORT(cmfe_InterfaceCondition_IntegrationTypeGetNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the integration type for an interface condition identified by a user number. - SUBROUTINE cmfe_InterfaceCondition_IntegrationTypeSetNumber(regionUserNumber,interfaceUserNumber,interfaceConditionUserNumber, & - & interfaceConditionIntegrationType,err) + SUBROUTINE cmfe_InterfaceCondition_IntegrationTypeSetNumber(contextUserNumber,regionUserNumber,interfaceUserNumber, & + & interfaceConditionUserNumber,interfaceConditionIntegrationType,err) !DLLEXPORT(cmfe_InterfaceCondition_IntegrationTypeSetNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Finishes the creation of a Lagrange Multiplier Field for an interface condition identified by an user number. - SUBROUTINE cmfe_InterfaceCondition_LagrangeFieldCreateFinishNumber(regionUserNumber,interfaceUserNumber, & + SUBROUTINE cmfe_InterfaceCondition_LagrangeFieldCreateFinishNumber(contextUserNumber,regionUserNumber,interfaceUserNumber, & & interfaceConditionUserNumber,err) !DLLEXPORT(cmfe_InterfaceCondition_LagrangeFieldCreateFinishNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Starts the creation of a Lagrange multiplier field for an interface condition identified by a user number. - SUBROUTINE cmfe_InterfaceCondition_LagrangeFieldCreateStartNumber(regionUserNumber,interfaceUserNumber, & + SUBROUTINE cmfe_InterfaceCondition_LagrangeFieldCreateStartNumber(contextUserNumber,regionUserNumber,interfaceUserNumber, & & interfaceConditionUserNumber,lagrangeFieldUserNumber,err) !DLLEXPORT(cmfe_InterfaceCondition_LagrangeFieldCreateStartNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Returns the character string label for an interface condition identified by a user number. - SUBROUTINE cmfe_InterfaceCondition_LabelGetCNumber(regionUserNumber,interfaceUserNumber,interfaceConditionUserNumber,label,err) + SUBROUTINE cmfe_InterfaceCondition_LabelGetCNumber(contextUserNumber,regionUserNumber,interfaceUserNumber, & + & interfaceConditionUserNumber,label,err) !DLLEXPORT(cmfe_InterfaceCondition_LabelGetCNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Returns the varying string label for an interface condition identified by a user number. - SUBROUTINE cmfe_InterfaceCondition_LabelGetVSNumber(regionUserNumber,interfaceUserNumber,interfaceConditionUserNumber,label,err) + SUBROUTINE cmfe_InterfaceCondition_LabelGetVSNumber(contextUserNumber,regionUserNumber,interfaceUserNumber, & + & interfaceConditionUserNumber,label,err) !DLLEXPORT(cmfe_InterfaceCondition_LabelGetVSNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the character string label for an interface condition identified by a user number. - SUBROUTINE cmfe_InterfaceCondition_LabelSetCNumber(regionUserNumber,interfaceUserNumber,interfaceConditionUserNumber,label,err) + SUBROUTINE cmfe_InterfaceCondition_LabelSetCNumber(contextUserNumber,regionUserNumber,interfaceUserNumber, & + & interfaceConditionUserNumber,label,err) !DLLEXPORT(cmfe_InterfaceCondition_LabelSetCNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the varying string label for an interface condition identified by a user number. - SUBROUTINE cmfe_InterfaceCondition_LabelSetVSNumber(regionUserNumber,interfaceUserNumber,interfaceConditionUserNumber,label,err) + SUBROUTINE cmfe_InterfaceCondition_LabelSetVSNumber(contextUserNumber,regionUserNumber,interfaceUserNumber, & + & interfaceConditionUserNumber,label,err) !DLLEXPORT(cmfe_InterfaceCondition_LabelSetVSNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Gets the output type an interface condition identified by a user number. - SUBROUTINE cmfe_InterfaceCondition_OutputTypeGetNumber(regionUserNumber,interfaceUserNumber,interfaceConditionUserNumber, & - & outputType,err) + SUBROUTINE cmfe_InterfaceCondition_OutputTypeGetNumber(contextUserNumber,regionUserNumber,interfaceUserNumber, & + & interfaceConditionUserNumber,outputType,err) !DLLEXPORT(cmfe_InterfaceCondition_OutputTypeGetNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the output type for an interface condition identified by a user number. - SUBROUTINE cmfe_InterfaceCondition_OutputTypeSetNumber(regionUserNumber,interfaceUserNumber,interfaceConditionUserNumber, & - & outputType,err) + SUBROUTINE cmfe_InterfaceCondition_OutputTypeSetNumber(contextUserNumber,regionUserNumber,interfaceUserNumber, & + & interfaceConditionUserNumber,outputType,err) !DLLEXPORT(cmfe_InterfaceCondition_OutputTypeSetNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Finishes the creation of a penalty Field for an interface condition identified by an user number. - SUBROUTINE cmfe_InterfaceCondition_PenaltyFieldCreateFinishNumber(RegionUserNumber,InterfaceUserNumber, & - & InterfaceConditionUserNumber,err) + SUBROUTINE cmfe_InterfaceCondition_PenaltyFieldCreateFinishNumber(contextUserNumber,regionUserNumber,interfaceUserNumber, & + & interfaceConditionUserNumber,err) !DLLEXPORT(cmfe_InterfaceCondition_PenaltyFieldCreateFinishNumber) !Argument variables - INTEGER(INTG), INTENT(IN) :: RegionUserNumber !Finishes the creation of a penalty field for an interface condition identified by an object. - SUBROUTINE cmfe_InterfaceCondition_PenaltyFieldCreateFinishObj(InterfaceCondition,err) + SUBROUTINE cmfe_InterfaceCondition_PenaltyFieldCreateFinishObj(interfaceCondition,err) !DLLEXPORT(cmfe_InterfaceCondition_PenaltyFieldCreateFinishObj) !Argument variables - TYPE(cmfe_InterfaceConditionType), INTENT(IN) :: InterfaceCondition !Starts the creation of a penalty field for an interface condition identified by a user number. - SUBROUTINE cmfe_InterfaceCondition_PenaltyFieldCreateStartNumber(RegionUserNumber,InterfaceUserNumber, & - & InterfaceConditionUserNumber,PenaltyFieldUserNumber,err) + SUBROUTINE cmfe_InterfaceCondition_PenaltyFieldCreateStartNumber(contextUserNumber,regionUserNumber,interfaceUserNumber, & + & interfaceConditionUserNumber,penaltyFieldUserNumber,err) !DLLEXPORT(cmfe_InterfaceCondition_PenaltyFieldCreateStartNumber) !Argument variables - INTEGER(INTG), INTENT(IN) :: RegionUserNumber !Starts the creation of a penalty field for an interface condition identified by an object. - SUBROUTINE cmfe_InterfaceCondition_PenaltyFieldCreateStartObj(InterfaceCondition,PenaltyFieldUserNumber,PenaltyField,err) + SUBROUTINE cmfe_InterfaceCondition_PenaltyFieldCreateStartObj(interfaceCondition,penaltyFieldUserNumber,penaltyField,err) !DLLEXPORT(cmfe_InterfaceCondition_PenaltyFieldCreateStartObj) !Argument variables - TYPE(cmfe_InterfaceConditionType), INTENT(IN) :: InterfaceCondition !Returns the method for an interface condition identified by a user number. - SUBROUTINE cmfe_InterfaceCondition_MethodGetNumber(regionUserNumber,interfaceUserNumber,interfaceConditionUserNumber, & - & interfaceConditionMethod,err) + SUBROUTINE cmfe_InterfaceCondition_MethodGetNumber(contextUserNumber,regionUserNumber,interfaceUserNumber, & + & interfaceConditionUserNumber,interfaceConditionMethod,err) !DLLEXPORT(cmfe_InterfaceCondition_MethodGetNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the method for an interface condition identified by a user number. - SUBROUTINE cmfe_InterfaceCondition_MethodSetNumber(regionUserNumber,interfaceUserNumber,interfaceConditionUserNumber, & - & interfaceConditionMethod,err) + SUBROUTINE cmfe_InterfaceCondition_MethodSetNumber(contextUserNumber,regionUserNumber,interfaceUserNumber, & + & interfaceConditionUserNumber,interfaceConditionMethod,err) !DLLEXPORT(cmfe_InterfaceCondition_MethodSetNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Returns the operator for an interface condition identified by a user number. - SUBROUTINE cmfe_InterfaceCondition_OperatorGetNumber(regionUserNumber,interfaceUserNumber,interfaceConditionUserNumber, & - & interfaceConditionOperator,err) + SUBROUTINE cmfe_InterfaceCondition_OperatorGetNumber(contextUserNumber,regionUserNumber,interfaceUserNumber, & + & interfaceConditionUserNumber,interfaceConditionOperator,err) !DLLEXPORT(cmfe_InterfaceCondition_OperatorGetNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the operator for an interface condition identified by a user number. - SUBROUTINE cmfe_InterfaceCondition_OperatorSetNumber(regionUserNumber,interfaceUserNumber,interfaceConditionUserNumber, & - & interfaceConditionOperator,err) + SUBROUTINE cmfe_InterfaceCondition_OperatorSetNumber(contextUserNumber,regionUserNumber,interfaceUserNumber, & + & interfaceConditionUserNumber,interfaceConditionOperator,err) !DLLEXPORT(cmfe_InterfaceCondition_OperatorSetNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Returns the matrix time dependence type for an interface equations identified by a user number. - SUBROUTINE cmfe_InterfaceEquations_MatrixTimeDependenceTypeGetNumber0(regionUserNumber,interfaceUserNumber, & + SUBROUTINE cmfe_InterfaceEquations_MatrixTimeDependenceTypeGetNumber0(contextUserNumber,regionUserNumber,interfaceUserNumber, & & interfaceConditionUserNumber,interfaceMatrixIdx,hasTranspose,timeDependenceType,err) !DLLEXPORT(cmfe_InterfaceEquations_MatrixTimeDependenceTypeGetNumber0) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Returns the matrix time dependence type for an interface equations identified by a user number. - SUBROUTINE cmfe_InterfaceEquations_MatrixTimeDependenceTypeGetNumber1(regionUserNumber,interfaceUserNumber, & + SUBROUTINE cmfe_InterfaceEquations_MatrixTimeDependenceTypeGetNumber1(contextUserNumber,regionUserNumber,interfaceUserNumber, & & interfaceConditionUserNumber,interfaceMatrixIdx,hasTranspose,timeDependenceTypes,err) !DLLEXPORT(cmfe_InterfaceEquations_MatrixTimeDependenceTypeGetNumber1) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the matrix time dependence type for an interface equations identified by a user number. - SUBROUTINE cmfe_InterfaceEquations_MatrixTimeDependenceTypeSetNumber0(regionUserNumber,interfaceUserNumber, & + SUBROUTINE cmfe_InterfaceEquations_MatrixTimeDependenceTypeSetNumber0(contextUserNumber,regionUserNumber,interfaceUserNumber, & & interfaceConditionUserNumber,interfaceMatrixIdx,hasTranspose,timeDependenceType,err) !DLLEXPORT(cmfe_InterfaceEquations_MatrixTimeDependenceTypeSetNumber0) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the matrix time dependence type for an interface equations identified by a user number. - SUBROUTINE cmfe_InterfaceEquations_MatrixTimeDependenceTypeSetNumber1(regionUserNumber,interfaceUserNumber, & + SUBROUTINE cmfe_InterfaceEquations_MatrixTimeDependenceTypeSetNumber1(contextUserNumber,regionUserNumber,interfaceUserNumber, & & interfaceConditionUserNumber,interfaceMatrixIdx,hasTranspose,timeDependenceTypes,err) !DLLEXPORT(cmfe_InterfaceEquations_MatrixTimeDependenceTypeSetNumber1) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Returns the output type for an interface equations identified by a user number. - SUBROUTINE cmfe_InterfaceEquations_OutputTypeGetNumber(regionUserNumber,interfaceUserNumber,interfaceConditionUserNumber, & - & outputType,err) + SUBROUTINE cmfe_InterfaceEquations_OutputTypeGetNumber(contextUserNumber,regionUserNumber,interfaceUserNumber, & + & interfaceConditionUserNumber,outputType,err) !DLLEXPORT(cmfe_InterfaceEquations_OutputTypeGetNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the output type for an interface equations identified by a user number. - SUBROUTINE cmfe_InterfaceEquations_OutputTypeSetNumber(regionUserNumber,interfaceUserNumber,interfaceConditionUserNumber, & - & outputType,err) + SUBROUTINE cmfe_InterfaceEquations_OutputTypeSetNumber(contextUserNumber,regionUserNumber,interfaceUserNumber, & + & interfaceConditionUserNumber,outputType,err) !DLLEXPORT(cmfe_InterfaceEquations_OutputTypeSetNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Returns the sparsity type for an interface equations identified by a user number. - SUBROUTINE cmfe_InterfaceEquations_SparsityGetNumber(regionUserNumber,interfaceUserNumber,interfaceConditionUserNumber, & - & sparsityType,err) + SUBROUTINE cmfe_InterfaceEquations_SparsityGetNumber(contextUserNumber,regionUserNumber,interfaceUserNumber, & + & interfaceConditionUserNumber,sparsityType,err) !DLLEXPORT(cmfe_InterfaceEquations_SparsityGetNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the sparsity type for an interface equations identified by a user number. - SUBROUTINE cmfe_InterfaceEquations_SparsitySetNumber(regionUserNumber,interfaceUserNumber,interfaceConditionUserNumber, & - & sparsityType,err) + SUBROUTINE cmfe_InterfaceEquations_SparsitySetNumber(contextUserNumber,regionUserNumber,interfaceUserNumber, & + & interfaceConditionUserNumber,sparsityType,err) !DLLEXPORT(cmfe_InterfaceEquations_SparsitySetNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Finishes the creation of a domain decomposition for a decomposition identified by a user number. - SUBROUTINE cmfe_Decomposition_CreateFinishNumber(regionUserNumber,meshUserNumber,decompositionUserNumber,err) + SUBROUTINE cmfe_Decomposition_CreateFinishNumber(contextUserNumber,regionUserNumber,meshUserNumber,decompositionUserNumber,err) !DLLEXPORT(cmfe_Decomposition_CreateFinishNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Starts the creation of a domain decomposition for a decomposition identified by a user number. - SUBROUTINE cmfe_Decomposition_CreateStartNumber(decompositionUserNumber,regionUserNumber,meshUserNumber,err) + SUBROUTINE cmfe_Decomposition_CreateStartNumber(decompositionUserNumber,contextUserNumber,regionUserNumber,meshUserNumber,err) !DLLEXPORT(cmfe_Decomposition_CreateStartNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Destroys a decomposition identified by a user number. - SUBROUTINE cmfe_Decomposition_DestroyNumber(regionUserNumber,meshUserNumber,decompositionUserNumber,err) + SUBROUTINE cmfe_Decomposition_DestroyNumber(contextUserNumber,regionUserNumber,meshUserNumber,decompositionUserNumber,err) !DLLEXPORT(cmfe_Decomposition_DestroyNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Calculates the element domains for a decomposition identified by a user number. - SUBROUTINE cmfe_Decomposition_ElementDomainCalculateNumber(regionUserNumber,meshUserNumber,decompositionUserNumber,err) + SUBROUTINE cmfe_Decomposition_ElementDomainCalculateNumber(contextUserNumber,regionUserNumber,meshUserNumber, & + & decompositionUserNumber,err) !DLLEXPORT(cmfe_Decomposition_ElementDomainCalculateNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Returns the domain for a given element in a decomposition identified by a user number. - SUBROUTINE cmfe_Decomposition_ElementDomainGetNumber(regionUserNumber,meshUserNumber,decompositionUserNumber, & + SUBROUTINE cmfe_Decomposition_ElementDomainGetNumber(contextUserNumber,regionUserNumber,meshUserNumber,decompositionUserNumber, & & elementUserNumber,domain,err) !DLLEXPORT(cmfe_Decomposition_ElementDomainGetNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the domain for a given element in a decomposition identified by a user number. - SUBROUTINE cmfe_Decomposition_ElementDomainSetNumber(regionUserNumber,meshUserNumber,decompositionUserNumber, & + SUBROUTINE cmfe_Decomposition_ElementDomainSetNumber(contextUserNumber,regionUserNumber,meshUserNumber,decompositionUserNumber, & & elementUserNumber,domain,err) !DLLEXPORT(cmfe_Decomposition_ElementDomainSetNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Returns the mesh component number used for the decomposition of a mesh for a decomposition identified by a user number. - SUBROUTINE cmfe_Decomposition_MeshComponentGetNumber(regionUserNumber,meshUserNumber,decompositionUserNumber, & + SUBROUTINE cmfe_Decomposition_MeshComponentGetNumber(contextUserNumber,regionUserNumber,meshUserNumber,decompositionUserNumber, & & meshComponentNumber,err) !DLLEXPORT(cmfe_Decomposition_MeshComponentGetNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the mesh component number used for the decomposition of a mesh for a decomposition identified by a user number. - SUBROUTINE cmfe_Decomposition_MeshComponentSetNumber(regionUserNumber,meshUserNumber,decompositionUserNumber, & - & meshComponentNumber,err) + SUBROUTINE cmfe_Decomposition_MeshComponentSetNumber(contextUserNumber,regionUserNumber,meshUserNumber, & + & decompositionUserNumber,meshComponentNumber,err) !DLLEXPORT(cmfe_Decomposition_MeshComponentSetNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Returns the number of domains for a decomposition identified by a user number. - SUBROUTINE cmfe_Decomposition_NumberOfDomainsGetNumber(regionUserNumber,meshUserNumber,decompositionUserNumber, & - & numberOfDomains,err) + SUBROUTINE cmfe_Decomposition_NumberOfDomainsGetNumber(contextUserNumber,regionUserNumber,meshUserNumber, & + & decompositionUserNumber,numberOfDomains,err) !DLLEXPORT(cmfe_Decomposition_NumberOfDomainsGetNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the number of domains for a decomposition identified by a user number. - SUBROUTINE cmfe_Decomposition_NumberOfDomainsSetNumber(regionUserNumber,meshUserNumber,decompositionUserNumber, & - & numberOfDomains,err) + SUBROUTINE cmfe_Decomposition_NumberOfDomainsSetNumber(contextUserNumber,regionUserNumber,meshUserNumber, & + & decompositionUserNumber,numberOfDomains,err) !DLLEXPORT(cmfe_Decomposition_NumberOfDomainsSetNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Returns the type of a decomposition identified by a user number. - SUBROUTINE cmfe_Decomposition_TypeGetNumber(regionUserNumber,meshUserNumber,decompositionUserNumber,decompositionType,err) + SUBROUTINE cmfe_Decomposition_TypeGetNumber(contextUserNumber,regionUserNumber,meshUserNumber,decompositionUserNumber, & + & decompositionType,err) !DLLEXPORT(cmfe_Decomposition_TypeGetNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the type of a decomposition identified by a user number. - SUBROUTINE cmfe_Decomposition_TypeSetNumber(regionUserNumber,meshUserNumber,decompositionUserNumber,decompositionType,err) + SUBROUTINE cmfe_Decomposition_TypeSetNumber(contextUserNumber,regionUserNumber,meshUserNumber,decompositionUserNumber, & + & decompositionType,err) !DLLEXPORT(cmfe_Decomposition_TypeSetNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the work group of a decomposition identified by a user number. + SUBROUTINE cmfe_Decomposition_WorkGroupSetNumber(contextUserNumber,regionUserNumber,meshUserNumber,decompositionUserNumber, & + & workGroupUserNumber,err) + !DLLEXPORT(cmfe_Decomposition_WorkGroupSetNumber) + + !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the work group for a decomposition identified by an object. + SUBROUTINE cmfe_Decomposition_WorkGroupSetObj(decomposition,workGroup,err) + !DLLEXPORT(cmfe_Decomposition_WorkGroupSetObj) + + !Argument variables + TYPE(cmfe_DecompositionType), INTENT(IN) :: decomposition !Sets whether lines should be calculated - SUBROUTINE cmfe_Decomposition_CalculateLinesSetNumber(regionUserNumber,meshUserNumber,& - & decompositionUserNumber,calculateLinesFlag,err) + SUBROUTINE cmfe_Decomposition_CalculateLinesSetNumber(contextUserNumber,regionUserNumber,meshUserNumber,& + & decompositionUserNumber,calculateLinesFlag,err) !DLLEXPORT(cmfe_Decomposition_CalculateLinesSetNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets whether faces should be calculated - SUBROUTINE cmfe_Decomposition_CalculateFacesSetNumber(regionUserNumber,meshUserNumber, & - & decompositionUserNumber,calculateFacesFlag,err) + SUBROUTINE cmfe_Decomposition_CalculateFacesSetNumber(contextUserNumber,regionUserNumber,meshUserNumber, & + & decompositionUserNumber,calculateFacesFlag,err) !DLLEXPORT(cmfe_Decomposition_CalculateFacesSetNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Returns the domain for a given node in a decomposition identified by a user number. - SUBROUTINE cmfe_Decomposition_NodeDomainGetNumber(regionUserNumber,meshUserNumber,decompositionUserNumber, & + SUBROUTINE cmfe_Decomposition_NodeDomainGetNumber(contextUserNumber,regionUserNumber,meshUserNumber,decompositionUserNumber, & & nodeUserNumber,meshComponentNumber,domain,err) !DLLEXPORT(cmfe_Decomposition_NodeDomainGetNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Finishes the creation of a mesh for a mesh identified by a user number. - SUBROUTINE cmfe_Mesh_CreateFinishNumber(regionUserNumber,meshUserNumber,err) + SUBROUTINE cmfe_Mesh_CreateFinishNumber(contextUserNumber,regionUserNumber,meshUserNumber,err) !DLLEXPORT(cmfe_Mesh_CreateFinishNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Starts the creation of a mesh for a mesh identified by a user number. - SUBROUTINE cmfe_Mesh_CreateStartNumber(meshUserNumber,regionUserNumber,numberOfDimensions,err) + SUBROUTINE cmfe_Mesh_CreateStartNumber(meshUserNumber,contextUserNumber,regionUserNumber,numberOfDimensions,err) !DLLEXPORT(cmfe_Mesh_CreateStartNumber) !Argument variables INTEGER(INTG), INTENT(IN) :: meshUserNumber !Destroys a mesh identified by a user number. - SUBROUTINE cmfe_Mesh_DestroyNumber(regionUserNumber,meshUserNumber,err) + SUBROUTINE cmfe_Mesh_DestroyNumber(contextUserNumber,regionUserNumber,meshUserNumber,err) !DLLEXPORT(cmfe_Mesh_DestroyNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Returns the number of components in a mesh identified by a user number. - SUBROUTINE cmfe_Mesh_NumberOfComponentsGetNumber(regionUserNumber,meshUserNumber,numberOfComponents,err) + SUBROUTINE cmfe_Mesh_NumberOfComponentsGetNumber(contextUserNumber,regionUserNumber,meshUserNumber,numberOfComponents,err) !DLLEXPORT(cmfe_Mesh_NumberOfComponentsGetNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the number of components in a mesh identified by a user number. - SUBROUTINE cmfe_Mesh_NumberOfComponentsSetNumber(regionUserNumber,meshUserNumber,numberOfComponents,err) + SUBROUTINE cmfe_Mesh_NumberOfComponentsSetNumber(contextUserNumber,regionUserNumber,meshUserNumber,numberOfComponents,err) !DLLEXPORT(cmfe_Mesh_NumberOfComponentsSetNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the surrounding elements calculate flag. - SUBROUTINE cmfe_Mesh_SurroundingElementsCalculateSetNumber(regionUserNumber,meshUserNumber,surroundingElementsCalculateFlag,err) + SUBROUTINE cmfe_Mesh_SurroundingElementsCalculateSetNumber(contextUserNumber,regionUserNumber,meshUserNumber, & + & surroundingElementsCalculateFlag,err) !DLLEXPORT(cmfe_Mesh_SurroundingElementsCalculateSetNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Returns the number of elements in a mesh identified by a user number. - SUBROUTINE cmfe_Mesh_NumberOfElementsGetNumber(regionUserNumber,meshUserNumber,numberOfElements,err) + SUBROUTINE cmfe_Mesh_NumberOfElementsGetNumber(contextUserNumber,regionUserNumber,meshUserNumber,numberOfElements,err) !DLLEXPORT(cmfe_Mesh_NumberOfElementsGetNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the number of elements in a mesh identified by a user number. - SUBROUTINE cmfe_Mesh_NumberOfElementsSetNumber(regionUserNumber,meshUserNumber,numberOfElements,err) + SUBROUTINE cmfe_Mesh_NumberOfElementsSetNumber(contextUserNumber,regionUserNumber,meshUserNumber,numberOfElements,err) !DLLEXPORT(cmfe_Mesh_NumberOfElementsSetNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Calculate mesh data points topology in a region identified by a user number based on projection - SUBROUTINE cmfe_Mesh_TopologyDataPointsCalculateProjectionRegionNumber(regionUserNumber,MeshUserNumber, & - & DataProjection,err) + SUBROUTINE cmfe_Mesh_TopologyDataPointsCalculateProjectionRegionNumber(contextUserNumber,regionUserNumber,meshUserNumber, & + & dataProjection,err) !DLLEXPORT(cmfe_Mesh_TopologyDataPointsCalculateProjectionRegionNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Calculate mesh data points topology in an interface identified by a user number based on projection - SUBROUTINE cmfe_Mesh_TopologyDataPointsCalculateProjectionInterfaceNumber(parentRegionUserNumber,interfaceUserNumber, & - & MeshUserNumber,DataProjection,err) + SUBROUTINE cmfe_Mesh_TopologyDataPointsCalculateProjectionInterfaceNumber(contextUserNumber,parentRegionUserNumber, & + & interfaceUserNumber,meshUserNumber,dataProjection,err) !DLLEXPORT(cmfe_Mesh_TopologyDataPointsCalculateProjectionInterfaceNumber) !Argument variables - INTEGER(INTG), INTENT(IN) :: parentregionUserNumber !Calculate mesh data points topology identified by object based on projection - SUBROUTINE cmfe_Mesh_TopologyDataPointsCalculateProjectionObj(Mesh,DataProjection,err) + SUBROUTINE cmfe_Mesh_TopologyDataPointsCalculateProjectionObj(mesh,dataProjection,err) !DLLEXPORT(cmfe_Mesh_TopologyDataPointsCalculateProjectionObj) !Argument variables - TYPE(cmfe_MeshType), INTENT(IN) :: Mesh !Finishes creating elements for a mesh component of a mesh identified by a user number. - SUBROUTINE cmfe_MeshElements_CreateFinishNumber(regionUserNumber,meshUserNumber,meshComponentNumber,err) + SUBROUTINE cmfe_MeshElements_CreateFinishNumber(contextUserNumber,regionUserNumber,meshUserNumber,meshComponentNumber,err) !DLLEXPORT(cmfe_MeshElements_CreateFinishNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Starts creating elements for a mesh component of a mesh identified by a user number. - SUBROUTINE cmfe_MeshElements_CreateStartNumber(regionUserNumber,meshUserNumber,meshComponentNumber,basisUserNumber,err) + SUBROUTINE cmfe_MeshElements_CreateStartNumber(contextUserNumber,regionUserNumber,meshUserNumber,meshComponentNumber, & + & basisUserNumber,err) !DLLEXPORT(cmfe_MeshElements_CreateStartNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Returns the mesh elements for a mesh component on a mesh identified by an user number. - SUBROUTINE cmfe_Mesh_ElementsGetNumber(regionUserNumber,meshUserNumber,meshComponentNumber,meshElements,err) + SUBROUTINE cmfe_Mesh_ElementsGetNumber(contextUserNumber,regionUserNumber,meshUserNumber,meshComponentNumber,meshElements,err) !DLLEXPORT(cmfe_Mesh_ElementsGetNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Returns the basis for an element in a mesh identified by an user number. \todo should the global element number be a user number? - SUBROUTINE cmfe_MeshElements_BasisGetNumber(regionUserNumber,meshUserNumber,meshComponentNumber,globalElementNumber, & - & basisUserNumber,err) + SUBROUTINE cmfe_MeshElements_BasisGetNumber(contextUserNumber,regionUserNumber,meshUserNumber,meshComponentNumber, & + & globalElementNumber,basisUserNumber,err) !DLLEXPORT(cmfe_MeshElements_BasisGetNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the basis for an element in a mesh identified by an user number. \todo should the global element number be a user number? - SUBROUTINE cmfe_MeshElements_BasisSetNumber(regionUserNumber,meshUserNumber,meshComponentNumber,globalElementNumber, & - & basisUserNumber,err) + SUBROUTINE cmfe_MeshElements_BasisSetNumber(contextUserNumber,regionUserNumber,meshUserNumber,meshComponentNumber, & + & globalElementNumber,basisUserNumber,err) !DLLEXPORT(cmfe_MeshElements_BasisSetNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Returns the adjacent element number of a mesh identified by a user number - SUBROUTINE cmfe_MeshElements_AdjacentElementGetNumber(regionUserNumber,meshUserNumber,meshComponentNumber,globalElementNumber, & - & adjacentElementXi,adjacentElement,err) + SUBROUTINE cmfe_MeshElements_AdjacentElementGetNumber(contextUserNumber,regionUserNumber,meshUserNumber,meshComponentNumber, & + & globalElementNumber,adjacentElementXi,adjacentElement,err) !DLLEXPORT(cmfe_MeshElements_AdjacentElementGetNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Gets the boundary type for an user element of a mesh identified by a user number - SUBROUTINE cmfe_MeshElements_ElementOnBoundaryGetNumber(regionUserNumber,meshUserNumber,meshComponentNumber,userElementNumber, & - & onBoundary,err) + SUBROUTINE cmfe_MeshElements_ElementOnBoundaryGetNumber(contextUserNumber,regionUserNumber,meshUserNumber,meshComponentNumber, & + & userElementNumber,onBoundary,err) !DLLEXPORT(cmfe_MeshElements_ElementOnBoundaryGetNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Returns the element nodes for an element in a mesh identified by an user number. \todo should the global element number be a user number? - SUBROUTINE cmfe_MeshElements_NodesGetNumber(regionUserNumber,meshUserNumber,meshComponentNumber,globalElementNumber, & - & elementUserNodes,err) + SUBROUTINE cmfe_MeshElements_NodesGetNumber(contextUserNumber,regionUserNumber,meshUserNumber,meshComponentNumber, & + & globalElementNumber,elementUserNodes,err) !DLLEXPORT(cmfe_MeshElements_NodesGetNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the element nodes for an element in a mesh identified by an user number. \todo should the global element number be a user number? - SUBROUTINE cmfe_MeshElements_NodesSetNumber(regionUserNumber,meshUserNumber,meshComponentNumber,globalElementNumber, & - & elementUserNodes,err) + SUBROUTINE cmfe_MeshElements_NodesSetNumber(contextUserNumber,regionUserNumber,meshUserNumber,meshComponentNumber, & + & globalElementNumber,elementUserNodes,err) !DLLEXPORT(cmfe_MeshElements_NodesSetNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the element nodes for an element in a mesh identified by an user number. \todo should the global element number be a user number? - SUBROUTINE cmfe_MeshElements_UserNodeVersionSetNumber(regionUserNumber,meshUserNumber,globalElementNumber,versionNumber, & - & derivativeNumber,userNodeNumber,meshComponentNumber,err) + SUBROUTINE cmfe_MeshElements_UserNodeVersionSetNumber(contextUserNumber,regionUserNumber,meshUserNumber,globalElementNumber, & + & versionNumber,derivativeNumber,userNodeNumber,meshComponentNumber,err) !DLLEXPORT(cmfe_MeshElements_UserNodeVersionSetNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the element nodes for an element in a mesh identified by an user number. \todo should the global element number be a user number? - SUBROUTINE cmfe_MeshElements_LocalElementNodeVersionSetNumber(regionUserNumber,meshUserNumber,globalElementNumber,versionNumber, & - & derivativeNumber,localElementNodeNumber,meshComponentNumber,err) + SUBROUTINE cmfe_MeshElements_LocalElementNodeVersionSetNumber(contextUserNumber,regionUserNumber,meshUserNumber, & + & globalElementNumber,versionNumber,derivativeNumber,localElementNodeNumber,meshComponentNumber,err) !DLLEXPORT(cmfe_MeshElements_LocalElementNodeVersionSetNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Returns the user number for an element in a mesh identified by an user number. - SUBROUTINE cmfe_MeshElements_UserNumberGetNumber(regionUserNumber,meshUserNumber,meshComponentNumber,elementGlobalNumber, & - & elementUserNumber,err) + SUBROUTINE cmfe_MeshElements_UserNumberGetNumber(contextUserNumber,regionUserNumber,meshUserNumber,meshComponentNumber, & + & elementGlobalNumber,elementUserNumber,err) !DLLEXPORT(cmfe_MeshElements_UserNumberGetNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the user number for an element in a mesh identified by an user number. - SUBROUTINE cmfe_MeshElements_UserNumberSetNumber(regionUserNumber,meshUserNumber,meshComponentNumber,elementGlobalNumber, & - & elementUserNumber,err) + SUBROUTINE cmfe_MeshElements_UserNumberSetNumber(contextUserNumber,regionUserNumber,meshUserNumber,meshComponentNumber, & + & elementGlobalNumber,elementUserNumber,err) !DLLEXPORT(cmfe_MeshElements_UserNumberSetNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the user numbers for all elements in a mesh identified by an user number. - SUBROUTINE cmfe_MeshElements_UserNumbersAllSetNumber(regionUserNumber,meshUserNumber,meshComponentNumber, & + SUBROUTINE cmfe_MeshElements_UserNumbersAllSetNumber(contextUserNumber,regionUserNumber,meshUserNumber,meshComponentNumber, & & elementUserNumbers,err) !DLLEXPORT(cmfe_MeshElements_UserNumbersAllSetNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Checks if the given node exists on the given mesh component. - SUBROUTINE cmfe_Mesh_NodeExistsNumber( regionUserNumber, meshUserNumber, meshComponentNumber, nodeUserNumber, nodeExists, err ) + SUBROUTINE cmfe_Mesh_NodeExistsNumber(contextUserNumber,regionUserNumber,meshUserNumber,meshComponentNumber,nodeUserNumber, & + & nodeExists,err) !DLLEXPORT(cmfe_Mesh_NodeExistsNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Checks if the given element exists on the given mesh component. - SUBROUTINE cmfe_Mesh_ElementExistsNumber( regionUserNumber, meshUserNumber, meshComponentNumber, & - & elementUserNumber, elementExists, err ) + SUBROUTINE cmfe_Mesh_ElementExistsNumber(contextUserNumber,regionUserNumber,meshUserNumber,meshComponentNumber, & + & elementUserNumber,elementExists,err) !DLLEXPORT(cmfe_Mesh_ElementExistsNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Returns the mesh nodes for a mesh component on a mesh identified by an user number. - SUBROUTINE cmfe_Mesh_NodesGetNumber(regionUserNumber,meshUserNumber,meshComponentNumber,meshNodes,err) + SUBROUTINE cmfe_Mesh_NodesGetNumber(contextUserNumber,regionUserNumber,meshUserNumber,meshComponentNumber,meshNodes,err) !DLLEXPORT(cmfe_Mesh_NodesGetNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Gets the boundary type for an user node of a mesh identified by a user number - SUBROUTINE cmfe_MeshNodes_NodeOnBoundaryGetNumber(regionUserNumber,meshUserNumber,meshComponentNumber,userNodeNumber, & - & onBoundary,err) + SUBROUTINE cmfe_MeshNodes_NodeOnBoundaryGetNumber(contextUserNumber,regionUserNumber,meshUserNumber,meshComponentNumber, & + & userNodeNumber,onBoundary,err) !DLLEXPORT(cmfe_MeshNodes_NodeOnBoundaryGetNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Returns the number of nodes at a node in a mesh identified by an user number. - SUBROUTINE cmfe_MeshNodes_NumberOfNodesGetNumber(regionUserNumber,meshUserNumber,meshComponentNumber,numberOfNodes,err) + SUBROUTINE cmfe_MeshNodes_NumberOfNodesGetNumber(contextUserNumber,regionUserNumber,meshUserNumber,meshComponentNumber, & + & numberOfNodes,err) !DLLEXPORT(cmfe_MeshNodes_NumberOfNodesGetNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Returns the number of derivatives at a node in a mesh identified by an user number. - SUBROUTINE cmfe_MeshNodes_NumberOfDerivativesGetNumber(regionUserNumber,meshUserNumber,meshComponentNumber,userNodeNumber, & - & numberOfDerivatives,err) + SUBROUTINE cmfe_MeshNodes_NumberOfDerivativesGetNumber(contextUserNumber,regionUserNumber,meshUserNumber,meshComponentNumber, & + & userNodeNumber,numberOfDerivatives,err) !DLLEXPORT(cmfe_MeshNodes_NumberOfDerivativesGetNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Returns the derivatives at a node in a mesh identified by an user number. - SUBROUTINE cmfe_MeshNodes_DerivativesGetNumber(regionUserNumber,meshUserNumber,meshComponentNumber,userNodeNumber, & - & derivatives,err) + SUBROUTINE cmfe_MeshNodes_DerivativesGetNumber(contextUserNumber,regionUserNumber,meshUserNumber,meshComponentNumber, & + & userNodeNumber,derivatives,err) !DLLEXPORT(cmfe_MeshNodes_DerivativesGetNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Returns the number of version at a derivative for a node in a mesh identified by an user number. - SUBROUTINE cmfe_MeshNodes_NumberOfVersionsGetNumber(regionUserNumber,meshUserNumber,meshComponentNumber,derivativeNumber, & - & userNodeNumber,numberOfVersions,err) + SUBROUTINE cmfe_MeshNodes_NumberOfVersionsGetNumber(contextUserNumber,regionUserNumber,meshUserNumber,meshComponentNumber, & + & derivativeNumber,userNodeNumber,numberOfVersions,err) !DLLEXPORT(cmfe_MeshNodes_NumberOfVersionsGetNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Get the dimensions of a distributed matrix on this computational node + !>Get the dimensions of a distributed matrix on this computation node SUBROUTINE cmfe_DistributedMatrix_DimensionsGetObj(matrix,m,n,err) !DLLEXPORT(cmfe_DistributedMatrix_DimensionsGetObj) !Argument variables TYPE(cmfe_DistributedMatrixType), INTENT(IN) :: matrix !Get the data array for this matrix on this computational node + !>Get the data array for this matrix on this computation node SUBROUTINE cmfe_DistributedMatrix_DataGetIntgObj(matrix,data,err) !DLLEXPORT(cmfe_DistributedMatrix_DataGetIntgObj) @@ -45752,7 +51189,7 @@ END SUBROUTINE cmfe_DistributedMatrix_DataRestoreIntgObj !================================================================================================================================ ! - !>Get the data array for this matrix on this computational node + !>Get the data array for this matrix on this computation node SUBROUTINE cmfe_DistributedMatrix_DataGetDPObj(matrix,data,err) !DLLEXPORT(cmfe_DistributedMatrix_DataGetDPObj) @@ -45804,7 +51241,7 @@ END SUBROUTINE cmfe_DistributedMatrix_DataRestoreDPObj !================================================================================================================================ ! - !>Get the data array for this matrix on this computational node + !>Get the data array for this matrix on this computation node SUBROUTINE cmfe_DistributedMatrix_DataGetSPObj(matrix,data,err) !DLLEXPORT(cmfe_DistributedMatrix_DataGetSPObj) @@ -45856,7 +51293,7 @@ END SUBROUTINE cmfe_DistributedMatrix_DataRestoreSPObj !================================================================================================================================ ! - !>Get the data array for this matrix on this computational node + !>Get the data array for this matrix on this computation node SUBROUTINE cmfe_DistributedMatrix_DataGetLObj(matrix,data,err) !DLLEXPORT(cmfe_DistributedMatrix_DataGetLObj) @@ -45934,7 +51371,7 @@ END SUBROUTINE cmfe_DistributedVector_DataTypeGetObj !================================================================================================================================ ! - !>Get the data array for this vector on this computational node + !>Get the data array for this vector on this computation node SUBROUTINE cmfe_DistributedVector_DataGetIntgObj(vector,data,err) !DLLEXPORT(cmfe_DistributedVector_DataGetIntgObj) @@ -45986,7 +51423,7 @@ END SUBROUTINE cmfe_DistributedVector_DataRestoreIntgObj !================================================================================================================================ ! - !>Get the data array for this vector on this computational node + !>Get the data array for this vector on this computation node SUBROUTINE cmfe_DistributedVector_DataGetDPObj(vector,data,err) !DLLEXPORT(cmfe_DistributedVector_DataGetDPObj) @@ -46038,7 +51475,7 @@ END SUBROUTINE cmfe_DistributedVector_DataRestoreDPObj !================================================================================================================================ ! - !>Get the data array for this vector on this computational node + !>Get the data array for this vector on this computation node SUBROUTINE cmfe_DistributedVector_DataGetSPObj(vector,data,err) !DLLEXPORT(cmfe_DistributedVector_DataGetSPObj) @@ -46090,7 +51527,7 @@ END SUBROUTINE cmfe_DistributedVector_DataRestoreSPObj !================================================================================================================================ ! - !>Get the data array for this vector on this computational node + !>Get the data array for this vector on this computation node SUBROUTINE cmfe_DistributedVector_DataGetLObj(vector,data,err) !DLLEXPORT(cmfe_DistributedVector_DataGetLObj) @@ -46140,28 +51577,35 @@ END SUBROUTINE cmfe_DistributedVector_DataRestoreLObj !!================================================================================================================================== !! -!! NODE_ROUTINES +!! NodeRoutines !! !!================================================================================================================================== !>Finishes the process of creating nodes in a region for nodes identified by user number. - SUBROUTINE cmfe_Nodes_CreateFinishNumber(regionUserNumber,err) + SUBROUTINE cmfe_Nodes_CreateFinishNumber(contextUserNumber,regionUserNumber,err) !DLLEXPORT(cmfe_Nodes_CreateFinishNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Starts the process of creating nodes in a region for nodes identified by user number. - SUBROUTINE cmfe_Nodes_CreateStartNumber(regionUserNumber,numberOfNodes,err) + SUBROUTINE cmfe_Nodes_CreateStartNumber(contextUserNumber,regionUserNumber,numberOfNodes,err) !DLLEXPORT(cmfe_Nodes_CreateStartNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Destroys the nodes in a region for nodes identified by user number. - SUBROUTINE cmfe_Nodes_DestroyNumber(regionUserNumber,err) + SUBROUTINE cmfe_Nodes_DestroyNumber(contextUserNumber,regionUserNumber,err) !DLLEXPORT(cmfe_Nodes_DestroyNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Returns the number of nodes - SUBROUTINE cmfe_Nodes_NumberOfNodesGetNumber(regionUserNumber,numberOfNodes,err) + SUBROUTINE cmfe_Nodes_NumberOfNodesGetNumber(contextUserNumber,regionUserNumber,numberOfNodes,err) !DLLEXPORT(cmfe_Nodes_NumberOfNodesGetNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Returns the character label for a node in a set of nodes identified by user number. \todo should this be user number?? - SUBROUTINE cmfe_Nodes_LabelGetCNumber(regionUserNumber,nodeGlobalNumber,label,err) + SUBROUTINE cmfe_Nodes_LabelGetCNumber(contextUserNumber,regionUserNumber,nodeGlobalNumber,label,err) !DLLEXPORT(cmfe_Nodes_LabelGetCNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Returns the varying string label for a node in a set of nodes identified by user number. \todo should this be user number?? - SUBROUTINE cmfe_Nodes_LabelGetVSNumber(regionUserNumber,nodeGlobalNumber,label,err) + SUBROUTINE cmfe_Nodes_LabelGetVSNumber(contextUserNumber,regionUserNumber,nodeGlobalNumber,label,err) !DLLEXPORT(cmfe_Nodes_LabelGetVSNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the character label for a node in a set of nodes identified by user number. \todo should this be user number?? - SUBROUTINE cmfe_Nodes_LabelSetCNumber(regionUserNumber,nodeGlobalNumber,label,err) + SUBROUTINE cmfe_Nodes_LabelSetCNumber(contextUserNumber,regionUserNumber,nodeGlobalNumber,label,err) !DLLEXPORT(cmfe_Nodes_LabelSetCNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the varying string label for a node in a set of nodes identified by user number. \todo should this be user number?? - SUBROUTINE cmfe_Nodes_LabelSetVSNumber(regionUserNumber,nodeGlobalNumber,label,err) + SUBROUTINE cmfe_Nodes_LabelSetVSNumber(contextUserNumber,regionUserNumber,nodeGlobalNumber,label,err) !DLLEXPORT(cmfe_Nodes_LabelSetVSNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Returns the user number for a node in a set of nodes identified by user number. - SUBROUTINE cmfe_Nodes_UserNumberGetNumber(regionUserNumber,nodeGlobalNumber,nodeUserNumber,err) + SUBROUTINE cmfe_Nodes_UserNumberGetNumber(contextUserNumber,regionUserNumber,nodeGlobalNumber,nodeUserNumber,err) !DLLEXPORT(cmfe_Nodes_UserNumberGetNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the user number for a node in a set of nodes identified by user number. - SUBROUTINE cmfe_Nodes_UserNumberSetNumber(regionUserNumber,nodeGlobalNumber,nodeUserNumber,err) + SUBROUTINE cmfe_Nodes_UserNumberSetNumber(contextUserNumber,regionUserNumber,nodeGlobalNumber,nodeUserNumber,err) !DLLEXPORT(cmfe_Nodes_UserNumberSetNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the user numbers for a set of nodes identified by user number. - SUBROUTINE cmfe_Nodes_UserNumbersAllSetNumber(regionUserNumber,nodeUserNumbers,err) + SUBROUTINE cmfe_Nodes_UserNumbersAllSetNumber(contextUserNumber,regionUserNumber,nodeUserNumbers,err) !DLLEXPORT(cmfe_Nodes_UserNumbersAllSetNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Finishes the process of creating CellML equations for a problem identified by user number. - SUBROUTINE cmfe_Problem_CellMLEquationsCreateFinishNumber(problemUserNumber,err) + SUBROUTINE cmfe_Problem_CellMLEquationsCreateFinishNumber(contextUserNumber,problemUserNumber,err) !DLLEXPORT(cmfe_Problem_CellMLEquationsCreateFinishNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Starts the process of creating CellML equations for a problem identified by user number. - SUBROUTINE cmfe_Problem_CellMLEquationsCreateStartNumber(problemUserNumber,err) + SUBROUTINE cmfe_Problem_CellMLEquationsCreateStartNumber(contextUserNumber,problemUserNumber,err) !DLLEXPORT(cmfe_Problem_CellMLEquationsCreateStartNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Returns the CellML equations from a problem identified by an user number. - SUBROUTINE cmfe_Problem_CellMLEquationsGetNumber0(problemUserNumber,controlLoopIdentifier,solverIndex,cellMLEquations,err) + SUBROUTINE cmfe_Problem_CellMLEquationsGetNumber0(contextUserNumber,problemUserNumber,controlLoopIdentifier,solverIndex, & + & cellMLEquations,err) !DLLEXPORT(cmfe_Problem_CellMLEquationsGetNumber0) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Returns the CellML equations from a problem identified by an user number. - SUBROUTINE cmfe_Problem_CellMLEquationsGetNumber1(problemUserNumber,controlLoopIdentifiers,solverIndex,cellMLEquations,err) + SUBROUTINE cmfe_Problem_CellMLEquationsGetNumber1(contextUserNumber,problemUserNumber,controlLoopIdentifiers,solverIndex, & + & cellMLEquations,err) !DLLEXPORT(cmfe_Problem_CellMLEquationsGetNumber1) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Finishes the process of a problem identified by user number. - SUBROUTINE cmfe_Problem_CreateFinishNumber(problemUserNumber,err) + SUBROUTINE cmfe_Problem_CreateFinishNumber(contextUserNumber,problemUserNumber,err) !DLLEXPORT(cmfe_Problem_CreateFinishNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Starts the process of a problem identified by user number. - SUBROUTINE cmfe_Problem_CreateStartNumber(problemUserNumber,problemSpecification,err) + SUBROUTINE cmfe_Problem_CreateStartNumber(problemUserNumber,contextUserNumber,problemSpecification,err) !DLLEXPORT(cmfe_Problem_CreateStartNumber) !Argument variables INTEGER(INTG), INTENT(IN) :: problemUserNumber !Starts the creation of a problem identified by an object. - SUBROUTINE cmfe_Problem_CreateStartObj(problemUserNumber,problemSpecification,problem,err) + SUBROUTINE cmfe_Problem_CreateStartObj(problemUserNumber,context,problemSpecification,problem,err) !DLLEXPORT(cmfe_Problem_CreateStartObj) !Argument variables + TYPE(cmfe_ContextType), INTENT(IN) :: context !Finishes the process of creating a control loop for a problem identified by user number. - SUBROUTINE cmfe_Problem_ControlLoopCreateFinishNumber(problemUserNumber,err) + SUBROUTINE cmfe_Problem_ControlLoopCreateFinishNumber(contextUserNumber,problemUserNumber,err) !DLLEXPORT(cmfe_Problem_ControlLoopCreateFinishNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Starts the process of creating a control loop for a problem identified by user number. - SUBROUTINE cmfe_Problem_ControlLoopCreateStartNumber(problemUserNumber,err) + SUBROUTINE cmfe_Problem_ControlLoopCreateStartNumber(contextUserNumber,problemUserNumber,err) !DLLEXPORT(cmfe_Problem_ControlLoopCreateStartNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Destroys the control loops for a problem identified by user number. - SUBROUTINE cmfe_Problem_ControlLoopDestroyNumber(problemUserNumber,err) + SUBROUTINE cmfe_Problem_ControlLoopDestroyNumber(contextUserNumber,problemUserNumber,err) !DLLEXPORT(cmfe_Problem_ControlLoopDestroyNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Returns a control loop from a problem identified by an user number. - SUBROUTINE cmfe_Problem_ControlLoopGetNumber0(problemUserNumber,controlLoopIdentifier,controlLoop,err) + SUBROUTINE cmfe_Problem_ControlLoopGetNumber0(contextUserNumber,problemUserNumber,controlLoopIdentifier,controlLoop,err) !DLLEXPORT(cmfe_Problem_ControlLoopGetNumber0) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Returns a control loop from a problem identified by an user number. - SUBROUTINE cmfe_Problem_ControlLoopGetNumber1(problemUserNumber,controlLoopIdentifiers,controlLoop,err) + SUBROUTINE cmfe_Problem_ControlLoopGetNumber1(contextUserNumber,problemUserNumber,controlLoopIdentifiers,controlLoop,err) !DLLEXPORT(cmfe_Problem_ControlLoopGetNumber1) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Destroys a problem identified by an user number. - SUBROUTINE cmfe_Problem_DestroyNumber(problemUserNumber,err) + SUBROUTINE cmfe_Problem_DestroyNumber(contextUserNumber,problemUserNumber,err) !DLLEXPORT(cmfe_Problem_DestroyNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Solves a problem identified by an user number. - SUBROUTINE cmfe_Problem_SolveNumber(problemUserNumber,err) + SUBROUTINE cmfe_Problem_SolveNumber(contextUserNumber,problemUserNumber,err) !DLLEXPORT(cmfe_Problem_SolveNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Returns a solver from a problem identified by an user number. - SUBROUTINE cmfe_Problem_SolverGetNumber0(problemUserNumber,controlLoopIdentifier,solverIndex,solver,err) + SUBROUTINE cmfe_Problem_SolverGetNumber0(contextUserNumber,problemUserNumber,controlLoopIdentifier,solverIndex,solver,err) !DLLEXPORT(cmfe_Problem_SolverGetNumber0) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Returns a solver from a problem identified by an user number. - SUBROUTINE cmfe_Problem_SolverGetNumber1(problemUserNumber,controlLoopIdentifiers,solverIndex,solver,err) + SUBROUTINE cmfe_Problem_SolverGetNumber1(contextUserNumber,problemUserNumber,controlLoopIdentifiers,solverIndex,solver,err) !DLLEXPORT(cmfe_Problem_SolverGetNumber1) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Set boundary conditions for solver equations according to the analytic equations for solver equations identified by user numbers. - SUBROUTINE cmfe_SolverEquations_BoundaryConditionsAnalyticNumber0(problemUserNumber,controlLoopIdentifier,solverIndex,err) + SUBROUTINE cmfe_SolverEquations_BoundaryConditionsAnalyticNumber0(contextUserNumber,problemUserNumber,controlLoopIdentifier, & + & solverIndex,err) !DLLEXPORT(cmfe_SolverEquations_BoundaryConditionsAnalyticNumber0) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Set boundary conditions for solver equations according to the analytic equations for solver equations identified by user numbers. - SUBROUTINE cmfe_SolverEquations_BoundaryConditionsAnalyticNumber1(problemUserNumber,controlLoopIdentifiers,solverIndex,err) + SUBROUTINE cmfe_SolverEquations_BoundaryConditionsAnalyticNumber1(contextUserNumber,problemUserNumber,controlLoopIdentifiers, & + & solverIndex,err) !DLLEXPORT(cmfe_SolverEquations_BoundaryConditionsAnalyticNumber1) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Finishes the process of creating solver equations for a problem identified by user number. - SUBROUTINE cmfe_Problem_SolverEquationsCreateFinishNumber(problemUserNumber,err) + SUBROUTINE cmfe_Problem_SolverEquationsCreateFinishNumber(contextUserNumber,problemUserNumber,err) !DLLEXPORT(cmfe_Problem_SolverEquationsCreateFinishNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Starts the process of creating solver equations for a problem identified by user number. - SUBROUTINE cmfe_Problem_SolverEquationsCreateStartNumber(problemUserNumber,err) + SUBROUTINE cmfe_Problem_SolverEquationsCreateStartNumber(contextUserNumber,problemUserNumber,err) !DLLEXPORT(cmfe_Problem_SolverEquationsCreateStartNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Destroys the solver equations for a problem identified by an user number. - SUBROUTINE cmfe_Problem_SolverEquationsDestroyNumber(problemUserNumber,err) + SUBROUTINE cmfe_Problem_SolverEquationsDestroyNumber(contextUserNumber,problemUserNumber,err) !DLLEXPORT(cmfe_Problem_SolverEquationsDestroyNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Returns the solver equations from a problem identified by an user number. - SUBROUTINE cmfe_Problem_SolverEquationsGetNumber0(problemUserNumber,controlLoopIdentifier,solverIndex,solverEquations,err) + SUBROUTINE cmfe_Problem_SolverEquationsGetNumber0(contextUserNumber,problemUserNumber,controlLoopIdentifier,solverIndex, & + & solverEquations,err) !DLLEXPORT(cmfe_Problem_SolverEquationsGetNumber0) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Returns the solver equations from a problem identified by an user number. - SUBROUTINE cmfe_Problem_SolverEquationsGetNumber1(problemUserNumber,controlLoopIdentifiers,solverIndex,solverEquations,err) + SUBROUTINE cmfe_Problem_SolverEquationsGetNumber1(contextUserNumber,problemUserNumber,controlLoopIdentifiers,solverIndex, & + & solverEquations,err) !DLLEXPORT(cmfe_Problem_SolverEquationsGetNumber1) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Finishes the process of creating solvers for a problem identified by user number. - SUBROUTINE cmfe_Problem_SolversCreateFinishNumber(problemUserNumber,err) + SUBROUTINE cmfe_Problem_SolversCreateFinishNumber(contextUserNumber,problemUserNumber,err) !DLLEXPORT(cmfe_Problem_SolversCreateFinishNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Starts the process of creating solvers for a problem identified by user number. - SUBROUTINE cmfe_Problem_SolversCreateStartNumber(problemUserNumber,err) + SUBROUTINE cmfe_Problem_SolversCreateStartNumber(contextUserNumber,problemUserNumber,err) !DLLEXPORT(cmfe_Problem_SolversCreateStartNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Destroys the solvers for a problem identified by an user number. - SUBROUTINE cmfe_Problem_SolversDestroyNumber(problemUserNumber,err) + SUBROUTINE cmfe_Problem_SolversDestroyNumber(contextUserNumber,problemUserNumber,err) !DLLEXPORT(cmfe_Problem_SolversDestroyNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Returns the specification array for a problem identified by a user number. - SUBROUTINE cmfe_Problem_SpecificationGetNumber(problemUserNumber,problemSpecification,err) + SUBROUTINE cmfe_Problem_SpecificationGetNumber(contextUserNumber,problemUserNumber,problemSpecification,err) !DLLEXPORT(cmfe_Problem_SpecificationGetNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Returns the size of the specification array for a problem identified by a user number. - SUBROUTINE cmfe_Problem_SpecificationSizeGetNumber(problemUserNumber,specificationSize,err) + SUBROUTINE cmfe_Problem_SpecificationSizeGetNumber(contextUserNumber,problemUserNumber,specificationSize,err) !DLLEXPORT(cmfe_Problem_SpecificationSizeGetNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the work group of a problem identified by a user number. + SUBROUTINE cmfe_Problem_WorkGroupSetNumber(contextUserNumber,problemUserNumber,workGroupUserNumber,err) + !DLLEXPORT(cmfe_Problem_WorkGroupSetNumber) + + !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the work group for a problem identified by an object. + SUBROUTINE cmfe_Problem_WorkGroupSetObj(problem,workGroup,err) + !DLLEXPORT(cmfe_Problem_WorkGroupSetObj) + + !Argument variables + TYPE(cmfe_ProblemType), INTENT(INOUT) :: problem !Returns the coordinate system for a region identified by an user number. - SUBROUTINE cmfe_Region_CoordinateSystemGetNumber(regionUserNumber,coordinateSystemUserNumber,err) + SUBROUTINE cmfe_Region_CoordinateSystemGetNumber(contextUserNumber,regionUserNumber,coordinateSystemUserNumber,err) !DLLEXPORT(cmfe_Region_CoordinateSystemGetNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the coordinate system for a region identified by an user number. - SUBROUTINE cmfe_Region_CoordinateSystemSetNumber(regionUserNumber,coordinateSystemUserNumber,err) + SUBROUTINE cmfe_Region_CoordinateSystemSetNumber(contextUserNumber,regionUserNumber,coordinateSystemUserNumber,err) !DLLEXPORT(cmfe_Region_CoordinateSystemSetNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Finishes the process of creating a region identified by user number. - SUBROUTINE cmfe_Region_CreateFinishNumber(regionUserNumber,err) + SUBROUTINE cmfe_Region_CreateFinishNumber(contextUserNumber,regionUserNumber,err) !DLLEXPORT(cmfe_Region_CreateFinishNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Starts the process creating a region identified by user number. - SUBROUTINE cmfe_Region_CreateStartNumber(regionUserNumber,parentRegionUserNumber,err) + SUBROUTINE cmfe_Region_CreateStartNumber(regionUserNumber,contextUserNumber,parentRegionUserNumber,err) !DLLEXPORT(cmfe_Region_CreateStartNumber) !Argument variables INTEGER(INTG), INTENT(IN) :: regionUserNumber !Destroys a region identified by an user number. - SUBROUTINE cmfe_Region_DestroyNumber(regionUserNumber,err) - !DLLEXPORT(cmfe_Region_DestroyNumber) + !>Returns the data points for a region identified by an object. + SUBROUTINE cmfe_Region_DataPointsGetObj(region,dataPointsUserNumber,dataPoints,err) + !DLLEXPORT(cmfe_Region_DataPointsGetObj) !Argument variables - INTEGER(INTG), INTENT(IN) :: regionUserNumber !Returns the data points for a region identified by an object. - SUBROUTINE cmfe_Region_DataPointsGetObj(region,dataPointsUserNumber,dataPoints,err) - !DLLEXPORT(cmfe_Region_DataPointsGetObj) + !>Destroys a region identified by an user number. + SUBROUTINE cmfe_Region_DestroyNumber(contextUserNumber,regionUserNumber,err) + !DLLEXPORT(cmfe_Region_DestroyNumber) !Argument variables - TYPE(cmfe_RegionType), INTENT(IN) :: region !Returns the character string label for a region identified by an user number. - SUBROUTINE cmfe_Region_LabelGetCNumber(regionUserNumber,label,err) + SUBROUTINE cmfe_Region_LabelGetCNumber(contextUserNumber,regionUserNumber,label,err) !DLLEXPORT(cmfe_Region_LabelGetCNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Returns the varying string label for a region identified by an user number. - SUBROUTINE cmfe_Region_LabelGetVSNumber(regionUserNumber,label,err) + SUBROUTINE cmfe_Region_LabelGetVSNumber(contextUserNumber,regionUserNumber,label,err) !DLLEXPORT(cmfe_Region_LabelGetVSNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the character string label for a region identified by an user number. - SUBROUTINE cmfe_Region_LabelSetCNumber(regionUserNumber,label,err) + SUBROUTINE cmfe_Region_LabelSetCNumber(contextUserNumber,regionUserNumber,label,err) !DLLEXPORT(cmfe_Region_LabelSetCNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the varying string label for a region identified by an user number. - SUBROUTINE cmfe_Region_LabelSetVSNumber(regionUserNumber,label,err) + SUBROUTINE cmfe_Region_LabelSetVSNumber(contextUserNumber,regionUserNumber,label,err) !DLLEXPORT(cmfe_Region_LabelSetVSNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Adds a CellML environment to CellML equations identified by an user number. - SUBROUTINE cmfe_CellMLEquations_CellMLAddNumber0(problemUserNumber,controlLoopIdentifier,solverIndex, & + SUBROUTINE cmfe_CellMLEquations_CellMLAddNumber0(contextUserNumber,problemUserNumber,controlLoopIdentifier,solverIndex, & & regionUserNumber,cellMLUserNumber,cellMLIndex,err) !DLLEXPORT(cmfe_CellMLEquations_CellMLAddNumber0) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Adds a CellML environment to CellML equations identified by an user number. - SUBROUTINE cmfe_CellMLEquations_CellMLAddNumber1(problemUserNumber,controlLoopIdentifiers,solverIndex, & + SUBROUTINE cmfe_CellMLEquations_CellMLAddNumber1(contextUserNumber,problemUserNumber,controlLoopIdentifiers,solverIndex, & & regionUserNumber,cellMLUserNumber,cellMLIndex,err) !DLLEXPORT(cmfe_CellMLEquations_CellMLAddNumber1) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Returns the linearity type for CellML equations identified by an user number. - SUBROUTINE cmfe_CellMLEquations_LinearityTypeGetNumber(problemUserNumber,controlLoopIdentifier,solverIndex,linearityType,err) + SUBROUTINE cmfe_CellMLEquations_LinearityTypeGetNumber(contextUserNumber,problemUserNumber,controlLoopIdentifier,solverIndex, & + & linearityType,err) !DLLEXPORT(cmfe_CellMLEquations_LinearityTypeGetNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the linearity type for CellML equations identified by an user number. - SUBROUTINE cmfe_CellMLEquations_LinearityTypeSetNumber(problemUserNumber,controlLoopIdentifier,solverIndex,linearityType,err) + SUBROUTINE cmfe_CellMLEquations_LinearityTypeSetNumber(contextUserNumber,problemUserNumber,controlLoopIdentifier,solverIndex, & + & linearityType,err) !DLLEXPORT(cmfe_CellMLEquations_LinearityTypeSetNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Returns the time dependence type for CellML equations identified by an user number. - SUBROUTINE cmfe_CellMLEquations_TimeDependenceTypeGetNumber(problemUserNumber,controlLoopIdentifier,solverIndex, & - & timeDependenceType,err) + SUBROUTINE cmfe_CellMLEquations_TimeDependenceTypeGetNumber(contextUserNumber,problemUserNumber,controlLoopIdentifier, & + & solverIndex,timeDependenceType,err) !DLLEXPORT(cmfe_CellMLEquations_TimeDependenceTypeGetNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the time dependence type for CellML equations identified by an user number. - SUBROUTINE cmfe_CellMLEquations_TimeDependenceTypeSetNumber(problemUserNumber,controlLoopIdentifier,solverIndex, & - & timeDependenceType,err) + SUBROUTINE cmfe_CellMLEquations_TimeDependenceTypeSetNumber(contextUserNumber,problemUserNumber,controlLoopIdentifier, & + & solverIndex,timeDependenceType,err) !DLLEXPORT(cmfe_CellMLEquations_TimeDependenceTypeSetNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Returns the CellML equations for a solver identified by an user number. - SUBROUTINE cmfe_Solver_CellMLEquationsGetNumber0(problemUserNumber,controlLoopIdentifier,solverIndex,cellMLEquations,err) + SUBROUTINE cmfe_Solver_CellMLEquationsGetNumber0(contextUserNumber,problemUserNumber,controlLoopIdentifier,solverIndex, & + & cellMLEquations,err) !DLLEXPORT(cmfe_Solver_CellMLEquationsGetNumber0) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Returns the CellML equations for a solver identified by an user number. - SUBROUTINE cmfe_Solver_CellMLEquationsGetNumber1(problemUserNumber,controlLoopIdentifiers,solverIndex,cellMLEquations,err) + SUBROUTINE cmfe_Solver_CellMLEquationsGetNumber1(contextUserNumber,problemUserNumber,controlLoopIdentifiers,solverIndex, & + & cellMLEquations,err) !DLLEXPORT(cmfe_Solver_CellMLEquationsGetNumber1) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Returns the solve type for an Euler differential-algebraic equation solver identified by an user number. - SUBROUTINE cmfe_Solver_DAEEulerSolverTypeGetNumber0(problemUserNumber,controlLoopIdentifier,solverIndex,DAEEulerSolverType,err) + SUBROUTINE cmfe_Solver_DAEEulerSolverTypeGetNumber0(contextUserNumber,problemUserNumber,controlLoopIdentifier,solverIndex, & + & DAEEulerSolverType,err) !DLLEXPORT(cmfe_Solver_DAEEulerSolverTypeGetNumber0) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Returns the solve type for an Euler differential-algebraic equation solver identified by an user number. - SUBROUTINE cmfe_Solver_DAEEulerSolverTypeGetNumber1(problemUserNumber,controlLoopIdentifiers,solverIndex,DAEEulerSolverType,err) + SUBROUTINE cmfe_Solver_DAEEulerSolverTypeGetNumber1(contextUserNumber,problemUserNumber,controlLoopIdentifiers,solverIndex, & + & DAEEulerSolverType,err) !DLLEXPORT(cmfe_Solver_DAEEulerSolverTypeGetNumber1) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the solve type for an Euler differential-algebraic equation solver identified by an user number. - SUBROUTINE cmfe_Solver_DAEEulerSolverTypeSetNumber0(problemUserNumber,controlLoopIdentifier,solverIndex,DAEEulerSolverType,err) + SUBROUTINE cmfe_Solver_DAEEulerSolverTypeSetNumber0(contextUserNumber,problemUserNumber,controlLoopIdentifier,solverIndex, & + & DAEEulerSolverType,err) !DLLEXPORT(cmfe_Solver_DAEEulerSolverTypeSetNumber0) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the solve type for an Euler differential-algebraic equation solver identified by an user number. - SUBROUTINE cmfe_Solver_DAEEulerSolverTypeSetNumber1(problemUserNumber,controlLoopIdentifiers,solverIndex,DAEEulerSolverType,err) + SUBROUTINE cmfe_Solver_DAEEulerSolverTypeSetNumber1(contextUserNumber,problemUserNumber,controlLoopIdentifiers,solverIndex, & + & DAEEulerSolverType,err) !DLLEXPORT(cmfe_Solver_DAEEulerSolverTypeSetNumber1) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Returns the solve type for an differential-algebraic equation solver identified by an user number. - SUBROUTINE cmfe_Solver_DAESolverTypeGetNumber0(problemUserNumber,controlLoopIdentifier,solverIndex,DAESolverType,err) + SUBROUTINE cmfe_Solver_DAESolverTypeGetNumber0(contextUserNumber,problemUserNumber,controlLoopIdentifier,solverIndex, & + & DAESolverType,err) !DLLEXPORT(cmfe_Solver_DAESolverTypeGetNumber0) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Returns the solve type for an differential-algebraic equation solver identified by an user number. - SUBROUTINE cmfe_Solver_DAESolverTypeGetNumber1(problemUserNumber,controlLoopIdentifiers,solverIndex,DAESolverType,err) + SUBROUTINE cmfe_Solver_DAESolverTypeGetNumber1(contextUserNumber,problemUserNumber,controlLoopIdentifiers,solverIndex, & + & DAESolverType,err) !DLLEXPORT(cmfe_Solver_DAESolverTypeGetNumber1) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the solve type for an differential-algebraic equation solver identified by an user number. - SUBROUTINE cmfe_Solver_DAESolverTypeSetNumber0(problemUserNumber,controlLoopIdentifier,solverIndex,DAESolverType,err) + SUBROUTINE cmfe_Solver_DAESolverTypeSetNumber0(contextUserNumber,problemUserNumber,controlLoopIdentifier,solverIndex, & + & DAESolverType,err) !DLLEXPORT(cmfe_Solver_DAESolverTypeSetNumber0) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the solve type for an differential-algebraic equation solver identified by an user number. - SUBROUTINE cmfe_Solver_DAESolverTypeSetNumber1(problemUserNumber,controlLoopIdentifiers,solverIndex,DAESolverType,err) + SUBROUTINE cmfe_Solver_DAESolverTypeSetNumber1(contextUserNumber,problemUserNumber,controlLoopIdentifiers,solverIndex, & + & DAESolverType,err) !DLLEXPORT(cmfe_Solver_DAESolverTypeSetNumber1) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the times for an differential-algebraic equation solver identified by an user number. - SUBROUTINE cmfe_Solver_DAETimesSetNumber0(problemUserNumber,controlLoopIdentifier,solverIndex,startTime,endTime,err) + SUBROUTINE cmfe_Solver_DAETimesSetNumber0(contextUserNumber,problemUserNumber,controlLoopIdentifier,solverIndex, & + & startTime,endTime,err) !DLLEXPORT(cmfe_Solver_DAETimesSetNumber0) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the times for an differential-algebraic equation solver identified by an user number. - SUBROUTINE cmfe_Solver_DAETimesSetNumber1(problemUserNumber,controlLoopIdentifiers,solverIndex,startTime,endTime,err) + SUBROUTINE cmfe_Solver_DAETimesSetNumber1(contextUserNumber,problemUserNumber,controlLoopIdentifiers,solverIndex, & + & startTime,endTime,err) !DLLEXPORT(cmfe_Solver_DAETimesSetNumber1) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the (initial) time step for an differential-algebraic equation solver identified by an user number. - SUBROUTINE cmfe_Solver_DAETimeStepSetNumber0(problemUserNumber,controlLoopIdentifier,solverIndex,timeStep,err) + SUBROUTINE cmfe_Solver_DAETimeStepSetNumber0(contextUserNumber,problemUserNumber,controlLoopIdentifier,solverIndex, & + & timeStep,err) !DLLEXPORT(cmfe_Solver_DAETimeStepSetNumber0) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the (initial) time step for an differential-algebraic equation solver identified by an user number. - SUBROUTINE cmfe_Solver_DAETimeStepSetNumber1(problemUserNumber,controlLoopIdentifiers,solverIndex,timeStep,err) + SUBROUTINE cmfe_Solver_DAETimeStepSetNumber1(contextUserNumber,problemUserNumber,controlLoopIdentifiers,solverIndex, & + & timeStep,err) !DLLEXPORT(cmfe_Solver_DAETimeStepSetNumber1) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Returns the degree of the polynomial used to interpolate time for a dynamic solver identified by an user number. - SUBROUTINE cmfe_Solver_DynamicDegreeGetNumber0(problemUserNumber,controlLoopIdentifier,solverIndex,degree,err) + SUBROUTINE cmfe_Solver_DynamicDegreeGetNumber0(contextUserNumber,problemUserNumber,controlLoopIdentifier,solverIndex,degree,err) !DLLEXPORT(cmfe_Solver_DynamicDegreeGetNumber0) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Returns the degree of the polynomial used to interpolate time for a dynamic solver identified by an user number. - SUBROUTINE cmfe_Solver_DynamicDegreeGetNumber1(problemUserNumber,controlLoopIdentifiers,solverIndex,degree,err) + SUBROUTINE cmfe_Solver_DynamicDegreeGetNumber1(contextUserNumber,problemUserNumber,controlLoopIdentifiers,solverIndex,degree,err) !DLLEXPORT(cmfe_Solver_DynamicDegreeGetNumber1) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the degree of the polynomial used to interpolate time for a dynamic solver identified by an user number. - SUBROUTINE cmfe_Solver_DynamicDegreeSetNumber0(problemUserNumber,controlLoopIdentifier,solverIndex,degree,err) + SUBROUTINE cmfe_Solver_DynamicDegreeSetNumber0(contextUserNumber,problemUserNumber,controlLoopIdentifier,solverIndex,degree,err) !DLLEXPORT(cmfe_Solver_DynamicDegreeSetNumber0) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the degree of the polynomial used to interpolate time for a dynamic solver identified by an user number. - SUBROUTINE cmfe_Solver_DynamicDegreeSetNumber1(problemUserNumber,controlLoopIdentifiers,solverIndex,degree,err) + SUBROUTINE cmfe_Solver_DynamicDegreeSetNumber1(contextUserNumber,problemUserNumber,controlLoopIdentifiers,solverIndex,degree,err) !DLLEXPORT(cmfe_Solver_DynamicDegreeSetNumber1) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Returns the linearity type for a dynamic solver identified by an user number. - SUBROUTINE cmfe_Solver_DynamicLinearityTypeGetNumber0(problemUserNumber,controlLoopIdentifier,solverIndex,linearityType,err) + SUBROUTINE cmfe_Solver_DynamicLinearityTypeGetNumber0(contextUserNumber,problemUserNumber,controlLoopIdentifier,solverIndex, & + & linearityType,err) !DLLEXPORT(cmfe_Solver_DynamicLinearityTypeGetNumber0) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Returns the linearity type for a dynamic solver identified by an user number. - SUBROUTINE cmfe_Solver_DynamicLinearityTypeGetNumber1(problemUserNumber,controlLoopIdentifiers,solverIndex,linearityType,err) + SUBROUTINE cmfe_Solver_DynamicLinearityTypeGetNumber1(contextUserNumber,problemUserNumber,controlLoopIdentifiers,solverIndex, & + & linearityType,err) !DLLEXPORT(cmfe_Solver_DynamicLinearityTypeGetNumber1) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Returns the nonlinear solver associated with a nonlinear dynamic solver identified by an user number. - SUBROUTINE cmfe_Solver_DynamicNonlinearSolverGetNumber0(problemUserNumber,controlLoopIdentifier,solverIndex, & + SUBROUTINE cmfe_Solver_DynamicNonlinearSolverGetNumber0(contextUserNumber,problemUserNumber,controlLoopIdentifier,solverIndex, & & nonlinearSolverIndex,err) !DLLEXPORT(cmfe_Solver_DynamicNonlinearSolverGetNumber0) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Returns the nonlinear solver associated with a nonlinear dynamic solver identified by an user number. - SUBROUTINE cmfe_Solver_DynamicNonlinearSolverGetNumber1(problemUserNumber,controlLoopIdentifiers,solverIndex, & + SUBROUTINE cmfe_Solver_DynamicNonlinearSolverGetNumber1(contextUserNumber,problemUserNumber,controlLoopIdentifiers,solverIndex, & & nonlinearSolverIndex,err) !DLLEXPORT(cmfe_Solver_DynamicNonlinearSolverGetNumber1) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Returns the linear solver associated with a linear dynamic solver identified by an user number. - SUBROUTINE cmfe_Solver_DynamicLinearSolverGetNumber0(problemUserNumber,controlLoopIdentifier,solverIndex,linearSolverIndex,err) + SUBROUTINE cmfe_Solver_DynamicLinearSolverGetNumber0(contextUserNumber,problemUserNumber,controlLoopIdentifier,solverIndex, & + & linearSolverIndex,err) !DLLEXPORT(cmfe_Solver_DynamicLinearSolverGetNumber0) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Returns the linear solver associated with a linear dynamic solver identified by an user number. - SUBROUTINE cmfe_Solver_DynamicLinearSolverGetNumber1(problemUserNumber,controlLoopIdentifiers,solverIndex,linearSolverIndex,err) + SUBROUTINE cmfe_Solver_DynamicLinearSolverGetNumber1(contextUserNumber,problemUserNumber,controlLoopIdentifiers,solverIndex, & + & linearSolverIndex,err) !DLLEXPORT(cmfe_Solver_DynamicLinearSolverGetNumber1) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the scheme for a dynamic solver identified by an user number. - SUBROUTINE cmfe_Solver_DynamicSchemeSetNumber0(problemUserNumber,controlLoopIdentifier,solverIndex,scheme,err) + SUBROUTINE cmfe_Solver_DynamicSchemeSetNumber0(contextUserNumber,problemUserNumber,controlLoopIdentifier,solverIndex,scheme,err) !DLLEXPORT(cmfe_Solver_DynamicSchemeSetNumber0) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the scheme for a dynamic solver identified by an user number. - SUBROUTINE cmfe_Solver_DynamicSchemeSetNumber1(problemUserNumber,controlLoopIdentifiers,solverIndex,scheme,err) + SUBROUTINE cmfe_Solver_DynamicSchemeSetNumber1(contextUserNumber,problemUserNumber,controlLoopIdentifiers,solverIndex,scheme,err) !DLLEXPORT(cmfe_Solver_DynamicSchemeSetNumber1) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the theta value for a dynamic solver identified by an user number. - SUBROUTINE cmfe_Solver_DynamicThetaSetNumber00(problemUserNumber,controlLoopIdentifier,solverIndex,theta,err) + SUBROUTINE cmfe_Solver_DynamicThetaSetNumber00(contextUserNumber,problemUserNumber,controlLoopIdentifier,solverIndex,theta,err) !DLLEXPORT(cmfe_Solver_DynamicThetaSetNumber00) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the theta value for a dynamic solver identified by an user number. - SUBROUTINE cmfe_Solver_DynamicThetaSetNumber01(problemUserNumber,controlLoopIdentifier,solverIndex,thetas,err) + SUBROUTINE cmfe_Solver_DynamicThetaSetNumber01(contextUserNumber,problemUserNumber,controlLoopIdentifier,solverIndex,thetas,err) !DLLEXPORT(cmfe_Solver_DynamicThetaSetNumber01) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the theta for a dynamic solver identified by an user number. - SUBROUTINE cmfe_Solver_DynamicThetaSetNumber10(problemUserNumber,controlLoopIdentifiers,solverIndex,theta,err) + SUBROUTINE cmfe_Solver_DynamicThetaSetNumber10(contextUserNumber,problemUserNumber,controlLoopIdentifiers,solverIndex,theta,err) !DLLEXPORT(cmfe_Solver_DynamicThetaSetNumber10) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the theta for a dynamic solver identified by an user number. - SUBROUTINE cmfe_Solver_DynamicThetaSetNumber11(problemUserNumber,controlLoopIdentifiers,solverIndex,thetas,err) + SUBROUTINE cmfe_Solver_DynamicThetaSetNumber11(contextUserNumber,problemUserNumber,controlLoopIdentifiers,solverIndex,thetas,err) !DLLEXPORT(cmfe_Solver_DynamicThetaSetNumber11) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the times for a dynamic solver identified by an user number. - SUBROUTINE cmfe_Solver_DynamicTimesSetNumber0(problemUserNumber,controlLoopIdentifier,solverIndex,currentTime,timeIncrement,err) + SUBROUTINE cmfe_Solver_DynamicTimesSetNumber0(contextUserNumber,problemUserNumber,controlLoopIdentifier,solverIndex, & + & currentTime,timeIncrement,err) !DLLEXPORT(cmfe_Solver_DynamicTimesSetNumber0) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the times for a dynamic solver identified by an user number. - SUBROUTINE cmfe_Solver_DynamicTimesSetNumber1(problemUserNumber,controlLoopIdentifiers,solverIndex,currentTime,timeIncrement,err) + SUBROUTINE cmfe_Solver_DynamicTimesSetNumber1(contextUserNumber,problemUserNumber,controlLoopIdentifiers,solverIndex, & + & currentTime,timeIncrement,err) !DLLEXPORT(cmfe_Solver_DynamicTimesSetNumber1) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets the arbitrary path logical for a geometric transformation identified by an user number. - SUBROUTINE cmfe_Solver_GeometricTransformationArbitraryPathSetNumber(problemUserNumber,controlLoopIdentifier,solverIndex, & - & arbitraryPath,err) + SUBROUTINE cmfe_Solver_GeometricTransformationArbitraryPathSetNumber(contextUserNumber,problemUserNumber,controlLoopIdentifier, & + & solverIndex,arbitraryPath,err) !DLLEXPORT(cmfe_Solver_GeometricTransformationArbitraryPathSetNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Clear transformation a geometric transformation identified by an user number. - SUBROUTINE cmfe_Solver_GeometricTransformationClearNumber(problemUserNumber,controlLoopIdentifier,solverIndex,err) + SUBROUTINE cmfe_Solver_GeometricTransformationClearNumber(contextUserNumber,problemUserNumber,controlLoopIdentifier, & + & solverIndex,err) !DLLEXPORT(cmfe_Solver_GeometricTransformationClearNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets the field for a geometric transformation identified by an user number. - SUBROUTINE cmfe_Solver_GeometricTransformationFieldSetNumber(problemUserNumber,controlLoopIdentifier,solverIndex, & - & regionUserNumber,fieldUserNumber,variableType,err) + SUBROUTINE cmfe_Solver_GeometricTransformationFieldSetNumber(contextUserNumber,problemUserNumber,controlLoopIdentifier, & + & solverIndex,regionUserNumber,fieldUserNumber,variableType,err) !DLLEXPORT(cmfe_Solver_GeometricTransformationFieldSetNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets the full transformation matrix for a geometric transformation identified by an user number, default to be the 1st load increment - SUBROUTINE cmfe_Solver_GeometricTransformationMatrixSetNumber0(problemUserNumber,controlLoopIdentifier,solverIndex, & - & matrix,err) + SUBROUTINE cmfe_Solver_GeometricTransformationMatrixSetNumber0(contextUserNumber,problemUserNumber,controlLoopIdentifier, & + & solverIndex,matrix,err) !DLLEXPORT(cmfe_Solver_GeometricTransformationMatrixSetNumber0) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets the full transformation matrix at a specific increment for a geometric transformation identified by an user number. - SUBROUTINE cmfe_Solver_GeometricTransformationMatrixSetNumber1(problemUserNumber,controlLoopIdentifier,solverIndex, & - & matrix,loadIncrementIdx,err) + SUBROUTINE cmfe_Solver_GeometricTransformationMatrixSetNumber1(contextUserNumber,problemUserNumber,controlLoopIdentifier, & + & solverIndex,matrix,loadIncrementIdx,err) !DLLEXPORT(cmfe_Solver_GeometricTransformationMatrixSetNumber1) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets the arbitrary path logical for a geometric transformation identified by an user number. - SUBROUTINE cmfe_Solver_GeometricTransformationNoLoadIncrementsSetNumber(problemUserNumber,controlLoopIdentifier, & - & solverIndex,numberOfIncrements,err) + SUBROUTINE cmfe_Solver_GeometricTransformationNoLoadIncrementsSetNumber(contextUserNumber,problemUserNumber, & + & controlLoopIdentifier,solverIndex,numberOfIncrements,err) !DLLEXPORT(cmfe_Solver_GeometricTransformationNoLoadIncrementsSetNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets the rotation for a geometric transformation identified by an user number, default to be the 1st load increment - SUBROUTINE cmfe_Solver_GeometricTransformationRotationSetNumber0(problemUserNumber,controlLoopIdentifier,solverIndex, & - & pivotPoint,axis,angle,err) + SUBROUTINE cmfe_Solver_GeometricTransformationRotationSetNumber0(contextUserNumber,problemUserNumber,controlLoopIdentifier, & + & solverIndex,pivotPoint,axis,angle,err) !DLLEXPORT(cmfe_Solver_GeometricTransformationRotationSetNumber0) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets the rotation at a specific increment for a geometric transformation identified by an user number. - SUBROUTINE cmfe_Solver_GeometricTransformationRotationSetNumber1(problemUserNumber,controlLoopIdentifier,solverIndex, & - & pivotPoint,axis,angle,loadIncrementIdx,err) + SUBROUTINE cmfe_Solver_GeometricTransformationRotationSetNumber1(contextUserNumber,problemUserNumber,controlLoopIdentifier, & + & solverIndex,pivotPoint,axis,angle,loadIncrementIdx,err) !DLLEXPORT(cmfe_Solver_GeometricTransformationRotationSetNumber1) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets the scalings for a geometric transformation identified by an user number. - SUBROUTINE cmfe_Solver_GeometricTransformationScalingsSetNumber(problemUserNumber,controlLoopIdentifier,solverIndex, & - & scalings,err) + SUBROUTINE cmfe_Solver_GeometricTransformationScalingsSetNumber(contextUserNumber,problemUserNumber,controlLoopIdentifier, & + & solverIndex,scalings,err) !DLLEXPORT(cmfe_Solver_GeometricTransformationScalingsSetNumber) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets the translation for a geometric transformation identified by an user number, default to be the 1st load increment - SUBROUTINE cmfe_Solver_GeometricTransformationTranslationSetNumber0(problemUserNumber,controlLoopIdentifier,solverIndex, & - & translation,err) + SUBROUTINE cmfe_Solver_GeometricTransformationTranslationSetNumber0(contextUserNumber,problemUserNumber,controlLoopIdentifier, & + & solverIndex,translation,err) !DLLEXPORT(cmfe_Solver_GeometricTransformationTranslationSetNumber0) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets the translation at a specific increment for a geometric transformation identified by an user number. - SUBROUTINE cmfe_Solver_GeometricTransformationTranslationSetNumber1(problemUserNumber,controlLoopIdentifier,solverIndex, & - & translation,loadIncrementIdx,err) + SUBROUTINE cmfe_Solver_GeometricTransformationTranslationSetNumber1(contextUserNumber,problemUserNumber,controlLoopIdentifier, & + & solverIndex,translation,loadIncrementIdx,err) !DLLEXPORT(cmfe_Solver_GeometricTransformationTranslationSetNumber1) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Returns the character string label for a solver identified by an user number. - SUBROUTINE cmfe_Solver_LabelGetCNumber0(problemUserNumber,controlLoopIdentifier,solverIndex,label,err) + SUBROUTINE cmfe_Solver_LabelGetCNumber0(contextUserNumber,problemUserNumber,controlLoopIdentifier,solverIndex,label,err) !DLLEXPORT(cmfe_Solver_LabelGetCNumber0) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Returns the character string label for a solver identified by an user number. - SUBROUTINE cmfe_Solver_LabelGetCNumber1(problemUserNumber,controlLoopIdentifiers,solverIndex,label,err) + SUBROUTINE cmfe_Solver_LabelGetCNumber1(contextUserNUmber,problemUserNumber,controlLoopIdentifiers,solverIndex,label,err) !DLLEXPORT(cmfe_Solver_LabelGetCNumber1) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Returns the varying string label for a solver identified by an user number. - SUBROUTINE cmfe_Solver_LabelGetVSNumber0(problemUserNumber,controlLoopIdentifier,solverIndex,label,err) + SUBROUTINE cmfe_Solver_LabelGetVSNumber0(contextUserNumber,problemUserNumber,controlLoopIdentifier,solverIndex,label,err) !DLLEXPORT(cmfe_Solver_LabelGetVSNumber0) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Returns the varying string label for a solver identified by an user number. - SUBROUTINE cmfe_Solver_LabelGetVSNumber1(problemUserNumber,controlLoopIdentifiers,solverIndex,label,err) + SUBROUTINE cmfe_Solver_LabelGetVSNumber1(contextUserNumber,problemUserNumber,controlLoopIdentifiers,solverIndex,label,err) !DLLEXPORT(cmfe_Solver_LabelGetVSNumber1) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the character string label for a solver identified by an user number. - SUBROUTINE cmfe_Solver_LabelSetCNumber0(problemUserNumber,controlLoopIdentifier,solverIndex,label,err) + SUBROUTINE cmfe_Solver_LabelSetCNumber0(contextUserNumber,problemUserNumber,controlLoopIdentifier,solverIndex,label,err) !DLLEXPORT(cmfe_Solver_LabelSetCNumber0) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the character string label for a solver identified by an user number. - SUBROUTINE cmfe_Solver_LabelSetCNumber1(problemUserNumber,controlLoopIdentifiers,solverIndex,label,err) + SUBROUTINE cmfe_Solver_LabelSetCNumber1(contextUserNumber,problemUserNumber,controlLoopIdentifiers,solverIndex,label,err) !DLLEXPORT(cmfe_Solver_LabelSetCNumber1) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the varying string label for a solver identified by an user number. - SUBROUTINE cmfe_Solver_LabelSetVSNumber0(problemUserNumber,controlLoopIdentifier,solverIndex,label,err) + SUBROUTINE cmfe_Solver_LabelSetVSNumber0(contextUserNumber,problemUserNumber,controlLoopIdentifier,solverIndex,label,err) !DLLEXPORT(cmfe_Solver_LabelSetVSNumber0) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the varying string label for a solver identified by an user number. - SUBROUTINE cmfe_Solver_LabelSetVSNumber1(problemUserNumber,controlLoopIdentifiers,solverIndex,label,err) + SUBROUTINE cmfe_Solver_LabelSetVSNumber1(contextUserNumber,problemUserNumber,controlLoopIdentifiers,solverIndex,label,err) !DLLEXPORT(cmfe_Solver_LabelSetVSNumber1) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Returns the type of library for a solver identified by an user number. - SUBROUTINE cmfe_Solver_LibraryTypeGetNumber0(problemUserNumber,controlLoopIdentifier,solverIndex,libraryType,err) + SUBROUTINE cmfe_Solver_LibraryTypeGetNumber0(contextUserNumber,problemUserNumber,controlLoopIdentifier,solverIndex, & + & libraryType,err) !DLLEXPORT(cmfe_Solver_LibraryTypeGetNumber0) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Returns the library type for a solver identified by an user number. - SUBROUTINE cmfe_Solver_LibraryTypeGetNumber1(problemUserNumber,controlLoopIdentifiers,solverIndex,libraryType,err) + SUBROUTINE cmfe_Solver_LibraryTypeGetNumber1(contextUserNumber,problemUserNumber,controlLoopIdentifiers,solverIndex, & + & libraryType,err) !DLLEXPORT(cmfe_Solver_LibraryTypeGetNumber1) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the type of library for a solver identified by an user number. - SUBROUTINE cmfe_Solver_LibraryTypeSetNumber0(problemUserNumber,controlLoopIdentifier,solverIndex,libraryType,err) + SUBROUTINE cmfe_Solver_LibraryTypeSetNumber0(contextUserNumber,problemUserNumber,controlLoopIdentifier,solverIndex, & + & libraryType,err) !DLLEXPORT(cmfe_Solver_LibraryTypeSetNumber0) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the library type for a solver identified by an user number. - SUBROUTINE cmfe_Solver_LibraryTypeSetNumber1(problemUserNumber,controlLoopIdentifiers,solverIndex,libraryType,err) + SUBROUTINE cmfe_Solver_LibraryTypeSetNumber1(contextUserNumber,problemUserNumber,controlLoopIdentifiers,solverIndex, & + & libraryType,err) !DLLEXPORT(cmfe_Solver_LibraryTypeSetNumber1) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the type of direct linear solver for a solver identified by an user number. - SUBROUTINE cmfe_Solver_LinearDirectTypeSetNumber0(problemUserNumber,controlLoopIdentifier,solverIndex,directSolverType,err) + SUBROUTINE cmfe_Solver_LinearDirectTypeSetNumber0(contextUserNumber,problemUserNumber,controlLoopIdentifier,solverIndex, & + & directSolverType,err) !DLLEXPORT(cmfe_Solver_LinearDirectTypeSetNumber0) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the type of direct linear solver for a solver identified by an user number. - SUBROUTINE cmfe_Solver_LinearDirectTypeSetNumber1(problemUserNumber,controlLoopIdentifiers,solverIndex,directSolverType,err) + SUBROUTINE cmfe_Solver_LinearDirectTypeSetNumber1(contextUserNumber,problemUserNumber,controlLoopIdentifiers,solverIndex, & + & directSolverType,err) !DLLEXPORT(cmfe_Solver_LinearDirectTypeSetNumber1) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the maximum absolute tolerance for an iterative linear solver identified by an user number. - SUBROUTINE cmfe_Solver_LinearIterativeAbsoluteToleranceSetNumber0(problemUserNumber,controlLoopIdentifier,solverIndex, & - & absoluteTolerance,err) + SUBROUTINE cmfe_Solver_LinearIterativeAbsoluteToleranceSetNumber0(contextUserNumber,problemUserNumber,controlLoopIdentifier, & + & solverIndex,absoluteTolerance,err) !DLLEXPORT(cmfe_Solver_LinearIterativeAbsoluteToleranceSetNumber0) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the maximum absolute tolerance for an iterative linear solver identified by an user number. - SUBROUTINE cmfe_Solver_LinearIterativeAbsoluteToleranceSetNumber1(problemUserNumber,controlLoopIdentifiers,solverIndex, & - & absoluteTolerance,err) + SUBROUTINE cmfe_Solver_LinearIterativeAbsoluteToleranceSetNumber1(contextUserNumber,problemUserNumber,controlLoopIdentifiers, & + & solverIndex,absoluteTolerance,err) !DLLEXPORT(cmfe_Solver_LinearIterativeAbsoluteToleranceSetNumber1) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the maximum divergence tolerance for an iterative linear solver identified by an user number. - SUBROUTINE cmfe_Solver_LinearIterativeDivergenceToleranceSetNumber0(problemUserNumber,controlLoopIdentifier,solverIndex, & - & divergenceTolerance,err) + SUBROUTINE cmfe_Solver_LinearIterativeDivergenceToleranceSetNumber0(contextUserNumber,problemUserNumber,controlLoopIdentifier, & + & solverIndex,divergenceTolerance,err) !DLLEXPORT(cmfe_Solver_LinearIterativeDivergenceToleranceSetNumber0) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the maximum divergence tolerance for an iterative linear solver identified by an user number. - SUBROUTINE cmfe_Solver_LinearIterativeDivergenceToleranceSetNumber1(problemUserNumber,controlLoopIdentifiers,solverIndex, & - & divergenceTolerance,err) + SUBROUTINE cmfe_Solver_LinearIterativeDivergenceToleranceSetNumber1(contextUserNumber,problemUserNumber,controlLoopIdentifiers, & + & solverIndex,divergenceTolerance,err) !DLLEXPORT(cmfe_Solver_LinearIterativeDivergenceToleranceSetNumber1) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the GMRES restart value for a GMRES iterative linear solver identified by an user number. - SUBROUTINE cmfe_Solver_LinearIterativeGMRESRestartSetNumber0(problemUserNumber,controlLoopIdentifier,solverIndex, & - & GMRESRestart,err) + SUBROUTINE cmfe_Solver_LinearIterativeGMRESRestartSetNumber0(contextUserNumber,problemUserNumber,controlLoopIdentifier, & + & solverIndex,GMRESRestart,err) !DLLEXPORT(cmfe_Solver_LinearIterativeGMRESRestartSetNumber0) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the GMRES restart value for a GMRES iterative linear solver identified by an user number. - SUBROUTINE cmfe_Solver_LinearIterativeGMRESRestartSetNumber1(problemUserNumber,controlLoopIdentifiers,solverIndex, & - & GMRESRestart,err) + SUBROUTINE cmfe_Solver_LinearIterativeGMRESRestartSetNumber1(contextUserNumber,problemUserNumber,controlLoopIdentifiers, & + & solverIndex,GMRESRestart,err) !DLLEXPORT(cmfe_Solver_LinearIterativeGMRESRestartSetNumber1) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the maximum number of iterations for an iterative linear solver identified by an user number. - SUBROUTINE cmfe_Solver_LinearIterativeMaximumIterationsSetNumber0(problemUserNumber,controlLoopIdentifier,solverIndex, & - & maximumIterations,err) + SUBROUTINE cmfe_Solver_LinearIterativeMaximumIterationsSetNumber0(contextUserNumber,problemUserNumber,controlLoopIdentifier, & + & solverIndex,maximumIterations,err) !DLLEXPORT(cmfe_Solver_LinearIterativeMaximumIterationsSetNumber0) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the maximum number of iterations for an iterative linear solver identified by an user number. - SUBROUTINE cmfe_Solver_LinearIterativeMaximumIterationsSetNumber1(problemUserNumber,controlLoopIdentifiers,solverIndex, & - & maximumIterations,err) + SUBROUTINE cmfe_Solver_LinearIterativeMaximumIterationsSetNumber1(contextUserNumber,problemUserNumber,controlLoopIdentifiers, & + & solverIndex,maximumIterations,err) !DLLEXPORT(cmfe_Solver_LinearIterativeMaximumIterationsSetNumber1) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the preconditioner type for an iterative linear solver identified by an user number. - SUBROUTINE cmfe_Solver_LinearIterativePreconditionerTypeSetNumber0(problemUserNumber,controlLoopIdentifier,solverIndex, & - & preconditionerType,err) + SUBROUTINE cmfe_Solver_LinearIterativePreconditionerTypeSetNumber0(contextUserNumber,problemUserNumber,controlLoopIdentifier, & + & solverIndex,preconditionerType,err) !DLLEXPORT(cmfe_Solver_LinearIterativePreconditionerTypeSetNumber0) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the preconditioner type for an iterative linear solver identified by an user number. - SUBROUTINE cmfe_Solver_LinearIterativePreconditionerTypeSetNumber1(problemUserNumber,controlLoopIdentifiers,solverIndex, & - & preconditionerType,err) + SUBROUTINE cmfe_Solver_LinearIterativePreconditionerTypeSetNumber1(contextUserNumber,problemUserNumber,controlLoopIdentifiers, & + & solverIndex,preconditionerType,err) !DLLEXPORT(cmfe_Solver_LinearIterativePreconditionerTypeSetNumber1) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the maximum relative tolerance for an iterative linear solver identified by an user number. - SUBROUTINE cmfe_Solver_LinearIterativeRelativeToleranceSetNumber0(problemUserNumber,controlLoopIdentifier,solverIndex, & - & relativeTolerance,err) + SUBROUTINE cmfe_Solver_LinearIterativeRelativeToleranceSetNumber0(contextUserNumber,problemUserNumber,controlLoopIdentifier, & + & solverIndex,relativeTolerance,err) !DLLEXPORT(cmfe_Solver_LinearIterativeRelativeToleranceSetNumber0) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the maximum relative tolerance for an iterative linear solver identified by an user number. - SUBROUTINE cmfe_Solver_LinearIterativeRelativeToleranceSetNumber1(problemUserNumber,controlLoopIdentifiers,solverIndex, & - & relativeTolerance,err) + SUBROUTINE cmfe_Solver_LinearIterativeRelativeToleranceSetNumber1(contextUserNumber,problemUserNumber,controlLoopIdentifiers, & + & solverIndex,relativeTolerance,err) !DLLEXPORT(cmfe_Solver_LinearIterativeRelativeToleranceSetNumber1) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the type for an iterative linear solver identified by an user number. - SUBROUTINE cmfe_Solver_LinearIterativeTypeSetNumber0(problemUserNumber,controlLoopIdentifier,solverIndex,iterativeSolverType,err) + SUBROUTINE cmfe_Solver_LinearIterativeTypeSetNumber0(contextUserNumber,problemUserNumber,controlLoopIdentifier,solverIndex, & + & iterativeSolverType,err) !DLLEXPORT(cmfe_Solver_LinearIterativeTypeSetNumber0) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the type for an iterative linear solver identified by an user number. - SUBROUTINE cmfe_Solver_LinearIterativeTypeSetNumber1(problemUserNumber,controlLoopIdentifiers,solverIndex,iterativeSolverType,err) + SUBROUTINE cmfe_Solver_LinearIterativeTypeSetNumber1(contextUserNumber,problemUserNumber,controlLoopIdentifiers,solverIndex, & + & iterativeSolverType,err) !DLLEXPORT(cmfe_Solver_LinearIterativeTypeSetNumber1) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the type for a linear solver identified by an user number. - SUBROUTINE cmfe_Solver_LinearTypeSetNumber0(problemUserNumber,controlLoopIdentifier,solverIndex,linearSolverType,err) + SUBROUTINE cmfe_Solver_LinearTypeSetNumber0(contextUserNumber,problemUserNumber,controlLoopIdentifier,solverIndex, & + & linearSolverType,err) !DLLEXPORT(cmfe_Solver_LinearTypeSetNumber0) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the type for a linear solver identified by an user number. - SUBROUTINE cmfe_Solver_LinearTypeSetNumber1(problemUserNumber,controlLoopIdentifiers,solverIndex,linearSolverType,err) + SUBROUTINE cmfe_Solver_LinearTypeSetNumber1(contextUserNumber,problemUserNumber,controlLoopIdentifiers,solverIndex, & + & linearSolverType,err) !DLLEXPORT(cmfe_Solver_LinearTypeSetNumber1) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the absolute tolerance for an Newton solver identified by an user number. - SUBROUTINE cmfe_Solver_NewtonAbsoluteToleranceSetNumber0(problemUserNumber,controlLoopIdentifier,solverIndex, & + SUBROUTINE cmfe_Solver_NewtonAbsoluteToleranceSetNumber0(contextUserNumber,problemUserNumber,controlLoopIdentifier,solverIndex, & & absoluteTolerance,err) !DLLEXPORT(cmfe_Solver_NewtonAbsoluteToleranceSetNumber0) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the absolute tolerance for a Newton solver identified by an user number. - SUBROUTINE cmfe_Solver_NewtonAbsoluteToleranceSetNumber1(problemUserNumber,controlLoopIdentifiers,solverIndex,absoluteTolerance, & - & err) + SUBROUTINE cmfe_Solver_NewtonAbsoluteToleranceSetNumber1(contextUserNumber,problemUserNumber,controlLoopIdentifiers,solverIndex, & + & absoluteTolerance,err) !DLLEXPORT(cmfe_Solver_NewtonAbsoluteToleranceSetNumber1) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Enables/disables output monitoring for a nonlinear Newton line search solver identified by an user number. - SUBROUTINE cmfe_Solver_NewtonLineSearchMonitorOutputSetNumber0(problemUserNumber,controlLoopIdentifier,solverIndex, & - & monitorLinesearchFlag,err) + SUBROUTINE cmfe_Solver_NewtonLineSearchMonitorOutputSetNumber0(contextUserNumber,problemUserNumber,controlLoopIdentifier, & + & solverIndex,monitorLinesearchFlag,err) !DLLEXPORT(cmfe_Solver_NewtonLineSearchMonitorOutputSetNumber0) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Enables/disables output monitoring for a nonlinear Newton line search solver identified by an user number. - SUBROUTINE cmfe_Solver_NewtonLineSearchMonitorOutputSetNumber1(problemUserNumber,controlLoopIdentifiers,solverIndex, & - & monitorLinesearchFlag,err) + SUBROUTINE cmfe_Solver_NewtonLineSearchMonitorOutputSetNumber1(contextUserNumber,problemUserNumber,controlLoopIdentifiers, & + & solverIndex,monitorLinesearchFlag,err) !DLLEXPORT(cmfe_Solver_NewtonLineSearchMonitorOutputSetNumber1) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the Jacobian calculation type for an Newton solver identified by an user number. - SUBROUTINE cmfe_Solver_NewtonJacobianCalculationTypeSetNumber0(problemUserNumber,controlLoopIdentifier,solverIndex, & - & jacobianCalculationType,err) + SUBROUTINE cmfe_Solver_NewtonJacobianCalculationTypeSetNumber0(contextUserNumber,problemUserNumber,controlLoopIdentifier, & + & solverIndex,jacobianCalculationType,err) !DLLEXPORT(cmfe_Solver_NewtonJacobianCalculationTypeSetNumber0) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the Jacobian calculation type for a Newton solver identified by an user number. - SUBROUTINE cmfe_Solver_NewtonJacobianCalculationTypeSetNumber1(problemUserNumber,controlLoopIdentifiers,solverIndex, & - & jacobianCalculationType,err) + SUBROUTINE cmfe_Solver_NewtonJacobianCalculationTypeSetNumber1(contextUserNumber,problemUserNumber,controlLoopIdentifiers, & + & solverIndex,jacobianCalculationType,err) !DLLEXPORT(cmfe_Solver_NewtonJacobianCalculationTypeSetNumber1) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Returns the linear solver associated with a Newton solver identified by an user number. - SUBROUTINE cmfe_Solver_NewtonLinearSolverGetNumber0(problemUserNumber,controlLoopIdentifier,solverIndex,linearSolverIndex,err) + SUBROUTINE cmfe_Solver_NewtonLinearSolverGetNumber0(contextUserNumber,problemUserNumber,controlLoopIdentifier,solverIndex, & + & linearSolverIndex,err) !DLLEXPORT(cmfe_Solver_NewtonLinearSolverGetNumber0) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Returns the linear solver associated with a Newton solver identified by an user number. - SUBROUTINE cmfe_Solver_NewtonLinearSolverGetNumber1(problemUserNumber,controlLoopIdentifiers,solverIndex,linearSolverIndex,err) + SUBROUTINE cmfe_Solver_NewtonLinearSolverGetNumber1(contextUserNumber,problemUserNumber,controlLoopIdentifiers,solverIndex, & + & linearSolverIndex,err) !DLLEXPORT(cmfe_Solver_NewtonLinearSolverGetNumber1) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Returns the CellML solver associated with a Newton solver identified by an user number. - SUBROUTINE cmfe_Solver_NewtonCellMLSolverGetNumber0(problemUserNumber,controlLoopIdentifier,solverIndex,cellMLSolverIndex,err) + SUBROUTINE cmfe_Solver_NewtonCellMLSolverGetNumber0(contextUserNumber,problemUserNumber,controlLoopIdentifier,solverIndex, & + & cellMLSolverIndex,err) !DLLEXPORT(cmfe_Solver_NewtonCellMLSolverGetNumber0) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Returns the CellML solver associated with a Newton solver identified by an user number. - SUBROUTINE cmfe_Solver_NewtonCellMLSolverGetNumber1(problemUserNumber,controlLoopIdentifiers,solverIndex,cellMLSolverIndex,err) + SUBROUTINE cmfe_Solver_NewtonCellMLSolverGetNumber1(contextUserNumber,problemUserNumber,controlLoopIdentifiers,solverIndex, & + & cellMLSolverIndex,err) !DLLEXPORT(cmfe_Solver_NewtonCellMLSolverGetNumber1) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the convergence test type for an Newton linesearch solver identified by an user number. - SUBROUTINE cmfe_Solver_NewtonConvergenceTestTypeSetNumber0(problemUserNumber,controlLoopIdentifier,solverIndex, & - & convergenceTestType,err) + SUBROUTINE cmfe_Solver_NewtonConvergenceTestTypeSetNumber0(contextUserNumber,problemUserNumber,controlLoopIdentifier, & + & solverIndex,convergenceTestType,err) !DLLEXPORT(cmfe_Solver_NewtonConvergenceTestTypeSetNumber0) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the convergence test type for a Newton solver identified by an user number. - SUBROUTINE cmfe_Solver_NewtonConvergenceTestTypeSetNumber1(problemUserNumber,controlLoopIdentifiers,solverIndex, & - & convergenceTestType,err) + SUBROUTINE cmfe_Solver_NewtonConvergenceTestTypeSetNumber1(contextUserNumber,problemUserNumber,controlLoopIdentifiers, & + & solverIndex,convergenceTestType,err) !DLLEXPORT(cmfe_Solver_NewtonConvergenceTestTypeSetNumber1) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the line search alpha for an Newton linesearch solver identified by an user number. - SUBROUTINE cmfe_Solver_NewtonLineSearchAlphaSetNumber0(problemUserNumber,controlLoopIdentifier,solverIndex,alpha,err) + SUBROUTINE cmfe_Solver_NewtonLineSearchAlphaSetNumber0(contextUserNumber,problemUserNumber,controlLoopIdentifier, & + & solverIndex,alpha,err) !DLLEXPORT(cmfe_Solver_NewtonLineSearchAlphaSetNumber0) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the line search alpha for a Newton line search solver identified by an user number. - SUBROUTINE cmfe_Solver_NewtonLineSearchAlphaSetNumber1(problemUserNumber,controlLoopIdentifiers,solverIndex,alpha,err) + SUBROUTINE cmfe_Solver_NewtonLineSearchAlphaSetNumber1(contextUserNumber,problemUserNumber,controlLoopIdentifiers,solverIndex, & + & alpha,err) !DLLEXPORT(cmfe_Solver_NewtonLineSearchAlphaSetNumber1) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the line search maximum step for an Newton linesearch solver identified by an user number. - SUBROUTINE cmfe_Solver_NewtonLineSearchMaxStepSetNumber0(problemUserNumber,controlLoopIdentifier,solverIndex,maxStep,err) + SUBROUTINE cmfe_Solver_NewtonLineSearchMaxStepSetNumber0(contextUserNumber,problemUserNumber,controlLoopIdentifier, & + & solverIndex,maxStep,err) !DLLEXPORT(cmfe_Solver_NewtonLineSearchMaxStepSetNumber0) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the line search maximum step for a Newton line search solver identified by an user number. - SUBROUTINE cmfe_Solver_NewtonLineSearchMaxStepSetNumber1(problemUserNumber,controlLoopIdentifiers,solverIndex,maxStep,err) + SUBROUTINE cmfe_Solver_NewtonLineSearchMaxStepSetNumber1(contextUserNumber,problemUserNumber,controlLoopIdentifiers, & + & solverIndex,maxStep,err) !DLLEXPORT(cmfe_Solver_NewtonLineSearchMaxStepSetNumber1) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the line search step tolerance for an Newton linesearch solver identified by an user number. - SUBROUTINE cmfe_Solver_NewtonLineSearchStepTolSetNumber0(problemUserNumber,controlLoopIdentifier,solverIndex,stepTol,err) + SUBROUTINE cmfe_Solver_NewtonLineSearchStepTolSetNumber0(contextUserNumber,problemUserNumber,controlLoopIdentifier, & + & solverIndex,stepTol,err) !DLLEXPORT(cmfe_Solver_NewtonLineSearchStepTolSetNumber0) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the line search step tolerance for a Newton line search solver identified by an user number. - SUBROUTINE cmfe_Solver_NewtonLineSearchStepTolSetNumber1(problemUserNumber,controlLoopIdentifiers,solverIndex,stepTol,err) + SUBROUTINE cmfe_Solver_NewtonLineSearchStepTolSetNumber1(contextUserNumber,problemUserNumber,controlLoopIdentifiers, & + & solverIndex,stepTol,err) !DLLEXPORT(cmfe_Solver_NewtonLineSearchStepTolSetNumber1) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the line search type for an Newton linesearch solver identified by an user number. - SUBROUTINE cmfe_Solver_NewtonLineSearchTypeSetNumber0(problemUserNumber,controlLoopIdentifier,solverIndex,lineSearchType,err) + SUBROUTINE cmfe_Solver_NewtonLineSearchTypeSetNumber0(contextUserNUmber,problemUserNumber,controlLoopIdentifier,solverIndex, & + & lineSearchType,err) !DLLEXPORT(cmfe_Solver_NewtonLineSearchTypeSetNumber0) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the type of line search for a Newton line search solver identified by an user number. - SUBROUTINE cmfe_Solver_NewtonLineSearchTypeSetNumber1(problemUserNumber,controlLoopIdentifiers,solverIndex,lineSearchType,err) + SUBROUTINE cmfe_Solver_NewtonLineSearchTypeSetNumber1(contextUserNumber,problemUserNumber,controlLoopIdentifiers,solverIndex, & + & lineSearchType,err) !DLLEXPORT(cmfe_Solver_NewtonLineSearchTypeSetNumber1) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the maximum number of function evaluations for an Newton solver identified by an user number. - SUBROUTINE cmfe_Solver_NewtonMaximumFunctionEvaluationsSetNumber0(problemUserNumber,controlLoopIdentifier,solverIndex, & - & maximumFunctionEvaluations,err) + SUBROUTINE cmfe_Solver_NewtonMaximumFunctionEvaluationsSetNumber0(contextUserNumber,problemUserNumber,controlLoopIdentifier, & + & solverIndex,maximumFunctionEvaluations,err) !DLLEXPORT(cmfe_Solver_NewtonMaximumFunctionEvaluationsSetNumber0) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the maximum number of function evaluations for a Newton solver identified by an user number. - SUBROUTINE cmfe_Solver_NewtonMaximumFunctionEvaluationsSetNumber1(problemUserNumber,controlLoopIdentifiers,solverIndex, & - & maximumFunctionEvaluations,err) + SUBROUTINE cmfe_Solver_NewtonMaximumFunctionEvaluationsSetNumber1(contextUserNumber,problemUserNumber,controlLoopIdentifiers, & + & solverIndex,maximumFunctionEvaluations,err) !DLLEXPORT(cmfe_Solver_NewtonMaximumFunctionEvaluationsSetNumber1) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the maximum number of iterations for an Newton solver identified by an user number. - SUBROUTINE cmfe_Solver_NewtonMaximumIterationsSetNumber0(problemUserNumber,controlLoopIdentifier,solverIndex, & - & maximumIterations,err) + SUBROUTINE cmfe_Solver_NewtonMaximumIterationsSetNumber0(contextUserNumber,problemUserNumber,controlLoopIdentifier, & + & solverIndex,maximumIterations,err) !DLLEXPORT(cmfe_Solver_NewtonMaximumIterationsSetNumber0) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the maximum number of iterations for a Newton solver identified by an user number. - SUBROUTINE cmfe_Solver_NewtonMaximumIterationsSetNumber1(problemUserNumber,controlLoopIdentifiers,solverIndex,maximumIterations, & - & err) + SUBROUTINE cmfe_Solver_NewtonMaximumIterationsSetNumber1(contextUserNumber,problemUserNumber,controlLoopIdentifiers, & + & solverIndex,maximumIterations,err) !DLLEXPORT(cmfe_Solver_NewtonMaximumIterationsSetNumber1) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the relative tolerance for an Newton solver identified by an user number. - SUBROUTINE cmfe_Solver_NewtonRelativeToleranceSetNumber0(problemUserNumber,controlLoopIdentifier,solverIndex, & - & relativeTolerance,err) + SUBROUTINE cmfe_Solver_NewtonRelativeToleranceSetNumber0(contextUserNumber,problemUserNumber,controlLoopIdentifier, & + & solverIndex,relativeTolerance,err) !DLLEXPORT(cmfe_Solver_NewtonRelativeToleranceSetNumber0) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the relative tolerance for a Newton solver identified by an user number. - SUBROUTINE cmfe_Solver_NewtonRelativeToleranceSetNumber1(problemUserNumber,controlLoopIdentifiers,solverIndex,relativeTolerance, & - & err) + SUBROUTINE cmfe_Solver_NewtonRelativeToleranceSetNumber1(contextUserNumber,problemUserNumber,controlLoopIdentifiers, & + & solverIndex,relativeTolerance,err) !DLLEXPORT(cmfe_Solver_NewtonRelativeToleranceSetNumber1) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the solution tolerance for an Newton solver identified by an user number. - SUBROUTINE cmfe_Solver_NewtonSolutionToleranceSetNumber0(problemUserNumber,controlLoopIdentifier,solverIndex, & + SUBROUTINE cmfe_Solver_NewtonSolutionToleranceSetNumber0(contextUserNumber,problemUserNumber,controlLoopIdentifier,solverIndex, & & solutionTolerance,err) !DLLEXPORT(cmfe_Solver_NewtonSolutionToleranceSetNumber0) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the solution tolerance for a Newton solver identified by an user number. - SUBROUTINE cmfe_Solver_NewtonSolutionToleranceSetNumber1(problemUserNumber,controlLoopIdentifiers,solverIndex,solutionTolerance, & - & err) + SUBROUTINE cmfe_Solver_NewtonSolutionToleranceSetNumber1(contextUserNUmber,problemUserNumber,controlLoopIdentifiers, & + & solverIndex,solutionTolerance,err) !DLLEXPORT(cmfe_Solver_NewtonSolutionToleranceSetNumber1) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the delta0 for a Newton trust region solver identified by an user number. - SUBROUTINE cmfe_Solver_NewtonTrustRegionDelta0SetNumber0(problemUserNumber,controlLoopIdentifier,solverIndex,delta0,err) + SUBROUTINE cmfe_Solver_NewtonTrustRegionDelta0SetNumber0(contextUserNumber,problemUserNumber,controlLoopIdentifier, & + & solverIndex,delta0,err) !DLLEXPORT(cmfe_Solver_NewtonTrustRegionDelta0SetNumber0) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the delta0 for a Newton trust region solver identified by an user number. - SUBROUTINE cmfe_Solver_NewtonTrustRegionDelta0SetNumber1(problemUserNumber,controlLoopIdentifiers,solverIndex,delta0,err) + SUBROUTINE cmfe_Solver_NewtonTrustRegionDelta0SetNumber1(contextUserNumber,problemUserNumber,controlLoopIdentifiers, & + & solverIndex,delta0,err) !DLLEXPORT(cmfe_Solver_NewtonTrustRegionDelta0SetNumber1) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the tolerance for a Newton trust region solver identified by an user number. - SUBROUTINE cmfe_Solver_NewtonTrustRegionToleranceSetNumber0(problemUserNumber,controlLoopIdentifier,solverIndex,tolerance,err) + SUBROUTINE cmfe_Solver_NewtonTrustRegionToleranceSetNumber0(contextUserNumber,problemUserNumber,controlLoopIdentifier, & + & solverIndex,tolerance,err) !DLLEXPORT(cmfe_Solver_NewtonTrustRegionToleranceSetNumber0) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the tolerance for a Newton trust region solver identified by an user number. - SUBROUTINE cmfe_Solver_NewtonTrustRegionToleranceSetNumber1(problemUserNumber,controlLoopIdentifiers,solverIndex,tolerance,err) + SUBROUTINE cmfe_Solver_NewtonTrustRegionToleranceSetNumber1(contextUserNumber,problemUserNumber,controlLoopIdentifiers, & + & solverIndex,tolerance,err) !DLLEXPORT(cmfe_Solver_NewtonTrustRegionToleranceSetNumber1) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the type of a Newton solver identified by an user number. - SUBROUTINE cmfe_Solver_NewtonTypeSetNumber0(problemUserNumber,controlLoopIdentifier,solverIndex,newtonSolveType,err) + SUBROUTINE cmfe_Solver_NewtonTypeSetNumber0(contextUserNumber,problemUserNumber,controlLoopIdentifier,solverIndex, & + & newtonSolveType,err) !DLLEXPORT(cmfe_Solver_NewtonTypeSetNumber0) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the type of a Newton solver identified by an user number. - SUBROUTINE cmfe_Solver_NewtonTypeSetNumber1(problemUserNumber,controlLoopIdentifiers,solverIndex,newtonSolveType,err) + SUBROUTINE cmfe_Solver_NewtonTypeSetNumber1(contextUserNumber,problemUserNumber,controlLoopIdentifiers,solverIndex, & + & newtonSolveType,err) !DLLEXPORT(cmfe_Solver_NewtonTypeSetNumber1) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the absolute tolerance for an Quasi-Newton solver identified by an user number. - SUBROUTINE cmfe_Solver_QuasiNewtonAbsoluteToleranceSetNumber0(problemUserNumber,controlLoopIdentifier,solverIndex, & - & absoluteTolerance,err) + SUBROUTINE cmfe_Solver_QuasiNewtonAbsoluteToleranceSetNumber0(contextUserNumber,problemUserNumber,controlLoopIdentifier, & + & solverIndex,absoluteTolerance,err) !DLLEXPORT(cmfe_Solver_QuasiNewtonAbsoluteToleranceSetNumber0) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the absolute tolerance for a Quasi-Newton solver identified by an user number. - SUBROUTINE cmfe_Solver_QuasiNewtonAbsoluteToleranceSetNumber1(problemUserNumber, & - & controlLoopIdentifiers,solverIndex,absoluteTolerance,err) + SUBROUTINE cmfe_Solver_QuasiNewtonAbsoluteToleranceSetNumber1(contextUserNumber,problemUserNumber,controlLoopIdentifiers, & + & solverIndex,absoluteTolerance,err) !DLLEXPORT(cmfe_Solver_QuasiNewtonAbsoluteToleranceSetNumber1) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Enables/disables output monitoring for a nonlinear Quasi-Newton line search solver identified by an user number. - SUBROUTINE cmfe_Solver_QuasiNewtonLineSearchMonitorOutputSetNumber0(problemUserNumber, & + SUBROUTINE cmfe_Solver_QuasiNewtonLineSearchMonitorOutputSetNumber0(contextUserNumber,problemUserNumber, & & controlLoopIdentifier,solverIndex,monitorLinesearchFlag,err) !DLLEXPORT(cmfe_Solver_QuasiNewtonLineSearchMonitorOutputSetNumber0) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Enables/disables output monitoring for a nonlinear Quasi-Newton line search solver identified by an user number. - SUBROUTINE cmfe_Solver_QuasiNewtonLineSearchMonitorOutputSetNumber1(problemUserNumber,controlLoopIdentifiers,solverIndex, & - & monitorLinesearchFlag,err) + SUBROUTINE cmfe_Solver_QuasiNewtonLineSearchMonitorOutputSetNumber1(contextUserNumber,problemUserNumber,controlLoopIdentifiers, & + & solverIndex,monitorLinesearchFlag,err) !DLLEXPORT(cmfe_Solver_QuasiNewtonLineSearchMonitorOutputSetNumber1) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the Jacobian calculation type for an Quasi-Newton solver identified by an user number. - SUBROUTINE cmfe_Solver_QuasiNewtonJacobianCalculationTypeSetNumber0(problemUserNumber,controlLoopIdentifier,solverIndex, & - & jacobianCalculationType,err) + SUBROUTINE cmfe_Solver_QuasiNewtonJacobianCalculationTypeSetNumber0(contextUserNumber,problemUserNumber,controlLoopIdentifier, & + & solverIndex,jacobianCalculationType,err) !DLLEXPORT(cmfe_Solver_QuasiNewtonJacobianCalculationTypeSetNumber0) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the Jacobian calculation type for a Quasi-Newton solver identified by an user number. - SUBROUTINE cmfe_Solver_QuasiNewtonJacobianCalculationTypeSetNumber1(problemUserNumber,controlLoopIdentifiers,solverIndex, & - & jacobianCalculationType,err) + SUBROUTINE cmfe_Solver_QuasiNewtonJacobianCalculationTypeSetNumber1(contextUserNumber,problemUserNumber, & + & controlLoopIdentifiers,solverIndex,jacobianCalculationType,err) !DLLEXPORT(cmfe_Solver_QuasiNewtonJacobianCalculationTypeSetNumber1) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Returns the linear solver associated with a Quasi-Newton solver identified by an user number. - SUBROUTINE cmfe_Solver_QuasiNewtonLinearSolverGetNumber0(problemUserNumber,controlLoopIdentifier, & + SUBROUTINE cmfe_Solver_QuasiNewtonLinearSolverGetNumber0(contextUserNumber,problemUserNumber,controlLoopIdentifier, & & solverIndex,linearSolverIndex,err) !DLLEXPORT(cmfe_Solver_QuasiNewtonLinearSolverGetNumber0) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Returns the linear solver associated with a Quasi-Newton solver identified by an user number. - SUBROUTINE cmfe_Solver_QuasiNewtonLinearSolverGetNumber1(problemUserNumber,controlLoopIdentifiers, & + SUBROUTINE cmfe_Solver_QuasiNewtonLinearSolverGetNumber1(contextUserNumber,problemUserNumber,controlLoopIdentifiers, & & solverIndex,linearSolverIndex,err) !DLLEXPORT(cmfe_Solver_QuasiNewtonLinearSolverGetNumber1) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Returns the CellML solver associated with a Quasi-Newton solver identified by an user number. - SUBROUTINE cmfe_Solver_QuasiNewtonCellMLSolverGetNumber0(problemUserNumber,controlLoopIdentifier, & + SUBROUTINE cmfe_Solver_QuasiNewtonCellMLSolverGetNumber0(contextUserNumber,problemUserNumber,controlLoopIdentifier, & & solverIndex,cellMLSolverIndex,err) !DLLEXPORT(cmfe_Solver_QuasiNewtonCellMLSolverGetNumber0) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Returns the CellML solver associated with a Quasi-Newton solver identified by an user number. - SUBROUTINE cmfe_Solver_QuasiNewtonCellMLSolverGetNumber1(problemUserNumber,controlLoopIdentifiers, & + SUBROUTINE cmfe_Solver_QuasiNewtonCellMLSolverGetNumber1(contextUserNumber,problemUserNumber,controlLoopIdentifiers, & & solverIndex,cellMLSolverIndex,err) !DLLEXPORT(cmfe_Solver_QuasiNewtonCellMLSolverGetNumber1) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the convergence test type for an Quasi-Newton linesearch solver identified by an user number. - SUBROUTINE cmfe_Solver_QuasiNewtonConvergenceTestTypeSetNumber0(problemUserNumber,controlLoopIdentifier,solverIndex, & - & convergenceTestType,err) + SUBROUTINE cmfe_Solver_QuasiNewtonConvergenceTestTypeSetNumber0(contextUserNumber,problemUserNumber,controlLoopIdentifier, & + & solverIndex,convergenceTestType,err) !DLLEXPORT(cmfe_Solver_QuasiNewtonConvergenceTestTypeSetNumber0) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the convergence test type for a Quasi-Newton solver identified by an user number. - SUBROUTINE cmfe_Solver_QuasiNewtonConvergenceTestTypeSetNumber1(problemUserNumber,controlLoopIdentifiers,solverIndex, & - & convergenceTestType,err) + SUBROUTINE cmfe_Solver_QuasiNewtonConvergenceTestTypeSetNumber1(contextUserNumber,problemUserNumber,controlLoopIdentifiers, & + & solverIndex,convergenceTestType,err) !DLLEXPORT(cmfe_Solver_QuasiNewtonConvergenceTestTypeSetNumber1) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the line search maximum step for an Quasi-Newton linesearch solver identified by an user number. - SUBROUTINE cmfe_Solver_QuasiNewtonLineSearchMaxStepSetNumber0(problemUserNumber,controlLoopIdentifier,solverIndex,maxStep,err) + SUBROUTINE cmfe_Solver_QuasiNewtonLineSearchMaxStepSetNumber0(contextUserNumber,problemUserNumber,controlLoopIdentifier, & + & solverIndex,maxStep,err) !DLLEXPORT(cmfe_Solver_QuasiNewtonLineSearchMaxStepSetNumber0) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the line search maximum step for a Quasi-Newton line search solver identified by an user number. - SUBROUTINE cmfe_Solver_QuasiNewtonLineSearchMaxStepSetNumber1(problemUserNumber,controlLoopIdentifiers,solverIndex,maxStep,err) + SUBROUTINE cmfe_Solver_QuasiNewtonLineSearchMaxStepSetNumber1(contextUserNumber,problemUserNumber,controlLoopIdentifiers, & + & solverIndex,maxStep,err) !DLLEXPORT(cmfe_Solver_QuasiNewtonLineSearchMaxStepSetNumber1) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the line search step tolerance for an Quasi-Newton linesearch solver identified by an user number. - SUBROUTINE cmfe_Solver_QuasiNewtonLineSearchStepTolSetNumber0(problemUserNumber,controlLoopIdentifier,solverIndex,stepTol,err) + SUBROUTINE cmfe_Solver_QuasiNewtonLineSearchStepTolSetNumber0(contextUserNumber,problemUserNumber,controlLoopIdentifier, & + & solverIndex,stepTol,err) !DLLEXPORT(cmfe_Solver_QuasiNewtonLineSearchStepTolSetNumber0) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the line search step tolerance for a Quasi-Newton line search solver identified by an user number. - SUBROUTINE cmfe_Solver_QuasiNewtonLineSearchStepTolSetNumber1(problemUserNumber,controlLoopIdentifiers,solverIndex,stepTol,err) + SUBROUTINE cmfe_Solver_QuasiNewtonLineSearchStepTolSetNumber1(contextUserNumber,problemUserNumber,controlLoopIdentifiers, & + & solverIndex,stepTol,err) !DLLEXPORT(cmfe_Solver_QuasiNewtonLineSearchStepTolSetNumber1) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the line search type for an Quasi-Newton linesearch solver identified by an user number. - SUBROUTINE cmfe_Solver_QuasiNewtonLineSearchTypeSetNumber0(problemUserNumber,controlLoopIdentifier, & + SUBROUTINE cmfe_Solver_QuasiNewtonLineSearchTypeSetNumber0(contextUserNumber,problemUserNumber,controlLoopIdentifier, & & solverIndex,lineSearchType,err) !DLLEXPORT(cmfe_Solver_QuasiNewtonLineSearchTypeSetNumber0) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the type of line search for a Quasi-Newton line search solver identified by an user number. - SUBROUTINE cmfe_Solver_QuasiNewtonLineSearchTypeSetNumber1(problemUserNumber,controlLoopIdentifiers, & + SUBROUTINE cmfe_Solver_QuasiNewtonLineSearchTypeSetNumber1(contextUserNumber,problemUserNumber,controlLoopIdentifiers, & & solverIndex,lineSearchType,err) !DLLEXPORT(cmfe_Solver_QuasiNewtonLineSearchTypeSetNumber1) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the maximum number of function evaluations for an Quasi-Newton solver identified by an user number. - SUBROUTINE cmfe_Solver_QuasiNewtonMaximumFunctionEvaluationsSetNumber0(problemUserNumber,controlLoopIdentifier,solverIndex, & - & maximumFunctionEvaluations,err) + SUBROUTINE cmfe_Solver_QuasiNewtonMaximumFunctionEvaluationsSetNumber0(contextUserNumber,problemUserNumber, & + & controlLoopIdentifier,solverIndex,maximumFunctionEvaluations,err) !DLLEXPORT(cmfe_Solver_QuasiNewtonMaximumFunctionEvaluationsSetNumber0) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the maximum number of function evaluations for a Quasi-Newton solver identified by an user number. - SUBROUTINE cmfe_Solver_QuasiNewtonMaximumFunctionEvaluationsSetNumber1(problemUserNumber,controlLoopIdentifiers,solverIndex, & - & maximumFunctionEvaluations,err) + SUBROUTINE cmfe_Solver_QuasiNewtonMaximumFunctionEvaluationsSetNumber1(contextUserNumber,problemUserNumber, & + & controlLoopIdentifiers,solverIndex,maximumFunctionEvaluations,err) !DLLEXPORT(cmfe_Solver_QuasiNewtonMaximumFunctionEvaluationsSetNumber1) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the maximum number of iterations for an Quasi-Newton solver identified by an user number. - SUBROUTINE cmfe_Solver_QuasiNewtonMaximumIterationsSetNumber0(problemUserNumber,controlLoopIdentifier, & + SUBROUTINE cmfe_Solver_QuasiNewtonMaximumIterationsSetNumber0(contextUserNumber,problemUserNumber,controlLoopIdentifier, & & solverIndex,maximumIterations,err) !DLLEXPORT(cmfe_Solver_QuasiNewtonMaximumIterationsSetNumber0) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the maximum number of iterations for a Quasi-Newton solver identified by an user number. - SUBROUTINE cmfe_Solver_QuasiNewtonMaximumIterationsSetNumber1(problemUserNumber,controlLoopIdentifiers, & + SUBROUTINE cmfe_Solver_QuasiNewtonMaximumIterationsSetNumber1(contextUserNumber,problemUserNumber,controlLoopIdentifiers, & & solverIndex,maximumIterations,err) !DLLEXPORT(cmfe_Solver_QuasiNewtonMaximumIterationsSetNumber1) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the relative tolerance for an Quasi-Newton solver identified by an user number. - SUBROUTINE cmfe_Solver_QuasiNewtonRelativeToleranceSetNumber0(problemUserNumber,controlLoopIdentifier, & + SUBROUTINE cmfe_Solver_QuasiNewtonRelativeToleranceSetNumber0(contextUserNumber,problemUserNumber,controlLoopIdentifier, & & solverIndex,relativeTolerance,err) !DLLEXPORT(cmfe_Solver_QuasiNewtonRelativeToleranceSetNumber0) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the relative tolerance for a Quasi-Newton solver identified by an user number. - SUBROUTINE cmfe_Solver_QuasiNewtonRelativeToleranceSetNumber1(problemUserNumber,controlLoopIdentifiers, & + SUBROUTINE cmfe_Solver_QuasiNewtonRelativeToleranceSetNumber1(contextUserNumber,problemUserNumber,controlLoopIdentifiers, & & solverIndex,relativeTolerance,err) !DLLEXPORT(cmfe_Solver_QuasiNewtonRelativeToleranceSetNumber1) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the solution tolerance for an Quasi-Newton solver identified by an user number. - SUBROUTINE cmfe_Solver_QuasiNewtonSolutionToleranceSetNumber0(problemUserNumber,controlLoopIdentifier, & + SUBROUTINE cmfe_Solver_QuasiNewtonSolutionToleranceSetNumber0(contextUserNumber,problemUserNumber,controlLoopIdentifier, & & solverIndex,solutionTolerance,err) !DLLEXPORT(cmfe_Solver_QuasiNewtonSolutionToleranceSetNumber0) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the solution tolerance for a Quasi-Newton solver identified by an user number. - SUBROUTINE cmfe_Solver_QuasiNewtonSolutionToleranceSetNumber1(problemUserNumber,controlLoopIdentifiers, & + SUBROUTINE cmfe_Solver_QuasiNewtonSolutionToleranceSetNumber1(contextUserNumber,problemUserNumber,controlLoopIdentifiers, & & solverIndex,solutionTolerance,err) !DLLEXPORT(cmfe_Solver_QuasiNewtonSolutionToleranceSetNumber1) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the delta0 for a Quasi-Newton trust region solver identified by an user number. - SUBROUTINE cmfe_Solver_QuasiNewtonTrustRegionDelta0SetNumber0(problemUserNumber,controlLoopIdentifier,solverIndex,delta0,err) + SUBROUTINE cmfe_Solver_QuasiNewtonTrustRegionDelta0SetNumber0(contextUserNumber,problemUserNumber,controlLoopIdentifier, & + & solverIndex,delta0,err) !DLLEXPORT(cmfe_Solver_QuasiNewtonTrustRegionDelta0SetNumber0) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the delta0 for a Quasi-Newton trust region solver identified by an user number. - SUBROUTINE cmfe_Solver_QuasiNewtonTrustRegionDelta0SetNumber1(problemUserNumber,controlLoopIdentifiers,solverIndex,delta0,err) + SUBROUTINE cmfe_Solver_QuasiNewtonTrustRegionDelta0SetNumber1(contextUserNumber,problemUserNumber,controlLoopIdentifiers, & + & solverIndex,delta0,err) !DLLEXPORT(cmfe_Solver_QuasiNewtonTrustRegionDelta0SetNumber1) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the tolerance for a Quasi-Newton trust region solver identified by an user number. - SUBROUTINE cmfe_Solver_QuasiNewtonTrustRegionToleranceSetNumber0(problemUserNumber,controlLoopIdentifier, & + SUBROUTINE cmfe_Solver_QuasiNewtonTrustRegionToleranceSetNumber0(contextUserNumber,problemUserNumber,controlLoopIdentifier, & & solverIndex,tolerance,err) !DLLEXPORT(cmfe_Solver_QuasiNewtonTrustRegionToleranceSetNumber0) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the tolerance for a Quasi-Newton trust region solver identified by an user number. - SUBROUTINE cmfe_Solver_QuasiNewtonTrustRegionToleranceSetNumber1(problemUserNumber,controlLoopIdentifiers, & + SUBROUTINE cmfe_Solver_QuasiNewtonTrustRegionToleranceSetNumber1(contextUserNumber,problemUserNumber,controlLoopIdentifiers, & & solverIndex,tolerance,err) !DLLEXPORT(cmfe_Solver_QuasiNewtonTrustRegionToleranceSetNumber1) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the restart of a Quasi-Newton solver identified by an user number. - SUBROUTINE cmfe_Solver_QuasiNewtonRestartSetNumber0(problemUserNumber,controlLoopIdentifier, & + SUBROUTINE cmfe_Solver_QuasiNewtonRestartSetNumber0(contextUserNumber,problemUserNumber,controlLoopIdentifier, & & solverIndex,quasiNewtonRestart,err) !DLLEXPORT(cmfe_Solver_QuasiNewtonRestartSetNumber0) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the restart of a Quasi-Newton solver identified by an user number. - SUBROUTINE cmfe_Solver_QuasiNewtonRestartSetNumber1(problemUserNumber,controlLoopIdentifiers, & + SUBROUTINE cmfe_Solver_QuasiNewtonRestartSetNumber1(contextUserNumber,problemUserNumber,controlLoopIdentifiers, & & solverIndex,quasiNewtonRestart,err) !DLLEXPORT(cmfe_Solver_QuasiNewtonRestartSetNumber1) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the restart type of a Quasi-Newton solver identified by an user number. - SUBROUTINE cmfe_Solver_QuasiNewtonRestartTypeSetNumber0(problemUserNumber,controlLoopIdentifier, & + SUBROUTINE cmfe_Solver_QuasiNewtonRestartTypeSetNumber0(contextUserNumber,problemUserNumber,controlLoopIdentifier, & & solverIndex,quasiNewtonRestartType,err) !DLLEXPORT(cmfe_Solver_QuasiNewtonRestartTypeSetNumber0) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the restart type of a Quasi-Newton solver identified by an user number. - SUBROUTINE cmfe_Solver_QuasiNewtonRestartTypeSetNumber1(problemUserNumber,controlLoopIdentifiers, & + SUBROUTINE cmfe_Solver_QuasiNewtonRestartTypeSetNumber1(contextUserNumber,problemUserNumber,controlLoopIdentifiers, & & solverIndex,quasiNewtonRestartType,err) !DLLEXPORT(cmfe_Solver_QuasiNewtonRestartTypeSetNumber1) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the scale type of a Quasi-Newton solver identified by an user number. - SUBROUTINE cmfe_Solver_QuasiNewtonScaleTypeSetNumber0(problemUserNumber,controlLoopIdentifier, & + SUBROUTINE cmfe_Solver_QuasiNewtonScaleTypeSetNumber0(contextUserNumber,problemUserNumber,controlLoopIdentifier, & & solverIndex,quasiNewtonScaleType,err) !DLLEXPORT(cmfe_Solver_QuasiNewtonScaleTypeSetNumber0) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the scale type of a Quasi-Newton solver identified by an user number. - SUBROUTINE cmfe_Solver_QuasiNewtonScaleTypeSetNumber1(problemUserNumber,controlLoopIdentifiers, & + SUBROUTINE cmfe_Solver_QuasiNewtonScaleTypeSetNumber1(contextUserNumber,problemUserNumber,controlLoopIdentifiers, & & solverIndex,quasiNewtonScaleType,err) !DLLEXPORT(cmfe_Solver_QuasiNewtonScaleTypeSetNumber1) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the type of a Quasi-Newton solver identified by an user number. - SUBROUTINE cmfe_Solver_QuasiNewtonSolveTypeSetNumber0(problemUserNumber,controlLoopIdentifier, & + SUBROUTINE cmfe_Solver_QuasiNewtonSolveTypeSetNumber0(contextUserNumber,problemUserNumber,controlLoopIdentifier, & & solverIndex,quasiNewtonSolveType,err) !DLLEXPORT(cmfe_Solver_QuasiNewtonSolveTypeSetNumber0) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the type of a Quasi-Newton solver identified by an user number. - SUBROUTINE cmfe_Solver_QuasiNewtonSolveTypeSetNumber1(problemUserNumber,controlLoopIdentifiers, & + SUBROUTINE cmfe_Solver_QuasiNewtonSolveTypeSetNumber1(contextUserNumber,problemUserNumber,controlLoopIdentifiers, & & solverIndex,quasiNewtonSolveType,err) !DLLEXPORT(cmfe_Solver_QuasiNewtonSolveTypeSetNumber1) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the type of a Quasi-Newton solver identified by an user number. - SUBROUTINE cmfe_Solver_QuasiNewtonTypeSetNumber0(problemUserNumber,controlLoopIdentifier, & + SUBROUTINE cmfe_Solver_QuasiNewtonTypeSetNumber0(contextUserNumber,problemUserNumber,controlLoopIdentifier, & & solverIndex,quasiNewtonType,err) !DLLEXPORT(cmfe_Solver_QuasiNewtonTypeSetNumber0) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the type of a Quasi-Newton solver identified by an user number. - SUBROUTINE cmfe_Solver_QuasiNewtonTypeSetNumber1(problemUserNumber,controlLoopIdentifiers, & + SUBROUTINE cmfe_Solver_QuasiNewtonTypeSetNumber1(contextUserNumber,problemUserNumber,controlLoopIdentifiers, & & solverIndex,quasiNewtonType,err) !DLLEXPORT(cmfe_Solver_QuasiNewtonTypeSetNumber1) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the type of a nonlinear solver identified by an user number. - SUBROUTINE cmfe_Solver_NonlinearTypeSetNumber0(problemUserNumber,controlLoopIdentifier,solverIndex,nonlinearSolveType,err) + SUBROUTINE cmfe_Solver_NonlinearTypeSetNumber0(contextUserNumber,problemUserNumber,controlLoopIdentifier,solverIndex, & + & nonlinearSolveType,err) !DLLEXPORT(cmfe_Solver_NonlinearTypeSetNumber0) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the type of a nonlinear solver identified by an user number. - SUBROUTINE cmfe_Solver_NonlinearTypeSetNumber1(problemUserNumber,controlLoopIdentifiers,solverIndex,nonlinearSolveType,err) + SUBROUTINE cmfe_Solver_NonlinearTypeSetNumber1(contextUserNumber,problemUserNumber,controlLoopIdentifiers,solverIndex, & + & nonlinearSolveType,err) !DLLEXPORT(cmfe_Solver_NonlinearTypeSetNumber1) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the output type for a solver identified by an user number. - SUBROUTINE cmfe_Solver_OutputTypeSetNumber0(problemUserNumber,controlLoopIdentifier,solverIndex,outputType,err) + SUBROUTINE cmfe_Solver_OutputTypeSetNumber0(contextUserNumber,problemUserNumber,controlLoopIdentifier,solverIndex, & + & outputType,err) !DLLEXPORT(cmfe_Solver_OutputTypeSetNumber0) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the type of output for a solver identified by an user number. - SUBROUTINE cmfe_Solver_OutputTypeSetNumber1(problemUserNumber,controlLoopIdentifiers,solverIndex,outputType,err) + SUBROUTINE cmfe_Solver_OutputTypeSetNumber1(contextUserNumber,problemUserNumber,controlLoopIdentifiers,solverIndex, & + & outputType,err) !DLLEXPORT(cmfe_Solver_OutputTypeSetNumber1) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Returns the solver equations for a solver identified by an user number. - SUBROUTINE cmfe_Solver_SolverEquationsGetNumber0(problemUserNumber,controlLoopIdentifier,solverIndex,solverEquations,err) + SUBROUTINE cmfe_Solver_SolverEquationsGetNumber0(contextUserNumber,problemUserNumber,controlLoopIdentifier,solverIndex, & + & solverEquations,err) !DLLEXPORT(cmfe_Solver_SolverEquationsGetNumber0) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Returns the solver equations for a solver identified by an user number. - SUBROUTINE cmfe_Solver_SolverEquationsGetNumber1(problemUserNumber,controlLoopIdentifiers,solverIndex,solverEquations,err) + SUBROUTINE cmfe_Solver_SolverEquationsGetNumber1(contextUserNumber,problemUserNumber,controlLoopIdentifiers,solverIndex, & + & solverEquations,err) !DLLEXPORT(cmfe_Solver_SolverEquationsGetNumber1) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Adds equations sets to solver equations identified by an user number. - SUBROUTINE cmfe_SolverEquations_EquationsSetAddNumber0(problemUserNumber,controlLoopIdentifier,solverIndex, & + SUBROUTINE cmfe_SolverEquations_EquationsSetAddNumber0(contextUserNumber,problemUserNumber,controlLoopIdentifier,solverIndex, & & regionUserNumber,equationsSetUserNumber,equationsSetIndex,err) !DLLEXPORT(cmfe_SolverEquations_EquationsSetAddNumber0) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Adds equations sets to solver equations identified by an user number. - SUBROUTINE cmfe_SolverEquations_EquationsSetAddNumber1(problemUserNumber,controlLoopIdentifiers,solverIndex, & + SUBROUTINE cmfe_SolverEquations_EquationsSetAddNumber1(contextUserNumber,problemUserNumber,controlLoopIdentifiers,solverIndex, & & regionUserNumber,equationsSetUserNumber,equationsSetIndex,err) !DLLEXPORT(cmfe_SolverEquations_EquationsSetAddNumber1) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Adds an interface condition to solver equations identified by an user number. - SUBROUTINE cmfe_SolverEquations_InterfaceConditionAddNumber0(problemUserNumber,controlLoopIdentifier,solverIndex, & - & interfaceRegionUserNumber,interfaceUserNumber,interfaceConditionUserNumber,interfaceConditionIndex,err) + SUBROUTINE cmfe_SolverEquations_InterfaceConditionAddNumber0(contextUserNumber,problemUserNumber,controlLoopIdentifier, & + & solverIndex,interfaceRegionUserNumber,interfaceUserNumber,interfaceConditionUserNumber,interfaceConditionIndex,err) !DLLEXPORT(cmfe_SolverEquations_InterfaceConditionAddNumber0) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Adds an interface condition to solver equations identified by an user number. - SUBROUTINE cmfe_SolverEquations_InterfaceConditionAddNumber1(problemUserNumber,controlLoopIdentifiers,solverIndex, & - & interfaceRegionUserNumber,interfaceUserNumber,interfaceConditionUserNumber,interfaceConditionIndex,err) + SUBROUTINE cmfe_SolverEquations_InterfaceConditionAddNumber1(contextUserNumber,problemUserNumber,controlLoopIdentifiers, & + & solverIndex,interfaceRegionUserNumber,interfaceUserNumber,interfaceConditionUserNumber,interfaceConditionIndex,err) !DLLEXPORT(cmfe_SolverEquations_InterfaceConditionAddNumber1) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the sparsity type for solver equations identified by an user number. - SUBROUTINE cmfe_SolverEquations_SparsityTypeSetNumber0(problemUserNumber,controlLoopIdentifier,solverIndex,sparsityType,err) + SUBROUTINE cmfe_SolverEquations_SparsityTypeSetNumber0(contextUserNumber,problemUserNumber,controlLoopIdentifier,solverIndex, & + & sparsityType,err) !DLLEXPORT(cmfe_SolverEquations_SparsityTypeSetNumber0) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the sparsity type for solver equations identified by an user number. - SUBROUTINE cmfe_SolverEquations_SparsityTypeSetNumber1(problemUserNumber,controlLoopIdentifiers,solverIndex,sparsityType,err) + SUBROUTINE cmfe_SolverEquations_SparsityTypeSetNumber1(contextUserNumber,problemUserNumber,controlLoopIdentifiers,solverIndex, & + & sparsityType,err) !DLLEXPORT(cmfe_SolverEquations_SparsityTypeSetNumber1) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Gets the symmetry type for solver equations identified by an user number. - SUBROUTINE cmfe_SolverEquations_SymmetryTypeGetNumber0(problemUserNumber,controlLoopIdentifier,solverIndex,symmetryType,err) + SUBROUTINE cmfe_SolverEquations_SymmetryTypeGetNumber0(contextUserNumber,problemUserNumber,controlLoopIdentifier,solverIndex, & + & symmetryType,err) !DLLEXPORT(cmfe_SolverEquations_SymmetryTypeGetNumber0) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Gets the symmetry type for solver equations identified by an user number. - SUBROUTINE cmfe_SolverEquations_SymmetryTypeGetNumber1(problemUserNumber,controlLoopIdentifiers,solverIndex,symmetryType,err) + SUBROUTINE cmfe_SolverEquations_SymmetryTypeGetNumber1(contextUserNumber,problemUserNumber,controlLoopIdentifiers,solverIndex, & + & symmetryType,err) !DLLEXPORT(cmfe_SolverEquations_SymmetryTypeGetNumber1) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the symmetry type for solver equations identified by an user number. - SUBROUTINE cmfe_SolverEquations_SymmetryTypeSetNumber0(problemUserNumber,controlLoopIdentifier,solverIndex,symmetryType,err) + SUBROUTINE cmfe_SolverEquations_SymmetryTypeSetNumber0(contextUserNumber,problemUserNumber,controlLoopIdentifier,solverIndex, & + & symmetryType,err) !DLLEXPORT(cmfe_SolverEquations_SymmetryTypeSetNumber0) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Sets/changes the symmetry type for solver equations identified by an user number. - SUBROUTINE cmfe_SolverEquations_SymmetryTypeSetNumber1(problemUserNumber,controlLoopIdentifiers,solverIndex,symmetryType,err) + SUBROUTINE cmfe_SolverEquations_SymmetryTypeSetNumber1(contextUserNumber,problemUserNumber,controlLoopIdentifiers,solverIndex, & + & symmetryType,err) !DLLEXPORT(cmfe_SolverEquations_SymmetryTypeSetNumber1) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Finish the creation of the boundary conditions for the solver equations identified by the user numbers - SUBROUTINE cmfe_SolverEquations_BoundaryConditionsCreateFinishNumber0(problemUserNumber,controlLoopIdentifier,solverIndex,err) + SUBROUTINE cmfe_SolverEquations_BoundaryConditionsCreateFinishNumber0(contextUserNumber,problemUserNumber, & + & controlLoopIdentifier,solverIndex,err) !DLLEXPORT(cmfe_SolverEquations_BoundaryConditionsCreateFinishNumber0) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Finish the creation of the boundary conditions for the solver equations identified by the user numbers - SUBROUTINE cmfe_SolverEquations_BoundaryConditionsCreateFinishNumber1(problemUserNumber,controlLoopIdentifiers,solverIndex,err) + SUBROUTINE cmfe_SolverEquations_BoundaryConditionsCreateFinishNumber1(contextUserNumber,problemUserNumber, & + & controlLoopIdentifiers,solverIndex,err) !DLLEXPORT(cmfe_SolverEquations_BoundaryConditionsCreateFinishNumber1) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Start the creation of boundary conditions for solver equations identified by user numbers - SUBROUTINE cmfe_SolverEquations_BoundaryConditionsCreateStartNumber0(problemUserNumber,controlLoopIdentifier,solverIndex,err) + SUBROUTINE cmfe_SolverEquations_BoundaryConditionsCreateStartNumber0(contextUserNumber,problemUserNumber,controlLoopIdentifier, & + & solverIndex,err) !DLLEXPORT(cmfe_SolverEquations_BoundaryConditionsCreateStartNumber0) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Start the creation of boundary conditions for solver equations identified by user numbers - SUBROUTINE cmfe_SolverEquations_BoundaryConditionsCreateStartNumber1(problemUserNumber,controlLoopIdentifiers,solverIndex,err) + SUBROUTINE cmfe_SolverEquations_BoundaryConditionsCreateStartNumber1(contextUserNumber,problemUserNumber, & + & controlLoopIdentifiers,solverIndex,err) !DLLEXPORT(cmfe_SolverEquations_BoundaryConditionsCreateStartNumber1) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Get the boundary conditions for solver equations identified by user numbers - SUBROUTINE cmfe_SolverEquations_BoundaryConditionsGetNumber0(problemUserNumber,controlLoopIdentifier,solverIndex, & - & boundaryConditions,err) + SUBROUTINE cmfe_SolverEquations_BoundaryConditionsGetNumber0(contextUserNumber,problemUserNumber,controlLoopIdentifier, & + & solverIndex,boundaryConditions,err) !DLLEXPORT(cmfe_SolverEquations_BoundaryConditionsGetNumber0) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber !Get the boundary conditions for solver equations identified by user numbers - SUBROUTINE cmfe_SolverEquations_BoundaryConditionsGetNumber1(problemUserNumber,controlLoopIdentifiers,solverIndex, & - & boundaryConditions,err) + SUBROUTINE cmfe_SolverEquations_BoundaryConditionsGetNumber1(contextUserNumber,problemUserNumber,controlLoopIdentifiers, & + & solverIndex,boundaryConditions,err) !DLLEXPORT(cmfe_SolverEquations_BoundaryConditionsGetNumber1) !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber ! Creates a mesh with the given user number using the given FieldML evaluator. - SUBROUTINE cmfe_FieldML_InputMeshCreateStartNumberVS( fieldml, meshArgumentName, meshNumber, regionNumber, err ) + SUBROUTINE cmfe_FieldML_InputMeshCreateStartNumberVS( fieldml, meshArgumentName, meshNumber, contextUserNumber, & + & regionNumber, err ) !DLLEXPORT(cmfe_FieldML_InputMeshCreateStartNumberVS) + !Arguments TYPE(cmfe_FieldMLIOType), INTENT(INOUT) :: fieldml !< The FieldML context containing the evaluator to use. TYPE(VARYING_STRING), INTENT(IN) :: meshArgumentName !< The name of the mesh argument evaluator to create a mesh from. INTEGER(INTG), INTENT(IN) :: meshNumber !< The user number to assign to the new mesh. + INTEGER(INTG), INTENT(IN) :: contextUserNumber ! Creates a mesh with the given user number using the given FieldML evaluator. - SUBROUTINE cmfe_FieldML_InputMeshCreateStartNumberC( fieldml, meshArgumentName, meshNumber, regionNumber, err ) + SUBROUTINE cmfe_FieldML_InputMeshCreateStartNumberC( fieldml, meshArgumentName, meshNumber, contextUserNumber, & + & regionNumber, err ) !DLLEXPORT(cmfe_FieldML_InputMeshCreateStartNumberC) !Arguments TYPE(cmfe_FieldMLIOType), INTENT(INOUT) :: fieldml !< The FieldML context containing the evaluator to use. CHARACTER(LEN=*), INTENT(IN) :: meshArgumentName !< The name of the mesh argument evaluator to create a mesh from. INTEGER(INTG), INTENT(IN) :: meshNumber !< The user number to assign to the new mesh. + INTEGER(INTG), INTENT(IN) :: contextUserNumber ! Create a coordinate system using the given FieldML evaluator. - SUBROUTINE cmfe_FieldML_InputCoordinateSystemCreateStartObjVS( fieldml, evaluatorName, coordinateSystem, userNumber, err ) + SUBROUTINE cmfe_FieldML_InputCoordinateSystemCreateStartObjVS( fieldml, evaluatorName, userNumber, context, coordinateSystem, & + & err ) !DLLEXPORT(cmfe_FieldML_InputCoordinateSystemCreateStartObjVS) !Arguments TYPE(cmfe_FieldMLIOType), INTENT(INOUT) :: fieldml !< The FieldML context containing the evaluator to use. TYPE(VARYING_STRING), INTENT(IN) :: evaluatorName !< The name of the argument evaluator to create the coordinate system from. INTEGER(INTG), INTENT(IN) :: userNumber !< The user number to assign to the new coordinate system. + TYPE(cmfe_ContextType), INTENT(IN) :: context ! Create a coordinate system using the given FieldML evaluator. - SUBROUTINE cmfe_FieldML_InputCoordinateSystemCreateStartNumberVS( fieldml, evaluatorName, userNumber, err ) + SUBROUTINE cmfe_FieldML_InputCoordinateSystemCreateStartNumberVS( fieldml, evaluatorName, userNumber, contextUserNumber, err ) !DLLEXPORT(cmfe_FieldML_InputCoordinateSystemCreateStartNumberVS) !Arguments TYPE(cmfe_FieldMLIOType), INTENT(INOUT) :: fieldml !< The FieldML context containing the evaluator to use. TYPE(VARYING_STRING), INTENT(IN) :: evaluatorName !< The name of the argument evaluator to create the coordinate system from. INTEGER(INTG), INTENT(IN) :: userNumber !< The user number to assign to the new coordinate system. + INTEGER(INTG), INTENT(IN) :: contextUserNumber ! Create a coordinate system using the given FieldML evaluator. - SUBROUTINE cmfe_FieldML_InputCoordinateSystemCreateStartObjC( fieldml, evaluatorName, coordinateSystem, userNumber, err ) + SUBROUTINE cmfe_FieldML_InputCoordinateSystemCreateStartObjC( fieldml, evaluatorName, userNumber, context, & + & coordinateSystem, err ) !DLLEXPORT(cmfe_FieldML_InputCoordinateSystemCreateStartObjC) !Arguments TYPE(cmfe_FieldMLIOType), INTENT(INOUT) :: fieldml !< The FieldML context containing the evaluator to use. CHARACTER(LEN=*), INTENT(IN) :: evaluatorName !< The name of the argument evaluator to create the coordinate system from. INTEGER(INTG), INTENT(IN) :: userNumber !< The user number to assign to the new coordinate system. + TYPE(cmfe_ContextType), INTENT(IN) :: context ! Create a coordinate system using the given FieldML evaluator. - SUBROUTINE cmfe_FieldML_InputCoordinateSystemCreateStartNumberC( fieldml, evaluatorName, userNumber, err ) + SUBROUTINE cmfe_FieldML_InputCoordinateSystemCreateStartNumberC( fieldml, evaluatorName, userNumber, contextUserNumber, err ) !DLLEXPORT(cmfe_FieldML_InputCoordinateSystemCreateStartNumberC) !Arguments TYPE(cmfe_FieldMLIOType), INTENT(INOUT) :: fieldml !< The FieldML context containing the evaluator to use. CHARACTER(LEN=*), INTENT(IN) :: evaluatorName !< The name of the argument evaluator to create the coordinate system from. INTEGER(INTG), INTENT(IN) :: userNumber !< The user number to assign to the new coordinate system. + INTEGER(INTG), INTENT(IN) :: contextUserNumber !< The user number of the context for the cordinate systems INTEGER(INTG), INTENT(OUT) :: err !< The error code. !Locals + TYPE(ContextType), POINTER :: context TYPE(COORDINATE_SYSTEM_TYPE), POINTER :: coordinateSystem + TYPE(CoordinateSystemsType), POINTER :: coordinateSystems ENTERS("cmfe_FieldML_InputCoordinateSystemCreateStartNumberC",err,error,*999) #ifdef WITH_FIELDML + NULLIFY(context) + NULLIFY(coordinateSystems) NULLIFY(coordinateSystem) - CALL FieldmlInput_CoordinateSystemCreateStart( fieldml%fieldmlInfo, var_str(evaluatorName), coordinateSystem, & - & userNumber, err, error, *999 ) + CALL Context_Get(contexts,contextUserNumber,context,err,error,*999) + CALL Context_CoordinateSystemsGet(context,coordinateSystems,err,error,*999) + CALL FieldmlInput_CoordinateSystemCreateStart( fieldml%fieldmlInfo, var_str(evaluatorName), coordinateSystems, & + & coordinateSystem, userNumber, err, error, *999 ) #else CALL FlagError("Must compile with WITH_FIELDML ON to use FieldML functionality.",err,error,*999) @@ -58419,23 +65629,30 @@ END SUBROUTINE cmfe_FieldML_InputCoordinateSystemCreateStartNumberC ! !> Create a basis using the given FieldML evaluator. - SUBROUTINE cmfe_FieldML_InputBasisCreateStartNumberVS( fieldml, evaluatorName, userNumber, err ) + SUBROUTINE cmfe_FieldML_InputBasisCreateStartNumberVS( fieldml, evaluatorName, userNumber, contextUserNumber, err ) !DLLEXPORT(cmfe_FieldML_InputBasisCreateStartNumberVS) !Arguments TYPE(cmfe_FieldMLIOType), INTENT(INOUT) :: fieldml !< The FieldML context containing the evaluator to use. TYPE(VARYING_STRING), INTENT(IN) :: evaluatorName !< The name of the argument evaluator to create the basis from. INTEGER(INTG), INTENT(IN) :: userNumber !< The user number to assign to the new basis. + INTEGER(INTG), INTENT(IN) :: contextUserNumber !< The user number of the context to create the basis in. INTEGER(INTG), INTENT(OUT) :: err !< The error code. - !Locals TYPE(BASIS_TYPE), POINTER :: basis + TYPE(BasisFunctionsType), POINTER :: basisFunctions + TYPE(ContextType), POINTER :: context ENTERS("cmfe_FieldML_InputBasisCreateStartNumberVS",err,error,*999) #ifdef WITH_FIELDML + NULLIFY(context) + NULLIFY(basisFunctions) NULLIFY( basis ) - CALL FIELDML_INPUT_BASIS_CREATE_START( fieldml%fieldmlInfo, evaluatorName, userNumber, basis, err, error, *999 ) + CALL Context_Get(contexts,contextUserNumber,context,err,error,*999) + CALL Context_BasisFunctionsGet(context,basisFunctions,err,error,*999) + CALL FIELDML_INPUT_BASIS_CREATE_START( fieldml%fieldmlInfo, evaluatorName, userNumber, basisFunctions, & + & basis, err, error, *999 ) #else CALL FlagError("Must compile with WITH_FIELDML ON to use FieldML functionality.",err,error,*999) @@ -58454,20 +65671,26 @@ END SUBROUTINE cmfe_FieldML_InputBasisCreateStartNumberVS ! !> Create a basis using the given FieldML evaluator. - SUBROUTINE cmfe_FieldML_InputBasisCreateStartObjVS( fieldml, evaluatorName, userNumber, basis, err ) + SUBROUTINE cmfe_FieldML_InputBasisCreateStartObjVS( fieldml, evaluatorName, userNumber, context, basis, err ) !DLLEXPORT(cmfe_FieldML_InputBasisCreateStartObjVS) !Arguments TYPE(cmfe_FieldMLIOType), INTENT(INOUT) :: fieldml !< The FieldML context containing the evaluator to use. TYPE(VARYING_STRING), INTENT(IN) :: evaluatorName !< The name of the argument evaluator to create the basis from. INTEGER(INTG), INTENT(IN) :: userNumber !< The user number to assign to the new basis. + TYPE(cmfe_ContextType), INTENT(IN) :: context !< The context to create the basis function on. TYPE(cmfe_BasisType), INTENT(INOUT) :: basis ! Create a basis using the given FieldML evaluator. - SUBROUTINE cmfe_FieldML_InputBasisCreateStartNumberC( fieldml, evaluatorName, userNumber, err ) + SUBROUTINE cmfe_FieldML_InputBasisCreateStartNumberC( fieldml, evaluatorName, userNumber, contextUserNumber,err ) !DLLEXPORT(cmfe_FieldML_InputBasisCreateStartNumberC) !Arguments TYPE(cmfe_FieldMLIOType), INTENT(INOUT) :: fieldml !< The FieldML context containing the evaluator to use. CHARACTER(LEN=*), INTENT(IN) :: evaluatorName !< The name of the argument evaluator to create the basis from. INTEGER(INTG), INTENT(IN) :: userNumber !< The user number to assign to the new basis. + INTEGER(INTG), INTENT(IN) :: contextUserNumber ! Create a basis using the given FieldML evaluator. - SUBROUTINE cmfe_FieldML_InputBasisCreateStartObjC( fieldml, evaluatorName, userNumber, basis, err ) + SUBROUTINE cmfe_FieldML_InputBasisCreateStartObjC( fieldml, evaluatorName, userNumber, context, basis, err ) !DLLEXPORT(cmfe_FieldML_InputBasisCreateStartObjC) !Arguments TYPE(cmfe_FieldMLIOType), INTENT(INOUT) :: fieldml !< The FieldML context containing the evaluator to use. CHARACTER(LEN=*), INTENT(IN) :: evaluatorName !< The name of the argument evaluator to create the basis from. INTEGER(INTG), INTENT(IN) :: userNumber !< The user number to assign to the new basis. + TYPE(cmfe_ContextType), INTENT(IN) :: context !< The context to create the basis for. TYPE(cmfe_BasisType), INTENT(INOUT) :: basis ! Creates a region's nodes using the given FieldML evaluator. - SUBROUTINE cmfe_FieldML_InputNodesCreateStartNumberVS( fieldml, nodesArgumentName, regionNumber, nodes, err ) + SUBROUTINE cmfe_FieldML_InputNodesCreateStartNumberVS( fieldml, nodesArgumentName, contextUserNumber, regionNumber, nodes, err ) !DLLEXPORT(cmfe_FieldML_InputNodesCreateStartNumberVS) + !Arguments TYPE(cmfe_FieldMLIOType), INTENT(INOUT) :: fieldml !< The FieldML context containing the evaluator to use. TYPE(VARYING_STRING), INTENT(IN) :: nodesArgumentName !< The name of the argument evaluator to create the nodes from. + INTEGER(INTG), INTENT(IN) :: contextUserNumber ! Creates a region's nodes using the given FieldML evaluator. - SUBROUTINE cmfe_FieldML_InputNodesCreateStartNumberC( fieldml, nodesArgumentName, regionNumber, nodes, err ) + SUBROUTINE cmfe_FieldML_InputNodesCreateStartNumberC( fieldml, nodesArgumentName, contextUserNumber, regionNumber, nodes, err ) !DLLEXPORT(cmfe_FieldML_InputNodesCreateStartNumberC) + !Arguments TYPE(cmfe_FieldMLIOType), INTENT(INOUT) :: fieldml !< The FieldML context containing the evaluator to use. CHARACTER(LEN=*), INTENT(IN) :: nodesArgumentName !< The name of the argument evaluator to create the nodes from. + INTEGER(INTG), INTENT(IN) :: contextUserNumber ! Use the given FieldML evaluator as a template to create a component on the mesh identified by the given user number. - SUBROUTINE cmfe_FieldML_InputCreateMeshComponentNumberVS( fieldml, regionNumber, meshNumber, componentNumber, evaluatorName, & - & err ) + SUBROUTINE cmfe_FieldML_InputCreateMeshComponentNumberVS( fieldml, contextUserNumber, regionNumber, meshNumber, & + & componentNumber, evaluatorName, err ) !DLLEXPORT(cmfe_FieldML_InputCreateMeshComponentNumberVS) !Arguments TYPE(cmfe_FieldMLIOType), INTENT(INOUT) :: fieldml !< The FieldML context containing the evaluator to use. + INTEGER(INTG), INTENT(IN) :: contextUserNumber ! Use the given FieldML evaluator as a template to create a component on the mesh identified by the given user number. - SUBROUTINE cmfe_FieldML_InputCreateMeshComponentNumberC( fieldml, regionNumber, meshNumber, componentNumber, evaluatorName, & - & err ) + SUBROUTINE cmfe_FieldML_InputCreateMeshComponentNumberC( fieldml, contextUserNumber, regionNumber, meshNumber, & + & componentNumber, evaluatorName, err ) !DLLEXPORT(cmfe_FieldML_InputCreateMeshComponentNumberC) !Arguments TYPE(cmfe_FieldMLIOType), INTENT(INOUT) :: fieldml !< The FieldML context containing the evaluator to use. + INTEGER(INTG), INTENT(IN) :: contextUserNumber ! Create a field with the given user number using the given FieldML evaluator. - SUBROUTINE cmfe_FieldML_InputFieldCreateStartNumberVS( fieldml, regionNumber, meshNumber, decompositionNumber, fieldNumber, & - & variableType, evaluatorName, err ) + SUBROUTINE cmfe_FieldML_InputFieldCreateStartNumberVS( fieldml, contextUserNumber, regionNumber, meshNumber, & + & decompositionNumber, fieldNumber,variableType, evaluatorName, err ) !DLLEXPORT(cmfe_FieldML_InputFieldCreateStartNumberVS) !Arguments TYPE(cmfe_FieldMLIOType), INTENT(INOUT) :: fieldml !< The FieldML context containing the evaluator to use. + INTEGER(INTG), INTENT(IN) :: contextUserNumber ! Create a field with the given user number using the given FieldML evaluator. - SUBROUTINE cmfe_FieldML_InputFieldCreateStartNumberC( fieldml, regionNumber, meshNumber, decompositionNumber, fieldNumber, & - & variableType, evaluatorName, err ) + SUBROUTINE cmfe_FieldML_InputFieldCreateStartNumberC( fieldml, contextUserNumber, regionNumber, meshNumber, decompositionNumber, & + & fieldNumber,variableType, evaluatorName, err ) !DLLEXPORT(cmfe_FieldML_InputFieldCreateStartNumberC) !Arguments TYPE(cmfe_FieldMLIOType), INTENT(INOUT) :: fieldml !< The FieldML context containing the evaluator to use. + INTEGER(INTG), INTENT(IN) :: contextUserNumber ! Update the DOF parameters of field with the given user number, using the given FieldML evaluator. - SUBROUTINE cmfe_FieldML_InputFieldParametersUpdateNumberVS( fieldml, regionNumber, fieldNumber, & + SUBROUTINE cmfe_FieldML_InputFieldParametersUpdateNumberVS( fieldml, contextUserNumber, regionNumber, fieldNumber, & & evaluatorName, variableType, setType, err ) !DLLEXPORT(cmfe_FieldML_InputFieldParametersUpdateNumberVS) + !Arguments TYPE(cmfe_FieldMLIOType), INTENT(INOUT) :: fieldml !< The FieldML context containing the evaluator to use. + INTEGER(INTG), INTENT(IN) :: contextUserNumber ! Update the DOF parameters of field with the given user number, using the given FieldML evaluator. - SUBROUTINE cmfe_FieldML_InputFieldParametersUpdateNumberC( fieldml, regionNumber, fieldNumber, & + SUBROUTINE cmfe_FieldML_InputFieldParametersUpdateNumberC( fieldml, contextUserNumber, regionNumber, fieldNumber, & & evaluatorName, variableType, setType, err ) !DLLEXPORT(cmfe_FieldML_InputFieldParametersUpdateNumberC) !Arguments TYPE(cmfe_FieldMLIOType), INTENT(INOUT) :: fieldml !< The FieldML context containing the evaluator to use. + INTEGER(INTG), INTENT(IN) :: contextUserNumber ! Add the field with the given user number to the given FieldML context. The FieldML type will be inferred. - SUBROUTINE cmfe_FieldML_OutputAddFieldNoTypeNumberVS( fieldml, baseName, dofFormat, regionNumber, fieldNumber, & - & variableType, setType, err ) + SUBROUTINE cmfe_FieldML_OutputAddFieldNoTypeNumberVS( fieldml, baseName, dofFormat, contextUserNumber, regionNumber, & + & fieldNumber,variableType, setType, err ) !DLLEXPORT(cmfe_FieldML_OutputAddFieldNoTypeNumberVS) !Argument variables TYPE(cmfe_FieldMLIOType), INTENT(IN) :: fieldml !< The FieldML context containing the evaluator to use. TYPE(VARYING_STRING), INTENT(IN) :: baseName !< The prefix to use when naming automatically created FieldML objects in the context. TYPE(VARYING_STRING), INTENT(IN) :: dofFormat ! Add the given field to the given FieldML context, using the given FieldML type. - SUBROUTINE cmfe_FieldML_OutputAddFieldWithTypeNumberVS( fieldml, baseName, dofFormat, regionNumber, fieldNumber, & - & variableType, setType, typeHandle, err ) + SUBROUTINE cmfe_FieldML_OutputAddFieldWithTypeNumberVS( fieldml, baseName, dofFormat, contextUserNumber, regionNumber, & + & fieldNumber,variableType, setType, typeHandle, err ) !DLLEXPORT(cmfe_FieldML_OutputAddFieldWithTypeNumberVS) !Argument variables TYPE(cmfe_FieldMLIOType), INTENT(IN) :: fieldml !< The FieldML context containing the evaluator to use. TYPE(VARYING_STRING), INTENT(IN) :: baseName !< The prefix to use when naming automatically created FieldML objects in the context. TYPE(VARYING_STRING), INTENT(IN) :: dofFormat ! Add the field with the given user number to the given FieldML context. The FieldML type will be inferred. - SUBROUTINE cmfe_FieldML_OutputAddFieldNoTypeNumberC( fieldml, baseName, dofFormat, regionNumber, fieldNumber, & - & variableType, setType, err ) + SUBROUTINE cmfe_FieldML_OutputAddFieldNoTypeNumberC( fieldml, baseName, dofFormat, contextUserNumber, regionNumber, & + & fieldNumber,variableType, setType, err ) !DLLEXPORT(cmfe_FieldML_OutputAddFieldNoTypeNumberC) !Argument variables TYPE(cmfe_FieldMLIOType), INTENT(IN) :: fieldml !< The FieldML context containing the evaluator to use. CHARACTER(KIND=C_CHAR,LEN=*), INTENT(IN) :: baseName !< The prefix to use when naming automatically created FieldML objects in the context. CHARACTER(KIND=C_CHAR,LEN=*), INTENT(IN) :: dofFormat ! Add the given field to the given FieldML context, using the given FieldML type. - SUBROUTINE cmfe_FieldML_OutputAddFieldWithTypeNumberC( fieldml, baseName, dofFormat, regionNumber, fieldNumber, & - & variableType, setType, typeHandle, err ) + SUBROUTINE cmfe_FieldML_OutputAddFieldWithTypeNumberC( fieldml, baseName, dofFormat, contextUserNumber, regionNumber, & + & fieldNumber, variableType, setType, typeHandle, err ) !DLLEXPORT(cmfe_FieldML_OutputAddFieldWithTypeNumberC) !Argument variables TYPE(cmfe_FieldMLIOType), INTENT(IN) :: fieldml !< The FieldML context containing the evaluator to use. CHARACTER(KIND=C_CHAR,LEN=*), INTENT(IN) :: baseName !< The prefix to use when naming automatically created FieldML objects in the context. CHARACTER(KIND=C_CHAR,LEN=*), INTENT(IN) :: dofFormat ! Initialise the given FieldML context using the mesh with the given user number. - SUBROUTINE cmfe_FieldML_OutputCreateNumberVS( regionNumber, meshNumber, location, baseName, connectivityFormat, fieldml, err ) + SUBROUTINE cmfe_FieldML_OutputCreateNumberVS( contextUserNumber, regionNumber, meshNumber, location, baseName, & + & connectivityFormat, fieldml, err ) !DLLEXPORT(cmfe_FieldML_OutputCreateNumberVS) + !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber ! Initialise the given FieldML context using the mesh with the given user number. - SUBROUTINE cmfe_FieldML_OutputCreateNumberC( regionNumber, meshNumber, location, baseName, connectivityFormat, fieldml, err ) + SUBROUTINE cmfe_FieldML_OutputCreateNumberC( contextUserNumber, regionNumber, meshNumber, location, baseName, & + & connectivityFormat, fieldml, err ) !DLLEXPORT(cmfe_FieldML_OutputCreateNumberC) + !Argument variables + INTEGER(INTG), INTENT(IN) :: contextUserNumber ! Add the field with the given user number to the current FieldML context, only including the given components. - SUBROUTINE cmfe_FieldML_OutputAddFieldComponentsNumberVS( fieldml, typeHandle, baseName, dofFormat, regionNumber, & - & fieldNumber, fieldComponentNumbers, variableType, setType, err ) + SUBROUTINE cmfe_FieldML_OutputAddFieldComponentsNumberVS( fieldml, typeHandle, baseName, dofFormat, contextUserNumber, & + & regionNumber, fieldNumber, fieldComponentNumbers, variableType, setType, err ) !DLLEXPORT(cmfe_FieldML_OutputAddFieldComponentsNumberVS) !Argument variables TYPE(cmfe_FieldMLIOType), INTENT(IN) :: fieldml !< The FieldML context containing the evaluator to use. INTEGER(INTG), INTENT(IN) :: typeHandle !< The FieldML type to assign to the new FieldML field. TYPE(VARYING_STRING), INTENT(IN) :: baseName !< The prefix to use when naming automatically created FieldML objects in the context. TYPE(VARYING_STRING), INTENT(IN) :: dofFormat ! Add the field with the given user number to the current FieldML context, only including the given components. - SUBROUTINE cmfe_FieldML_OutputAddFieldComponentsNumberC( fieldml, typeHandle, baseName, dofFormat, regionNumber, & - & fieldNumber, fieldComponentNumbers, variableType, setType, err ) + SUBROUTINE cmfe_FieldML_OutputAddFieldComponentsNumberC( fieldml, typeHandle, baseName, dofFormat, contextUserNumber, & + & regionNumber,fieldNumber, fieldComponentNumbers, variableType, setType, err ) !DLLEXPORT(cmfe_FieldML_OutputAddFieldComponentsNumberC) !Argument variables TYPE(cmfe_FieldMLIOType), INTENT(IN) :: fieldml !< The FieldML context containing the evaluator to use. INTEGER(INTG), INTENT(IN) :: typeHandle !< The FieldML type to assign to the new FieldML field. CHARACTER(KIND=C_CHAR,LEN=*), INTENT(IN) :: baseName !< The prefix to use when naming automatically created FieldML objects in the context. CHARACTER(KIND=C_CHAR,LEN=*), INTENT(IN) :: dofFormat !Returns a pointer to the context for a problem. + SUBROUTINE Problem_ContextGet(problem,context,err,error,*) + + !Argument variables + TYPE(PROBLEM_TYPE), POINTER :: problem !problem%problems%context + IF(.NOT.ASSOCIATED(context)) THEN + localError="The context is not associated for the problems for problem number "// & + & TRIM(NumberToVString(problem%USER_NUMBER,"*",err,error))//"." + CALL FlagError(localError,err,error,*999) + ENDIF + + EXITS("Problem_ContextGet") + RETURN +999 NULLIFY(context) +998 ERRORSEXITS("Problem_ContextGet",err,error) + RETURN 1 + + END SUBROUTINE Problem_ContextGet + + ! + !================================================================================================================================ + ! + !>Returns a pointer to the control loop for a problem. \see OpenCMISS::Iron::cmfe_Problem_ControlLoopGet SUBROUTINE Problem_ControlLoopGet0(problem,controlLoopIdentifier,controlLoop,err,error,*) @@ -249,18 +294,18 @@ SUBROUTINE Problem_ControlLoopGet1(problem,controlLoopIdentifiers,controlLoop,er TYPE(VARYING_STRING), INTENT(OUT) :: error !problem%CONTROL_LOOP IF(.NOT.ASSOCIATED(controlLoopRoot)) THEN @@ -294,7 +339,8 @@ SUBROUTINE Problem_ControlLoopRootGet(problem,controlLoopRoot,err,error,*) EXITS("Problem_ControlLoopRootGet") RETURN -999 ERRORSEXITS("Problem_ControlLoopRootGet",err,error) +999 NULLIFY(controlLoopRoot) +998 ERRORSEXITS("Problem_ControlLoopRootGet",err,error) RETURN 1 END SUBROUTINE Problem_ControlLoopRootGet @@ -304,9 +350,10 @@ END SUBROUTINE Problem_ControlLoopRootGet ! !>Finds and returns a pointer to the problem with the given user number. - SUBROUTINE Problem_Get(userNumber,problem,err,error,*) + SUBROUTINE Problem_Get(problems,userNumber,problem,err,error,*) !Argument variables + TYPE(ProblemsType), POINTER :: problems !Returns a pointer to the problems for a problem. + SUBROUTINE Problem_ProblemsGet(problem,problems,err,error,*) + + !Argument variables + TYPE(PROBLEM_TYPE), POINTER :: problem !problem%problems + IF(.NOT.ASSOCIATED(problems)) THEN + localError="The problem problems is not associated for problem number "// & + & TRIM(NumberToVString(problem%USER_NUMBER,"*",err,error))//"." + CALL FlagError(localError,err,error,*999) + ENDIF + + EXITS("Problem_ProblemsGet") + RETURN +999 NULLIFY(problems) +998 ERRORSEXITS("Problem_ProblemsGet",err,error) + RETURN 1 + + END SUBROUTINE Problem_ProblemsGet + + ! + !================================================================================================================================ + ! + !>Returns a pointer to the solver for a problem control loop. \see OpenCMISS::Iron::cmfe_Problem_SolverGet SUBROUTINE Problem_SolverGet0(problem,controlLoopIdentifier,solverIndex,solver,err,error,*) @@ -376,8 +458,8 @@ SUBROUTINE Problem_SolverGet1(problem,controlLoopIdentifiers,solverIndex,solver, ENTERS("Problem_SolverGet1",err,error,*998) + IF(ASSOCIATED(solver)) CALL FlagError("Solver is already associated.",err,error,*998) IF(.NOT.ASSOCIATED(problem)) CALL FlagError("Problem is not associated.",err,error,*999) - IF(ASSOCIATED(solver)) CALL FlagError("Solver is already associated.",err,error,*999) NULLIFY(controlLoopRoot) NULLIFY(controlLoop) @@ -391,7 +473,7 @@ SUBROUTINE Problem_SolverGet1(problem,controlLoopIdentifiers,solverIndex,solver, EXITS("Problem_SolverGet1") RETURN -999 NULLIFY(SOLVER) +999 NULLIFY(solver) 998 ERRORSEXITS("Problem_SolverGet1",err,error) RETURN 1 @@ -444,10 +526,10 @@ SUBROUTINE Problem_SolverEquationsGet1(problem,controlLoopIdentifiers,solverInde TYPE(SOLVERS_TYPE), POINTER :: solvers TYPE(VARYING_STRING) :: localError - ENTERS("Problem_SolverEquationsGet1",err,error,*999) + ENTERS("Problem_SolverEquationsGet1",err,error,*998) + IF(ASSOCIATED(solverEquations)) CALL FlagError("Solver equations is already associated.",err,error,*998) IF(.NOT.ASSOCIATED(problem)) CALL FlagError("Problem is not associated.",err,error,*999) - IF(ASSOCIATED(solverEquations)) CALL FlagError("Solver equations is already associated.",err,error,*999) NULLIFY(controlLoopRoot) NULLIFY(controlLoop) @@ -462,7 +544,8 @@ SUBROUTINE Problem_SolverEquationsGet1(problem,controlLoopIdentifiers,solverInde EXITS("Problem_SolverEquationsGet1") RETURN -999 ERRORSEXITS("Problem_SolverEquationsGet1",err,error) +999 NULLIFY(solverEquations) +998 ERRORSEXITS("Problem_SolverEquationsGet1",err,error) RETURN 1 END SUBROUTINE Problem_SolverEquationsGet1 @@ -472,9 +555,10 @@ END SUBROUTINE Problem_SolverEquationsGet1 ! !>Finds and returns a pointer to the problem identified by a user number. If no problem with that user number exists problem is left nullified. - SUBROUTINE Problem_UserNumberFind(userNumber,problem,err,error,*) + SUBROUTINE Problem_UserNumberFind(problems,userNumber,problem,err,error,*) !Argument variables + TYPE(ProblemsType), POINTER :: problems !problems%problems(problemIdx)%ptr @@ -505,7 +589,8 @@ SUBROUTINE Problem_UserNumberFind(userNumber,problem,err,error,*) EXITS("Problem_UserNumberFind") RETURN -999 ERRORSEXITS("Problem_UserNumberFind",err,error) +999 NULLIFY(problem) +998 ERRORSEXITS("Problem_UserNumberFind",err,error) RETURN 1 END SUBROUTINE Problem_UserNumberFind @@ -513,5 +598,35 @@ END SUBROUTINE Problem_UserNumberFind ! !================================================================================================================================ ! + + !>Returns a pointer to the context for a problems. + SUBROUTINE Problems_ContextGet(problems,context,err,error,*) + + !Argument variables + TYPE(ProblemsType), POINTER :: problems !problems%context + IF(.NOT.ASSOCIATED(context)) CALL FlagError("The context is not associated for the problems.",err,error,*999) + + EXITS("Problems_ContextGet") + RETURN +999 NULLIFY(context) +998 ERRORSEXITS("Problems_ContextGet",err,error) + RETURN 1 + + END SUBROUTINE Problems_ContextGet + + ! + !================================================================================================================================ + ! END MODULE ProblemAccessRoutines diff --git a/src/problem_routines.f90 b/src/problem_routines.f90 index 5121a2ea..c3c95e78 100644 --- a/src/problem_routines.f90 +++ b/src/problem_routines.f90 @@ -47,6 +47,8 @@ MODULE PROBLEM_ROUTINES USE BaseRoutines USE BIOELECTRIC_ROUTINES USE CLASSICAL_FIELD_ROUTINES + USE ComputationAccessRoutines + USE ContextAccessRoutines USE CONTROL_LOOP_ROUTINES USE ControlLoopAccessRoutines USE DistributedMatrixVector @@ -90,11 +92,11 @@ MODULE PROBLEM_ROUTINES !Interfaces - PUBLIC PROBLEMS_INITIALISE,PROBLEMS_FINALISE + PUBLIC Problems_Initialise,Problems_Finalise PUBLIC PROBLEM_CELLML_EQUATIONS_CREATE_START,PROBLEM_CELLML_EQUATIONS_CREATE_FINISH - PUBLIC PROBLEM_CREATE_START,PROBLEM_CREATE_FINISH,PROBLEM_DESTROY + PUBLIC PROBLEM_CREATE_START,PROBLEM_CREATE_FINISH,Problem_Destroy PUBLIC Problem_SpecificationGet,Problem_SpecificationSizeGet @@ -121,6 +123,8 @@ MODULE PROBLEM_ROUTINES PUBLIC PROBLEM_SOLVERS_CREATE_START,PROBLEM_SOLVERS_CREATE_FINISH PUBLIC PROBLEM_SOLVERS_DESTROY + + PUBLIC Problem_WorkGroupSet CONTAINS @@ -659,43 +663,46 @@ END SUBROUTINE PROBLEM_CONTROL_LOOP_SOLVE ! !>Finishes the process of creating a problem. \see OpenCMISS::cmfe_Problem_CreateFinish - SUBROUTINE PROBLEM_CREATE_FINISH(PROBLEM,err,error,*) + SUBROUTINE PROBLEM_CREATE_FINISH(problem,err,error,*) !Argument variables - TYPE(PROBLEM_TYPE), POINTER :: PROBLEM !PROBLEMS + NULLIFY(context) + CALL Problems_ContextGet(problems,context,err,error,*999) + NULLIFY(computationEnvironment) + CALL Context_ComputationEnvironmentGet(context,computationEnvironment,err,error,*999) + NULLIFY(worldWorkGroup) + CALL ComputationEnvironment_WorldWorkGroupGet(computationEnvironment,worldWorkGroup,err,error,*999) + NEW_PROBLEM%workGroup=>worldWorkGroup !Set problem specification CALL Problem_SpecificationSet(NEW_PROBLEM,PROBLEM_SPECIFICATION,err,error,*999) !For compatibility with old code, set class, type and subtype @@ -763,15 +781,15 @@ SUBROUTINE PROBLEM_CREATE_START(USER_NUMBER,PROBLEM_SPECIFICATION,PROBLEM,err,er !Finalise the problem setup information CALL PROBLEM_SETUP_FINALISE(PROBLEM_SETUP_INFO,err,error,*999) !Add new problem into list of problems - ALLOCATE(NEW_PROBLEMS(PROBLEMS%NUMBER_OF_PROBLEMS+1),STAT=ERR) + ALLOCATE(NEW_PROBLEMS(PROBLEMS%numberOfProblems+1),STAT=ERR) IF(ERR/=0) CALL FlagError("Could not allocate new problems.",err,error,*999) - DO problem_idx=1,PROBLEMS%NUMBER_OF_PROBLEMS + DO problem_idx=1,PROBLEMS%numberOfProblems NEW_PROBLEMS(problem_idx)%PTR=>PROBLEMS%PROBLEMS(problem_idx)%PTR ENDDO !problem_idx - NEW_PROBLEMS(PROBLEMS%NUMBER_OF_PROBLEMS+1)%PTR=>NEW_PROBLEM + NEW_PROBLEMS(PROBLEMS%numberOfProblems+1)%PTR=>NEW_PROBLEM IF(ASSOCIATED(PROBLEMS%PROBLEMS)) DEALLOCATE(PROBLEMS%PROBLEMS) PROBLEMS%PROBLEMS=>NEW_PROBLEMS - PROBLEMS%NUMBER_OF_PROBLEMS=PROBLEMS%NUMBER_OF_PROBLEMS+1 + PROBLEMS%numberOfProblems=PROBLEMS%numberOfProblems+1 PROBLEM=>NEW_PROBLEM ENDIF ENDIF @@ -787,7 +805,7 @@ END SUBROUTINE PROBLEM_CREATE_START ! !>Destroys a problem. \see OpenCMISS::cmfe_Problem_Destroy - SUBROUTINE PROBLEM_DESTROY(PROBLEM,err,error,*) + SUBROUTINE Problem_Destroy(PROBLEM,err,error,*) !Argument variables TYPE(PROBLEM_TYPE), POINTER :: PROBLEM !1) THEN - ALLOCATE(NEW_PROBLEMS(PROBLEMS%NUMBER_OF_PROBLEMS-1),STAT=ERR) + IF(PROBLEMS%numberOfProblems>1) THEN + ALLOCATE(NEW_PROBLEMS(PROBLEMS%numberOfProblems-1),STAT=ERR) IF(ERR/=0) CALL FlagError("Could not allocate new problems.",err,error,*999) - DO problem_idx=1,PROBLEMS%NUMBER_OF_PROBLEMS + DO problem_idx=1,PROBLEMS%numberOfProblems IF(problem_idxPROBLEMS%PROBLEMS(problem_idx)%PTR ELSE IF(problem_idx>problem_position) THEN @@ -823,10 +844,10 @@ SUBROUTINE PROBLEM_DESTROY(PROBLEM,err,error,*) ENDDO !problem_idx DEALLOCATE(PROBLEMS%PROBLEMS) PROBLEMS%PROBLEMS=>NEW_PROBLEMS - PROBLEMS%NUMBER_OF_PROBLEMS=PROBLEMS%NUMBER_OF_PROBLEMS-1 + PROBLEMS%numberOfProblems=PROBLEMS%numberOfProblems-1 ELSE DEALLOCATE(PROBLEMS%PROBLEMS) - PROBLEMS%NUMBER_OF_PROBLEMS=0 + PROBLEMS%numberOfProblems=0 ENDIF ELSE @@ -836,12 +857,13 @@ SUBROUTINE PROBLEM_DESTROY(PROBLEM,err,error,*) CALL FlagError("Problem is not associated.",err,error,*998) ENDIF - EXITS("PROBLEM_DESTROY") + EXITS("Problem_Destroy") RETURN 999 IF(ASSOCIATED(NEW_PROBLEMS)) DEALLOCATE(NEW_PROBLEMS) -998 ERRORSEXITS("PROBLEM_DESTROY",err,error) - RETURN 1 - END SUBROUTINE PROBLEM_DESTROY +998 ERRORSEXITS("Problem_Destroy",err,error) + RETURN 1 + + END SUBROUTINE Problem_Destroy ! !================================================================================================================================ @@ -938,6 +960,7 @@ SUBROUTINE PROBLEM_INITIALISE(PROBLEM,err,error,*) PROBLEM%GLOBAL_NUMBER=0 PROBLEM%PROBLEM_FINISHED=.FALSE. NULLIFY(PROBLEM%PROBLEMS) + NULLIFY(problem%workGroup) NULLIFY(PROBLEM%CONTROL_LOOP) ELSE CALL FlagError("Problem is not associated.",err,error,*999) @@ -3743,48 +3766,95 @@ END SUBROUTINE Problem_SpecificationSizeGet !================================================================================================================================ ! + !>Sets the work group for a problem. \see OpenCMISS::cmfe_Problem_WorkGroupGet + SUBROUTINE Problem_WorkGroupSet(problem,workGroup,err,error,*) + + !Argument variables + TYPE(PROBLEM_TYPE), POINTER, INTENT(INOUT) :: problem !workGroup + + EXITS("Problem_WorkGroupSet") + RETURN +999 ERRORSEXITS("Problem_WorkGroupSet",err,error) + RETURN 1 + + END SUBROUTINE Problem_WorkGroupSet + + ! + !================================================================================================================================ + ! + !>Finalises all problems and deallocates all memory. - SUBROUTINE PROBLEMS_FINALISE(err,error,*) + SUBROUTINE Problems_Finalise(problems,err,error,*) !Argument variables + TYPE(ProblemsType), POINTER :: problems !0) - CALL PROBLEM_DESTROY(PROBLEMS%PROBLEMS(1)%PTR,err,error,*999) - ENDDO !problem_idx + IF(ASSOCIATED(problems)) THEN + DO WHILE(problems%numberOfProblems>0) + CALL Problem_Destroy(problems%problems(1)%ptr,err,error,*999) + ENDDO !problemIdx + DEALLOCATE(problems) + ENDIF - EXITS("PROBLEMS_FINALISE") + EXITS("Problems_Finalise") RETURN -999 ERRORSEXITS("PROBLEMS_FINALISE",err,error) - RETURN 1 - END SUBROUTINE PROBLEMS_FINALISE +999 ERRORSEXITS("Problems_Finalise",err,error) + RETURN 1 + + END SUBROUTINE Problems_Finalise ! !================================================================================================================================ ! - !>Intialises all problems. - SUBROUTINE PROBLEMS_INITIALISE(err,error,*) + !>Intialises all problems for a context. + SUBROUTINE Problems_Initialise(context,err,error,*) !Argument variables + TYPE(ContextType), POINTER :: context !context + context%problems%numberOfProblems=0 + NULLIFY(context%problems%problems) - EXITS("PROBLEMS_INITIALISE") + EXITS("Problems_Initialise") RETURN -999 ERRORSEXITS("PROBLEMS_INITIALISE",err,error) - RETURN 1 - END SUBROUTINE PROBLEMS_INITIALISE +999 CALL Problems_Finalise(context%problems,dummyErr,dummyError,*998) +998 ERRORSEXITS("Problems_Initialise",err,error) + RETURN 1 + + END SUBROUTINE Problems_Initialise ! !================================================================================================================================ @@ -4234,8 +4304,10 @@ SUBROUTINE Problem_SolverConvergenceTestPetsc(snes,iterationNumber,xnorm,gnorm,f USE BaseRoutines USE CmissPetsc USE CmissPetscTypes + USE Constants USE DistributedMatrixVector USE INPUT_OUTPUT + USE ISO_VARYING_STRING USE KINDS USE PROBLEM_ROUTINES USE SOLVER_ROUTINES @@ -4391,8 +4463,10 @@ SUBROUTINE Problem_SolverDAECellMLRHSPetsc(ts,time,states,rates,ctx,err) USE BaseRoutines USE CmissPetscTypes USE CmissPetsc + USE ISO_VARYING_STRING + USE Kinds USE PROBLEM_ROUTINES - USE TYPES + USE Types IMPLICIT NONE diff --git a/src/profiling_routines.f90 b/src/profiling_routines.f90 index 8523a341..958650d3 100644 --- a/src/profiling_routines.f90 +++ b/src/profiling_routines.f90 @@ -45,11 +45,12 @@ MODULE ProfilingRoutines USE BaseRoutines + USE Constants USE INPUT_OUTPUT + USE ISO_VARYING_STRING USE Kinds USE Strings USE Types - USE ISO_VARYING_STRING #include "macros.h" diff --git a/src/reaction_diffusion_IO_routines.f90 b/src/reaction_diffusion_IO_routines.f90 index eb8a574f..8f6e5174 100755 --- a/src/reaction_diffusion_IO_routines.f90 +++ b/src/reaction_diffusion_IO_routines.f90 @@ -27,7 +27,7 @@ !> Auckland, the University of Oxford and King's College, London. !> All Rights Reserved. !> -!> Contributor(s): +!> Contributor(s): Vijay Rajagopal !> !> Alternatively, the contents of this file may be used under the terms of !> either the GNU General Public License Version 2 or later (the "GPL"), or @@ -47,14 +47,18 @@ MODULE REACTION_DIFFUSION_IO_ROUTINES USE BaseRoutines - USE ComputationEnvironment + USE ComputationRoutines + USE ComputationAccessRoutines + USE ContextAccessRoutines USE EquationsSetConstants USE FIELD_ROUTINES USE FieldAccessRoutines - USE TYPES USE INPUT_OUTPUT - USE KINDS + USE ISO_VARYING_STRING + USE Kinds USE MESH_ROUTINES + USE RegionAccessRoutines + USE Types #ifndef NOMPIMOD USE MPI @@ -88,16 +92,17 @@ SUBROUTINE REACTION_DIFFUSION_IO_WRITE_CMGUI(REGION, EQUATIONS_SET_GLOBAL_NUMBER LOGICAL, INTENT(IN) :: exportExelem ! REGION%equations_sets%equations_sets(EQUATIONS_SET_GLOBAL_NUMBER)%ptr NULLIFY(SOURCE_FIELD) - COMPUTATIONAL_DOMAIN=>REGION%MESHES%MESHES(1) & + COMPUTATION_DOMAIN=>REGION%MESHES%MESHES(1) & & %ptr%DECOMPOSITIONS%DECOMPOSITIONS(1)%ptr%DOMAIN(1)%ptr - myComputationalNodeNumber = ComputationalEnvironment_NodeNumberGet(ERR,ERROR) - NumberOfDimensions = COMPUTATIONAL_DOMAIN%NUMBER_OF_DIMENSIONS - NumberOfNodes = COMPUTATIONAL_DOMAIN%TOPOLOGY%NODES%NUMBER_OF_NODES + NumberOfDimensions = COMPUTATION_DOMAIN%NUMBER_OF_DIMENSIONS + NumberOfNodes = COMPUTATION_DOMAIN%TOPOLOGY%NODES%NUMBER_OF_NODES NodesInMeshComponent = REGION%meshes%meshes(1)%ptr%topology(1)%ptr%nodes%numberOfNodes - NumberOfElements = COMPUTATIONAL_DOMAIN%TOPOLOGY%ELEMENTS%NUMBER_OF_ELEMENTS + NumberOfElements = COMPUTATION_DOMAIN%TOPOLOGY%ELEMENTS%NUMBER_OF_ELEMENTS NumberOfVariableComponents=REGION%equations_sets%equations_sets(EQUATIONS_SET_GLOBAL_NUMBER)%ptr%dependent%dependent_field% & & variables(1)%number_of_components NumberOfOutputFields=2 @@ -143,50 +153,50 @@ SUBROUTINE REACTION_DIFFUSION_IO_WRITE_CMGUI(REGION, EQUATIONS_SET_GLOBAL_NUMBER FILENAME="./output/"//TRIM(NAME)//".exnode" - OPEN(UNIT=myComputationalNodeNumber, FILE=CHAR(FILENAME),STATUS='unknown') + OPEN(UNIT=myWorldComputationNodeNumber, FILE=CHAR(FILENAME),STATUS='unknown') ! WRITING HEADER INFORMATION - WRITE(myComputationalNodeNumber,*) 'Group name: Cell' + WRITE(myWorldComputationNodeNumber,*) 'Group name: Cell' WRITE(INTG_STRING,'(I0)') NumberOfOutputFields - WRITE(myComputationalNodeNumber,*) '#Fields=',TRIM(INTG_STRING) + WRITE(myWorldComputationNodeNumber,*) '#Fields=',TRIM(INTG_STRING) ValueIndex=1 WRITE(INTG_STRING,'(I0)') NumberOfDimensions - WRITE(myComputationalNodeNumber,*) & + WRITE(myWorldComputationNodeNumber,*) & & ' 1) coordinates, coordinate, rectangular cartesian, #Components=',TRIM(INTG_STRING) DO I=1,NumberOfDimensions IF(I==1) THEN WRITE(INTG_STRING,'(I0)') ValueIndex - WRITE(myComputationalNodeNumber,*) ' x. Value index= ',TRIM(INTG_STRING),', #Derivatives= 0' + WRITE(myWorldComputationNodeNumber,*) ' x. Value index= ',TRIM(INTG_STRING),', #Derivatives= 0' ELSE IF(I==2) THEN WRITE(INTG_STRING,'(I0)') ValueIndex - WRITE(myComputationalNodeNumber,*) ' y. Value index= ',TRIM(INTG_STRING),', #Derivatives= 0' + WRITE(myWorldComputationNodeNumber,*) ' y. Value index= ',TRIM(INTG_STRING),', #Derivatives= 0' ELSE WRITE(INTG_STRING,'(I0)') ValueIndex - WRITE(myComputationalNodeNumber,*) ' z. Value index= ',TRIM(INTG_STRING),', #Derivatives= 0' + WRITE(myWorldComputationNodeNumber,*) ' z. Value index= ',TRIM(INTG_STRING),', #Derivatives= 0' END IF ValueIndex=ValueIndex+1 END DO WRITE(INTG_STRING,'(I0)') NumberOfVariableComponents - WRITE(myComputationalNodeNumber,*) ' 2) dependent, field, rectangular cartesian, #Components=', & + WRITE(myWorldComputationNodeNumber,*) ' 2) dependent, field, rectangular cartesian, #Components=', & & TRIM(INTG_STRING) DO I=1,NumberOfVariableComponents WRITE(INTG_STRING,'(I0)') ValueIndex WRITE(INTG_STRING2,'(I0)') I - WRITE(myComputationalNodeNumber,*) ' ',TRIM(INTG_STRING2),'. Value index= ',TRIM(INTG_STRING), & + WRITE(myWorldComputationNodeNumber,*) ' ',TRIM(INTG_STRING2),'. Value index= ',TRIM(INTG_STRING), & & ', #Derivatives= 0' ValueIndex=ValueIndex+1 END DO IF( OUTPUT_SOURCE ) THEN !Watch out that no numbering conflict occurs with Analytic: 4.) WRITE(INTG_STRING,'(I0)') NumberOfSourceComponents - WRITE(myComputationalNodeNumber,*) ' 3) source, field, rectangular cartesian, #Components=', & + WRITE(myWorldComputationNodeNumber,*) ' 3) source, field, rectangular cartesian, #Components=', & & TRIM(INTG_STRING) DO I=1,NumberOfSourceComponents WRITE(INTG_STRING,'(I0)') ValueIndex WRITE(INTG_STRING2,'(I0)') I - WRITE(myComputationalNodeNumber,*) ' ',TRIM(INTG_STRING2),'. Value index= ', & + WRITE(myWorldComputationNodeNumber,*) ' ',TRIM(INTG_STRING2),'. Value index= ', & & TRIM(INTG_STRING),', #Derivatives= 0' ValueIndex=ValueIndex+1 END DO @@ -194,7 +204,7 @@ SUBROUTINE REACTION_DIFFUSION_IO_WRITE_CMGUI(REGION, EQUATIONS_SET_GLOBAL_NUMBER !WRITE OUT NODE VALUES DO I = 1,NumberOfNodes - NODE_GLOBAL_NUMBER = COMPUTATIONAL_DOMAIN%TOPOLOGY%NODES%NODES(I)%GLOBAL_NUMBER + NODE_GLOBAL_NUMBER = COMPUTATION_DOMAIN%TOPOLOGY%NODES%NODES(I)%GLOBAL_NUMBER NodeXValue = REGION%equations_sets%equations_sets(EQUATIONS_SET_GLOBAL_NUMBER)%ptr%geometry%geometric_field%variables(1) & & %parameter_sets%parameter_sets(1)%ptr%parameters%cmiss%dataDP(I) IF(NumberOfDimensions==2 .OR. NumberOfDimensions==3) THEN @@ -208,17 +218,17 @@ SUBROUTINE REACTION_DIFFUSION_IO_WRITE_CMGUI(REGION, EQUATIONS_SET_GLOBAL_NUMBER NodeUValue=REGION%equations_sets%equations_sets(EQUATIONS_SET_GLOBAL_NUMBER)%ptr%dependent%dependent_field% & & variables(1)%parameter_sets%parameter_sets(1)%ptr%parameters%cmiss%dataDP(I) - WRITE(myComputationalNodeNumber,*) ' Node: ',NODE_GLOBAL_NUMBER - WRITE(myComputationalNodeNumber,'(" ", es25.16 )')NodeXValue + WRITE(myWorldComputationNodeNumber,*) ' Node: ',NODE_GLOBAL_NUMBER + WRITE(myWorldComputationNodeNumber,'(" ", es25.16 )')NodeXValue IF(NumberOfDimensions==2 .OR. NumberOfDimensions==3) THEN - WRITE(myComputationalNodeNumber,'(" ", es25.16 )')NodeYValue + WRITE(myWorldComputationNodeNumber,'(" ", es25.16 )')NodeYValue END IF IF(NumberOfDimensions==3) THEN - WRITE(myComputationalNodeNumber,'(" ", es25.16 )')NodeZValue + WRITE(myWorldComputationNodeNumber,'(" ", es25.16 )')NodeZValue END IF - WRITE(myComputationalNodeNumber,'(" ", es25.16 )')NodeUValue + WRITE(myWorldComputationNodeNumber,'(" ", es25.16 )')NodeUValue IF( (EQUATIONS_SET%SPECIFICATION(1)==EQUATIONS_SET_CLASSICAL_FIELD_CLASS) & & .AND.(EQUATIONS_SET%SPECIFICATION(2)==EQUATIONS_SET_REACTION_DIFFUSION_EQUATION_TYPE) & @@ -226,14 +236,14 @@ SUBROUTINE REACTION_DIFFUSION_IO_WRITE_CMGUI(REGION, EQUATIONS_SET_GLOBAL_NUMBER !source field IF( OUTPUT_SOURCE ) THEN !NodeSourceValue = SOURCE_INTERPOLATED_POINT(FIELD_U_VARIABLE_TYPE)%ptr%VALUES(1,1) - !WRITE(myComputationalNodeNumber,'(" ", es25.16 )')NodeSourceValue + !WRITE(myWorldComputationNodeNumber,'(" ", es25.16 )')NodeSourceValue END IF END IF END DO !nodes I - CLOSE(myComputationalNodeNumber) + CLOSE(myWorldComputationNodeNumber) !OUTPUT ELEMENTS IN CURRENT DOMAIN - MaxNodesPerElement=COMPUTATIONAL_DOMAIN%TOPOLOGY%ELEMENTS%ELEMENTS(1)%basis%number_of_element_parameters + MaxNodesPerElement=COMPUTATION_DOMAIN%TOPOLOGY%ELEMENTS%ELEMENTS(1)%basis%number_of_element_parameters BasisType = 1 IF(NumberOfDimensions==2) THEN IF(MaxNodesPerElement==4.OR.MaxNodesPerElement==9.OR.MaxNodesPerElement==16) THEN @@ -249,110 +259,110 @@ SUBROUTINE REACTION_DIFFUSION_IO_WRITE_CMGUI(REGION, EQUATIONS_SET_GLOBAL_NUMBER IF(exportExelem) THEN CALL WRITE_STRING(GENERAL_OUTPUT_TYPE,"Writing Elements...",ERR,ERROR,*999) FILENAME="./output/"//TRIM(NAME)//".exelem" - OPEN(UNIT=myComputationalNodeNumber, FILE=CHAR(FILENAME),STATUS='unknown') - WRITE(myComputationalNodeNumber,*) 'Group name: Cell' + OPEN(UNIT=myWorldComputationNodeNumber, FILE=CHAR(FILENAME),STATUS='unknown') + WRITE(myWorldComputationNodeNumber,*) 'World name: Cell' IF (BasisType==1) THEN !lagrange basis in 1 and 2D WRITE(INTG_STRING,'(I0)') NumberOfDimensions - WRITE(myComputationalNodeNumber,*) 'Shape. Dimension= ',TRIM(INTG_STRING) - WRITE(myComputationalNodeNumber,*) '#Scale factor sets= 1' + WRITE(myWorldComputationNodeNumber,*) 'Shape. Dimension= ',TRIM(INTG_STRING) + WRITE(myWorldComputationNodeNumber,*) '#Scale factor sets= 1' IF(NumberOfDimensions==1) THEN WRITE(INTG_STRING,'(I0)') MaxNodesPerElement - WRITE(myComputationalNodeNumber,*) 'q.Lagrange, #Scale factors=',TRIM(INTG_STRING) + WRITE(myWorldComputationNodeNumber,*) 'q.Lagrange, #Scale factors=',TRIM(INTG_STRING) ELSE IF (NumberOfDimensions==2) THEN IF(MaxNodesPerElement==4) THEN WRITE(INTG_STRING,'(I0)') MaxNodesPerElement - WRITE(myComputationalNodeNumber,*) & + WRITE(myWorldComputationNodeNumber,*) & & 'l.Lagrange*l.Lagrange, #Scale factors=',TRIM(INTG_STRING) !linear lagrange ELSE IF(MaxNodesPerElement==9) THEN WRITE(INTG_STRING,'(I0)') MaxNodesPerElement - WRITE(myComputationalNodeNumber,*) & + WRITE(myWorldComputationNodeNumber,*) & & 'q.Lagrange*q.Lagrange, #Scale factors=',TRIM(INTG_STRING) !quadratic lagrange ELSE IF(MaxNodesPerElement==16) THEN WRITE(INTG_STRING,'(I0)') MaxNodesPerElement - WRITE(myComputationalNodeNumber,*) & + WRITE(myWorldComputationNodeNumber,*) & & 'c.Lagrange*c.Lagrange, #Scale factors=',TRIM(INTG_STRING) !cubic lagrange END IF ELSE !three dimensions IF(MaxNodesPerElement==8) THEN WRITE(INTG_STRING,'(I0)') MaxNodesPerElement - WRITE(myComputationalNodeNumber,*) & + WRITE(myWorldComputationNodeNumber,*) & & 'l.Lagrange*l.Lagrange*l.Lagrange, #Scale factors=',TRIM(INTG_STRING) ELSE IF(MaxNodesPerElement==27) THEN WRITE(INTG_STRING,'(I0)') MaxNodesPerElement - WRITE(myComputationalNodeNumber,*) & + WRITE(myWorldComputationNodeNumber,*) & & 'q.Lagrange*q.Lagrange*q.Lagrange, #Scale factors=',TRIM(INTG_STRING) ELSE IF(MaxNodesPerElement==64) THEN WRITE(INTG_STRING,'(I0)') MaxNodesPerElement - WRITE(myComputationalNodeNumber,*) & + WRITE(myWorldComputationNodeNumber,*) & & 'c.Lagrange*c.Lagrange*c.Lagrange, #Scale factors=',TRIM(INTG_STRING) END IF END IF ELSEIF(BasisType==2) THEN IF(NumberOfDimensions==2) THEN - WRITE(myComputationalNodeNumber,*) 'Shape. Dimension=', & + WRITE(myWorldComputationNodeNumber,*) 'Shape. Dimension=', & & NumberOfDimensions,', simplex(2)*simplex' IF(MaxNodesPerElement==3) THEN - WRITE(myComputationalNodeNumber,*) '#Scale factor sets= 1' + WRITE(myWorldComputationNodeNumber,*) '#Scale factor sets= 1' WRITE(INTG_STRING,'(I0)') MaxNodesPerElement - WRITE(myComputationalNodeNumber,*) & + WRITE(myWorldComputationNodeNumber,*) & & ' l.simplex(2)*l.simplex, #Scale factors= ', TRIM(INTG_STRING) ELSE IF(MaxNodesPerElement==6) THEN - WRITE(myComputationalNodeNumber,*) '#Scale factor sets= 1' + WRITE(myWorldComputationNodeNumber,*) '#Scale factor sets= 1' WRITE(INTG_STRING,'(I0)') MaxNodesPerElement - WRITE(myComputationalNodeNumber,*) & + WRITE(myWorldComputationNodeNumber,*) & & ' l.simplex(2)*l.simplex, #Scale factors= ', TRIM(INTG_STRING) ELSE IF (MaxNodesPerElement== 10 ) THEN - WRITE(myComputationalNodeNumber,*) '#Scale factor sets= 1' + WRITE(myWorldComputationNodeNumber,*) '#Scale factor sets= 1' WRITE(INTG_STRING,'(I0)') MaxNodesPerElement - WRITE(myComputationalNodeNumber,*) & + WRITE(myWorldComputationNodeNumber,*) & & ' q.simplex(2)*q.simplex, #Scale factors= ', TRIM(INTG_STRING) ENDIF ELSE IF(NumberOfDimensions==3) THEN WRITE(INTG_STRING2,'(I0)') NumberOfDimensions - WRITE(myComputationalNodeNumber,*) & + WRITE(myWorldComputationNodeNumber,*) & & 'Shape. Dimension=',TRIM(INTG_STRING2),', simplex(2;3)*simplex*simplex' IF(MaxNodesPerElement==4) THEN - WRITE(myComputationalNodeNumber,*) & + WRITE(myWorldComputationNodeNumber,*) & & '#Scale factor sets= 1' WRITE(INTG_STRING,'(I0)') MaxNodesPerElement - WRITE(myComputationalNodeNumber,*) & + WRITE(myWorldComputationNodeNumber,*) & & ' l.simplex(2;3)*l.simplex*l.simplex, #Scale factors= ', TRIM(INTG_STRING) ELSE IF (MaxNodesPerElement== 10 ) THEN - WRITE(myComputationalNodeNumber,*) '#Scale factor sets= 1' + WRITE(myWorldComputationNodeNumber,*) '#Scale factor sets= 1' WRITE(INTG_STRING,'(I0)') MaxNodesPerElement - WRITE(myComputationalNodeNumber,*) & + WRITE(myWorldComputationNodeNumber,*) & & ' q.simplex(2;3)*q.simplex*q.simplex, #Scale factors= ', TRIM(INTG_STRING) ELSE IF(MaxNodesPerElement==20) THEN - WRITE(myComputationalNodeNumber,*) '#Scale factor sets= 1' + WRITE(myWorldComputationNodeNumber,*) '#Scale factor sets= 1' WRITE(INTG_STRING,'(I0)') MaxNodesPerElement - WRITE(myComputationalNodeNumber,*) & + WRITE(myWorldComputationNodeNumber,*) & & ' q.simplex(2;3)*q.simplex*q.simplex, #Scale factors= ', TRIM(INTG_STRING) ENDIF ELSE - WRITE(myComputationalNodeNumber,*) '#Scale factor sets= 0' + WRITE(myWorldComputationNodeNumber,*) '#Scale factor sets= 0' END IF END IF WRITE(INTG_STRING,'(I0)') MaxNodesPerElement - WRITE(myComputationalNodeNumber,*) '#Nodes= ',TRIM(INTG_STRING) + WRITE(myWorldComputationNodeNumber,*) '#Nodes= ',TRIM(INTG_STRING) WRITE(INTG_STRING,'(I0)') NumberOfOutputFields - WRITE(myComputationalNodeNumber,*) '#Fields= ',TRIM(INTG_STRING) + WRITE(myWorldComputationNodeNumber,*) '#Fields= ',TRIM(INTG_STRING) NumberOfFieldComponents(1) = NumberOfDimensions NumberOfFieldComponents(2) = NumberOfVariableComponents NumberOfFieldComponents(3) = NumberOfSourceComponents DO I=1,NumberOfOutputFields IF(I==1)THEN WRITE(INTG_STRING,'(I0)') NumberOfDimensions - WRITE(myComputationalNodeNumber,*) & + WRITE(myWorldComputationNodeNumber,*) & & ' 1) coordinates, coordinate, rectangular cartesian, #Components= ',TRIM(INTG_STRING) ELSE IF(I==2) THEN WRITE(INTG_STRING,'(I0)') NumberOfVariableComponents - WRITE(myComputationalNodeNumber,*) & + WRITE(myWorldComputationNodeNumber,*) & & ' 2) dependent, field, rectangular cartesian, #Components= ',TRIM(INTG_STRING) ELSE IF(I==3) THEN WRITE(INTG_STRING,'(I0)') NumberOfSourceComponents - WRITE(myComputationalNodeNumber,*) & + WRITE(myWorldComputationNodeNumber,*) & & ' 3) source, field, rectangular cartesian, #Components= ',TRIM(INTG_STRING) END IF @@ -360,98 +370,98 @@ SUBROUTINE REACTION_DIFFUSION_IO_WRITE_CMGUI(REGION, EQUATIONS_SET_GLOBAL_NUMBER IF(NumberOfDimensions==1) THEN IF(I==1)THEN IF(J==1) THEN - WRITE(myComputationalNodeNumber,*)' x. l.Lagrange, no modify, standard node based.' + WRITE(myWorldComputationNodeNumber,*)' x. l.Lagrange, no modify, standard node based.' ELSE IF(J==2) THEN - WRITE(myComputationalNodeNumber,*)' y. l.Lagrange, no modify, standard node based.' + WRITE(myWorldComputationNodeNumber,*)' y. l.Lagrange, no modify, standard node based.' ELSE IF(J==3) THEN - WRITE(myComputationalNodeNumber,*)' z. l.Lagrange, no modify, standard node based.' + WRITE(myWorldComputationNodeNumber,*)' z. l.Lagrange, no modify, standard node based.' END IF ELSE - WRITE(myComputationalNodeNumber,*) & + WRITE(myWorldComputationNodeNumber,*) & & ' ',J,'. l.Lagrange, no modify, standard node based.' END IF ELSE IF(NumberOfDimensions==2) THEN IF(I==1)THEN IF(J==1) THEN IF(MaxNodesPerElement==4)THEN - WRITE(myComputationalNodeNumber,*) & + WRITE(myWorldComputationNodeNumber,*) & & ' x. l.Lagrange*l.Lagrange, no modify, standard node based.' ELSE IF(MaxNodesPerElement==9) THEN - WRITE(myComputationalNodeNumber,*) & + WRITE(myWorldComputationNodeNumber,*) & & ' x. q.Lagrange*q.Lagrange, no modify, standard node based.' ELSE IF(MaxNodesPerElement==16) THEN - WRITE(myComputationalNodeNumber,*) & + WRITE(myWorldComputationNodeNumber,*) & & ' x. c.Lagrange*c.Lagrange, no modify, standard node based.' ELSE IF(MaxNodesPerElement==3) THEN - WRITE(myComputationalNodeNumber,*) & + WRITE(myWorldComputationNodeNumber,*) & & ' x. l.simplex(2)*l.simplex, no modify, standard node based.' ELSE IF(MaxNodesPerElement==6) THEN - WRITE(myComputationalNodeNumber,*) & + WRITE(myWorldComputationNodeNumber,*) & & ' x. q.simplex(2)*q.simplex, no modify, standard node based.' ELSE IF(MaxNodesPerElement==10) THEN - WRITE(myComputationalNodeNumber,*) & + WRITE(myWorldComputationNodeNumber,*) & & ' x. c.simplex(2)*c.simplex, no modify, standard node based.' END IF ELSE IF(J==2) THEN IF(MaxNodesPerElement==4) THEN - WRITE(myComputationalNodeNumber,*) & + WRITE(myWorldComputationNodeNumber,*) & & ' y. l.Lagrange*l.Lagrange, no modify, standard node based.' ELSE IF(MaxNodesPerElement==9) THEN - WRITE(myComputationalNodeNumber,*) & + WRITE(myWorldComputationNodeNumber,*) & & ' y. q.Lagrange*q.Lagrange, no modify, standard node based.' ELSE IF(MaxNodesPerElement==16) THEN - WRITE(myComputationalNodeNumber,*) & + WRITE(myWorldComputationNodeNumber,*) & & ' y. c.Lagrange*c.Lagrange, no modify, standard node based.' ELSE IF(MaxNodesPerElement==3) THEN - WRITE(myComputationalNodeNumber,*) & + WRITE(myWorldComputationNodeNumber,*) & & ' y. l.simplex(2)*l.simplex, no modify, standard node based.' ELSE IF(MaxNodesPerElement==6) THEN - WRITE(myComputationalNodeNumber,*) & + WRITE(myWorldComputationNodeNumber,*) & & ' y. q.simplex(2)*q.simplex, no modify, standard node based.' ELSE IF(MaxNodesPerElement==10) THEN - WRITE(myComputationalNodeNumber,*) & + WRITE(myWorldComputationNodeNumber,*) & & ' y. c.simplex(2)*c.simplex, no modify, standard node based.' END IF ELSE IF(J==3) THEN IF(MaxNodesPerElement==4) THEN - WRITE(myComputationalNodeNumber,*) & + WRITE(myWorldComputationNodeNumber,*) & & ' z. l.Lagrange*l.Lagrange, no modify, standard node based.' ELSE IF(MaxNodesPerElement==9) THEN - WRITE(myComputationalNodeNumber,*) & + WRITE(myWorldComputationNodeNumber,*) & & ' z. q.Lagrange*q.Lagrange, no modify, standard node based.' ELSE IF(MaxNodesPerElement==16) THEN - WRITE(myComputationalNodeNumber,*) & + WRITE(myWorldComputationNodeNumber,*) & & ' z. c.Lagrange*c.Lagrange, no modify, standard node based.' ELSE IF(MaxNodesPerElement==3) THEN - WRITE(myComputationalNodeNumber,*) & + WRITE(myWorldComputationNodeNumber,*) & & ' z. l.simplex(2)*l.simplex, no modify, standard node based.' ELSE IF(MaxNodesPerElement==6) THEN - WRITE(myComputationalNodeNumber,*) & + WRITE(myWorldComputationNodeNumber,*) & & ' z. q.simplex(2)*q.simplex, no modify, standard node based.' ELSE IF(MaxNodesPerElement==10) THEN - WRITE(myComputationalNodeNumber,*) & + WRITE(myWorldComputationNodeNumber,*) & & ' z. c.simplex(2)*c.simplex, no modify, standard node based.' END IF END IF ELSE IF(MaxNodesPerElement==4) THEN - WRITE(myComputationalNodeNumber,*) & + WRITE(myWorldComputationNodeNumber,*) & & ' ',J,'. l.Lagrange*l.Lagrange, no modify, standard node based.' ELSE IF(MaxNodesPerElement==9) THEN - WRITE(myComputationalNodeNumber,*) & + WRITE(myWorldComputationNodeNumber,*) & & ' ',J,'. q.Lagrange*q.Lagrange, no modify, standard node based.' ELSE IF(MaxNodesPerElement==16) THEN - WRITE(myComputationalNodeNumber,*) & + WRITE(myWorldComputationNodeNumber,*) & & ' ',J,'. c.Lagrange*c.Lagrange, no modify, standard node based.' ELSE IF(MaxNodesPerElement==3) THEN - WRITE(myComputationalNodeNumber,*) & + WRITE(myWorldComputationNodeNumber,*) & & ' ',J,'. l.simplex(2)*l.simplex, no modify, standard node based.' ELSE IF(MaxNodesPerElement==6) THEN - WRITE(myComputationalNodeNumber,*) & + WRITE(myWorldComputationNodeNumber,*) & & ' ',J,'. q.simplex(2)*q.simplex, no modify, standard node based.' ELSE IF(MaxNodesPerElement==10) THEN - WRITE(myComputationalNodeNumber,*) & + WRITE(myWorldComputationNodeNumber,*) & & ' ',J,'. c.simplex(2)*c.simplex, no modify, standard node based.' END IF END IF @@ -459,105 +469,105 @@ SUBROUTINE REACTION_DIFFUSION_IO_WRITE_CMGUI(REGION, EQUATIONS_SET_GLOBAL_NUMBER IF(I==1)THEN IF(J==1) THEN IF(MaxNodesPerElement==8) THEN - WRITE(myComputationalNodeNumber,*) & + WRITE(myWorldComputationNodeNumber,*) & & ' x. l.Lagrange*l.Lagrange*l.Lagrange, no modify, standard node based.' ELSE IF(MaxNodesPerElement==27) THEN - WRITE(myComputationalNodeNumber,*) & + WRITE(myWorldComputationNodeNumber,*) & & ' x. q.Lagrange*q.Lagrange*q.Lagrange, no modify, standard node based.' ELSE IF(MaxNodesPerElement==64) THEN - WRITE(myComputationalNodeNumber,*) & + WRITE(myWorldComputationNodeNumber,*) & & ' x. c.Lagrange*c.Lagrange*c.Lagrange, no modify, standard node based.' ELSE IF(MaxNodesPerElement==4) THEN - WRITE(myComputationalNodeNumber,*) & + WRITE(myWorldComputationNodeNumber,*) & & ' x. l.simplex(2;3)*l.simplex*l.simplex, no modify, standard node based.' ELSE IF(MaxNodesPerElement==10) THEN - WRITE(myComputationalNodeNumber,*) & + WRITE(myWorldComputationNodeNumber,*) & & ' x. q.simplex(2;3)*q.simplex*q.simplex, no modify, standard node based.' ELSE IF(MaxNodesPerElement==20) THEN - WRITE(myComputationalNodeNumber,*) & + WRITE(myWorldComputationNodeNumber,*) & & ' x. c.simplex(2;3)*c.simplex*c.simplex, no modify, standard node based.' END IF ELSE IF(J==2) THEN IF(MaxNodesPerElement==8) THEN - WRITE(myComputationalNodeNumber,*) & + WRITE(myWorldComputationNodeNumber,*) & & ' y. l.Lagrange*l.Lagrange*l.Lagrange, no modify, standard node based.' ELSE IF(MaxNodesPerElement==27) THEN - WRITE(myComputationalNodeNumber,*) & + WRITE(myWorldComputationNodeNumber,*) & & ' y. q.Lagrange*q.Lagrange*q.Lagrange, no modify, standard node based.' ELSE IF(MaxNodesPerElement==64) THEN - WRITE(myComputationalNodeNumber,*) & + WRITE(myWorldComputationNodeNumber,*) & & ' y. c.Lagrange*c.Lagrange*c.Lagrange, no modify, standard node based.' ELSE IF(MaxNodesPerElement==4) THEN - WRITE(myComputationalNodeNumber,*) & + WRITE(myWorldComputationNodeNumber,*) & & ' y. l.simplex(2;3)*l.simplex*l.simplex, no modify, standard node based.' ELSE IF(MaxNodesPerElement==10) THEN - WRITE(myComputationalNodeNumber,*) & + WRITE(myWorldComputationNodeNumber,*) & & ' y. q.simplex(2;3)*q.simplex*q.simplex, no modify, standard node based.' ELSE IF(MaxNodesPerElement==20) THEN - WRITE(myComputationalNodeNumber,*) & + WRITE(myWorldComputationNodeNumber,*) & & ' y. c.simplex(2;3)*c.simplex*c.simplex, no modify, standard node based.' END IF ELSE IF(J==3) THEN IF(MaxNodesPerElement==8) THEN - WRITE(myComputationalNodeNumber,*) & + WRITE(myWorldComputationNodeNumber,*) & & ' z. l.Lagrange*l.Lagrange*l.Lagrange, no modify, standard node based.' ELSE IF(MaxNodesPerElement==27) THEN - WRITE(myComputationalNodeNumber,*) & + WRITE(myWorldComputationNodeNumber,*) & & ' z. q.Lagrange*q.Lagrange*q.Lagrange, no modify, standard node based.' ELSE IF(MaxNodesPerElement==64) THEN - WRITE(myComputationalNodeNumber,*) & + WRITE(myWorldComputationNodeNumber,*) & & ' z. c.Lagrange*c.Lagrange*c.Lagrange, no modify, standard node based.' ELSE IF(MaxNodesPerElement==4) THEN - WRITE(myComputationalNodeNumber,*) & + WRITE(myWorldComputationNodeNumber,*) & & ' z. l.simplex(2;3)*l.simplex*l.simplex, no modify, standard node based.' ELSE IF(MaxNodesPerElement==10) THEN - WRITE(myComputationalNodeNumber,*) & + WRITE(myWorldComputationNodeNumber,*) & & ' z. q.simplex(2;3)*q.simplex*q.simplex, no modify, standard node based.' ELSE IF(MaxNodesPerElement==20) THEN - WRITE(myComputationalNodeNumber,*) & + WRITE(myWorldComputationNodeNumber,*) & & ' z. c.simplex(2;3)*c.simplex*c.simplex, no modify, standard node based.' END IF END IF ELSE IF(MaxNodesPerElement==8) THEN - WRITE(myComputationalNodeNumber,*) & + WRITE(myWorldComputationNodeNumber,*) & & ' ',J,'. l.Lagrange*l.Lagrange*l.Lagrange, no modify, standard node based.' ELSE IF(MaxNodesPerElement==27) THEN - WRITE(myComputationalNodeNumber,*) & + WRITE(myWorldComputationNodeNumber,*) & & ' ',J,'. q.Lagrange*q.Lagrange*q.Lagrange, no modify, standard node based.' ELSE IF(MaxNodesPerElement==64) THEN - WRITE(myComputationalNodeNumber,*) & + WRITE(myWorldComputationNodeNumber,*) & & ' ',J,'. c.Lagrange*c.Lagrange*c.Lagrange, no modify, standard node based.' ELSE IF(MaxNodesPerElement==4) THEN - WRITE(myComputationalNodeNumber,*) & + WRITE(myWorldComputationNodeNumber,*) & & ' ',J,'. l.simplex(2;3)*l.simplex*l.simplex, no modify, standard node based.' ELSE IF(MaxNodesPerElement==10) THEN - WRITE(myComputationalNodeNumber,*) & + WRITE(myWorldComputationNodeNumber,*) & & ' ',J,'. q.simplex(2;3)*q.simplex*q.simplex, no modify, standard node based.' ELSE IF(MaxNodesPerElement==20) THEN - WRITE(myComputationalNodeNumber,*) & + WRITE(myWorldComputationNodeNumber,*) & & ' ',J,'. c.simplex(2;3)*c.simplex*c.simplex, no modify, standard node based.' END IF END IF END IF WRITE(INTG_STRING,'(I0)') MaxNodesPerElement - WRITE(myComputationalNodeNumber,*) ' #Nodes= ',TRIM(INTG_STRING) + WRITE(myWorldComputationNodeNumber,*) ' #Nodes= ',TRIM(INTG_STRING) DO K = 1,MaxNodesPerElement WRITE(INTG_STRING,'(I0)') K - WRITE(myComputationalNodeNumber,*) ' ',TRIM(INTG_STRING),'. #Values=1' - WRITE(myComputationalNodeNumber,*) ' Value indices: 1' - WRITE(myComputationalNodeNumber,*) ' Scale factor indices: ',TRIM(INTG_STRING) + WRITE(myWorldComputationNodeNumber,*) ' ',TRIM(INTG_STRING),'. #Values=1' + WRITE(myWorldComputationNodeNumber,*) ' Value indices: 1' + WRITE(myWorldComputationNodeNumber,*) ' Scale factor indices: ',TRIM(INTG_STRING) END DO END DO !J loop END DO !I loop IF(.NOT.ALLOCATED(ElementNodes)) ALLOCATE(ElementNodes(NumberOfElements,MaxNodesPerElement)) IF(.NOT.ALLOCATED(ElementNodesScales)) ALLOCATE(ElementNodesScales(NumberOfElements,MaxNodesPerElement)) DO I=1,NumberOfElements - ELEMENT_GLOBAL_NUMBER=COMPUTATIONAL_DOMAIN%DECOMPOSITION%TOPOLOGY%ELEMENTS%ELEMENTS(K)%GLOBAL_NUMBER + ELEMENT_GLOBAL_NUMBER=COMPUTATION_DOMAIN%DECOMPOSITION%TOPOLOGY%ELEMENTS%ELEMENTS(K)%GLOBAL_NUMBER DO J=1,MaxNodesPerElement - NODE_LOCAL_NUMBER=COMPUTATIONAL_DOMAIN%TOPOLOGY%ELEMENTS%ELEMENTS(I)%ELEMENT_NODES(J) - NODE_GLOBAL_NUMBER=COMPUTATIONAL_DOMAIN%MAPPINGS%NODES%LOCAL_TO_GLOBAL_MAP(NODE_LOCAL_NUMBER) + NODE_LOCAL_NUMBER=COMPUTATION_DOMAIN%TOPOLOGY%ELEMENTS%ELEMENTS(I)%ELEMENT_NODES(J) + NODE_GLOBAL_NUMBER=COMPUTATION_DOMAIN%MAPPINGS%NODES%LOCAL_TO_GLOBAL_MAP(NODE_LOCAL_NUMBER) ElementNodes(I,J)=NODE_GLOBAL_NUMBER ElementNodesScales(I,J)=1.0000000000000000E+00 END DO @@ -565,14 +575,14 @@ SUBROUTINE REACTION_DIFFUSION_IO_WRITE_CMGUI(REGION, EQUATIONS_SET_GLOBAL_NUMBER DO K=1,NumberOfElements - ELEMENT_GLOBAL_NUMBER=COMPUTATIONAL_DOMAIN%DECOMPOSITION%TOPOLOGY%ELEMENTS%ELEMENTS(K)%GLOBAL_NUMBER + ELEMENT_GLOBAL_NUMBER=COMPUTATION_DOMAIN%DECOMPOSITION%TOPOLOGY%ELEMENTS%ELEMENTS(K)%GLOBAL_NUMBER IF (BasisType==1) THEN WRITE(INTG_STRING,'(I0)') ELEMENT_GLOBAL_NUMBER - WRITE(myComputationalNodeNumber,*) 'Element: ', TRIM(INTG_STRING),' 0 0' - WRITE(myComputationalNodeNumber,*) ' Nodes:' - WRITE(myComputationalNodeNumber,*) ' ', ElementNodes(K,1:MaxNodesPerElement) - WRITE(myComputationalNodeNumber,*) ' Scale factors:' - WRITE(myComputationalNodeNumber,*) ' ',ElementNodesScales(K,1:MaxNodesPerElement) + WRITE(myWorldComputationNodeNumber,*) 'Element: ', TRIM(INTG_STRING),' 0 0' + WRITE(myWorldComputationNodeNumber,*) ' Nodes:' + WRITE(myWorldComputationNodeNumber,*) ' ', ElementNodes(K,1:MaxNodesPerElement) + WRITE(myWorldComputationNodeNumber,*) ' Scale factors:' + WRITE(myWorldComputationNodeNumber,*) ' ',ElementNodesScales(K,1:MaxNodesPerElement) ELSEIF(BasisType==2) THEN IF(.NOT.ALLOCATED(SimplexOutputHelp)) ALLOCATE(SimplexOutputHelp(MaxNodesPerElement)) @@ -587,14 +597,14 @@ SUBROUTINE REACTION_DIFFUSION_IO_WRITE_CMGUI(REGION, EQUATIONS_SET_GLOBAL_NUMBER SimplexOutputHelp(4)=ElementNodes(K,3) END IF WRITE(INTG_STRING,'(I0)') ELEMENT_GLOBAL_NUMBER - WRITE(myComputationalNodeNumber,*) 'Element: ', TRIM(INTG_STRING),' 0 0' - WRITE(myComputationalNodeNumber,*) ' Nodes:' - WRITE(myComputationalNodeNumber,*) ' ', SimplexOutputHelp - WRITE(myComputationalNodeNumber,*) ' Scale factors:' - WRITE(myComputationalNodeNumber,*) ' ',ElementNodesScales(K,1:MaxNodesPerElement) + WRITE(myWorldComputationNodeNumber,*) 'Element: ', TRIM(INTG_STRING),' 0 0' + WRITE(myWorldComputationNodeNumber,*) ' Nodes:' + WRITE(myWorldComputationNodeNumber,*) ' ', SimplexOutputHelp + WRITE(myWorldComputationNodeNumber,*) ' Scale factors:' + WRITE(myWorldComputationNodeNumber,*) ' ',ElementNodesScales(K,1:MaxNodesPerElement) END IF ENDDO - CLOSE(myComputationalNodeNumber) + CLOSE(myWorldComputationNodeNumber) END IF !exportExelem flag check EXITS("REACTION_DIFFUSION_IO_WRITE_CMGUI") diff --git a/src/reaction_diffusion_equation_routines.f90 b/src/reaction_diffusion_equation_routines.f90 index 2f2af265..21bbfa0f 100755 --- a/src/reaction_diffusion_equation_routines.f90 +++ b/src/reaction_diffusion_equation_routines.f90 @@ -26,7 +26,7 @@ !> Auckland, the University of Oxford and King's College, London. !> All Rights Reserved. !> -!> Contributor(s): Chris Bradley +!> Contributor(s): Vijay Rajagopal,Chris Bradley !> !> Alternatively, the contents of this file may be used under the terms of !> either the GNU General Public License Version 2 or later (the "GPL"), or @@ -48,7 +48,8 @@ MODULE REACTION_DIFFUSION_EQUATION_ROUTINES USE BasisRoutines USE BasisAccessRoutines USE BOUNDARY_CONDITIONS_ROUTINES - USE ComputationEnvironment + USE ComputationRoutines + USE ComputationAccessRoutines USE Constants USE CONTROL_LOOP_ROUTINES USE ControlLoopAccessRoutines @@ -1510,10 +1511,11 @@ SUBROUTINE REACTION_DIFFUSION_POST_SOLVE_OUTPUT_DATA(CONTROL_LOOP,SOLVER,err,err TYPE(SOLVER_MAPPING_TYPE), POINTER :: SOLVER_MAPPING !SOLVER_MAPPING%EQUATIONS_SETS(equations_set_idx)%PTR CURRENT_LOOP_ITERATION=CONTROL_LOOP%TIME_LOOP%ITERATION_NUMBER OUTPUT_FREQUENCY=CONTROL_LOOP%TIME_LOOP%OUTPUT_NUMBER - myComputationalNodeNumber = ComputationalEnvironment_NodeNumberGet(err,error) + NULLIFY(workGroup) + CALL Solver_WorkGroupGet(solver,workGroup,err,error,*999) + CALL WorkGroup_GroupNodeNumberGet(workGroup,myGroupComputationNodeNumber,err,error,*999) MAX_DIGITS=FLOOR(LOG10((CONTROL_LOOP%TIME_LOOP%STOP_TIME-CONTROL_LOOP%TIME_LOOP%START_TIME)/ & & CONTROL_LOOP%TIME_LOOP%TIME_INCREMENT))+1 IF(OUTPUT_FREQUENCY>0) THEN @@ -1556,7 +1560,7 @@ SUBROUTINE REACTION_DIFFUSION_POST_SOLVE_OUTPUT_DATA(CONTROL_LOOP,SOLVER,err,err WRITE(TEMP_FMT,'(A2,A38,A20,A2)') "(", '"TIME_STEP_SPEC_1.part",I2.2,".",',FMT,")" FMT = TRIM(TEMP_FMT) WRITE(OUTPUT_FILE,FMT) & - & myComputationalNodeNumber,CURRENT_LOOP_ITERATION + & myGroupComputationNodeNumber,CURRENT_LOOP_ITERATION ELSE WRITE(TEMP_FMT,'("I",I0,".",I0)') MAX_DIGITS,MAX_DIGITS !200 FORMAT @@ -1564,7 +1568,7 @@ SUBROUTINE REACTION_DIFFUSION_POST_SOLVE_OUTPUT_DATA(CONTROL_LOOP,SOLVER,err,err WRITE(TEMP_FMT,'(A2,A38,A20,A2)') "(", '"TIME_STEP_SPEC_",I0,".part",I2.2,".",',FMT,")" FMT = TRIM(TEMP_FMT) WRITE(OUTPUT_FILE,FMT) & - & equations_set_idx, myComputationalNodeNumber,CURRENT_LOOP_ITERATION + & equations_set_idx, myGroupComputationNodeNumber,CURRENT_LOOP_ITERATION ENDIF WRITE(*,*) OUTPUT_FILE FILE=TRIM(OUTPUT_FILE) diff --git a/src/region_access_routines.f90 b/src/region_access_routines.f90 index 4ba8ae82..3351349f 100644 --- a/src/region_access_routines.f90 +++ b/src/region_access_routines.f90 @@ -51,6 +51,7 @@ MODULE RegionAccessRoutines USE FieldAccessRoutines USE GeneratedMeshAccessRoutines USE InterfaceAccessRoutines + USE ISO_VARYING_STRING USE Kinds USE MeshAccessRoutines USE Strings @@ -68,8 +69,6 @@ MODULE RegionAccessRoutines !Module variables - TYPE(REGIONS_TYPE) :: regions - !Interfaces INTERFACE REGION_COORDINATE_SYSTEM_GET @@ -84,10 +83,10 @@ MODULE RegionAccessRoutines MODULE PROCEDURE Region_UserNumberFind END INTERFACE REGION_USER_NUMBER_FIND - PUBLIC regions - PUBLIC Region_CellMLGet + PUBLIC Region_ContextGet + PUBLIC Region_CoordinateSystemGet PUBLIC REGION_COORDINATE_SYSTEM_GET @@ -110,12 +109,16 @@ MODULE RegionAccessRoutines PUBLIC REGION_NODES_GET + PUBLIC Region_RegionsGet + PUBLIC Region_UserNumberFind PUBLIC REGION_USER_NUMBER_FIND PUBLIC Region_UserNumberGet + PUBLIC Regions_WorldRegionGet + CONTAINS ! @@ -136,9 +139,13 @@ SUBROUTINE Region_CellMLGet(region,userNumber,cellml,err,error,*) ENTERS("Region_CellMLGet",err,error,*998) - IF(.NOT.ASSOCIATED(region)) CALL FlagError("Region is not associated.",err,error,*998) - IF(.NOT.region%REGION_FINISHED) CALL FlagError("Region has not been finished.",err,error,*998) IF(ASSOCIATED(cellml)) CALL FlagError("CellML is already associated.",err,error,*998) + IF(.NOT.ASSOCIATED(region)) CALL FlagError("Region is not associated.",err,error,*999) + IF(.NOT.region%REGION_FINISHED) THEN + localError="Region number "//TRIM(NumberToVString(region%USER_NUMBER,"*",err,error))// & + & " has not been finished." + CALL FlagError(localError,err,error,*999) + ENDIF NULLIFY(cellml) CALL CellML_UserNumberFind(userNumber,region,cellml,err,error,*999) @@ -155,8 +162,48 @@ SUBROUTINE Region_CellMLGet(region,userNumber,cellml,err,error,*) RETURN 1 END SUBROUTINE Region_CellMLGet + + ! + !================================================================================================================================ + ! - ! + !>Returns a pointer to the context for a region. + SUBROUTINE Region_ContextGet(region,context,err,error,*) + + !Argument variables + TYPE(REGION_TYPE), POINTER :: region !region%regions%context + IF(.NOT.ASSOCIATED(context)) THEN + localError="The context is not associated for the regions for region number "// & + & TRIM(NumberToVString(region%USER_NUMBER,"*",err,error))//"." + CALL FlagError(localError,err,error,*999) + ENDIF + + EXITS("Region_ContextGet") + RETURN +999 NULLIFY(context) +998 ERRORSEXITS("Region_ContextGet",err,error) + RETURN 1 + + END SUBROUTINE Region_ContextGet + + ! !================================================================================================================================ ! @@ -171,12 +218,16 @@ SUBROUTINE Region_CoordinateSystemGet(region,coordinateSystem,err,error,*) !Local Variables TYPE(VARYING_STRING) :: localError - ENTERS("Region_CoordinateSystemGet",ERR,ERROR,*999) + ENTERS("Region_CoordinateSystemGet",ERR,ERROR,*998) !Check input arguments + IF(ASSOCIATED(coordinateSystem)) CALL FlagError("Coordinate system is already associated.",ERR,ERROR,*998) IF(.NOT.ASSOCIATED(region)) CALL FlagError("Region is not associated.",err,error,*999) - IF(.NOT.region%REGION_FINISHED) CALL FlagError("Region has not been finished.",err,error,*999) - IF(ASSOCIATED(coordinateSystem)) CALL FlagError("Coordinate system is already associated.",ERR,ERROR,*999) + IF(.NOT.region%REGION_FINISHED) THEN + localError="Region number "//TRIM(NumberToVString(region%USER_NUMBER,"*",err,error))// & + & " has not been finished." + CALL FlagError(localError,err,error,*999) + ENDIF coordinateSystem=>region%COORDINATE_SYSTEM IF(.NOT.ASSOCIATED(coordinateSystem)) THEN @@ -187,7 +238,8 @@ SUBROUTINE Region_CoordinateSystemGet(region,coordinateSystem,err,error,*) EXITS("Region_CoordinateSystemGet") RETURN -999 ERRORSEXITS("Region_CoordinateSystemGet",err,error) +999 NULLIFY(coordinateSystem) +998 ERRORSEXITS("Region_CoordinateSystemGet",err,error) RETURN 1 END SUBROUTINE Region_CoordinateSystemGet @@ -210,10 +262,18 @@ SUBROUTINE Region_DataPointsGet(region,userNumber,dataPoints,err,error,*) ENTERS("Region_DataPointsGet",err,error,*998) - IF(.NOT.ASSOCIATED(region)) CALL FlagError("Region is not associated.",err,error,*998) - IF(.NOT.region%REGION_FINISHED) CALL FlagError("Region data point sets is not associated.",err,error,*998) IF(ASSOCIATED(dataPoints)) CALL FlagError("Data points is already associated.",err,error,*998) - IF(.NOT.ASSOCIATED(region%dataPointSets)) CALL FlagError("Region data point sets is not associated.",err,error,*998) + IF(.NOT.ASSOCIATED(region)) CALL FlagError("Region is not associated.",err,error,*999) + IF(.NOT.region%REGION_FINISHED) THEN + localError="Region number "//TRIM(NumberToVString(region%USER_NUMBER,"*",err,error))// & + & " has not been finished." + CALL FlagError(localError,err,error,*999) + ENDIF + IF(.NOT.ASSOCIATED(region%dataPointSets)) THEN + localError="Region data point sets is not associated for region number "// & + & TRIM(NumberToVString(region%USER_NUMBER,"*",err,error))//"." + CALL FlagError(localError,err,error,*999) + ENDIF NULLIFY(dataPoints) CALL DataPointSets_UserNumberFind(region%dataPointSets,userNumber,dataPoints,err,error,*999) @@ -249,9 +309,13 @@ SUBROUTINE Region_EquationsSetGet(region,userNumber,equationsSet,err,error,*) ENTERS("Region_EquationsSetGet",err,error,*998) - IF(.NOT.ASSOCIATED(region)) CALL FlagError("Region is not associated.",err,error,*998) - IF(.NOT.region%REGION_FINISHED) CALL FlagError("Region has not been finished.",err,error,*998) IF(ASSOCIATED(equationsSet)) CALL FlagError("Equations set is already associated.",err,error,*998) + IF(.NOT.ASSOCIATED(region)) CALL FlagError("Region is not associated.",err,error,*999) + IF(.NOT.region%REGION_FINISHED) THEN + localError="Region number "//TRIM(NumberToVString(region%USER_NUMBER,"*",err,error))// & + & " has not been finished." + CALL FlagError(localError,err,error,*999) + ENDIF NULLIFY(equationsSet) CALL EquationsSet_UserNumberFind(userNumber,region,equationsSet,err,error,*999) @@ -287,9 +351,13 @@ SUBROUTINE Region_FieldGet(region,userNumber,field,err,error,*) ENTERS("Region_FieldGet",err,error,*998) - IF(.NOT.ASSOCIATED(region)) CALL FlagError("Region is not associated.",err,error,*998) - IF(.NOT.region%REGION_FINISHED) CALL FlagError("Region has not been finished.",err,error,*998) IF(ASSOCIATED(field)) CALL FlagError("Field is already associated.",err,error,*998) + IF(.NOT.ASSOCIATED(region)) CALL FlagError("Region is not associated.",err,error,*999) + IF(.NOT.region%REGION_FINISHED) THEN + localError="Region number "//TRIM(NumberToVString(region%USER_NUMBER,"*",err,error))// & + & " has not been finished." + CALL FlagError(localError,err,error,*999) + ENDIF NULLIFY(field) CALL Field_UserNumberFind(userNumber,region,field,err,error,*999) @@ -325,9 +393,13 @@ SUBROUTINE Region_GeneratedMeshGet(region,userNumber,generatedMesh,err,error,*) ENTERS("Region_GeneratedMeshGet",err,error,*998) - IF(.NOT.ASSOCIATED(region)) CALL FlagError("Region is not associated.",err,error,*998) - IF(.NOT.region%REGION_FINISHED) CALL FlagError("Region has not been finished.",err,error,*998) IF(ASSOCIATED(generatedMesh)) CALL FlagError("Generated mesh is already associated.",err,error,*998) + IF(.NOT.ASSOCIATED(region)) CALL FlagError("Region is not associated.",err,error,*999) + IF(.NOT.region%REGION_FINISHED) THEN + localError="Region number "//TRIM(NumberToVString(region%USER_NUMBER,"*",err,error))// & + & " has not been finished." + CALL FlagError(localError,err,error,*999) + ENDIF NULLIFY(generatedMesh) CALL GeneratedMesh_UserNumberFind(userNumber,region,generatedMesh,err,error,*999) @@ -350,9 +422,10 @@ END SUBROUTINE Region_GeneratedMeshGet ! !>Finds and returns a pointer to the region with the given user number. - SUBROUTINE Region_Get(userNumber,region,err,error,*) + SUBROUTINE Region_Get(regions,userNumber,region,err,error,*) !Argument variables + TYPE(RegionsType), POINTER :: regions !region%nodes - IF(.NOT.ASSOCIATED(nodes)) CALL FlagError("Region nodes is not associated.",err,error,*999) + IF(.NOT.ASSOCIATED(nodes)) THEN + localError="The nodes for region number "//TRIM(NumberToVString(region%USER_NUMBER,"*",err,error))// & + & " is not associated." + CALL FlagError(localError,err,error,*999) + ENDIF EXITS("Region_NodesGet") RETURN @@ -486,10 +576,46 @@ END SUBROUTINE Region_NodesGet !================================================================================================================================ ! + !>Returns a pointer to the regions for a region. + SUBROUTINE Region_RegionsGet(region,regions,err,error,*) + + !Argument variables + TYPE(REGION_TYPE), POINTER :: region !region%regions + IF(.NOT.ASSOCIATED(regions)) THEN + localError="Regions is not associated for region number "// & + & TRIM(NumberToVString(region%USER_NUMBER,"*",err,error))//"." + CALL FlagError(localError,err,error,*999) + ENDIF + + EXITS("Region_RegionsGet") + RETURN +999 NULLIFY(regions) +998 ERRORSEXITS("Region_RegionsGet",err,error) + RETURN 1 + + END SUBROUTINE Region_RegionsGet + + ! + !================================================================================================================================ + ! + !>Finds and returns a pointer to the region with the given user number. If no region with that number exists region is left nullified. - SUBROUTINE Region_UserNumberFind(userNumber,region,err,error,*) + SUBROUTINE Region_UserNumberFind(regions,userNumber,region,err,error,*) !Argument variables + TYPE(RegionsType), POINTER :: regions !regions%WORLD_REGION + IF(.NOT.ASSOCIATED(regions)) CALL FlagError("Regions is not associated.",err,error,*999) + + worldRegion=>regions%worldRegion IF(.NOT.ASSOCIATED(worldRegion)) CALL FlagError("World region is not associated.",err,error,*999) NULLIFY(region) @@ -594,4 +722,34 @@ END SUBROUTINE Region_UserNumberGet !================================================================================================================================ ! + !>Returns a pointer to the world region for a regions. + SUBROUTINE Regions_WorldRegionGet(regions,worldRegion,err,error,*) + + !Argument variables + TYPE(RegionsType), POINTER :: regions !regions%worldREgion + IF(.NOT.ASSOCIATED(worldRegion)) CALL FlagError("Regions world region is not associated.",err,error,*999) + + EXITS("Regions_WorldRegionGet") + RETURN +999 NULLIFY(worldRegion) +998 ERRORSEXITS("Regions_WorldRegionGet",err,error) + RETURN 1 + + END SUBROUTINE Regions_WorldRegionGet + + ! + !================================================================================================================================ + ! + END MODULE RegionAccessRoutines diff --git a/src/region_routines.f90 b/src/region_routines.f90 index 4be8544e..42bb02e1 100755 --- a/src/region_routines.f90 +++ b/src/region_routines.f90 @@ -45,6 +45,7 @@ MODULE REGION_ROUTINES USE BaseRoutines + USE ContextAccessRoutines USE COORDINATE_ROUTINES USE CoordinateSystemAccessRoutines USE CMISS_CELLML @@ -57,7 +58,7 @@ MODULE REGION_ROUTINES USE ISO_VARYING_STRING USE KINDS USE MESH_ROUTINES - USE NODE_ROUTINES + USE NodeRoutines USE RegionAccessRoutines USE STRINGS USE TYPES @@ -96,9 +97,7 @@ MODULE REGION_ROUTINES PUBLIC REGION_LABEL_GET,REGION_LABEL_SET - PUBLIC REGION_USER_NUMBER_TO_REGION - - PUBLIC REGIONS_INITIALISE,REGIONS_FINALISE + PUBLIC Regions_Initialise,Regions_Finalise CONTAINS @@ -107,38 +106,38 @@ MODULE REGION_ROUTINES ! !>Sets the coordinate system of region. \see OPENCMISS::Iron::cmfe_RegionCoordinateSystemSet - SUBROUTINE REGION_COORDINATE_SYSTEM_SET(REGION,COORDINATE_SYSTEM,ERR,ERROR,*) + SUBROUTINE REGION_COORDINATE_SYSTEM_SET(REGION,COORDINATE_SYSTEM,err,error,*) !Argument variables TYPE(REGION_TYPE), POINTER :: REGION !COORDINATE_SYSTEM ELSE - CALL FlagError("Coordinate system has not been finished.",ERR,ERROR,*999) + CALL FlagError("Coordinate system has not been finished.",err,error,*999) ENDIF ELSE - CALL FlagError("Coordinate system is not associated.",ERR,ERROR,*999) + CALL FlagError("Coordinate system is not associated.",err,error,*999) ENDIF ENDIF ELSE - CALL FlagError("Region is not associated.",ERR,ERROR,*999) + CALL FlagError("Region is not associated.",err,error,*999) ENDIF EXITS("REGION_COORDINATE_SYSTEM_SET") RETURN -999 ERRORSEXITS("REGION_COORDINATE_SYSTEM_SET",ERR,ERROR) +999 ERRORSEXITS("REGION_COORDINATE_SYSTEM_SET",err,error) RETURN 1 END SUBROUTINE REGION_COORDINATE_SYSTEM_SET @@ -147,40 +146,40 @@ END SUBROUTINE REGION_COORDINATE_SYSTEM_SET ! !>Finishes the creation of a region. \see OPENCMISS::Iron::cmfe_RegionCreateFinish - SUBROUTINE REGION_CREATE_FINISH(REGION,ERR,ERROR,*) + SUBROUTINE REGION_CREATE_FINISH(REGION,err,error,*) !Argument variables TYPE(REGION_TYPE), POINTER :: REGION !- PARENT_REGION: global region !>- NUMBER_OF_SUB_REGIONS: 0 !>- SUB_REGIONS: 0 region - SUBROUTINE REGION_CREATE_START(USER_NUMBER,PARENT_REGION,REGION,ERR,ERROR,*) + SUBROUTINE REGION_CREATE_START(USER_NUMBER,PARENT_REGION,REGION,err,error,*) !Argument variables INTEGER(INTG), INTENT(IN) :: USER_NUMBER !PARENT_REGION%regions !CPB 21/02/07 The vstring operation crashes the AIX compiler so put a CHAR() etc. around it. - !REGION%LABEL="Region "//NUMBER_TO_VSTRING(USER_NUMBER,"*",ERR,ERROR) - LOCAL_STRING="Region "//NUMBER_TO_VSTRING(USER_NUMBER,"*",ERR,ERROR) + !REGION%LABEL="Region "//NUMBER_TO_VSTRING(USER_NUMBER,"*",err,error) + LOCAL_STRING="Region "//NUMBER_TO_VSTRING(USER_NUMBER,"*",err,error) REGION%LABEL=CHAR(LOCAL_STRING) - IF(ERR/=0) GOTO 999 + IF(err/=0) GOTO 999 REGION%COORDINATE_SYSTEM=>PARENT_REGION%COORDINATE_SYSTEM !Adjust the parent region to include this new daughter - ALLOCATE(NEW_SUB_REGIONS(PARENT_REGION%NUMBER_OF_SUB_REGIONS+1),STAT=ERR) - IF(ERR/=0) CALL FlagError("Could not allocate new sub-regions.",ERR,ERROR,*999) + ALLOCATE(NEW_SUB_REGIONS(PARENT_REGION%NUMBER_OF_SUB_REGIONS+1),STAT=err) + IF(err/=0) CALL FlagError("Could not allocate new sub-regions.",err,error,*999) DO region_idx=1,PARENT_REGION%NUMBER_OF_SUB_REGIONS NEW_SUB_REGIONS(region_idx)%PTR=>PARENT_REGION%SUB_REGIONS(region_idx)%PTR ENDDO !region_no @@ -255,13 +258,13 @@ SUBROUTINE REGION_CREATE_START(USER_NUMBER,PARENT_REGION,REGION,ERR,ERROR,*) !Set the new regions parent region to the parent region REGION%PARENT_REGION=>PARENT_REGION ELSE - CALL FlagError("Parent region does not have an associated coordinate system.",ERR,ERROR,*997) + CALL FlagError("Parent region does not have an associated coordinate system.",err,error,*997) ENDIF ELSE - CALL FlagError("Parent region has not been finished.",ERR,ERROR,*997) + CALL FlagError("Parent region has not been finished.",err,error,*997) ENDIF ELSE - CALL FlagError("Parent region is not associated.",ERR,ERROR,*997) + CALL FlagError("Parent region is not associated.",err,error,*997) ENDIF ENDIF ENDIF @@ -270,7 +273,7 @@ SUBROUTINE REGION_CREATE_START(USER_NUMBER,PARENT_REGION,REGION,ERR,ERROR,*) RETURN 999 CALL REGION_FINALISE(REGION,DUMMY_ERR,DUMMY_ERROR,*998) 998 IF(ASSOCIATED(NEW_SUB_REGIONS)) DEALLOCATE(NEW_SUB_REGIONS) -997 ERRORSEXITS("REGION_CREATE_START",ERR,ERROR) +997 ERRORSEXITS("REGION_CREATE_START",err,error) RETURN 1 END SUBROUTINE REGION_CREATE_START @@ -278,22 +281,23 @@ END SUBROUTINE REGION_CREATE_START !================================================================================================================================ ! - !>Destroys a region given by USER_NUMBER and all sub-regions under it. \todo create destroy by pointer method. \see OPENCMISS::Iron::cmfe_RegionDestroy - RECURSIVE SUBROUTINE REGION_DESTROY_NUMBER(USER_NUMBER,ERR,ERROR,*) + !>Destroys a region given by USER_NUMBER and all sub-regions under it. \todo create destroy by pointer method. \see OpenCMISS::Iron::cmfe_Region_Destroy + RECURSIVE SUBROUTINE REGION_DESTROY_NUMBER(regions,USER_NUMBER,err,error,*) !Argument variables + TYPE(RegionsType), POINTER :: regions !1) THEN !If the parent region has more than one sub regions then remove this instance from its sub-regions list - ALLOCATE(NEW_SUB_REGIONS(REGION%PARENT_REGION%NUMBER_OF_SUB_REGIONS-1),STAT=ERR) - IF(ERR/=0) CALL FlagError("Could not allocate new sub-regions.",ERR,ERROR,*999) + ALLOCATE(NEW_SUB_REGIONS(REGION%PARENT_REGION%NUMBER_OF_SUB_REGIONS-1),STAT=err) + IF(err/=0) CALL FlagError("Could not allocate new sub-regions.",err,error,*999) count=0 DO nr=1,REGION%PARENT_REGION%NUMBER_OF_SUB_REGIONS IF(REGION%PARENT_REGION%SUB_REGIONS(nr)%PTR%USER_NUMBER/=REGION%USER_NUMBER) THEN @@ -321,25 +325,25 @@ RECURSIVE SUBROUTINE REGION_DESTROY_NUMBER(USER_NUMBER,ERR,ERROR,*) IF(ASSOCIATED(REGION%PARENT_REGION%SUB_REGIONS)) DEALLOCATE(REGION%PARENT_REGION%SUB_REGIONS) REGION%PARENT_REGION%SUB_REGIONS=>NEW_SUB_REGIONS !Finalise the region - CALL REGION_FINALISE(REGION,ERR,ERROR,*999) + CALL REGION_FINALISE(REGION,err,error,*999) ELSE - CALL FlagError("Parent region is not associated.",ERR,ERROR,*999) + CALL FlagError("Parent region is not associated.",err,error,*999) ENDIF ELSE !Recursively delete sub regions first DO WHILE(REGION%NUMBER_OF_SUB_REGIONS>0) - CALL REGION_DESTROY_NUMBER(REGION%SUB_REGIONS(1)%PTR%USER_NUMBER,ERR,ERROR,*999) + CALL REGION_DESTROY_NUMBER(regions,REGION%SUB_REGIONS(1)%PTR%USER_NUMBER,err,error,*999) ENDDO !Now delete this instance - CALL REGION_DESTROY_NUMBER(REGION%USER_NUMBER,ERR,ERROR,*999) + CALL REGION_DESTROY_NUMBER(regions,REGION%USER_NUMBER,err,error,*999) ENDIF ELSE - CALL FlagError("Region number does not exist.",ERR,ERROR,*999) + CALL FlagError("Region number does not exist.",err,error,*999) ENDIF EXITS("REGION_DESTROY_NUMBER") RETURN -999 ERRORSEXITS("REGION_DESTROY_NUMBER",ERR,ERROR) +999 ERRORSEXITS("REGION_DESTROY_NUMBER",err,error) RETURN 1 END SUBROUTINE REGION_DESTROY_NUMBER @@ -348,27 +352,30 @@ END SUBROUTINE REGION_DESTROY_NUMBER ! !>Destroys a region identified by a pointer and all sub-regions under it. \see OPENCMISS::Iron::cmfe_RegionDestroy - SUBROUTINE REGION_DESTROY(REGION,ERR,ERROR,*) + SUBROUTINE REGION_DESTROY(REGION,err,error,*) !Argument variables TYPE(REGION_TYPE), POINTER :: REGION !Finalises a region and deallocates all memory - SUBROUTINE REGION_FINALISE(REGION,ERR,ERROR,*) + SUBROUTINE REGION_FINALISE(REGION,err,error,*) !Argument variables TYPE(REGION_TYPE), POINTER :: REGION !Initialises a region. - SUBROUTINE REGION_INITIALISE(REGION,ERR,ERROR,*) + SUBROUTINE REGION_INITIALISE(REGION,err,error,*) !Argument variables TYPE(REGION_TYPE), POINTER :: REGION !Returns the label of a region. \see OPENCMISS::Iron::cmfe_RegionLabelGet - SUBROUTINE REGION_LABEL_GET_C(REGION,LABEL,ERR,ERROR,*) + SUBROUTINE REGION_LABEL_GET_C(REGION,LABEL,err,error,*) !Argument variables TYPE(REGION_TYPE), POINTER :: REGION !Returns the label of a region. \see OPENCMISS::Iron::cmfe_RegionLabelGet - SUBROUTINE REGION_LABEL_GET_VS(REGION,LABEL,ERR,ERROR,*) + SUBROUTINE REGION_LABEL_GET_VS(REGION,LABEL,err,error,*) !Argument variables TYPE(REGION_TYPE), POINTER :: REGION !Sets the label of a region. \see OPENCMISS::Iron::cmfe_RegionLabelSet - SUBROUTINE REGION_LABEL_SET_C(REGION,LABEL,ERR,ERROR,*) + SUBROUTINE REGION_LABEL_SET_C(REGION,LABEL,err,error,*) !Argument variables TYPE(REGION_TYPE), POINTER :: REGION !Sets the label of a region. \see OPENCMISS::Iron::cmfe_RegionLabelSet - SUBROUTINE REGION_LABEL_SET_VS(REGION,LABEL,ERR,ERROR,*) + SUBROUTINE REGION_LABEL_SET_VS(REGION,LABEL,err,error,*) !Argument variables TYPE(REGION_TYPE), POINTER :: REGION !Finalises the regions and destroys any current regions. - SUBROUTINE REGIONS_FINALISE(ERR,ERROR,*) + SUBROUTINE Regions_Finalise(regions,err,error,*) !Argument variables - INTEGER(INTG), INTENT(OUT) :: ERR !0) - CALL REGION_DESTROY_NUMBER(REGIONS%WORLD_REGION%SUB_REGIONS(1)%PTR%USER_NUMBER,ERR,ERROR,*999) - ENDDO !region - !Destroy global region and deallocated any memory allocated in the global region - CALL REGION_FINALISE(REGIONS%WORLD_REGION,ERR,ERROR,*999) - NULLIFY(REGIONS%WORLD_REGION) + IF(ASSOCIATED(regions)) THEN + IF(ASSOCIATED(regions%worldRegion)) THEN + !Destroy any global region daughter regions first + DO WHILE(regions%worldRegion%NUMBER_OF_SUB_REGIONS>0) + CALL REGION_DESTROY_NUMBER(regions,regions%worldRegion%SUB_REGIONS(1)%PTR%USER_NUMBER,err,error,*999) + ENDDO !region + !Destroy global region and deallocated any memory allocated in the global region + CALL REGION_FINALISE(regions%worldRegion,err,error,*999) + ENDIF + DEALLOCATE(regions) ENDIF - EXITS("REGIONS_FINALISE") + EXITS("Regions_Finalise") RETURN -999 ERRORSEXITS("REGIONS_FINALISE",ERR,ERROR) +999 ERRORSEXITS("Regions_Finalise",err,error) RETURN 1 - END SUBROUTINE REGIONS_FINALISE + + END SUBROUTINE Regions_Finalise ! !================================================================================================================================ ! - !>Initialises the regions and creates the global world region. - SUBROUTINE REGIONS_INITIALISE(WORLD_REGION,ERR,ERROR,*) + !>Initialises the regions and creates the global world region for a context. + SUBROUTINE Regions_Initialise(context,err,error,*) !Argument variables - TYPE(REGION_TYPE), POINTER :: WORLD_REGION !WORLD_COORDINATE_SYSTEM - REGIONS%WORLD_REGION%REGION_FINISHED=.TRUE. - !Return the pointer - WORLD_REGION=>REGIONS%WORLD_REGION - ELSE - CALL FlagError("World coordinate system has not been created.",ERR,ERROR,*999) - ENDIF - ENDIF + ENTERS("Regions_Initialise",err,error,*998) + + IF(.NOT.ASSOCIATED(context)) CALL FlagError("Context is not associated.",err,error,*998) + IF(ASSOCIATED(context%regions)) CALL FlagError("Context regions is already associated.",err,error,*998) + + NULLIFY(coordinateSystems) + CALL Context_CoordinateSystemsGet(context,coordinateSystems,err,error,*998) + CALL CoordinateSystem_UserNumberFind(coordinateSystems,0,worldCoordinateSystem,err,error,*998) + IF(.NOT.ASSOCIATED(worldCoordinateSystem)) CALL FlagError("World coordinate system has not been created.",err,error,*998) + + !Allocate context regions + ALLOCATE(context%regions,STAT=err) + IF(err/=0) CALL FlagError("Could not allocate regions.",err,error,*999) + !Initialise + context%regions%context=>context + NULLIFY(context%regions%worldRegion) + !Create world region + CALL Region_Initialise(context%regions%worldRegion,err,error,*999) + context%regions%worldRegion%USER_NUMBER=0 + context%regions%worldRegion%regions=>context%regions + context%regions%worldRegion%LABEL="World Region" + context%regions%worldRegion%COORDINATE_SYSTEM=>worldCoordinateSystem + context%regions%worldRegion%REGION_FINISHED=.TRUE. - EXITS("REGIONS_INITIALISE") - RETURN -999 ERRORSEXITS("REGIONS_INITIALISE",ERR,ERROR) - RETURN 1 - END SUBROUTINE REGIONS_INITIALISE - - ! - !================================================================================================================================ - ! - - !> Find the region with the given user number, or throw an error if it does not exist. - SUBROUTINE REGION_USER_NUMBER_TO_REGION( USER_NUMBER, REGION, ERR, ERROR, * ) - !Arguments - INTEGER(INTG), INTENT(IN) :: USER_NUMBER !solver%solvers + + testSolver=>solver + DO WHILE(ASSOCIATED(testSolver%LINKING_SOLVER)) + testSolver=>testSolver%LINKING_SOLVER + ENDDO + solvers=>testSolver%solvers IF(.NOT.ASSOCIATED(solvers)) CALL FlagError("The solver solvers is not associated.",err,error,*999) EXITS("Solver_SolversGet") @@ -271,6 +279,45 @@ END SUBROUTINE Solver_SolversGet !================================================================================================================================ ! + !>Returns a pointer to the work group for a solver. FOR NOW JUST RETURN THE PROBLEM WORK GROUP. + SUBROUTINE Solver_WorkGroupGet(solver,workGroup,err,error,*) + + !Argument variables + TYPE(SOLVER_TYPE), POINTER :: solver !solvers%CONTROL_LOOP%problem%workGroup + IF(.NOT.ASSOCIATED(workGroup)) CALL FlagError("The solver work group is not associated.",err,error,*999) + + EXITS("Solver_WorkGroupGet") + RETURN +999 NULLIFY(workGroup) +998 ERRORSEXITS("Solver_WorkGroupGet",err,error) + RETURN 1 + + END SUBROUTINE Solver_WorkGroupGet + + ! + !================================================================================================================================ + ! + !>Returns a pointer to the control loop for a solvers. SUBROUTINE Solvers_ControlLoopGet(solvers,controlLoop,err,error,*) diff --git a/src/solver_mapping_access_routines.f90 b/src/solver_mapping_access_routines.f90 index f37debad..6eced2a4 100644 --- a/src/solver_mapping_access_routines.f90 +++ b/src/solver_mapping_access_routines.f90 @@ -45,6 +45,7 @@ MODULE SolverMappingAccessRoutines USE BaseRoutines + USE ISO_VARYING_STRING USE Kinds USE Strings USE Types diff --git a/src/solver_mapping_routines.f90 b/src/solver_mapping_routines.f90 index 4e680eae..e75ba54c 100755 --- a/src/solver_mapping_routines.f90 +++ b/src/solver_mapping_routines.f90 @@ -26,7 +26,7 @@ !> Auckland, the University of Oxford and King's College, London. !> All Rights Reserved. !> -!> Contributor(s): +!> Contributor(s): Chris Bradley !> !> Alternatively, the contents of this file may be used under the terms of !> either the GNU General Public License Version 2 or later (the "GPL"), or @@ -46,7 +46,8 @@ MODULE SOLVER_MAPPING_ROUTINES USE BaseRoutines USE BOUNDARY_CONDITIONS_ROUTINES - USE ComputationEnvironment + USE ComputationRoutines + USE ComputationAccessRoutines USE DistributedMatrixVector USE EquationsAccessRoutines USE DOMAIN_MAPPINGS @@ -61,6 +62,7 @@ MODULE SOLVER_MAPPING_ROUTINES USE Lists USE MatrixVector USE PROBLEM_CONSTANTS + USE SolverAccessRoutines USE SolverMappingAccessRoutines USE Strings USE Types @@ -139,7 +141,7 @@ SUBROUTINE SOLVER_MAPPING_CALCULATE(SOLVER_MAPPING,ERR,ERROR,*) & numberOfLinearMatrices,NUMBER_OF_LOCAL_SOLVER_DOFS,NUMBER_OF_LOCAL_SOLVER_ROWS,NUMBER_OF_RANK_COLS, & & NUMBER_OF_RANK_ROWS,NUMBER_OF_VARIABLES,rank,rank_idx,row_idx,ROW_LIST_ITEM(4),ROW_RANK,solver_global_dof, & & solver_matrix_idx,solver_variable_idx,TOTAL_NUMBER_OF_LOCAL_SOLVER_DOFS,variable_idx,variableIdx, & - & VARIABLE_LIST_ITEM(3),variable_position_idx,variable_type, & + & VARIABLE_LIST_ITEM(3),variable_position_idx,variable_type,numberOfGroupComputationNodes, & & numberRowEquationsRows,numberColEquationsCols,rowEquationsRowIdx,colEquationsColIdx, & & globalDofCouplingNumber,equationsRow,eqnLocalDof,numberOfEquationsRHSVariables,rhsVariableType,equationsSetIdx INTEGER(INTG) :: temp_offset, solver_variable_idx_temp @@ -153,6 +155,7 @@ SUBROUTINE SOLVER_MAPPING_CALCULATE(SOLVER_MAPPING,ERR,ERROR,*) LOGICAL, ALLOCATABLE :: VARIABLE_PROCESSED(:),VARIABLE_RANK_PROCESSED(:,:) TYPE(BOUNDARY_CONDITIONS_TYPE), POINTER :: BOUNDARY_CONDITIONS TYPE(BOUNDARY_CONDITIONS_VARIABLE_TYPE), POINTER :: BOUNDARY_CONDITIONS_VARIABLE + TYPE(CONTROL_LOOP_TYPE), POINTER :: controlLoop TYPE(DOMAIN_MAPPING_TYPE), POINTER :: COL_DOMAIN_MAPPING,COL_DOFS_MAPPING,ROW_DOMAIN_MAPPING,ROW_DOFS_MAPPING TYPE(EquationsType), POINTER :: equations TYPE(EquationsVectorType), POINTER :: vectorEquations @@ -176,6 +179,8 @@ SUBROUTINE SOLVER_MAPPING_CALCULATE(SOLVER_MAPPING,ERR,ERROR,*) TYPE(LIST_TYPE), POINTER :: EQUATIONS_SET_VARIABLE_LIST TYPE(LIST_PTR_TYPE), ALLOCATABLE :: INTERFACE_EQUATIONS_LISTS(:),RANK_GLOBAL_ROWS_LISTS(:,:), & & RANK_GLOBAL_COLS_LISTS(:,:,:,:),VARIABLES_LIST(:) + TYPE(PROBLEM_TYPE), POINTER :: problem + TYPE(SOLVER_TYPE), POINTER :: solver TYPE(SOLVER_EQUATIONS_TYPE), POINTER :: SOLVER_EQUATIONS TYPE(BoundaryConditionsDofConstraintsType), POINTER :: dofConstraints TYPE(BoundaryConditionsCoupledDofsType), POINTER :: rowEquationRows,colEquationCols @@ -183,6 +188,7 @@ SUBROUTINE SOLVER_MAPPING_CALCULATE(SOLVER_MAPPING,ERR,ERROR,*) TYPE(SolverMappingDofCouplingsType) :: rowCouplings TYPE(SolverMappingDofCouplingsType) :: columnCouplings TYPE(VARYING_STRING) :: LOCAL_ERROR + TYPE(WorkGroupType), POINTER :: workGroup ENTERS("SOLVER_MAPPING_CALCULATE",ERR,ERROR,*999) @@ -194,6 +200,10 @@ SUBROUTINE SOLVER_MAPPING_CALCULATE(SOLVER_MAPPING,ERR,ERROR,*) IF(.NOT.ASSOCIATED(BOUNDARY_CONDITIONS)) THEN CALL FlagError("The solver equations boundary conditions are not associated.",ERR,ERROR,*999) END IF + NULLIFY(solver) + CALL SolverEquations_SolverGet(SOLVER_EQUATIONS,solver,err,error,*999) + NULLIFY(workGroup) + CALL Solver_WorkGroupGet(solver,workGroup,err,error,*999) ! !--- Equations set <-> interface conditions --- @@ -319,7 +329,8 @@ SUBROUTINE SOLVER_MAPPING_CALCULATE(SOLVER_MAPPING,ERR,ERROR,*) ! for each rank. ! !Calculate the row mappings. - myrank=computationalEnvironment%myComputationalNodeNumber + CALL WorkGroup_NumberOfGroupNodesGet(workGroup,numberOfGroupComputationNodes,err,error,*999) + CALL WorkGroup_GroupNodeNumberGet(workGroup,myrank,err,error,*999) NUMBER_OF_GLOBAL_SOLVER_ROWS=0 NUMBER_OF_LOCAL_SOLVER_ROWS=0 !Add in the rows from any equations sets that have been added to the solver equations @@ -327,10 +338,10 @@ SUBROUTINE SOLVER_MAPPING_CALCULATE(SOLVER_MAPPING,ERR,ERROR,*) ! !Allocate and initialise the rank lists. ALLOCATE(RANK_GLOBAL_ROWS_LISTS(SOLVER_MAPPING%NUMBER_OF_EQUATIONS_SETS+SOLVER_MAPPING% & - & NUMBER_OF_INTERFACE_CONDITIONS,0:computationalEnvironment%numberOfComputationalNodes-1),STAT=ERR) + & NUMBER_OF_INTERFACE_CONDITIONS,0:numberOfGroupComputationNodes-1),STAT=ERR) IF(ERR/=0) CALL FlagError("Could not allocate rank global rows lists.",ERR,ERROR,*999) CALL SolverDofCouplings_Initialise(rowCouplings,err,error,*999) - DO rank=0,computationalEnvironment%numberOfComputationalNodes-1 + DO rank=0,numberOfGroupComputationNodes-1 equations_idx=0 DO equations_set_idx=1,SOLVER_MAPPING%NUMBER_OF_EQUATIONS_SETS equations_idx=equations_idx+1 @@ -346,8 +357,7 @@ SUBROUTINE SOLVER_MAPPING_CALCULATE(SOLVER_MAPPING,ERR,ERROR,*) CALL LIST_CREATE_START(RANK_GLOBAL_ROWS_LISTS(equations_idx,rank)%PTR,ERR,ERROR,*999) CALL LIST_DATA_TYPE_SET(RANK_GLOBAL_ROWS_LISTS(equations_idx,rank)%PTR,LIST_INTG_TYPE,ERR,ERROR,*999) CALL LIST_INITIAL_SIZE_SET(RANK_GLOBAL_ROWS_LISTS(equations_idx,rank)%PTR,INT(vectorMapping% & - & numberOfGlobalRows/computationalEnvironment%numberOfComputationalNodes,INTG), & - & ERR,ERROR,*999) + & numberOfGlobalRows/numberOfGroupComputationNodes,INTG),ERR,ERROR,*999) CALL LIST_DATA_DIMENSION_SET(RANK_GLOBAL_ROWS_LISTS(equations_idx,rank)%PTR,4,ERR,ERROR,*999) CALL LIST_KEY_DIMENSION_SET(RANK_GLOBAL_ROWS_LISTS(equations_idx,rank)%PTR,1,ERR,ERROR,*999) CALL LIST_CREATE_FINISH(RANK_GLOBAL_ROWS_LISTS(equations_idx,rank)%PTR,ERR,ERROR,*999) @@ -369,8 +379,7 @@ SUBROUTINE SOLVER_MAPPING_CALCULATE(SOLVER_MAPPING,ERR,ERROR,*) CALL LIST_CREATE_START(RANK_GLOBAL_ROWS_LISTS(equations_idx,rank)%PTR,ERR,ERROR,*999) CALL LIST_DATA_TYPE_SET(RANK_GLOBAL_ROWS_LISTS(equations_idx,rank)%PTR,LIST_INTG_TYPE,ERR,ERROR,*999) CALL LIST_INITIAL_SIZE_SET(RANK_GLOBAL_ROWS_LISTS(equations_idx,rank)%PTR, & - & INT(INTERFACE_MAPPING%NUMBER_OF_GLOBAL_COLUMNS/computationalEnvironment%numberOfComputationalNodes, & - & INTG),ERR,ERROR,*999) + & INT(INTERFACE_MAPPING%NUMBER_OF_GLOBAL_COLUMNS/numberOfGroupComputationNodes,INTG),ERR,ERROR,*999) CALL LIST_DATA_DIMENSION_SET(RANK_GLOBAL_ROWS_LISTS(equations_idx,rank)%PTR,4,ERR,ERROR,*999) CALL LIST_KEY_DIMENSION_SET(RANK_GLOBAL_ROWS_LISTS(equations_idx,rank)%PTR,1,ERR,ERROR,*999) CALL LIST_CREATE_FINISH(RANK_GLOBAL_ROWS_LISTS(equations_idx,rank)%PTR,ERR,ERROR,*999) @@ -676,8 +685,7 @@ SUBROUTINE SOLVER_MAPPING_CALCULATE(SOLVER_MAPPING,ERR,ERROR,*) ALLOCATE(SOLVER_MAPPING%ROW_DOFS_MAPPING,STAT=ERR) IF(ERR/=0) CALL FlagError("Could not allocate solver mapping row dofs mapping.",ERR,ERROR,*999) !!TODO: what is the real number of domains for a solver??? - CALL DOMAIN_MAPPINGS_MAPPING_INITIALISE(SOLVER_MAPPING%ROW_DOFS_MAPPING,computationalEnvironment% & - & numberOfComputationalNodes,ERR,ERROR,*999) + CALL DomainMappings_MappingInitialise(workGroup,SOLVER_MAPPING%ROW_DOFS_MAPPING,ERR,ERROR,*999) ROW_DOMAIN_MAPPING=>SOLVER_MAPPING%ROW_DOFS_MAPPING ALLOCATE(ROW_DOMAIN_MAPPING%GLOBAL_TO_LOCAL_MAP(NUMBER_OF_GLOBAL_SOLVER_ROWS),STAT=ERR) IF(ERR/=0) CALL FlagError("Could not allocate row dofs mapping global to local map.",ERR,ERROR,*999) @@ -788,7 +796,7 @@ SUBROUTINE SOLVER_MAPPING_CALCULATE(SOLVER_MAPPING,ERR,ERROR,*) IF(err/=0) CALL FlagError("Could not allocate dummy DOF coupling values.",err,error,*999) dummyDofCoupling%numberOfDofs=1 !Loop over the ranks to ensure that the lowest ranks have the lowest numbered solver variables - DO rank=0,computationalEnvironment%numberOfComputationalNodes-1 + DO rank=0,numberOfGroupComputationNodes-1 NUMBER_OF_LOCAL_SOLVER_ROWS=0 !Calculate the solver row <-> equations row & interface row mappings. @@ -1226,9 +1234,9 @@ SUBROUTINE SOLVER_MAPPING_CALCULATE(SOLVER_MAPPING,ERR,ERROR,*) !dof_type is 1 for domain local DOFs and 2 for ghost DOFs ALLOCATE(RANK_GLOBAL_COLS_LISTS(2,SOLVER_MAPPING%NUMBER_OF_EQUATIONS_SETS+SOLVER_MAPPING% & & NUMBER_OF_INTERFACE_CONDITIONS,SOLVER_MAPPING%VARIABLES_LIST(solver_matrix_idx)%NUMBER_OF_VARIABLES, & - & 0:computationalEnvironment%numberOfComputationalNodes-1),STAT=ERR) + & 0:numberOfGroupComputationNodes-1),STAT=ERR) IF(ERR/=0) CALL FlagError("Could not allocate rank global columns lists.",ERR,ERROR,*999) - DO rank=0,computationalEnvironment%numberOfComputationalNodes-1 + DO rank=0,numberOfGroupComputationNodes-1 DO solver_variable_idx=1,SOLVER_MAPPING%VARIABLES_LIST(solver_matrix_idx)%NUMBER_OF_VARIABLES DO equations_idx=1,SOLVER_MAPPING%NUMBER_OF_EQUATIONS_SETS+SOLVER_MAPPING%NUMBER_OF_INTERFACE_CONDITIONS DO dof_type=1,2 @@ -1869,14 +1877,14 @@ SUBROUTINE SOLVER_MAPPING_CALCULATE(SOLVER_MAPPING,ERR,ERROR,*) ALLOCATE(SOLVER_MAPPING%SOLVER_COL_TO_EQUATIONS_COLS_MAP(solver_matrix_idx)%COLUMN_DOFS_MAPPING,STAT=ERR) IF(ERR/=0) CALL FlagError("Could not allocate solver col to equations sets map column dofs mapping.",ERR,ERROR,*999) !!TODO: what is the real number of domains for a solver??? - CALL DOMAIN_MAPPINGS_MAPPING_INITIALISE(SOLVER_MAPPING%SOLVER_COL_TO_EQUATIONS_COLS_MAP(solver_matrix_idx)% & - & COLUMN_DOFS_MAPPING,computationalEnvironment%numberOfComputationalNodes,ERR,ERROR,*999) + CALL DomainMappings_MappingInitialise (workGroup,SOLVER_MAPPING%SOLVER_COL_TO_EQUATIONS_COLS_MAP(solver_matrix_idx)% & + & COLUMN_DOFS_MAPPING,ERR,ERROR,*999) COL_DOMAIN_MAPPING=>SOLVER_MAPPING%SOLVER_COL_TO_EQUATIONS_COLS_MAP(solver_matrix_idx)%COLUMN_DOFS_MAPPING ALLOCATE(COL_DOMAIN_MAPPING%GLOBAL_TO_LOCAL_MAP(NUMBER_OF_GLOBAL_SOLVER_DOFS),STAT=ERR) IF(ERR/=0) CALL FlagError("Could not allocate column dofs mapping global to local.",ERR,ERROR,*999) COL_DOMAIN_MAPPING%NUMBER_OF_GLOBAL=NUMBER_OF_GLOBAL_SOLVER_DOFS ALLOCATE(VARIABLE_RANK_PROCESSED(SOLVER_MAPPING%VARIABLES_LIST(solver_matrix_idx)%NUMBER_OF_VARIABLES, & - & 0:computationalEnvironment%numberOfComputationalNodes-1),STAT=ERR) + & 0:numberOfGroupComputationNodes-1),STAT=ERR) IF(ERR/=0) CALL FlagError("Could not allocate variable rank processed.",ERR,ERROR,*999) VARIABLE_RANK_PROCESSED=.FALSE. !Calculate the column mappings @@ -2260,7 +2268,7 @@ SUBROUTINE SOLVER_MAPPING_CALCULATE(SOLVER_MAPPING,ERR,ERROR,*) DOF_MAP(solver_variable_idx)%PTR=0 ENDDO !solver_variable_idx - ALLOCATE(solver_local_dof(0:computationalEnvironment%numberOfComputationalNodes-1),STAT=ERR) + ALLOCATE(solver_local_dof(0:numberOfGroupComputationNodes-1),STAT=ERR) IF(ERR/=0) CALL FlagError("Could not allocate solver local dof array.",ERR,ERROR,*999) ! @@ -2271,7 +2279,7 @@ SUBROUTINE SOLVER_MAPPING_CALCULATE(SOLVER_MAPPING,ERR,ERROR,*) solver_global_dof=0 solver_local_dof=0 DO dof_type=1,2 - DO rank=0,computationalEnvironment%numberOfComputationalNodes-1 + DO rank=0,numberOfGroupComputationNodes-1 DO solver_variable_idx=1,SOLVER_MAPPING%VARIABLES_LIST(solver_matrix_idx)%NUMBER_OF_VARIABLES diff --git a/src/solver_matrices_access_routines.f90 b/src/solver_matrices_access_routines.f90 index 06d0de48..843468c6 100644 --- a/src/solver_matrices_access_routines.f90 +++ b/src/solver_matrices_access_routines.f90 @@ -45,6 +45,7 @@ MODULE SolverMatricesAccessRoutines USE BaseRoutines + USE ISO_VARYING_STRING USE Kinds USE Strings USE Types diff --git a/src/solver_routines.f90 b/src/solver_routines.f90 index 82924d39..1b0b1151 100644 --- a/src/solver_routines.f90 +++ b/src/solver_routines.f90 @@ -26,7 +26,7 @@ !> Auckland, the University of Oxford and King's College, London. !> All Rights Reserved. !> -!> Contributor(s): +!> Contributor(s): Chris Bradley !> !> Alternatively, the contents of this file may be used under the terms of !> either the GNU General Public License Version 2 or later (the "GPL"), or @@ -52,7 +52,8 @@ MODULE SOLVER_ROUTINES USE CMISS_CELLML USE CmissPetsc USE CmissPetscTypes - USE ComputationEnvironment + USE ComputationRoutines + USE ComputationAccessRoutines USE Constants USE DistributedMatrixVector USE EquationsAccessRoutines @@ -9214,6 +9215,7 @@ SUBROUTINE SOLVER_INITIALISE_PTR(SOLVER,ERR,ERROR,*) NULLIFY(SOLVER%SOLVER_EQUATIONS) NULLIFY(SOLVER%CELLML_EQUATIONS) NULLIFY(SOLVER%geometricTransformationSolver) + NULLIFY(solver%workGroup) ELSE CALL FlagError("Solver is not associated.",ERR,ERROR,*999) ENDIF @@ -9733,12 +9735,14 @@ SUBROUTINE SOLVER_LINEAR_DIRECT_CREATE_FINISH(LINEAR_DIRECT_SOLVER,ERR,ERROR,*) INTEGER(INTG), INTENT(OUT) :: ERR !LINEAR_SOLVER%SOLVER IF(ASSOCIATED(SOLVER)) THEN + NULLIFY(workGroup) + CALL Solver_WorkGroupGet(solver,workGroup,err,error,*999) + CALL WorkGroup_GroupCommunicatorGet(workGroup,groupCommunicator,err,error,*999) SELECT CASE(LINEAR_DIRECT_SOLVER%DIRECT_SOLVER_TYPE) CASE(SOLVER_DIRECT_LU) IF(ASSOCIATED(SOLVER%LINKING_SOLVER)) THEN @@ -9809,7 +9816,7 @@ SUBROUTINE SOLVER_LINEAR_DIRECT_CREATE_FINISH(LINEAR_DIRECT_SOLVER,ERR,ERROR,*) !Nothing else to do CASE(SOLVER_MUMPS_LIBRARY,SOLVER_SUPERLU_LIBRARY,SOLVER_PASTIX_LIBRARY,SOLVER_LAPACK_LIBRARY) !Set up solver through PETSc - CALL Petsc_KSPCreate(computationalEnvironment%mpiCommunicator,LINEAR_DIRECT_SOLVER%KSP,ERR,ERROR,*999) + CALL Petsc_KSPCreate(groupCommunicator,LINEAR_DIRECT_SOLVER%KSP,ERR,ERROR,*999) !Set any further KSP options from the command line options CALL Petsc_KSPSetFromOptions(LINEAR_DIRECT_SOLVER%KSP,ERR,ERROR,*999) @@ -10925,6 +10932,7 @@ SUBROUTINE SOLVER_LINEAR_ITERATIVE_CREATE_FINISH(LINEAR_ITERATIVE_SOLVER,ERR,ERR INTEGER(INTG), INTENT(OUT) :: ERR !LINEAR_SOLVER%SOLVER IF(ASSOCIATED(SOLVER)) THEN + NULLIFY(workGroup) + CALL Solver_WorkGroupGet(solver,workGroup,err,error,*999) + CALL WorkGroup_GroupCommunicatorGet(workGroup,groupCommunicator,err,error,*999) !Should really check iterative types here and then the solver library but as they are all PETSc for now hold off. SELECT CASE(LINEAR_ITERATIVE_SOLVER%SOLVER_LIBRARY) CASE(SOLVER_CMISS_LIBRARY) @@ -11062,7 +11074,7 @@ SUBROUTINE SOLVER_LINEAR_ITERATIVE_CREATE_FINISH(LINEAR_ITERATIVE_SOLVER,ERR,ERR CALL FlagError("Solver linking solve is not associated.",ERR,ERROR,*999) ENDIF ELSE - CALL Petsc_KSPCreate(computationalEnvironment%mpiCommunicator,LINEAR_ITERATIVE_SOLVER%KSP,ERR,ERROR,*999) + CALL Petsc_KSPCreate(groupCommunicator,LINEAR_ITERATIVE_SOLVER%KSP,ERR,ERROR,*999) ENDIF !Set the iterative solver type SELECT CASE(LINEAR_ITERATIVE_SOLVER%ITERATIVE_SOLVER_TYPE) @@ -15719,7 +15731,7 @@ SUBROUTINE Solver_QuasiNewtonLinesearchCreateFinish(LINESEARCH_SOLVER,ERR,ERROR, EXTERNAL :: Problem_SolverResidualEvaluatePetsc EXTERNAL :: Problem_SolverConvergenceTestPetsc EXTERNAL :: Problem_SolverNonlinearMonitorPETSC - INTEGER(INTG) :: equations_matrix_idx,equations_set_idx,interface_condition_idx,interface_matrix_idx + INTEGER(INTG) :: equations_matrix_idx,equations_set_idx,interface_condition_idx,interface_matrix_idx,groupCommunicator TYPE(DistributedMatrixType), POINTER :: JACOBIAN_MATRIX TYPE(DistributedVectorType), POINTER :: RESIDUAL_VECTOR TYPE(EquationsType), POINTER :: equations @@ -15744,8 +15756,8 @@ SUBROUTINE Solver_QuasiNewtonLinesearchCreateFinish(LINESEARCH_SOLVER,ERR,ERROR, TYPE(INTERFACE_MAPPING_TYPE), POINTER :: INTERFACE_MAPPING TYPE(INTERFACE_MATRICES_TYPE), POINTER :: INTERFACE_MATRICES TYPE(INTERFACE_MATRIX_TYPE), POINTER :: INTERFACE_MATRIX - TYPE(VARYING_STRING) :: LOCAL_ERROR + TYPE(WorkGroupType), POINTER :: workGroup ENTERS("Solver_QuasiNewtonLinesearchCreateFinish",ERR,ERROR,*999) @@ -15756,6 +15768,9 @@ SUBROUTINE Solver_QuasiNewtonLinesearchCreateFinish(LINESEARCH_SOLVER,ERR,ERROR, IF(ASSOCIATED(NONLINEAR_SOLVER)) THEN SOLVER=>NONLINEAR_SOLVER%SOLVER IF(ASSOCIATED(SOLVER)) THEN + NULLIFY(workGroup) + CALL Solver_WorkGroupGet(solver,workGroup,err,error,*999) + CALL WorkGroup_GroupCommunicatorGet(workGroup,groupCommunicator,err,error,*999) SOLVER_EQUATIONS=>SOLVER%SOLVER_EQUATIONS IF(ASSOCIATED(SOLVER_EQUATIONS)) THEN SELECT CASE(LINESEARCH_SOLVER%SOLVER_LIBRARY) @@ -15897,7 +15912,7 @@ SUBROUTINE Solver_QuasiNewtonLinesearchCreateFinish(LINESEARCH_SOLVER,ERR,ERROR, ENDIF ENDDO !interface_idx !Create the PETSc SNES solver - CALL Petsc_SnesCreate(computationalEnvironment%mpiCommunicator,LINESEARCH_SOLVER%snes,ERR,ERROR,*999) + CALL Petsc_SnesCreate(groupCommunicator,LINESEARCH_SOLVER%snes,ERR,ERROR,*999) !Set the nonlinear solver type to be a Quasi-Newton line search solver CALL Petsc_SnesSetType(LINESEARCH_SOLVER%snes,PETSC_SNESQN,ERR,ERROR,*999) !Following routines don't work for petsc version < 3.5. @@ -16960,7 +16975,7 @@ SUBROUTINE Solver_QuasiNewtonTrustRegionCreateFinish(TRUSTREGION_SOLVER,ERR,ERRO TYPE(VARYING_STRING), INTENT(OUT) :: ERROR !NONLINEAR_SOLVER%SOLVER IF(ASSOCIATED(SOLVER)) THEN + NULLIFY(workGroup) + CALL Solver_WorkGroupGet(solver,workGroup,err,error,*999) + CALL WorkGroup_GroupCommunicatorGet(workGroup,groupCommunicator,err,error,*999) SOLVER_EQUATIONS=>SOLVER%SOLVER_EQUATIONS IF(ASSOCIATED(SOLVER_EQUATIONS)) THEN SELECT CASE(TRUSTREGION_SOLVER%SOLVER_LIBRARY) @@ -17079,7 +17098,7 @@ SUBROUTINE Solver_QuasiNewtonTrustRegionCreateFinish(TRUSTREGION_SOLVER,ERR,ERRO END SELECT CALL SOLVER_MATRICES_CREATE_FINISH(SOLVER_MATRICES,ERR,ERROR,*999) !Create the PETSc SNES solver - CALL Petsc_SnesCreate(computationalEnvironment%mpiCommunicator,TRUSTREGION_SOLVER%snes,ERR,ERROR,*999) + CALL Petsc_SnesCreate(groupCommunicator,TRUSTREGION_SOLVER%snes,ERR,ERROR,*999) !Set the nonlinear solver type to be a Quasi-Newton trust region solver CALL Petsc_SnesSetType(TRUSTREGION_SOLVER%snes,PETSC_SNESNEWTONTR,ERR,ERROR,*999) !Set the nonlinear function @@ -18493,7 +18512,7 @@ SUBROUTINE SOLVER_NEWTON_LINESEARCH_CREATE_FINISH(LINESEARCH_SOLVER,ERR,ERROR,*) EXTERNAL :: Problem_SolverResidualEvaluatePetsc EXTERNAL :: Problem_SolverConvergenceTestPetsc EXTERNAL :: Problem_SolverNonlinearMonitorPetsc - INTEGER(INTG) :: equations_matrix_idx,equations_set_idx,interface_condition_idx,interface_matrix_idx + INTEGER(INTG) :: equations_matrix_idx,equations_set_idx,interface_condition_idx,interface_matrix_idx,groupCommunicator TYPE(DistributedMatrixType), POINTER :: JACOBIAN_MATRIX TYPE(DistributedVectorType), POINTER :: RESIDUAL_VECTOR TYPE(EquationsType), POINTER :: equations @@ -18518,8 +18537,8 @@ SUBROUTINE SOLVER_NEWTON_LINESEARCH_CREATE_FINISH(LINESEARCH_SOLVER,ERR,ERROR,*) TYPE(INTERFACE_MAPPING_TYPE), POINTER :: INTERFACE_MAPPING TYPE(INTERFACE_MATRICES_TYPE), POINTER :: INTERFACE_MATRICES TYPE(INTERFACE_MATRIX_TYPE), POINTER :: INTERFACE_MATRIX - TYPE(VARYING_STRING) :: LOCAL_ERROR + TYPE(WorkGroupType), POINTER :: workGroup ENTERS("SOLVER_NEWTON_LINESEARCH_CREATE_FINISH",ERR,ERROR,*999) @@ -18530,6 +18549,9 @@ SUBROUTINE SOLVER_NEWTON_LINESEARCH_CREATE_FINISH(LINESEARCH_SOLVER,ERR,ERROR,*) IF(ASSOCIATED(NONLINEAR_SOLVER)) THEN SOLVER=>NONLINEAR_SOLVER%SOLVER IF(ASSOCIATED(SOLVER)) THEN + NULLIFY(workGroup) + CALL Solver_WorkGroupGet(solver,workGroup,err,error,*999) + CALL WorkGroup_GroupCommunicatorGet(workGroup,groupCommunicator,err,error,*999) SOLVER_EQUATIONS=>SOLVER%SOLVER_EQUATIONS IF(ASSOCIATED(SOLVER_EQUATIONS)) THEN SELECT CASE(LINESEARCH_SOLVER%SOLVER_LIBRARY) @@ -18671,7 +18693,7 @@ SUBROUTINE SOLVER_NEWTON_LINESEARCH_CREATE_FINISH(LINESEARCH_SOLVER,ERR,ERROR,*) ENDIF ENDDO !interface_idx !Create the PETSc SNES solver - CALL Petsc_SnesCreate(computationalEnvironment%mpiCommunicator,LINESEARCH_SOLVER%snes,ERR,ERROR,*999) + CALL Petsc_SnesCreate(groupCommunicator,LINESEARCH_SOLVER%snes,ERR,ERROR,*999) !Set the nonlinear solver type to be a Newton line search solver CALL Petsc_SnesSetType(LINESEARCH_SOLVER%snes,PETSC_SNESNEWTONLS,ERR,ERROR,*999) @@ -19717,7 +19739,7 @@ SUBROUTINE SOLVER_NEWTON_TRUSTREGION_CREATE_FINISH(TRUSTREGION_SOLVER,ERR,ERROR, TYPE(VARYING_STRING), INTENT(OUT) :: ERROR !NONLINEAR_SOLVER%SOLVER IF(ASSOCIATED(SOLVER)) THEN + NULLIFY(workGroup) + CALL Solver_WorkGroupGet(solver,workGroup,err,error,*999) + CALL WorkGroup_GroupCommunicatorGet(workGroup,groupCommunicator,err,error,*999) SOLVER_EQUATIONS=>SOLVER%SOLVER_EQUATIONS IF(ASSOCIATED(SOLVER_EQUATIONS)) THEN SELECT CASE(TRUSTREGION_SOLVER%SOLVER_LIBRARY) @@ -19836,7 +19862,7 @@ SUBROUTINE SOLVER_NEWTON_TRUSTREGION_CREATE_FINISH(TRUSTREGION_SOLVER,ERR,ERROR, END SELECT CALL SOLVER_MATRICES_CREATE_FINISH(SOLVER_MATRICES,ERR,ERROR,*999) !Create the PETSc SNES solver - CALL Petsc_SnesCreate(computationalEnvironment%mpiCommunicator,TRUSTREGION_SOLVER%snes,ERR,ERROR,*999) + CALL Petsc_SnesCreate(groupCommunicator,TRUSTREGION_SOLVER%snes,ERR,ERROR,*999) !Set the nonlinear solver type to be a Newton trust region solver CALL Petsc_SnesSetType(TRUSTREGION_SOLVER%snes,PETSC_SNESNEWTONTR,ERR,ERROR,*999) !Set the solver as the SNES application context diff --git a/src/stree_equation_routines.f90 b/src/stree_equation_routines.f90 index dc2f62fa..5ce46012 100644 --- a/src/stree_equation_routines.f90 +++ b/src/stree_equation_routines.f90 @@ -54,7 +54,8 @@ MODULE Stree_EQUATION_ROUTINES USE Constants USE CONTROL_LOOP_ROUTINES USE CmissMPI - USE ComputationEnvironment + USE ComputationRoutines + USE ComputationAccessRoutines USE COORDINATE_ROUTINES USE DistributedMatrixVector USE DOMAIN_MAPPINGS @@ -74,7 +75,6 @@ MODULE Stree_EQUATION_ROUTINES USE Maths USE MatrixVector USE MESH_ROUTINES - USE NODE_ROUTINES USE PROBLEM_CONSTANTS USE Strings USE SOLVER_ROUTINES diff --git a/src/types.f90 b/src/types.f90 index f40a2c50..297cbfef 100644 --- a/src/types.f90 +++ b/src/types.f90 @@ -26,7 +26,7 @@ !> Auckland, the University of Oxford and King's College, London. !> All Rights Reserved. !> -!> Contributor(s): +!> Contributor(s): Chris Bradley !> !> Alternatively, the contents of this file may be used under the terms of !> either the GNU General Public License Version 2 or later (the "GPL"), or @@ -69,18 +69,28 @@ !> This module contains all type definitions in order to avoid cyclic module references. MODULE Types - USE CmissPetscTypes, ONLY : PetscISColoringType,PetscKspType,PetscMatType,PetscMatColoringType,PetscMatFDColoringType, & + USE CMISSPETScTypes, ONLY : PetscISColoringType,PetscKspType,PetscMatType,PetscMatColoringType,PetscMatFDColoringType, & & PetscPCType,PetscSnesType,PetscSnesLineSearchType,PetscTaoType,PetscVecType USE Constants USE Kinds USE ISO_C_BINDING USE ISO_VARYING_STRING +#ifndef NOMPIMOD + USE MPI +#endif USE Trees use linkedlist_routines IMPLICIT NONE - ! + PRIVATE + +#ifdef NOMPIMOD +#include "mpif.h" +#endif + + + ! !================================================================================================================================ ! ! Base types @@ -98,7 +108,9 @@ MODULE Types INTEGER(C_INT), ALLOCATABLE :: ARRAY(:) END TYPE INTEGER_CINT_ALLOC_TYPE - ! + PUBLIC REAL_DP_PTR_TYPE,INTEGER_INTG_PTR_TYPE,INTEGER_CINT_ALLOC_TYPE + + ! !================================================================================================================================ ! ! List types @@ -130,6 +142,8 @@ MODULE Types INTEGER(C_INT), ALLOCATABLE :: LIST_C_INT(:) ! 1) for integer lists. END TYPE LIST_TYPE + + PUBLIC LIST_PTR_TYPE,LIST_TYPE ! !================================================================================================================================ @@ -137,7 +151,7 @@ MODULE Types ! Quadrature types ! - !>Contains information for a particular quadrature scheme. \see OPENCMISS::Iron::cmfe_QuadratureSchemeType \todo Also evaluate the product of the basis functions at gauss points for speed??? + !>Contains information for a particular quadrature scheme. \see OpenCMISS::Iron::cmfe_QuadratureSchemeType \todo Also evaluate the product of the basis functions at gauss points for speed??? TYPE QUADRATURE_SCHEME_TYPE INTEGER(INTG) :: GLOBAL_NUMBER !Contains information on the quadrature to be used for integrating a basis. \see OPENCMISS::Iron::cmfe_QuadratureType + !>Contains information on the quadrature to be used for integrating a basis. \see OpenCMISS::Iron::cmfe_QuadratureType TYPE QUADRATURE_TYPE INTEGER(INTG) :: TYPE !Contains information on the defined basis functions - TYPE BASIS_FUNCTIONS_TYPE + TYPE BasisFunctionsType + TYPE(ContextType), POINTER :: context !Contains information on a coordinate system. \todo Have a list of coordinate systems and have a pointer in the coordinate_system_type back to the regions that use them. - TYPE, BIND(C) :: COORDINATE_SYSTEM_TYPE + TYPE COORDINATE_SYSTEM_TYPE INTEGER(INTG) :: USER_NUMBER !Contains information on the list of coordinate systems TYPE CoordinateSystemsType + TYPE(ContextType), POINTER :: context !Contains information on the data points defined on a region. \see OPENCMISS::Iron::cmfe_DataPointsType + !>Contains information on the data points defined on a region. \see OpenCMISS::Iron::cmfe_DataPointsType TYPE DataPointsType INTEGER(INTG) :: globalNumber !Contains information about a node. - TYPE NODE_TYPE - INTEGER(INTG) :: GLOBAL_NUMBER !Contains information on the nodes defined on a region. \see OPENCMISS::Iron::cmfe_NodesType - TYPE NODES_TYPE - TYPE(REGION_TYPE), POINTER :: REGION !Contains information on the nodes defined on a region. \see OpenCMISS::Iron::cmfe_NodesType + TYPE NodesType + TYPE(REGION_TYPE), POINTER :: region !Contains information on a mesh defined on a region. \see OPENCMISS::Iron::cmfe_MeshType + !>Contains information on a mesh defined on a region. \see OpenCMISS::Iron::cmfe_MeshType TYPE MESH_TYPE INTEGER(INTG) :: USER_NUMBER !Contains information on a generated mesh. \see OPENCMISS::Iron::cmfe_GeneratedMeshType + !>Contains information on a generated mesh. \see OpenCMISS::Iron::cmfe_GeneratedMeshType TYPE GENERATED_MESH_TYPE INTEGER(INTG) :: USER_NUMBER !Contains information on the domain mappings (i.e., local and global numberings). TYPE DOMAIN_MAPPING_TYPE + TYPE(WorkGroupType), POINTER :: workGroup !Contains information on the mesh decomposition. \see OPENCMISS::Iron::cmfe_DecompositionType + !>Contains information on the mesh decomposition. \see OpenCMISS::Iron::cmfe_DecompositionType TYPE DECOMPOSITION_TYPE INTEGER(INTG) :: USER_NUMBER !Contains information for a field defined on a region. \see OPENCMISS::Iron::cmfe_FieldType + !>Contains information for a field defined on a region. \see OpenCMISS::Iron::cmfe_FieldType TYPE FIELD_TYPE INTEGER(INTG) :: GLOBAL_NUMBER !Contains the information about the mapping of a variable DOF to an equations matrix column - TYPE varToEquationsColumnMapType + TYPE VarToEquationsColumnMapType INTEGER(INTG), ALLOCATABLE :: columnDOF(:) !Contains the mapping for a dependent variable type to the equations matrices - TYPE varToEquationsMatricesMapType + TYPE VarToEquationsMatricesMapType INTEGER(INTG) :: variableIndex !Contains information for mapping an equations matrix to a field variable. TYPE EquationsMatrixToVarMapType @@ -1915,6 +2068,42 @@ MODULE Types !Create values cache TYPE(EquationsMappingVectorCreateValuesCacheType), POINTER :: createValuesCache !Contains information about the equations in an equations set. \see OPENCMISS::Iron::cmfe_EquationsType + !>Contains information about the equations in an equations set. \see OpenCMISS::Iron::cmfe_EquationsType TYPE EquationsType TYPE(EQUATIONS_SET_TYPE), POINTER :: equationsSet !Contains information on the boundary conditions for the solver equations. \see OPENCMISS::Iron::cmfe_BoundaryConditionsType + !>Contains information on the boundary conditions for the solver equations. \see OpenCMISS::Iron::cmfe_BoundaryConditionsType TYPE BOUNDARY_CONDITIONS_TYPE TYPE(SOLVER_EQUATIONS_TYPE), POINTER :: SOLVER_EQUATIONS !Contains information on an equations set. \see OPENCMISS::Iron::cmfe_EquationsSetType + !>Contains information on an equations set. \see OpenCMISS::Iron::cmfe_EquationsSetType TYPE EQUATIONS_SET_TYPE INTEGER(INTG) :: USER_NUMBER !Contains information about the solver equations for a solver. \see OPENCMISS::Iron::cmfe_SolverEquationsType + !>Contains information about the solver equations for a solver. \see OpenCMISS::Iron::cmfe_SolverEquationsType TYPE SOLVER_EQUATIONS_TYPE TYPE(SOLVER_TYPE), POINTER :: SOLVER !Contains information on the type of solver to be used. \see OPENCMISS::Iron::cmfe_SolverType + !>Contains information on the type of solver to be used. \see OpenCMISS::Iron::cmfe_SolverType TYPE SOLVER_TYPE TYPE(SOLVERS_TYPE), POINTER :: SOLVERS !Contains information on the solvers to be used in a control loop @@ -3062,6 +3365,34 @@ MODULE Types INTEGER(INTG) :: NUMBER_OF_SOLVERS !Contains information about a history file for a control loop. \see OPENCMISS::Iron::cmfe_HistoryType + !>Contains information about a history file for a control loop. \see OpenCMISS::Iron::cmfe_HistoryType TYPE HISTORY_TYPE TYPE(CONTROL_LOOP_TYPE), POINTER :: CONTROL_LOOP !Contains information on a control loop. \see OPENCMISS::Iron::cmfe_ControlLoopType + !>Contains information on a control loop. \see OpenCMISS::Iron::cmfe_ControlLoopType TYPE CONTROL_LOOP_TYPE TYPE(PROBLEM_TYPE), POINTER :: PROBLEM !Contains information for a problem. \see OPENCMISS::Iron::cmfe_ProblemType + !>Contains information for a problem. \see OpenCMISS::Iron::cmfe_ProblemType TYPE PROBLEM_TYPE INTEGER(INTG) :: USER_NUMBER !Contains information on the problems defined. - TYPE PROBLEMS_TYPE - INTEGER(INTG) :: NUMBER_OF_PROBLEMS !Contains information for a region. \see OPENCMISS::Iron::cmfe_RegionType + !>Contains information for a region. \see OpenCMISS::Iron::cmfe_RegionType TYPE REGION_TYPE INTEGER(INTG) :: USER_NUMBER !Contains information about the regions - TYPE REGIONS_TYPE - TYPE(REGION_TYPE), POINTER :: WORLD_REGION !Pointer type to WorkGroupType + TYPE WorkGroupPtrType + TYPE(WorkGroupType), POINTER :: ptr + END TYPE WorkGroupPtrType + + !>Contains information on logical working groups + TYPE WorkGroupType + INTEGER(INTG) :: userNumber !Contains information on a cache heirarchy + TYPE ComputationCacheType + INTEGER(INTG) :: numberOfLevels !Contains information on a computation node containing a number of processors + TYPE ComputationNodeType + INTEGER(INTG) :: numberOfProcessors !Contains information on the MPI type to transfer information about a computation node + TYPE MPIComputationNodeType + INTEGER(INTG) :: mpiType !Contains information on the computation environment the program is running in. + TYPE ComputationEnvironmentType + TYPE(ContextType), POINTER :: context !Contains information on the OpenCMISS context that contains all base level objects + TYPE ContextType + INTEGER(INTG) :: userNumber !A buffer type to allow for an array of pointers to a ContexType \see OpenCMISS::Types::ContexTypes + TYPE ContextPtrType + TYPE(ContextType), POINTER :: ptr !Contains information on the OpenCMISS contexts. + TYPE ContextsType + INTEGER(INTG) :: numberOfContexts ! Implements various dynamic array routines MODULE UTIL_ARRAY USE BaseRoutines - USE TYPES + USE ISO_VARYING_STRING + USE Kinds + USE Types #include "macros.h" diff --git a/tests/CellML/CellMLModelIntegration.f90 b/tests/CellML/CellMLModelIntegration.f90 index ac232e4b..90ab59c2 100644 --- a/tests/CellML/CellMLModelIntegration.f90 +++ b/tests/CellML/CellMLModelIntegration.f90 @@ -48,7 +48,7 @@ !< !> Main program -PROGRAM CELLMLINTEGRATIONFORTRANEXAMPLE +PROGRAM CellMLIntegrationFortranExample USE OpenCMISS USE OpenCMISS_Iron @@ -124,8 +124,10 @@ PROGRAM CELLMLINTEGRATIONFORTRANEXAMPLE TYPE(cmfe_BoundaryConditionsType) :: BoundaryConditions TYPE(cmfe_CellMLType) :: CellML TYPE(cmfe_CellMLEquationsType) :: CellMLEquations + TYPE(cmfe_ComputationEnvironmentType) :: ComputationEnvironment + TYPE(cmfe_ContextType) :: context TYPE(cmfe_ControlLoopType) :: ControlLoop - TYPE(cmfe_CoordinateSystemType) :: CoordinateSystem,WorldCoordinateSystem + TYPE(cmfe_CoordinateSystemType) :: CoordinateSystem TYPE(cmfe_DecompositionType) :: Decomposition TYPE(cmfe_EquationsType) :: Equations TYPE(cmfe_EquationsSetType) :: EquationsSet @@ -141,7 +143,7 @@ PROGRAM CELLMLINTEGRATIONFORTRANEXAMPLE !Generic CMISS variables - INTEGER(CMISSIntg) :: NumberOfComputationalNodes,ComputationalNodeNumber + INTEGER(CMISSIntg) :: NumberOfComputationNodes,ComputationNodeNumber INTEGER(CMISSIntg) :: EquationsSetIndex,CellMLIndex INTEGER(CMISSIntg) :: FirstNodeNumber,LastNodeNumber INTEGER(CMISSIntg) :: FirstNodeDomain,LastNodeDomain,NodeDomain @@ -183,17 +185,22 @@ PROGRAM CELLMLINTEGRATIONFORTRANEXAMPLE ! ENDIF !Intialise OpenCMISS - CALL cmfe_Initialise(WorldCoordinateSystem,WorldRegion,Err) + CALL cmfe_Context_Initialise(context,err) + CALL cmfe_Initialise(context,Err) + CALL cmfe_Region_Initialise(worldRegion,err) + CALL cmfe_Context_WorldRegionGet(context,worldRegion,err) !Trap errors CALL cmfe_ErrorHandlingModeSet(CMFE_ERRORS_TRAP_ERROR,Err) - !Get the computational nodes information - CALL cmfe_ComputationalNumberOfNodesGet(NumberOfComputationalNodes,Err) - CALL cmfe_ComputationalNodeNumberGet(ComputationalNodeNumber,Err) - -! IF (NumberOfComputationalNodes .gt. 2) -! WRITE(*,'(">>NOTE: ",A)') "It doesn't make any sense to use more than 2 computational nodes for this example?" + !Get the computation nodes information + CALL cmfe_ComputationEnvironment_Initialise(ComputationEnvironment,Err) + CALL cmfe_Context_ComputationEnvironmentGet(context,computationEnvironment,err) + CALL cmfe_ComputationEnvironment_NumberOfWorldNodesGet(ComputationEnvironment,NumberOfComputationNodes,Err) + CALL cmfe_ComputationEnvironment_WorldNodeNumberGet(ComputationEnvironment,ComputationNodeNumber,Err) + +! IF (NumberOfComputationNodes .gt. 2) +! WRITE(*,'(">>NOTE: ",A)') "It doesn't make any sense to use more than 2 computation nodes for this example?" ! STOP ! ENDIF @@ -205,7 +212,7 @@ PROGRAM CELLMLINTEGRATIONFORTRANEXAMPLE !Start the creation of a new RC coordinate system CALL cmfe_CoordinateSystem_Initialise(CoordinateSystem,Err) - CALL cmfe_CoordinateSystem_CreateStart(CoordinateSystemUserNumber,CoordinateSystem,Err) + CALL cmfe_CoordinateSystem_CreateStart(CoordinateSystemUserNumber,context,CoordinateSystem,Err) !Set the coordinate system to be 1D CALL cmfe_CoordinateSystem_DimensionSet(CoordinateSystem,1,Err) !Finish the creation of the coordinate system @@ -223,7 +230,7 @@ PROGRAM CELLMLINTEGRATIONFORTRANEXAMPLE !Start the creation of a basis (default is trilinear lagrange) CALL cmfe_Basis_Initialise(Basis,Err) - CALL cmfe_Basis_CreateStart(BasisUserNumber,Basis,Err) + CALL cmfe_Basis_CreateStart(BasisUserNumber,context,Basis,Err) !Set the basis to be a bilinear Lagrange basis CALL cmfe_Basis_NumberOfXiSet(Basis,1,Err) !Finish the creation of the basis @@ -248,7 +255,7 @@ PROGRAM CELLMLINTEGRATIONFORTRANEXAMPLE CALL cmfe_Decomposition_CreateStart(DecompositionUserNumber,Mesh,Decomposition,Err) !Set the decomposition to be a general decomposition with the specified number of domains CALL cmfe_Decomposition_TypeSet(Decomposition,CMFE_DECOMPOSITION_CALCULATED_TYPE,Err) - CALL cmfe_Decomposition_NumberOfDomainsSet(Decomposition,NumberOfComputationalNodes,Err) + CALL cmfe_Decomposition_NumberOfDomainsSet(Decomposition,NumberOfComputationNodes,Err) !Finish the decomposition CALL cmfe_Decomposition_CreateFinish(Decomposition,Err) @@ -384,7 +391,7 @@ PROGRAM CELLMLINTEGRATIONFORTRANEXAMPLE !Set the Stimulus all nodes? DO node_idx=1,NUMBER_OF_ELEMENTS+1 CALL cmfe_Decomposition_NodeDomainGet(Decomposition,node_idx,1,NodeDomain,Err) - IF(NodeDomain==ComputationalNodeNumber) THEN + IF(NodeDomain==ComputationNodeNumber) THEN CALL cmfe_Field_ParameterSetUpdateNode(CellMLParametersField,CMFE_FIELD_U_VARIABLE_TYPE,CMFE_FIELD_VALUES_SET_TYPE,1,1, & & node_idx,stimcomponent,STIM_VALUE,Err) ENDIF @@ -396,7 +403,7 @@ PROGRAM CELLMLINTEGRATIONFORTRANEXAMPLE ! !Loop over the nodes ! DO node_idx=1,LastNodeNumber ! CALL cmfe_Decomposition_NodeDomainGet(Decomposition,node_idx,1,NodeDomain,Err) -! IF(NodeDomain==ComputationalNodeNumber) THEN +! IF(NodeDomain==ComputationNodeNumber) THEN ! CALL cmfe_Field_ParameterSetGetNode(GeometricField,CMFE_FIELD_U_VARIABLE_TYPE,CMFE_FIELD_VALUES_SET_TYPE,1,1,node_idx,1, & ! & X,Err) ! CALL cmfe_Field_ParameterSetGetNode(GeometricField,CMFE_FIELD_U_VARIABLE_TYPE,CMFE_FIELD_VALUES_SET_TYPE,1,1,node_idx,2, & @@ -411,7 +418,7 @@ PROGRAM CELLMLINTEGRATIONFORTRANEXAMPLE !Start the creation of a problem. CALL cmfe_Problem_Initialise(Problem,Err) !Set the problem to be a standard Monodomain problem - CALL cmfe_Problem_CreateStart(ProblemUserNumber,[CMFE_PROBLEM_BIOELECTRICS_CLASS,CMFE_PROBLEM_MONODOMAIN_EQUATION_TYPE, & + CALL cmfe_Problem_CreateStart(ProblemUserNumber,context,[CMFE_PROBLEM_BIOELECTRICS_CLASS,CMFE_PROBLEM_MONODOMAIN_EQUATION_TYPE, & & CMFE_PROBLEM_MONODOMAIN_GUDUNOV_SPLIT_SUBTYPE],Problem,Err) !Finish the creation of a problem. CALL cmfe_Problem_CreateFinish(Problem,Err) @@ -488,11 +495,11 @@ PROGRAM CELLMLINTEGRATIONFORTRANEXAMPLE CALL cmfe_BoundaryConditions_Initialise(BoundaryConditions,Err) CALL cmfe_SolverEquations_BoundaryConditionsCreateStart(SolverEquations,BoundaryConditions,Err) !Set the first node to 0.0 and the last node to 1.0 - IF(FirstNodeDomain==ComputationalNodeNumber) THEN + IF(FirstNodeDomain==ComputationNodeNumber) THEN !CALL cmfe_BoundaryConditions_SetNode(BoundaryConditions,DependentField,CMFE_FIELD_U_VARIABLE_TYPE,1,1,FirstNodeNumber,1, & ! & CMFE_BOUNDARY_CONDITION_FIXED,0.0_CMISSRP,Err) ENDIF - IF(LastNodeDomain==ComputationalNodeNumber) THEN + IF(LastNodeDomain==ComputationNodeNumber) THEN !CALL cmfe_BoundaryConditions_SetNode(BoundaryConditions,DependentField,CMFE_FIELD_U_VARIABLE_TYPE,1,1,LastNodeNumber,1, & ! & CMFE_BOUNDARY_CONDITION_FIXED,1.0_CMISSRP,Err) ENDIF @@ -506,7 +513,7 @@ PROGRAM CELLMLINTEGRATIONFORTRANEXAMPLE !Set the Stimulus at node 1 DO node_idx=1,NUMBER_OF_ELEMENTS+1 CALL cmfe_Decomposition_NodeDomainGet(Decomposition,node_idx,1,NodeDomain,Err) - IF(NodeDomain==ComputationalNodeNumber) THEN + IF(NodeDomain==ComputationNodeNumber) THEN CALL cmfe_Field_ParameterSetUpdateNode(CellMLParametersField,CMFE_FIELD_U_VARIABLE_TYPE,CMFE_FIELD_VALUES_SET_TYPE,1,1, & & node_idx,stimcomponent,0.0_CMISSRP,Err) ENDIF @@ -528,10 +535,10 @@ PROGRAM CELLMLINTEGRATIONFORTRANEXAMPLE ENDIF !Finialise CMISS - CALL cmfe_Finalise(Err) + CALL cmfe_Finalise(context,Err) WRITE(*,'(A)') "Program successfully completed." STOP -END PROGRAM CELLMLINTEGRATIONFORTRANEXAMPLE +END PROGRAM CellMLIntegrationFortranExample diff --git a/tests/CellML/Monodomain.f90 b/tests/CellML/Monodomain.f90 index a89b230c..18167da8 100644 --- a/tests/CellML/Monodomain.f90 +++ b/tests/CellML/Monodomain.f90 @@ -48,7 +48,7 @@ !< !> Main program -PROGRAM MONODOMAINEXAMPLE +PROGRAM MonodomainExample USE OpenCMISS USE OpenCMISS_Iron @@ -122,8 +122,10 @@ PROGRAM MONODOMAINEXAMPLE TYPE(cmfe_BoundaryConditionsType) :: BoundaryConditions TYPE(cmfe_CellMLType) :: CellML TYPE(cmfe_CellMLEquationsType) :: CellMLEquations + TYPE(cmfe_ComputationEnvironmentType) :: ComputationEnvironment + TYPE(cmfe_ContextType) :: context TYPE(cmfe_ControlLoopType) :: ControlLoop - TYPE(cmfe_CoordinateSystemType) :: CoordinateSystem,WorldCoordinateSystem + TYPE(cmfe_CoordinateSystemType) :: CoordinateSystem TYPE(cmfe_DecompositionType) :: Decomposition TYPE(cmfe_EquationsType) :: Equations TYPE(cmfe_EquationsSetType) :: EquationsSet @@ -139,7 +141,7 @@ PROGRAM MONODOMAINEXAMPLE !Generic CMISS variables - INTEGER(CMISSIntg) :: NumberOfComputationalNodes,ComputationalNodeNumber + INTEGER(CMISSIntg) :: NumberOfComputationNodes,ComputationNodeNumber INTEGER(CMISSIntg) :: EquationsSetIndex,CellMLIndex INTEGER(CMISSIntg) :: FirstNodeNumber,LastNodeNumber INTEGER(CMISSIntg) :: FirstNodeDomain,LastNodeDomain,NodeDomain @@ -175,14 +177,19 @@ PROGRAM MONODOMAINEXAMPLE ENDIF !Intialise OpenCMISS - CALL cmfe_Initialise(WorldCoordinateSystem,WorldRegion,Err) + CALL cmfe_Context_Initialise(context,err) + CALL cmfe_Initialise(context,Err) + CALL cmfe_Region_Initialise(worldRegion,err) + CALL cmfe_Context_WorldRegionGet(context,worldRegion,err) !Trap errors CALL cmfe_ErrorHandlingModeSet(CMFE_ERRORS_TRAP_ERROR,Err) - !Get the computational nodes information - CALL cmfe_ComputationalNumberOfNodesGet(NumberOfComputationalNodes,Err) - CALL cmfe_ComputationalNodeNumberGet(ComputationalNodeNumber,Err) + !Get the computation nodes information + CALL cmfe_ComputationEnvironment_Initialise(ComputationEnvironment,Err) + CALL cmfe_Context_ComputationEnvironmentGet(context,computationEnvironment,err) + CALL cmfe_ComputationEnvironment_NumberOfWorldNodesGet(ComputationEnvironment,NumberOfComputationNodes,Err) + CALL cmfe_ComputationEnvironment_WorldNodeNumberGet(ComputationEnvironment,ComputationNodeNumber,Err) !CALL cmfe_OutputSetOn("Monodomain",Err) @@ -192,7 +199,7 @@ PROGRAM MONODOMAINEXAMPLE !Start the creation of a new RC coordinate system CALL cmfe_CoordinateSystem_Initialise(CoordinateSystem,Err) - CALL cmfe_CoordinateSystem_CreateStart(CoordinateSystemUserNumber,CoordinateSystem,Err) + CALL cmfe_CoordinateSystem_CreateStart(CoordinateSystemUserNumber,context,CoordinateSystem,Err) IF(NUMBER_GLOBAL_Z_ELEMENTS==0) THEN !Set the coordinate system to be 2D CALL cmfe_CoordinateSystem_DimensionSet(CoordinateSystem,2,Err) @@ -215,7 +222,7 @@ PROGRAM MONODOMAINEXAMPLE !Start the creation of a basis (default is trilinear lagrange) CALL cmfe_Basis_Initialise(Basis,Err) - CALL cmfe_Basis_CreateStart(BasisUserNumber,Basis,Err) + CALL cmfe_Basis_CreateStart(BasisUserNumber,context,Basis,Err) IF(NUMBER_GLOBAL_Z_ELEMENTS==0) THEN !Set the basis to be a bilinear Lagrange basis CALL cmfe_Basis_NumberOfXiSet(Basis,2,Err) @@ -250,7 +257,7 @@ PROGRAM MONODOMAINEXAMPLE CALL cmfe_Decomposition_CreateStart(DecompositionUserNumber,Mesh,Decomposition,Err) !Set the decomposition to be a general decomposition with the specified number of domains CALL cmfe_Decomposition_TypeSet(Decomposition,CMFE_DECOMPOSITION_CALCULATED_TYPE,Err) - CALL cmfe_Decomposition_NumberOfDomainsSet(Decomposition,NumberOfComputationalNodes,Err) + CALL cmfe_Decomposition_NumberOfDomainsSet(Decomposition,NumberOfComputationNodes,Err) !Finish the decomposition CALL cmfe_Decomposition_CreateFinish(Decomposition,Err) @@ -397,7 +404,7 @@ PROGRAM MONODOMAINEXAMPLE !Set the Stimulus at half the bottom nodes DO node_idx=1,NUMBER_OF_ELEMENTS/2 CALL cmfe_Decomposition_NodeDomainGet(Decomposition,node_idx,1,NodeDomain,Err) - IF(NodeDomain==ComputationalNodeNumber) THEN + IF(NodeDomain==ComputationNodeNumber) THEN CALL cmfe_Field_ParameterSetUpdateNode(CellMLParametersField,CMFE_FIELD_U_VARIABLE_TYPE,CMFE_FIELD_VALUES_SET_TYPE,1,1, & & node_idx,stimcomponent,STIM_VALUE,Err) ENDIF @@ -409,7 +416,7 @@ PROGRAM MONODOMAINEXAMPLE !Loop over the nodes DO node_idx=1,LastNodeNumber CALL cmfe_Decomposition_NodeDomainGet(Decomposition,node_idx,1,NodeDomain,Err) - IF(NodeDomain==ComputationalNodeNumber) THEN + IF(NodeDomain==ComputationNodeNumber) THEN CALL cmfe_Field_ParameterSetGetNode(GeometricField,CMFE_FIELD_U_VARIABLE_TYPE,CMFE_FIELD_VALUES_SET_TYPE,1,1,node_idx,1, & & X,Err) CALL cmfe_Field_ParameterSetGetNode(GeometricField,CMFE_FIELD_U_VARIABLE_TYPE,CMFE_FIELD_VALUES_SET_TYPE,1,1,node_idx,2, & @@ -423,7 +430,7 @@ PROGRAM MONODOMAINEXAMPLE !Start the creation of a problem. CALL cmfe_Problem_Initialise(Problem,Err) - CALL cmfe_Problem_CreateStart(ProblemUserNumber,[CMFE_PROBLEM_BIOELECTRICS_CLASS,CMFE_PROBLEM_MONODOMAIN_EQUATION_TYPE, & + CALL cmfe_Problem_CreateStart(ProblemUserNumber,context,[CMFE_PROBLEM_BIOELECTRICS_CLASS,CMFE_PROBLEM_MONODOMAIN_EQUATION_TYPE, & & CMFE_PROBLEM_MONODOMAIN_GUDUNOV_SPLIT_SUBTYPE],Problem,Err) !Finish the creation of a problem. CALL cmfe_Problem_CreateFinish(Problem,Err) @@ -500,11 +507,11 @@ PROGRAM MONODOMAINEXAMPLE CALL cmfe_BoundaryConditions_Initialise(BoundaryConditions,Err) CALL cmfe_SolverEquations_BoundaryConditionsCreateStart(SolverEquations,BoundaryConditions,Err) !Set the first node to 0.0 and the last node to 1.0 - IF(FirstNodeDomain==ComputationalNodeNumber) THEN + IF(FirstNodeDomain==ComputationNodeNumber) THEN !CALL cmfe_BoundaryConditions_SetNode(BoundaryConditions,DependentField,CMFE_FIELD_U_VARIABLE_TYPE,1,1,FirstNodeNumber,1, & ! & CMFE_BOUNDARY_CONDITION_FIXED,0.0_CMISSRP,Err) ENDIF - IF(LastNodeDomain==ComputationalNodeNumber) THEN + IF(LastNodeDomain==ComputationNodeNumber) THEN !CALL cmfe_BoundaryConditions_SetNode(BoundaryConditions,DependentField,CMFE_FIELD_U_VARIABLE_TYPE,1,1,LastNodeNumber,1, & ! & CMFE_BOUNDARY_CONDITION_FIXED,1.0_CMISSRP,Err) ENDIF @@ -518,7 +525,7 @@ PROGRAM MONODOMAINEXAMPLE !Set the Stimulus at node 1 DO node_idx=1,NUMBER_OF_ELEMENTS/2 CALL cmfe_Decomposition_NodeDomainGet(Decomposition,node_idx,1,NodeDomain,Err) - IF(NodeDomain==ComputationalNodeNumber) THEN + IF(NodeDomain==ComputationNodeNumber) THEN CALL cmfe_Field_ParameterSetUpdateNode(CellMLParametersField,CMFE_FIELD_U_VARIABLE_TYPE,CMFE_FIELD_VALUES_SET_TYPE,1,1, & & node_idx,stimcomponent,0.0_CMISSRP,Err) ENDIF @@ -540,10 +547,10 @@ PROGRAM MONODOMAINEXAMPLE ENDIF !Finialise CMISS - CALL cmfe_Finalise(Err) + CALL cmfe_Finalise(context,Err) WRITE(*,'(A)') "Program successfully completed." STOP -END PROGRAM MONODOMAINEXAMPLE +END PROGRAM MonodomainExample diff --git a/tests/ClassicalField/Analytic1DDiffusion.f90 b/tests/ClassicalField/Analytic1DDiffusion.f90 index cfb4a480..bef2998b 100644 --- a/tests/ClassicalField/Analytic1DDiffusion.f90 +++ b/tests/ClassicalField/Analytic1DDiffusion.f90 @@ -46,7 +46,7 @@ !< !> Main program -PROGRAM ANALYTIC1DDIFFUSIONEXAMPLE +PROGRAM Analytic1DDiffusionExample USE OpenCMISS USE OpenCMISS_Iron @@ -90,7 +90,8 @@ PROGRAM ANALYTIC1DDIFFUSIONEXAMPLE !CMISS variables TYPE(cmfe_BasisType) :: Basis - TYPE(cmfe_CoordinateSystemType) :: CoordinateSystem,WorldCoordinateSystem + TYPE(cmfe_ContextType) :: context + TYPE(cmfe_CoordinateSystemType) :: CoordinateSystem TYPE(cmfe_DecompositionType) :: Decomposition TYPE(cmfe_EquationsType) :: Equations TYPE(cmfe_EquationsSetType) :: EquationsSet @@ -114,7 +115,7 @@ PROGRAM ANALYTIC1DDIFFUSIONEXAMPLE !Generic CMISS variables INTEGER(CMISSIntg) :: EquationsSetIndex - INTEGER(CMISSIntg) :: Err + INTEGER(CMISSIntg) :: err #ifdef WIN32 !Initialise QuickWin @@ -128,198 +129,202 @@ PROGRAM ANALYTIC1DDIFFUSIONEXAMPLE #endif !Intialise OpenCMISS - CALL cmfe_Initialise(WorldCoordinateSystem,WorldRegion,Err) + CALL cmfe_Context_Initialise(context,err) + CALL cmfe_Initialise(context,Err) - CALL cmfe_ErrorHandlingModeSet(CMFE_ERRORS_TRAP_ERROR,Err) + CALL cmfe_Region_Initialise(worldRegion,err) + CALL cmfe_Context_WorldRegionGet(context,worldRegion,err) + + CALL cmfe_errorHandlingModeSet(CMFE_ERRORS_TRAP_ERROR,err) - CALL cmfe_OutputSetOn("Diffusion1DAnalytic",Err) + CALL cmfe_OutputSetOn("Diffusion1DAnalytic",err) !Start the creation of a new RC coordinate system - CALL cmfe_CoordinateSystem_Initialise(CoordinateSystem,Err) - CALL cmfe_CoordinateSystem_CreateStart(CoordinateSystemUserNumber,CoordinateSystem,Err) + CALL cmfe_CoordinateSystem_Initialise(CoordinateSystem,err) + CALL cmfe_CoordinateSystem_CreateStart(CoordinateSystemUserNumber,context,CoordinateSystem,err) !Set the coordinate system to be 1D - CALL cmfe_CoordinateSystem_DimensionSet(CoordinateSystem,1,Err) + CALL cmfe_CoordinateSystem_DimensionSet(CoordinateSystem,1,err) !Finish the creation of the coordinate system - CALL cmfe_CoordinateSystem_CreateFinish(CoordinateSystem,Err) + CALL cmfe_CoordinateSystem_CreateFinish(CoordinateSystem,err) !Start the creation of the region - CALL cmfe_Region_Initialise(Region,Err) - CALL cmfe_Region_CreateStart(RegionUserNumber,WorldRegion,Region,Err) + CALL cmfe_Region_Initialise(Region,err) + CALL cmfe_Region_CreateStart(RegionUserNumber,WorldRegion,Region,err) !Label the Region - CALL cmfe_Region_LabelSet(Region,"Region",Err) + CALL cmfe_Region_LabelSet(Region,"Region",err) !Set the regions coordinate system to the 1D RC coordinate system that we have created - CALL cmfe_Region_CoordinateSystemSet(Region,CoordinateSystem,Err) + CALL cmfe_Region_CoordinateSystemSet(Region,CoordinateSystem,err) !Finish the creation of the region - CALL cmfe_Region_CreateFinish(Region,Err) + CALL cmfe_Region_CreateFinish(Region,err) !Start the creation of a basis (default is trilinear lagrange) - CALL cmfe_Basis_Initialise(Basis,Err) - CALL cmfe_Basis_CreateStart(BasisUserNumber,Basis,Err) + CALL cmfe_Basis_Initialise(Basis,err) + CALL cmfe_Basis_CreateStart(BasisUserNumber,context,Basis,err) !Set the basis to be a linear Lagrange basis - CALL cmfe_Basis_NumberOfXiSet(Basis,1,Err) + CALL cmfe_Basis_NumberOfXiSet(Basis,1,err) !Finish the creation of the basis - CALL cmfe_Basis_CreateFinish(BASIS,Err) + CALL cmfe_Basis_CreateFinish(BASIS,err) !Start the creation of a generated mesh in the region - CALL cmfe_GeneratedMesh_Initialise(GeneratedMesh,Err) - CALL cmfe_GeneratedMesh_CreateStart(GeneratedMeshUserNumber,Region,GeneratedMesh,Err) + CALL cmfe_GeneratedMesh_Initialise(GeneratedMesh,err) + CALL cmfe_GeneratedMesh_CreateStart(GeneratedMeshUserNumber,Region,GeneratedMesh,err) !Set up a regular mesh - CALL cmfe_GeneratedMesh_TypeSet(GeneratedMesh,CMFE_GENERATED_MESH_REGULAR_MESH_TYPE,Err) + CALL cmfe_GeneratedMesh_TypeSet(GeneratedMesh,CMFE_GENERATED_MESH_REGULAR_MESH_TYPE,err) !Set the default basis - CALL cmfe_GeneratedMesh_BasisSet(GeneratedMesh,Basis,Err) + CALL cmfe_GeneratedMesh_BasisSet(GeneratedMesh,Basis,err) !Define the mesh on the region - CALL cmfe_GeneratedMesh_ExtentSet(GeneratedMesh,[LENGTH],Err) - CALL cmfe_GeneratedMesh_NumberOfElementsSet(GeneratedMesh,[NUMBER_GLOBAL_X_ELEMENTS],Err) + CALL cmfe_GeneratedMesh_ExtentSet(GeneratedMesh,[LENGTH],err) + CALL cmfe_GeneratedMesh_NumberOfElementsSet(GeneratedMesh,[NUMBER_GLOBAL_X_ELEMENTS],err) !Finish the creation of a generated mesh in the region - CALL cmfe_Mesh_Initialise(Mesh,Err) - CALL cmfe_GeneratedMesh_CreateFinish(GeneratedMesh,MeshUserNumber,Mesh,Err) + CALL cmfe_Mesh_Initialise(Mesh,err) + CALL cmfe_GeneratedMesh_CreateFinish(GeneratedMesh,MeshUserNumber,Mesh,err) !Create a decomposition - CALL cmfe_Decomposition_Initialise(Decomposition,Err) - CALL cmfe_Decomposition_CreateStart(DecompositionUserNumber,Mesh,Decomposition,Err) + CALL cmfe_Decomposition_Initialise(Decomposition,err) + CALL cmfe_Decomposition_CreateStart(DecompositionUserNumber,Mesh,Decomposition,err) !Set the decomposition to be a general decomposition with the specified number of domains - CALL cmfe_Decomposition_TypeSet(Decomposition,CMFE_DECOMPOSITION_CALCULATED_TYPE,Err) - CALL cmfe_Decomposition_NumberOfDomainsSet(Decomposition,1,Err) + CALL cmfe_Decomposition_TypeSet(Decomposition,CMFE_DECOMPOSITION_CALCULATED_TYPE,err) + CALL cmfe_Decomposition_NumberOfDomainsSet(Decomposition,1,err) !Finish the decomposition - CALL cmfe_Decomposition_CreateFinish(Decomposition,Err) + CALL cmfe_Decomposition_CreateFinish(Decomposition,err) !Start to create a default (geometric) field on the region - CALL cmfe_Field_Initialise(GeometricField,Err) - CALL cmfe_Field_CreateStart(GeometricFieldUserNumber,Region,GeometricField,Err) + CALL cmfe_Field_Initialise(GeometricField,err) + CALL cmfe_Field_CreateStart(GeometricFieldUserNumber,Region,GeometricField,err) !Set the decomposition to use - CALL cmfe_Field_MeshDecompositionSet(GeometricField,Decomposition,Err) + CALL cmfe_Field_MeshDecompositionSet(GeometricField,Decomposition,err) !Set the domain to be used by the field components. - CALL cmfe_Field_ComponentMeshComponentSet(GeometricField,CMFE_FIELD_U_VARIABLE_TYPE,1,1,Err) + CALL cmfe_Field_ComponentMeshComponentSet(GeometricField,CMFE_FIELD_U_VARIABLE_TYPE,1,1,err) !Finish creating the field - CALL cmfe_Field_CreateFinish(GeometricField,Err) + CALL cmfe_Field_CreateFinish(GeometricField,err) !Update the geometric field parameters - CALL cmfe_GeneratedMesh_GeometricParametersCalculate(GeneratedMesh,GeometricField,Err) + CALL cmfe_GeneratedMesh_GeometricParametersCalculate(GeneratedMesh,GeometricField,err) !Create the equations_set - CALL cmfe_EquationsSet_Initialise(EquationsSet,Err) - CALL cmfe_Field_Initialise(EquationsSetField,Err) + CALL cmfe_EquationsSet_Initialise(EquationsSet,err) + CALL cmfe_Field_Initialise(EquationsSetField,err) CALL cmfe_EquationsSet_CreateStart(EquationsSetUserNumber,Region,GeometricField,[CMFE_EQUATIONS_SET_CLASSICAL_FIELD_CLASS, & & CMFE_EQUATIONS_SET_DIFFUSION_EQUATION_TYPE,CMFE_EQUATIONS_SET_NO_SOURCE_DIFFUSION_SUBTYPE],EquationsSetFieldUserNumber, & - & EquationsSetField,EquationsSet,Err) + & EquationsSetField,EquationsSet,err) !Finish creating the equations set - CALL cmfe_EquationsSet_CreateFinish(EquationsSet,Err) + CALL cmfe_EquationsSet_CreateFinish(EquationsSet,err) !Create the equations set dependent field variables - CALL cmfe_Field_Initialise(DependentField,Err) - CALL cmfe_EquationsSet_DependentCreateStart(EquationsSet,DependentFieldUserNumber,DependentField,Err) + CALL cmfe_Field_Initialise(DependentField,err) + CALL cmfe_EquationsSet_DependentCreateStart(EquationsSet,DependentFieldUserNumber,DependentField,err) !Finish the equations set dependent field variables - CALL cmfe_EquationsSet_DependentCreateFinish(EquationsSet,Err) + CALL cmfe_EquationsSet_DependentCreateFinish(EquationsSet,err) !Create the equations set material field variables - CALL cmfe_Field_Initialise(MaterialsField,Err) - CALL cmfe_EquationsSet_MaterialsCreateStart(EquationsSet,MaterialsFieldUserNumber,MaterialsField,Err) + CALL cmfe_Field_Initialise(MaterialsField,err) + CALL cmfe_EquationsSet_MaterialsCreateStart(EquationsSet,MaterialsFieldUserNumber,MaterialsField,err) !Finish the equations set dependent field variables - CALL cmfe_EquationsSet_MaterialsCreateFinish(EquationsSet,Err) + CALL cmfe_EquationsSet_MaterialsCreateFinish(EquationsSet,err) !Set the conductivity - CALL cmfe_Field_ComponentValuesInitialise(MaterialsField,CMFE_FIELD_U_VARIABLE_TYPE,CMFE_FIELD_VALUES_SET_TYPE,1,K,Err) + CALL cmfe_Field_ComponentValuesInitialise(MaterialsField,CMFE_FIELD_U_VARIABLE_TYPE,CMFE_FIELD_VALUES_SET_TYPE,1,K,err) !Create the equations set analytic field variables - CALL cmfe_Field_Initialise(AnalyticField,Err) + CALL cmfe_Field_Initialise(AnalyticField,err) CALL cmfe_EquationsSet_AnalyticCreateStart(EquationsSet,CMFE_EQUATIONS_SET_DIFFUSION_EQUATION_ONE_DIM_1, & - & AnalyticFieldUserNumber,AnalyticField,Err) + & AnalyticFieldUserNumber,AnalyticField,err) !Finish the equations set analytic field variables - CALL cmfe_EquationsSet_AnalyticCreateFinish(EquationsSet,Err) + CALL cmfe_EquationsSet_AnalyticCreateFinish(EquationsSet,err) !Set the analytic field parameters !Set the multiplicative constant. - CALL cmfe_Field_ComponentValuesInitialise(AnalyticField,CMFE_FIELD_U_VARIABLE_TYPE,CMFE_FIELD_VALUES_SET_TYPE,1,A,Err) + CALL cmfe_Field_ComponentValuesInitialise(AnalyticField,CMFE_FIELD_U_VARIABLE_TYPE,CMFE_FIELD_VALUES_SET_TYPE,1,A,err) !Set the phase. - CALL cmfe_Field_ComponentValuesInitialise(AnalyticField,CMFE_FIELD_U_VARIABLE_TYPE,CMFE_FIELD_VALUES_SET_TYPE,2,B,Err) + CALL cmfe_Field_ComponentValuesInitialise(AnalyticField,CMFE_FIELD_U_VARIABLE_TYPE,CMFE_FIELD_VALUES_SET_TYPE,2,B,err) !Set the offset. - CALL cmfe_Field_ComponentValuesInitialise(AnalyticField,CMFE_FIELD_U_VARIABLE_TYPE,CMFE_FIELD_VALUES_SET_TYPE,3,C,Err) + CALL cmfe_Field_ComponentValuesInitialise(AnalyticField,CMFE_FIELD_U_VARIABLE_TYPE,CMFE_FIELD_VALUES_SET_TYPE,3,C,err) !Set the length to be the length of the mesh - CALL cmfe_Field_ComponentValuesInitialise(AnalyticField,CMFE_FIELD_U_VARIABLE_TYPE,CMFE_FIELD_VALUES_SET_TYPE,4,LENGTH,Err) + CALL cmfe_Field_ComponentValuesInitialise(AnalyticField,CMFE_FIELD_U_VARIABLE_TYPE,CMFE_FIELD_VALUES_SET_TYPE,4,LENGTH,err) !Create the equations set equations - CALL cmfe_Equations_Initialise(Equations,Err) - CALL cmfe_EquationsSet_EquationsCreateStart(EquationsSet,Equations,Err) + CALL cmfe_Equations_Initialise(Equations,err) + CALL cmfe_EquationsSet_EquationsCreateStart(EquationsSet,Equations,err) !Set the equations matrices sparsity type - CALL cmfe_Equations_SparsityTypeSet(Equations,CMFE_EQUATIONS_SPARSE_MATRICES,Err) + CALL cmfe_Equations_SparsityTypeSet(Equations,CMFE_EQUATIONS_SPARSE_MATRICES,err) !Set the equations set output - !CALL cmfe_Equations_OutputTypeSet(Equations,CMFE_EQUATIONS_NO_OUTPUT,Err) - !CALL cmfe_Equations_OutputTypeSet(Equations,CMFE_EQUATIONS_TIMING_OUTPUT,Err) - !CALL cmfe_Equations_OutputTypeSet(Equations,CMFE_EQUATIONS_MATRIX_OUTPUT,Err) - CALL cmfe_Equations_OutputTypeSet(Equations,CMFE_EQUATIONS_ELEMENT_MATRIX_OUTPUT,Err) + !CALL cmfe_Equations_OutputTypeSet(Equations,CMFE_EQUATIONS_NO_OUTPUT,err) + !CALL cmfe_Equations_OutputTypeSet(Equations,CMFE_EQUATIONS_TIMING_OUTPUT,err) + !CALL cmfe_Equations_OutputTypeSet(Equations,CMFE_EQUATIONS_MATRIX_OUTPUT,err) + CALL cmfe_Equations_OutputTypeSet(Equations,CMFE_EQUATIONS_ELEMENT_MATRIX_OUTPUT,err) !Finish the equations set equations - CALL cmfe_EquationsSet_EquationsCreateFinish(EquationsSet,Err) + CALL cmfe_EquationsSet_EquationsCreateFinish(EquationsSet,err) !Create the problem - CALL cmfe_Problem_Initialise(Problem,Err) - CALL cmfe_Problem_CreateStart(ProblemUserNumber,[CMFE_PROBLEM_CLASSICAL_FIELD_CLASS,CMFE_PROBLEM_DIFFUSION_EQUATION_TYPE, & - & CMFE_PROBLEM_LINEAR_SOURCE_DIFFUSION_SUBTYPE],Problem,Err) + CALL cmfe_Problem_Initialise(Problem,err) + CALL cmfe_Problem_CreateStart(ProblemUserNumber,context,[CMFE_PROBLEM_CLASSICAL_FIELD_CLASS, & + & CMFE_PROBLEM_DIFFUSION_EQUATION_TYPE,CMFE_PROBLEM_LINEAR_SOURCE_DIFFUSION_SUBTYPE],Problem,err) !Finish the creation of a problem. - CALL cmfe_Problem_CreateFinish(Problem,Err) + CALL cmfe_Problem_CreateFinish(Problem,err) !Create the problem control - CALL cmfe_Problem_ControlLoopCreateStart(Problem,Err) - CALL cmfe_ControlLoop_Initialise(ControlLoop,Err) + CALL cmfe_Problem_ControlLoopCreateStart(Problem,err) + CALL cmfe_ControlLoop_Initialise(ControlLoop,err) !Get the control loop - CALL cmfe_Problem_ControlLoopGet(Problem,CMFE_CONTROL_LOOP_NODE,ControlLoop,Err) + CALL cmfe_Problem_ControlLoopGet(Problem,CMFE_CONTROL_LOOP_NODE,ControlLoop,err) !Set the times - CALL cmfe_ControlLoop_TimesSet(ControlLoop,0.0_CMISSRP,END_TIME,TIME_STEP,Err) + CALL cmfe_ControlLoop_TimesSet(ControlLoop,0.0_CMISSRP,END_TIME,TIME_STEP,err) !Finish creating the problem control loop - CALL cmfe_Problem_ControlLoopCreateFinish(Problem,Err) + CALL cmfe_Problem_ControlLoopCreateFinish(Problem,err) !Start the creation of the problem solvers - CALL cmfe_Solver_Initialise(Solver,Err) - CALL cmfe_Solver_Initialise(LinearSolver,Err) - CALL cmfe_Problem_SolversCreateStart(Problem,Err) - CALL cmfe_Problem_SolverGet(Problem,CMFE_CONTROL_LOOP_NODE,1,Solver,Err) - !CALL cmfe_Solver_OutputTypeSet(Solver,CMFE_SOLVER_NO_OUTPUT,Err) - !CALL cmfe_Solver_OutputTypeSet(Solver,CMFE_SOLVER_PROGRESS_OUTPUT,Err) - !CALL cmfe_Solver_OutputTypeSet(Solver,CMFE_SOLVER_TIMING_OUTPUT,Err) - !CALL cmfe_Solver_OutputTypeSet(Solver,CMFE_SOLVER_SOLVER_OUTPUT,Err) - CALL cmfe_Solver_OutputTypeSet(Solver,CMFE_SOLVER_MATRIX_OUTPUT,Err) - CALL cmfe_Solver_DynamicLinearSolverGet(Solver,LinearSolver,Err) - CALL cmfe_Solver_OutputTypeSet(LinearSolver,CMFE_SOLVER_PROGRESS_OUTPUT,Err) + CALL cmfe_Solver_Initialise(Solver,err) + CALL cmfe_Solver_Initialise(LinearSolver,err) + CALL cmfe_Problem_SolversCreateStart(Problem,err) + CALL cmfe_Problem_SolverGet(Problem,CMFE_CONTROL_LOOP_NODE,1,Solver,err) + !CALL cmfe_Solver_OutputTypeSet(Solver,CMFE_SOLVER_NO_OUTPUT,err) + !CALL cmfe_Solver_OutputTypeSet(Solver,CMFE_SOLVER_PROGRESS_OUTPUT,err) + !CALL cmfe_Solver_OutputTypeSet(Solver,CMFE_SOLVER_TIMING_OUTPUT,err) + !CALL cmfe_Solver_OutputTypeSet(Solver,CMFE_SOLVER_SOLVER_OUTPUT,err) + CALL cmfe_Solver_OutputTypeSet(Solver,CMFE_SOLVER_MATRIX_OUTPUT,err) + CALL cmfe_Solver_DynamicLinearSolverGet(Solver,LinearSolver,err) + CALL cmfe_Solver_OutputTypeSet(LinearSolver,CMFE_SOLVER_PROGRESS_OUTPUT,err) !Finish the creation of the problem solver - CALL cmfe_Problem_SolversCreateFinish(Problem,Err) + CALL cmfe_Problem_SolversCreateFinish(Problem,err) !Create the problem solver equations - CALL cmfe_Solver_Initialise(Solver,Err) - CALL cmfe_SolverEquations_Initialise(SolverEquations,Err) - CALL cmfe_Problem_SolverEquationsCreateStart(Problem,Err) + CALL cmfe_Solver_Initialise(Solver,err) + CALL cmfe_SolverEquations_Initialise(SolverEquations,err) + CALL cmfe_Problem_SolverEquationsCreateStart(Problem,err) !Get the solve equations - CALL cmfe_Problem_SolverGet(Problem,CMFE_CONTROL_LOOP_NODE,1,Solver,Err) - CALL cmfe_Solver_SolverEquationsGet(Solver,SolverEquations,Err) + CALL cmfe_Problem_SolverGet(Problem,CMFE_CONTROL_LOOP_NODE,1,Solver,err) + CALL cmfe_Solver_SolverEquationsGet(Solver,SolverEquations,err) !Set the solver equations sparsity - CALL cmfe_SolverEquations_SparsityTypeSet(SolverEquations,CMFE_SOLVER_SPARSE_MATRICES,Err) - !CALL cmfe_SolverEquations_SparsityTypeSet(SolverEquations,CMFE_SOLVER_FULL_MATRICES,Err) + CALL cmfe_SolverEquations_SparsityTypeSet(SolverEquations,CMFE_SOLVER_SPARSE_MATRICES,err) + !CALL cmfe_SolverEquations_SparsityTypeSet(SolverEquations,CMFE_SOLVER_FULL_MATRICES,err) !Add in the equations set - CALL cmfe_SolverEquations_EquationsSetAdd(SolverEquations,EquationsSet,EquationsSetIndex,Err) + CALL cmfe_SolverEquations_EquationsSetAdd(SolverEquations,EquationsSet,EquationsSetIndex,err) !Finish the creation of the problem solver equations - CALL cmfe_Problem_SolverEquationsCreateFinish(Problem,Err) + CALL cmfe_Problem_SolverEquationsCreateFinish(Problem,err) !Create the equations set boundary conditions - CALL cmfe_BoundaryConditions_Initialise(BoundaryConditions,Err) - CALL cmfe_SolverEquations_BoundaryConditionsCreateStart(SolverEquations,BoundaryConditions,Err) - CALL cmfe_SolverEquations_BoundaryConditionsAnalytic(SolverEquations,Err) - CALL cmfe_SolverEquations_BoundaryConditionsCreateFinish(SolverEquations,Err) + CALL cmfe_BoundaryConditions_Initialise(BoundaryConditions,err) + CALL cmfe_SolverEquations_BoundaryConditionsCreateStart(SolverEquations,BoundaryConditions,err) + CALL cmfe_SolverEquations_BoundaryConditionsAnalytic(SolverEquations,err) + CALL cmfe_SolverEquations_BoundaryConditionsCreateFinish(SolverEquations,err) !Solve the problem - CALL cmfe_Problem_Solve(Problem,Err) + CALL cmfe_Problem_Solve(Problem,err) !Output Analytic analysis - !CALL cmfe_EquationsSet_AnalyticTimeSet(EquationsSet,END_TIME,Err) - !CALL cmfe_EquationsSet_AnalyticEvaluate(EquationsSet,Err) - CALL cmfe_AnalyticAnalysis_Output(DependentField,"Diffusion1DAnalytic",Err) + !CALL cmfe_EquationsSet_AnalyticTimeSet(EquationsSet,END_TIME,err) + !CALL cmfe_EquationsSet_AnalyticEvaluate(EquationsSet,err) + CALL cmfe_AnalyticAnalysis_Output(DependentField,"Diffusion1DAnalytic",err) !Output fields - CALL cmfe_Fields_Initialise(Fields,Err) - CALL cmfe_Fields_Create(Region,Fields,Err) - CALL cmfe_Fields_NodesExport(Fields,"Diffusion1DAnalytic","FORTRAN",Err) - CALL cmfe_Fields_ElementsExport(Fields,"Diffusion1DAnalytic","FORTRAN",Err) - CALL cmfe_Fields_Finalise(Fields,Err) + CALL cmfe_Fields_Initialise(Fields,err) + CALL cmfe_Fields_Create(Region,Fields,err) + CALL cmfe_Fields_NodesExport(Fields,"Diffusion1DAnalytic","FORTRAN",err) + CALL cmfe_Fields_ElementsExport(Fields,"Diffusion1DAnalytic","FORTRAN",err) + CALL cmfe_Fields_Finalise(Fields,err) !Finalise and quit - CALL cmfe_Finalise(Err) + CALL cmfe_Finalise(context,err) WRITE(*,'(A)') "Program successfully completed." STOP -END PROGRAM ANALYTIC1DDIFFUSIONEXAMPLE +END PROGRAM Analytic1DDiffusionExample diff --git a/tests/ClassicalField/AnalyticHelmholtz.f90 b/tests/ClassicalField/AnalyticHelmholtz.f90 index 34eb7922..00babfce 100644 --- a/tests/ClassicalField/AnalyticHelmholtz.f90 +++ b/tests/ClassicalField/AnalyticHelmholtz.f90 @@ -79,8 +79,8 @@ PROGRAM ANALYTICHELMHOLTZEXAMPLE !Program variables - TYPE(cmfe_RegionType) :: WORLD_REGION - TYPE(cmfe_CoordinateSystemType) :: WorldCoordinateSystem + TYPE(cmfe_ContextType) :: context + TYPE(cmfe_RegionType) :: worldRegion #ifdef WIN32 !Quickwin type @@ -103,13 +103,17 @@ PROGRAM ANALYTICHELMHOLTZEXAMPLE #endif !Intialise cmiss - CALL cmfe_Initialise(WorldCoordinateSystem,WORLD_REGION,Err) + CALL cmfe_Context_Initialise(context,err) + CALL cmfe_Initialise(context,Err) + + CALL cmfe_Region_Initialise(worldRegion,err) + CALL cmfe_Context_WorldRegionGet(context,worldRegion,err) CALL ANALYTICHELMHOLTZ_TESTCASE_BILINEAR_LAGRANGE_CONVERGENCE(2,10,2) CALL ANALYTICHELMHOLTZ_TESTCASE_BICUBIC_HERMITE_CONVERGENCE(2,10,2) CALL ANALYTICHELMHOLTZ_TESTCASE_BILINEAR_LAGRANGE_EXPORT(2,6,0) - CALL cmfe_Finalise(Err) + CALL cmfe_Finalise(context,Err) WRITE(*,'(A)') "Program successfully completed." @@ -238,7 +242,7 @@ END SUBROUTINE ANALYTICHELMHOLTZ_GENERIC_CONVERGENCE SUBROUTINE ANALYTICHELMHOLTZ_GENERIC(NUMBER_GLOBAL_X_ELEMENTS,NUMBER_GLOBAL_Y_ELEMENTS,NUMBER_GLOBAL_Z_ELEMENTS, & & INTERPOLATION_SPECIFICATIONS,DEPENDENT_FIELD) - !Argument variables + !Argument variables INTEGER(CMISSIntg), INTENT(IN) :: NUMBER_GLOBAL_X_ELEMENTS ! Main program -PROGRAM ANALYTICLAPLACEEXAMPLE +PROGRAM AnalyticLaplaceExample #ifndef NOMPIMOD USE MPI #endif @@ -78,8 +78,8 @@ PROGRAM ANALYTICLAPLACEEXAMPLE !Program variables - TYPE(cmfe_RegionType) :: WORLD_REGION - TYPE(cmfe_CoordinateSystemType) :: WorldCoordinateSystem + TYPE(cmfe_ContextType) :: context + TYPE(cmfe_RegionType) :: worldRegion INTEGER(CMISSIntg) :: NUMBER_OF_ARGUMENTS,ARGUMENT_LENGTH,STATUS,INTERPOLATION CHARACTER(LEN=255) :: COMMAND_ARGUMENT @@ -105,11 +105,15 @@ PROGRAM ANALYTICLAPLACEEXAMPLE #endif !Intialise cmiss - CALL cmfe_Initialise(WorldCoordinateSystem,WORLD_REGION,Err) + CALL cmfe_Context_Initialise(context,err) + CALL cmfe_Initialise(context,Err) - CALL cmfe_ErrorHandlingModeSet(CMFE_ERRORS_TRAP_ERROR,Err) + CALL cmfe_Region_Initialise(worldRegion,err) + CALL cmfe_Context_WorldRegionGet(context,worldRegion,err) - CALL cmfe_RandomSeedsSet(9999,Err) + CALL cmfe_ErrorHandlingModeSet(CMFE_ERRORS_TRAP_ERROR,err) + + CALL cmfe_Context_RandomSeedsSet(context,9999,err) !CALL cmfe_DiagnosticsSetOn(CMFE_ALL_DIAG_TYPE,[1,2,3,4,5],"Diagnostics",[""],Err) @@ -142,7 +146,7 @@ PROGRAM ANALYTICLAPLACEEXAMPLE CALL ANALYTICLAPLACE_TESTCASE_CUBIC_HERMITE_EXPORT(2,2,0) ENDIF - CALL cmfe_Finalise(Err) + CALL cmfe_Finalise(context,Err) WRITE(*,'(A)') "Program successfully completed." @@ -163,15 +167,17 @@ SUBROUTINE ANALYTICLAPLACE_TESTCASE_CUBIC_HERMITE_EXPORT(NUMBER_GLOBAL_X_ELEMENT INTEGER(CMISSIntg), INTENT(IN) :: NUMBER_GLOBAL_Y_ELEMENTS ! Main program -PROGRAM NONLINEARPOISSONEXAMPLE +PROGRAM NonlinearPoissonExample USE OpenCMISS USE OpenCMISS_Iron @@ -97,6 +97,8 @@ PROGRAM NONLINEARPOISSONEXAMPLE !CMISS variables TYPE(cmfe_BasisType) :: Basis + TYPE(cmfe_ComputationEnvironmentType) :: ComputationEnvironment + TYPE(cmfe_ContextType) :: context TYPE(cmfe_CoordinateSystemType) :: CoordinateSystem,WorldCoordinateSystem TYPE(cmfe_DecompositionType) :: Decomposition TYPE(cmfe_EquationsType) :: Equations @@ -116,7 +118,7 @@ PROGRAM NONLINEARPOISSONEXAMPLE INTEGER(CMISSIntg) :: EquationsSetIndex INTEGER(CMISSIntg) :: Err - INTEGER(CMISSIntg) :: NumberOfComputationalNodes,ComputationalNodeNumber + INTEGER(CMISSIntg) :: NumberOfComputationNodes,ComputationNodeNumber #ifdef WIN32 !Quickwin type @@ -139,21 +141,21 @@ PROGRAM NONLINEARPOISSONEXAMPLE !If we have enough arguments then use the first four for setting up the problem. The subsequent arguments may be used to !pass flags to, say, PETSc. CALL GET_COMMAND_ARGUMENT(1,COMMAND_ARGUMENT,ARGUMENT_LENGTH,STATUS) - IF(STATUS>0) CALL HANDLE_ERROR("Error for command argument 1.") + IF(STATUS>0) CALL HandleError("Error for command argument 1.") READ(COMMAND_ARGUMENT(1:ARGUMENT_LENGTH),*) NUMBER_GLOBAL_X_ELEMENTS - IF(NUMBER_GLOBAL_X_ELEMENTS<=0) CALL HANDLE_ERROR("Invalid number of X elements.") + IF(NUMBER_GLOBAL_X_ELEMENTS<=0) CALL HandleError("Invalid number of X elements.") CALL GET_COMMAND_ARGUMENT(2,COMMAND_ARGUMENT,ARGUMENT_LENGTH,STATUS) - IF(STATUS>0) CALL HANDLE_ERROR("Error for command argument 2.") + IF(STATUS>0) CALL HandleError("Error for command argument 2.") READ(COMMAND_ARGUMENT(1:ARGUMENT_LENGTH),*) NUMBER_GLOBAL_Y_ELEMENTS - IF(NUMBER_GLOBAL_Y_ELEMENTS<0) CALL HANDLE_ERROR("Invalid number of Y elements.") + IF(NUMBER_GLOBAL_Y_ELEMENTS<0) CALL HandleError("Invalid number of Y elements.") CALL GET_COMMAND_ARGUMENT(3,COMMAND_ARGUMENT,ARGUMENT_LENGTH,STATUS) - IF(STATUS>0) CALL HANDLE_ERROR("Error for command argument 3.") + IF(STATUS>0) CALL HandleError("Error for command argument 3.") READ(COMMAND_ARGUMENT(1:ARGUMENT_LENGTH),*) NUMBER_GLOBAL_Z_ELEMENTS - IF(NUMBER_GLOBAL_Z_ELEMENTS<0) CALL HANDLE_ERROR("Invalid number of Z elements.") + IF(NUMBER_GLOBAL_Z_ELEMENTS<0) CALL HandleError("Invalid number of Z elements.") CALL GET_COMMAND_ARGUMENT(4,COMMAND_ARGUMENT,ARGUMENT_LENGTH,STATUS) - IF(STATUS>0) CALL HANDLE_ERROR("Error for command argument 4.") + IF(STATUS>0) CALL HandleError("Error for command argument 4.") READ(COMMAND_ARGUMENT(1:ARGUMENT_LENGTH),*) INTERPOLATION_TYPE - IF(INTERPOLATION_TYPE<=0) CALL HANDLE_ERROR("Invalid Interpolation specification.") + IF(INTERPOLATION_TYPE<=0) CALL HandleError("Invalid Interpolation specification.") IF(NUMBER_GLOBAL_Z_ELEMENTS>0) THEN NUMBER_DIMENSIONS=3 ELSEIF(NUMBER_GLOBAL_Y_ELEMENTS>0) THEN @@ -171,7 +173,10 @@ PROGRAM NONLINEARPOISSONEXAMPLE ENDIF !Intialise OpenCMISS - CALL cmfe_Initialise(WorldCoordinateSystem,WorldRegion,Err) + CALL cmfe_Context_Initialise(context,err) + CALL cmfe_Initialise(context,Err) + CALL cmfe_Region_Initialise(worldRegion,err) + CALL cmfe_Context_WorldRegionGet(context,worldRegion,err) !Trap all errors CALL cmfe_ErrorHandlingModeSet(CMFE_ERRORS_TRAP_ERROR,Err) @@ -179,13 +184,15 @@ PROGRAM NONLINEARPOISSONEXAMPLE !Output to a file CALL cmfe_OutputSetOn("NonlinearPoisson",Err) - !Get the computational nodes information - CALL cmfe_ComputationalNumberOfNodesGet(NumberOfComputationalNodes,Err) - CALL cmfe_ComputationalNodeNumberGet(ComputationalNodeNumber,Err) + !Get the computation nodes information + CALL cmfe_ComputationEnvironment_Initialise(ComputationEnvironment,Err) + CALL cmfe_Context_ComputationEnvironmentGet(context,computationEnvironment,err) + CALL cmfe_ComputationEnvironment_NumberOfWorldNodesGet(ComputationEnvironment,NumberOfComputationNodes,Err) + CALL cmfe_ComputationEnvironment_WorldNodeNumberGet(ComputationEnvironment,ComputationNodeNumber,Err) !Start the creation of a new RC coordinate system CALL cmfe_CoordinateSystem_Initialise(CoordinateSystem,Err) - CALL cmfe_CoordinateSystem_CreateStart(CoordinateSystemUserNumber,CoordinateSystem,Err) + CALL cmfe_CoordinateSystem_CreateStart(CoordinateSystemUserNumber,context,CoordinateSystem,Err) !Set the coordinate system number of dimensions CALL cmfe_CoordinateSystem_DimensionSet(CoordinateSystem,NUMBER_DIMENSIONS,Err) !Finish the creation of the coordinate system @@ -201,7 +208,7 @@ PROGRAM NONLINEARPOISSONEXAMPLE !Start the creation of a basis (default is trilinear lagrange) CALL cmfe_Basis_Initialise(Basis,Err) - CALL cmfe_Basis_CreateStart(BasisUserNumber,Basis,Err) + CALL cmfe_Basis_CreateStart(BasisUserNumber,context,Basis,Err) CALL cmfe_Basis_NumberOfXiSet(Basis,NUMBER_DIMENSIONS,Err) SELECT CASE(INTERPOLATION_TYPE) CASE(1,2,3,4) @@ -209,7 +216,7 @@ PROGRAM NONLINEARPOISSONEXAMPLE CASE(7,8,9) CALL cmfe_Basis_TypeSet(Basis,CMFE_BASIS_SIMPLEX_TYPE,Err) CASE DEFAULT - CALL HANDLE_ERROR("Invalid interpolation type.") + CALL HandleError("Invalid interpolation type.") END SELECT SELECT CASE(INTERPOLATION_TYPE) CASE(1) @@ -268,7 +275,7 @@ PROGRAM NONLINEARPOISSONEXAMPLE CALL cmfe_Decomposition_CreateStart(DecompositionUserNumber,Mesh,Decomposition,Err) !Set the decomposition to be a general decomposition with the specified number of domains CALL cmfe_Decomposition_TypeSet(Decomposition,CMFE_DECOMPOSITION_CALCULATED_TYPE,Err) - CALL cmfe_Decomposition_NumberOfDomainsSet(Decomposition,NumberOfComputationalNodes,Err) + CALL cmfe_Decomposition_NumberOfDomainsSet(Decomposition,NumberOfComputationNodes,Err) !Finish the decomposition CALL cmfe_Decomposition_CreateFinish(Decomposition,Err) @@ -338,8 +345,8 @@ PROGRAM NONLINEARPOISSONEXAMPLE !Start the creation of a problem. CALL cmfe_Problem_Initialise(Problem,Err) - CALL cmfe_Problem_CreateStart(ProblemUserNumber,[CMFE_PROBLEM_CLASSICAL_FIELD_CLASS,CMFE_PROBLEM_POISSON_EQUATION_TYPE, & - & CMFE_PROBLEM_NONLINEAR_SOURCE_POISSON_SUBTYPE],Problem,Err) + CALL cmfe_Problem_CreateStart(ProblemUserNumber,context,[CMFE_PROBLEM_CLASSICAL_FIELD_CLASS, & + & CMFE_PROBLEM_POISSON_EQUATION_TYPE,CMFE_PROBLEM_NONLINEAR_SOURCE_POISSON_SUBTYPE],Problem,Err) !Finish the creation of a problem. CALL cmfe_Problem_CreateFinish(Problem,Err) @@ -405,7 +412,7 @@ PROGRAM NONLINEARPOISSONEXAMPLE ENDIF !Finialise CMISS - CALL cmfe_Finalise(Err) + CALL cmfe_Finalise(context,Err) WRITE(*,'(A)') "Program successfully completed." @@ -413,13 +420,13 @@ PROGRAM NONLINEARPOISSONEXAMPLE CONTAINS - SUBROUTINE HANDLE_ERROR(ERROR_STRING) + SUBROUTINE HandleError(ERROR_STRING) CHARACTER(LEN=*), INTENT(IN) :: ERROR_STRING WRITE(*,'(">>ERROR: ",A)') ERROR_STRING(1:LEN_TRIM(ERROR_STRING)) STOP - END SUBROUTINE HANDLE_ERROR + END SUBROUTINE HandleError -END PROGRAM NONLINEARPOISSONEXAMPLE +END PROGRAM NonlinearPoissonExample diff --git a/tests/ClassicalField/Laplace.f90 b/tests/ClassicalField/Laplace.f90 index c4ff1b80..816ef6e8 100644 --- a/tests/ClassicalField/Laplace.f90 +++ b/tests/ClassicalField/Laplace.f90 @@ -46,7 +46,7 @@ !< !> Main program -PROGRAM LAPLACEEXAMPLE +PROGRAM LaplaceExample USE OpenCMISS USE OpenCMISS_Iron @@ -97,7 +97,9 @@ PROGRAM LAPLACEEXAMPLE TYPE(cmfe_BasisType) :: Basis TYPE(cmfe_BoundaryConditionsType) :: BoundaryConditions - TYPE(cmfe_CoordinateSystemType) :: CoordinateSystem,WorldCoordinateSystem + TYPE(cmfe_ComputationEnvironmentType) :: ComputationEnvironment + TYPE(cmfe_ContextType) :: context + TYPE(cmfe_CoordinateSystemType) :: CoordinateSystem TYPE(cmfe_DecompositionType) :: Decomposition TYPE(cmfe_EquationsType) :: Equations TYPE(cmfe_EquationsSetType) :: EquationsSet @@ -119,7 +121,7 @@ PROGRAM LAPLACEEXAMPLE !Generic CMISS variables - INTEGER(CMISSIntg) :: NumberOfComputationalNodes,ComputationalNodeNumber + INTEGER(CMISSIntg) :: NumberOfComputationNodes,ComputationNodeNumber INTEGER(CMISSIntg) :: EquationsSetIndex INTEGER(CMISSIntg) :: FirstNodeNumber,LastNodeNumber INTEGER(CMISSIntg) :: FirstNodeDomain,LastNodeDomain @@ -141,21 +143,21 @@ PROGRAM LAPLACEEXAMPLE !If we have enough arguments then use the first four for setting up the problem. The subsequent arguments may be used to !pass flags to, say, PETSc. CALL GET_COMMAND_ARGUMENT(1,COMMAND_ARGUMENT,ARGUMENT_LENGTH,STATUS) - IF(STATUS>0) CALL HANDLE_ERROR("Error for command argument 1.") + IF(STATUS>0) CALL HandleError("Error for command argument 1.") READ(COMMAND_ARGUMENT(1:ARGUMENT_LENGTH),*) NUMBER_GLOBAL_X_ELEMENTS - IF(NUMBER_GLOBAL_X_ELEMENTS<=0) CALL HANDLE_ERROR("Invalid number of X elements.") + IF(NUMBER_GLOBAL_X_ELEMENTS<=0) CALL HandleError("Invalid number of X elements.") CALL GET_COMMAND_ARGUMENT(2,COMMAND_ARGUMENT,ARGUMENT_LENGTH,STATUS) - IF(STATUS>0) CALL HANDLE_ERROR("Error for command argument 2.") + IF(STATUS>0) CALL HandleError("Error for command argument 2.") READ(COMMAND_ARGUMENT(1:ARGUMENT_LENGTH),*) NUMBER_GLOBAL_Y_ELEMENTS - IF(NUMBER_GLOBAL_Y_ELEMENTS<=0) CALL HANDLE_ERROR("Invalid number of Y elements.") + IF(NUMBER_GLOBAL_Y_ELEMENTS<=0) CALL HandleError("Invalid number of Y elements.") CALL GET_COMMAND_ARGUMENT(3,COMMAND_ARGUMENT,ARGUMENT_LENGTH,STATUS) - IF(STATUS>0) CALL HANDLE_ERROR("Error for command argument 3.") + IF(STATUS>0) CALL HandleError("Error for command argument 3.") READ(COMMAND_ARGUMENT(1:ARGUMENT_LENGTH),*) NUMBER_GLOBAL_Z_ELEMENTS - IF(NUMBER_GLOBAL_Z_ELEMENTS<0) CALL HANDLE_ERROR("Invalid number of Z elements.") + IF(NUMBER_GLOBAL_Z_ELEMENTS<0) CALL HandleError("Invalid number of Z elements.") CALL GET_COMMAND_ARGUMENT(4,COMMAND_ARGUMENT,ARGUMENT_LENGTH,STATUS) - IF(STATUS>0) CALL HANDLE_ERROR("Error for command argument 4.") + IF(STATUS>0) CALL HandleError("Error for command argument 4.") READ(COMMAND_ARGUMENT(1:ARGUMENT_LENGTH),*) INTERPOLATION_TYPE - IF(INTERPOLATION_TYPE<=0) CALL HANDLE_ERROR("Invalid Interpolation specification.") + IF(INTERPOLATION_TYPE<=0) CALL HandleError("Invalid Interpolation specification.") ELSE !If there are not enough arguments default the problem specification NUMBER_GLOBAL_X_ELEMENTS=1 @@ -170,11 +172,15 @@ PROGRAM LAPLACEEXAMPLE ENDIF !Intialise OpenCMISS - CALL cmfe_Initialise(WorldCoordinateSystem,WorldRegion,Err) - + CALL cmfe_Context_Initialise(context,err) + CALL cmfe_Initialise(context,Err) + + CALL cmfe_Region_Initialise(worldRegion,err) + CALL cmfe_Context_WorldRegionGet(context,worldRegion,err) + CALL cmfe_ErrorHandlingModeSet(CMFE_ERRORS_TRAP_ERROR,Err) - CALL cmfe_RandomSeedsSet(9999,Err) + CALL cmfe_Context_RandomSeedsSet(context,9999,Err) CALL cmfe_DiagnosticsSetOn(CMFE_IN_DIAG_TYPE,[1,2,3,4,5],"Diagnostics",["DOMAIN_MAPPINGS_LOCAL_FROM_GLOBAL_CALCULATE"],Err) @@ -183,13 +189,15 @@ PROGRAM LAPLACEEXAMPLE CALL cmfe_OutputSetOn(Filename,Err) - !Get the computational nodes information - CALL cmfe_ComputationalNumberOfNodesGet(NumberOfComputationalNodes,Err) - CALL cmfe_ComputationalNodeNumberGet(ComputationalNodeNumber,Err) + !Get the computation nodes information + CALL cmfe_ComputationEnvironment_Initialise(ComputationEnvironment,Err) + CALL cmfe_Context_ComputationEnvironmentGet(context,computationEnvironment,err) + CALL cmfe_ComputationEnvironment_NumberOfWorldNodesGet(ComputationEnvironment,NumberOfComputationNodes,Err) + CALL cmfe_ComputationEnvironment_WorldNodeNumberGet(ComputationEnvironment,ComputationNodeNumber,Err) !Start the creation of a new RC coordinate system CALL cmfe_CoordinateSystem_Initialise(CoordinateSystem,Err) - CALL cmfe_CoordinateSystem_CreateStart(CoordinateSystemUserNumber,CoordinateSystem,Err) + CALL cmfe_CoordinateSystem_CreateStart(CoordinateSystemUserNumber,context,CoordinateSystem,Err) IF(NUMBER_GLOBAL_Z_ELEMENTS==0) THEN !Set the coordinate system to be 2D CALL cmfe_CoordinateSystem_DimensionSet(CoordinateSystem,2,Err) @@ -211,14 +219,14 @@ PROGRAM LAPLACEEXAMPLE !Start the creation of a basis (default is trilinear lagrange) CALL cmfe_Basis_Initialise(Basis,Err) - CALL cmfe_Basis_CreateStart(BasisUserNumber,Basis,Err) + CALL cmfe_Basis_CreateStart(BasisUserNumber,context,Basis,Err) SELECT CASE(INTERPOLATION_TYPE) CASE(1,2,3,4) CALL cmfe_Basis_TypeSet(Basis,CMFE_BASIS_LAGRANGE_HERMITE_TP_TYPE,Err) CASE(7,8,9) CALL cmfe_Basis_TypeSet(Basis,CMFE_BASIS_SIMPLEX_TYPE,Err) CASE DEFAULT - CALL HANDLE_ERROR("Invalid interpolation type.") + CALL HandleError("Invalid interpolation type.") END SELECT SELECT CASE(INTERPOLATION_TYPE) CASE(1) @@ -273,7 +281,7 @@ PROGRAM LAPLACEEXAMPLE CALL cmfe_Decomposition_CreateStart(DecompositionUserNumber,Mesh,Decomposition,Err) !Set the decomposition to be a general decomposition with the specified number of domains CALL cmfe_Decomposition_TypeSet(Decomposition,CMFE_DECOMPOSITION_CALCULATED_TYPE,Err) - CALL cmfe_Decomposition_NumberOfDomainsSet(Decomposition,NumberOfComputationalNodes,Err) + CALL cmfe_Decomposition_NumberOfDomainsSet(Decomposition,NumberOfComputationNodes,Err) !Finish the decomposition CALL cmfe_Decomposition_CreateFinish(Decomposition,Err) @@ -335,7 +343,7 @@ PROGRAM LAPLACEEXAMPLE !Start the creation of a problem. CALL cmfe_Problem_Initialise(Problem,Err) - CALL cmfe_Problem_CreateStart(ProblemUserNumber,[CMFE_PROBLEM_CLASSICAL_FIELD_CLASS,CMFE_PROBLEM_LAPLACE_EQUATION_TYPE, & + CALL cmfe_Problem_CreateStart(ProblemUserNumber,context,[CMFE_PROBLEM_CLASSICAL_FIELD_CLASS,CMFE_PROBLEM_LAPLACE_EQUATION_TYPE, & & CMFE_PROBLEM_STANDARD_LAPLACE_SUBTYPE],Problem,Err) !Finish the creation of a problem. CALL cmfe_Problem_CreateFinish(Problem,Err) @@ -394,11 +402,11 @@ PROGRAM LAPLACEEXAMPLE CALL cmfe_Nodes_NumberOfNodesGet(Nodes,LastNodeNumber,Err) CALL cmfe_Decomposition_NodeDomainGet(Decomposition,FirstNodeNumber,1,FirstNodeDomain,Err) CALL cmfe_Decomposition_NodeDomainGet(Decomposition,LastNodeNumber,1,LastNodeDomain,Err) - IF(FirstNodeDomain==ComputationalNodeNumber) THEN + IF(FirstNodeDomain==ComputationNodeNumber) THEN CALL cmfe_BoundaryConditions_SetNode(BoundaryConditions,DependentField,CMFE_FIELD_U_VARIABLE_TYPE,1,1,FirstNodeNumber,1, & & CMFE_BOUNDARY_CONDITION_FIXED,0.0_CMISSRP,Err) ENDIF - IF(LastNodeDomain==ComputationalNodeNumber) THEN + IF(LastNodeDomain==ComputationNodeNumber) THEN CALL cmfe_BoundaryConditions_SetNode(BoundaryConditions,DependentField,CMFE_FIELD_U_VARIABLE_TYPE,1,1,LastNodeNumber,1, & & CMFE_BOUNDARY_CONDITION_FIXED,1.0_CMISSRP,Err) ENDIF @@ -416,7 +424,7 @@ PROGRAM LAPLACEEXAMPLE CALL cmfe_Fields_Finalise(Fields,Err) !Finialise CMISS - CALL cmfe_Finalise(Err) + CALL cmfe_Finalise(context,Err) WRITE(*,'(A)') "Program successfully completed." @@ -424,13 +432,13 @@ PROGRAM LAPLACEEXAMPLE CONTAINS - SUBROUTINE HANDLE_ERROR(ERROR_STRING) + SUBROUTINE HandleError(ERROR_STRING) CHARACTER(LEN=*), INTENT(IN) :: ERROR_STRING WRITE(*,'(">>ERROR: ",A)') ERROR_STRING(1:LEN_TRIM(ERROR_STRING)) STOP - END SUBROUTINE HANDLE_ERROR + END SUBROUTINE HandleError -END PROGRAM LAPLACEEXAMPLE +END PROGRAM LaplaceExample diff --git a/tests/FieldML/StaticAdvectionDiffusion_FieldML.f90 b/tests/FieldML/StaticAdvectionDiffusion_FieldML.f90 index 7b6add97..e2ada04e 100644 --- a/tests/FieldML/StaticAdvectionDiffusion_FieldML.f90 +++ b/tests/FieldML/StaticAdvectionDiffusion_FieldML.f90 @@ -46,7 +46,7 @@ !< !> Main program -PROGRAM STATICADVECTIONDIFFUSIONEXAMPLE +PROGRAM StaticAdvectionDiffusionExample USE OpenCMISS USE OpenCMISS_Iron @@ -105,7 +105,8 @@ PROGRAM STATICADVECTIONDIFFUSIONEXAMPLE TYPE(cmfe_BasisType) :: Basis TYPE(cmfe_BoundaryConditionsType) :: BoundaryConditions - TYPE(cmfe_CoordinateSystemType) :: CoordinateSystem,WorldCoordinateSystem + TYPE(cmfe_ContextType) :: context + TYPE(cmfe_CoordinateSystemType) :: CoordinateSystem TYPE(cmfe_DecompositionType) :: Decomposition TYPE(cmfe_EquationsType) :: Equations TYPE(cmfe_EquationsSetType) :: EquationsSet @@ -156,7 +157,10 @@ PROGRAM STATICADVECTIONDIFFUSIONEXAMPLE #endif !Intialise OpenCMISS - CALL cmfe_Initialise(WorldCoordinateSystem,WorldRegion,Err) + CALL cmfe_Context_Initialise(context,err) + CALL cmfe_Initialise(context,Err) + CALL cmfe_Region_Initialise(worldRegion,err) + CALL cmfe_Context_WorldRegionGet(context,worldRegion,err) CALL cmfe_ErrorHandlingModeSet(CMFE_ERRORS_TRAP_ERROR,Err) @@ -179,7 +183,7 @@ PROGRAM STATICADVECTIONDIFFUSIONEXAMPLE !Start the creation of a new RC coordinate system CALL cmfe_CoordinateSystem_Initialise(CoordinateSystem,Err) - CALL cmfe_CoordinateSystem_CreateStart(CoordinateSystemUserNumber,CoordinateSystem,Err) + CALL cmfe_CoordinateSystem_CreateStart(CoordinateSystemUserNumber,context,CoordinateSystem,Err) CALL cmfe_CoordinateSystem_DimensionSet(CoordinateSystem,dimensions,Err) !Finish the creation of the coordinate system CALL cmfe_CoordinateSystem_CreateFinish(CoordinateSystem,Err) @@ -194,7 +198,7 @@ PROGRAM STATICADVECTIONDIFFUSIONEXAMPLE !Start the creation of a basis (default is trilinear lagrange) CALL cmfe_Basis_Initialise(Basis,Err) - CALL cmfe_Basis_CreateStart(BasisUserNumber,Basis,Err) + CALL cmfe_Basis_CreateStart(BasisUserNumber,context,Basis,Err) CALL cmfe_Basis_NumberOfXiSet(Basis,dimensions,Err) !Finish the creation of the basis CALL cmfe_Basis_CreateFinish(BASIS,Err) @@ -350,7 +354,7 @@ PROGRAM STATICADVECTIONDIFFUSIONEXAMPLE !Create the problem CALL cmfe_Problem_Initialise(Problem,Err) - CALL cmfe_Problem_CreateStart(ProblemUserNumber,[CMFE_PROBLEM_CLASSICAL_FIELD_CLASS, & + CALL cmfe_Problem_CreateStart(ProblemUserNumber,context,[CMFE_PROBLEM_CLASSICAL_FIELD_CLASS, & & CMFE_PROBLEM_ADVECTION_DIFFUSION_EQUATION_TYPE,CMFE_PROBLEM_LINEAR_SOURCE_STATIC_ADVEC_DIFF_SUBTYPE],Problem,Err) !Finish the creation of a problem. CALL cmfe_Problem_CreateFinish(Problem,Err) @@ -447,9 +451,9 @@ PROGRAM STATICADVECTIONDIFFUSIONEXAMPLE ENDIF - !CALL cmfe_Finalise(Err) + CALL cmfe_Finalise(context,Err) WRITE(*,'(A)') "Program successfully completed." STOP -END PROGRAM STATICADVECTIONDIFFUSIONEXAMPLE +END PROGRAM StaticAdvectionDiffusionExample diff --git a/tests/FieldML_IO/cube.f90 b/tests/FieldML_IO/cube.f90 index 22dbdfbc..278ff132 100644 --- a/tests/FieldML_IO/cube.f90 +++ b/tests/FieldML_IO/cube.f90 @@ -52,10 +52,10 @@ MODULE IRON_TEST_FIELDML_CUBE CONTAINS - SUBROUTINE TestFieldMLIOCube(worldRegion) - TYPE(cmfe_RegionType), INTENT(IN) :: worldRegion + SUBROUTINE TestFieldMLIOCube(context) + TYPE(cmfe_ContextType), INTENT(IN) :: context ! local variables - TYPE(cmfe_RegionType) :: region + TYPE(cmfe_RegionType) :: region,worldRegion TYPE(cmfe_MeshType) :: mesh TYPE(cmfe_FieldType) :: geometricField INTEGER(CMISSIntg) :: err @@ -63,11 +63,14 @@ SUBROUTINE TestFieldMLIOCube(worldRegion) err = 0 CALL BEGIN_TEST("cube") + CALL cmfe_Region_Initialise(worldRegion,err) + CALL cmfe_Context_WorldRegionGet(context,worldRegion,err) + ! Initial FieldML file is using Zinc-like naming conventions ! Files exported from Zinc are currently not yet readable in Iron due to the ! additional derivative/version mappings for element field parameters, which ! are present even for Lagrange bases (and set to defaults of 1). - CALL ReadCube(worldRegion, "input/cube.fieldml", & + CALL ReadCube(context,worldRegion, "input/cube.fieldml", & & region, mesh, geometricField, & & geometricFieldName = "coordinates", & & geometricFieldNodeParametersName = "nodes.coordinates", & @@ -84,7 +87,7 @@ SUBROUTINE TestFieldMLIOCube(worldRegion) CALL cmfe_Region_Destroy(region, err) ! File is re-read with Iron naming conventions - CALL ReadCube(worldRegion, "cube.fieldml", & + CALL ReadCube(context,worldRegion, "cube.fieldml", & & region, mesh, geometricField, & & geometricFieldName = "coordinates", & & geometricFieldNodeParametersName = "coordinates.dofs.node", & @@ -101,9 +104,10 @@ SUBROUTINE TestFieldMLIOCube(worldRegion) CALL END_TEST() END SUBROUTINE TestFieldMLIOCube - SUBROUTINE ReadCube(worldRegion, inputFilename, region, mesh, geometricField, & + SUBROUTINE ReadCube(context, worldRegion, inputFilename, region, mesh, geometricField, & & geometricFieldName, geometricFieldNodeParametersName, nodesArgumentName, & & basisEvaluatorName, meshArgumentName, meshComponentTemplateName) + TYPE(cmfe_ContextType), INTENT(IN) :: context TYPE(cmfe_RegionType), INTENT(IN) :: worldRegion CHARACTER(KIND=C_CHAR,LEN=*), INTENT(IN) :: inputFilename CHARACTER(KIND=C_CHAR,LEN=*), INTENT(IN) :: geometricFieldName @@ -117,19 +121,21 @@ SUBROUTINE ReadCube(worldRegion, inputFilename, region, mesh, geometricField, & TYPE(cmfe_FieldType), INTENT(OUT) :: geometricField ! local variables TYPE(cmfe_BasisType) :: basis + TYPE(cmfe_ComputationEnvironmentType) :: ComputationEnvironment TYPE(cmfe_CoordinateSystemType) :: coordinateSystem TYPE(cmfe_DecompositionType) :: decomposition TYPE(cmfe_NodesType) :: nodes TYPE(cmfe_FieldMLIOType) :: fieldmlInfo - INTEGER(CMISSIntg) :: numberOfComputationalNodes, computationalNodeNumber + INTEGER(CMISSIntg) :: numberOfComputationNodes, computationNodeNumber INTEGER(CMISSIntg) :: err err = 0 - ! Get computational nodes information - - CALL cmfe_ComputationalNumberOfNodesGet(numberOfComputationalNodes, err) - CALL cmfe_ComputationalNodeNumberGet(computationalNodeNumber, err) + ! Get computation nodes information + CALL cmfe_ComputationEnvironment_Initialise(ComputationEnvironment,Err) + CALL cmfe_Context_ComputationEnvironmentGet(context,computationEnvironment,err) + CALL cmfe_ComputationEnvironment_NumberOfWorldNodesGet(ComputationEnvironment,NumberOfComputationNodes,Err) + CALL cmfe_ComputationEnvironment_WorldNodeNumberGet(ComputationEnvironment,ComputationNodeNumber,Err) ! Initialise FieldML and parse input file @@ -139,8 +145,8 @@ SUBROUTINE ReadCube(worldRegion, inputFilename, region, mesh, geometricField, & ! Define Coordinate System from value type of coordinates field evaluator CALL cmfe_CoordinateSystem_Initialise(coordinateSystem, err) - CALL cmfe_FieldML_InputCoordinateSystemCreateStart( fieldmlInfo, geometricFieldName, coordinateSystem, & - & AUTO_USER_NUMBER(), err ) + CALL cmfe_FieldML_InputCoordinateSystemCreateStart( fieldmlInfo, geometricFieldName, & + & AUTO_USER_NUMBER(), context, coordinateSystem, err ) CALL cmfe_CoordinateSystem_CreateFinish(coordinateSystem, err) ! CALL cmfe_CoordinateSystem_DimensionGet(coordinateSystem, coordinateCount, err ) @@ -161,7 +167,7 @@ SUBROUTINE ReadCube(worldRegion, inputFilename, region, mesh, geometricField, & ! Define bases from FieldML evaluator (referencing interpolator) CALL cmfe_Basis_Initialise(basis, err) - CALL cmfe_FieldML_InputBasisCreateStart(fieldmlInfo, basisEvaluatorName, AUTO_USER_NUMBER(), basis, err) + CALL cmfe_FieldML_InputBasisCreateStart(fieldmlInfo, basisEvaluatorName, AUTO_USER_NUMBER(), context, basis, err) CALL cmfe_Basis_CreateFinish(basis, err) ! Define mesh from FieldML mesh argument @@ -178,7 +184,7 @@ SUBROUTINE ReadCube(worldRegion, inputFilename, region, mesh, geometricField, & CALL cmfe_Decomposition_Initialise(decomposition, err) CALL cmfe_Decomposition_CreateStart(AUTO_USER_NUMBER(), mesh, decomposition, err) CALL cmfe_Decomposition_TypeSet(decomposition, CMFE_DECOMPOSITION_ALL_TYPE, err) - CALL cmfe_Decomposition_NumberOfDomainsSet(decomposition, numberOfComputationalNodes, err) + CALL cmfe_Decomposition_NumberOfDomainsSet(decomposition, numberOfComputationNodes, err) CALL cmfe_Decomposition_CreateFinish(decomposition, err) ! Define Geometric Field diff --git a/tests/FieldML_IO/fieldml_arguments.f90 b/tests/FieldML_IO/fieldml_arguments.f90 index 957dda88..99475286 100644 --- a/tests/FieldML_IO/fieldml_arguments.f90 +++ b/tests/FieldML_IO/fieldml_arguments.f90 @@ -52,18 +52,18 @@ MODULE IRON_TEST_FIELDML_ARGUMENTS CONTAINS - SUBROUTINE TestFieldMLArguments(worldRegion) - TYPE(cmfe_RegionType), INTENT(IN) :: worldRegion + SUBROUTINE TestFieldMLArguments(context) + TYPE(cmfe_ContextType), INTENT(IN) :: context - CALL TestFieldMLInvalidInfo(worldRegion) + CALL TestFieldMLInvalidInfo(context) + END SUBROUTINE TestFieldMLArguments ! Call FieldML routines with initialised but not created fieldmlInfo - SUBROUTINE TestFieldMLInvalidInfo(worldRegion) - TYPE(cmfe_RegionType), INTENT(IN) :: worldRegion - ! local variables - TYPE(cmfe_RegionType) :: region + SUBROUTINE TestFieldMLInvalidInfo(context) + TYPE(cmfe_ContextType), INTENT(IN) :: context ! local variables + TYPE(cmfe_RegionType) :: region,worldRegion TYPE(cmfe_CoordinateSystemType) :: coordinateSystem TYPE(cmfe_FieldType) :: geometricField TYPE(cmfe_NodesType) :: nodes @@ -74,6 +74,9 @@ SUBROUTINE TestFieldMLInvalidInfo(worldRegion) err = 0 CALL BEGIN_TEST("invalid info") + CALL cmfe_Region_Initialise(worldRegion,err) + CALL cmfe_Context_WorldRegionGet(context,worldRegion,err) + ! Don't want to trap errors; this tests that they fail gracefully CALL cmfe_ErrorHandlingModeGet(originalErrorHandlingMode, err) CALL cmfe_ErrorHandlingModeSet(CMFE_ERRORS_OUTPUT_ERROR, err) @@ -81,8 +84,8 @@ SUBROUTINE TestFieldMLInvalidInfo(worldRegion) CALL cmfe_FieldMLIO_Initialise(fieldmlInfo, err) CALL cmfe_CoordinateSystem_Initialise(coordinateSystem, err) - CALL cmfe_FieldML_InputCoordinateSystemCreateStart( fieldmlInfo, "dummy field name", coordinateSystem, & - & AUTO_USER_NUMBER(), err ) + CALL cmfe_FieldML_InputCoordinateSystemCreateStart( fieldmlInfo, "dummy field name", & + & AUTO_USER_NUMBER(), context, coordinateSystem, err ) CALL EXPECT_EQ("cmfe_FieldML_InputCoordinateSystemCreateStart result with null FieldML info argument", 1, err) CALL cmfe_Region_Initialise(region, err) diff --git a/tests/FieldML_IO/fieldml_io.f90 b/tests/FieldML_IO/fieldml_io.f90 index 7fbfcad2..f489f029 100644 --- a/tests/FieldML_IO/fieldml_io.f90 +++ b/tests/FieldML_IO/fieldml_io.f90 @@ -48,30 +48,32 @@ PROGRAM IRON_TEST_FIELDML_IO IMPLICIT NONE ! CMISS variables - TYPE(cmfe_CoordinateSystemType) :: worldCoordinateSystem - TYPE(cmfe_RegionType) :: worldRegion + TYPE(cmfe_ContextType) :: context + TYPE(cmfe_ComputationEnvironmentType) :: ComputationEnvironment ! Generic CMISS variables - INTEGER(CMISSIntg) :: numberOfComputationalNodes, computationalNodeNumber + INTEGER(CMISSIntg) :: numberOfComputationNodes, computationNodeNumber INTEGER(CMISSIntg) :: err CALL INITIALISE_TESTS() ! Initialise OpenCMISS-Iron - CALL cmfe_Initialise(worldCoordinateSystem, worldRegion, err) + CALL cmfe_Context_Initialise(context,err) + CALL cmfe_Initialise(context,Err) CALL cmfe_ErrorHandlingModeSet(CMFE_ERRORS_TRAP_ERROR, err) - ! Get computational nodes information + ! Get computation nodes information + CALL cmfe_ComputationEnvironment_Initialise(ComputationEnvironment,Err) + CALL cmfe_Context_ComputationEnvironmentGet(context,computationEnvironment,err) + CALL cmfe_ComputationEnvironment_NumberOfWorldNodesGet(ComputationEnvironment,NumberOfComputationNodes,Err) + CALL cmfe_ComputationEnvironment_WorldNodeNumberGet(ComputationEnvironment,ComputationNodeNumber,Err) - CALL cmfe_ComputationalNumberOfNodesGet(numberOfComputationalNodes, err) - CALL cmfe_ComputationalNodeNumberGet(computationalNodeNumber, err) + CALL TestFieldMLIOCube(context) + CALL TestFieldMLArguments(context) - CALL TestFieldMLIOCube(worldRegion) - CALL TestFieldMLArguments(worldRegion) - - CALL cmfe_Finalise(err) + CALL cmfe_Finalise(context,err) CALL FINALISE_TESTS(err) diff --git a/tests/FiniteElasticity/Cantilever.f90 b/tests/FiniteElasticity/Cantilever.f90 index 22184bc8..48c622ac 100644 --- a/tests/FiniteElasticity/Cantilever.f90 +++ b/tests/FiniteElasticity/Cantilever.f90 @@ -47,7 +47,7 @@ !< !> Main program -PROGRAM CANTILEVEREXAMPLE +PROGRAM CantileverExample USE OpenCMISS USE OpenCMISS_Iron @@ -98,7 +98,7 @@ PROGRAM CANTILEVEREXAMPLE !Program variables INTEGER(CMISSIntg) :: NumberGlobalXElements,NumberGlobalYElements,NumberGlobalZElements INTEGER(CMISSIntg) :: EquationsSetIndex - INTEGER(CMISSIntg) :: NumberOfComputationalNodes,NumberOfDomains,ComputationalNodeNumber + INTEGER(CMISSIntg) :: NumberOfComputationNodes,NumberOfDomains,ComputationNodeNumber INTEGER(CMISSIntg) :: NodeNumber,NodeDomain,node_idx,component_idx,deriv_idx INTEGER(CMISSIntg),ALLOCATABLE :: LeftSurfaceNodes(:) INTEGER(CMISSIntg) :: LeftNormalXi @@ -108,7 +108,9 @@ PROGRAM CANTILEVEREXAMPLE !CMISS variables TYPE(cmfe_BasisType) :: DisplacementBasis,PressureBasis TYPE(cmfe_BoundaryConditionsType) :: BoundaryConditions - TYPE(cmfe_CoordinateSystemType) :: CoordinateSystem, WorldCoordinateSystem + TYPE(cmfe_ComputationEnvironmentType) :: ComputationEnvironment + TYPE(cmfe_ContextType) :: context + TYPE(cmfe_CoordinateSystemType) :: CoordinateSystem TYPE(cmfe_MeshType) :: Mesh TYPE(cmfe_DecompositionType) :: Decomposition TYPE(cmfe_EquationsType) :: Equations @@ -140,7 +142,10 @@ PROGRAM CANTILEVEREXAMPLE #endif !Intialise cmiss - CALL cmfe_Initialise(WorldCoordinateSystem,WorldRegion,Err) + CALL cmfe_Context_Initialise(context,err) + CALL cmfe_Initialise(context,Err) + CALL cmfe_Region_Initialise(worldRegion,err) + CALL cmfe_Context_WorldRegionGet(context,worldRegion,err) CALL cmfe_ErrorHandlingModeSet(CMFE_ERRORS_TRAP_ERROR,Err) CALL cmfe_OutputSetOn("Cantilever",Err) @@ -156,33 +161,33 @@ PROGRAM CANTILEVEREXAMPLE NumberOfArguments = COMMAND_ARGUMENT_COUNT() IF(NumberOfArguments >= 1) THEN CALL GET_COMMAND_ARGUMENT(1,CommandArgument,ArgumentLength,ArgStatus) - IF(ArgStatus>0) CALL HANDLE_ERROR("Error for command argument 1.") + IF(ArgStatus>0) CALL HandleError("Error for command argument 1.") READ(CommandArgument(1:ArgumentLength),*) DisplacementInterpolationType ENDIF IF(NumberOfArguments >= 2) THEN CALL GET_COMMAND_ARGUMENT(2,CommandArgument,ArgumentLength,ArgStatus) - IF(ArgStatus>0) CALL HANDLE_ERROR("Error for command argument 2.") + IF(ArgStatus>0) CALL HandleError("Error for command argument 2.") READ(CommandArgument(1:ArgumentLength),*) NumberGlobalXElements - IF(NumberGlobalXElements<1) CALL HANDLE_ERROR("Invalid number of X elements.") + IF(NumberGlobalXElements<1) CALL HandleError("Invalid number of X elements.") ENDIF IF(NumberOfArguments >= 3) THEN CALL GET_COMMAND_ARGUMENT(3,CommandArgument,ArgumentLength,ArgStatus) - IF(ArgStatus>0) CALL HANDLE_ERROR("Error for command argument 3.") + IF(ArgStatus>0) CALL HandleError("Error for command argument 3.") READ(CommandArgument(1:ArgumentLength),*) NumberGlobalYElements - IF(NumberGlobalYElements<1) CALL HANDLE_ERROR("Invalid number of Y elements.") + IF(NumberGlobalYElements<1) CALL HandleError("Invalid number of Y elements.") ENDIF IF(NumberOfArguments >= 4) THEN CALL GET_COMMAND_ARGUMENT(4,CommandArgument,ArgumentLength,ArgStatus) - IF(ArgStatus>0) CALL HANDLE_ERROR("Error for command argument 4.") + IF(ArgStatus>0) CALL HandleError("Error for command argument 4.") READ(CommandArgument(1:ArgumentLength),*) NumberGlobalZElements - IF(NumberGlobalZElements<1) CALL HANDLE_ERROR("Invalid number of Z elements.") + IF(NumberGlobalZElements<1) CALL HandleError("Invalid number of Z elements.") ENDIF IF(DisplacementInterpolationType==CMFE_BASIS_CUBIC_HERMITE_INTERPOLATION) THEN IF(NumberOfArguments >= 5) THEN CALL GET_COMMAND_ARGUMENT(5,CommandArgument,ArgumentLength,ArgStatus) - IF(ArgStatus>0) CALL HANDLE_ERROR("Error for command argument 5.") + IF(ArgStatus>0) CALL HandleError("Error for command argument 5.") READ(CommandArgument(1:ArgumentLength),*) ScalingType - IF(ScalingType<0.OR.ScalingType>5) CALL HANDLE_ERROR("Invalid scaling type.") + IF(ScalingType<0.OR.ScalingType>5) CALL HandleError("Invalid scaling type.") ENDIF ELSE ScalingType=CMFE_FIELD_NO_SCALING @@ -208,15 +213,17 @@ PROGRAM CANTILEVEREXAMPLE WRITE(*,'("Elements: ", 3 i3)') NumberGlobalXElements,NumberGlobalYElements,NumberGlobalZElements WRITE(*,'("Scaling type: ", i3)') ScalingType - !Get the number of computational nodes and this computational node number - CALL cmfe_ComputationalNumberOfNodesGet(NumberOfComputationalNodes,Err) - CALL cmfe_ComputationalNodeNumberGet(ComputationalNodeNumber,Err) + !Get the number of computation nodes and this computation node number + CALL cmfe_ComputationEnvironment_Initialise(ComputationEnvironment,Err) + CALL cmfe_Context_ComputationEnvironmentGet(context,computationEnvironment,err) + CALL cmfe_ComputationEnvironment_NumberOfWorldNodesGet(ComputationEnvironment,NumberOfComputationNodes,Err) + CALL cmfe_ComputationEnvironment_WorldNodeNumberGet(ComputationEnvironment,ComputationNodeNumber,Err) - NumberOfDomains=NumberOfComputationalNodes + NumberOfDomains=NumberOfComputationNodes !Create a 3D rectangular cartesian coordinate system CALL cmfe_CoordinateSystem_Initialise(CoordinateSystem,Err) - CALL cmfe_CoordinateSystem_CreateStart(CoordinateSystemUserNumber,CoordinateSystem,Err) + CALL cmfe_CoordinateSystem_CreateStart(CoordinateSystemUserNumber,context,CoordinateSystem,Err) CALL cmfe_CoordinateSystem_CreateFinish(CoordinateSystem,Err) !Create a region and assign the coordinate system to the region @@ -228,7 +235,7 @@ PROGRAM CANTILEVEREXAMPLE !Define basis function for displacement CALL cmfe_Basis_Initialise(DisplacementBasis,Err) - CALL cmfe_Basis_CreateStart(DisplacementBasisUserNumber,DisplacementBasis,Err) + CALL cmfe_Basis_CreateStart(DisplacementBasisUserNumber,context,DisplacementBasis,Err) SELECT CASE(DisplacementInterpolationType) CASE(1,2,3,4) CALL cmfe_Basis_TypeSet(DisplacementBasis,CMFE_BASIS_LAGRANGE_HERMITE_TP_TYPE,Err) @@ -246,7 +253,7 @@ PROGRAM CANTILEVEREXAMPLE IF(PressureMeshComponent/=1) THEN !Basis for pressure CALL cmfe_Basis_Initialise(PressureBasis,Err) - CALL cmfe_Basis_CreateStart(PressureBasisUserNumber,PressureBasis,Err) + CALL cmfe_Basis_CreateStart(PressureBasisUserNumber,context,PressureBasis,Err) SELECT CASE(PressureInterpolationType) CASE(1,2,3,4) CALL cmfe_Basis_TypeSet(PressureBasis,CMFE_BASIS_LAGRANGE_HERMITE_TP_TYPE,Err) @@ -388,7 +395,7 @@ PROGRAM CANTILEVEREXAMPLE !Define the problem CALL cmfe_Problem_Initialise(Problem,Err) - CALL cmfe_Problem_CreateStart(ProblemUserNumber,[CMFE_PROBLEM_ELASTICITY_CLASS,CMFE_PROBLEM_FINITE_ELASTICITY_TYPE, & + CALL cmfe_Problem_CreateStart(ProblemUserNumber,context,[CMFE_PROBLEM_ELASTICITY_CLASS,CMFE_PROBLEM_FINITE_ELASTICITY_TYPE, & & CMFE_PROBLEM_NO_SUBTYPE],Problem,Err) CALL cmfe_Problem_CreateFinish(Problem,Err) @@ -430,7 +437,7 @@ PROGRAM CANTILEVEREXAMPLE DO node_idx=1,SIZE(LeftSurfaceNodes,1) NodeNumber=LeftSurfaceNodes(node_idx) CALL cmfe_Decomposition_NodeDomainGet(Decomposition,NodeNumber,1,NodeDomain,Err) - IF(NodeDomain==ComputationalNodeNumber) THEN + IF(NodeDomain==ComputationNodeNumber) THEN DO component_idx=1,3 CALL cmfe_BoundaryConditions_AddNode(BoundaryConditions,DependentField,CMFE_FIELD_U_VARIABLE_TYPE,1,1,NodeNumber, & & component_idx,CMFE_BOUNDARY_CONDITION_FIXED,0.0_CMISSRP,Err) @@ -457,7 +464,7 @@ PROGRAM CANTILEVEREXAMPLE CALL cmfe_Fields_ElementsExport(Fields,"Cantilever","FORTRAN",Err) CALL cmfe_Fields_Finalise(Fields,Err) - CALL cmfe_Finalise(Err) + CALL cmfe_Finalise(context,Err) WRITE(*,'(A)') "Program successfully completed." @@ -465,12 +472,13 @@ PROGRAM CANTILEVEREXAMPLE CONTAINS - SUBROUTINE HANDLE_ERROR(ERROR_STRING) + SUBROUTINE HandleError(ERROR_STRING) CHARACTER(LEN=*), INTENT(IN) :: ERROR_STRING WRITE(*,'(">>ERROR: ",A)') ERROR_STRING(1:LEN_TRIM(ERROR_STRING)) STOP - END SUBROUTINE HANDLE_ERROR + END SUBROUTINE HandleError + +END PROGRAM CantileverExample -END PROGRAM CANTILEVEREXAMPLE diff --git a/tests/FiniteElasticity/SimpleShear.f90 b/tests/FiniteElasticity/SimpleShear.f90 index fecaa8d4..daddf3a0 100644 --- a/tests/FiniteElasticity/SimpleShear.f90 +++ b/tests/FiniteElasticity/SimpleShear.f90 @@ -47,7 +47,7 @@ !< !> Main program -PROGRAM SIMPLESHEAREXAMPLE +PROGRAM SimpleShearExample USE OpenCMISS USE OpenCMISS_Iron @@ -100,7 +100,7 @@ PROGRAM SIMPLESHEAREXAMPLE INTEGER(CMISSIntg) :: NumberGlobalXElements,NumberGlobalYElements,NumberGlobalZElements INTEGER(CMISSIntg) :: EquationsSetIndex - INTEGER(CMISSIntg) :: NumberOfComputationalNodes,NumberOfDomains,ComputationalNodeNumber + INTEGER(CMISSIntg) :: NumberOfComputationNodes,NumberOfDomains,ComputationNodeNumber INTEGER(CMISSIntg) :: NodeNumber,NodeDomain,node_idx INTEGER(CMISSIntg),ALLOCATABLE :: LeftSurfaceNodes(:) INTEGER(CMISSIntg),ALLOCATABLE :: RightSurfaceNodes(:) @@ -115,7 +115,9 @@ PROGRAM SIMPLESHEAREXAMPLE !CMISS variables TYPE(cmfe_BasisType) :: Basis, PressureBasis TYPE(cmfe_BoundaryConditionsType) :: BoundaryConditions - TYPE(cmfe_CoordinateSystemType) :: CoordinateSystem, WorldCoordinateSystem + TYPE(cmfe_ComputationEnvironmentType) :: ComputationEnvironment + TYPE(cmfe_ContextType) :: context + TYPE(cmfe_CoordinateSystemType) :: CoordinateSystem TYPE(cmfe_MeshType) :: Mesh TYPE(cmfe_DecompositionType) :: Decomposition TYPE(cmfe_EquationsType) :: Equations @@ -149,7 +151,10 @@ PROGRAM SIMPLESHEAREXAMPLE #endif !Intialise cmiss - CALL cmfe_Initialise(WorldCoordinateSystem,WorldRegion,Err) + CALL cmfe_Context_Initialise(context,err) + CALL cmfe_Initialise(context,Err) + CALL cmfe_Region_Initialise(worldRegion,err) + CALL cmfe_Context_WorldRegionGet(context,worldRegion,err) CALL cmfe_ErrorHandlingModeSet(CMFE_ERRORS_TRAP_ERROR,Err) @@ -158,18 +163,20 @@ PROGRAM SIMPLESHEAREXAMPLE CALL cmfe_OutputSetOn("SimpleShear",Err) - !Get the number of computational nodes and this computational node number - CALL cmfe_ComputationalNumberOfNodesGet(NumberOfComputationalNodes,Err) - CALL cmfe_ComputationalNodeNumberGet(ComputationalNodeNumber,Err) + !Get the number of computation nodes and this computation node number + CALL cmfe_ComputationEnvironment_Initialise(ComputationEnvironment,Err) + CALL cmfe_Context_ComputationEnvironmentGet(context,computationEnvironment,err) + CALL cmfe_ComputationEnvironment_NumberOfWorldNodesGet(ComputationEnvironment,NumberOfComputationNodes,Err) + CALL cmfe_ComputationEnvironment_WorldNodeNumberGet(ComputationEnvironment,ComputationNodeNumber,Err) NumberGlobalXElements=2 NumberGlobalYElements=2 NumberGlobalZElements=2 - NumberOfDomains=NumberOfComputationalNodes + NumberOfDomains=NumberOfComputationNodes !Create a 3D rectangular cartesian coordinate system CALL cmfe_CoordinateSystem_Initialise(CoordinateSystem,Err) - CALL cmfe_CoordinateSystem_CreateStart(CoordinateSystemUserNumber,CoordinateSystem,Err) + CALL cmfe_CoordinateSystem_CreateStart(CoordinateSystemUserNumber,context,CoordinateSystem,Err) CALL cmfe_CoordinateSystem_CreateFinish(CoordinateSystem,Err) !Create a region and assign the coordinate system to the region @@ -181,7 +188,7 @@ PROGRAM SIMPLESHEAREXAMPLE !Define geometric basis CALL cmfe_Basis_Initialise(Basis,Err) - CALL cmfe_Basis_CreateStart(BasisUserNumber,Basis,Err) + CALL cmfe_Basis_CreateStart(BasisUserNumber,context,Basis,Err) SELECT CASE(InterpolationType) CASE(1,2,3,4) CALL cmfe_Basis_TypeSet(Basis,CMFE_BASIS_LAGRANGE_HERMITE_TP_TYPE,Err) @@ -206,7 +213,7 @@ PROGRAM SIMPLESHEAREXAMPLE !Define pressure basis IF(UsePressureBasis) THEN CALL cmfe_Basis_Initialise(PressureBasis,Err) - CALL cmfe_Basis_CreateStart(PressureBasisUserNumber,PressureBasis,Err) + CALL cmfe_Basis_CreateStart(PressureBasisUserNumber,context,PressureBasis,Err) SELECT CASE(PressureInterpolationType) CASE(1,2,3,4) CALL cmfe_Basis_TypeSet(PressureBasis,CMFE_BASIS_LAGRANGE_HERMITE_TP_TYPE,Err) @@ -352,7 +359,7 @@ PROGRAM SIMPLESHEAREXAMPLE !Define the problem CALL cmfe_Problem_Initialise(Problem,Err) - CALL cmfe_Problem_CreateStart(ProblemUserNumber,[CMFE_PROBLEM_ELASTICITY_CLASS,CMFE_PROBLEM_FINITE_ELASTICITY_TYPE, & + CALL cmfe_Problem_CreateStart(ProblemUserNumber,context,[CMFE_PROBLEM_ELASTICITY_CLASS,CMFE_PROBLEM_FINITE_ELASTICITY_TYPE, & & CMFE_PROBLEM_NO_SUBTYPE],Problem,Err) CALL cmfe_Problem_CreateFinish(Problem,Err) @@ -396,7 +403,7 @@ PROGRAM SIMPLESHEAREXAMPLE DO node_idx=1,SIZE(TopSurfaceNodes,1) NodeNumber=TopSurfaceNodes(node_idx) CALL cmfe_Decomposition_NodeDomainGet(Decomposition,NodeNumber,1,NodeDomain,Err) - IF(NodeDomain==ComputationalNodeNumber) THEN + IF(NodeDomain==ComputationNodeNumber) THEN ! x-direction CALL cmfe_Field_ParameterSetGetNode(GeometricField,CMFE_FIELD_U_VARIABLE_TYPE,CMFE_FIELD_VALUES_SET_TYPE,1,1,NodeNumber,1,& & VALUE,Err) @@ -419,7 +426,7 @@ PROGRAM SIMPLESHEAREXAMPLE DO node_idx=1,SIZE(BottomSurfaceNodes,1) NodeNumber=BottomSurfaceNodes(node_idx) CALL cmfe_Decomposition_NodeDomainGet(Decomposition,NodeNumber,1,NodeDomain,Err) - IF(NodeDomain==ComputationalNodeNumber) THEN + IF(NodeDomain==ComputationNodeNumber) THEN ! x-direction CALL cmfe_Field_ParameterSetGetNode(GeometricField,CMFE_FIELD_U_VARIABLE_TYPE,CMFE_FIELD_VALUES_SET_TYPE,1,1,NodeNumber,1,& & VALUE,Err) @@ -450,11 +457,11 @@ PROGRAM SIMPLESHEAREXAMPLE CALL cmfe_Fields_ElementsExport(Fields,"SimpleShear","FORTRAN",Err) CALL cmfe_Fields_Finalise(Fields,Err) - CALL cmfe_Finalise(Err) + CALL cmfe_Finalise(context,Err) WRITE(*,'(A)') "Program successfully completed." STOP -END PROGRAM SIMPLESHEAREXAMPLE +END PROGRAM SimpleShearExample diff --git a/tests/FluidMechanics/Darcy.f90 b/tests/FluidMechanics/Darcy.f90 index 4d9407dc..2a3c619c 100644 --- a/tests/FluidMechanics/Darcy.f90 +++ b/tests/FluidMechanics/Darcy.f90 @@ -51,7 +51,7 @@ !> Main program -PROGRAM DARCYANALYTICEXAMPLE +PROGRAM DarcyAnalyticExample ! !================================================================================================================================ @@ -165,12 +165,13 @@ PROGRAM DARCYANALYTICEXAMPLE !CMISS variables - !Regions + !Context + TYPE(cmfe_ContextType) :: context + !Regions TYPE(cmfe_RegionType) :: Region TYPE(cmfe_RegionType) :: WorldRegion !Coordinate systems TYPE(cmfe_CoordinateSystemType) :: CoordinateSystem - TYPE(cmfe_CoordinateSystemType) :: WorldCoordinateSystem !Basis TYPE(cmfe_BasisType) :: BasisGeometry TYPE(cmfe_BasisType) :: BasisVelocity @@ -242,7 +243,10 @@ PROGRAM DARCYANALYTICEXAMPLE !INITIALISE OPENCMISS - CALL cmfe_Initialise(WorldCoordinateSystem,WorldRegion,Err) + CALL cmfe_Context_Initialise(context,err) + CALL cmfe_Initialise(context,Err) + CALL cmfe_Region_Initialise(worldRegion,err) + CALL cmfe_Context_WorldRegionGet(context,worldRegion,err) CALL cmfe_ErrorHandlingModeSet(CMFE_ERRORS_TRAP_ERROR,Err) @@ -368,7 +372,7 @@ PROGRAM DARCYANALYTICEXAMPLE !Start the creation of a new RC coordinate system CALL cmfe_CoordinateSystem_Initialise(CoordinateSystem,Err) - CALL cmfe_CoordinateSystem_CreateStart(CoordinateSystemUserNumber,CoordinateSystem,Err) + CALL cmfe_CoordinateSystem_CreateStart(CoordinateSystemUserNumber,context,CoordinateSystem,Err) !Set the coordinate system dimension CALL cmfe_CoordinateSystem_DimensionSet(CoordinateSystem,NUMBER_OF_DIMENSIONS,Err) !Finish the creation of the coordinate system @@ -397,7 +401,7 @@ PROGRAM DARCYANALYTICEXAMPLE !Start the creation of new bases MESH_NUMBER_OF_COMPONENTS=1 CALL cmfe_Basis_Initialise(BasisGeometry,Err) - CALL cmfe_Basis_CreateStart(BASIS_NUMBER_GEOMETRY,BasisGeometry,Err) + CALL cmfe_Basis_CreateStart(BASIS_NUMBER_GEOMETRY,context,BasisGeometry,Err) !Set the basis type (Lagrange/Simplex) CALL cmfe_Basis_TypeSet(BasisGeometry,BASIS_TYPE,Err) !Set the basis xi number @@ -423,7 +427,7 @@ PROGRAM DARCYANALYTICEXAMPLE !Initialise a new velocity basis CALL cmfe_Basis_Initialise(BasisVelocity,Err) !Start the creation of a basis - CALL cmfe_Basis_CreateStart(BASIS_NUMBER_VELOCITY,BasisVelocity,Err) + CALL cmfe_Basis_CreateStart(BASIS_NUMBER_VELOCITY,context,BasisVelocity,Err) !Set the basis type (Lagrange/Simplex) CALL cmfe_Basis_TypeSet(BasisVelocity,BASIS_TYPE,Err) !Set the basis xi number @@ -452,7 +456,7 @@ PROGRAM DARCYANALYTICEXAMPLE !Initialise a new pressure basis CALL cmfe_Basis_Initialise(BasisPressure,Err) !Start the creation of a basis - CALL cmfe_Basis_CreateStart(BASIS_NUMBER_PRESSURE,BasisPressure,Err) + CALL cmfe_Basis_CreateStart(BASIS_NUMBER_PRESSURE,context,BasisPressure,Err) !Set the basis type (Lagrange/Simplex) CALL cmfe_Basis_TypeSet(BasisPressure,BASIS_TYPE,Err) !Set the basis xi number @@ -682,7 +686,7 @@ PROGRAM DARCYANALYTICEXAMPLE !Start the creation of a problem. CALL cmfe_Problem_Initialise(Problem,Err) CALL cmfe_ControlLoop_Initialise(ControlLoop,Err) - CALL cmfe_Problem_CreateStart(ProblemUserNumber,[CMFE_PROBLEM_FLUID_MECHANICS_CLASS,CMFE_PROBLEM_DARCY_EQUATION_TYPE, & + CALL cmfe_Problem_CreateStart(ProblemUserNumber,context,[CMFE_PROBLEM_FLUID_MECHANICS_CLASS,CMFE_PROBLEM_DARCY_EQUATION_TYPE, & & CMFE_PROBLEM_STANDARD_DARCY_SUBTYPE],Problem,Err) !Finish the creation of a problem. CALL cmfe_Problem_CreateFinish(Problem,Err) @@ -788,10 +792,10 @@ PROGRAM DARCYANALYTICEXAMPLE ENDIF !Finialise CMISS - CALL cmfe_Finalise(Err) + CALL cmfe_Finalise(context,Err) WRITE(*,'(A)') "Program successfully completed." STOP -END PROGRAM DARCYANALYTICEXAMPLE +END PROGRAM DarcyAnalyticExample diff --git a/tests/LinearElasticity/CantileverBeam.f90 b/tests/LinearElasticity/CantileverBeam.f90 index ad59c101..da32ed2a 100644 --- a/tests/LinearElasticity/CantileverBeam.f90 +++ b/tests/LinearElasticity/CantileverBeam.f90 @@ -46,7 +46,7 @@ !< !> Main program -PROGRAM ANALYTIC_LINEAR_ELASTICITYEXAMPLE +PROGRAM CantileverBeamExample #ifndef NOMPIMOD USE MPI #endif @@ -97,8 +97,8 @@ PROGRAM ANALYTIC_LINEAR_ELASTICITYEXAMPLE !Program types + TYPE(cmfe_ContextType) :: context TYPE(cmfe_RegionType) :: WorldRegion - TYPE(cmfe_CoordinateSystemType) :: WorldCoordinateSystem #ifdef WIN32 !Quickwin type @@ -121,7 +121,10 @@ PROGRAM ANALYTIC_LINEAR_ELASTICITYEXAMPLE #endif !Intialise cmiss - CALL cmfe_Initialise(WorldCoordinateSystem,WorldRegion,Err) + CALL cmfe_Context_Initialise(context,err) + CALL cmfe_Initialise(context,Err) + CALL cmfe_Region_Initialise(worldRegion,err) + CALL cmfe_Context_WorldRegionGet(context,worldRegion,err) CALL cmfe_ErrorHandlingModeSet(CMFE_ERRORS_TRAP_ERROR,Err) @@ -132,7 +135,7 @@ PROGRAM ANALYTIC_LINEAR_ELASTICITYEXAMPLE CALL ANALYTIC_LINEAR_ELASTICITY_TESTCASE_LINEAR_LAGRANGE_EXPORT(2,2,2,"TriLinearLagrange") - CALL cmfe_Finalise(Err) + CALL cmfe_Finalise(context,Err) WRITE(*,'(A)') "Program successfully completed." @@ -185,11 +188,12 @@ SUBROUTINE ANALYTIC_LINEAR_ELASTICITY_GENERIC(NumberGlobalXElements,NumberGlobal INTEGER(CMISSIntg) :: FieldGeometryNumberOfComponents,FieldDependentNumberOfComponents,NumberOfElements(3) INTEGER(CMISSIntg) :: MPI_IERROR INTEGER(CMISSIntg) :: EquationsSetIndex,FieldComponentIndex,FieldMaterialNumberOfComponents,NumberOfXi - INTEGER(CMISSIntg) :: NumberOfComputationalNodes,ComputationalNodeNumber + INTEGER(CMISSIntg) :: NumberOfComputationNodes,ComputationNodeNumber !CMISS variables TYPE(cmfe_BasisType) :: Basis + TYPE(cmfe_ComputationEnvironmentType) :: ComputationEnvironment TYPE(cmfe_CoordinateSystemType) :: CoordinateSystem TYPE(cmfe_GeneratedMeshType) :: GeneratedMesh TYPE(cmfe_DecompositionType) :: Decomposition @@ -232,11 +236,13 @@ SUBROUTINE ANALYTIC_LINEAR_ELASTICITY_GENERIC(NumberGlobalXElements,NumberGlobal FieldGeometryNumberOfComponents=NumberOfXi FieldDependentNumberOfComponents=NumberOfXi - !Get the number of computational nodes and this computational node number - CALL cmfe_ComputationalNumberOfNodesGet(NumberOfComputationalNodes,Err) - CALL cmfe_ComputationalNodeNumberGet(ComputationalNodeNumber,Err) + !Get the number of computation nodes and this computation node number + CALL cmfe_ComputationEnvironment_Initialise(ComputationEnvironment,Err) + CALL cmfe_Context_ComputationEnvironmentGet(context,computationEnvironment,err) + CALL cmfe_ComputationEnvironment_NumberOfWorldNodesGet(ComputationEnvironment,NumberOfComputationNodes,Err) + CALL cmfe_ComputationEnvironment_WorldNodeNumberGet(ComputationEnvironment,ComputationNodeNumber,Err) - !Broadcast the number of elements in the X,Y and Z directions and the number of partitions to the other computational nodes + !Broadcast the number of elements in the X,Y and Z directions and the number of partitions to the other computation nodes CALL MPI_BCAST(NumberGlobalXElements,1,MPI_INTEGER,0,MPI_COMM_WORLD,MPI_IERROR) CALL MPI_BCAST(NumberGlobalYElements,1,MPI_INTEGER,0,MPI_COMM_WORLD,MPI_IERROR) CALL MPI_BCAST(NumberGlobalZElements,1,MPI_INTEGER,0,MPI_COMM_WORLD,MPI_IERROR) @@ -244,7 +250,7 @@ SUBROUTINE ANALYTIC_LINEAR_ELASTICITY_GENERIC(NumberGlobalXElements,NumberGlobal !Create a CS - default is 3D rectangular cartesian CS with 0,0,0 as origin CALL cmfe_CoordinateSystem_Initialise(CoordinateSystem,Err) - CALL cmfe_CoordinateSystem_CreateStart(CoordinateSystemUserNumber,CoordinateSystem,Err) + CALL cmfe_CoordinateSystem_CreateStart(CoordinateSystemUserNumber,context,CoordinateSystem,Err) CALL cmfe_CoordinateSystem_TypeSet(CoordinateSystem,CMFE_COORDINATE_RECTANGULAR_CARTESIAN_TYPE,Err) CALL cmfe_CoordinateSystem_DimensionSet(CoordinateSystem,NumberOfXi,Err) CALL cmfe_CoordinateSystem_OriginSet(CoordinateSystem,ORIGIN,Err) @@ -257,7 +263,7 @@ SUBROUTINE ANALYTIC_LINEAR_ELASTICITY_GENERIC(NumberGlobalXElements,NumberGlobal CALL cmfe_Region_CreateFinish(Region,Err) CALL cmfe_Basis_Initialise(Basis,Err) - CALL cmfe_Basis_CreateStart(BasisUserNumber,Basis,Err) + CALL cmfe_Basis_CreateStart(BasisUserNumber,context,Basis,Err) CALL cmfe_Basis_TypeSet(Basis,CMFE_BASIS_LAGRANGE_HERMITE_TP_TYPE,Err) CALL cmfe_Basis_NumberOfXiSet(Basis,NumberOfXi,Err) CALL cmfe_Basis_InterpolationXiSet(Basis,Interpolation(1:NumberOfXi),Err) @@ -369,7 +375,7 @@ SUBROUTINE ANALYTIC_LINEAR_ELASTICITY_GENERIC(NumberGlobalXElements,NumberGlobal !Define the problem CALL cmfe_Problem_Initialise(Problem,Err) - CALL cmfe_Problem_CreateStart(ProblemUserNumber,[CMFE_PROBLEM_ELASTICITY_CLASS,CMFE_PROBLEM_LINEAR_ELASTICITY_TYPE, & + CALL cmfe_Problem_CreateStart(ProblemUserNumber,context,[CMFE_PROBLEM_ELASTICITY_CLASS,CMFE_PROBLEM_LINEAR_ELASTICITY_TYPE, & & CMFE_PROBLEM_NO_SUBTYPE],Problem,Err) CALL cmfe_Problem_CreateFinish(Problem,Err) @@ -439,13 +445,17 @@ SUBROUTINE ANALYTIC_LINEAR_ELASTICITY_GENERIC_CLEAN(CoordinateSystemUserNumber,R INTEGER(CMISSIntg), INTENT(IN) :: GeneratedMeshUserNumber INTEGER(CMISSIntg), INTENT(IN) :: ProblemUserNumber - CALL cmfe_Problem_Destroy(ProblemUserNumber,Err) - CALL cmfe_GeneratedMesh_Destroy(RegionUserNumber,GeneratedMeshUserNumber,Err) - CALL cmfe_Basis_Destroy(BasisUserNumber,Err) - CALL cmfe_Region_Destroy(RegionUserNumber,Err) - CALL cmfe_CoordinateSystem_Destroy(CoordinateSystemUserNumber,Err) + INTEGER(CMISSIntg) :: contextUserNumber + + CALL cmfe_Context_UserNumberGet(context,contextUserNumber,err) + + CALL cmfe_Problem_Destroy(contextUserNumber,ProblemUserNumber,Err) + CALL cmfe_GeneratedMesh_Destroy(contextUserNumber,RegionUserNumber,GeneratedMeshUserNumber,Err) + CALL cmfe_Basis_Destroy(contextUserNumber,BasisUserNumber,Err) + CALL cmfe_Region_Destroy(contextUserNumber,RegionUserNumber,Err) + CALL cmfe_CoordinateSystem_Destroy(contextUserNumber,CoordinateSystemUserNumber,Err) END SUBROUTINE ANALYTIC_LINEAR_ELASTICITY_GENERIC_CLEAN -END PROGRAM ANALYTIC_LINEAR_ELASTICITYEXAMPLE +END PROGRAM CantileverBeamExample diff --git a/tests/LinearElasticity/Extension.f90 b/tests/LinearElasticity/Extension.f90 index 983ff9e2..c44fef83 100644 --- a/tests/LinearElasticity/Extension.f90 +++ b/tests/LinearElasticity/Extension.f90 @@ -46,7 +46,7 @@ !< !> Main program -PROGRAM ANALYTIC_LINEAR_ELASTICITYEXAMPLE +PROGRAM AnalyticLinearElasticityExample #ifndef NOMPIMOD USE MPI #endif @@ -97,8 +97,8 @@ PROGRAM ANALYTIC_LINEAR_ELASTICITYEXAMPLE !Program types + TYPE(cmfe_ContextType) :: context TYPE(cmfe_RegionType) :: WorldRegion - TYPE(cmfe_CoordinateSystemType) :: WorldCoordinateSystem #ifdef WIN32 !Quickwin type @@ -121,7 +121,10 @@ PROGRAM ANALYTIC_LINEAR_ELASTICITYEXAMPLE #endif !Intialise cmiss - CALL cmfe_Initialise(WorldCoordinateSystem,WorldRegion,Err) + CALL cmfe_Context_Initialise(context,err) + CALL cmfe_Initialise(context,Err) + CALL cmfe_Region_Initialise(worldRegion,err) + CALL cmfe_Context_WorldRegionGet(context,worldRegion,err) CALL cmfe_ErrorHandlingModeSet(CMFE_ERRORS_TRAP_ERROR,Err) @@ -134,7 +137,7 @@ PROGRAM ANALYTIC_LINEAR_ELASTICITYEXAMPLE CALL ANALYTIC_LINEAR_ELASTICITY_TESTCASE_LINEAR_LAGRANGE_EXPORT(1,1,0,"BiLinearLagrange") CALL ANALYTIC_LINEAR_ELASTICITY_TESTCASE_LINEAR_LAGRANGE_EXPORT(1,1,1,"TriLinearLagrange") !CALL ANALYTIC_LINEAR_ELASTICITY_TESTCASE_QUADRATIC_LAGRANGE_EXPORT(1,0,0,"QuadraticLagrange") - CALL cmfe_Finalise(Err) + CALL cmfe_Finalise(context,Err) WRITE(*,'(A)') "Program successfully completed." @@ -237,11 +240,12 @@ SUBROUTINE ANALYTIC_LINEAR_ELASTICITY_GENERIC(NumberGlobalXElements,NumberGlobal INTEGER(CMISSIntg) :: FieldGeometryNumberOfComponents,FieldDependentNumberOfComponents,NumberOfElements(3) INTEGER(CMISSIntg) :: MPI_IERROR INTEGER(CMISSIntg) :: EquationsSetIndex,FieldComponentIndex,FieldMaterialNumberOfComponents,NumberOfXi - INTEGER(CMISSIntg) :: NumberOfComputationalNodes,ComputationalNodeNumber + INTEGER(CMISSIntg) :: NumberOfComputationNodes,ComputationNodeNumber !CMISS variables TYPE(cmfe_BasisType) :: Basis + TYPE(cmfe_ComputationEnvironmentType) :: ComputationEnvironment TYPE(cmfe_CoordinateSystemType) :: CoordinateSystem TYPE(cmfe_GeneratedMeshType) :: GeneratedMesh TYPE(cmfe_DecompositionType) :: Decomposition @@ -284,11 +288,13 @@ SUBROUTINE ANALYTIC_LINEAR_ELASTICITY_GENERIC(NumberGlobalXElements,NumberGlobal FieldGeometryNumberOfComponents=NumberOfXi FieldDependentNumberOfComponents=NumberOfXi - !Get the number of computational nodes and this computational node number - CALL cmfe_ComputationalNumberOfNodesGet(NumberOfComputationalNodes,Err) - CALL cmfe_ComputationalNodeNumberGet(ComputationalNodeNumber,Err) + !Get the number of computation nodes and this computation node number + CALL cmfe_ComputationEnvironment_Initialise(ComputationEnvironment,Err) + CALL cmfe_Context_ComputationEnvironmentGet(context,computationEnvironment,err) + CALL cmfe_ComputationEnvironment_NumberOfWorldNodesGet(ComputationEnvironment,NumberOfComputationNodes,Err) + CALL cmfe_ComputationEnvironment_WorldNodeNumberGet(ComputationEnvironment,ComputationNodeNumber,Err) - !Broadcast the number of elements in the X,Y and Z directions and the number of partitions to the other computational nodes + !Broadcast the number of elements in the X,Y and Z directions and the number of partitions to the other computation nodes CALL MPI_BCAST(NumberGlobalXElements,1,MPI_INTEGER,0,MPI_COMM_WORLD,MPI_IERROR) CALL MPI_BCAST(NumberGlobalYElements,1,MPI_INTEGER,0,MPI_COMM_WORLD,MPI_IERROR) CALL MPI_BCAST(NumberGlobalZElements,1,MPI_INTEGER,0,MPI_COMM_WORLD,MPI_IERROR) @@ -296,7 +302,7 @@ SUBROUTINE ANALYTIC_LINEAR_ELASTICITY_GENERIC(NumberGlobalXElements,NumberGlobal !Create a CS - default is 3D rectangular cartesian CS with 0,0,0 as origin CALL cmfe_CoordinateSystem_Initialise(CoordinateSystem,Err) - CALL cmfe_CoordinateSystem_CreateStart(CoordinateSystemUserNumber,CoordinateSystem,Err) + CALL cmfe_CoordinateSystem_CreateStart(CoordinateSystemUserNumber,context,CoordinateSystem,Err) CALL cmfe_CoordinateSystem_TypeSet(CoordinateSystem,CMFE_COORDINATE_RECTANGULAR_CARTESIAN_TYPE,Err) CALL cmfe_CoordinateSystem_DimensionSet(CoordinateSystem,NumberOfXi,Err) CALL cmfe_CoordinateSystem_OriginSet(CoordinateSystem,ORIGIN,Err) @@ -309,7 +315,7 @@ SUBROUTINE ANALYTIC_LINEAR_ELASTICITY_GENERIC(NumberGlobalXElements,NumberGlobal CALL cmfe_Region_CreateFinish(Region,Err) CALL cmfe_Basis_Initialise(Basis,Err) - CALL cmfe_Basis_CreateStart(BasisUserNumber,Basis,Err) + CALL cmfe_Basis_CreateStart(BasisUserNumber,context,Basis,Err) CALL cmfe_Basis_TypeSet(Basis,CMFE_BASIS_LAGRANGE_HERMITE_TP_TYPE,Err) CALL cmfe_Basis_NumberOfXiSet(Basis,NumberOfXi,Err) CALL cmfe_Basis_InterpolationXiSet(Basis,Interpolation(1:NumberOfXi),Err) @@ -422,7 +428,7 @@ SUBROUTINE ANALYTIC_LINEAR_ELASTICITY_GENERIC(NumberGlobalXElements,NumberGlobal !Define the problem CALL cmfe_Problem_Initialise(Problem,Err) - CALL cmfe_Problem_CreateStart(ProblemUserNumber,[CMFE_PROBLEM_ELASTICITY_CLASS,CMFE_PROBLEM_LINEAR_ELASTICITY_TYPE, & + CALL cmfe_Problem_CreateStart(ProblemUserNumber,context,[CMFE_PROBLEM_ELASTICITY_CLASS,CMFE_PROBLEM_LINEAR_ELASTICITY_TYPE, & & CMFE_PROBLEM_NO_SUBTYPE],Problem,Err) CALL cmfe_Problem_CreateFinish(Problem,Err) @@ -492,13 +498,16 @@ SUBROUTINE ANALYTIC_LINEAR_ELASTICITY_GENERIC_CLEAN(CoordinateSystemUserNumber,R INTEGER(CMISSIntg), INTENT(IN) :: GeneratedMeshUserNumber INTEGER(CMISSIntg), INTENT(IN) :: ProblemUserNumber - CALL cmfe_Problem_Destroy(ProblemUserNumber,Err) - CALL cmfe_GeneratedMesh_Destroy(RegionUserNumber,GeneratedMeshUserNumber,Err) - CALL cmfe_Basis_Destroy(BasisUserNumber,Err) - CALL cmfe_Region_Destroy(RegionUserNumber,Err) - CALL cmfe_CoordinateSystem_Destroy(CoordinateSystemUserNumber,Err) + INTEGER(CMISSIntg) :: contextUserNumber + + CALL cmfe_Context_UserNumberGet(context,contextUserNumber,err) + CALL cmfe_Problem_Destroy(contextUserNumber,ProblemUserNumber,Err) + CALL cmfe_GeneratedMesh_Destroy(contextUserNumber,RegionUserNumber,GeneratedMeshUserNumber,Err) + CALL cmfe_Basis_Destroy(contextUserNumber,BasisUserNumber,Err) + CALL cmfe_Region_Destroy(contextUserNumber,RegionUserNumber,Err) + CALL cmfe_CoordinateSystem_Destroy(contextUserNumber,CoordinateSystemUserNumber,Err) END SUBROUTINE ANALYTIC_LINEAR_ELASTICITY_GENERIC_CLEAN -END PROGRAM ANALYTIC_LINEAR_ELASTICITYEXAMPLE +END PROGRAM AnalyticLinearElasticityExample