98 INTEGER(INTG),
INTENT(OUT) :: ERR
103 enters(
"Advection_EquationsSetSetup",err,error,*999)
105 IF(
ASSOCIATED(equations_set))
THEN 106 IF(.NOT.
ALLOCATED(equations_set%SPECIFICATION))
THEN 107 CALL flagerror(
"Equations set specification is not allocated.",err,error,*999)
108 ELSE IF(
SIZE(equations_set%SPECIFICATION,1)/=3)
THEN 109 CALL flagerror(
"Equations set specification must have three entries for a Advection equations set.", &
112 SELECT CASE(equations_set%specification(3))
116 local_error=
"The third equations set specification of "// &
118 &
" is not valid for an advection type of a classical field equation set." 119 CALL flagerror(local_error,err,error,*999)
122 CALL flagerror(
"Equations set is not associated.",err,error,*999)
125 exits(
"Advection_EquationsSetSetup")
127 999 errorsexits(
"Advection_EquationsSetSetup",err,error)
141 INTEGER(INTG),
INTENT(IN) :: SOLUTION_METHOD
142 INTEGER(INTG),
INTENT(OUT) :: ERR
147 enters(
"Advection_EquationsSetSolutionMethodSet",err,error,*999)
149 IF(
ASSOCIATED(equations_set))
THEN 150 IF(.NOT.
ALLOCATED(equations_set%SPECIFICATION))
THEN 151 CALL flagerror(
"Equations set specification is not allocated.",err,error,*999)
152 ELSE IF(
SIZE(equations_set%SPECIFICATION,1)/=3)
THEN 153 CALL flagerror(
"Equations set specification must have three entries for a advection type equations set.", &
156 SELECT CASE(equations_set%SPECIFICATION(3))
158 SELECT CASE(solution_method)
162 local_error=
"The specified solution method of "//
trim(
number_to_vstring(solution_method,
"*",err,error))//
" is invalid." 163 CALL flagerror(local_error,err,error,*999)
166 local_error=
"The third equations set specification of "// &
168 &
" is not valid for an advection type of an classical field equations set." 169 CALL flagerror(local_error,err,error,*999)
172 CALL flagerror(
"Equations set is not associated.",err,error,*999)
175 exits(
"Advection_EquationsSetSolutionMethodSet")
177 999
errors(
"Advection_EquationsSetSolutionMethodSet",err,error)
178 exits(
"Advection_EquationsSetSolutionMethodSet")
192 INTEGER(INTG),
INTENT(IN) :: specification(:)
193 INTEGER(INTG),
INTENT(OUT) :: err
197 INTEGER(INTG) :: subtype
199 enters(
"Advection_EquationsSetSpecificationSet",err,error,*999)
201 IF(
ASSOCIATED(equationsset))
THEN 202 IF(
SIZE(specification,1)/=3)
THEN 203 CALL flagerror(
"Equations set specification must have three entries for a Laplace type equations set.", &
206 subtype=specification(3)
211 localerror=
"The third equations set specification of "//
trim(
numbertovstring(subtype,
"*",err,error))// &
212 &
" is not valid for an advection type of a classical field equations set." 213 CALL flagerror(localerror,err,error,*999)
216 IF(
ALLOCATED(equationsset%specification))
THEN 217 CALL flagerror(
"Equations set specification is already allocated.",err,error,*999)
219 ALLOCATE(equationsset%specification(3),stat=err)
220 IF(err/=0)
CALL flagerror(
"Could not allocate equations set specification.",err,error,*999)
224 CALL flagerror(
"Equations set is not associated.",err,error,*999)
227 exits(
"Advection_EquationsSetSpecificationSet")
229 999 errorsexits(
"Advection_EquationsSetSpecificationSet",err,error)
244 INTEGER(INTG),
INTENT(OUT) :: ERR
247 INTEGER(INTG) :: GEOMETRIC_MESH_COMPONENT,GEOMETRIC_SCALING_TYPE,GEOMETRIC_COMPONENT_NUMBER,NUMBER_OF_DIMENSIONS
248 INTEGER(INTG) :: DEPENDENT_FIELD_NUMBER_OF_VARIABLES,DEPENDENT_FIELD_NUMBER_OF_COMPONENTS,component_idx
249 INTEGER(INTG) :: INDEPENDENT_FIELD_NUMBER_OF_VARIABLES,INDEPENDENT_FIELD_NUMBER_OF_COMPONENTS
257 enters(
"Advection_EquationsSetLinearSetup",err,error,*999)
260 NULLIFY(equations_mapping)
261 NULLIFY(equations_matrices)
262 NULLIFY(geometric_decomposition)
264 IF(
ASSOCIATED(equations_set))
THEN 265 IF(.NOT.
ALLOCATED(equations_set%SPECIFICATION))
THEN 266 CALL flagerror(
"Equations set specification is not allocated.",err,error,*999)
267 ELSE IF(
SIZE(equations_set%SPECIFICATION,1)/=3)
THEN 268 CALL flagerror(
"Equations set specification must have three entries for an advection equations set.", &
271 SELECT CASE(equations_set%SPECIFICATION(3))
273 SELECT CASE(equations_set_setup%SETUP_TYPE)
275 SELECT CASE(equations_set_setup%ACTION_TYPE)
282 local_error=
"The action type of "//
trim(
number_to_vstring(equations_set_setup%ACTION_TYPE,
"*",err,error))// &
284 &
" is invalid for an advection equation." 285 CALL flagerror(local_error,err,error,*999)
289 SELECT CASE(equations_set%SPECIFICATION(3))
297 SELECT CASE(equations_set_setup%ACTION_TYPE)
299 dependent_field_number_of_variables=2
300 IF(equations_set%DEPENDENT%DEPENDENT_FIELD_AUTO_CREATED)
THEN 303 CALL field_create_start(equations_set_setup%FIELD_USER_NUMBER,equations_set%REGION, &
304 & equations_set%DEPENDENT%DEPENDENT_FIELD,err,error,*999)
306 CALL field_type_set_and_lock(equations_set%DEPENDENT%DEPENDENT_FIELD,field_general_type,err,error,*999)
308 CALL field_label_set(equations_set%DEPENDENT%DEPENDENT_FIELD,
"Concentration",err,error,*999)
310 CALL field_dependent_type_set_and_lock(equations_set%DEPENDENT%DEPENDENT_FIELD, &
311 & field_dependent_type,err,error,*999)
313 CALL field_mesh_decomposition_get(equations_set%GEOMETRY%GEOMETRIC_FIELD,geometric_decomposition, &
316 CALL field_mesh_decomposition_set_and_lock(equations_set%DEPENDENT%DEPENDENT_FIELD, &
317 & geometric_decomposition,err,error,*999)
319 CALL field_geometric_field_set_and_lock(equations_set%DEPENDENT%DEPENDENT_FIELD,equations_set%GEOMETRY% &
320 & geometric_field,err,error,*999)
322 CALL field_number_of_variables_set_and_lock(equations_set%DEPENDENT%DEPENDENT_FIELD, &
323 & dependent_field_number_of_variables,err,error,*999)
324 CALL field_variable_types_set_and_lock(equations_set%DEPENDENT%DEPENDENT_FIELD,[field_u_variable_type, &
325 & field_deludeln_variable_type],err,error,*999)
327 CALL field_dimension_set_and_lock(equations_set%DEPENDENT%DEPENDENT_FIELD,field_u_variable_type, &
328 & field_vector_dimension_type,err,error,*999)
329 CALL field_dimension_set_and_lock(equations_set%DEPENDENT%DEPENDENT_FIELD,field_deludeln_variable_type, &
330 & field_vector_dimension_type,err,error,*999)
332 CALL field_data_type_set_and_lock(equations_set%DEPENDENT%DEPENDENT_FIELD,field_u_variable_type, &
333 & field_dp_type,err,error,*999)
334 CALL field_data_type_set_and_lock(equations_set%DEPENDENT%DEPENDENT_FIELD,field_deludeln_variable_type, &
335 & field_dp_type,err,error,*999)
336 CALL field_number_of_components_get(equations_set%GEOMETRY%GEOMETRIC_FIELD,field_u_variable_type, &
337 & number_of_dimensions,err,error,*999)
339 dependent_field_number_of_components=1
340 CALL field_number_of_components_set_and_lock(equations_set%DEPENDENT%DEPENDENT_FIELD, &
341 & field_u_variable_type,dependent_field_number_of_components,err,error,*999)
342 CALL field_number_of_components_set_and_lock(equations_set%DEPENDENT%DEPENDENT_FIELD, &
343 & field_deludeln_variable_type,dependent_field_number_of_components,err,error,*999)
344 CALL field_component_mesh_component_get(equations_set%GEOMETRY%GEOMETRIC_FIELD,field_u_variable_type, &
345 & dependent_field_number_of_components,geometric_mesh_component,err,error,*999)
347 DO component_idx=1,dependent_field_number_of_components
348 CALL field_component_mesh_component_set(equations_set%DEPENDENT%DEPENDENT_FIELD, &
349 & field_u_variable_type,component_idx,geometric_mesh_component,err,error,*999)
350 CALL field_component_mesh_component_set(equations_set%DEPENDENT%DEPENDENT_FIELD, &
351 & field_deludeln_variable_type,component_idx,geometric_mesh_component,err,error,*999)
353 SELECT CASE(equations_set%SOLUTION_METHOD)
356 DO component_idx=1,dependent_field_number_of_components
357 CALL field_component_interpolation_set_and_lock(equations_set%DEPENDENT%DEPENDENT_FIELD, &
358 & field_u_variable_type,component_idx,field_node_based_interpolation,err,error,*999)
359 CALL field_component_interpolation_set_and_lock(equations_set%DEPENDENT%DEPENDENT_FIELD, &
360 & field_deludeln_variable_type,component_idx,field_node_based_interpolation,err,error,*999)
362 CALL field_scaling_type_get(equations_set%GEOMETRY%GEOMETRIC_FIELD,geometric_scaling_type, &
364 CALL field_scaling_type_set(equations_set%DEPENDENT%DEPENDENT_FIELD,geometric_scaling_type, &
367 local_error=
"The solution method of " &
369 CALL flagerror(local_error,err,error,*999)
373 CALL field_type_check(equations_set_setup%FIELD,field_general_type,err,error,*999)
374 CALL field_dependent_type_check(equations_set_setup%FIELD,field_dependent_type,err,error,*999)
375 CALL field_number_of_variables_check(equations_set_setup%FIELD,dependent_field_number_of_variables,err,error,*999)
376 CALL field_variable_types_check(equations_set_setup%FIELD,[field_u_variable_type,field_deludeln_variable_type], &
378 CALL field_dimension_check(equations_set_setup%FIELD,field_u_variable_type, &
379 & field_vector_dimension_type,err,error,*999)
380 CALL field_dimension_check(equations_set_setup%FIELD,field_deludeln_variable_type, &
381 & field_vector_dimension_type,err,error,*999)
382 CALL field_data_type_check(equations_set_setup%FIELD,field_u_variable_type,field_dp_type,err,error,*999)
383 CALL field_data_type_check(equations_set_setup%FIELD,field_deludeln_variable_type,field_dp_type, &
385 CALL field_number_of_components_get(equations_set%GEOMETRY%GEOMETRIC_FIELD,field_u_variable_type, &
386 & number_of_dimensions,err,error,*999)
387 dependent_field_number_of_components=1
388 CALL field_number_of_components_check(equations_set_setup%FIELD,field_u_variable_type, &
389 & dependent_field_number_of_components,err,error,*999)
390 CALL field_number_of_components_check(equations_set_setup%FIELD,field_deludeln_variable_type, &
391 & dependent_field_number_of_components,err,error,*999)
392 SELECT CASE(equations_set%SOLUTION_METHOD)
394 CALL field_component_interpolation_check(equations_set_setup%FIELD,field_u_variable_type,1, &
395 & field_node_based_interpolation,err,error,*999)
396 CALL field_component_interpolation_check(equations_set_setup%FIELD,field_deludeln_variable_type,1, &
397 & field_node_based_interpolation,err,error,*999)
400 &
"*",err,error))//
" is invalid." 401 CALL flagerror(local_error,err,error,*999)
406 IF(equations_set%DEPENDENT%DEPENDENT_FIELD_AUTO_CREATED)
THEN 407 CALL field_create_finish(equations_set%DEPENDENT%DEPENDENT_FIELD,err,error,*999)
408 CALL field_parameter_set_create(equations_set%DEPENDENT%DEPENDENT_FIELD,field_u_variable_type, &
409 & field_boundary_conditions_set_type,err,error,*999)
412 local_error=
"The action type of "//
trim(
number_to_vstring(equations_set_setup%ACTION_TYPE,
"*",err,error))// &
414 &
" is invalid for an advection equation" 415 CALL flagerror(local_error,err,error,*999)
421 SELECT CASE(equations_set_setup%ACTION_TYPE)
424 equations_materials=>equations_set%MATERIALS
425 IF(
ASSOCIATED(equations_materials))
THEN 426 IF(equations_materials%MATERIALS_FIELD_AUTO_CREATED)
THEN 429 CALL field_create_start(equations_set_setup%FIELD_USER_NUMBER,equations_set%REGION, &
430 & equations_set%MATERIALS%MATERIALS_FIELD,err,error,*999)
431 CALL field_type_set_and_lock(equations_materials%MATERIALS_FIELD,field_material_type,err,error,*999)
433 CALL field_label_set(equations_materials%MATERIALS_FIELD,
"Materials Field",err,error,*999)
434 CALL field_dependent_type_set_and_lock(equations_materials%MATERIALS_FIELD,field_independent_type, &
436 CALL field_mesh_decomposition_get(equations_set%GEOMETRY%GEOMETRIC_FIELD,geometric_decomposition, &
439 CALL field_mesh_decomposition_set_and_lock(equations_set%MATERIALS%MATERIALS_FIELD, &
440 & geometric_decomposition,err,error,*999)
442 CALL field_geometric_field_set_and_lock(equations_materials%MATERIALS_FIELD,equations_set%GEOMETRY% &
443 & geometric_field,err,error,*999)
444 CALL field_number_of_variables_set(equations_materials%MATERIALS_FIELD,1,err,error,*999)
445 CALL field_variable_types_set_and_lock(equations_materials%MATERIALS_FIELD,[field_u_variable_type],err,error,*999)
446 CALL field_variable_label_set(equations_materials%MATERIALS_FIELD,field_u_variable_type,
"Materials",err,error,*999)
447 CALL field_dimension_set_and_lock(equations_materials%MATERIALS_FIELD,field_u_variable_type, &
448 & field_vector_dimension_type,err,error,*999)
449 CALL field_data_type_set_and_lock(equations_materials%MATERIALS_FIELD,field_u_variable_type, &
450 & field_dp_type,err,error,*999)
451 CALL field_number_of_components_set_and_lock(equations_materials%MATERIALS_FIELD,field_u_variable_type, &
453 CALL field_component_mesh_component_get(equations_set%GEOMETRY%GEOMETRIC_FIELD, &
454 & field_u_variable_type,1,geometric_component_number,err,error,*999)
455 CALL field_component_mesh_component_set(equations_materials%MATERIALS_FIELD,field_u_variable_type, &
456 & 1,geometric_component_number,err,error,*999)
457 CALL field_component_interpolation_set(equations_materials%MATERIALS_FIELD,field_u_variable_type, &
458 & 1,field_constant_interpolation,err,error,*999)
460 CALL field_scaling_type_get(equations_set%GEOMETRY%GEOMETRIC_FIELD,geometric_scaling_type, &
462 CALL field_scaling_type_set(equations_materials%MATERIALS_FIELD,geometric_scaling_type,err,error,*999)
465 CALL field_type_check(equations_set_setup%FIELD,field_material_type,err,error,*999)
466 CALL field_dependent_type_check(equations_set_setup%FIELD,field_independent_type,err,error,*999)
467 CALL field_number_of_variables_check(equations_set_setup%FIELD,1,err,error,*999)
468 CALL field_variable_types_check(equations_set_setup%FIELD,[field_u_variable_type],err,error,*999)
469 CALL field_dimension_check(equations_set_setup%FIELD,field_u_variable_type, &
470 & field_vector_dimension_type,err,error,*999)
471 CALL field_data_type_check(equations_set_setup%FIELD,field_u_variable_type,field_dp_type, &
473 CALL field_number_of_components_get(equations_set%GEOMETRY%GEOMETRIC_FIELD,field_u_variable_type, &
474 & number_of_dimensions,err,error,*999)
475 CALL field_number_of_components_check(equations_set_setup%FIELD,field_u_variable_type,1,err,error,*999)
478 CALL flagerror(
"Equations set materials is not associated.",err,error,*999)
482 equations_materials=>equations_set%MATERIALS
483 IF(
ASSOCIATED(equations_materials))
THEN 484 IF(equations_materials%MATERIALS_FIELD_AUTO_CREATED)
THEN 486 CALL field_create_finish(equations_materials%MATERIALS_FIELD,err,error,*999)
488 CALL field_component_values_initialise(equations_materials%MATERIALS_FIELD,field_u_variable_type, &
489 & field_values_set_type,1,1.0_dp,err,error,*999)
492 CALL flagerror(
"Equations set materials is not associated.",err,error,*999)
497 & err,error))//
" is invalid for Navier-Stokes equation." 498 CALL flagerror(local_error,err,error,*999)
504 SELECT CASE(equations_set_setup%ACTION_TYPE)
507 independent_field_number_of_variables=1
508 independent_field_number_of_components=1
510 IF(equations_set%INDEPENDENT%INDEPENDENT_FIELD_AUTO_CREATED)
THEN 512 CALL field_create_start(equations_set_setup%FIELD_USER_NUMBER,equations_set%REGION, &
513 & equations_set%INDEPENDENT%INDEPENDENT_FIELD,err,error,*999)
515 CALL field_type_set_and_lock(equations_set%INDEPENDENT%INDEPENDENT_FIELD,field_general_type,err,error,*999)
517 CALL field_label_set(equations_set%INDEPENDENT%INDEPENDENT_FIELD,
"Independent Field",err,error,*999)
519 CALL field_dependent_type_set_and_lock(equations_set%INDEPENDENT%INDEPENDENT_FIELD, &
520 & field_independent_type,err,error,*999)
522 CALL field_mesh_decomposition_get(equations_set%GEOMETRY%GEOMETRIC_FIELD,geometric_decomposition,err,error,*999)
524 CALL field_mesh_decomposition_set_and_lock(equations_set%INDEPENDENT%INDEPENDENT_FIELD, &
525 & geometric_decomposition,err,error,*999)
527 CALL field_geometric_field_set_and_lock(equations_set%INDEPENDENT%INDEPENDENT_FIELD,equations_set% &
528 & geometry%GEOMETRIC_FIELD,err,error,*999)
530 CALL field_number_of_variables_set_and_lock(equations_set%INDEPENDENT%INDEPENDENT_FIELD, &
531 & independent_field_number_of_variables,err,error,*999)
532 CALL field_variable_types_set_and_lock(equations_set%INDEPENDENT%INDEPENDENT_FIELD,[field_u_variable_type], &
534 CALL field_dimension_set_and_lock(equations_set%INDEPENDENT%INDEPENDENT_FIELD,field_u_variable_type, &
535 & field_vector_dimension_type,err,error,*999)
537 CALL field_number_of_components_set_and_lock(equations_set%INDEPENDENT%INDEPENDENT_FIELD, &
538 & field_u_variable_type,independent_field_number_of_components,err,error,*999)
539 CALL field_component_mesh_component_get(equations_set%GEOMETRY%GEOMETRIC_FIELD,field_u_variable_type, &
540 & 1,geometric_mesh_component,err,error,*999)
542 CALL field_component_mesh_component_set(equations_set%INDEPENDENT%INDEPENDENT_FIELD, &
543 & field_u_variable_type,independent_field_number_of_components,geometric_mesh_component,err,error,*999)
544 SELECT CASE(equations_set%SOLUTION_METHOD)
547 CALL field_component_interpolation_set_and_lock(equations_set%INDEPENDENT%INDEPENDENT_FIELD, &
548 & field_u_variable_type,independent_field_number_of_components,field_node_based_interpolation,err,error,*999)
549 CALL field_scaling_type_get(equations_set%GEOMETRY%GEOMETRIC_FIELD,geometric_scaling_type, &
551 CALL field_scaling_type_set(equations_set%INDEPENDENT%INDEPENDENT_FIELD,geometric_scaling_type, &
554 CALL field_component_interpolation_set_and_lock(equations_set%INDEPENDENT%INDEPENDENT_FIELD, &
555 & field_u_variable_type,independent_field_number_of_components,field_node_based_interpolation,err,error,*999)
556 CALL field_scaling_type_get(equations_set%GEOMETRY%GEOMETRIC_FIELD,geometric_scaling_type, &
558 CALL field_scaling_type_set(equations_set%INDEPENDENT%INDEPENDENT_FIELD,geometric_scaling_type, &
561 local_error=
"The solution method of " &
563 CALL flagerror(local_error,err,error,*999)
567 CALL field_type_check(equations_set_setup%FIELD,field_general_type,err,error,*999)
568 CALL field_dimension_check(equations_set_setup%FIELD,field_u_variable_type,field_vector_dimension_type, &
570 CALL field_data_type_check(equations_set_setup%FIELD,field_u_variable_type,field_dp_type,err,error,*999)
574 IF(equations_set%INDEPENDENT%INDEPENDENT_FIELD_AUTO_CREATED)
THEN 575 CALL field_create_finish(equations_set%INDEPENDENT%INDEPENDENT_FIELD,err,error,*999)
578 local_error=
"The action type of "//
trim(
number_to_vstring(equations_set_setup%ACTION_TYPE,
"*",err,error))// &
580 &
" is invalid for a standard Navier-Stokes fluid" 581 CALL flagerror(local_error,err,error,*999)
587 SELECT CASE(equations_set_setup%ACTION_TYPE)
589 IF(equations_set%DEPENDENT%DEPENDENT_FINISHED)
THEN 595 CALL flagerror(
"Equations set subtype not valid.",err,error,*999)
598 CALL flagerror(
"Equations set dependent field has not been finished.",err,error,*999)
601 SELECT CASE(equations_set%SOLUTION_METHOD)
617 SELECT CASE(equations%SPARSITY_TYPE)
628 local_error=
"The equations matrices sparsity type of "// &
630 CALL flagerror(local_error,err,error,*999)
635 local_error=
"The solution method of "//
trim(
number_to_vstring(equations_set%SOLUTION_METHOD,
"*",err,error))// &
637 CALL flagerror(local_error,err,error,*999)
640 local_error=
"The action type of "//
trim(
number_to_vstring(equations_set_setup%ACTION_TYPE,
"*",err,error))// &
642 &
" is invalid for an advection equation." 643 CALL flagerror(local_error,err,error,*999)
646 local_error=
"The setup type of "//
trim(
number_to_vstring(equations_set_setup%SETUP_TYPE,
"*",err,error))// &
647 &
" is invalid for an advection equation." 648 CALL flagerror(local_error,err,error,*999)
651 local_error=
"The thrid equations set specification of "// &
653 &
" does not equal a advection equation set." 654 CALL flagerror(local_error,err,error,*999)
657 CALL flagerror(
"Equations set is not associated.",err,error,*999)
660 exits(
"Advection_EquationsSetLinearSetup")
662 999 errorsexits(
"Advection_EquationsSetLinearSetup",err,error)
676 INTEGER(INTG),
INTENT(IN) :: problemSpecification(:)
677 INTEGER(INTG),
INTENT(OUT) :: err
681 INTEGER(INTG) :: problemSubtype
683 enters(
"Advection_ProblemSpecificationSet",err,error,*999)
685 IF(
ASSOCIATED(problem))
THEN 686 IF(
SIZE(problemspecification,1)==3)
THEN 687 problemsubtype=problemspecification(3)
688 SELECT CASE(problemsubtype)
692 localerror=
"The third problem specification of "//
trim(
numbertovstring(problemsubtype,
"*",err,error))// &
693 &
" is not valid for a advection type of a classical field problem." 694 CALL flagerror(localerror,err,error,*999)
696 IF(
ALLOCATED(problem%specification))
THEN 697 CALL flagerror(
"Problem specification is already allocated.",err,error,*999)
699 ALLOCATE(problem%specification(3),stat=err)
700 IF(err/=0)
CALL flagerror(
"Could not allocate problem specification.",err,error,*999)
704 CALL flagerror(
"Advection problem specification must have three entries.",err,error,*999)
707 CALL flagerror(
"Problem is not associated.",err,error,*999)
710 exits(
"Advection_ProblemSpecificationSet")
712 999 errorsexits(
"Advection_ProblemSpecificationSet",err,error)
727 INTEGER(INTG),
INTENT(OUT) :: ERR
732 enters(
"ADVECTION_EQUATION_PROBLEM_SETUP",err,error,*999)
734 IF(
ASSOCIATED(problem))
THEN 735 IF(.NOT.
ALLOCATED(problem%SPECIFICATION))
THEN 736 CALL flagerror(
"Problem specification is not allocated.",err,error,*999)
737 ELSE IF(
SIZE(problem%SPECIFICATION,1)<3)
THEN 738 CALL flagerror(
"Problem specification must have three entries for a Laplace problem.",err,error,*999)
740 SELECT CASE(problem%SPECIFICATION(3))
744 local_error=
"The third problem specification of "// &
746 &
" is not valid for an advection type of a classical field problem." 747 CALL flagerror(local_error,err,error,*999)
750 CALL flagerror(
"Problem is not associated.",err,error,*999)
753 exits(
"ADVECTION_EQUATION_PROBLEM_SETUP")
755 999 errorsexits(
"ADVECTION_EQUATION_PROBLEM_SETUP",err,error)
770 INTEGER(INTG),
INTENT(OUT) :: ERR
779 enters(
"ADVECTION_EQUATION_PROBLEM_LINEAR_SETUP",err,error,*999)
781 NULLIFY(control_loop)
783 NULLIFY(solver_equations)
785 IF(
ASSOCIATED(problem))
THEN 786 IF(.NOT.
ALLOCATED(problem%SPECIFICATION))
THEN 787 CALL flagerror(
"Problem specification is not allocated.",err,error,*999)
788 ELSE IF(
SIZE(problem%SPECIFICATION,1)<3)
THEN 789 CALL flagerror(
"Problem specification must have three entries for an advection problem.",err,error,*999)
792 SELECT CASE(problem_setup%SETUP_TYPE)
794 SELECT CASE(problem_setup%ACTION_TYPE)
800 local_error=
"The action type of "//
trim(
number_to_vstring(problem_setup%ACTION_TYPE,
"*",err,error))// &
802 &
" is invalid for an advection equation." 803 CALL flagerror(local_error,err,error,*999)
806 SELECT CASE(problem_setup%ACTION_TYPE)
813 control_loop_root=>problem%CONTROL_LOOP
817 local_error=
"The action type of "//
trim(
number_to_vstring(problem_setup%ACTION_TYPE,
"*",err,error))// &
819 &
" is invalid for an advection equation." 820 CALL flagerror(local_error,err,error,*999)
824 control_loop_root=>problem%CONTROL_LOOP
826 SELECT CASE(problem_setup%ACTION_TYPE)
844 local_error=
"The action type of "//
trim(
number_to_vstring(problem_setup%ACTION_TYPE,
"*",err,error))// &
846 &
" is invalid for an advection equation." 847 CALL flagerror(local_error,err,error,*999)
850 SELECT CASE(problem_setup%ACTION_TYPE)
853 control_loop_root=>problem%CONTROL_LOOP
865 control_loop_root=>problem%CONTROL_LOOP
874 local_error=
"The action type of "//
trim(
number_to_vstring(problem_setup%ACTION_TYPE,
"*",err,error))// &
876 &
" is invalid for an advection equation." 877 CALL flagerror(local_error,err,error,*999)
880 local_error=
"The setup type of "//
trim(
number_to_vstring(problem_setup%SETUP_TYPE,
"*",err,error))// &
881 &
" is invalid for an advection equation." 882 CALL flagerror(local_error,err,error,*999)
885 local_error=
"The third problem specification of "// &
887 &
" does not equal an advection equation subtype." 888 CALL flagerror(local_error,err,error,*999)
891 CALL flagerror(
"Problem is not associated.",err,error,*999)
894 exits(
"ADVECTION_EQUATION_PROBLEM_LINEAR_SETUP")
896 999 errorsexits(
"ADVECTION_EQUATION_PROBLEM_LINEAR_SETUP",err,error)
910 INTEGER(INTG),
INTENT(IN) :: ELEMENT_NUMBER
911 INTEGER(INTG),
INTENT(OUT) :: ERR
914 TYPE(
basis_type),
POINTER :: DEPENDENT_BASIS,GEOMETRIC_BASIS
922 TYPE(
field_type),
POINTER :: DEPENDENT_FIELD,INDEPENDENT_FIELD,GEOMETRIC_FIELD,MATERIALS_FIELD
926 INTEGER(INTG) :: mhs,ms,ng,nhs,ns,xiIdx,coordIdx,MESH_COMPONENT
927 REAL(DP) :: JGW,SUM,DXI_DX,DPHIMS_DXI,DPHINS_DXI,PHIMS,PHINS,flow,area,D,Conc,dConc
928 LOGICAL :: UPDATE_DAMPING_MATRIX,UPDATE_STIFFNESS_MATRIX
930 update_damping_matrix = .false.
931 update_stiffness_matrix = .false.
933 enters(
"ADVECTION_EQUATION_FINITE_ELEMENT_CALCULATE",err,error,*999)
935 IF(
ASSOCIATED(equations_set))
THEN 936 equations=>equations_set%EQUATIONS
937 IF(
ASSOCIATED(equations))
THEN 938 IF(.NOT.
ALLOCATED(equations_set%SPECIFICATION))
THEN 939 CALL flagerror(
"Equations set specification is not allocated.",err,error,*999)
940 ELSE IF(
SIZE(equations_set%SPECIFICATION,1)<3)
THEN 941 CALL flagerror(
"Equations set specification must have three entries for an advection problem.",err,error,*999)
943 SELECT CASE(equations_set%specification(3))
946 dependent_field=>equations%INTERPOLATION%DEPENDENT_FIELD
947 independent_field=>equations%INTERPOLATION%INDEPENDENT_FIELD
948 materials_field=>equations%INTERPOLATION%MATERIALS_FIELD
949 geometric_field=>equations%INTERPOLATION%GEOMETRIC_FIELD
950 geometric_basis=>geometric_field%DECOMPOSITION%DOMAIN(geometric_field%DECOMPOSITION%MESH_COMPONENT_NUMBER)%PTR% &
951 & topology%ELEMENTS%ELEMENTS(element_number)%BASIS
952 dependent_basis=>dependent_field%DECOMPOSITION%DOMAIN(geometric_field%DECOMPOSITION%MESH_COMPONENT_NUMBER)%PTR% &
953 & topology%ELEMENTS%ELEMENTS(element_number)%BASIS
955 equations_matrices=>equations%EQUATIONS_MATRICES
956 dynamic_matrices=>equations_matrices%DYNAMIC_MATRICES
957 stiffness_matrix=>dynamic_matrices%MATRICES(1)%PTR
958 damping_matrix=>dynamic_matrices%MATRICES(2)%PTR
959 equations_mapping=>equations%EQUATIONS_MAPPING
960 dynamic_mapping=>equations_mapping%DYNAMIC_MAPPING
961 field_variable=>dynamic_mapping%EQUATIONS_MATRIX_TO_VAR_MAPS(1)%VARIABLE
962 stiffness_matrix%ELEMENT_MATRIX%MATRIX=0.0_dp
963 damping_matrix%ELEMENT_MATRIX%MATRIX=0.0_dp
964 IF(
ASSOCIATED(damping_matrix)) update_damping_matrix=damping_matrix%UPDATE_MATRIX
965 IF(
ASSOCIATED(stiffness_matrix)) update_stiffness_matrix=stiffness_matrix%UPDATE_MATRIX
967 SELECT CASE(equations_set%specification(3))
969 CALL field_interpolation_parameters_element_get(field_values_set_type,element_number,equations%INTERPOLATION% &
970 & dependent_interp_parameters(field_u_variable_type)%PTR,err,error,*999)
971 CALL field_interpolation_parameters_element_get(field_values_set_type,element_number,equations%INTERPOLATION% &
972 & independent_interp_parameters(field_u_variable_type)%PTR,err,error,*999)
973 CALL field_interpolation_parameters_element_get(field_values_set_type,element_number,equations%INTERPOLATION% &
974 & materials_interp_parameters(field_u_variable_type)%PTR,err,error,*999)
975 CALL field_interpolation_parameters_element_get(field_values_set_type,element_number,equations%INTERPOLATION% &
976 & geometric_interp_parameters(field_u_variable_type)%PTR,err,error,*999)
978 DO ng=1,quadrature_scheme%NUMBER_OF_GAUSS
980 & dependent_interp_point(field_u_variable_type)%PTR,err,error,*999)
982 & independent_interp_point(field_u_variable_type)%PTR,err,error,*999)
984 & materials_interp_point(field_u_variable_type)%PTR,err,error,*999)
986 & geometric_interp_point(field_u_variable_type)%PTR,err,error,*999)
987 CALL field_interpolated_point_metrics_calculate(geometric_basis%NUMBER_OF_XI,equations%INTERPOLATION% &
988 & geometric_interp_point_metrics(field_u_variable_type)%PTR,err,error,*999)
990 conc=equations%INTERPOLATION%DEPENDENT_INTERP_POINT(field_u_variable_type)%PTR%VALUES(1,
no_part_deriv)
991 dconc=equations%INTERPOLATION%DEPENDENT_INTERP_POINT(field_u_variable_type)%PTR%VALUES(1,
first_part_deriv)
992 flow=equations%INTERPOLATION%INDEPENDENT_INTERP_POINT(field_u_variable_type)%PTR%VALUES(1,
no_part_deriv)
993 area=equations%INTERPOLATION%INDEPENDENT_INTERP_POINT(field_u_variable_type)%PTR%VALUES(2,
no_part_deriv)
994 d=equations%INTERPOLATION%MATERIALS_INTERP_POINT(field_u_variable_type)%PTR%VALUES(1,
no_part_deriv)
997 mesh_component=field_variable%COMPONENTS(1)%MESH_COMPONENT_NUMBER
998 dependent_basis=>dependent_field%DECOMPOSITION%DOMAIN(mesh_component)%PTR% &
999 & topology%ELEMENTS%ELEMENTS(element_number)%BASIS
1001 jgw=equations%INTERPOLATION%GEOMETRIC_INTERP_POINT_METRICS(field_u_variable_type)%PTR%JACOBIAN* &
1002 & quadrature_scheme%GAUSS_WEIGHTS(ng)
1003 elements_topology=>field_variable%COMPONENTS(1)%DOMAIN%TOPOLOGY%ELEMENTS
1007 DO xiidx=1,dependent_basis%NUMBER_OF_XI
1008 DO coordidx=1,equations%INTERPOLATION%GEOMETRIC_INTERP_POINT_METRICS(field_u_variable_type) &
1009 & %PTR%NUMBER_OF_X_DIMENSIONS
1010 dxi_dx=dxi_dx+(equations%INTERPOLATION%GEOMETRIC_INTERP_POINT_METRICS(field_u_variable_type)% &
1011 &
ptr%DXI_DX(xiidx,coordidx))**2.0_dp
1017 DO ms=1,dependent_basis%NUMBER_OF_ELEMENT_PARAMETERS
1018 phims=quadrature_scheme%GAUSS_BASIS_FNS(ms,
no_part_deriv,ng)
1022 IF(update_stiffness_matrix .OR. update_damping_matrix)
THEN 1024 DO ns=1,dependent_basis%NUMBER_OF_ELEMENT_PARAMETERS
1025 phins=quadrature_scheme%GAUSS_BASIS_FNS(ns,
no_part_deriv,ng)
1030 IF(update_damping_matrix)
THEN 1032 damping_matrix%ELEMENT_MATRIX%MATRIX(mhs,nhs)=damping_matrix%ELEMENT_MATRIX%MATRIX(mhs,nhs)+sum*jgw
1036 IF(update_stiffness_matrix)
THEN 1037 sum=(d*(dphims_dxi*dxi_dx)+(flow/area)*phims)*dphins_dxi*dxi_dx
1038 stiffness_matrix%ELEMENT_MATRIX%MATRIX(mhs,nhs)=stiffness_matrix%ELEMENT_MATRIX%MATRIX(mhs,nhs)+sum*jgw
1048 local_error=
"The third equations set specification of "// &
1050 &
" is not valid for an advection type of a classical field equations set." 1051 CALL flagerror(local_error,err,error,*999)
1054 local_error=
"The third equations set specification of "// &
1056 &
" is not valid for an advection equation type of a classical field equations set class." 1057 CALL flagerror(local_error,err,error,*999)
1060 CALL flagerror(
"Equations set equations is not associated.",err,error,*999)
1063 CALL flagerror(
"Equations set is not associated.",err,error,*999)
1066 exits(
"ADVECTION_EQUATION_FINITE_ELEMENT_CALCULATE")
1068 999 errorsexits(
"ADVECTION_EQUATION_FINITE_ELEMENT_CALCULATE",err,error)
1082 INTEGER(INTG),
INTENT(OUT) :: ERR
1089 enters(
"ADVECTION_PRE_SOLVE",err,error,*999)
1091 IF(
ASSOCIATED(solver))
THEN 1092 solvers=>solver%SOLVERS
1093 IF(
ASSOCIATED(solvers))
THEN 1094 control_loop=>solvers%CONTROL_LOOP
1095 IF(
ASSOCIATED(control_loop%PROBLEM))
THEN 1096 IF(.NOT.
ALLOCATED(control_loop%PROBLEM%SPECIFICATION))
THEN 1097 CALL flagerror(
"Problem specification is not allocated.",err,error,*999)
1098 ELSE IF(
SIZE(control_loop%PROBLEM%SPECIFICATION,1)<3)
THEN 1099 CALL flagerror(
"Problem specification must have three entries for an advection problem.",err,error,*999)
1101 SELECT CASE(control_loop%PROBLEM%SPECIFICATION(3))
1108 CALL flagerror(local_error,err,error,*999)
1111 CALL flagerror(
"Problem is not associated.",err,error,*999)
1114 CALL flagerror(
"Solvers is not associated.",err,error,*999)
1117 CALL flagerror(
"Solver is not associated.",err,error,*999)
1120 exits(
"ADVECTION_PRE_SOLVE")
1122 999 errorsexits(
"ADVECTION_PRE_SOLVE",err,error)
1135 INTEGER(INTG),
INTENT(OUT) :: ERR
1147 REAL(DP) :: CONC,START_TIME,STOP_TIME,CURRENT_TIME,TIME_INCREMENT,period,delta(300),t(300),c(300),s
1148 INTEGER(INTG) :: CURRENT_LOOP_ITERATION,OUTPUT_ITERATION_NUMBER,i,j,n,m
1150 enters(
"ADVECTION_PRE_SOLVE_UPDATE_BC",err,error,*999)
1152 IF(
ASSOCIATED(solver))
THEN 1153 solvers=>solver%SOLVERS
1154 IF(
ASSOCIATED(solvers))
THEN 1155 control_loop=>solvers%CONTROL_LOOP
1156 CALL control_loop_times_get(control_loop,start_time,stop_time,current_time,time_increment,current_loop_iteration, &
1157 & output_iteration_number,err,error,*999)
1158 IF(
ASSOCIATED(control_loop%PROBLEM))
THEN 1159 IF(.NOT.
ALLOCATED(control_loop%PROBLEM%SPECIFICATION))
THEN 1160 CALL flagerror(
"Problem specification is not allocated.",err,error,*999)
1161 ELSE IF(
SIZE(control_loop%PROBLEM%SPECIFICATION,1)<3)
THEN 1162 CALL flagerror(
"Problem specification must have three entries for an advection problem.",err,error,*999)
1164 SELECT CASE(control_loop%PROBLEM%specification(3))
1167 solver_equations=>solver%SOLVER_EQUATIONS
1168 IF(
ASSOCIATED(solver_equations))
THEN 1169 solver_mapping=>solver_equations%SOLVER_MAPPING
1170 IF(
ASSOCIATED(solver_mapping))
THEN 1171 equations=>solver_mapping%EQUATIONS_SET_TO_SOLVER_MAP(1)%EQUATIONS
1172 IF(
ASSOCIATED(equations))
THEN 1173 equations_set=>equations%EQUATIONS_SET
1174 dependent_field=>equations_set%DEPENDENT%DEPENDENT_FIELD
1175 boundary_conditions=>solver_equations%BOUNDARY_CONDITIONS
1176 IF(
ASSOCIATED(dependent_field))
THEN 1178 IF(current_time<100)
THEN 1180 t(1)=0.003228 ; c(1)=0.001513
1181 t(2)=0.077482 ; c(2)=0.001513
1182 t(3)=0.133979 ; c(3)=0.013616
1183 t(4)=0.187248 ; c(4)=0.040847
1184 t(5)=0.237288 ; c(5)=0.108926
1185 t(6)=0.285714 ; c(6)=0.226929
1186 t(7)=0.33414 ; c(7)=0.414523
1187 t(8)=0.417272 ; c(8)=0.800303
1188 t(9)=0.45117 ; c(9)=0.92587
1189 t(10)=0.479419 ; c(10)=0.984871
1190 t(11)=0.499596 ; c(11)=0.995461
1191 t(12)=0.519774 ; c(12)=0.984871
1192 t(13)=0.550444 ; c(13)=0.919818
1193 t(14)=0.583535 ; c(14)=0.795764
1194 t(15)=0.661017 ; c(15)=0.429652
1195 t(16)=0.698951 ; c(16)=0.282905
1196 t(17)=0.722357 ; c(17)=0.208775
1197 t(18)=0.753834 ; c(18)=0.128593
1198 t(19)=0.785311 ; c(19)=0.07413
1199 t(20)=0.824052 ; c(20)=0.034796
1200 t(21)=0.874899 ; c(21)=0.012103
1201 t(22)=0.91364 ; c(22)=0.004539
1202 t(23)=0.999193 ; c(23)=0.0
1210 delta(i)=(c(i+1)-c(i))/(t(i+1)-t(i))
1212 delta(n)=delta(n-1)+(delta(n-1)-delta(n-2))/(t(n-1)-t(n-2))*(t(n)-t(n-1))
1215 IF (t(j) <= (current_time/period))
THEN 1220 s=(current_time/period)-t(m)
1221 conc=(c(m)+s*delta(m))
1226 CALL field_parameter_set_update_local_dof(dependent_field,field_u_variable_type,field_values_set_type, &
1227 & 1,conc,err,error,*999)
1228 CALL field_parameter_set_update_start(dependent_field, &
1229 & field_u_variable_type,field_values_set_type,err,error,*999)
1230 CALL field_parameter_set_update_finish(dependent_field, &
1231 & field_u_variable_type,field_values_set_type,err,error,*999)
1233 CALL flagerror(
"Dependent field and/or geometric field is/are not associated.",err,error,*999)
1236 CALL flagerror(
"Equations are not associated.",err,error,*999)
1239 CALL flagerror(
"Solver mapping is not associated.",err,error,*999)
1242 CALL flagerror(
"Solver equations are not associated.",err,error,*999)
1245 CALL flagerror(local_error,err,error,*999)
1248 CALL flagerror(
"Problem is not associated.",err,error,*999)
1251 CALL flagerror(
"Solvers is not associated.",err,error,*999)
1254 CALL flagerror(
"Solver is not associated.",err,error,*999)
1257 exits(
"ADVECTION_PRE_SOLVE_UPDATE_BC")
1259 999 errorsexits(
"ADVECTION_PRE_SOLVE_UPDATE_BC",err,error)
1272 INTEGER(INTG),
INTENT(OUT) :: ERR
1279 enters(
"ADVECTION_POST_SOLVE",err,error,*999)
1281 IF(
ASSOCIATED(solver))
THEN 1282 solvers=>solver%SOLVERS
1283 IF(
ASSOCIATED(solvers))
THEN 1284 control_loop=>solvers%CONTROL_LOOP
1285 IF(
ASSOCIATED(control_loop%PROBLEM))
THEN 1286 IF(.NOT.
ALLOCATED(control_loop%PROBLEM%SPECIFICATION))
THEN 1287 CALL flagerror(
"Problem specification is not allocated.",err,error,*999)
1288 ELSE IF(
SIZE(control_loop%PROBLEM%SPECIFICATION,1)<3)
THEN 1289 CALL flagerror(
"Problem specification must have three entries for an advection problem.",err,error,*999)
1291 SELECT CASE(control_loop%PROBLEM%specification(3))
1295 local_error=
"The third problem specification of "// &
1297 &
" is not valid for an advection type of a classical field problem." 1298 CALL flagerror(local_error,err,error,*999)
1301 CALL flagerror(
"Problem is not associated.",err,error,*999)
1304 CALL flagerror(
"Solvers is not associated.",err,error,*999)
1307 CALL flagerror(
"Solver is not associated.",err,error,*999)
1310 exits(
"ADVECTION_POST_SOLVE")
1312 999 errorsexits(
"ADVECTION_POST_SOLVE",err,error)
1326 INTEGER(INTG),
INTENT(OUT) :: ERR
1334 enters(
"Advection_Couple1D0D",err,error,*999)
1336 IF(
ASSOCIATED(solver))
THEN 1337 solverequations=>solver%SOLVER_EQUATIONS
1338 IF(
ASSOCIATED(solverequations))
THEN 1339 solvermapping=>solverequations%SOLVER_MAPPING
1340 IF(
ASSOCIATED(solvermapping))
THEN 1341 equationsset=>solvermapping%EQUATIONS_SETS(1)%PTR
1342 IF(
ASSOCIATED(equationsset))
THEN 1343 dependentfield=>equationsset%DEPENDENT%DEPENDENT_FIELD
1345 CALL flagerror(
"Equations set is not associated.",err,error,*999)
1348 CALL flagerror(
"Solver mapping is not associated.",err,error,*999)
1351 CALL flagerror(
"Solver equations is not associated.",err,error,*999)
1354 CALL flagerror(
"Solver is not associated.",err,error,*999)
1357 exits(
"Advection_Couple1D0D")
1359 999 errorsexits(
"Advection_Couple1D0D",err,error)
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.
Contains information on the boundary conditions for the solver equations.
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, parameter ptr
Pointer integer kind.
subroutine, public equations_mapping_dynamic_variable_type_set(EQUATIONS_MAPPING, DYNAMIC_VARIABLE_TYPE, ERR, ERROR,)
Sets the mapping between a dependent field variable and the equations set dynamic matrices...
This module handles pure advection equation routines.
Contains information on the equations mapping i.e., how field variable DOFS are mapped to the rows an...
Contains information about the equations in an equations set.
integer(intg), parameter problem_control_time_loop_type
Time control loop.
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.
subroutine, public advection_pre_solve(SOLVER, ERR, ERROR,)
Sets up the Poisson problem pre solve.
Converts a number to its equivalent varying string representation.
subroutine, public equations_create_start(EQUATIONS_SET, EQUATIONS, ERR, ERROR,)
Start the creation of equations for the equation set.
Contains information on the mesh decomposition.
subroutine, public advection_pre_solve_update_bc(SOLVER, ERR, ERROR,)
subroutine, public equations_matrices_create_start(EQUATIONS, EQUATIONS_MATRICES, ERR, ERROR,)
Starts the creation of the equations matrices and rhs for the the equations.
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 no_part_deriv
No partial derivative i.e., u.
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.
integer(intg), parameter first_part_deriv
First partial derivative i.e., du/ds.
This module contains routines for timing the program.
subroutine, public advection_post_solve(SOLVER, ERR, ERROR,)
integer(intg), parameter problem_advection_subtype
subroutine, public equations_time_dependence_type_set(EQUATIONS, TIME_DEPENDENCE_TYPE, ERR, ERROR,)
Sets/changes the time dependence type for equations.
subroutine, public solver_equations_sparsity_type_set(SOLVER_EQUATIONS, SPARSITY_TYPE, ERR, ERROR,)
Sets/changes the sparsity type for solver equations.
This module handles all analytic analysis routines.
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.
Contains information for a field defined on a region.
integer(intg), parameter, public equations_matrices_full_matrices
Use fully populated equation matrices.
subroutine, public equations_mapping_rhs_variable_type_set(EQUATIONS_MAPPING, RHS_VARIABLE_TYPE, ERR, ERROR,)
Sets the mapping between a dependent field variable and the equations set rhs vector.
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.
subroutine, public advection_couple1d0d(SOLVER, ERR, ERROR,)
Update area for boundary nodes.
integer(intg), parameter, public solver_dynamic_type
A dynamic solver.
integer(intg), parameter, public basis_default_quadrature_scheme
Identifier for the default quadrature scheme.
integer(intg), parameter problem_setup_solvers_type
Solver setup for a problem.
integer(intg), parameter equations_set_setup_equations_type
Equations setup.
Contains information for mapping field variables to the dynamic matrices in the equations set of the ...
integer(intg), parameter equations_set_setup_independent_type
Independent variables.
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 control_loop_times_get(CONTROL_LOOP, START_TIME, STOP_TIME, CURRENT_TIME, TIME_INCREMENT, CURRENT_LOOP_ITERATION, OUTPUT_ITERATION_NUMBER, ERR, ERROR,)
Gets the current time parameters for a time control loop.
integer(intg), parameter problem_setup_initial_type
Initial setup for a problem.
integer(intg), parameter equations_set_advection_subtype
Contains the topology information for the elements of a domain.
subroutine, public advection_equationssetspecificationset(equationsSet, specification, err, error,)
Sets the equation specification for an advection type of a classical field equations set...
integer(intg), parameter equations_first_order_dynamic
The equations are first order dynamic.
subroutine, public solver_equations_linearity_type_set(SOLVER_EQUATIONS, LINEARITY_TYPE, ERR, ERROR,)
Sets/changes the linearity type for solver equations.
integer(intg), parameter equations_set_setup_start_action
Start setup action.
integer(intg), parameter problem_classical_field_class
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.
Contains information on the equations matrices and vectors.
integer(intg), parameter, public equations_matrix_fem_structure
Finite element matrix structure.
subroutine, public advection_equationssetsetup(EQUATIONS_SET, EQUATIONS_SET_SETUP, ERR, ERROR,)
Sets up the diffusion equation type of a classical field equations set class.
integer(intg), parameter equations_set_advection_equation_type
This module contains all the low-level base routines e.g., all debug, control, and low-level communic...
subroutine, public equationsmatrices_dynamicstructuretypeset(EQUATIONS_MATRICES, STRUCTURE_TYPE, ERR, ERROR,)
Sets the structure (sparsity) of the dynamic equations matrices.
subroutine, public equations_matrices_linear_storage_type_set(EQUATIONS_MATRICES, STORAGE_TYPE, ERR, ERROR,)
Sets the storage type (sparsity) of the linear equations matrices.
subroutine, public equations_mapping_create_finish(EQUATIONS_MAPPING, ERR, ERROR,)
Finishes the process of creating an equations mapping.
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_coupled1d0d_adv_navier_stokes_subtype
subroutine, public equations_set_equations_get(EQUATIONS_SET, EQUATIONS, ERR, ERROR,)
Gets the equations for an equations set.
subroutine, public equations_create_finish(EQUATIONS, ERR, ERROR,)
Finish the creation of equations.
subroutine advection_equation_problem_linear_setup(PROBLEM, PROBLEM_SETUP, ERR, ERROR,)
Sets up the advection equations.
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.
subroutine, public equations_matrices_dynamic_storage_type_set(EQUATIONS_MATRICES, STORAGE_TYPE, ERR, ERROR,)
Sets the storage type (sparsity) of the dynamic equations matrices.
integer(intg), parameter equations_set_setup_geometry_type
Geometry setup.
Contains information for a problem.
integer(intg), parameter equations_set_classical_field_class
integer(intg), parameter equations_linear
The equations are linear.
subroutine, public equations_matrices_create_finish(EQUATIONS_MATRICES, ERR, ERROR,)
Finishes the creation of the equations matrices and RHS for the the equations.
This module handles all distributed matrix vector routines.
This module handles all boundary conditions routines.
This module handles all solver routines.
subroutine, public equations_mapping_create_start(EQUATIONS, EQUATIONS_MAPPING, ERR, ERROR,)
Finishes the process of creating an equations mapping for a equations set equations.
Contains information about an equations matrix.
Contains information for a particular quadrature scheme.
This module contains all routines dealing with (non-distributed) matrix and vectors types...
integer(intg), parameter, public distributed_matrix_block_storage_type
Distributed matrix block storage type.
subroutine, public equations_linearity_type_set(EQUATIONS, LINEARITY_TYPE, ERR, ERROR,)
Sets/changes the linearity type for equations.
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.
Contains information on the solver mapping between the global equation sets and the solver matrices...
Contains information for a field variable defined on a field.
subroutine, public advection_equation_finite_element_calculate(EQUATIONS_SET, ELEMENT_NUMBER, ERR, ERROR,)
Calculates the element stiffness matrices for an advection equation finite element equations set...
integer(intg), parameter, public equations_matrices_sparse_matrices
Use sparse equations matrices.
subroutine advection_equationssetlinearsetup(EQUATIONS_SET, EQUATIONS_SET_SETUP, ERR, ERROR,)
Sets up the advection equation.
Contains information on the setup information for an equations set.
subroutine, public advection_equationssetsolutionmethodset(EQUATIONS_SET, SOLUTION_METHOD, ERR, ERROR,)
Sets/changes the solution method for an advection equation type of an classical field equations set c...
integer(intg), parameter problem_setup_start_action
Start setup action.
integer(intg), parameter problem_transient1d_adv_navier_stokes_subtype
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.
subroutine, public solver_solver_equations_get(SOLVER, SOLVER_EQUATIONS, ERR, ERROR,)
Returns a pointer to the solver equations for a solver.
Contains all information about a basis .
subroutine, public advection_equation_problem_setup(PROBLEM, PROBLEM_SETUP, ERR, ERROR,)
Sets up the diffusion problem.
integer(intg), parameter problem_advection_equation_type
subroutine, public advection_problemspecificationset(problem, problemSpecification, err, error,)
Sets the problem specification for an advection problem.
integer(intg), parameter, public solver_dynamic_first_degree
Dynamic solver uses a first degree polynomial for time interpolation.
integer(intg), parameter equations_set_setup_initial_type
Initial setup.
recursive subroutine, public control_loop_create_finish(CONTROL_LOOP, ERR, ERROR,)
Finish the process of creating a control loop.
Flags an error condition.
integer(intg), parameter equations_set_nodal_solution_method
Similar to Finite Element Method with looping over nodes instead of elements.
This module contains all kind definitions.
integer(intg), parameter equations_set_setup_finish_action
Finish setup action.
integer(intg), parameter, public distributed_matrix_compressed_row_storage_type
Distributed matrix compressed row storage type.
Contains information of the dynamic matrices for equations matrices.