109 INTEGER(INTG),
INTENT(IN) :: solutionMethod
110 INTEGER(INTG),
INTENT(OUT) :: err
115 enters(
"Characteristic_EquationsSetSolutionMethodSet",err,error,*999)
117 IF(
ASSOCIATED(equationsset))
THEN 118 IF(.NOT.
ALLOCATED(equationsset%specification))
THEN 119 CALL flagerror(
"Equations set specification is not allocated.",err,error,*999)
120 ELSE IF(
SIZE(equationsset%specification,1)/=3)
THEN 121 CALL flagerror(
"Equations set specification must have three entries for a characteristic type equations set.", &
124 SELECT CASE(equationsset%specification(3))
126 SELECT CASE(solutionmethod)
128 CALL flagerror(
"Not implemented.",err,error,*999)
132 CALL flagerror(
"Not implemented.",err,error,*999)
134 CALL flagerror(
"Not implemented.",err,error,*999)
136 CALL flagerror(
"Not implemented.",err,error,*999)
138 CALL flagerror(
"Not implemented.",err,error,*999)
140 CALL flagerror(
"Not implemented.",err,error,*999)
142 localerror=
"The specified solution method of "//
trim(
numbertovstring(solutionmethod,
"*",err,error))// &
144 CALL flagerror(localerror,err,error,*999)
147 localerror=
"The third equations set specification of "// &
149 &
" is not valid for a characteristic type of a fluid mechanics equations set." 150 CALL flagerror(localerror,err,error,*999)
153 CALL flagerror(
"Equations set is not associated.",err,error,*999)
156 exits(
"Characteristic_EquationsSetSolutionMethodSet")
158 999
errors(
"Characteristic_EquationsSetSolutionMethodSet",err,error)
159 exits(
"Characteristic_EquationsSetSolutionMethodSet")
173 INTEGER(INTG),
INTENT(IN) :: specification(:)
174 INTEGER(INTG),
INTENT(OUT) :: err
178 INTEGER(INTG) :: subtype
180 enters(
"Characteristic_EquationsSetSpecificationSet",err,error,*999)
182 IF(
ASSOCIATED(equationsset))
THEN 183 IF(
SIZE(specification,1)/=3)
THEN 184 CALL flagerror(
"Equations set specification must have three entries for a characteristic type equations set.", &
187 subtype=specification(3)
192 localerror=
"The third equations set specification of "//
trim(
numbertovstring(subtype,
"*",err,error))// &
193 &
" is not valid for a characteristic type of a fluid mechanics equations set." 194 CALL flagerror(localerror,err,error,*999)
197 IF(
ALLOCATED(equationsset%specification))
THEN 198 CALL flagerror(
"Equations set specification is already allocated.",err,error,*999)
200 ALLOCATE(equationsset%specification(3),stat=err)
201 IF(err/=0)
CALL flagerror(
"Could not allocate equations set specification.",err,error,*999)
205 CALL flagerror(
"Equations set is not associated.",err,error,*999)
208 exits(
"Characteristic_EquationsSetSpecificationSet")
210 999
errors(
"Characteristic_EquationsSetSpecificationSet",err,error)
211 exits(
"Characteristic_EquationsSetSpecificationSet")
226 INTEGER(INTG),
INTENT(OUT) :: err
235 TYPE(
field_type),
POINTER :: equationsSetField
236 INTEGER(INTG) :: componentIdx,geometricScalingType,geometricMeshComponent,geometricComponentNumber
237 INTEGER(INTG) :: dependentFieldNumberOfVariables,dependentFieldNumberOfComponents
238 INTEGER(INTG) :: independentFieldNumberOfVariables,independentFieldNumberOfComponents
239 INTEGER(INTG) :: materialsFieldNumberOfVariables,materialsFieldNumberOfComponents1,materialsFieldNumberOfComponents2
242 enters(
"Characteristic_EquationsSetSetup",err,error,*999)
245 NULLIFY(equationsmapping)
246 NULLIFY(equationsmatrices)
247 NULLIFY(equationsmaterials)
248 NULLIFY(geometricdecomposition)
250 IF(
ASSOCIATED(equationsset))
THEN 251 IF(.NOT.
ALLOCATED(equationsset%specification))
THEN 252 CALL flagerror(
"Equations set specification is not allocated.",err,error,*999)
253 ELSE IF(
SIZE(equationsset%specification,1)/=3)
THEN 254 CALL flagerror(
"Equations set specification must have three entries for a characteristic type equations set.", &
257 SELECT CASE(equationsset%specification(3))
259 SELECT CASE(equationssetsetup%SETUP_TYPE)
264 SELECT CASE(equationsset%specification(3))
266 SELECT CASE(equationssetsetup%ACTION_TYPE)
271 equationsequationssetfield=>equationsset%EQUATIONS_SET_FIELD
272 IF(equationsequationssetfield%EQUATIONS_SET_FIELD_AUTO_CREATED)
THEN 274 CALL field_create_start(equationssetsetup%FIELD_USER_NUMBER,equationsset%REGION, &
275 & equationsequationssetfield%EQUATIONS_SET_FIELD_FIELD,err,error,*999)
276 equationssetfield=>equationsequationssetfield%EQUATIONS_SET_FIELD_FIELD
277 CALL field_label_set(equationssetfield,
"Equations Set Field",err,error,*999)
278 CALL field_type_set_and_lock(equationssetfield,field_general_type,&
280 CALL field_number_of_variables_set(equationssetfield, &
282 CALL field_variable_types_set_and_lock(equationssetfield,&
283 & [field_u_variable_type],err,error,*999)
284 CALL field_variable_label_set(equationssetfield,field_u_variable_type, &
285 &
"W2Initialise",err,error,*999)
286 CALL field_data_type_set_and_lock(equationssetfield,field_u_variable_type, &
287 & field_dp_type,err,error,*999)
288 CALL field_number_of_components_set_and_lock(equationssetfield,&
289 & field_u_variable_type,1,err,error,*999)
292 IF(equationsset%EQUATIONS_SET_FIELD%EQUATIONS_SET_FIELD_AUTO_CREATED)
THEN 293 CALL field_create_finish(equationsset%EQUATIONS_SET_FIELD%EQUATIONS_SET_FIELD_FIELD,err,error,*999)
294 CALL field_component_values_initialise(equationsset%EQUATIONS_SET_FIELD%EQUATIONS_SET_FIELD_FIELD, &
295 & field_u_variable_type,field_values_set_type,1,1.0_dp,err,error,*999)
300 & setup_type,
"*",err,error))//
" is not implemented for a characteristic equations set." 301 CALL flagerror(localerror,err,error,*999)
304 localerror=
"The third equations set specification of "// &
306 &
" is invalid for a characteristic equations set." 307 CALL flagerror(localerror,err,error,*999)
313 SELECT CASE(equationsset%specification(3))
315 SELECT CASE(equationssetsetup%ACTION_TYPE)
317 equationsequationssetfield=>equationsset%EQUATIONS_SET_FIELD
318 equationssetfield=>equationsequationssetfield%EQUATIONS_SET_FIELD_FIELD
319 IF(equationsequationssetfield%EQUATIONS_SET_FIELD_AUTO_CREATED)
THEN 320 CALL field_mesh_decomposition_get(equationsset%GEOMETRY%GEOMETRIC_FIELD,geometricdecomposition,err,error,*999)
321 CALL field_mesh_decomposition_set_and_lock(equationssetfield,&
322 & geometricdecomposition,err,error,*999)
323 CALL field_geometric_field_set_and_lock(equationssetfield,&
324 & equationsset%GEOMETRY%GEOMETRIC_FIELD,err,error,*999)
325 CALL field_component_mesh_component_get(equationsset%GEOMETRY%GEOMETRIC_FIELD,field_u_variable_type, &
326 & 1,geometriccomponentnumber,err,error,*999)
327 CALL field_component_mesh_component_set_and_lock(equationssetfield, &
328 & field_u_variable_type,1,geometriccomponentnumber,err,error,*999)
329 CALL field_component_interpolation_set_and_lock(equationssetfield, &
330 & field_u_variable_type,1,field_constant_interpolation,err,error,*999)
332 CALL field_scaling_type_get(equationsset%GEOMETRY%GEOMETRIC_FIELD,geometricscalingtype,err,error,*999)
333 CALL field_scaling_type_set(equationsset%EQUATIONS_SET_FIELD%EQUATIONS_SET_FIELD_FIELD,geometricscalingtype, &
341 localerror=
"The action type of "//
trim(
numbertovstring(equationssetsetup%ACTION_TYPE,
"*",err,error))// &
342 &
" for a setup type of "//
trim(
numbertovstring(equationssetsetup%SETUP_TYPE,
"*",err,error))// &
343 &
" is invalid for a characteristic equation." 344 CALL flagerror(localerror,err,error,*999)
347 localerror=
"The third equations set specification of "// &
349 &
" is invalid for a characteristic equations set." 350 CALL flagerror(localerror,err,error,*999)
356 SELECT CASE(equationsset%specification(3))
358 SELECT CASE(equationssetsetup%ACTION_TYPE)
361 IF(equationsset%DEPENDENT%DEPENDENT_FIELD_AUTO_CREATED)
THEN 364 CALL field_create_start(equationssetsetup%FIELD_USER_NUMBER,equationsset%REGION, &
365 & equationsset%DEPENDENT%DEPENDENT_FIELD,err,error,*999)
367 CALL field_type_set_and_lock(equationsset%DEPENDENT%DEPENDENT_FIELD,field_general_type,err,error,*999)
369 CALL field_label_set(equationsset%DEPENDENT%DEPENDENT_FIELD,
"Dependent Field",err,error,*999)
371 CALL field_dependent_type_set_and_lock(equationsset%DEPENDENT%DEPENDENT_FIELD, &
372 & field_dependent_type,err,error,*999)
374 CALL field_mesh_decomposition_get(equationsset%GEOMETRY%GEOMETRIC_FIELD,geometricdecomposition, &
377 CALL field_mesh_decomposition_set_and_lock(equationsset%DEPENDENT%DEPENDENT_FIELD, &
378 & geometricdecomposition,err,error,*999)
380 CALL field_geometric_field_set_and_lock(equationsset%DEPENDENT%DEPENDENT_FIELD,equationsset%GEOMETRY% &
381 & geometric_field,err,error,*999)
383 dependentfieldnumberofvariables=5
384 CALL field_number_of_variables_set_and_lock(equationsset%DEPENDENT%DEPENDENT_FIELD, &
385 & dependentfieldnumberofvariables,err,error,*999)
386 CALL field_variable_types_set_and_lock(equationsset%DEPENDENT%DEPENDENT_FIELD,[field_u_variable_type, &
387 & field_deludeln_variable_type,field_v_variable_type,field_u1_variable_type,field_u2_variable_type], &
390 CALL field_dimension_set_and_lock(equationsset%DEPENDENT%DEPENDENT_FIELD,field_u_variable_type, &
391 & field_vector_dimension_type,err,error,*999)
392 CALL field_dimension_set_and_lock(equationsset%DEPENDENT%DEPENDENT_FIELD,field_deludeln_variable_type, &
393 & field_vector_dimension_type,err,error,*999)
394 CALL field_dimension_set_and_lock(equationsset%DEPENDENT%DEPENDENT_FIELD,field_v_variable_type, &
395 & field_vector_dimension_type,err,error,*999)
396 CALL field_dimension_set_and_lock(equationsset%DEPENDENT%DEPENDENT_FIELD,field_u1_variable_type, &
397 & field_vector_dimension_type,err,error,*999)
398 CALL field_dimension_set_and_lock(equationsset%DEPENDENT%DEPENDENT_FIELD,field_u2_variable_type, &
399 & field_vector_dimension_type,err,error,*999)
401 CALL field_data_type_set_and_lock(equationsset%DEPENDENT%DEPENDENT_FIELD,field_u_variable_type, &
402 & field_dp_type,err,error,*999)
403 CALL field_data_type_set_and_lock(equationsset%DEPENDENT%DEPENDENT_FIELD,field_deludeln_variable_type, &
404 & field_dp_type,err,error,*999)
405 CALL field_data_type_set_and_lock(equationsset%DEPENDENT%DEPENDENT_FIELD,field_v_variable_type, &
406 & field_dp_type,err,error,*999)
407 CALL field_data_type_set_and_lock(equationsset%DEPENDENT%DEPENDENT_FIELD,field_u1_variable_type, &
408 & field_dp_type,err,error,*999)
409 CALL field_data_type_set_and_lock(equationsset%DEPENDENT%DEPENDENT_FIELD,field_u2_variable_type, &
410 & field_dp_type,err,error,*999)
412 dependentfieldnumberofcomponents=2
413 CALL field_number_of_components_set_and_lock(equationsset%DEPENDENT%DEPENDENT_FIELD, &
414 & field_u_variable_type,dependentfieldnumberofcomponents,err,error,*999)
415 CALL field_number_of_components_set_and_lock(equationsset%DEPENDENT%DEPENDENT_FIELD, &
416 & field_deludeln_variable_type,dependentfieldnumberofcomponents,err,error,*999)
417 CALL field_number_of_components_set_and_lock(equationsset%DEPENDENT%DEPENDENT_FIELD, &
418 & field_v_variable_type,dependentfieldnumberofcomponents,err,error,*999)
419 CALL field_number_of_components_set_and_lock(equationsset%DEPENDENT%DEPENDENT_FIELD, &
420 & field_u1_variable_type,dependentfieldnumberofcomponents,err,error,*999)
421 CALL field_number_of_components_set_and_lock(equationsset%DEPENDENT%DEPENDENT_FIELD, &
422 & field_u2_variable_type,dependentfieldnumberofcomponents,err,error,*999)
423 CALL field_component_mesh_component_get(equationsset%GEOMETRY%GEOMETRIC_FIELD,field_u_variable_type, &
424 & 1,geometricmeshcomponent,err,error,*999)
426 DO componentidx=1,dependentfieldnumberofcomponents
427 CALL field_component_mesh_component_set(equationsset%DEPENDENT%DEPENDENT_FIELD, &
428 & field_u_variable_type,componentidx,geometricmeshcomponent,err,error,*999)
429 CALL field_component_mesh_component_set(equationsset%DEPENDENT%DEPENDENT_FIELD, &
430 & field_deludeln_variable_type,componentidx,geometricmeshcomponent,err,error,*999)
431 CALL field_component_mesh_component_set(equationsset%DEPENDENT%DEPENDENT_FIELD, &
432 & field_v_variable_type,componentidx,geometricmeshcomponent,err,error,*999)
433 CALL field_component_mesh_component_set(equationsset%DEPENDENT%DEPENDENT_FIELD, &
434 & field_u1_variable_type,componentidx,geometricmeshcomponent,err,error,*999)
435 CALL field_component_mesh_component_set(equationsset%DEPENDENT%DEPENDENT_FIELD, &
436 & field_u2_variable_type,componentidx,geometricmeshcomponent,err,error,*999)
438 SELECT CASE(equationsset%SOLUTION_METHOD)
442 DO componentidx=1,dependentfieldnumberofcomponents
443 CALL field_component_interpolation_set_and_lock(equationsset%DEPENDENT%DEPENDENT_FIELD, &
444 & field_u_variable_type,componentidx,field_node_based_interpolation,err,error,*999)
445 CALL field_component_interpolation_set_and_lock(equationsset%DEPENDENT%DEPENDENT_FIELD, &
446 & field_deludeln_variable_type,componentidx,field_node_based_interpolation,err,error,*999)
447 CALL field_component_interpolation_set_and_lock(equationsset%DEPENDENT%DEPENDENT_FIELD, &
448 & field_v_variable_type,componentidx,field_node_based_interpolation,err,error,*999)
449 CALL field_component_interpolation_set_and_lock(equationsset%DEPENDENT%DEPENDENT_FIELD, &
450 & field_u1_variable_type,componentidx,field_node_based_interpolation,err,error,*999)
451 CALL field_component_interpolation_set_and_lock(equationsset%DEPENDENT%DEPENDENT_FIELD, &
452 & field_u2_variable_type,componentidx,field_node_based_interpolation,err,error,*999)
454 CALL field_scaling_type_get(equationsset%GEOMETRY%GEOMETRIC_FIELD,geometricscalingtype, &
456 CALL field_scaling_type_set(equationsset%DEPENDENT%DEPENDENT_FIELD,geometricscalingtype, &
459 localerror=
"The solution method of " &
461 CALL flagerror(localerror,err,error,*999)
465 CALL field_type_check(equationssetsetup%FIELD,field_general_type,err,error,*999)
466 CALL field_dependent_type_check(equationssetsetup%FIELD,field_dependent_type,err,error,*999)
467 dependentfieldnumberofvariables=5
468 CALL field_number_of_variables_check(equationssetsetup%FIELD,dependentfieldnumberofvariables,err,error,*999)
469 CALL field_variable_types_check(equationssetsetup%FIELD,[field_u_variable_type, &
470 & field_deludeln_variable_type,field_v_variable_type,field_u1_variable_type,field_u2_variable_type] &
472 CALL field_dimension_check(equationssetsetup%FIELD,field_u_variable_type, &
473 & field_vector_dimension_type,err,error,*999)
474 CALL field_dimension_check(equationssetsetup%FIELD,field_deludeln_variable_type, &
475 & field_vector_dimension_type,err,error,*999)
476 CALL field_dimension_check(equationssetsetup%FIELD,field_v_variable_type, &
477 & field_vector_dimension_type,err,error,*999)
478 CALL field_dimension_check(equationssetsetup%FIELD,field_u1_variable_type, &
479 & field_vector_dimension_type,err,error,*999)
480 CALL field_dimension_check(equationssetsetup%FIELD,field_u2_variable_type, &
481 & field_vector_dimension_type,err,error,*999)
482 CALL field_data_type_check(equationssetsetup%FIELD,field_u_variable_type,field_dp_type,err,error,*999)
483 CALL field_data_type_check(equationssetsetup%FIELD,field_deludeln_variable_type,field_dp_type,err,error,*999)
484 CALL field_data_type_check(equationssetsetup%FIELD,field_v_variable_type,field_dp_type,err,error,*999)
485 CALL field_data_type_check(equationssetsetup%FIELD,field_u1_variable_type,field_dp_type,err,error,*999)
486 CALL field_data_type_check(equationssetsetup%FIELD,field_u2_variable_type,field_dp_type,err,error,*999)
488 dependentfieldnumberofcomponents=2
489 CALL field_number_of_components_check(equationssetsetup%FIELD,field_u_variable_type, &
490 & dependentfieldnumberofcomponents,err,error,*999)
491 CALL field_number_of_components_check(equationssetsetup%FIELD,field_deludeln_variable_type, &
492 & dependentfieldnumberofcomponents,err,error,*999)
493 CALL field_number_of_components_check(equationssetsetup%FIELD,field_v_variable_type, &
494 & dependentfieldnumberofcomponents,err,error,*999)
495 CALL field_number_of_components_check(equationssetsetup%FIELD,field_u1_variable_type, &
496 & dependentfieldnumberofcomponents,err,error,*999)
497 CALL field_number_of_components_check(equationssetsetup%FIELD,field_u2_variable_type, &
498 & dependentfieldnumberofcomponents,err,error,*999)
499 SELECT CASE(equationsset%SOLUTION_METHOD)
501 CALL field_component_interpolation_check(equationssetsetup%FIELD,field_u_variable_type,1, &
502 & field_node_based_interpolation,err,error,*999)
503 CALL field_component_interpolation_check(equationssetsetup%FIELD,field_deludeln_variable_type,1, &
504 & field_node_based_interpolation,err,error,*999)
505 CALL field_component_interpolation_check(equationssetsetup%FIELD,field_v_variable_type,1, &
506 & field_node_based_interpolation,err,error,*999)
507 CALL field_component_interpolation_check(equationssetsetup%FIELD,field_u1_variable_type,1, &
508 & field_node_based_interpolation,err,error,*999)
509 CALL field_component_interpolation_check(equationssetsetup%FIELD,field_u2_variable_type,1, &
510 & field_node_based_interpolation,err,error,*999)
513 &
"*",err,error))//
" is invalid." 514 CALL flagerror(localerror,err,error,*999)
519 IF(equationsset%DEPENDENT%DEPENDENT_FIELD_AUTO_CREATED)
THEN 520 CALL field_create_finish(equationsset%DEPENDENT%DEPENDENT_FIELD,err,error,*999)
523 localerror=
"The third equations set specification of "// &
525 &
" is invalid for a characteristic equations set." 526 CALL flagerror(localerror,err,error,*999)
529 localerror=
"The third equations set specification of "// &
531 &
" is invalid for a characteristic equations set." 532 CALL flagerror(localerror,err,error,*999)
538 SELECT CASE(equationsset%specification(3))
540 SELECT CASE(equationssetsetup%ACTION_TYPE)
543 independentfieldnumberofvariables=1
544 independentfieldnumberofcomponents=2
545 IF(equationsset%INDEPENDENT%INDEPENDENT_FIELD_AUTO_CREATED)
THEN 548 CALL field_create_start(equationssetsetup%FIELD_USER_NUMBER,equationsset%REGION, &
549 & equationsset%INDEPENDENT%INDEPENDENT_FIELD,err,error,*999)
551 CALL field_type_set_and_lock(equationsset%INDEPENDENT%INDEPENDENT_FIELD,field_general_type,err,error,*999)
553 CALL field_label_set(equationsset%INDEPENDENT%INDEPENDENT_FIELD,
"Independent Field",err,error, &
556 CALL field_dependent_type_set_and_lock(equationsset%INDEPENDENT%INDEPENDENT_FIELD, &
557 & field_independent_type,err,error,*999)
559 CALL field_mesh_decomposition_get(equationsset%GEOMETRY%GEOMETRIC_FIELD,geometricdecomposition, &
562 CALL field_mesh_decomposition_set_and_lock(equationsset%INDEPENDENT%INDEPENDENT_FIELD, &
563 & geometricdecomposition,err,error,*999)
565 CALL field_geometric_field_set_and_lock(equationsset%INDEPENDENT%INDEPENDENT_FIELD, &
566 & equationsset%GEOMETRY%GEOMETRIC_FIELD,err,error,*999)
567 CALL field_number_of_variables_set_and_lock(equationsset%INDEPENDENT%INDEPENDENT_FIELD, &
568 & independentfieldnumberofvariables,err,error,*999)
569 CALL field_variable_types_set_and_lock(equationsset%INDEPENDENT%INDEPENDENT_FIELD, &
570 & [field_u_variable_type],err,error,*999)
571 CALL field_dimension_set_and_lock(equationsset%INDEPENDENT%INDEPENDENT_FIELD,field_u_variable_type, &
572 & field_vector_dimension_type,err,error,*999)
574 CALL field_data_type_set_and_lock(equationsset%INDEPENDENT%INDEPENDENT_FIELD,field_u_variable_type, &
575 & field_dp_type,err,error,*999)
577 CALL field_number_of_components_set_and_lock(equationsset%INDEPENDENT%INDEPENDENT_FIELD, &
578 & field_u_variable_type,independentfieldnumberofcomponents,err,error,*999)
579 CALL field_component_mesh_component_get(equationsset%GEOMETRY%GEOMETRIC_FIELD,field_u_variable_type, &
580 & 1,geometricmeshcomponent,err,error,*999)
582 DO componentidx=1,independentfieldnumberofcomponents
583 CALL field_component_mesh_component_set(equationsset%INDEPENDENT%INDEPENDENT_FIELD, &
584 & field_u_variable_type,componentidx,geometricmeshcomponent,err,error,*999)
586 SELECT CASE(equationsset%SOLUTION_METHOD)
588 DO componentidx=1,independentfieldnumberofcomponents
589 CALL field_component_interpolation_set_and_lock(equationsset%INDEPENDENT%INDEPENDENT_FIELD, &
590 & field_u_variable_type,componentidx,field_node_based_interpolation,err,error,*999)
592 CALL field_scaling_type_get(equationsset%GEOMETRY%GEOMETRIC_FIELD,geometricscalingtype, &
595 localerror=
"The solution method of " &
597 CALL flagerror(localerror,err,error,*999)
601 CALL field_type_check(equationssetsetup%FIELD,field_general_type,err,error,*999)
602 CALL field_dependent_type_check(equationssetsetup%FIELD,field_independent_type,err,error,*999)
603 CALL field_number_of_variables_check(equationssetsetup%FIELD,independentfieldnumberofvariables,err,error,*999)
604 CALL field_variable_types_check(equationssetsetup%FIELD,[field_u_variable_type],err,error,*999)
605 CALL field_dimension_check(equationssetsetup%FIELD,field_u_variable_type,field_vector_dimension_type, &
607 CALL field_data_type_check(equationssetsetup%FIELD,field_u_variable_type,field_dp_type,err,error,*999)
608 CALL field_number_of_components_check(equationssetsetup%FIELD,field_u_variable_type, &
609 & independentfieldnumberofcomponents,err,error,*999)
613 IF(equationsset%INDEPENDENT%INDEPENDENT_FIELD_AUTO_CREATED)
THEN 614 CALL field_create_finish(equationsset%INDEPENDENT%INDEPENDENT_FIELD,err,error,*999)
617 localerror=
"The action type of "//
trim(
numbertovstring(equationssetsetup%ACTION_TYPE,
"*",err,error))// &
618 &
" for a setup type of "//
trim(
numbertovstring(equationssetsetup%SETUP_TYPE,
"*",err,error))// &
619 &
" is invalid for a standard characteristic equations set" 620 CALL flagerror(localerror,err,error,*999)
623 localerror=
"The third equations set specification of "// &
625 &
" is invalid for a standard characteristic equations set." 626 CALL flagerror(localerror,err,error,*999)
632 SELECT CASE(equationsset%specification(3))
634 materialsfieldnumberofvariables=2
635 materialsfieldnumberofcomponents1=8
636 materialsfieldnumberofcomponents2=3
637 SELECT CASE(equationssetsetup%ACTION_TYPE)
640 equationsmaterials=>equationsset%MATERIALS
641 IF(
ASSOCIATED(equationsmaterials))
THEN 642 IF(equationsmaterials%MATERIALS_FIELD_AUTO_CREATED)
THEN 645 CALL field_create_start(equationssetsetup%FIELD_USER_NUMBER,equationsset%REGION, &
646 & equationsset%MATERIALS%MATERIALS_FIELD,err,error,*999)
647 CALL field_type_set_and_lock(equationsmaterials%MATERIALS_FIELD,field_material_type,err,error,*999)
649 CALL field_label_set(equationsmaterials%MATERIALS_FIELD,
"Materials Field",err,error,*999)
650 CALL field_dependent_type_set_and_lock(equationsmaterials%MATERIALS_FIELD,field_independent_type, &
652 CALL field_mesh_decomposition_get(equationsset%GEOMETRY%GEOMETRIC_FIELD,geometricdecomposition, &
655 CALL field_mesh_decomposition_set_and_lock(equationsset%MATERIALS%MATERIALS_FIELD, &
656 & geometricdecomposition,err,error,*999)
658 CALL field_geometric_field_set_and_lock(equationsmaterials%MATERIALS_FIELD,equationsset%GEOMETRY% &
659 & geometric_field,err,error,*999)
660 CALL field_number_of_variables_set(equationsmaterials%MATERIALS_FIELD, &
661 & materialsfieldnumberofvariables,err,error,*999)
662 CALL field_variable_types_set_and_lock(equationsmaterials%MATERIALS_FIELD, &
663 & [field_u_variable_type,field_v_variable_type],err,error,*999)
664 CALL field_dimension_set_and_lock(equationsmaterials%MATERIALS_FIELD,field_u_variable_type, &
665 & field_vector_dimension_type,err,error,*999)
666 CALL field_dimension_set_and_lock(equationsmaterials%MATERIALS_FIELD,field_v_variable_type, &
667 & field_vector_dimension_type,err,error,*999)
668 CALL field_data_type_set_and_lock(equationsmaterials%MATERIALS_FIELD,field_u_variable_type, &
669 & field_dp_type,err,error,*999)
670 CALL field_data_type_set_and_lock(equationsmaterials%MATERIALS_FIELD,field_v_variable_type, &
671 & field_dp_type,err,error,*999)
672 CALL field_number_of_components_set_and_lock(equationsmaterials%MATERIALS_FIELD,field_u_variable_type, &
673 & materialsfieldnumberofcomponents1,err,error,*999)
674 CALL field_number_of_components_set_and_lock(equationsmaterials%MATERIALS_FIELD,field_v_variable_type, &
675 & materialsfieldnumberofcomponents2,err,error,*999)
676 CALL field_component_mesh_component_get(equationsset%GEOMETRY%GEOMETRIC_FIELD, &
677 & field_u_variable_type,1,geometriccomponentnumber,err,error,*999)
678 CALL field_component_mesh_component_set(equationsmaterials%MATERIALS_FIELD,field_u_variable_type, &
679 & 1,geometriccomponentnumber,err,error,*999)
680 CALL field_component_mesh_component_set(equationsmaterials%MATERIALS_FIELD,field_v_variable_type, &
681 & 1,geometriccomponentnumber,err,error,*999)
682 DO componentidx=1,materialsfieldnumberofcomponents1
683 CALL field_component_interpolation_set(equationsmaterials%MATERIALS_FIELD,field_u_variable_type, &
684 & componentidx,field_constant_interpolation,err,error,*999)
686 DO componentidx=1,materialsfieldnumberofcomponents2
687 CALL field_component_interpolation_set(equationsmaterials%MATERIALS_FIELD,field_v_variable_type, &
688 & componentidx,field_node_based_interpolation,err,error,*999)
691 CALL field_scaling_type_get(equationsset%GEOMETRY%GEOMETRIC_FIELD,geometricscalingtype,err,error,*999)
692 CALL field_scaling_type_set(equationsmaterials%MATERIALS_FIELD,geometricscalingtype,err,error,*999)
695 CALL field_type_check(equationssetsetup%FIELD,field_material_type,err,error,*999)
696 CALL field_dependent_type_check(equationssetsetup%FIELD,field_independent_type,err,error,*999)
697 CALL field_number_of_variables_check(equationssetsetup%FIELD,materialsfieldnumberofvariables,err,error,*999)
698 CALL field_variable_types_check(equationssetsetup%FIELD,[field_u_variable_type,field_v_variable_type], &
701 CALL field_dimension_check(equationssetsetup%FIELD,field_u_variable_type, &
702 & field_vector_dimension_type,err,error,*999)
703 CALL field_dimension_check(equationssetsetup%FIELD,field_v_variable_type, &
704 & field_vector_dimension_type,err,error,*999)
705 CALL field_data_type_check(equationssetsetup%FIELD,field_u_variable_type,field_dp_type,err,error,*999)
706 CALL field_data_type_check(equationssetsetup%FIELD,field_v_variable_type,field_dp_type,err,error,*999)
707 CALL field_number_of_components_check(equationssetsetup%FIELD,field_u_variable_type, &
708 & materialsfieldnumberofcomponents1,err,error,*999)
709 CALL field_number_of_components_check(equationssetsetup%FIELD,field_v_variable_type, &
710 & materialsfieldnumberofcomponents2,err,error,*999)
713 CALL flagerror(
"Equations set materials is not associated.",err,error,*999)
717 equationsmaterials=>equationsset%MATERIALS
718 IF(
ASSOCIATED(equationsmaterials))
THEN 719 IF(equationsmaterials%MATERIALS_FIELD_AUTO_CREATED)
THEN 721 CALL field_create_finish(equationsmaterials%MATERIALS_FIELD,err,error,*999)
725 CALL flagerror(
"Equations set materials is not associated.",err,error,*999)
728 localerror=
"The action type of "//
trim(
numbertovstring(equationssetsetup%ACTION_TYPE,
"*", &
729 & err,error))//
" for a setup type of "//
trim(
numbertovstring(equationssetsetup%SETUP_TYPE,
"*", &
730 & err,error))//
" is invalid for characteristic equation." 731 CALL flagerror(localerror,err,error,*999)
734 localerror=
"The third equations set specification of "// &
736 &
" is invalid for a characteristic equation." 737 CALL flagerror(localerror,err,error,*999)
743 SELECT CASE(equationsset%specification(3))
745 SELECT CASE(equationssetsetup%ACTION_TYPE)
747 equationsmaterials=>equationsset%MATERIALS
748 IF(
ASSOCIATED(equationsmaterials))
THEN 749 IF(equationsmaterials%MATERIALS_FINISHED)
THEN 754 CALL flagerror(
"Equations set materials has not been finished.",err,error,*999)
757 CALL flagerror(
"Equations materials is not associated.",err,error,*999)
760 SELECT CASE(equationsset%SOLUTION_METHOD)
777 SELECT CASE(equations%SPARSITY_TYPE)
793 localerror=
"The equations matrices sparsity type of "// &
795 CALL flagerror(localerror,err,error,*999)
799 CALL flagerror(
"Not implemented.",err,error,*999)
801 CALL flagerror(
"Not implemented.",err,error,*999)
803 CALL flagerror(
"Not implemented.",err,error,*999)
805 CALL flagerror(
"Not implemented.",err,error,*999)
807 CALL flagerror(
"Not implemented.",err,error,*999)
810 &
"*",err,error))//
" is invalid." 811 CALL flagerror(localerror,err,error,*999)
814 localerror=
"The action type of "//
trim(
numbertovstring(equationssetsetup%ACTION_TYPE,
"*",err,error))// &
815 &
" for a setup type of "//
trim(
numbertovstring(equationssetsetup%SETUP_TYPE,
"*",err,error))// &
816 &
" is invalid for a characteristics equation." 817 CALL flagerror(localerror,err,error,*999)
820 localerror=
"The third equations set specification of "// &
822 &
" is invalid for a characteristics equation." 823 CALL flagerror(localerror,err,error,*999)
826 localerror=
"The setup type of "//
trim(
numbertovstring(equationssetsetup%SETUP_TYPE,
"*",err,error))// &
827 &
" is invalid for a characteristics equation set." 828 CALL flagerror(localerror,err,error,*999)
831 localerror=
"The third equations set specification of "// &
833 &
" does not equal a characteristics equation set." 834 CALL flagerror(localerror,err,error,*999)
837 CALL flagerror(
"Equations set is not associated.",err,error,*999)
840 exits(
"Characteristic_EquationsSetSetup")
842 999 errorsexits(
"Characteristic_EquationsSetSetup",err,error)
856 INTEGER(INTG),
INTENT(IN) :: nodeNumber
857 INTEGER(INTG),
INTENT(OUT) :: err
870 TYPE(
field_type),
POINTER :: materialsField,dependentField,independentField
873 REAL(DP),
POINTER :: dependentParameters(:),independentParameters(:),materialsParameters(:)
874 REAL(DP) :: Q_BIF(4),A_BIF(4),A0_PARAM(4),E_PARAM(4),H0_PARAM(4),Beta(4),W(2,4),normalWave(2,4),SUM,rho
875 INTEGER(INTG) :: derivativeIdx,versionIdx,versionIdx2,componentIdx,rowIdx,columnIdx,componentIdx2,numberOfVersions
876 LOGICAL :: updateStiffnessMatrix,updateNonlinearResidual,boundaryNode
878 enters(
"Characteristic_NodalResidualEvaluate",err,error,*999)
881 NULLIFY(equationsmapping)
882 NULLIFY(equationsmapping)
883 NULLIFY(equationsmatrices)
884 NULLIFY(linearmapping)
885 NULLIFY(linearmatrices)
886 NULLIFY(nonlinearmapping)
887 NULLIFY(nonlinearmatrices)
888 NULLIFY(stiffnessmatrix)
889 NULLIFY(dependentfield)
890 NULLIFY(independentfield)
891 NULLIFY(materialsfield)
894 NULLIFY(dependentparameters)
895 NULLIFY(independentparameters)
896 NULLIFY(materialsparameters)
897 NULLIFY(fieldvariable)
899 updatestiffnessmatrix=.false.
900 updatenonlinearresidual=.false.
902 IF(
ASSOCIATED(equationsset))
THEN 903 equations=>equationsset%EQUATIONS
904 IF(
ASSOCIATED(equations))
THEN 905 dependentfield=>equations%EQUATIONS_SET%DEPENDENT%DEPENDENT_FIELD
906 IF(
ASSOCIATED(dependentfield))
THEN 907 domain=>dependentfield%DECOMPOSITION%DOMAIN(dependentfield%DECOMPOSITION%MESH_COMPONENT_NUMBER)%PTR
908 IF(
ASSOCIATED(domain))
THEN 909 domainnodes=>domain%TOPOLOGY%NODES
911 CALL flagerror(
"Domain is not associated.",err,error,*999)
914 CALL flagerror(
"Dependent Field is not associated.",err,error,*999)
917 CALL flagerror(
"Equations set equations is not associated.",err,error,*999)
920 CALL flagerror(
"Equations set is not associated.",err,error,*999)
923 IF(.NOT.
ALLOCATED(equationsset%specification))
THEN 924 CALL flagerror(
"Equations set specification is not allocated.",err,error,*999)
925 ELSE IF(
SIZE(equationsset%specification,1)/=3)
THEN 926 CALL flagerror(
"Equations set specification must have three entries for a characteristic type equations set.", &
929 SELECT CASE(equationsset%specification(3))
932 independentfield=>equations%INTERPOLATION%INDEPENDENT_FIELD
933 materialsfield=>equations%INTERPOLATION%MATERIALS_FIELD
934 equationsmatrices=>equations%EQUATIONS_MATRICES
935 equationsmapping=>equations%EQUATIONS_MAPPING
936 linearmatrices=>equationsmatrices%LINEAR_MATRICES
937 nonlinearmatrices=>equationsmatrices%NONLINEAR_MATRICES
938 stiffnessmatrix=>linearmatrices%MATRICES(1)%PTR
939 linearmapping=>equationsmapping%LINEAR_MAPPING
940 nonlinearmapping=>equationsmapping%NONLINEAR_MAPPING
941 stiffnessmatrix%NodalMatrix%matrix=0.0_dp
942 nonlinearmatrices%NodalResidual%vector=0.0_dp
943 IF(
ASSOCIATED(stiffnessmatrix)) updatestiffnessmatrix=stiffnessmatrix%UPDATE_MATRIX
944 IF(
ASSOCIATED(nonlinearmatrices)) updatenonlinearresidual=nonlinearmatrices%UPDATE_RESIDUAL
948 numberofversions=domainnodes%NODES(nodenumber)%DERIVATIVES(derivativeidx)%numberOfVersions
949 boundarynode=dependentfield%DECOMPOSITION%DOMAIN(dependentfield%DECOMPOSITION%MESH_COMPONENT_NUMBER)%PTR% &
950 & topology%NODES%NODES(nodenumber)%BOUNDARY_NODE
954 DO versionidx=1,numberofversions
955 CALL field_parametersetgetlocalnode(independentfield,field_u_variable_type,field_values_set_type, &
956 & versionidx,derivativeidx,nodenumber,componentidx,normalwave(componentidx,versionidx),err,error,*999)
961 IF(abs(normalwave(1,1))>0 .OR. abs(normalwave(2,1))>0)
THEN 962 IF(.NOT. boundarynode)
THEN 965 CALL field_parameter_set_get_constant(materialsfield,field_u_variable_type,field_values_set_type,2,rho,err,error,*999)
967 DO versionidx=1,numberofversions
968 CALL field_parametersetgetlocalnode(materialsfield,field_v_variable_type,field_values_set_type, &
969 & versionidx,derivativeidx,nodenumber,1,a0_param(versionidx),err,error,*999)
970 CALL field_parametersetgetlocalnode(materialsfield,field_v_variable_type,field_values_set_type, &
971 & versionidx,derivativeidx,nodenumber,2,e_param(versionidx),err,error,*999)
972 CALL field_parametersetgetlocalnode(materialsfield,field_v_variable_type,field_values_set_type, &
973 & versionidx,derivativeidx,nodenumber,3,h0_param(versionidx),err,error,*999)
974 beta(versionidx)=(4.0_dp*sqrt(
pi)*e_param(versionidx)*h0_param(versionidx))/(3.0_dp*a0_param(versionidx))
977 DO versionidx=1,numberofversions
979 CALL field_parametersetgetlocalnode(dependentfield,field_u_variable_type,field_values_set_type, &
980 & versionidx,derivativeidx,nodenumber,1,q_bif(versionidx),err,error,*999)
981 CALL field_parametersetgetlocalnode(dependentfield,field_u_variable_type,field_values_set_type, &
982 & versionidx,derivativeidx,nodenumber,2,a_bif(versionidx),err,error,*999)
984 CALL field_parameter_set_update_local_node(dependentfield,field_u_variable_type, &
985 & field_upwind_values_set_type,versionidx,1,nodenumber,1,q_bif(versionidx),err,error,*999)
986 CALL field_parameter_set_update_local_node(dependentfield,field_u_variable_type, &
987 & field_upwind_values_set_type,versionidx,1,nodenumber,2,a_bif(versionidx),err,error,*999)
989 IF (a_bif(versionidx) < a0_param(versionidx)*0.001_dp) a_bif(versionidx) = a0_param(versionidx)*0.001_dp
994 DO versionidx=1,numberofversions
995 CALL field_parametersetgetlocalnode(dependentfield,field_v_variable_type,field_values_set_type, &
996 & versionidx,derivativeidx,nodenumber,componentidx,w(componentidx,versionidx),err,error,*999)
1001 IF(updatestiffnessmatrix)
THEN 1003 rowidx=numberofversions+1
1006 DO versionidx=1,numberofversions
1008 columnidx=columnidx+1
1009 stiffnessmatrix%NodalMatrix%matrix(rowidx,columnidx)=normalwave(componentidx,versionidx)
1016 IF(updatenonlinearresidual)
THEN 1020 DO versionidx=1,numberofversions
1023 nonlinearmatrices%NodalResidual%vector(rowidx)=(q_bif(versionidx)/a_bif(versionidx)) &
1024 & +normalwave(componentidx,versionidx)*4.0_dp*sqrt(beta(versionidx)/(2.0_dp*rho))* &
1025 & (a_bif(versionidx)**0.25_dp - a0_param(versionidx)**0.25_dp)-w(componentidx,versionidx)
1031 DO versionidx=1,numberofversions
1034 IF(versionidx==1)
THEN 1036 DO componentidx2=1,2
1037 DO versionidx2=1,numberofversions
1038 sum=sum+normalwave(componentidx2,versionidx2)*q_bif(versionidx2)
1041 nonlinearmatrices%NodalResidual%vector(rowidx)=sum
1043 nonlinearmatrices%NodalResidual%vector(rowidx)= &
1044 & (rho/2.0_dp*((q_bif(1)/a_bif(1))**2.0_dp) + beta(1)*(sqrt(a_bif(1)) - sqrt(a0_param(1)))) - &
1045 & (rho/2.0_dp*((q_bif(versionidx)/a_bif(versionidx))**2.0_dp) + &
1046 & beta(versionidx)*(sqrt(a_bif(versionidx)) - sqrt(a0_param(versionidx))))
1057 localerror=
"The third equations set specification of "// &
1059 &
" is not valid for a characteristic type of a fluid mechanics equations set." 1060 CALL flagerror(localerror,err,error,*999)
1063 exits(
"Characteristic_NodalResidualEvaluate")
1065 999 errorsexits(
"Characteristic_NodalResidualEvaluate",err,error)
1079 INTEGER(INTG),
INTENT(IN) :: nodeNumber
1080 INTEGER(INTG),
INTENT(OUT) :: err
1093 TYPE(
field_type),
POINTER :: materialsField,dependentField,independentField
1096 REAL(DP),
POINTER :: dependentParameters(:),independentParameters(:),materialsParameters(:)
1097 REAL(DP) :: Q_BIF(4),A_BIF(4),A0_PARAM(4),E_PARAM(4),H0_PARAM(4),Beta(4),W(2,4),normalWave(2,4),rho
1098 INTEGER(INTG) :: numberOfVersions,local_ny,startColumn2
1099 INTEGER(INTG) :: derivativeIdx,versionIdx,rowIdx,columnIdx,columnIdx2,startRow,endRow,componentIdx
1100 LOGICAL :: updateJacobianMatrix,boundaryNode
1102 enters(
"Characteristic_NodalJacobianEvaluate",err,error,*999)
1105 NULLIFY(equationsmapping)
1106 NULLIFY(equationsmapping)
1107 NULLIFY(equationsmatrices)
1108 NULLIFY(linearmapping)
1109 NULLIFY(linearmatrices)
1110 NULLIFY(nonlinearmapping)
1111 NULLIFY(nonlinearmatrices)
1112 NULLIFY(jacobianmatrix)
1113 NULLIFY(dependentfield)
1114 NULLIFY(independentfield)
1115 NULLIFY(materialsfield)
1117 NULLIFY(domainnodes)
1118 NULLIFY(dependentparameters)
1119 NULLIFY(independentparameters)
1120 NULLIFY(materialsparameters)
1121 NULLIFY(fieldvariable)
1123 updatejacobianmatrix=.false.
1125 IF(
ASSOCIATED(equationsset))
THEN 1126 equations=>equationsset%EQUATIONS
1127 IF(
ASSOCIATED(equations))
THEN 1128 dependentfield=>equations%EQUATIONS_SET%DEPENDENT%DEPENDENT_FIELD
1129 IF(
ASSOCIATED(dependentfield))
THEN 1130 domain=>dependentfield%DECOMPOSITION%DOMAIN(dependentfield%DECOMPOSITION%MESH_COMPONENT_NUMBER)%PTR
1131 IF(
ASSOCIATED(domain))
THEN 1132 domainnodes=>domain%TOPOLOGY%NODES
1134 CALL flagerror(
"Domain is not associated.",err,error,*999)
1137 CALL flagerror(
"Dependent Field is not associated.",err,error,*999)
1140 CALL flagerror(
"Equations set equations is not associated.",err,error,*999)
1143 CALL flagerror(
"Equations set is not associated.",err,error,*999)
1146 IF(.NOT.
ALLOCATED(equationsset%specification))
THEN 1147 CALL flagerror(
"Equations set specification is not allocated.",err,error,*999)
1148 ELSE IF(
SIZE(equationsset%specification,1)/=3)
THEN 1149 CALL flagerror(
"Equations set specification must have three entries for a characteristic type equations set.", &
1152 SELECT CASE(equationsset%specification(3))
1155 independentfield=>equations%EQUATIONS_SET%INDEPENDENT%INDEPENDENT_FIELD
1156 materialsfield=>equations%INTERPOLATION%MATERIALS_FIELD
1157 equationsmatrices=>equations%EQUATIONS_MATRICES
1158 equationsmapping=>equations%EQUATIONS_MAPPING
1159 linearmatrices=>equationsmatrices%LINEAR_MATRICES
1160 nonlinearmatrices=>equationsmatrices%NONLINEAR_MATRICES
1161 nonlinearmapping=>equationsmapping%NONLINEAR_MAPPING
1162 linearmapping=>equationsmapping%LINEAR_MAPPING
1163 jacobianmatrix=>nonlinearmatrices%JACOBIANS(1)%PTR
1164 jacobianmatrix%NodalJacobian%matrix=0.0_dp
1165 IF(
ASSOCIATED(jacobianmatrix)) updatejacobianmatrix=jacobianmatrix%UPDATE_JACOBIAN
1169 numberofversions=domainnodes%NODES(nodenumber)%DERIVATIVES(derivativeidx)%numberOfVersions
1170 boundarynode=dependentfield%DECOMPOSITION%DOMAIN(dependentfield%DECOMPOSITION%MESH_COMPONENT_NUMBER)%PTR% &
1171 & topology%NODES%NODES(nodenumber)%BOUNDARY_NODE
1174 CALL field_parameter_set_data_get(independentfield,field_u_variable_type,field_values_set_type, &
1175 & independentparameters,err,error,*999)
1176 fieldvariable=>independentfield%VARIABLE_TYPE_MAP(field_u_variable_type)%PTR
1178 DO versionidx=1,numberofversions
1179 local_ny=fieldvariable%COMPONENTS(componentidx)%PARAM_TO_DOF_MAP%NODE_PARAM2DOF_MAP% &
1180 & nodes(nodenumber)%DERIVATIVES(derivativeidx)%VERSIONS(versionidx)
1181 normalwave(componentidx,versionidx)=independentparameters(local_ny)
1184 CALL field_parameter_set_data_restore(independentfield,field_u_variable_type,field_values_set_type, &
1185 & independentparameters,err,error,*999)
1188 IF(abs(normalwave(1,1))>0 .OR. abs(normalwave(2,1))>0)
THEN 1189 IF(.NOT. boundarynode)
THEN 1192 CALL field_parameter_set_get_constant(materialsfield,field_u_variable_type,field_values_set_type,2,rho,err,error,*999)
1194 DO versionidx=1,numberofversions
1195 CALL field_parametersetgetlocalnode(materialsfield,field_v_variable_type,field_values_set_type, &
1196 & versionidx,derivativeidx,nodenumber,1,a0_param(versionidx),err,error,*999)
1197 CALL field_parametersetgetlocalnode(materialsfield,field_v_variable_type,field_values_set_type, &
1198 & versionidx,derivativeidx,nodenumber,2,e_param(versionidx),err,error,*999)
1199 CALL field_parametersetgetlocalnode(materialsfield,field_v_variable_type,field_values_set_type, &
1200 & versionidx,derivativeidx,nodenumber,3,h0_param(versionidx),err,error,*999)
1201 beta(versionidx)=(4.0_dp*sqrt(
pi)*e_param(versionidx)*h0_param(versionidx))/(3.0_dp*a0_param(versionidx))
1205 DO versionidx=1,numberofversions
1206 CALL field_parametersetgetlocalnode(dependentfield,field_u_variable_type,field_values_set_type, &
1207 & versionidx,derivativeidx,nodenumber,1,q_bif(versionidx),err,error,*999)
1208 CALL field_parametersetgetlocalnode(dependentfield,field_u_variable_type,field_values_set_type, &
1209 & versionidx,derivativeidx,nodenumber,2,a_bif(versionidx),err,error,*999)
1211 IF (a_bif(versionidx) < a0_param(versionidx)*0.001_dp) a_bif(versionidx) = a0_param(versionidx)*0.001_dp
1216 DO versionidx=1,numberofversions
1217 CALL field_parametersetgetlocalnode(dependentfield,field_v_variable_type,field_values_set_type, &
1218 & versionidx,derivativeidx,nodenumber,componentidx,w(componentidx,versionidx),err,error,*999)
1223 IF(updatejacobianmatrix)
THEN 1228 DO versionidx=1,numberofversions
1230 columnidx=columnidx+1
1232 jacobianmatrix%NodalJacobian%matrix(rowidx,columnidx)=1.0_dp/a_bif(versionidx)
1238 DO versionidx=1,numberofversions
1240 columnidx=columnidx+1
1242 jacobianmatrix%NodalJacobian%matrix(rowidx,columnidx)=(-q_bif(versionidx)/(a_bif(versionidx)**2)) &
1243 & +normalwave(componentidx,versionidx)*sqrt(beta(versionidx)/(2.0_dp*rho))*(a_bif(versionidx)**(-0.75_dp))
1249 rowidx=numberofversions+1
1252 DO versionidx=1,numberofversions
1254 columnidx=columnidx+1
1255 jacobianmatrix%NodalJacobian%matrix(rowidx,columnidx)=normalwave(componentidx,versionidx)
1261 startrow=numberofversions+2
1262 endRow=numberOfVersions*2
1263 startcolumn2=numberofversions+1
1264 DO rowidx=startrow,endrow
1266 columnidx2=startcolumn2
1268 DO versionidx=1,numberofversions
1270 IF(columnidx==1)
THEN 1272 jacobianmatrix%NodalJacobian%matrix(rowidx,columnidx)=rho* &
1273 & (q_bif(1)/(a_bif(1)**2.0_dp))
1275 jacobianmatrix%NodalJacobian%matrix(rowidx,columnidx2)= &
1276 & beta(1)/(2.0_dp*sqrt(a_bif(1))) - &
1277 & (rho)*((q_bif(1)**2.0_dp)/(a_bif(1)**3.0_dp))
1278 ELSE IF(columnidx2==rowidx)
THEN 1280 jacobianmatrix%NodalJacobian%matrix(rowidx,columnidx)=-rho* &
1281 & (q_bif(versionidx)/(a_bif(versionidx)**2.0_dp))
1283 jacobianmatrix%NodalJacobian%matrix(rowidx,columnidx2)= &
1284 & -beta(versionidx)/(2.0_dp*sqrt(a_bif(versionidx))) + &
1285 & (rho)*((q_bif(versionidx)**2.0_dp)/(a_bif(versionidx)**3.0_dp))
1287 jacobianmatrix%NodalJacobian%matrix(rowidx,versionidx)=0.0_dp
1288 jacobianmatrix%NodalJacobian%matrix(rowidx,columnidx)=0.0_dp
1290 columnidx=columnidx+1
1291 columnidx2=columnidx2+1
1302 localerror=
"The third equations set specification of "// &
1304 &
" is not valid for a Navier-Stokes equation type of a fluid mechanics equations set class." 1305 CALL flagerror(localerror,err,error,*999)
1308 exits(
"Characteristic_NodalJacobianEvaluate")
1310 999 errorsexits(
"Characteristic_NodalJacobianEvaluate",err,error)
1323 TYPE(solver_type),
POINTER :: SOLVER
1324 REAL(DP),
INTENT(IN) :: currentTime
1325 REAL(DP),
INTENT(IN) :: timeIncrement
1326 INTEGER(INTG),
INTENT(OUT) :: ERR
1327 TYPE(varying_string),
INTENT(OUT) :: ERROR
1329 TYPE(basis_type),
POINTER :: dependentBasis,materialsBasis
1330 TYPE(domain_type),
POINTER :: dependentDomain,materialsDomain
1331 TYPE(equations_set_type),
POINTER :: equationsSet
1332 TYPE(equations_type),
POINTER :: equations
1333 TYPE(field_type),
POINTER :: dependentField,materialsField,independentField,geometricField
1334 TYPE(solver_equations_type),
POINTER :: solverEquations
1335 TYPE(solver_mapping_type),
POINTER :: solverMapping
1336 REAL(DP) :: W(2,4),Q_EX(4),A_EX(4),XI(1),A0_PARAM(4),H0_PARAM(4),E_PARAM(4),Beta(4),normalWave(2,4),elementLengths(4)
1337 REAL(DP) :: A0_EX(4),H0_EX(4),E_EX(4),Beta_EX(4),f(4),l,friction
1338 REAL(DP) :: QPrevious,APrevious,rho,lambda(4)
1339 REAL(DP) :: elementLength,extrapolationDistance
1340 INTEGER(INTG) :: nodeIdx,versionIdx,derivativeIdx,elementIdx,elementNumber,versionElementNumber(4),lineNumber
1341 INTEGER(INTG) :: elementNodeIdx,elementNodeNumber,elementNodeVersion,numberOfVersions,componentIdx,numberOfLocalNodes
1342 LOGICAL :: overExtrapolated
1344 enters(
"Characteristic_Extrapolate",err,error,*999)
1346 NULLIFY(dependentbasis)
1347 NULLIFY(materialsbasis)
1348 NULLIFY(dependentdomain)
1349 NULLIFY(materialsdomain)
1350 NULLIFY(equationsset)
1352 NULLIFY(geometricfield)
1353 NULLIFY(dependentfield)
1354 NULLIFY(independentfield)
1355 NULLIFY(materialsfield)
1356 NULLIFY(solverequations)
1357 NULLIFY(solvermapping)
1359 IF(
ASSOCIATED(solver))
THEN 1360 solverequations=>solver%SOLVER_EQUATIONS
1361 IF(
ASSOCIATED(solverequations))
THEN 1362 solvermapping=>solverequations%SOLVER_MAPPING
1363 IF(
ASSOCIATED(solvermapping))
THEN 1364 equationsset=>solvermapping%EQUATIONS_SETS(1)%PTR
1365 IF(
ASSOCIATED(equationsset))
THEN 1366 equations=>equationsset%EQUATIONS
1367 IF(
ASSOCIATED(equations))
THEN 1369 geometricfield=>equationsset%GEOMETRY%GEOMETRIC_FIELD
1370 dependentfield=>equationsset%DEPENDENT%DEPENDENT_FIELD
1371 independentfield=>equationsset%INDEPENDENT%INDEPENDENT_FIELD
1372 materialsfield=>equations%INTERPOLATION%MATERIALS_FIELD
1373 dependentdomain=>dependentfield%DECOMPOSITION%DOMAIN(dependentfield%DECOMPOSITION%MESH_COMPONENT_NUMBER)%PTR
1374 materialsdomain=>materialsfield%DECOMPOSITION%DOMAIN(dependentfield%DECOMPOSITION%MESH_COMPONENT_NUMBER)%PTR
1376 numberoflocalnodes=dependentdomain%TOPOLOGY%NODES%NUMBER_OF_NODES
1380 DO nodeidx=1,numberoflocalnodes
1381 numberofversions=dependentdomain%TOPOLOGY%NODES%NODES(nodeidx)%DERIVATIVES(derivativeidx)%numberOfVersions
1386 DO versionidx=1,numberofversions
1387 CALL field_parametersetgetlocalnode(independentfield,field_u_variable_type,field_values_set_type,versionidx, &
1388 & derivativeidx,nodeidx,componentidx,normalwave(componentidx,versionidx),err,error,*999)
1393 IF(abs(normalwave(1,1)) > zero_tolerance .OR. abs(normalwave(2,1))> zero_tolerance)
THEN 1395 CALL field_parameter_set_get_constant(materialsfield,field_u_variable_type, &
1396 & field_values_set_type,2,rho,err,error,*999)
1398 overextrapolated = .false.
1400 elementlengths = 0.0_dp
1401 DO elementidx=1,dependentdomain%TOPOLOGY%NODES%NODES(nodeidx)%NUMBER_OF_SURROUNDING_ELEMENTS
1402 elementnumber=dependentdomain%TOPOLOGY%NODES%NODES(nodeidx)%SURROUNDING_ELEMENTS(elementidx)
1404 linenumber = geometricfield%DECOMPOSITION%TOPOLOGY%ELEMENTS%ELEMENTS(elementnumber)% &
1406 elementlength = geometricfield%GEOMETRIC_FIELD_PARAMETERS%LENGTHS(linenumber)
1408 dependentbasis=>dependentdomain%TOPOLOGY%ELEMENTS%ELEMENTS(elementnumber)%BASIS
1409 materialsbasis=>materialsdomain%TOPOLOGY%ELEMENTS%ELEMENTS(elementnumber)%BASIS
1410 DO elementnodeidx=1,dependentbasis%NUMBER_OF_NODES
1411 elementnodenumber=dependentdomain%TOPOLOGY%ELEMENTS%ELEMENTS(elementnumber)% &
1412 & element_nodes(elementnodeidx)
1414 IF(elementnodenumber==nodeidx)
THEN 1416 DO versionidx=1,numberofversions
1418 elementnodeversion=dependentdomain%TOPOLOGY%ELEMENTS%ELEMENTS(elementnumber)%&
1419 & elementversions(1,elementnodeidx)
1420 IF(elementnodeversion==versionidx)
THEN 1421 versionelementnumber(versionidx)=elementnumber
1422 elementlengths(versionidx) = elementlength
1436 DO versionidx=1,numberofversions
1437 IF(abs(normalwave(componentidx,versionidx))> zero_tolerance)
THEN 1440 CALL field_parametersetgetlocalnode(materialsfield,field_v_variable_type, &
1441 & field_values_set_type,versionidx,derivativeidx,nodeidx,1,a0_param(versionidx),err,error,*999)
1442 CALL field_parametersetgetlocalnode(materialsfield,field_v_variable_type, &
1443 & field_values_set_type,versionidx,derivativeidx,nodeidx,2,e_param(versionidx),err,error,*999)
1444 CALL field_parametersetgetlocalnode(materialsfield,field_v_variable_type, &
1445 & field_values_set_type,versionidx,derivativeidx,nodeidx,3,h0_param(versionidx),err,error,*999)
1446 beta(versionidx) = (4.0_dp*sqrt(pi)*e_param(versionidx)*h0_param(versionidx))/ &
1447 & (3.0_dp*a0_param(versionidx))
1450 CALL field_parametersetgetlocalnode(dependentfield,field_u_variable_type, &
1451 & field_values_set_type,versionidx,derivativeidx,nodeidx,1,qprevious,err,error,*999)
1452 CALL field_parametersetgetlocalnode(dependentfield,field_u_variable_type, &
1453 & field_values_set_type,versionidx,derivativeidx,nodeidx,2,aprevious,err,error,*999)
1456 lambda(versionidx) = qprevious/aprevious + normalwave(componentidx,versionidx)* &
1457 & (aprevious**0.25)*sqrt(beta(versionidx)/(2.0_dp*rho))
1459 IF (lambda(versionidx)*normalwave(componentidx,versionidx) < 0.0_dp)
THEN 1460 CALL flagerror(
"Subcritical 1D system violated.",err,error,*999)
1464 extrapolationdistance = (timeincrement)*lambda(versionidx)
1466 IF((normalwave(componentidx,versionidx)>zero_tolerance))
THEN 1468 xi(1)=1.0_dp - extrapolationdistance/(elementlengths(versionidx))
1471 xi(1)=0.0_dp - extrapolationdistance/(elementlengths(versionidx))
1473 IF (xi(1) > 1.0_dp .OR. xi(1) < 0.0_dp)
THEN 1474 CALL flag_warning(
"1D extrapolation location outside of element xi space. Reduce time increment", &
1476 overextrapolated = .true.
1480 CALL field_interpolation_parameters_element_get(field_values_set_type, &
1481 & versionelementnumber(versionidx),equations%INTERPOLATION% &
1482 & dependent_interp_parameters(field_u_variable_type)%PTR,err,error,*999)
1483 CALL field_interpolate_xi(no_part_deriv,xi,equations%INTERPOLATION% &
1484 & dependent_interp_point(field_u_variable_type)%PTR,err,error,*999)
1485 q_ex(versionidx)=equations%INTERPOLATION%DEPENDENT_INTERP_POINT(field_u_variable_type)% &
1486 & ptr%VALUES(1,no_part_deriv)
1487 a_ex(versionidx)=equations%INTERPOLATION%DEPENDENT_INTERP_POINT(field_u_variable_type)% &
1488 & ptr%VALUES(2,no_part_deriv)
1490 CALL field_interpolation_parameters_element_get(field_values_set_type, &
1491 & versionelementnumber(versionidx),equations%INTERPOLATION% &
1492 & materials_interp_parameters(field_v_variable_type)%PTR,err,error,*999)
1493 CALL field_interpolate_xi(no_part_deriv,xi,equations%INTERPOLATION% &
1494 & materials_interp_point(field_v_variable_type)%PTR,err,error,*999)
1495 a0_ex(versionidx)=equations%INTERPOLATION%MATERIALS_INTERP_POINT(field_v_variable_type)% &
1496 & ptr%VALUES(1,no_part_deriv)
1497 e_ex(versionidx)=equations%INTERPOLATION%MATERIALS_INTERP_POINT(field_v_variable_type)% &
1498 & ptr%VALUES(2,no_part_deriv)
1499 h0_ex(versionidx)=equations%INTERPOLATION%MATERIALS_INTERP_POINT(field_v_variable_type)% &
1500 & ptr%VALUES(3,no_part_deriv)
1501 beta_ex(versionidx) = (4.0_dp*sqrt(pi)*e_ex(versionidx)*h0_ex(versionidx))/ &
1502 & (3.0_dp*a0_ex(versionidx))
1504 f(versionidx) = -q_ex(versionidx)/(a_ex(versionidx)**2.0_dp)
1512 DO versionidx=1,numberofversions
1513 IF(abs(normalwave(componentidx,versionidx))>zero_tolerance)
THEN 1515 w(componentidx,versionidx)= ((q_ex(versionidx)/a_ex(versionidx))+ &
1516 & normalwave(componentidx,versionidx)*4.0_dp*sqrt(beta_ex(versionidx)/(2.0_dp*rho))* &
1517 & (a_ex(versionidx)**(0.25_dp) - (a0_ex(versionidx))**(0.25_dp)))
1520 l = (1.0_dp/(q_ex(versionidx)/a_ex(versionidx) + &
1521 & normalwave(componentidx,versionidx)*a_ex(versionidx)**0.25_dp*sqrt(beta_ex(versionidx)/(2.0_dp*rho))))
1522 friction = timeincrement*l*f(versionidx)
1526 lambda(versionidx) = q_ex(versionidx)/a_ex(versionidx) + normalwave(componentidx,versionidx)* &
1527 & (a_ex(versionidx)**0.25)*sqrt(beta(versionidx)/(2.0_dp*rho))
1528 IF (lambda(versionidx)*normalwave(componentidx,versionidx) < -zero_tolerance )
THEN 1529 CALL flagerror(
"Subcritical 1D system violated.",err,error,*999)
1532 IF (.NOT. overextrapolated)
THEN 1533 CALL field_parameter_set_update_local_node(dependentfield,field_v_variable_type, &
1534 & field_values_set_type,versionidx,derivativeidx,nodeidx,componentidx,w(componentidx,versionidx), &
1544 CALL flagerror(
"Equations are not associated.",err,error,*999)
1547 CALL flagerror(
"Solver equations are not associated.",err,error,*999)
1550 CALL flagerror(
"Solver mapping is not associated.",err,error,*999)
1553 CALL flagerror(
"Solvers is not associated.",err,error,*999)
1556 CALL flagerror(
"Solver is not associated.",err,error,*999)
1559 exits(
"Characteristic_Extrapolate")
1561 999 errorsexits(
"Characteristic_Extrapolate",err,error)
1574 TYPE(equations_set_type),
POINTER :: equationsSet
1575 INTEGER(INTG),
INTENT(OUT) :: ERR
1576 TYPE(varying_string),
INTENT(OUT) :: ERROR
1578 TYPE(field_type),
POINTER :: dependentField,materialsField,independentField
1579 TYPE(field_variable_type),
POINTER :: fieldVariable
1580 TYPE(domain_nodes_type),
POINTER :: domainNodes
1581 TYPE(varying_string) :: localError
1582 INTEGER(INTG) :: nodeNumber,nodeIdx,derivativeIdx,versionIdx,componentIdx,numberOfVersions,dofNumber
1583 REAL(DP) :: qCurrent(4), aCurrent(4),W(2,4)
1584 REAL(DP) :: normalWave,A0_PARAM,E_PARAM,H0_PARAM,Beta
1585 LOGICAL :: boundaryNode
1587 enters(
"Characteristic_PrimitiveToCharacteristic",err,error,*999)
1589 NULLIFY(dependentfield)
1590 NULLIFY(independentfield)
1591 NULLIFY(materialsfield)
1592 NULLIFY(fieldvariable)
1594 IF(
ASSOCIATED(equationsset))
THEN 1595 SELECT CASE(equationsset%SPECIFICATION(3))
1596 CASE(equations_set_coupled1d0d_navier_stokes_subtype, &
1597 & equations_set_transient1d_navier_stokes_subtype)
1598 dependentfield=>equationsset%DEPENDENT%DEPENDENT_FIELD
1599 independentfield=>equationsset%INDEPENDENT%INDEPENDENT_FIELD
1600 materialsfield=>equationsset%MATERIALS%MATERIALS_FIELD
1602 localerror=
"The third equations set specification of "// &
1603 & trim(numbertovstring(equationsset%SPECIFICATION(3),
"*",err,error))// &
1604 &
" is not valid for a call to Characteristic_PrimitiveToCharacteristic" 1605 CALL flagerror(localerror,err,error,*999)
1608 CALL flagerror(
"Equations set is not associated.",err,error,*999)
1611 domainnodes=>dependentfield%DECOMPOSITION%DOMAIN(dependentfield%DECOMPOSITION%MESH_COMPONENT_NUMBER)%PTR%TOPOLOGY%NODES
1614 DO nodeidx=1,domainnodes%NUMBER_OF_NODES
1615 nodenumber = domainnodes%NODES(nodeidx)%local_number
1617 numberofversions=domainnodes%NODES(nodenumber)%DERIVATIVES(derivativeidx)%numberOfVersions
1618 boundarynode=domainnodes%NODES(nodenumber)%BOUNDARY_NODE
1620 IF(numberofversions > 1 .AND. .NOT. boundarynode)
THEN 1622 DO versionidx=1,numberofversions
1623 CALL field_parametersetgetlocalnode(independentfield,field_u_variable_type, &
1624 & field_values_set_type,versionidx,derivativeidx,nodenumber,componentidx,normalwave,err,error,*999)
1625 IF(abs(normalwave)>zero_tolerance)
THEN 1627 CALL field_parametersetgetlocalnode(materialsfield,field_v_variable_type,field_values_set_type, &
1628 & versionidx,derivativeidx,nodenumber,1,a0_param,err,error,*999)
1629 CALL field_parametersetgetlocalnode(materialsfield,field_v_variable_type,field_values_set_type, &
1630 & versionidx,derivativeidx,nodenumber,2,e_param,err,error,*999)
1631 CALL field_parametersetgetlocalnode(materialsfield,field_v_variable_type,field_values_set_type, &
1632 & versionidx,derivativeidx,nodenumber,3,h0_param,err,error,*999)
1633 beta=(4.0_dp*sqrt(pi)*e_param*h0_param)/(3.0_dp*a0_param)
1636 CALL field_parametersetgetlocalnode(dependentfield,field_u_variable_type,field_values_set_type, &
1637 & versionidx,derivativeidx,nodenumber,1,qcurrent(versionidx),err,error,*999)
1638 CALL field_parametersetgetlocalnode(dependentfield,field_u_variable_type,field_values_set_type, &
1639 & versionidx,derivativeidx,nodenumber,2,acurrent(versionidx),err,error,*999)
1642 w(componentidx,versionidx)= ((qcurrent(versionidx)/acurrent(versionidx))+ &
1643 & normalwave*4.0_dp*sqrt(((beta)))*(acurrent(versionidx)**(0.25_dp) - (a0_param)**(0.25_dp)))
1646 fieldvariable=>dependentfield%VARIABLE_TYPE_MAP(field_v_variable_type)%PTR
1647 dofnumber=fieldvariable%COMPONENTS(componentidx)%PARAM_TO_DOF_MAP%NODE_PARAM2DOF_MAP% &
1648 & nodes(nodenumber)%DERIVATIVES(derivativeidx)%VERSIONS(versionidx)
1649 CALL field_parameter_set_update_local_dof(dependentfield,field_v_variable_type, &
1650 & field_values_set_type,dofnumber,w(componentidx,versionidx),err,error,*999)
1657 exits(
"Characteristic_PrimitiveToCharacteristic")
1659 999 errorsexits(
"Characteristic_PrimitiveToCharacteristic",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.
subroutine, public enters(NAME, ERR, ERROR,)
Records the entry into the named procedure and initialises the error code.
Contains information on the Jacobian matrix for nonlinear problems.
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_gfem_solution_method
Grid-based Finite Element Method solution method.
This module handles all problem wide constants.
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.
real(dp), parameter pi
The double precision value of pi.
This module handles all equations matrix and rhs routines.
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.
This module contains all string manipulation and transformation routines.
This module contains routines for timing the program.
subroutine, public equations_time_dependence_type_set(EQUATIONS, TIME_DEPENDENCE_TYPE, ERR, ERROR,)
Sets/changes the time dependence type for equations.
This module contains all mathematics support routines.
Contains information for a field defined on a region.
integer(intg), parameter, public equations_matrices_full_matrices
Use fully populated equation matrices.
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.
This module provides an iso_varying_string module, conformant to the API specified in ISO/IEC 1539-2:...
integer(intg), parameter equations_set_setup_equations_type
Equations setup.
integer(intg), parameter equations_set_setup_independent_type
Independent variables.
This module contains all program wide constants.
subroutine, public equationsmapping_linearmatricesnumberset(EQUATIONS_MAPPING, NUMBER_OF_LINEAR_EQUATIONS_MATRICES, ERR, ERROR,)
Sets/changes the number of linear equations matrices.
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 characteristic_extrapolate(solver, currentTime, timeIncrement, ERR, ERROR,)
Extrapolate W for branch nodes and boundaries .
integer(intg), parameter equations_set_setup_start_action
Start setup action.
Sets the storage type (sparsity) of the nonlinear (Jacobian) equations matrices.
subroutine, public exits(NAME)
Records the exit out of the named procedure.
integer(intg), parameter equations_set_characteristic_subtype
This module contains all type definitions in order to avoid cyclic module references.
Contains information on the equations mapping for nonlinear matrices i.e., how a field variable is ma...
Contains information on the equations matrices and vectors.
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, 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.
integer(intg), parameter, public equations_jacobian_analytic_calculated
Use an analytic Jacobian evaluation.
subroutine, public equations_set_equations_get(EQUATIONS_SET, EQUATIONS, ERR, ERROR,)
Gets the equations for an equations set.
Sets the structure (sparsity) of the nonlinear (Jacobian) equations matrices.
subroutine, public equations_create_finish(EQUATIONS, ERR, ERROR,)
Finish the creation of equations.
This module handles all domain mappings routines.
This module handles all equations mapping routines.
integer(intg), parameter, public matrix_compressed_row_storage_type
Matrix compressed row storage type.
integer(intg), parameter equations_set_gfv_solution_method
Grid-based Finite Volume solution method.
integer(intg), parameter, public equations_matrix_nodal_structure
Nodal matrix structure.
integer(intg), parameter equations_set_setup_geometry_type
Geometry setup.
subroutine, public characteristic_equationssetsetup(equationsSet, equationsSetSetup, err, error,)
Sets up the Characteristic equations fluid setup.
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.
subroutine, public characteristic_primitivetocharacteristic(equationsSet, ERR, ERROR,)
Calculate Characteristic (W) values based on dependent field values.
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.
subroutine, public characteristic_equationssetsolutionmethodset(equationsSet, solutionMethod, err, error,)
Sets/changes the solution method for a Characteristic equation type of an fluid mechanics equations s...
Implements lists of Field IO operation.
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.
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.
This module handles all characteristic equation routines.
Contains information on the setup information for an equations set.
A pointer to the domain decomposition for this domain.
Contains information of the nolinear matrices and vectors for equations matrices. ...
This module handles all control loop routines.
integer(intg), parameter equations_set_characteristic_equation_type
subroutine, public equationsmatrices_jacobiantypesset(equationsMatrices, jacobianTypes, err, error,)
Sets the Jacobian calculation types of the residual variables.
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 characteristic_equationssetspecificationset(equationsSet, specification, err, error,)
Sets the equation specification for a Characteristic type of a fluid mechanics equations set class...
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.
subroutine, public characteristic_nodaljacobianevaluate(equationsSet, nodeNumber, err, error,)
Evaluates the Jacobian nodal matrix for a characteristic equation nodal equations set...
subroutine, public characteristic_nodalresidualevaluate(equationsSet, nodeNumber, err, error,)
Evaluates the residual nodal stiffness matrices and RHS for a characteristic equation nodal equations...
Flags an error condition.
integer(intg), parameter equations_set_nodal_solution_method
Similar to Finite Element Method with looping over nodes instead of elements.
integer(intg), parameter equations_nonlinear
The equations are non-linear.
real(dp), parameter zero_tolerance
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.