113 INTEGER(INTG),
INTENT(OUT) :: ERR
116 INTEGER(INTG) :: component_idx,deriv_idx,dim_idx,local_ny,node_idx,NUMBER_OF_DIMENSIONS,variable_idx,variable_type
117 INTEGER(INTG) :: COUNT_DOF
118 REAL(DP) ::
VALUE,X(3)
119 REAL(DP),
POINTER :: GEOMETRIC_PARAMETERS(:)
122 TYPE(
field_type),
POINTER :: DEPENDENT_FIELD,GEOMETRIC_FIELD
126 enters(
"Poiseuille_BoundaryConditionsAnalyticCalculate",err,error,*999)
128 IF(
ASSOCIATED(equations_set))
THEN 129 IF(
ASSOCIATED(equations_set%ANALYTIC))
THEN 130 dependent_field=>equations_set%DEPENDENT%DEPENDENT_FIELD
131 IF(
ASSOCIATED(dependent_field))
THEN 132 geometric_field=>equations_set%GEOMETRY%GEOMETRIC_FIELD
133 IF(
ASSOCIATED(geometric_field))
THEN 134 CALL field_number_of_components_get(geometric_field,field_u_variable_type,number_of_dimensions,err,error,*999)
135 NULLIFY(geometric_variable)
136 CALL field_variable_get(geometric_field,field_u_variable_type,geometric_variable,err,error,*999)
137 CALL field_parameter_set_data_get(geometric_field,field_u_variable_type,field_values_set_type,geometric_parameters, &
140 IF(
ASSOCIATED(boundary_conditions))
THEN 144 DO variable_idx=1,dependent_field%NUMBER_OF_VARIABLES
145 variable_type=dependent_field%VARIABLES(variable_idx)%VARIABLE_TYPE
146 field_variable=>dependent_field%VARIABLE_TYPE_MAP(variable_type)%PTR
147 IF(
ASSOCIATED(field_variable))
THEN 148 CALL field_parameter_set_create(dependent_field,variable_type,field_analytic_values_set_type,err,error,*999)
149 DO component_idx=1,field_variable%NUMBER_OF_COMPONENTS
150 IF(field_variable%COMPONENTS(component_idx)%INTERPOLATION_TYPE==field_node_based_interpolation)
THEN 151 domain=>field_variable%COMPONENTS(component_idx)%DOMAIN
152 IF(
ASSOCIATED(domain))
THEN 153 IF(
ASSOCIATED(domain%TOPOLOGY))
THEN 154 domain_nodes=>domain%TOPOLOGY%NODES
155 IF(
ASSOCIATED(domain_nodes))
THEN 158 DO node_idx=1,domain_nodes%NUMBER_OF_NODES
160 DO dim_idx=1,number_of_dimensions
162 local_ny=geometric_variable%COMPONENTS(dim_idx)%PARAM_TO_DOF_MAP%NODE_PARAM2DOF_MAP% &
163 & nodes(node_idx)%DERIVATIVES(1)%VERSIONS(1)
164 x(dim_idx)=geometric_parameters(local_ny)
167 DO deriv_idx=1,domain_nodes%NODES(node_idx)%NUMBER_OF_DERIVATIVES
168 SELECT CASE(equations_set%ANALYTIC%ANALYTIC_FUNCTION_TYPE)
171 SELECT CASE(variable_type)
172 CASE(field_u_variable_type)
173 SELECT CASE(domain_nodes%NODES(node_idx)%DERIVATIVES(deriv_idx)%GLOBAL_DERIVATIVE_INDEX)
175 VALUE=log(4.0_dp/((x(1)+x(2)+1.0_dp)**2))
177 CALL flagerror(
"Not implemented.",err,error,*999)
179 CALL flagerror(
"Not implemented.",err,error,*999)
181 CALL flagerror(
"Not implemented.",err,error,*999)
184 domain_nodes%NODES(node_idx)%DERIVATIVES(deriv_idx)%GLOBAL_DERIVATIVE_INDEX,
"*", &
185 & err,error))//
" is invalid." 186 CALL flagerror(local_error,err,error,*999)
188 CASE(field_deludeln_variable_type)
189 SELECT CASE(domain_nodes%NODES(node_idx)%DERIVATIVES(deriv_idx)%GLOBAL_DERIVATIVE_INDEX)
192 VALUE=-2.0_dp*(x(1)+x(2))/(x(1)+x(2)+1.0_dp)
194 CALL flagerror(
"Not implemented.",err,error,*999)
196 CALL flagerror(
"Not implemented.",err,error,*999)
198 CALL flagerror(
"Not implemented.",err,error,*999)
201 domain_nodes%NODES(node_idx)%DERIVATIVES(deriv_idx)%GLOBAL_DERIVATIVE_INDEX,
"*", &
202 & err,error))//
" is invalid." 203 CALL flagerror(local_error,err,error,*999)
207 IF(variable_type==field_u_variable_type.AND.domain_nodes%NODES(node_idx)%BOUNDARY_NODE)
THEN 213 IF(variable_type==field_deludeln_variable_type.and.node_idx/=1)
THEN 214 IF(domain_nodes%NODES(node_idx)%BOUNDARY_NODE)
THEN 225 CALL flagerror(
"Domain topology nodes is not associated.",err,error,*999)
228 CALL flagerror(
"Domain topology is not associated.",err,error,*999)
231 CALL flagerror(
"Domain is not associated.",err,error,*999)
234 CALL flagerror(
"Only node based interpolation is implemented.",err,error,*999)
237 CALL field_parameter_set_update_start(dependent_field,variable_type,field_analytic_values_set_type, &
239 CALL field_parameter_set_update_finish(dependent_field,variable_type,field_analytic_values_set_type, &
242 CALL flagerror(
"Field variable is not associated.",err,error,*999)
245 CALL field_parameter_set_data_restore(geometric_field,field_u_variable_type,field_values_set_type, &
246 & geometric_parameters,err,error,*999)
248 CALL flagerror(
"Boundary conditions is not associated.",err,error,*999)
251 CALL flagerror(
"Equations set geometric field is not associated.",err,error,*999)
254 CALL flagerror(
"Equations set dependent field is not associated.",err,error,*999)
257 CALL flagerror(
"Equations set analytic is not associated.",err,error,*999)
260 CALL flagerror(
"Equations set is not associated.",err,error,*999)
263 exits(
"Poiseuille_BoundaryConditionsAnalyticCalculate")
265 999
errors(
"Poiseuille_BoundaryConditionsAnalyticCalculate",err,error)
266 exits(
"Poiseuille_BoundaryConditionsAnalyticCalculate")
281 INTEGER(INTG),
INTENT(OUT) :: ERR
286 enters(
"POISEUILLE_EQUATION_EQUATIONS_SET_SETUP",err,error,*999)
288 IF(
ASSOCIATED(equations_set))
THEN 289 IF(.NOT.
ALLOCATED(equations_set%SPECIFICATION))
THEN 290 CALL flagerror(
"Equations set specification is not allocated.",err,error,*999)
291 ELSE IF(
SIZE(equations_set%SPECIFICATION,1)/=3)
THEN 292 CALL flagerror(
"Equations set specification must have three entries for a Poiseuille type equations set.", &
295 SELECT CASE(equations_set%SPECIFICATION(3))
301 local_error=
"Equations set subtype "//
trim(
number_to_vstring(equations_set%SPECIFICATION(3),
"*",err,error))// &
302 &
" is not valid for a Poiseuille equation type of a fluid mechanics equation set class." 303 CALL flagerror(local_error,err,error,*999)
306 CALL flagerror(
"Equations set is not associated.",err,error,*999)
309 exits(
"POISEUILLE_EQUATION_EQUATIONS_SET_SETUP")
311 999 errorsexits(
"POISEUILLE_EQUATION_EQUATIONS_SET_SETUP",err,error)
324 INTEGER(INTG),
INTENT(IN) :: SOLUTION_METHOD
325 INTEGER(INTG),
INTENT(OUT) :: ERR
330 enters(
"Poiseuille_EquationsSetSolutionMethodSet",err,error,*999)
332 IF(
ASSOCIATED(equations_set))
THEN 333 IF(.NOT.
ALLOCATED(equations_set%SPECIFICATION))
THEN 334 CALL flagerror(
"Equations set specification is not allocated.",err,error,*999)
335 ELSE IF(
SIZE(equations_set%SPECIFICATION,1)/=3)
THEN 336 CALL flagerror(
"Equations set specification must have three entries for a Poiseuille type equations set.", &
339 SELECT CASE(equations_set%SPECIFICATION(3))
341 SELECT CASE(solution_method)
345 CALL flagerror(
"Not implemented.",err,error,*999)
347 CALL flagerror(
"Not implemented.",err,error,*999)
349 CALL flagerror(
"Not implemented.",err,error,*999)
351 CALL flagerror(
"Not implemented.",err,error,*999)
353 CALL flagerror(
"Not implemented.",err,error,*999)
355 local_error=
"The specified solution method of "//
trim(
number_to_vstring(solution_method,
"*",err,error))//
" is invalid." 356 CALL flagerror(local_error,err,error,*999)
359 local_error=
"Equations set subtype of "//
trim(
number_to_vstring(equations_set%SPECIFICATION(3),
"*",err,error))// &
360 &
" is not valid for a Poiseuille equation type of an fluid mechanics equations set class." 361 CALL flagerror(local_error,err,error,*999)
364 CALL flagerror(
"Equations set is not associated.",err,error,*999)
367 exits(
"Poiseuille_EquationsSetSolutionMethodSet")
369 999 errorsexits(
"Poiseuille_EquationsSetSolutionMethodSet",err,error)
383 INTEGER(INTG),
INTENT(IN) :: specification(:)
384 INTEGER(INTG),
INTENT(OUT) :: err
388 INTEGER(INTG) :: subtype
390 enters(
"Poiseuille_EquationsSetSpecificationSet",err,error,*999)
392 IF(
ASSOCIATED(equationsset))
THEN 393 IF(
SIZE(specification,1)/=3)
THEN 394 CALL flagerror(
"Equations set specification must have three entries for a Poiseuille equation type equations set.", &
397 subtype=specification(3)
403 localerror=
"The third equations set specification of "//
trim(
numbertovstring(subtype,
"*",err,error))// &
404 &
" is not valid for a Poiseuille equation type of a fluid mechanics equations set class." 405 CALL flagerror(localerror,err,error,*999)
408 IF(
ALLOCATED(equationsset%specification))
THEN 409 CALL flagerror(
"Equations set specification is already allocated.",err,error,*999)
411 ALLOCATE(equationsset%specification(3),stat=err)
412 IF(err/=0)
CALL flagerror(
"Could not allocate equations set specification.",err,error,*999)
416 CALL flagerror(
"Equations set is not associated.",err,error,*999)
419 exits(
"Poiseuille_EquationsSetSpecificationSet")
421 999
errors(
"Poiseuille_EquationsSetSpecificationSet",err,error)
422 exits(
"Poiseuille_EquationsSetSpecificationSet")
438 INTEGER(INTG),
INTENT(OUT) :: ERR
441 INTEGER(INTG) :: component_idx,GEOMETRIC_COMPONENT_NUMBER,GEOMETRIC_SCALING_TYPE
449 enters(
"Poiseuille_EquationsSetStaticSetup",err,error,*999)
452 NULLIFY(equations_mapping)
453 NULLIFY(equations_matrices)
454 NULLIFY(geometric_decomposition)
456 IF(
ASSOCIATED(equations_set))
THEN 457 IF(.NOT.
ALLOCATED(equations_set%SPECIFICATION))
THEN 458 CALL flagerror(
"Equations set specification is not allocated.",err,error,*999)
459 ELSE IF(
SIZE(equations_set%SPECIFICATION,1)/=3)
THEN 460 CALL flagerror(
"Equations set specification must have three entries for a Poiseuille type equations set.", &
464 SELECT CASE(equations_set_setup%SETUP_TYPE)
466 SELECT CASE(equations_set_setup%ACTION_TYPE)
473 local_error=
"The action type of "//
trim(
number_to_vstring(equations_set_setup%ACTION_TYPE,
"*",err,error))// &
475 &
" is invalid for a static Poiseuille equation." 476 CALL flagerror(local_error,err,error,*999)
481 SELECT CASE(equations_set_setup%ACTION_TYPE)
483 IF(equations_set%DEPENDENT%DEPENDENT_FIELD_AUTO_CREATED)
THEN 485 CALL field_create_start(equations_set_setup%FIELD_USER_NUMBER,equations_set%REGION,equations_set%DEPENDENT% &
486 & dependent_field,err,error,*999)
487 CALL field_type_set_and_lock(equations_set%DEPENDENT%DEPENDENT_FIELD,field_general_type,err,error,*999)
488 CALL field_dependent_type_set_and_lock(equations_set%DEPENDENT%DEPENDENT_FIELD,field_dependent_type,err,error,*999)
489 CALL field_mesh_decomposition_get(equations_set%GEOMETRY%GEOMETRIC_FIELD,geometric_decomposition,err,error,*999)
490 CALL field_mesh_decomposition_set_and_lock(equations_set%DEPENDENT%DEPENDENT_FIELD,geometric_decomposition, &
492 CALL field_geometric_field_set_and_lock(equations_set%DEPENDENT%DEPENDENT_FIELD,equations_set%GEOMETRY% &
493 & geometric_field,err,error,*999)
494 CALL field_number_of_variables_set_and_lock(equations_set%DEPENDENT%DEPENDENT_FIELD,2,err,error,*999)
495 CALL field_variable_types_set_and_lock(equations_set%DEPENDENT%DEPENDENT_FIELD,[field_u_variable_type, &
496 & field_deludeln_variable_type],err,error,*999)
497 CALL field_dimension_set_and_lock(equations_set%DEPENDENT%DEPENDENT_FIELD,field_u_variable_type, &
498 & field_vector_dimension_type,err,error,*999)
499 CALL field_dimension_set_and_lock(equations_set%DEPENDENT%DEPENDENT_FIELD,field_deludeln_variable_type, &
500 & field_vector_dimension_type,err,error,*999)
501 CALL field_data_type_set_and_lock(equations_set%DEPENDENT%DEPENDENT_FIELD,field_u_variable_type, &
502 & field_dp_type,err,error,*999)
503 CALL field_data_type_set_and_lock(equations_set%DEPENDENT%DEPENDENT_FIELD,field_deludeln_variable_type, &
504 & field_dp_type,err,error,*999)
505 CALL field_number_of_components_set_and_lock(equations_set%DEPENDENT%DEPENDENT_FIELD,field_u_variable_type,2, &
507 CALL field_number_of_components_set_and_lock(equations_set%DEPENDENT%DEPENDENT_FIELD,field_deludeln_variable_type,2, &
510 CALL field_component_mesh_component_get(equations_set%GEOMETRY%GEOMETRIC_FIELD,field_u_variable_type,1, &
511 & geometric_component_number,err,error,*999)
512 CALL field_component_mesh_component_set(equations_set%DEPENDENT%DEPENDENT_FIELD,field_u_variable_type,1, &
513 & geometric_component_number,err,error,*999)
514 CALL field_component_mesh_component_set(equations_set%DEPENDENT%DEPENDENT_FIELD,field_u_variable_type,2, &
515 & geometric_component_number,err,error,*999)
516 CALL field_component_mesh_component_set(equations_set%DEPENDENT%DEPENDENT_FIELD,field_deludeln_variable_type,1, &
517 & geometric_component_number,err,error,*999)
518 CALL field_component_mesh_component_set(equations_set%DEPENDENT%DEPENDENT_FIELD,field_deludeln_variable_type,2, &
519 & geometric_component_number,err,error,*999)
520 SELECT CASE(equations_set%SOLUTION_METHOD)
522 CALL field_component_interpolation_set_and_lock(equations_set%DEPENDENT%DEPENDENT_FIELD,field_u_variable_type,1, &
523 & field_node_based_interpolation,err,error,*999)
524 CALL field_component_interpolation_set_and_lock(equations_set%DEPENDENT%DEPENDENT_FIELD,field_u_variable_type,2, &
525 & field_element_based_interpolation,err,error,*999)
526 CALL field_component_interpolation_set_and_lock(equations_set%DEPENDENT%DEPENDENT_FIELD, &
527 & field_deludeln_variable_type,1,field_node_based_interpolation,err,error,*999)
528 CALL field_component_interpolation_set_and_lock(equations_set%DEPENDENT%DEPENDENT_FIELD, &
529 & field_deludeln_variable_type,2,field_element_based_interpolation,err,error,*999)
531 CALL field_scaling_type_get(equations_set%GEOMETRY%GEOMETRIC_FIELD,geometric_scaling_type,err,error,*999)
532 CALL field_scaling_type_set(equations_set%DEPENDENT%DEPENDENT_FIELD,geometric_scaling_type,err,error,*999)
534 CALL flagerror(
"Not implemented.",err,error,*999)
536 CALL flagerror(
"Not implemented.",err,error,*999)
538 CALL flagerror(
"Not implemented.",err,error,*999)
540 CALL flagerror(
"Not implemented.",err,error,*999)
542 CALL flagerror(
"Not implemented.",err,error,*999)
544 local_error=
"The solution method of "//
trim(
number_to_vstring(equations_set%SOLUTION_METHOD,
"*",err,error))// &
546 CALL flagerror(local_error,err,error,*999)
550 CALL field_type_check(equations_set_setup%FIELD,field_general_type,err,error,*999)
551 CALL field_dependent_type_check(equations_set_setup%FIELD,field_dependent_type,err,error,*999)
552 CALL field_number_of_variables_check(equations_set_setup%FIELD,2,err,error,*999)
553 CALL field_variable_types_check(equations_set_setup%FIELD,[field_u_variable_type,field_deludeln_variable_type], &
555 CALL field_dimension_check(equations_set_setup%FIELD,field_u_variable_type,field_vector_dimension_type,err,error,*999)
556 CALL field_dimension_check(equations_set_setup%FIELD,field_deludeln_variable_type,field_vector_dimension_type, &
558 CALL field_data_type_check(equations_set_setup%FIELD,field_u_variable_type,field_dp_type,err,error,*999)
559 CALL field_data_type_check(equations_set_setup%FIELD,field_deludeln_variable_type,field_dp_type,err,error,*999)
560 CALL field_number_of_components_check(equations_set_setup%FIELD,field_u_variable_type,2,err,error,*999)
561 CALL field_number_of_components_check(equations_set_setup%FIELD,field_deludeln_variable_type,2,err,error,*999)
562 SELECT CASE(equations_set%SOLUTION_METHOD)
564 CALL field_component_interpolation_check(equations_set_setup%FIELD,field_u_variable_type,1, &
565 & field_node_based_interpolation,err,error,*999)
566 CALL field_component_interpolation_check(equations_set_setup%FIELD,field_u_variable_type,2, &
567 & field_element_based_interpolation,err,error,*999)
568 CALL field_component_interpolation_check(equations_set_setup%FIELD,field_deludeln_variable_type,1, &
569 & field_node_based_interpolation,err,error,*999)
570 CALL field_component_interpolation_check(equations_set_setup%FIELD,field_deludeln_variable_type,2, &
571 & field_element_based_interpolation,err,error,*999)
573 CALL flagerror(
"Not implemented.",err,error,*999)
575 CALL flagerror(
"Not implemented.",err,error,*999)
577 CALL flagerror(
"Not implemented.",err,error,*999)
579 CALL flagerror(
"Not implemented.",err,error,*999)
581 CALL flagerror(
"Not implemented.",err,error,*999)
583 local_error=
"The solution method of "//
trim(
number_to_vstring(equations_set%SOLUTION_METHOD,
"*",err,error))// &
585 CALL flagerror(local_error,err,error,*999)
589 IF(equations_set%DEPENDENT%DEPENDENT_FIELD_AUTO_CREATED)
THEN 590 CALL field_create_finish(equations_set%DEPENDENT%DEPENDENT_FIELD,err,error,*999)
593 local_error=
"The action type of "//
trim(
number_to_vstring(equations_set_setup%ACTION_TYPE,
"*",err,error))// &
595 &
" is invalid for a static Poiseuille equation" 596 CALL flagerror(local_error,err,error,*999)
599 SELECT CASE(equations_set_setup%ACTION_TYPE)
601 equations_materials=>equations_set%MATERIALS
602 IF(
ASSOCIATED(equations_materials))
THEN 603 IF(equations_materials%MATERIALS_FIELD_AUTO_CREATED)
THEN 605 CALL field_create_start(equations_set_setup%FIELD_USER_NUMBER,equations_set%REGION,equations_materials% &
606 & materials_field,err,error,*999)
607 CALL field_type_set_and_lock(equations_materials%MATERIALS_FIELD,field_material_type,err,error,*999)
608 CALL field_dependent_type_set_and_lock(equations_materials%MATERIALS_FIELD,field_independent_type,err,error,*999)
609 CALL field_mesh_decomposition_get(equations_set%GEOMETRY%GEOMETRIC_FIELD,geometric_decomposition,err,error,*999)
610 CALL field_mesh_decomposition_set_and_lock(equations_materials%MATERIALS_FIELD,geometric_decomposition, &
612 CALL field_geometric_field_set_and_lock(equations_materials%MATERIALS_FIELD,equations_set%GEOMETRY% &
613 & geometric_field,err,error,*999)
614 CALL field_number_of_variables_set_and_lock(equations_materials%MATERIALS_FIELD,1,err,error,*999)
615 CALL field_variable_types_set_and_lock(equations_materials%MATERIALS_FIELD,[field_u_variable_type], &
617 CALL field_dimension_set_and_lock(equations_materials%MATERIALS_FIELD,field_u_variable_type, &
618 & field_vector_dimension_type,err,error,*999)
619 CALL field_data_type_set_and_lock(equations_materials%MATERIALS_FIELD,field_u_variable_type, &
620 & field_dp_type,err,error,*999)
622 CALL field_number_of_components_set_and_lock(equations_materials%MATERIALS_FIELD,field_u_variable_type, &
625 CALL field_component_mesh_component_get(equations_set%GEOMETRY%GEOMETRIC_FIELD,field_u_variable_type, &
626 & 1,geometric_component_number,err,error,*999)
628 CALL field_component_mesh_component_set(equations_materials%MATERIALS_FIELD,field_u_variable_type, &
629 & component_idx,geometric_component_number,err,error,*999)
630 CALL field_component_interpolation_set(equations_materials%MATERIALS_FIELD,field_u_variable_type, &
631 & component_idx,field_constant_interpolation,err,error,*999)
634 CALL field_scaling_type_get(equations_set%GEOMETRY%GEOMETRIC_FIELD,geometric_scaling_type,err,error,*999)
635 CALL field_scaling_type_set(equations_materials%MATERIALS_FIELD,geometric_scaling_type,err,error,*999)
638 CALL field_type_check(equations_set_setup%FIELD,field_material_type,err,error,*999)
639 CALL field_dependent_type_check(equations_set_setup%FIELD,field_independent_type,err,error,*999)
640 CALL field_number_of_variables_check(equations_set_setup%FIELD,1,err,error,*999)
641 CALL field_variable_types_check(equations_set_setup%FIELD,[field_u_variable_type],err,error,*999)
642 CALL field_dimension_check(equations_set_setup%FIELD,field_u_variable_type,field_vector_dimension_type, &
644 CALL field_data_type_check(equations_set_setup%FIELD,field_u_variable_type,field_dp_type,err,error,*999)
645 CALL field_number_of_components_check(equations_set_setup%FIELD,field_u_variable_type,3,err,error,*999)
648 CALL flagerror(
"Equations set materials is not associated.",err,error,*999)
652 equations_materials=>equations_set%MATERIALS
653 IF(
ASSOCIATED(equations_materials))
THEN 654 IF(equations_materials%MATERIALS_FIELD_AUTO_CREATED)
THEN 656 CALL field_create_finish(equations_materials%MATERIALS_FIELD,err,error,*999)
659 CALL field_component_values_initialise(equations_materials%MATERIALS_FIELD,field_u_variable_type, &
660 & field_values_set_type,1,0.005_dp,err,error,*999)
662 CALL field_component_values_initialise(equations_materials%MATERIALS_FIELD,field_u_variable_type, &
663 & field_values_set_type,2,0.5_dp,err,error,*999)
665 CALL field_component_values_initialise(equations_materials%MATERIALS_FIELD,field_u_variable_type, &
666 & field_values_set_type,3,1.0_dp,err,error,*999)
669 CALL flagerror(
"Equations set materials is not associated.",err,error,*999)
672 local_error=
"The action type of "//
trim(
number_to_vstring(equations_set_setup%ACTION_TYPE,
"*",err,error))// &
674 &
" is invalid for a static Poiseuille equation." 675 CALL flagerror(local_error,err,error,*999)
678 SELECT CASE(equations_set%SPECIFICATION(3))
680 SELECT CASE(equations_set_setup%ACTION_TYPE)
688 local_error=
"The action type of "//
trim(
number_to_vstring(equations_set_setup%ACTION_TYPE,
"*",err,error))// &
690 &
" is invalid for a linear Poiseuille subtype" 691 CALL flagerror(local_error,err,error,*999)
694 local_error=
"The equation set subtype of "//
trim(
number_to_vstring(equations_set%SPECIFICATION(3),
"*",err,error))// &
695 &
" is invalid for a linear Poiseuille equation." 696 CALL flagerror(local_error,err,error,*999)
699 SELECT CASE(equations_set_setup%ACTION_TYPE)
707 local_error=
"The action type of "//
trim(
number_to_vstring(equations_set_setup%ACTION_TYPE,
"*",err,error))// &
709 &
" is invalid for a static Poiseuille equation." 710 CALL flagerror(local_error,err,error,*999)
713 SELECT CASE(equations_set_setup%ACTION_TYPE)
715 IF(equations_set%DEPENDENT%DEPENDENT_FINISHED)
THEN 721 CALL flagerror(
"Equations set dependent field has not been finished.",err,error,*999)
724 SELECT CASE(equations_set%SOLUTION_METHOD)
738 SELECT CASE(equations%SPARSITY_TYPE)
748 local_error=
"The equations matrices sparsity type of "// &
750 CALL flagerror(local_error,err,error,*999)
754 CALL flagerror(
"Not implemented.",err,error,*999)
756 CALL flagerror(
"Not implemented.",err,error,*999)
758 CALL flagerror(
"Not implemented.",err,error,*999)
760 CALL flagerror(
"Not implemented.",err,error,*999)
762 CALL flagerror(
"Not implemented.",err,error,*999)
764 local_error=
"The solution method of "//
trim(
number_to_vstring(equations_set%SOLUTION_METHOD,
"*",err,error))// &
766 CALL flagerror(local_error,err,error,*999)
769 local_error=
"The action type of "//
trim(
number_to_vstring(equations_set_setup%ACTION_TYPE,
"*",err,error))// &
771 &
" is invalid for a static Poiseuille equation." 772 CALL flagerror(local_error,err,error,*999)
775 local_error=
"The setup type of "//
trim(
number_to_vstring(equations_set_setup%SETUP_TYPE,
"*",err,error))// &
776 &
" is invalid for a static Poiseuille equation." 777 CALL flagerror(local_error,err,error,*999)
780 local_error=
"The equations set subtype of "//
trim(
number_to_vstring(equations_set%SPECIFICATION(3),
"*",err,error))// &
781 &
" is not a static Poiseuille equation subtype." 782 CALL flagerror(local_error,err,error,*999)
785 CALL flagerror(
"Equations set is not associated.",err,error,*999)
788 exits(
"Poiseuille_EquationsSetStaticSetup")
790 999 errorsexits(
"Poiseuille_EquationsSetStaticSetup",err,error)
805 INTEGER(INTG),
INTENT(OUT) :: ERR
810 enters(
"POISEUILLE_EQUATION_PROBLEM_SETUP",err,error,*999)
812 IF(
ASSOCIATED(problem))
THEN 813 IF(.NOT.
ALLOCATED(problem%specification))
THEN 814 CALL flagerror(
"Problem specification is not allocated.",err,error,*999)
815 ELSE IF(
SIZE(problem%specification,1)<3)
THEN 816 CALL flagerror(
"Problem specification must have three entries for a Poiseuille problem.",err,error,*999)
818 SELECT CASE(problem%SPECIFICATION(3))
825 &
" is not valid for a Poiseuille equation type of a fluid mechanics problem class." 826 CALL flagerror(local_error,err,error,*999)
829 CALL flagerror(
"Problem is not associated.",err,error,*999)
832 exits(
"POISEUILLE_EQUATION_PROBLEM_SETUP")
834 999 errorsexits(
"POISEUILLE_EQUATION_PROBLEM_SETUP",err,error)
847 INTEGER(INTG),
INTENT(IN) :: ELEMENT_NUMBER
848 INTEGER(INTG),
INTENT(OUT) :: ERR
851 INTEGER(INTG) FIELD_VAR_TYPE,ng
852 TYPE(
basis_type),
POINTER :: DEPENDENT_BASIS,GEOMETRIC_BASIS
860 TYPE(
field_type),
POINTER :: DEPENDENT_FIELD,GEOMETRIC_FIELD,MATERIALS_FIELD
865 enters(
"Poiseuille_FiniteElementCalculate",err,error,*999)
867 IF(
ASSOCIATED(equations_set))
THEN 868 IF(.NOT.
ALLOCATED(equations_set%SPECIFICATION))
THEN 869 CALL flagerror(
"Equations set specification is not allocated.",err,error,*999)
870 ELSE IF(
SIZE(equations_set%SPECIFICATION,1)/=3)
THEN 871 CALL flagerror(
"Equations set specification must have three entries for a Poiseuille type equations set.", &
874 equations=>equations_set%EQUATIONS
875 IF(
ASSOCIATED(equations))
THEN 876 SELECT CASE(equations_set%SPECIFICATION(3))
879 dependent_field=>equations%INTERPOLATION%DEPENDENT_FIELD
880 geometric_field=>equations%INTERPOLATION%GEOMETRIC_FIELD
881 materials_field=>equations%INTERPOLATION%MATERIALS_FIELD
882 equations_matrices=>equations%EQUATIONS_MATRICES
883 linear_matrices=>equations_matrices%LINEAR_MATRICES
884 equations_matrix=>linear_matrices%MATRICES(1)%PTR
885 rhs_vector=>equations_matrices%RHS_VECTOR
886 equations_mapping=>equations%EQUATIONS_MAPPING
887 linear_mapping=>equations_mapping%LINEAR_MAPPING
888 field_variable=>linear_mapping%EQUATIONS_MATRIX_TO_VAR_MAPS(1)%VARIABLE
889 field_var_type=field_variable%VARIABLE_TYPE
890 dependent_basis=>dependent_field%DECOMPOSITION%DOMAIN(dependent_field%DECOMPOSITION%MESH_COMPONENT_NUMBER)%PTR% &
891 & topology%ELEMENTS%ELEMENTS(element_number)%BASIS
892 geometric_basis=>geometric_field%DECOMPOSITION%DOMAIN(geometric_field%DECOMPOSITION%MESH_COMPONENT_NUMBER)%PTR% &
893 & topology%ELEMENTS%ELEMENTS(element_number)%BASIS
895 CALL field_interpolation_parameters_element_get(field_values_set_type,element_number,equations%INTERPOLATION% &
896 & geometric_interp_parameters(field_u_variable_type)%PTR,err,error,*999)
897 CALL field_interpolation_parameters_element_get(field_values_set_type,element_number,equations%INTERPOLATION% &
898 & materials_interp_parameters(field_u_variable_type)%PTR,err,error,*999)
900 DO ng=1,quadrature_scheme%NUMBER_OF_GAUSS
902 & geometric_interp_point(field_u_variable_type)%PTR,err,error,*999)
904 & materials_interp_point(field_u_variable_type)%PTR,err,error,*999)
905 CALL field_interpolated_point_metrics_calculate(geometric_basis%NUMBER_OF_XI,equations%INTERPOLATION% &
906 & geometric_interp_point_metrics(field_u_variable_type)%PTR,err,error,*999)
913 local_error=
"Equations set subtype "//
trim(
number_to_vstring(equations_set%SPECIFICATION(3),
"*",err,error))// &
914 &
" is not valid for a Poiseuille equation type of a fluid mechanics equations set class." 915 CALL flagerror(local_error,err,error,*999)
918 CALL flagerror(
"Equations set equations is not associated.",err,error,*999)
921 CALL flagerror(
"Equations set is not associated.",err,error,*999)
924 exits(
"Poiseuille_FiniteElementCalculate")
926 999 errorsexits(
"Poiseuille_FiniteElementCalculate",err,error)
940 INTEGER(INTG),
INTENT(IN) :: problemSpecification(:)
941 INTEGER(INTG),
INTENT(OUT) :: err
945 INTEGER(INTG) :: problemSubtype
947 enters(
"Poiseuille_ProblemSpecificationSet",err,error,*999)
949 IF(
ASSOCIATED(problem))
THEN 950 IF(
SIZE(problemspecification,1)==3)
THEN 951 problemsubtype=problemspecification(3)
952 SELECT CASE(problemsubtype)
957 localerror=
"The third problem specification of "//
trim(
numbertovstring(problemsubtype,
"*",err,error))// &
958 &
" is not valid for a Poiseuille fluid mechanics problem." 959 CALL flagerror(localerror,err,error,*999)
961 IF(
ALLOCATED(problem%specification))
THEN 962 CALL flagerror(
"Problem specification is already allocated.",err,error,*999)
964 ALLOCATE(problem%specification(3),stat=err)
965 IF(err/=0)
CALL flagerror(
"Could not allocate problem specification.",err,error,*999)
969 CALL flagerror(
"Poiseuille problem specification must have three entries.",err,error,*999)
972 CALL flagerror(
"Problem is not associated.",err,error,*999)
975 exits(
"Poiseuille_ProblemSpecificationSet")
977 999
errors(
"Poiseuille_ProblemSpecificationSet",err,error)
978 exits(
"Poiseuille_ProblemSpecificationSet")
993 INTEGER(INTG),
INTENT(OUT) :: ERR
1002 enters(
"POISEUILLE_EQUATION_PROBLEM_STATIC_SETUP",err,error,*999)
1004 NULLIFY(control_loop)
1006 NULLIFY(solver_equations)
1008 IF(
ASSOCIATED(problem))
THEN 1009 IF(.NOT.
ALLOCATED(problem%specification))
THEN 1010 CALL flagerror(
"Problem specification is not allocated.",err,error,*999)
1011 ELSE IF(
SIZE(problem%specification,1)<3)
THEN 1012 CALL flagerror(
"Problem specification must have three entries for a Poiseuille problem.",err,error,*999)
1015 SELECT CASE(problem_setup%SETUP_TYPE)
1017 SELECT CASE(problem_setup%ACTION_TYPE)
1023 local_error=
"The action type of "//
trim(
number_to_vstring(problem_setup%ACTION_TYPE,
"*",err,error))// &
1025 &
" is invalid for a static Poiseuille equation." 1026 CALL flagerror(local_error,err,error,*999)
1029 SELECT CASE(problem_setup%ACTION_TYPE)
1035 control_loop_root=>problem%CONTROL_LOOP
1039 local_error=
"The action type of "//
trim(
number_to_vstring(problem_setup%ACTION_TYPE,
"*",err,error))// &
1041 &
" is invalid for a static Poiseuille equation." 1042 CALL flagerror(local_error,err,error,*999)
1046 control_loop_root=>problem%CONTROL_LOOP
1048 SELECT CASE(problem_setup%ACTION_TYPE)
1065 local_error=
"The action type of "//
trim(
number_to_vstring(problem_setup%ACTION_TYPE,
"*",err,error))// &
1067 &
" is invalid for a static Poiseuille equation." 1068 CALL flagerror(local_error,err,error,*999)
1071 SELECT CASE(problem_setup%ACTION_TYPE)
1074 control_loop_root=>problem%CONTROL_LOOP
1086 control_loop_root=>problem%CONTROL_LOOP
1095 local_error=
"The action type of "//
trim(
number_to_vstring(problem_setup%ACTION_TYPE,
"*",err,error))// &
1097 &
" is invalid for a static Poiseuille equation." 1098 CALL flagerror(local_error,err,error,*999)
1101 local_error=
"The setup type of "//
trim(
number_to_vstring(problem_setup%SETUP_TYPE,
"*",err,error))// &
1102 &
" is invalid for a static Poiseuille equation." 1103 CALL flagerror(local_error,err,error,*999)
1106 local_error=
"The problem subtype of "//
trim(
number_to_vstring(problem%SPECIFICATION(3),
"*",err,error))// &
1107 &
" does not equal a static Poiseuille equation subtype." 1108 CALL flagerror(local_error,err,error,*999)
1111 CALL flagerror(
"Problem is not associated.",err,error,*999)
1114 exits(
"POISEUILLE_EQUATION_PROBLEM_STATIC_SETUP")
1116 999 errorsexits(
"POISEUILLE_EQUATION_PROBLEM_STATIC_SETUP",err,error)
1130 INTEGER(INTG),
INTENT(OUT) :: ERR
1136 enters(
"POISEUILLE_POST_SOLVE",err,error,*999)
1138 IF(
ASSOCIATED(control_loop))
THEN 1139 IF(
ASSOCIATED(solver))
THEN 1140 IF(
ASSOCIATED(control_loop%PROBLEM))
THEN 1141 IF(.NOT.
ALLOCATED(control_loop%problem%specification))
THEN 1142 CALL flagerror(
"Problem specification is not allocated.",err,error,*999)
1143 ELSE IF(
SIZE(control_loop%problem%specification,1)<3)
THEN 1144 CALL flagerror(
"Problem specification must have three entries for a Poiseuille problem.",err,error,*999)
1146 SELECT CASE(control_loop%PROBLEM%SPECIFICATION(3))
1152 local_error=
"Problem subtype "//
trim(
number_to_vstring(control_loop%PROBLEM%SPECIFICATION(3),
"*",err,error))// &
1153 &
" is not valid for a Poiseuille type of a fluid mechanics problem class." 1154 CALL flagerror(local_error,err,error,*999)
1157 CALL flagerror(
"Problem is not associated.",err,error,*999)
1160 CALL flagerror(
"Solver is not associated.",err,error,*999)
1163 CALL flagerror(
"Control loop is not associated.",err,error,*999)
1166 exits(
"POISEUILLE_POST_SOLVE")
1168 999 errorsexits(
"POISEUILLE_POST_SOLVE",err,error)
1183 INTEGER(INTG),
INTENT(OUT) :: ERR
1189 enters(
"POISEUILLE_PRE_SOLVE",err,error,*999)
1192 IF(
ASSOCIATED(control_loop))
THEN 1193 IF(
ASSOCIATED(solver))
THEN 1194 IF(
ASSOCIATED(control_loop%PROBLEM))
THEN 1195 IF(.NOT.
ALLOCATED(control_loop%problem%specification))
THEN 1196 CALL flagerror(
"Problem specification is not allocated.",err,error,*999)
1197 ELSE IF(
SIZE(control_loop%problem%specification,1)<3)
THEN 1198 CALL flagerror(
"Problem specification must have three entries for a Poiseuille problem.",err,error,*999)
1200 SELECT CASE(control_loop%PROBLEM%SPECIFICATION(3))
1206 local_error=
"Problem subtype "//
trim(
number_to_vstring(control_loop%PROBLEM%SPECIFICATION(3),
"*",err,error))// &
1207 &
" is not valid for a Poiseuille type of a fluid mechanics problem class." 1208 CALL flagerror(local_error,err,error,*999)
1211 CALL flagerror(
"Problem is not associated.",err,error,*999)
1214 CALL flagerror(
"Solver is not associated.",err,error,*999)
1217 CALL flagerror(
"Control loop is not associated.",err,error,*999)
1220 exits(
"POISEUILLE_PRE_SOLVE")
1222 999 errorsexits(
"POISEUILLE_PRE_SOLVE",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.
subroutine, public poiseuille_equationssetspecificationset(equationsSet, specification, err, error,)
Sets the equation specification for a Poiseuille fluid mechanics equations set.
subroutine, public poiseuille_problemspecificationset(problem, problemSpecification, err, error,)
Sets the problem specification for a Poiseuille problem.
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 equations_set_setup_generate_action
Generate setup action.
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.
integer(intg), parameter no_global_deriv
No global derivative i.e., u.
integer(intg), parameter problem_poiseuille_equation_type
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 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.
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.
integer(intg), parameter no_part_deriv
No partial derivative i.e., u.
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.
integer(intg), parameter equations_static
The equations are static and have no time dependence.
Contains information on an equations set.
This module handles all equations routines.
integer(intg), parameter equations_set_setup_source_type
Source setup.
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.
subroutine, public poiseuille_finiteelementcalculate(EQUATIONS_SET, ELEMENT_NUMBER, ERR, ERROR,)
Calculates the element stiffness matrices and RHS for a Poiseuille equation finite element equations ...
Contains information on the solvers to be used in a control loop.
integer(intg), parameter problem_dynamic_poiseuille_subtype
integer(intg), parameter first_part_deriv
First partial derivative i.e., du/ds.
This module contains routines for timing the program.
integer(intg), parameter solver_equations_static
Solver equations are static.
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.
integer(intg), parameter equations_set_static_poiseuille_subtype
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 poiseuille_post_solve(CONTROL_LOOP, SOLVER, ERR, ERROR,)
Sets up the Poiseuille problem post solve.
integer(intg), parameter equations_set_fluid_mechanics_class
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.
integer(intg), parameter global_deriv_s2
First global derivative in the s2 direction i.e., du/ds2.
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, 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.
subroutine, public poiseuille_equationssetsolutionmethodset(EQUATIONS_SET, SOLUTION_METHOD, ERR, ERROR,)
Sets/changes the solution method for a Poiseuille equation type of an fluid mechanics equations set c...
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 equationsmapping_linearmatricesnumberset(EQUATIONS_MAPPING, NUMBER_OF_LINEAR_EQUATIONS_MATRICES, ERR, ERROR,)
Sets/changes the number of linear equations matrices.
integer(intg), parameter problem_setup_initial_type
Initial setup for a problem.
subroutine, public equationsmapping_linearmatricesvariabletypesset(EQUATIONS_MAPPING, LINEAR_MATRIX_VARIABLE_TYPES, ERR, ERROR,)
Sets the mapping between the dependent field variable types and the linear equations matrices...
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.
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.
This module contains all the low-level base routines e.g., all debug, control, and low-level communic...
Contains information of the linear matrices for equations matrices.
subroutine poiseuille_equationssetstaticsetup(EQUATIONS_SET, EQUATIONS_SET_SETUP, ERR, ERROR,)
Sets up the standard Poiseuille equation for linear sources.
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 equationsmatrices_linearstructuretypeset(EQUATIONS_MATRICES, STRUCTURE_TYPE, ERR, ERROR,)
Sets the structure (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 equations_set_equations_get(EQUATIONS_SET, EQUATIONS, ERR, ERROR,)
Gets the equations for an equations set.
subroutine, public poiseuille_pre_solve(CONTROL_LOOP, SOLVER, ERR, ERROR,)
Sets up the Poiseuille problem pre solve.
subroutine, public equations_create_finish(EQUATIONS, ERR, ERROR,)
Finish the creation of 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.
integer(intg), parameter, public matrix_compressed_row_storage_type
Matrix compressed row storage type.
subroutine, public poiseuille_boundaryconditionsanalyticcalculate(EQUATIONS_SET, BOUNDARY_CONDITIONS, ERR, ERROR,)
Calculates the analytic solution and sets the boundary conditions for an analytic problem...
integer(intg), parameter equations_set_gfv_solution_method
Grid-based Finite Volume solution method.
integer(intg), parameter equations_set_setup_geometry_type
Geometry setup.
integer(intg), parameter global_deriv_s1_s2
Global Cross derivative in the s1 and s2 direction i.e., d^2u/ds1ds2.
Contains information for a problem.
integer(intg), parameter equations_set_poiseuille_equation_type
integer(intg), parameter equations_linear
The equations are linear.
Contains the topology information for the nodes of a domain.
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 Poiseuille equations routines.
integer(intg), parameter global_deriv_s1
First global derivative in the s1 direction i.e., du/ds1.
This module handles all boundary conditions routines.
This module handles all solver routines.
subroutine, public poiseuille_equation_problem_setup(PROBLEM, PROBLEM_SETUP, ERR, ERROR,)
Sets up the Poiseuille problem.
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...
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.
Sets a boundary condition on the specified local DOF.
integer(intg), parameter equations_set_poiseuille_equation_two_dim_1
u=tbd
Contains information for a field variable defined on a field.
integer(intg), parameter equations_set_fd_solution_method
Finite Difference solution method.
integer(intg), parameter, public equations_matrices_sparse_matrices
Use sparse equations matrices.
integer(intg), parameter equations_set_dynamic_poiseuille_subtype
Contains information on the setup information for an equations set.
A pointer to the domain decomposition for this domain.
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 boundary_condition_fixed
The dof is fixed as a boundary condition.
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, 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 .
integer(intg), parameter equations_set_fv_solution_method
Finite Volume solution method.
integer(intg), parameter, public matrix_block_storage_type
Matrix block storage type.
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.
integer(intg), parameter equations_set_setup_analytic_type
Analytic setup.
Flags an error condition.
subroutine poiseuille_equation_problem_static_setup(PROBLEM, PROBLEM_SETUP, ERR, ERROR,)
Sets up the static Poiseuille equations problem.
integer(intg), parameter problem_static_poiseuille_subtype
integer(intg), parameter, public solver_linear_type
A linear solver.
integer(intg), parameter problem_fluid_mechanics_class
Contains information of the RHS vector for equations matrices.
subroutine, public poiseuille_equation_equations_set_setup(EQUATIONS_SET, EQUATIONS_SET_SETUP, ERR, ERROR,)
Sets up the Poiseuille equation type of a fluid mechanics equations set class.
Contains information for mapping field variables to the linear matrices in the equations set of the m...
This module contains all kind definitions.
Temporary IO routines for fluid mechanics.
integer(intg), parameter equations_set_setup_finish_action
Finish setup action.