108     INTEGER(INTG), 
INTENT(IN) :: SOLUTION_METHOD
   109     INTEGER(INTG), 
INTENT(OUT) :: ERR
   114     enters(
"DiffusionDiffusion_EquationsSetSolutionMethodSet",err,error,*999)
   116     IF(
ASSOCIATED(equations_set)) 
THEN   117       IF(.NOT.
ALLOCATED(equations_set%SPECIFICATION)) 
THEN   118         CALL flagerror(
"Equations set specification is not allocated.",err,error,*999)
   119       ELSE IF(
SIZE(equations_set%SPECIFICATION,1)/=3) 
THEN   120         CALL flagerror(
"Equations set specification must have three entries for a "// &
   121           & 
"diffusion-diffusion type equations set.",err,error,*999)
   123       SELECT CASE(equations_set%SPECIFICATION(3))
   125         SELECT CASE(solution_method)
   129           CALL flagerror(
"Not implemented.",err,error,*999)
   131           CALL flagerror(
"Not implemented.",err,error,*999)
   133           CALL flagerror(
"Not implemented.",err,error,*999)
   135           CALL flagerror(
"Not implemented.",err,error,*999)
   137           CALL flagerror(
"Not implemented.",err,error,*999)
   139           local_error=
"The specified solution method of "//
trim(
number_to_vstring(solution_method,
"*",err,error))//
" is invalid."   140           CALL flagerror(local_error,err,error,*999)
   143         local_error=
"Equations set subtype of "//
trim(
number_to_vstring(equations_set%SPECIFICATION(3),
"*",err,error))// &
   144           & 
" is not valid for a diffusion-diffusion equation type of a multi physics equations set class."   145         CALL flagerror(local_error,err,error,*999)
   148       CALL flagerror(
"Equations set is not associated.",err,error,*999)
   151     exits(
"DiffusionDiffusion_EquationsSetSolutionMethodSet")
   153 999 
errors(
"DiffusionDiffusion_EquationsSetSolutionMethodSet",err,error)
   154     exits(
"DiffusionDiffusion_EquationsSetSolutionMethodSet")
   169     INTEGER(INTG), 
INTENT(OUT) :: ERR
   173     enters(
"DIFFUSION_DIFFUSION_EQUATIONS_SET_SETUP",err,error,*999)
   175     CALL flagerror(
"Not implemented.",err,error,*999)
   177     exits(
"DIFFUSION_DIFFUSION_EQUATIONS_SET_SETUP")
   179 999 errorsexits(
"DIFFUSION_DIFFUSION_EQUATIONS_SET_SETUP",err,error)
   193     INTEGER(INTG), 
INTENT(IN) :: ELEMENT_NUMBER
   194     INTEGER(INTG), 
INTENT(OUT) :: ERR
   198     enters(
"DiffusionDiffusion_FiniteElementCalculate",err,error,*999)
   200     CALL flagerror(
"Not implemented.",err,error,*999)
   202     exits(
"DiffusionDiffusion_FiniteElementCalculate")
   204 999 errorsexits(
"DiffusionDiffusion_FiniteElementCalculate",err,error)
   218     INTEGER(INTG), 
INTENT(IN) :: specification(:)
   219     INTEGER(INTG), 
INTENT(OUT) :: err
   222     enters(
"DiffusionDiffusion_EquationsSetSpecificationSet",err,error,*999)
   224     CALL flagerror(
"Not implemented.",err,error,*999)
   226     exits(
"DiffusionDiffusion_EquationsSetSpecificationSet")
   228 999 
errors(
"DiffusionDiffusion_EquationsSetSpecificationSet",err,error)
   229     exits(
"DiffusionDiffusion_EquationsSetSpecificationSet")
   243     INTEGER(INTG), 
INTENT(IN) :: problemSpecification(:)
   244     INTEGER(INTG), 
