95 INTEGER(INTG),
INTENT(IN) :: SOLUTION_METHOD
96 INTEGER(INTG),
INTENT(OUT) :: ERR
101 enters(
"FinElasticityFluidPressure_EquationsSetSolnMethodSet",err,error,*999)
103 IF(
ASSOCIATED(equations_set))
THEN 104 IF(.NOT.
ALLOCATED(equations_set%SPECIFICATION))
THEN 105 CALL flagerror(
"Equations set specification is not allocated.",err,error,*999)
106 ELSE IF(
SIZE(equations_set%SPECIFICATION,1)/=3)
THEN 107 CALL flagerror(
"Equations set specification must have three entries for a "// &
108 &
"finite elasticity-fluid pressure class equations set.",err,error,*999)
110 SELECT CASE(equations_set%SPECIFICATION(3))
114 SELECT CASE(solution_method)
118 CALL flagerror(
"Not implemented.",err,error,*999)
120 CALL flagerror(
"Not implemented.",err,error,*999)
122 CALL flagerror(
"Not implemented.",err,error,*999)
124 CALL flagerror(
"Not implemented.",err,error,*999)
126 CALL flagerror(
"Not implemented.",err,error,*999)
128 local_error=
"The specified solution method of "//
trim(
number_to_vstring(solution_method,
"*",err,error))//
" is invalid." 129 CALL flagerror(local_error,err,error,*999)
132 local_error=
"Equations set subtype of "//
trim(
number_to_vstring(equations_set%SPECIFICATION(3),
"*",err,error))// &
133 &
" is not valid for a finite elasticity fluid pressure equation type of a multi physics equations set class." 134 CALL flagerror(local_error,err,error,*999)
137 CALL flagerror(
"Equations set is not associated.",err,error,*999)
140 exits(
"FinElasticityFluidPressure_EquationsSetSolnMethodSet")
142 999
errors(
"FinElasticityFluidPressure_EquationsSetSolnMethodSet",err,error)
143 exits(
"FinElasticityFluidPressure_EquationsSetSolnMethodSet")
157 INTEGER(INTG),
INTENT(IN) :: specification(:)
158 INTEGER(INTG),
INTENT(OUT) :: err
162 enters(
"FinElasticityFluidPressure_EquationsSetSpecificationSet",err,error,*999)
164 CALL flagerror(
"FinElasticityFluidPressure_EquationsSetSpecificationSet is not implemented.",err,error,*999)
166 exits(
"FinElasticityFluidPressure_EquationsSetSpecificationSet")
168 999
errors(
"FinElasticityFluidPressure_EquationsSetSpecificationSet",err,error)
169 exits(
"FinElasticityFluidPressure_EquationsSetSpecificationSet")
184 INTEGER(INTG),
INTENT(OUT) :: ERR
188 enters(
"FinElasticityFluidPressure_EquationsSetSetup",err,error,*999)
190 CALL flagerror(
"FinElasticityFluidPressure_EquationsSetSetup is not implemented.",err,error,*999)
192 exits(
"FinElasticityFluidPressure_EquationsSetSetup")
194 999
errors(
"FinElasticityFluidPressure_EquationsSetSetup",err,error)
195 exits(
"FinElasticityFluidPressure_EquationsSetSetup")
209 INTEGER(INTG),
INTENT(IN) :: ELEMENT_NUMBER
210 INTEGER(INTG),
INTENT(OUT) :: ERR
213 enters(
"FinElasticityFluidPressure_FiniteElementCalculate",err,error,*999)
215 CALL flagerror(
"FinElasticityFluidPressure_FiniteElementCalculate is not implemented.",err,error,*999)
217 exits(
"FinElasticityFluidPressure_FiniteElementCalculate")
219 999
errors(
"FinElasticityFluidPressure_FiniteElementCalculate",err,error)
220 exits(
"FinElasticityFluidPressure_FiniteElementCalculate")
234 INTEGER(INTG),
INTENT(IN) :: problemSpecification(:)
235 INTEGER(INTG),
INTENT(OUT) :: err
239 INTEGER(INTG) :: problemSubtype
241 enters(
"FinElasticityFluidPressure_ProblemSpecificationSet",err,error,*999)
243 IF(
ASSOCIATED(problem))
THEN 244 IF(
SIZE(problemspecification,1)==3)
THEN 245 problemsubtype=problemspecification(3)
246 SELECT CASE(problemsubtype)
250 localerror=
"The third problem specification of "//
trim(
numbertovstring(problemsubtype,
"*",err,error))// &
251 &
" is not valid for a finite elasticity fluid pressure type of a multi physics problem." 252 CALL flagerror(localerror,err,error,*999)
254 IF(
ALLOCATED(problem%specification))
THEN 255 CALL flagerror(
"Problem specification is already allocated.",err,error,*999)
257 ALLOCATE(problem%specification(3),stat=err)
258 IF(err/=0)
CALL flagerror(
"Could not allocate problem specification.",err,error,*999)
263 CALL flagerror(
"Finite elasticity fluid pressure problem specificaion must have three entries.",err,error,*999)
266 CALL flagerror(
"Problem is not associated.",err,error,*999)
269 exits(
"FinElasticityFluidPressure_ProblemSpecificationSet")
271 999
errors(
"FinElasticityFluidPressure_ProblemSpecificationSet",err,error)
272 exits(
"FinElasticityFluidPressure_ProblemSpecificationSet")
287 INTEGER(INTG),
INTENT(OUT) :: ERR
296 enters(
"ELASTICITY_FLUID_PRESSURE_PROBLEM_SETUP",err,error,*999)
298 NULLIFY(control_loop)
301 NULLIFY(solver_equations)
302 IF(
ASSOCIATED(problem))
THEN 303 IF(
ALLOCATED(problem%specification))
THEN 304 IF(.NOT.
ALLOCATED(problem%specification))
THEN 305 CALL flagerror(
"Problem specification is not allocated.",err,error,*999)
306 ELSE IF(
SIZE(problem%specification,1)<3)
THEN 307 CALL flagerror(
"Problem specification must have three entries for a finite elasticity-Darcy problem.", &
311 CALL flagerror(
"Problem specification is not allocated.",err,error,*999)
313 SELECT CASE(problem%SPECIFICATION(3))
319 SELECT CASE(problem_setup%SETUP_TYPE)
321 SELECT CASE(problem_setup%ACTION_TYPE)
327 local_error=
"The action type of "//
trim(
number_to_vstring(problem_setup%ACTION_TYPE,
"*",err,error))// &
329 &
" is invalid for an finite elasticity ALE fluid pressure equation." 330 CALL flagerror(local_error,err,error,*999)
333 SELECT CASE(problem_setup%ACTION_TYPE)
340 control_loop_root=>problem%CONTROL_LOOP
344 local_error=
"The action type of "//
trim(
number_to_vstring(problem_setup%ACTION_TYPE,
"*",err,error))// &
346 &
" is invalid for a finite elasticity fluid pressure equation." 347 CALL flagerror(local_error,err,error,*999)
351 control_loop_root=>problem%CONTROL_LOOP
353 SELECT CASE(problem_setup%ACTION_TYPE)
368 local_error=
"The action type of "//
trim(
number_to_vstring(problem_setup%ACTION_TYPE,
"*",err,error))// &
370 &
" is invalid for a finite elasticity fluid pressure equation." 371 CALL flagerror(local_error,err,error,*999)
374 SELECT CASE(problem_setup%ACTION_TYPE)
377 control_loop_root=>problem%CONTROL_LOOP
389 control_loop_root=>problem%CONTROL_LOOP
398 local_error=
"The action type of "//
trim(
number_to_vstring(problem_setup%ACTION_TYPE,
"*",err,error))// &
400 &
" is invalid for a finite elasticity fluid pressure equation." 401 CALL flagerror(local_error,err,error,*999)
404 local_error=
"The setup type of "//
trim(
number_to_vstring(problem_setup%SETUP_TYPE,
"*",err,error))// &
405 &
" is invalid for a finite elasticity ALE fluid pressure equation." 406 CALL flagerror(local_error,err,error,*999)
410 local_error=
"The problem subtype of "//
trim(
number_to_vstring(problem%SPECIFICATION(3),
"*",err,error))// &
411 &
" does not equal a standard finite elasticity fluid pressure equation subtype." 412 CALL flagerror(local_error,err,error,*999)
416 CALL flagerror(
"Problem is not associated.",err,error,*999)
419 exits(
"ELASTICITY_FLUID_PRESSURE_PROBLEM_SETUP")
421 999 errorsexits(
"ELASTICITY_FLUID_PRESSURE_PROBLEM_SETUP",err,error)
435 INTEGER(INTG),
INTENT(OUT) :: ERR
441 enters(
"ELASTICITY_FLUID_PRESSURE_PRE_SOLVE",err,error,*999)
443 IF(
ASSOCIATED(control_loop))
THEN 444 IF(
ASSOCIATED(solver))
THEN 445 IF(
ASSOCIATED(control_loop%PROBLEM))
THEN 446 IF(.NOT.
ALLOCATED(control_loop%PROBLEM%SPECIFICATION))
THEN 447 CALL flagerror(
"Problem specification is not allocated.",err,error,*999)
448 ELSE IF(
SIZE(control_loop%PROBLEM%SPECIFICATION,1)<3)
THEN 449 CALL flagerror(
"Problem specification must have three entries for an elasticity fluid pressure problem.",err,error,*999)
451 SELECT CASE(control_loop%PROBLEM%SPECIFICATION(3))
457 local_error=
"Problem subtype "//
trim(
number_to_vstring(control_loop%PROBLEM%SPECIFICATION(3),
"*",err,error))// &
458 &
" is not valid for a fluid pressure fluid type of a multi physics problem class." 459 CALL flagerror(local_error,err,error,*999)
462 CALL flagerror(
"Problem is not associated.",err,error,*999)
465 CALL flagerror(
"Solver is not associated.",err,error,*999)
468 CALL flagerror(
"Control loop is not associated.",err,error,*999)
471 exits(
"ELASTICITY_FLUID_PRESSURE_PRE_SOLVE")
473 999 errorsexits(
"ELASTICITY_FLUID_PRESSURE_PRE_SOLVE",err,error)
487 INTEGER(INTG),
INTENT(OUT) :: ERR
493 enters(
"ELASTICITY_FLUID_PRESSURE_POST_SOLVE",err,error,*999)
495 IF(
ASSOCIATED(control_loop))
THEN 496 IF(
ASSOCIATED(solver))
THEN 497 IF(
ASSOCIATED(control_loop%PROBLEM))
THEN 498 IF(.NOT.
ALLOCATED(control_loop%PROBLEM%SPECIFICATION))
THEN 499 CALL flagerror(
"Problem specification is not allocated.",err,error,*999)
500 ELSE IF(
SIZE(control_loop%PROBLEM%SPECIFICATION,1)<3)
THEN 501 CALL flagerror(
"Problem specification must have three entries for an elasticity fluid pressure problem.",err,error,*999)
503 SELECT CASE(control_loop%PROBLEM%SPECIFICATION(3))
507 local_error=
"Problem subtype "//
trim(
number_to_vstring(control_loop%PROBLEM%SPECIFICATION(3),
"*",err,error))// &
508 &
" is not valid for a finite elasticity fluid pressure type of a multi physics problem class." 509 CALL flagerror(local_error,err,error,*999)
512 CALL flagerror(
"Problem is not associated.",err,error,*999)
515 CALL flagerror(
"Solver is not associated.",err,error,*999)
518 CALL flagerror(
"Control loop is not associated.",err,error,*999)
521 exits(
"ELASTICITY_FLUID_PRESSURE_POST_SOLVE")
523 999 errorsexits(
"ELASTICITY_FLUID_PRESSURE_POST_SOLVE",err,error)
536 INTEGER(INTG),
INTENT(OUT) :: ERR
540 TYPE(
solver_type),
POINTER :: SOLVER_FLUID_PRESSURE
543 enters(
"FinElasticityFluidPressure_ControlLoopPreLoop",err,error,*999)
545 NULLIFY(control_loop_fluid_pressure)
546 NULLIFY(solver_fluid_pressure)
548 IF(
ASSOCIATED(control_loop))
THEN 549 IF(
ASSOCIATED(control_loop%PROBLEM))
THEN 552 SELECT CASE(control_loop%LOOP_TYPE)
558 & control_loop%LOAD_INCREMENT_LOOP%ITERATION_NUMBER,err,error,*999)
565 & control_loop%LOAD_INCREMENT_LOOP%ITERATION_NUMBER,err,error,*999)
573 CALL flagerror(
"Problem is not associated.",err,error,*999)
576 CALL flagerror(
"Control loop is not associated.",err,error,*999)
579 exits(
"FinElasticityFluidPressure_ControlLoopPreLoop")
581 999
errors(
"FinElasticityFluidPressure_ControlLoopPreLoop",err,error)
582 exits(
"FinElasticityFluidPressure_ControlLoopPreLoop")
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, public control_loop_progress_output
Progress output from control loop.
subroutine, public finite_elasticity_post_solve(CONTROL_LOOP, SOLVER, ERR, ERROR,)
Sets up the finite elasticity problem post solve.
integer(intg), parameter equations_set_gfem_solution_method
Grid-based Finite Element Method solution method.
integer(intg), parameter problem_setup_control_type
Solver setup for a problem.
This module handles all problem wide constants.
integer(intg), parameter, public control_loop_node
The identifier for a each "leaf" node in a control loop.
Converts a number to its equivalent varying string representation.
subroutine, public finelasticityfluidpressure_controllooppreloop(CONTROL_LOOP, ERR, ERROR,)
Runs before each control loop iteration.
Contains information on the type of solver to be used.
integer(intg), parameter, public solver_petsc_library
PETSc solver library.
subroutine, public solvers_number_set(SOLVERS, NUMBER_OF_SOLVERS, ERR, ERROR,)
Sets/changes the number of solvers.
This module handles all equations matrix and rhs routines.
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.
integer(intg), parameter solver_equations_static
Solver equations are static.
integer(intg), parameter equations_set_elasticity_fluid_pressure_holmes_mow_subtype
subroutine, public solver_equations_sparsity_type_set(SOLVER_EQUATIONS, SPARSITY_TYPE, ERR, ERROR,)
Sets/changes the sparsity type for solver equations.
subroutine, public elasticity_fluid_pressure_post_solve(CONTROL_LOOP, SOLVER, ERR, ERROR,)
Sets up the finite elasticity fluid pressure problem post solve.
subroutine, public solvers_solver_get(SOLVERS, SOLVER_INDEX, SOLVER, ERR, ERROR,)
Returns a pointer to the specified solver in the list of solvers.
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.
integer(intg), parameter problem_setup_solvers_type
Solver setup for a problem.
subroutine, public finelasticityfluidpressure_finiteelementcalculate(EQUATIONS_SET, ELEMENT_NUMBER, ERR, ERROR,)
Calculates the element stiffness matrices and RHS for a finite elasticity fluid pressure equation fin...
This module contains all program wide constants.
subroutine, public finelasticityfluidpressure_equationssetsolnmethodset(EQUATIONS_SET, SOLUTION_METHOD, ERR, ERROR,)
Sets/changes the solution method for a finite elasticity fluid pressure equation type of a multi phys...
integer(intg), parameter solver_equations_nonlinear
Solver equations are nonlinear.
subroutine, public solver_library_type_set(SOLVER, SOLVER_LIBRARY_TYPE, ERR, ERROR,)
Sets/changes the type of library type to use for the solver.
integer(intg), parameter problem_setup_initial_type
Initial setup for a problem.
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.
subroutine, public finelasticityfluidpressure_problemspecificationset(problem, problemSpecification, err, error,)
Sets the problem specification for a finite elasticity fluid pressure equation type.
This module contains all the low-level base routines e.g., all debug, control, and low-level communic...
integer(intg), parameter, public general_output_type
General output type.
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
integer(intg), parameter, public solver_nonlinear_type
A nonlinear solver.
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 routines pertaining to finite elasticity coupled with fluid pressure for poro...
logical, save, public diagnostics1
.TRUE. if level 1 diagnostic output is active in the current routine
integer(intg), parameter equations_set_elasticity_fluid_pressure_static_inria_subtype
subroutine, public finelasticityfluidpressure_equationssetspecificationset(equationsSet, specification, err, error,)
Sets the equation specification for a finite elasticity fluid pressure equation type of a fluid mecha...
This module handles all solver routines.
integer(intg), parameter problem_standard_elasticity_fluid_pressure_subtype
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.
integer(intg), parameter, public diagnostic_output_type
Diagnostic output type.
subroutine, public finite_elasticity_pre_solve(CONTROL_LOOP, SOLVER, ERR, ERROR,)
Sets up the finite elasticity problem pre-solve.
integer(intg), parameter equations_set_fd_solution_method
Finite Difference solution method.
integer(intg), parameter problem_control_load_increment_loop_type
Load increment control loop.
Contains information on the setup information for an equations set.
integer(intg), parameter equations_set_elasticity_fluid_pres_holmes_mow_active_subtype
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.
subroutine, public elasticity_fluid_pressure_pre_solve(CONTROL_LOOP, SOLVER, ERR, ERROR,)
Sets up the finite elasticity fluid pressure problem pre-solve.
This module handles all control loop routines.
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 problem_finite_elasticity_fluid_pressure_type
integer(intg), parameter equations_set_bem_solution_method
Boundary Element Method solution method.
subroutine, public solver_solver_equations_get(SOLVER, SOLVER_EQUATIONS, ERR, ERROR,)
Returns a pointer to the solver equations for a solver.
subroutine, public finelasticityfluidpressure_equationssetsetup(EQUATIONS_SET, EQUATIONS_SET_SETUP, ERR, ERROR,)
Sets up the finite elasticity fluid pressure equation.
integer(intg), parameter equations_set_fv_solution_method
Finite Volume solution method.
subroutine, public elasticity_fluid_pressure_problem_setup(PROBLEM, PROBLEM_SETUP, ERR, ERROR,)
Sets up the finite elasticity fluid pressure equations problem.
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 finite elasticity routines.
This module contains all kind definitions.