84 PUBLIC helmholtz_equation_finite_element_calculate,helmholtz_equation_equations_set_setup, &
85 & helmholtz_equation_equations_set_solution_method_set,helmholtzequation_equationssetspecificationset, &
86 & helmholtz_equation_problem_subtype_set,helmholtz_equation_problem_setup
95 SUBROUTINE helmholtz_equation_finite_element_calculate(EQUATIONS_SET,ELEMENT_NUMBER,ERR,ERROR,*)
99 INTEGER(INTG),
INTENT(IN) :: ELEMENT_NUMBER
100 INTEGER(INTG),
INTENT(OUT) :: ERR
106 enters(
"HELMHOLTZ_EQUATION_FINITE_ELEMENT_CALCULATE",err,error,*999)
108 IF(
ASSOCIATED(equations_set))
THEN 109 equations=>equations_set%EQUATIONS
110 IF(
ASSOCIATED(equations))
THEN 111 SELECT CASE(equations_set%SUBTYPE)
112 CASE(equations_set_no_source_helmholtz_subtype)
117 local_error=
"Equations set subtype "//
trim(
number_to_vstring(equations_set%SUBTYPE,
"*",err,error))// &
118 &
" is not valid for a Helmholtz equation type of a classical field equations set class." 122 CALL flag_error(
"Equations set equations is not associated.",err,error,*999)
125 CALL flag_error(
"Equations set is not associated.",err,error,*999)
128 exits(
"HELMHOLTZ_EQUATION_FINITE_ELEMENT_CALCULATE")
130 999 errorsexits(
"HELMHOLTZ_EQUATION_FINITE_ELEMENT_CALCULATE",err,error)
132 END SUBROUTINE helmholtz_equation_finite_element_calculate
139 SUBROUTINE helmholtz_equation_equations_set_setup(EQUATIONS_SET,EQUATIONS_SET_SETUP,ERR,ERROR,*)
144 INTEGER(INTG),
INTENT(OUT) :: ERR
149 enters(
"HELMHOLTZ_EQUATION_EQUATIONS_SET_SETUP",err,error,*999)
151 IF(
ASSOCIATED(equations_set))
THEN 152 SELECT CASE(equations_set%SUBTYPE)
153 CASE(equations_set_no_source_helmholtz_subtype)
154 CALL helmholtz_equation_equations_set_linear_setup(equations_set,equations_set_setup,err,error,*999)
156 local_error=
"Equations set subtype "//
trim(
number_to_vstring(equations_set%SUBTYPE,
"*",err,error))// &
157 &
" is not valid for a Helmholtz equation type of a classical field equation set class." 161 CALL flag_error(
"Equations set is not associated.",err,error,*999)
164 exits(
"HELMHOLTZ_EQUATION_EQUATIONS_SET_SETUP")
166 999 errorsexits(
"HELMHOLTZ_EQUATION_EQUATIONS_SET_SETUP",err,error)
168 END SUBROUTINE helmholtz_equation_equations_set_setup
175 SUBROUTINE helmholtz_equation_equations_set_solution_method_set(EQUATIONS_SET,SOLUTION_METHOD,ERR,ERROR,*)
179 INTEGER(INTG),
INTENT(IN) :: SOLUTION_METHOD
180 INTEGER(INTG),
INTENT(OUT) :: ERR
185 enters(
"HELMHOLTZ_EQUATIONS_SET_SOLUTION_METHOD_SET",err,error,*999)
187 IF(
ASSOCIATED(equations_set))
THEN 188 SELECT CASE(equations_set%SUBTYPE)
190 SELECT CASE(solution_method)
194 CALL flag_error(
"Not implemented.",err,error,*999)
196 CALL flag_error(
"Not implemented.",err,error,*999)
198 CALL flag_error(
"Not implemented.",err,error,*999)
200 CALL flag_error(
"Not implemented.",err,error,*999)
202 CALL flag_error(
"Not implemented.",err,error,*999)
204 local_error=
"The specified solution method of "//
trim(
number_to_vstring(solution_method,
"*",err,error))//
" is invalid." 208 local_error=
"Equations set subtype of "//
trim(
number_to_vstring(equations_set%SUBTYPE,
"*",err,error))// &
209 &
" is not valid for a Helmholtz equation type of an classical field equations set class." 213 CALL flag_error(
"Equations set is not associated.",err,error,*999)
216 exits(
"HELMHOLTZ_EQUATION_EQUATIONS_SET_SOLUTION_METHOD_SET")
218 999 errorsexits(
"HELMHOLTZ_EQUATION_EQUATIONS_SET_SOLUTION_METHOD_SET",err,error)
220 END SUBROUTINE helmholtz_equation_equations_set_solution_method_set
227 SUBROUTINE helmholtzequation_equationssetspecificationset(equationsSet,specification,err,error,*)
231 INTEGER(INTG),
INTENT(IN) :: specification(:)
232 INTEGER(INTG),
INTENT(OUT) :: err
236 INTEGER(INTG) :: subtype
238 enters(
"HelmholtzEquation_EquationsSetSpecificationSet",err,error,*999)
240 IF(
ASSOCIATED(equationsset))
THEN 241 IF(
SIZE(specification,1)/=3)
THEN 242 CALL flagerror(
"Equations set specification must have three entries for a Helmholtz type equations set.", &
245 subtype=specification(3)
247 CASE(equations_set_no_source_helmholtz_subtype)
250 localerror=
"The third equations set specification of "//
trim(
numbertovstring(subtype,
"*",err,error))// &
251 &
" is not valid for a Helmholtz type of a classical field equations set." 252 CALL flagerror(localerror,err,error,*999)
255 IF(
ALLOCATED(equationsset%specification))
THEN 256 CALL flagerror(
"Equations set specification is already allocated.",err,error,*999)
258 ALLOCATE(equationsset%specification(3),stat=err)
259 IF(err/=0)
CALL flagerror(
"Could not allocate equations set specification.",err,error,*999)
263 CALL flagerror(
"Equations set is not associated.",err,error,*999)
266 exits(
"HelmholtzEquation_EquationsSetSpecificationSet")
268 999
errors(
"HelmholtzEquation_EquationsSetSpecificationSet",err,error)
269 exits(
"HelmholtzEquation_EquationsSetSpecificationSet")
272 END SUBROUTINE helmholtzequation_equationssetspecificationset
279 SUBROUTINE helmholtz_equation_equations_set_linear_setup(EQUATIONS_SET,EQUATIONS_SET_SETUP,ERR,ERROR,*)
284 INTEGER(INTG),
INTENT(OUT) :: ERR
289 enters(
"HELMHOLTZ_EQUATION_EQUATION_SET_LINEAR_SETUP",err,error,*999)
291 IF(
ASSOCIATED(equations_set))
THEN 292 IF(equations_set%SUBTYPE==equations_set_no_source_helmholtz_subtype)
THEN 293 SELECT CASE(equations_set_setup%SETUP_TYPE)
302 local_error=
"The setup type of "//
trim(
number_to_vstring(equations_set_setup%SETUP_TYPE,
"*",err,error))// &
303 &
" is invalid for a standard Helmholtz equation." 307 local_error=
"The equations set subtype of "//
trim(
number_to_vstring(equations_set%SUBTYPE,
"*",err,error))// &
308 &
" does not equal a linear Helmholtz equation subtype." 312 CALL flag_error(
"Equations set is not associated.",err,error,*999)
315 exits(
"HELMHOLTZ_EQUATION_EQUATIONS_SET_LINEAR_SETUP")
317 999 errorsexits(
"HELMHOLTZ_EQUATION_EQUATIONS_SET_LINEAR_SETUP",err,error)
319 END SUBROUTINE helmholtz_equation_equations_set_linear_setup
326 SUBROUTINE helmholtz_equation_problem_setup(PROBLEM,PROBLEM_SETUP,ERR,ERROR,*)
331 INTEGER(INTG),
INTENT(OUT) :: ERR
336 enters(
"HELMHOLTZ_EQUATION_PROBLEM_SETUP",err,error,*999)
338 IF(
ASSOCIATED(problem))
THEN 339 SELECT CASE(problem%SUBTYPE)
340 CASE(problem_no_source_helmholtz_subtype)
341 CALL helmholtz_equation_problem_linear_setup(problem,problem_setup,err,error,*999)
344 &
" is not valid for a Helmholtz equation type of a classical field problem class." 348 CALL flag_error(
"Problem is not associated.",err,error,*999)
351 exits(
"HELMHOLTZ_EQUATION_PROBLEM_SETUP")
353 999 errorsexits(
"HELMHOLTZ_EQUATION_PROBLEM_SETUP",err,error)
355 END SUBROUTINE helmholtz_equation_problem_setup
362 SUBROUTINE helmholtz_equation_problem_subtype_set(PROBLEM,PROBLEM_SUBTYPE,ERR,ERROR,*)
366 INTEGER(INTG),
INTENT(IN) :: PROBLEM_SUBTYPE
367 INTEGER(INTG),
INTENT(OUT) :: ERR
372 enters(
"HELMHOLTZ_EQUATION_PROBLEM_SUBTYPE_SET",err,error,*999)
374 IF(
ASSOCIATED(problem))
THEN 375 SELECT CASE(problem_subtype)
376 CASE(problem_no_source_helmholtz_subtype)
379 problem%SUBTYPE=problem_no_source_helmholtz_subtype
382 &
" is not valid for a Helmholtz equation type of a classical field problem class." 386 CALL flag_error(
"Problem is not associated.",err,error,*999)
389 exits(
"HELMHOLTZ_EQUATION_PROBLEM_SUBTYPE_SET")
391 999 errorsexits(
"HELMHOLTZ_EQUATION_PROBLEM_SUBTYPE_SET",err,error)
393 END SUBROUTINE helmholtz_equation_problem_subtype_set
400 SUBROUTINE helmholtz_equation_problem_linear_setup(PROBLEM,PROBLEM_SETUP,ERR,ERROR,*)
405 INTEGER(INTG),
INTENT(OUT) :: ERR
410 enters(
"HELMHOLTZ_EQUATION_PROBLEM_LINEAR_SETUP",err,error,*999)
412 IF(
ASSOCIATED(problem))
THEN 413 IF(problem%SUBTYPE==problem_no_source_helmholtz_subtype)
THEN 414 SELECT CASE(problem_setup%SETUP_TYPE)
420 local_error=
"The setup type of "//
trim(
number_to_vstring(problem_setup%SETUP_TYPE,
"*",err,error))// &
421 &
" is invalid for a linear Helmholtz equation." 426 &
" does not equal a linear Helmholtz equation subtype." 430 CALL flag_error(
"Problem is not associated.",err,error,*999)
433 exits(
"HELMHOLTZ_EQUATION_PROBLEM_LINEAR_SETUP")
435 999 errorsexits(
"HELMHOLTZ_EQUATION_PROBLEM_LINEAR_SETUP",err,error)
437 END SUBROUTINE helmholtz_equation_problem_linear_setup
integer(intg), parameter equations_set_setup_dependent_type
Dependent variables.
integer(intg), parameter equations_set_fem_solution_method
Finite Element Method solution method.
This module contains all basis function routines.
integer(intg), parameter equations_set_setup_materials_type
Materials setup.
subroutine, public enters(NAME, ERR, ERROR,)
Records the entry into the named procedure and initialises the error code.
Contains information about the equations in an equations set.
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.
Converts a number to its equivalent varying string representation.
This module handles all equations matrix and rhs routines.
Contains information on an equations set.
This module handles all equations routines.
integer(intg), parameter equations_set_setup_source_type
Source setup.
integer(intg), parameter equations_set_no_subtype
This module contains all string manipulation and transformation routines.
This module contains routines for timing the program.
This module provides an iso_varying_string module, conformant to the API specified in ISO/IEC 1539-2:...
integer(intg), parameter problem_setup_solvers_type
Solver setup for a problem.
integer(intg), parameter equations_set_setup_equations_type
Equations setup.
This module contains all program wide constants.
integer(intg), parameter problem_setup_initial_type
Initial setup for a problem.
integer(intg), parameter problem_classical_field_class
subroutine, public exits(NAME)
Records the exit out of the named procedure.
This module contains all type definitions in order to avoid cyclic module references.
integer(intg), parameter equations_set_helmholtz_equation_type
This module contains all the low-level base routines e.g., all debug, control, and low-level communic...
This module handles all Helmholtz equations routines.
This module handles all domain mappings routines.
This module handles all equations mapping routines.
integer(intg), parameter equations_set_gfv_solution_method
Grid-based Finite Volume solution method.
integer(intg), parameter equations_set_setup_geometry_type
Geometry setup.
Contains information for a problem.
integer(intg), parameter equations_set_classical_field_class
This module handles all distributed matrix vector routines.
This module handles all boundary conditions routines.
This module handles all solver routines.
integer(intg), parameter problem_helmholtz_equation_type
This module contains all routines dealing with (non-distributed) matrix and vectors types...
integer(intg), parameter problem_setup_solver_equations_type
Solver equations setup for a problem.
integer(intg), parameter equations_set_fd_solution_method
Finite Difference solution method.
Contains information on the setup information for an equations set.
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 equations_set_bem_solution_method
Boundary Element Method solution method.
integer(intg), parameter equations_set_fv_solution_method
Finite Volume solution method.
Flags an error condition.
integer(intg), parameter equations_set_setup_initial_type
Initial setup.
integer(intg), parameter equations_set_setup_analytic_type
Analytic setup.
Flags an error condition.
This module contains all kind definitions.