INTENT(OUT) :: err
   248     INTEGER(INTG) :: problemSubtype
   250     enters(
"DiffusionDiffusion_ProblemSpecificationSet",err,error,*999)
   252     IF(
ASSOCIATED(problem)) 
THEN   253       IF(
SIZE(problemspecification,1)==3) 
THEN   254         problemsubtype=problemspecification(3)
   255         SELECT CASE(problemsubtype)
   259           localerror=
"The third problem specification of "//
trim(
numbertovstring(problemsubtype,
"*",err,error))// &
   260             & 
" is not valid for a coupled diffusion-diffusion type of a multi physics problem."   261           CALL flagerror(localerror,err,error,*999)
   263         IF(
ALLOCATED(problem%specification)) 
THEN   264           CALL flagerror(
"Problem specification is already allocated.",err,error,*999)
   266           ALLOCATE(problem%specification(3),stat=err)
   267           IF(err/=0) 
CALL flagerror(
"Could not allocate problem specification.",err,error,*999)
   272         CALL flagerror(
"Diffusion-diffusion problem specification must have three elements.",err,error,*999)
   275       CALL flagerror(
"Problem is not associated.",err,error,*999)
   278     exits(
"DiffusionDiffusion_ProblemSpecificationSet")
   280 999 
errors(
"DiffusionDiffusion_ProblemSpecificationSet",err,error)
   281     exits(
"DiffusionDiffusion_ProblemSpecificationSet")
   296     INTEGER(INTG), 
INTENT(OUT) :: ERR
   300     TYPE(
solver_type), 
POINTER :: SOLVER_DIFFUSION_ONE, SOLVER_DIFFUSION_TWO
   301     TYPE(
solver_equations_type), 
POINTER :: SOLVER_EQUATIONS_DIFFUSION_ONE, SOLVER_EQUATIONS_DIFFUSION_TWO
   305     enters(
"DIFFUSION_DIFFUSION_PROBLEM_SETUP",err,error,*999)
   307     NULLIFY(control_loop)
   309     NULLIFY(solver_diffusion_one)
   310     NULLIFY(solver_diffusion_two)
   311     NULLIFY(solver_equations_diffusion_one)
   312     NULLIFY(solver_equations_diffusion_two)
   313     IF(
ASSOCIATED(problem)) 
THEN   314       IF(.NOT.
ALLOCATED(problem%specification)) 
THEN   315         CALL flagerror(
"Problem specification is not allocated.",err,error,*999)
   316       ELSE IF(
SIZE(problem%specification,1)<3) 
THEN   317         CALL flagerror(
"Problem specification must have three entries for a diffusion-diffusion problem.", &
   320       SELECT CASE(problem%SPECIFICATION(3))
   326         SELECT CASE(problem_setup%SETUP_TYPE)
   328           SELECT CASE(problem_setup%ACTION_TYPE)
   334             local_error=
"The action type of "//
trim(
number_to_vstring(problem_setup%ACTION_TYPE,
"*",err,error))// &
   336               & 
" is invalid for a diffusion-diffusion  equation."   337             CALL flagerror(local_error,err,error,*999)
   340           SELECT CASE(problem_setup%ACTION_TYPE)
   347             control_loop_root=>problem%CONTROL_LOOP
   351             local_error=
"The action type of "//
trim(
number_to_vstring(problem_setup%ACTION_TYPE,
"*",err,error))// &
   353               & 
" is invalid for a coupled diffusion-diffusion equation."   354             CALL flagerror(local_error,err,error,*999)
   358           control_loop_root=>problem%CONTROL_LOOP
   360           SELECT CASE(problem_setup%ACTION_TYPE)
   390             local_error=
"The action type of "//
trim(
number_to_vstring(problem_setup%ACTION_TYPE,
"*",err,error))// &
   392                 & 
" is invalid for a couple diffusion-diffusion equation."   393             CALL flagerror(local_error,err,error,*999)
   396           SELECT CASE(problem_setup%ACTION_TYPE)
   399             control_loop_root=>problem%CONTROL_LOOP
   422             control_loop_root=>problem%CONTROL_LOOP
   438             local_error=
"The action type of "//
trim(
number_to_vstring(problem_setup%ACTION_TYPE,
"*",err,error))// &
   440               & 
" is invalid for a coupled diffusion-diffusion equation."   441             CALL flagerror(local_error,err,error,*999)
   444           local_error=
"The setup type of "//
trim(
number_to_vstring(problem_setup%SETUP_TYPE,
"*",err,error))// &
   445             & 
" is invalid for a coupled diffusion-diffusion equation."   446           CALL flagerror(local_error,err,error,*999)
   453         local_error=
"The problem subtype of "//
trim(
number_to_vstring(problem%SPECIFICATION(3),
"*",err,error))// &
   454           & 
" does not equal a coupled source diffusion-diffusion equation subtype."   455         CALL flagerror(local_error,err,error,*999)
   459       CALL flagerror(
"Problem is not associated.",err,error,*999)
   462     exits(
"DIFFUSION_DIFFUSION_PROBLEM_SETUP")
   464 999 errorsexits(
"DIFFUSION_DIFFUSION_PROBLEM_SETUP",err,error)
   478     INTEGER(INTG), 
INTENT(OUT) :: ERR
   485     enters(
"DIFFUSION_DIFFUSION_PRE_SOLVE",err,error,*999)
   487     IF(
ASSOCIATED(control_loop)) 
THEN   488       IF(
ASSOCIATED(solver)) 
THEN   489         IF(
ASSOCIATED(control_loop%PROBLEM)) 
THEN   490           IF(.NOT.
ALLOCATED(control_loop%problem%specification)) 
THEN   491             CALL flagerror(
"Problem specification is not allocated.",err,error,*999)
   492           ELSE IF(
SIZE(control_loop%problem%specification,1)<3) 
THEN   493             CALL flagerror(
"Problem specification must have three entries for a diffusion-diffusion problem.", &
   496           SELECT CASE(control_loop%PROBLEM%SPECIFICATION(3))
   499               IF(solver%GLOBAL_NUMBER==1) 
THEN   504               ELSE IF(solver%GLOBAL_NUMBER==2) 
THEN   509               local_error=
"Problem subtype "//
trim(
number_to_vstring(control_loop%PROBLEM%SPECIFICATION(3),
"*",err,error))// &
   510                 & 
" is not valid for a diffusion type of a multi physics problem class."   511               CALL flagerror(local_error,err,error,*999)
   514           CALL flagerror(
"Problem is not associated.",err,error,*999)
   517         CALL flagerror(
"Solver is not associated.",err,error,*999)
   520       CALL flagerror(
"Control loop is not associated.",err,error,*999)
   523     exits(
"DIFFUSION_DIFFUSION_PRE_SOLVE")
   525 999 errorsexits(
"DIFFUSION_DIFFUSION_PRE_SOLVE",err,error)
   539     INTEGER(INTG), 
INTENT(OUT) :: ERR
   545     enters(
"DIFFUSION_DIFFUSION_POST_SOLVE",err,error,*999)
   547     IF(
ASSOCIATED(control_loop)) 
THEN   548       IF(
ASSOCIATED(solver)) 
THEN   549         IF(
ASSOCIATED(control_loop%PROBLEM)) 
THEN    550           IF(.NOT.
ALLOCATED(control_loop%problem%specification)) 
THEN   551             CALL flagerror(
"Problem specification is not allocated.",err,error,*999)
   552           ELSE IF(
SIZE(control_loop%problem%specification,1)<3) 
THEN   553             CALL flagerror(
"Problem specification must have three entries for a diffusion-diffusion problem.", &
   556           SELECT CASE(control_loop%PROBLEM%SPECIFICATION(3))
   558               IF(solver%GLOBAL_NUMBER==1) 
THEN   561               ELSE IF(solver%GLOBAL_NUMBER==2) 
THEN   565               local_error=
"Problem subtype "//
trim(
number_to_vstring(control_loop%PROBLEM%SPECIFICATION(3),
"*",err,error))// &
   566                 & 
" is not valid for a diffusion-diffusion type of a multi physics problem class."   567               CALL flagerror(local_error,err,error,*999)
   570           CALL flagerror(
"Problem is not associated.",err,error,*999)
   573         CALL flagerror(
"Solver is not associated.",err,error,*999)
   576       CALL flagerror(
"Control loop is not associated.",err,error,*999)
   579     exits(
"DIFFUSION_DIFFUSION_POST_SOLVE")
   581 999 errorsexits(
"DIFFUSION_DIFFUSION_POST_SOLVE",err,error)
   595     INTEGER(INTG), 
INTENT(OUT) :: ERR
   601     enters(
"DIFFUSION_DIFFUSION_POST_SOLVE_OUTPUT_DATA",err,error,*999)
   603     IF(
ASSOCIATED(control_loop)) 
THEN   604       IF(
ASSOCIATED(solver)) 
THEN   605         IF(
ASSOCIATED(control_loop%PROBLEM)) 
THEN   606           IF(.NOT.
ALLOCATED(control_loop%problem%specification)) 
THEN   607             CALL flagerror(
"Problem specification is not allocated.",err,error,*999)
   608           ELSE IF(
SIZE(control_loop%problem%specification,1)<3) 
THEN   609             CALL flagerror(
"Problem specification must have three entries for a diffusion-diffusion problem.", &
   612           SELECT CASE(control_loop%PROBLEM%SPECIFICATION(3))
   616               local_error=
"Problem subtype "//
trim(
number_to_vstring(control_loop%PROBLEM%SPECIFICATION(3),
"*",err,error))// &
   617                 & 
" is not valid for a diffusion type of a multi physics problem class."   618               CALL flagerror(local_error,err,error,*999)
   621           CALL flagerror(
"Problem is not associated.",err,error,*999)
   624         CALL flagerror(
"Solver is not associated.",err,error,*999)
   627       CALL flagerror(
"Control loop is not associated.",err,error,*999)
   630     exits(
"DIFFUSION_DIFFUSION_POST_SOLVE_OUTPUT_DATA")
   632 999 errorsexits(
"DIFFUSION_DIFFUSION_POST_SOLVE_OUTPUT_DATA",err,error)
 integer(intg), parameter equations_set_fem_solution_method
Finite Element Method solution method. 
 
This module contains all basis function routines. 
 
subroutine, public enters(NAME, ERR, ERROR,)
Records the entry into the named procedure and initialises the error code. 
 
subroutine, public solvers_create_finish(SOLVERS, ERR, ERROR,)
Finish the creation of solvers. 
 
integer(intg), parameter problem_diffusion_diffusion_type
 
This module contains all coordinate transformation and support routines. 
 
integer(intg), parameter equations_set_gfem_solution_method
Grid-based Finite Element Method solution method. 
 
integer(intg), parameter problem_control_time_loop_type
Time control loop. 
 
integer(intg), parameter equations_set_coupled_source_diffusion_diffusion_subtype
 
integer(intg), parameter problem_setup_control_type
Solver setup for a problem. 
 
This module handles all problem wide constants. 
 
integer(intg), parameter solver_equations_first_order_dynamic
Solver equations are first order dynamic. 
 
integer(intg), parameter, public control_loop_node
The identifier for a each "leaf" node in a control loop. 
 
subroutine, public solver_dynamic_order_set(SOLVER, ORDER, ERR, ERROR,)
Sets/changes the order for a dynamic solver. 
 
integer(intg), parameter problem_coupled_source_diffusion_diffusion_subtype
 
Converts a number to its equivalent varying string representation. 
 
subroutine, public diffusion_diffusion_pre_solve(CONTROL_LOOP, SOLVER, ERR, ERROR,)
Sets up the diffusion-diffusion problem pre-solve. 
 
Contains information on the type of solver to be used. 
 
subroutine, public solvers_number_set(SOLVERS, NUMBER_OF_SOLVERS, ERR, ERROR,)
Sets/changes the number of solvers. 
 
integer(intg), parameter, public solver_dynamic_crank_nicolson_scheme
Crank-Nicolson dynamic solver. 
 
subroutine, public solver_dynamic_degree_set(SOLVER, DEGREE, ERR, ERROR,)
Sets/changes the degree of the polynomial used to interpolate time for a dynamic solver. 
 
This module handles all equations matrix and rhs routines. 
 
integer(intg), parameter, public solver_dynamic_first_order
Dynamic solver has first order terms. 
 
subroutine, public solver_type_set(SOLVER, SOLVE_TYPE, ERR, ERROR,)
Sets/changes the type for a solver. 
 
Contains information on an equations set. 
 
This module handles all equations routines. 
 
This module contains all string manipulation and transformation routines. 
 
subroutine, public solvers_create_start(CONTROL_LOOP, SOLVERS, ERR, ERROR,)
Start the creation of a solvers for the control loop. 
 
Contains information on the solvers to be used in a control loop. 
 
subroutine, public diffusiondiffusion_equationssetspecificationset(equationsSet, specification, err, error,)
Sets the equation specification for a coupled diffusion-diffusion equation type of a multi physics eq...
 
This module contains routines for timing the program. 
 
subroutine, public solver_equations_sparsity_type_set(SOLVER_EQUATIONS, SPARSITY_TYPE, ERR, ERROR,)
Sets/changes the sparsity type for solver equations. 
 
This module contains all mathematics support routines. 
 
subroutine, public solvers_solver_get(SOLVERS, SOLVER_INDEX, SOLVER, ERR, ERROR,)
Returns a pointer to the specified solver in the list of solvers. 
 
integer(intg), parameter solver_equations_linear
Solver equations are linear. 
 
Contains information on a control loop. 
 
This module provides an iso_varying_string module, conformant to the API specified in ISO/IEC 1539-2:...
 
subroutine, public solver_equations_create_finish(SOLVER_EQUATIONS, ERR, ERROR,)
Finishes the process of creating solver equations. 
 
integer(intg), parameter, public solver_sparse_matrices
Use sparse solver matrices. 
 
subroutine, public solver_equations_create_start(SOLVER, SOLVER_EQUATIONS, ERR, ERROR,)
Starts the process of creating solver equations. 
 
This module handles all routines pertaining to diffusion coupled to diffusion. 
 
integer(intg), parameter, public solver_dynamic_type
A dynamic solver. 
 
integer(intg), parameter problem_setup_solvers_type
Solver setup for a problem. 
 
This module contains all program wide constants. 
 
subroutine, public solver_library_type_set(SOLVER, SOLVER_LIBRARY_TYPE, ERR, ERROR,)
Sets/changes the type of library type to use for the solver. 
 
subroutine, public diffusiondiffusion_equationssetsolutionmethodset(EQUATIONS_SET, SOLUTION_METHOD, ERR, ERROR,)
Sets/changes the solution method for a diffusion-diffusion equation type of a multi physics equations...
 
integer(intg), parameter problem_setup_initial_type
Initial setup for a problem. 
 
subroutine, public diffusion_diffusion_post_solve(CONTROL_LOOP, SOLVER, ERR, ERROR,)
Sets up the diffusion-diffusion problem post solve. 
 
subroutine, public solver_equations_linearity_type_set(SOLVER_EQUATIONS, LINEARITY_TYPE, ERR, ERROR,)
Sets/changes the linearity type for solver equations. 
 
subroutine, public exits(NAME)
Records the exit out of the named procedure. 
 
recursive subroutine, public control_loop_solvers_get(CONTROL_LOOP, SOLVERS, ERR, ERROR,)
Returns a pointer to the solvers for a control loop. 
 
This module contains all type definitions in order to avoid cyclic module references. 
 
This module contains all the low-level base routines e.g., all debug, control, and low-level communic...
 
subroutine, public diffusion_diffusion_equations_set_setup(EQUATIONS_SET, EQUATIONS_SET_SETUP, ERR, ERROR,)
Sets up the diffusion-diffusion coupled equation. 
 
Returns the specified control loop as indexed by the control loop identifier from the control loop ro...
 
subroutine, public control_loop_type_set(CONTROL_LOOP, LOOP_TYPE, ERR, ERROR,)
Sets/changes the control loop type. 
 
integer(intg), parameter problem_multi_physics_class
 
subroutine, public diffusion_presolvegetsourcevalue(CONTROL_LOOP, SOLVER, ERR, ERROR,)
 
subroutine, public diffusion_diffusion_problem_setup(PROBLEM, PROBLEM_SETUP, ERR, ERROR,)
Sets up the coupled diffusion-diffusion equations problem. 
 
subroutine, public diffusiondiffusion_finiteelementcalculate(EQUATIONS_SET, ELEMENT_NUMBER, ERR, ERROR,)
Calculates the element stiffness matrices and RHS for a coupled diffusion-diffusion equation finite e...
 
subroutine, public diffusion_presolvestorecurrentsolution(CONTROL_LOOP, SOLVER, ERR, ERROR,)
 
This module handles all domain mappings routines. 
 
integer(intg), parameter problem_setup_finish_action
Finish setup action. 
 
This module handles all equations mapping routines. 
 
Contains information about the solver equations for a solver. 
 
integer(intg), parameter equations_set_gfv_solution_method
Grid-based Finite Volume solution method. 
 
Contains information for a problem. 
 
This module handles all distributed matrix vector routines. 
 
subroutine, public diffusiondiffusion_problemspecificationset(problem, problemSpecification, err, error,)
Sets the problem specification for a coupled diffusion-diffusion equation type. 
 
This module handles all boundary conditions routines. 
 
This module handles all solver routines. 
 
This module contains all routines dealing with (non-distributed) matrix and vectors types...
 
subroutine, public control_loop_create_start(PROBLEM, CONTROL_LOOP, ERR, ERROR,)
Start the process of creating a control loop for a problem. 
 
integer(intg), parameter problem_setup_solver_equations_type
Solver equations setup for a problem. 
 
subroutine, public solver_dynamic_scheme_set(SOLVER, SCHEME, ERR, ERROR,)
Sets/changes the scheme for a dynamic solver. 
 
integer(intg), parameter equations_set_fd_solution_method
Finite Difference solution method. 
 
Contains information on the setup information for an equations set. 
 
integer(intg), parameter problem_setup_start_action
Start setup action. 
 
subroutine, public solver_equations_time_dependence_type_set(SOLVER_EQUATIONS, TIME_DEPENDENCE_TYPE, ERR, ERROR,)
Sets/changes the time dependence type for solver equations. 
 
This module handles all control loop routines. 
 
integer(intg), parameter, public solver_cmiss_library
CMISS (internal) solver library. 
 
subroutine, public errors(NAME, ERR, ERROR)
Records the exiting error of the subroutine. 
 
This module defines all constants shared across equations set routines. 
 
integer(intg), parameter equations_set_bem_solution_method
Boundary Element Method solution method. 
 
subroutine diffusion_diffusion_post_solve_output_data(CONTROL_LOOP, SOLVER, ERR, ERROR,)
Sets up the diffuion-diffusion problem post solve output data. 
 
subroutine, public solver_solver_equations_get(SOLVER, SOLVER_EQUATIONS, ERR, ERROR,)
Returns a pointer to the solver equations for a solver. 
 
integer(intg), parameter equations_set_fv_solution_method
Finite Volume solution method. 
 
integer(intg), parameter, public solver_dynamic_first_degree
Dynamic solver uses a first degree polynomial for time interpolation. 
 
recursive subroutine, public control_loop_create_finish(CONTROL_LOOP, ERR, ERROR,)
Finish the process of creating a control loop. 
 
Flags an error condition. 
 
This module handles all diffusion equation routines. 
 
This module contains all kind definitions. 
 
Temporary IO routines for fluid mechanics.