114 INTEGER(INTG),
INTENT(OUT) :: ERR
117 INTEGER(INTG) :: component_idx,deriv_idx,dim_idx,local_ny,node_idx,NUMBER_OF_DIMENSIONS,variable_idx,variable_type
118 REAL(DP) ::
VALUE,X(3)
119 REAL(DP),
POINTER :: GEOMETRIC_PARAMETERS(:)
122 TYPE(
field_type),
POINTER :: DEPENDENT_FIELD,GEOMETRIC_FIELD
126 enters(
"Laplace_BoundaryConditionsAnalyticCalculate",err,error,*999)
128 NULLIFY(geometric_parameters)
130 IF(
ASSOCIATED(equations_set))
THEN 131 IF(
ASSOCIATED(equations_set%ANALYTIC))
THEN 132 dependent_field=>equations_set%DEPENDENT%DEPENDENT_FIELD
133 IF(
ASSOCIATED(dependent_field))
THEN 134 geometric_field=>equations_set%GEOMETRY%GEOMETRIC_FIELD
135 IF(
ASSOCIATED(geometric_field))
THEN 136 CALL field_number_of_components_get(geometric_field,field_u_variable_type,number_of_dimensions,err,error,*999)
137 NULLIFY(geometric_variable)
138 CALL field_variable_get(geometric_field,field_u_variable_type,geometric_variable,err,error,*999)
139 CALL field_parameter_set_data_get(geometric_field,field_u_variable_type,field_values_set_type,geometric_parameters, &
141 IF(
ASSOCIATED(boundary_conditions))
THEN 142 DO variable_idx=1,dependent_field%NUMBER_OF_VARIABLES
143 variable_type=dependent_field%VARIABLES(variable_idx)%VARIABLE_TYPE
144 field_variable=>dependent_field%VARIABLE_TYPE_MAP(variable_type)%PTR
145 IF(
ASSOCIATED(field_variable))
THEN 146 CALL field_parameter_set_create(dependent_field,variable_type,field_analytic_values_set_type,err,error,*999)
147 DO component_idx=1,field_variable%NUMBER_OF_COMPONENTS
148 IF(field_variable%COMPONENTS(component_idx)%INTERPOLATION_TYPE==field_node_based_interpolation)
THEN 149 domain=>field_variable%COMPONENTS(component_idx)%DOMAIN
150 IF(
ASSOCIATED(domain))
THEN 151 IF(
ASSOCIATED(domain%TOPOLOGY))
THEN 152 domain_nodes=>domain%TOPOLOGY%NODES
153 IF(
ASSOCIATED(domain_nodes))
THEN 155 DO node_idx=1,domain_nodes%NUMBER_OF_NODES
157 DO dim_idx=1,number_of_dimensions
159 local_ny=geometric_variable%COMPONENTS(dim_idx)%PARAM_TO_DOF_MAP%NODE_PARAM2DOF_MAP% &
160 & nodes(node_idx)%DERIVATIVES(1)%VERSIONS(1)
161 x(dim_idx)=geometric_parameters(local_ny)
164 DO deriv_idx=1,domain_nodes%NODES(node_idx)%NUMBER_OF_DERIVATIVES
165 SELECT CASE(equations_set%ANALYTIC%ANALYTIC_FUNCTION_TYPE)
168 SELECT CASE(variable_type)
169 CASE(field_u_variable_type)
170 SELECT CASE(domain_nodes%NODES(node_idx)%DERIVATIVES(deriv_idx)%GLOBAL_DERIVATIVE_INDEX)
172 VALUE=x(1)*x(1)-2.0_dp*x(1)*x(2)-x(2)*x(2)
174 VALUE=2.0_dp*x(1)+2.0_dp*x(2)
176 VALUE=2.0_dp*x(1)-2.0_dp*x(2)
181 & domain_nodes%NODES(node_idx)%DERIVATIVES(deriv_idx)%GLOBAL_DERIVATIVE_INDEX,
"*", &
182 & err,error))//
" is invalid." 183 CALL flagerror(local_error,err,error,*999)
185 CASE(field_deludeln_variable_type)
186 SELECT CASE(domain_nodes%NODES(node_idx)%DERIVATIVES(deriv_idx)%GLOBAL_DERIVATIVE_INDEX)
190 CALL flagerror(
"Not implemented.",err,error,*999)
192 CALL flagerror(
"Not implemented.",err,error,*999)
194 CALL flagerror(
"Not implemented.",err,error,*999)
197 & domain_nodes%NODES(node_idx)%DERIVATIVES(deriv_idx)%GLOBAL_DERIVATIVE_INDEX,
"*", &
198 & err,error))//
" is invalid." 199 CALL flagerror(local_error,err,error,*999)
204 CALL flagerror(local_error,err,error,*999)
208 SELECT CASE(variable_type)
209 CASE(field_u_variable_type)
210 SELECT CASE(domain_nodes%NODES(node_idx)%DERIVATIVES(deriv_idx)%GLOBAL_DERIVATIVE_INDEX)
212 VALUE=cos(x(1))*cosh(x(2))
214 VALUE=-sin(x(1))*cosh(x(2))
216 VALUE=cos(x(1))*sinh(x(2))
218 VALUE=-sin(x(1))*sinh(x(2))
221 & domain_nodes%NODES(node_idx)%DERIVATIVES(deriv_idx)%GLOBAL_DERIVATIVE_INDEX,
"*", &
222 & err,error))//
" is invalid." 223 CALL flagerror(local_error,err,error,*999)
225 CASE(field_deludeln_variable_type)
226 SELECT CASE(domain_nodes%NODES(node_idx)%DERIVATIVES(deriv_idx)%GLOBAL_DERIVATIVE_INDEX)
237 & domain_nodes%NODES(node_idx)%DERIVATIVES(deriv_idx)%GLOBAL_DERIVATIVE_INDEX,
"*", &
238 & err,error))//
" is invalid." 239 CALL flagerror(local_error,err,error,*999)
244 CALL flagerror(local_error,err,error,*999)
248 SELECT CASE(variable_type)
249 CASE(field_u_variable_type)
250 SELECT CASE(domain_nodes%NODES(node_idx)%DERIVATIVES(deriv_idx)%GLOBAL_DERIVATIVE_INDEX)
252 VALUE=x(1)*x(1)+x(2)*x(2)-2.0_dp*x(3)*x(3)
269 & domain_nodes%NODES(node_idx)%DERIVATIVES(deriv_idx)%GLOBAL_DERIVATIVE_INDEX,
"*", &
270 & err,error))//
" is invalid." 271 CALL flagerror(local_error,err,error,*999)
273 CASE(field_deludeln_variable_type)
274 SELECT CASE(domain_nodes%NODES(node_idx)%DERIVATIVES(deriv_idx)%GLOBAL_DERIVATIVE_INDEX)
278 CALL flagerror(
"Not implemented.",err,error,*999)
280 CALL flagerror(
"Not implemented.",err,error,*999)
282 CALL flagerror(
"Not implemented.",err,error,*999)
284 CALL flagerror(
"Not implemented.",err,error,*999)
286 CALL flagerror(
"Not implemented.",err,error,*999)
288 CALL flagerror(
"Not implemented.",err,error,*999)
290 CALL flagerror(
"Not implemented.",err,error,*999)
293 & domain_nodes%NODES(node_idx)%DERIVATIVES(deriv_idx)%GLOBAL_DERIVATIVE_INDEX,
"*", &
294 & err,error))//
" is invalid." 295 CALL flagerror(local_error,err,error,*999)
300 CALL flagerror(local_error,err,error,*999)
304 SELECT CASE(variable_type)
305 CASE(field_u_variable_type)
306 SELECT CASE(domain_nodes%NODES(node_idx)%DERIVATIVES(deriv_idx)%GLOBAL_DERIVATIVE_INDEX)
308 VALUE=cos(x(1))*cosh(x(2))*x(3)
310 VALUE=-sin(x(1))*cosh(x(2))*x(3)
312 VALUE=cos(x(1))*sinh(x(2))*x(3)
314 VALUE=-sin(x(1))*sinh(x(2))*x(3)
316 VALUE=cos(x(1))*cosh(x(2))
318 VALUE=-sin(x(1))*cosh(x(2))
320 VALUE=cos(x(1))*sinh(x(2))
322 VALUE=-sin(x(1))*sinh(x(2))
325 & domain_nodes%NODES(node_idx)%DERIVATIVES(deriv_idx)%GLOBAL_DERIVATIVE_INDEX,
"*", &
326 & err,error))//
" is invalid." 327 CALL flagerror(local_error,err,error,*999)
329 CASE(field_deludeln_variable_type)
330 SELECT CASE(domain_nodes%NODES(node_idx)%DERIVATIVES(deriv_idx)%GLOBAL_DERIVATIVE_INDEX)
349 & domain_nodes%NODES(node_idx)%DERIVATIVES(deriv_idx)%GLOBAL_DERIVATIVE_INDEX,
"*", &
350 & err,error))//
" is invalid." 351 CALL flagerror(local_error,err,error,*999)
356 CALL flagerror(local_error,err,error,*999)
359 local_error=
"The analytic function type of "// &
362 CALL flagerror(local_error,err,error,*999)
364 local_ny=field_variable%COMPONENTS(component_idx)%PARAM_TO_DOF_MAP% &
365 & node_param2dof_map%NODES(node_idx)%DERIVATIVES(deriv_idx)%VERSIONS(1)
366 CALL field_parameter_set_update_local_dof(dependent_field,variable_type, &
367 & field_analytic_values_set_type,local_ny,
VALUE,err,error,*999)
368 IF(variable_type==field_u_variable_type)
THEN 369 IF(domain_nodes%NODES(node_idx)%BOUNDARY_NODE)
THEN 378 CALL flagerror(
"Domain topology nodes is not associated.",err,error,*999)
381 CALL flagerror(
"Domain topology is not associated.",err,error,*999)
384 CALL flagerror(
"Domain is not associated.",err,error,*999)
387 CALL flagerror(
"Only node based interpolation is implemented.",err,error,*999)
390 CALL field_parameter_set_update_start(dependent_field,variable_type,field_analytic_values_set_type, &
392 CALL field_parameter_set_update_finish(dependent_field,variable_type,field_analytic_values_set_type, &
395 CALL flagerror(
"Field variable is not associated.",err,error,*999)
399 CALL field_parameter_set_data_restore(geometric_field,field_u_variable_type,field_values_set_type, &
400 & geometric_parameters,err,error,*999)
402 CALL flagerror(
"Boundary conditions is not associated.",err,error,*999)
405 CALL flagerror(
"Equations set geometric field is not associated.",err,error,*999)
408 CALL flagerror(
"Equations set dependent field is not associated.",err,error,*999)
411 CALL flagerror(
"Equations set analytic is not associated.",err,error,*999)
414 CALL flagerror(
"Equations set is not associated.",err,error,*999)
417 exits(
"Laplace_BoundaryConditionsAnalyticCalculate")
419 999 errorsexits(
"Laplace_BoundaryConditionsAnalyticCalculate",err,error)
432 INTEGER(INTG),
INTENT(IN) :: elementNumber
433 INTEGER(INTG),
INTENT(OUT) :: err
436 INTEGER(INTG) :: fieldVarType,ng,mh,mhs,mi,ms,nh,nhs,ni,ns,i,k,h
437 REAL(DP) :: conductivityMaterial(3,3),conductivity(3,3),conductivityTemp(3,3)
438 REAL(DP) :: rwg,sum,pgmsi(3),pgnsi(3),kValue(3)
439 TYPE(
basis_type),
POINTER :: dependentBasis,geometricBasis
447 TYPE(
field_type),
POINTER :: dependentField,geometricField
453 INTEGER(INTG) :: numberOfDimensions
454 REAL(DP) :: dNudXi(3,3),dXidNu(3,3),dXdNu(3,3),dNudX(3,3)
457 CHARACTER(26) :: CVAR
458 INTEGER :: GAUSS_POINT_LOOP_PHASE(2) = [ 0, 0 ]
459 SAVE gauss_point_loop_phase
462 enters(
"LaplaceEquation_FiniteElementCalculate",err,error,*999)
464 IF(
ASSOCIATED(equationsset))
THEN 465 IF(.NOT.
ALLOCATED(equationsset%SPECIFICATION))
THEN 466 CALL flagerror(
"Equations set specification is not allocated.",err,error,*999)
467 ELSE IF(
SIZE(equationsset%SPECIFICATION,1)/=3)
THEN 468 CALL flagerror(
"Equations set specification must have three entries for a Laplace type equations set.", &
471 equations=>equationsset%EQUATIONS
472 IF(
ASSOCIATED(equations))
THEN 473 SELECT CASE(equationsset%SPECIFICATION(3))
477 dependentfield=>equations%INTERPOLATION%DEPENDENT_FIELD
478 geometricfield=>equations%INTERPOLATION%GEOMETRIC_FIELD
479 equationsmatrices=>equations%EQUATIONS_MATRICES
480 linearmatrices=>equationsmatrices%LINEAR_MATRICES
481 equationsmatrix=>linearmatrices%MATRICES(1)%PTR
482 rhsvector=>equationsmatrices%RHS_VECTOR
483 equationsmapping=>equations%EQUATIONS_MAPPING
484 linearmapping=>equationsmapping%LINEAR_MAPPING
485 fieldvariable=>linearmapping%EQUATIONS_MATRIX_TO_VAR_MAPS(1)%VARIABLE
486 fieldvartype=fieldvariable%VARIABLE_TYPE
487 dependentbasis=>dependentfield%DECOMPOSITION%DOMAIN(dependentfield%DECOMPOSITION%MESH_COMPONENT_NUMBER)%PTR% &
488 & topology%ELEMENTS%ELEMENTS(elementnumber)%BASIS
489 geometricbasis=>geometricfield%DECOMPOSITION%DOMAIN(geometricfield%DECOMPOSITION%MESH_COMPONENT_NUMBER)%PTR% &
490 & topology%ELEMENTS%ELEMENTS(elementnumber)%BASIS
492 CALL field_interpolation_parameters_element_get(field_values_set_type,elementnumber,equations%INTERPOLATION% &
493 & geometric_interp_parameters(field_u_variable_type)%PTR,err,error,*999)
495 DO ng=1,quadraturescheme%NUMBER_OF_GAUSS
497 WRITE (cvar,
'(a17,i2)')
'Gauss Point Loop ',ng
498 CALL tau_phase_create_dynamic(gauss_point_loop_phase,cvar)
499 CALL tau_phase_start(gauss_point_loop_phase)
502 & geometric_interp_point(field_u_variable_type)%PTR,err,error,*999)
503 CALL field_interpolated_point_metrics_calculate(geometricbasis%NUMBER_OF_XI,equations%INTERPOLATION% &
504 & geometric_interp_point_metrics(field_u_variable_type)%PTR,err,error,*999)
507 rwg=equations%INTERPOLATION%GEOMETRIC_INTERP_POINT_METRICS(field_u_variable_type)%PTR%JACOBIAN* &
508 & quadraturescheme%GAUSS_WEIGHTS(ng)
511 DO mh=1,fieldvariable%NUMBER_OF_COMPONENTS
514 DO ms=1,dependentbasis%NUMBER_OF_ELEMENT_PARAMETERS
517 IF(equationsmatrix%UPDATE_MATRIX)
THEN 519 DO nh=1,fieldvariable%NUMBER_OF_COMPONENTS
520 DO ns=1,dependentbasis%NUMBER_OF_ELEMENT_PARAMETERS
522 DO ni=1,dependentbasis%NUMBER_OF_XI
527 DO mi=1,dependentbasis%NUMBER_OF_XI
528 DO ni=1,dependentbasis%NUMBER_OF_XI
529 sum=sum+pgmsi(mi)*pgnsi(ni)*equations%INTERPOLATION% &
530 & geometric_interp_point_metrics(field_u_variable_type)%PTR%GU(mi,ni)
533 equationsmatrix%ELEMENT_MATRIX%MATRIX(mhs,nhs)=equationsmatrix%ELEMENT_MATRIX%MATRIX(mhs,nhs)+sum*rwg
538 IF(rhsvector%UPDATE_VECTOR) rhsvector%ELEMENT_VECTOR%VECTOR(mhs)=0.0_dp
542 CALL tau_phase_stop(gauss_point_loop_phase)
547 IF(dependentfield%SCALINGS%SCALING_TYPE/=field_no_scaling)
THEN 548 CALL field_interpolationparametersscalefactorselementget(elementnumber,equations%INTERPOLATION% &
549 & dependent_interp_parameters(fieldvartype)%PTR,err,error,*999)
551 DO mh=1,fieldvariable%NUMBER_OF_COMPONENTS
553 DO ms=1,dependentbasis%NUMBER_OF_ELEMENT_PARAMETERS
556 IF(equationsmatrix%UPDATE_MATRIX)
THEN 558 DO nh=1,fieldvariable%NUMBER_OF_COMPONENTS
559 DO ns=1,dependentbasis%NUMBER_OF_ELEMENT_PARAMETERS
561 equationsmatrix%ELEMENT_MATRIX%MATRIX(mhs,nhs)=equationsmatrix%ELEMENT_MATRIX%MATRIX(mhs,nhs)* &
562 & equations%INTERPOLATION%DEPENDENT_INTERP_PARAMETERS(fieldvartype)%PTR%SCALE_FACTORS(ms,mh)* &
563 & equations%INTERPOLATION%DEPENDENT_INTERP_PARAMETERS(fieldvartype)%PTR%SCALE_FACTORS(ns,nh)
567 IF(rhsvector%UPDATE_VECTOR) rhsvector%ELEMENT_VECTOR%VECTOR(mhs)=rhsvector%ELEMENT_VECTOR%VECTOR(mhs)* &
568 & equations%INTERPOLATION%DEPENDENT_INTERP_PARAMETERS(fieldvartype)%PTR%SCALE_FACTORS(ms,mh)
575 dependentfield=>equations%INTERPOLATION%DEPENDENT_FIELD
576 geometricfield=>equations%INTERPOLATION%GEOMETRIC_FIELD
578 equationsmatrices=>equations%EQUATIONS_MATRICES
579 linearmatrices=>equationsmatrices%LINEAR_MATRICES
580 equationsmatrix=>linearmatrices%MATRICES(1)%PTR
581 rhsvector=>equationsmatrices%RHS_VECTOR
583 equationsmapping=>equations%EQUATIONS_MAPPING
584 linearmapping=>equationsmapping%LINEAR_MAPPING
585 fieldvariable=>linearmapping%EQUATIONS_MATRIX_TO_VAR_MAPS(1)%VARIABLE
586 fieldvartype=fieldvariable%VARIABLE_TYPE
588 dependentbasis=>dependentfield%DECOMPOSITION%DOMAIN(dependentfield%DECOMPOSITION%MESH_COMPONENT_NUMBER)%PTR% &
589 & topology%ELEMENTS%ELEMENTS(elementnumber)%BASIS
590 geometricbasis=>geometricfield%DECOMPOSITION%DOMAIN(geometricfield%DECOMPOSITION%MESH_COMPONENT_NUMBER)%PTR% &
591 & topology%ELEMENTS%ELEMENTS(elementnumber)%BASIS
595 numberofdimensions=equationsset%REGION%COORDINATE_SYSTEM%NUMBER_OF_DIMENSIONS
597 CALL field_interpolation_parameters_element_get(field_values_set_type,elementnumber,equations%INTERPOLATION% &
598 & geometric_interp_parameters(field_u_variable_type)%PTR,err,error,*999)
599 CALL field_interpolation_parameters_element_get(field_values_set_type,elementnumber,equations%INTERPOLATION% &
600 & materials_interp_parameters(field_u_variable_type)%PTR,err,error,*999)
601 CALL field_interpolation_parameters_element_get(field_values_set_type,elementnumber,equations%INTERPOLATION% &
602 & fibre_interp_parameters(field_u_variable_type)%PTR,err,error,*999)
604 fibreinterpolatedpoint=>equations%INTERPOLATION%FIBRE_INTERP_POINT(field_u_variable_type)%PTR
605 geometricinterppointmetrics=>equations%INTERPOLATION%GEOMETRIC_INTERP_POINT_METRICS(field_u_variable_type)%PTR
608 DO ng=1,quadraturescheme%NUMBER_OF_GAUSS
610 WRITE (cvar,
'(a17,i2)')
'Gauss Point Loop ',ng
611 CALL tau_phase_create_dynamic(gauss_point_loop_phase,cvar)
612 CALL tau_phase_start(gauss_point_loop_phase)
615 & geometric_interp_point(field_u_variable_type)%PTR,err,error,*999)
617 & materials_interp_point(field_u_variable_type)%PTR,err,error,*999)
619 & fibre_interp_point(field_u_variable_type)%PTR,err,error,*999)
621 CALL field_interpolated_point_metrics_calculate(geometricbasis%NUMBER_OF_XI,geometricinterppointmetrics, &
626 rwg=geometricinterppointmetrics%JACOBIAN*quadraturescheme%GAUSS_WEIGHTS(ng)
629 conductivitymaterial=0.0_dp
630 IF(numberofdimensions==2)
THEN 631 conductivitymaterial(1,1)=equations%INTERPOLATION%MATERIALS_INTERP_POINT(field_u_variable_type)%PTR%VALUES(1,1)
632 conductivitymaterial(2,2)=equations%INTERPOLATION%MATERIALS_INTERP_POINT(field_u_variable_type)%PTR%VALUES(2,1)
633 conductivitymaterial(1,2)=equations%INTERPOLATION%MATERIALS_INTERP_POINT(field_u_variable_type)%PTR%VALUES(3,1)
634 conductivitymaterial(2,1)=conductivitymaterial(1,2)
636 conductivitymaterial(1,1)=equations%INTERPOLATION%MATERIALS_INTERP_POINT(field_u_variable_type)%PTR%VALUES(1,1)
637 conductivitymaterial(2,2)=equations%INTERPOLATION%MATERIALS_INTERP_POINT(field_u_variable_type)%PTR%VALUES(2,1)
638 conductivitymaterial(3,3)=equations%INTERPOLATION%MATERIALS_INTERP_POINT(field_u_variable_type)%PTR%VALUES(3,1)
639 conductivitymaterial(1,2)=equations%INTERPOLATION%MATERIALS_INTERP_POINT(field_u_variable_type)%PTR%VALUES(4,1)
640 conductivitymaterial(2,1)=conductivitymaterial(1,2)
641 conductivitymaterial(2,3)=equations%INTERPOLATION%MATERIALS_INTERP_POINT(field_u_variable_type)%PTR%VALUES(5,1)
642 conductivitymaterial(3,2)=conductivitymaterial(2,3)
643 conductivitymaterial(1,3)=equations%INTERPOLATION%MATERIALS_INTERP_POINT(field_u_variable_type)%PTR%VALUES(6,1)
644 conductivitymaterial(3,1)=conductivitymaterial(1,3)
653 & dnudx(1:numberofdimensions,1:numberofdimensions),dxdnu(1:numberofdimensions,1:numberofdimensions), &
654 & dnudxi(1:numberofdimensions,1:numberofdimensions),dxidnu(1:numberofdimensions,1:numberofdimensions), &
657 conductivitytemp=0.0_rp
659 CALL matrix_product(dnudxi(1:numberofdimensions,1:numberofdimensions), &
660 & conductivitymaterial(1:numberofdimensions,1:numberofdimensions), &
661 & conductivitytemp(1:numberofdimensions,1:numberofdimensions),err,error,*999)
662 CALL matrix_product(conductivitytemp(1:numberofdimensions,1:numberofdimensions), &
663 & dxidnu(1:numberofdimensions,1:numberofdimensions), &
664 & conductivity(1:numberofdimensions,1:numberofdimensions),err,error,*999)
668 DO mh=1,fieldvariable%NUMBER_OF_COMPONENTS
670 DO ms=1,dependentbasis%NUMBER_OF_ELEMENT_PARAMETERS
674 IF(equationsmatrix%UPDATE_MATRIX)
THEN 675 DO nh=1,fieldvariable%NUMBER_OF_COMPONENTS
677 DO ns=1,dependentbasis%NUMBER_OF_ELEMENT_PARAMETERS
680 DO ni=1,dependentbasis%NUMBER_OF_XI
686 DO i=1,dependentbasis%NUMBER_OF_XI
687 DO k=1,dependentbasis%NUMBER_OF_XI
688 DO h=1,dependentbasis%NUMBER_OF_XI
689 sum=sum+conductivity(i,k)*pgnsi(k)*pgmsi(h)*geometricinterppointmetrics%GU(i,h)
694 equationsmatrix%ELEMENT_MATRIX%MATRIX(mhs,nhs)=equationsmatrix%ELEMENT_MATRIX%MATRIX(mhs,nhs)+sum*rwg
700 IF(rhsvector%UPDATE_VECTOR) rhsvector%ELEMENT_VECTOR%VECTOR(mhs)=0.0_dp
705 CALL tau_phase_stop(gauss_point_loop_phase)
710 IF(dependentfield%SCALINGS%SCALING_TYPE/=field_no_scaling)
THEN 711 CALL field_interpolationparametersscalefactorselementget(elementnumber,equations%INTERPOLATION% &
712 & dependent_interp_parameters(fieldvartype)%PTR,err,error,*999)
714 DO mh=1,fieldvariable%NUMBER_OF_COMPONENTS
716 DO ms=1,dependentbasis%NUMBER_OF_ELEMENT_PARAMETERS
719 IF(equationsmatrix%UPDATE_MATRIX)
THEN 721 DO nh=1,fieldvariable%NUMBER_OF_COMPONENTS
722 DO ns=1,dependentbasis%NUMBER_OF_ELEMENT_PARAMETERS
724 equationsmatrix%ELEMENT_MATRIX%MATRIX(mhs,nhs)=equationsmatrix%ELEMENT_MATRIX%MATRIX(mhs,nhs)* &
725 & equations%INTERPOLATION%DEPENDENT_INTERP_PARAMETERS(fieldvartype)%PTR%SCALE_FACTORS(ms,mh)* &
726 & equations%INTERPOLATION%DEPENDENT_INTERP_PARAMETERS(fieldvartype)%PTR%SCALE_FACTORS(ns,nh)
730 IF(rhsvector%UPDATE_VECTOR) rhsvector%ELEMENT_VECTOR%VECTOR(mhs)=rhsvector%ELEMENT_VECTOR%VECTOR(mhs)* &
731 & equations%INTERPOLATION%DEPENDENT_INTERP_PARAMETERS(fieldvartype)%PTR%SCALE_FACTORS(ms,mh)
739 dependentfield=>equations%INTERPOLATION%DEPENDENT_FIELD
740 geometricfield=>equations%INTERPOLATION%GEOMETRIC_FIELD
741 equationsmatrices=>equations%EQUATIONS_MATRICES
742 linearmatrices=>equationsmatrices%LINEAR_MATRICES
743 equationsmatrix=>linearmatrices%MATRICES(1)%PTR
744 rhsvector=>equationsmatrices%RHS_VECTOR
745 equationsmapping=>equations%EQUATIONS_MAPPING
746 linearmapping=>equationsmapping%LINEAR_MAPPING
747 fieldvariable=>linearmapping%EQUATIONS_MATRIX_TO_VAR_MAPS(1)%VARIABLE
748 fieldvartype=fieldvariable%VARIABLE_TYPE
749 dependentbasis=>dependentfield%DECOMPOSITION%DOMAIN(dependentfield%DECOMPOSITION%MESH_COMPONENT_NUMBER)%PTR% &
750 & topology%ELEMENTS%ELEMENTS(elementnumber)%BASIS
751 geometricbasis=>geometricfield%DECOMPOSITION%DOMAIN(geometricfield%DECOMPOSITION%MESH_COMPONENT_NUMBER)%PTR% &
752 & topology%ELEMENTS%ELEMENTS(elementnumber)%BASIS
754 CALL field_interpolation_parameters_element_get(field_values_set_type,elementnumber,equations%INTERPOLATION% &
755 & geometric_interp_parameters(field_u_variable_type)%PTR,err,error,*999)
756 CALL field_interpolation_parameters_element_get(field_values_set_type,elementnumber,equations%INTERPOLATION% &
757 & independent_interp_parameters(field_u_variable_type)%PTR,err,error,*999)
759 DO ng=1,quadraturescheme%NUMBER_OF_GAUSS
761 & geometric_interp_point(field_u_variable_type)%PTR,err,error,*999)
762 CALL field_interpolated_point_metrics_calculate(geometricbasis%NUMBER_OF_XI,equations%INTERPOLATION% &
763 & geometric_interp_point_metrics(field_u_variable_type)%PTR,err,error,*999)
765 & independent_interp_point(field_u_variable_type)%PTR,err,error,*999)
768 rwg=equations%INTERPOLATION%GEOMETRIC_INTERP_POINT_METRICS(field_u_variable_type)%PTR%JACOBIAN* &
769 & quadraturescheme%GAUSS_WEIGHTS(ng)
771 kvalue(1)=equations%INTERPOLATION%INDEPENDENT_INTERP_POINT(field_u_variable_type)%PTR%VALUES(1,
no_part_deriv)
772 kvalue(2)=equations%INTERPOLATION%INDEPENDENT_INTERP_POINT(field_u_variable_type)%PTR%VALUES(2,
no_part_deriv)
773 IF(fieldvariable%NUMBER_OF_COMPONENTS==3)
THEN 774 kvalue(3)=equations%INTERPOLATION%INDEPENDENT_INTERP_POINT(field_u_variable_type)%PTR%VALUES(3,
no_part_deriv)
780 DO mh=1,fieldvariable%NUMBER_OF_COMPONENTS
783 DO ms=1,dependentbasis%NUMBER_OF_ELEMENT_PARAMETERS
786 IF(equationsmatrix%UPDATE_MATRIX)
THEN 788 DO nh=1,fieldvariable%NUMBER_OF_COMPONENTS
789 DO ns=1,dependentbasis%NUMBER_OF_ELEMENT_PARAMETERS
791 DO ni=1,dependentbasis%NUMBER_OF_XI
798 DO mi=1,dependentbasis%NUMBER_OF_XI
799 DO ni=1,dependentbasis%NUMBER_OF_XI
800 sum=sum+pgmsi(mi)*pgnsi(ni)*equations%INTERPOLATION% &
801 & geometric_interp_point_metrics(field_u_variable_type)%PTR%GU(mi,ni)*kvalue(mh)
804 equationsmatrix%ELEMENT_MATRIX%MATRIX(mhs,nhs)=equationsmatrix%ELEMENT_MATRIX%MATRIX(mhs,nhs)+sum*rwg
810 IF(rhsvector%UPDATE_VECTOR) rhsvector%ELEMENT_VECTOR%VECTOR(mhs)=0.0_dp
816 IF(dependentfield%SCALINGS%SCALING_TYPE/=field_no_scaling)
THEN 817 CALL field_interpolationparametersscalefactorselementget(elementnumber,equations%INTERPOLATION% &
818 & dependent_interp_parameters(fieldvartype)%PTR,err,error,*999)
820 DO mh=1,fieldvariable%NUMBER_OF_COMPONENTS
822 DO ms=1,dependentbasis%NUMBER_OF_ELEMENT_PARAMETERS
825 IF(equationsmatrix%UPDATE_MATRIX)
THEN 827 DO nh=1,fieldvariable%NUMBER_OF_COMPONENTS
828 DO ns=1,dependentbasis%NUMBER_OF_ELEMENT_PARAMETERS
830 equationsmatrix%ELEMENT_MATRIX%MATRIX(mhs,nhs)=equationsmatrix%ELEMENT_MATRIX%MATRIX(mhs,nhs)* &
831 & equations%INTERPOLATION%DEPENDENT_INTERP_PARAMETERS(fieldvartype)%PTR%SCALE_FACTORS(ms,mh)* &
832 & equations%INTERPOLATION%DEPENDENT_INTERP_PARAMETERS(fieldvartype)%PTR%SCALE_FACTORS(ns,nh)
836 IF(rhsvector%UPDATE_VECTOR) rhsvector%ELEMENT_VECTOR%VECTOR(mhs)=rhsvector%ELEMENT_VECTOR%VECTOR(mhs)* &
837 & equations%INTERPOLATION%DEPENDENT_INTERP_PARAMETERS(fieldvartype)%PTR%SCALE_FACTORS(ms,mh)
843 localerror=
"Equations set subtype "//
trim(
number_to_vstring(equationsset%SPECIFICATION(3),
"*",err,error))// &
844 &
" is not valid for a Laplace equation type of a classical field equations set class." 845 CALL flagerror(localerror,err,error,*999)
849 CALL flagerror(
"Equations set equations is not associated.",err,error,*999)
852 CALL flagerror(
"Equations set is not associated.",err,error,*999)
855 exits(
"LaplaceEquation_FiniteElementCalculate")
857 999 errorsexits(
"LaplaceEquation_FiniteElementCalculate",err,error)
871 INTEGER(INTG),
INTENT(OUT) :: ERR
874 INTEGER(INTG) :: GEOMETRIC_MESH_COMPONENT,GEOMETRIC_SCALING_TYPE,GEOMETRIC_COMPONENT_NUMBER,MATERIAL_FIELD_NUMBER_OF_COMPONENTS
875 INTEGER(INTG) :: DEPENDENT_FIELD_NUMBER_OF_COMPONENTS,NUMBER_OF_DIMENSIONS,I,MATERIAL_FIELD_NUMBER_OF_VARIABLES
876 INTEGER(INTG) :: INDEPENDENT_FIELD_NUMBER_OF_COMPONENTS,INDEPENDENT_FIELD_NUMBER_OF_VARIABLES
878 TYPE(
field_type),
POINTER :: ANALYTIC_FIELD,DEPENDENT_FIELD,GEOMETRIC_FIELD
885 enters(
"LAPLACE_EQUATION_EQUATION_SET_MOVING_MESH_SETUP",err,error,*999)
888 NULLIFY(equations_mapping)
889 NULLIFY(equations_matrices)
890 NULLIFY(geometric_decomposition)
892 IF(
ASSOCIATED(equations_set))
THEN 893 IF(.NOT.
ALLOCATED(equations_set%SPECIFICATION))
THEN 894 CALL flagerror(
"Equations set specification is not allocated.",err,error,*999)
895 ELSE IF(
SIZE(equations_set%SPECIFICATION,1)/=3)
THEN 896 CALL flagerror(
"Equations set specification must have three entries for a Laplace type equations set.", &
900 SELECT CASE(equations_set_setup%SETUP_TYPE)
902 SELECT CASE(equations_set_setup%ACTION_TYPE)
908 local_error=
"The action type of "//
trim(
number_to_vstring(equations_set_setup%ACTION_TYPE,
"*",err,error))// &
910 &
" is invalid for a moving mesh Laplace equation." 911 CALL flagerror(local_error,err,error,*999)
916 SELECT CASE(equations_set_setup%ACTION_TYPE)
918 IF(equations_set%DEPENDENT%DEPENDENT_FIELD_AUTO_CREATED)
THEN 920 CALL field_create_start(equations_set_setup%FIELD_USER_NUMBER,equations_set%REGION,equations_set%DEPENDENT% &
921 & dependent_field,err,error,*999)
922 CALL field_label_set(equations_set%DEPENDENT%DEPENDENT_FIELD,
"Dependent Field",err,error,*999)
923 CALL field_type_set_and_lock(equations_set%DEPENDENT%DEPENDENT_FIELD,field_general_type,err,error,*999)
924 CALL field_dependent_type_set_and_lock(equations_set%DEPENDENT%DEPENDENT_FIELD,field_dependent_type,err,error,*999)
925 CALL field_mesh_decomposition_get(equations_set%GEOMETRY%GEOMETRIC_FIELD,geometric_decomposition,err,error,*999)
926 CALL field_mesh_decomposition_set_and_lock(equations_set%DEPENDENT%DEPENDENT_FIELD,geometric_decomposition, &
928 CALL field_geometric_field_set_and_lock(equations_set%DEPENDENT%DEPENDENT_FIELD,equations_set%GEOMETRY% &
929 & geometric_field,err,error,*999)
932 CALL field_number_of_variables_set_and_lock(equations_set%DEPENDENT%DEPENDENT_FIELD,2,err,error,*999)
933 CALL field_variable_types_set_and_lock(equations_set%DEPENDENT%DEPENDENT_FIELD,[field_u_variable_type, &
934 & field_deludeln_variable_type],err,error,*999)
935 CALL field_variable_label_set(equations_set%DEPENDENT%DEPENDENT_FIELD,field_u_variable_type,
"Phi",err,error,*999)
936 CALL field_variable_label_set(equations_set%DEPENDENT%DEPENDENT_FIELD,field_deludeln_variable_type,
"del Phi/del n", &
939 CALL field_dimension_set_and_lock(equations_set%DEPENDENT%DEPENDENT_FIELD,field_u_variable_type, &
940 & field_vector_dimension_type,err,error,*999)
941 CALL field_dimension_set_and_lock(equations_set%DEPENDENT%DEPENDENT_FIELD,field_deludeln_variable_type, &
942 & field_vector_dimension_type,err,error,*999)
943 CALL field_data_type_set_and_lock(equations_set%DEPENDENT%DEPENDENT_FIELD,field_u_variable_type, &
944 & field_dp_type,err,error,*999)
945 CALL field_data_type_set_and_lock(equations_set%DEPENDENT%DEPENDENT_FIELD,field_deludeln_variable_type, &
946 & field_dp_type,err,error,*999)
947 CALL field_number_of_components_get(equations_set%GEOMETRY%GEOMETRIC_FIELD,field_u_variable_type, &
948 & number_of_dimensions,err,error,*999)
951 dependent_field_number_of_components=number_of_dimensions
952 CALL field_number_of_components_set_and_lock(equations_set%DEPENDENT%DEPENDENT_FIELD,field_u_variable_type, &
953 & dependent_field_number_of_components,err,error,*999)
954 CALL field_number_of_components_set_and_lock(equations_set%DEPENDENT%DEPENDENT_FIELD,field_deludeln_variable_type, &
955 & dependent_field_number_of_components,err,error,*999)
957 DO i=1,dependent_field_number_of_components
959 CALL field_component_mesh_component_get(equations_set%GEOMETRY%GEOMETRIC_FIELD,field_u_variable_type,i, &
960 & geometric_mesh_component,err,error,*999)
961 CALL field_component_mesh_component_set(equations_set%DEPENDENT%DEPENDENT_FIELD,field_u_variable_type,i, &
962 & geometric_mesh_component,err,error,*999)
963 CALL field_component_mesh_component_set(equations_set%DEPENDENT%DEPENDENT_FIELD,field_deludeln_variable_type,i, &
964 & geometric_mesh_component,err,error,*999)
968 SELECT CASE(equations_set%SOLUTION_METHOD)
971 DO i=1,dependent_field_number_of_components
972 CALL field_component_interpolation_set_and_lock(equations_set%DEPENDENT%DEPENDENT_FIELD, &
973 & field_u_variable_type,i,field_node_based_interpolation,err,error,*999)
974 CALL field_component_interpolation_set_and_lock(equations_set%DEPENDENT%DEPENDENT_FIELD, &
975 & field_deludeln_variable_type,i,field_node_based_interpolation,err,error,*999)
977 CALL field_scaling_type_get(equations_set%GEOMETRY%GEOMETRIC_FIELD,geometric_scaling_type, &
979 CALL field_scaling_type_set(equations_set%DEPENDENT%DEPENDENT_FIELD,geometric_scaling_type, &
983 CALL flagerror(
"Not implemented.",err,error,*999)
985 CALL flagerror(
"Not implemented.",err,error,*999)
987 CALL flagerror(
"Not implemented.",err,error,*999)
989 CALL flagerror(
"Not implemented.",err,error,*999)
991 CALL flagerror(
"Not implemented.",err,error,*999)
993 local_error=
"The solution method of "//
trim(
number_to_vstring(equations_set%SOLUTION_METHOD,
"*",err,error))// &
995 CALL flagerror(local_error,err,error,*999)
999 CALL field_type_check(equations_set_setup%FIELD,field_general_type,err,error,*999)
1000 CALL field_dependent_type_check(equations_set_setup%FIELD,field_dependent_type,err,error,*999)
1001 CALL field_number_of_variables_check(equations_set_setup%FIELD,2,err,error,*999)
1002 CALL field_variable_types_check(equations_set_setup%FIELD,[field_u_variable_type,field_deludeln_variable_type], &
1004 CALL field_dimension_check(equations_set_setup%FIELD,field_u_variable_type,field_vector_dimension_type, &
1006 CALL field_dimension_check(equations_set_setup%FIELD,field_deludeln_variable_type,field_vector_dimension_type, &
1008 CALL field_data_type_check(equations_set_setup%FIELD,field_u_variable_type,field_dp_type,err,error,*999)
1009 CALL field_data_type_check(equations_set_setup%FIELD,field_deludeln_variable_type,field_dp_type,err,error,*999)
1011 CALL field_number_of_components_get(equations_set%GEOMETRY%GEOMETRIC_FIELD,field_u_variable_type, &
1012 & number_of_dimensions,err,error,*999)
1014 dependent_field_number_of_components=number_of_dimensions
1015 CALL field_number_of_components_check(equations_set_setup%FIELD,field_u_variable_type, &
1016 & dependent_field_number_of_components,err,error,*999)
1017 CALL field_number_of_components_check(equations_set_setup%FIELD,field_deludeln_variable_type, &
1018 & dependent_field_number_of_components,err,error,*999)
1019 SELECT CASE(equations_set%SOLUTION_METHOD)
1021 CALL field_component_interpolation_check(equations_set_setup%FIELD,field_u_variable_type,1, &
1022 & field_node_based_interpolation,err,error,*999)
1023 CALL field_component_interpolation_check(equations_set_setup%FIELD,field_deludeln_variable_type,1, &
1024 & field_node_based_interpolation,err,error,*999)
1026 CALL flagerror(
"Not implemented.",err,error,*999)
1028 CALL flagerror(
"Not implemented.",err,error,*999)
1030 CALL flagerror(
"Not implemented.",err,error,*999)
1032 CALL flagerror(
"Not implemented.",err,error,*999)
1034 CALL flagerror(
"Not implemented.",err,error,*999)
1036 local_error=
"The solution method of "//
trim(
number_to_vstring(equations_set%SOLUTION_METHOD,
"*",err,error))// &
1038 CALL flagerror(local_error,err,error,*999)
1042 IF(equations_set%DEPENDENT%DEPENDENT_FIELD_AUTO_CREATED)
THEN 1043 CALL field_create_finish(equations_set%DEPENDENT%DEPENDENT_FIELD,err,error,*999)
1046 local_error=
"The action type of "//
trim(
number_to_vstring(equations_set_setup%ACTION_TYPE,
"*",err,error))// &
1047 &
" for a setup type of "//
trim(
number_to_vstring(equations_set_setup%SETUP_TYPE,
"*",err,error))// &
1048 &
" is invalid for a moving mesh Laplace equation" 1049 CALL flagerror(local_error,err,error,*999)
1053 SELECT CASE(equations_set_setup%ACTION_TYPE)
1056 IF(equations_set%INDEPENDENT%INDEPENDENT_FIELD_AUTO_CREATED)
THEN 1059 CALL field_create_start(equations_set_setup%FIELD_USER_NUMBER,equations_set%REGION, &
1060 & equations_set%INDEPENDENT%INDEPENDENT_FIELD,err,error,*999)
1062 CALL field_type_set_and_lock(equations_set%INDEPENDENT%INDEPENDENT_FIELD,field_general_type,err,error,*999)
1064 CALL field_dependent_type_set_and_lock(equations_set%INDEPENDENT%INDEPENDENT_FIELD, &
1065 & field_independent_type,err,error,*999)
1067 CALL field_mesh_decomposition_get(equations_set%GEOMETRY%GEOMETRIC_FIELD,geometric_decomposition, &
1070 CALL field_mesh_decomposition_set_and_lock(equations_set%INDEPENDENT%INDEPENDENT_FIELD, &
1071 & geometric_decomposition,err,error,*999)
1073 CALL field_geometric_field_set_and_lock(equations_set%INDEPENDENT%INDEPENDENT_FIELD,equations_set% &
1074 & geometry%GEOMETRIC_FIELD,err,error,*999)
1076 independent_field_number_of_variables=1
1077 CALL field_number_of_variables_set_and_lock(equations_set%INDEPENDENT%INDEPENDENT_FIELD, &
1078 & independent_field_number_of_variables,err,error,*999)
1079 CALL field_variable_types_set_and_lock(equations_set%INDEPENDENT%INDEPENDENT_FIELD, &
1080 & [field_u_variable_type],err,error,*999)
1081 CALL field_dimension_set_and_lock(equations_set%INDEPENDENT%INDEPENDENT_FIELD,field_u_variable_type, &
1082 & field_vector_dimension_type,err,error,*999)
1083 CALL field_data_type_set_and_lock(equations_set%INDEPENDENT%INDEPENDENT_FIELD,field_u_variable_type, &
1084 & field_dp_type,err,error,*999)
1085 CALL field_number_of_components_get(equations_set%GEOMETRY%GEOMETRIC_FIELD,field_u_variable_type, &
1086 & number_of_dimensions,err,error,*999)
1088 independent_field_number_of_components=number_of_dimensions
1089 CALL field_number_of_components_set_and_lock(equations_set%INDEPENDENT%INDEPENDENT_FIELD, &
1090 & field_u_variable_type,independent_field_number_of_components,err,error,*999)
1091 CALL field_component_mesh_component_get(equations_set%GEOMETRY%GEOMETRIC_FIELD,field_u_variable_type, &
1092 & 1,geometric_mesh_component,err,error,*999)
1094 DO i=1,independent_field_number_of_components
1095 CALL field_component_mesh_component_set(equations_set%INDEPENDENT%INDEPENDENT_FIELD, &
1096 & field_u_variable_type,i,geometric_mesh_component,err,error,*999)
1100 CALL field_type_check(equations_set_setup%FIELD,field_general_type,err,error,*999)
1101 CALL field_dependent_type_check(equations_set_setup%FIELD,field_independent_type,err,error,*999)
1102 CALL field_number_of_variables_check(equations_set_setup%FIELD,1,err,error,*999)
1103 CALL field_variable_types_check(equations_set_setup%FIELD,[field_u_variable_type],err,error,*999)
1104 CALL field_dimension_check(equations_set_setup%FIELD,field_u_variable_type,field_vector_dimension_type, &
1106 CALL field_data_type_check(equations_set_setup%FIELD,field_u_variable_type,field_dp_type,err,error,*999)
1107 CALL field_number_of_components_get(equations_set%GEOMETRY%GEOMETRIC_FIELD,field_u_variable_type, &
1108 & number_of_dimensions,err,error,*999)
1110 independent_field_number_of_components=number_of_dimensions
1111 CALL field_number_of_components_check(equations_set_setup%FIELD,field_u_variable_type, &
1112 & independent_field_number_of_components,err,error,*999)
1116 IF(equations_set%INDEPENDENT%INDEPENDENT_FIELD_AUTO_CREATED)
THEN 1117 CALL field_create_finish(equations_set%INDEPENDENT%INDEPENDENT_FIELD,err,error,*999)
1119 CALL field_parameter_set_create(equations_set%INDEPENDENT%INDEPENDENT_FIELD,field_u_variable_type, &
1120 & field_boundary_set_type,err,error,*999)
1122 local_error=
"The action type of "//
trim(
number_to_vstring(equations_set_setup%ACTION_TYPE,
"*",err,error))// &
1123 &
" for a setup type of "//
trim(
number_to_vstring(equations_set_setup%SETUP_TYPE,
"*",err,error))// &
1124 &
" is invalid for a standard Laplace" 1125 CALL flagerror(local_error,err,error,*999)
1129 SELECT CASE(equations_set_setup%ACTION_TYPE)
1132 material_field_number_of_variables=1
1133 material_field_number_of_components=1
1135 equations_materials=>equations_set%MATERIALS
1136 IF(
ASSOCIATED(equations_materials))
THEN 1137 IF(equations_materials%MATERIALS_FIELD_AUTO_CREATED)
THEN 1140 CALL field_create_start(equations_set_setup%FIELD_USER_NUMBER,equations_set%REGION,equations_set% &
1141 & materials%MATERIALS_FIELD,err,error,*999)
1142 CALL field_type_set_and_lock(equations_materials%MATERIALS_FIELD,field_material_type,err,error,*999)
1143 CALL field_dependent_type_set_and_lock(equations_materials%MATERIALS_FIELD,field_independent_type, &
1145 CALL field_mesh_decomposition_get(equations_set%GEOMETRY%GEOMETRIC_FIELD,geometric_decomposition, &
1148 CALL field_mesh_decomposition_set_and_lock(equations_set%MATERIALS%MATERIALS_FIELD, &
1149 & geometric_decomposition,err,error,*999)
1151 CALL field_geometric_field_set_and_lock(equations_materials%MATERIALS_FIELD,equations_set%GEOMETRY% &
1152 & geometric_field,err,error,*999)
1153 CALL field_number_of_variables_set(equations_materials%MATERIALS_FIELD, &
1154 & material_field_number_of_variables,err,error,*999)
1155 CALL field_variable_types_set_and_lock(equations_materials%MATERIALS_FIELD,[field_u_variable_type], &
1157 CALL field_dimension_set_and_lock(equations_materials%MATERIALS_FIELD,field_u_variable_type, &
1158 & field_vector_dimension_type,err,error,*999)
1159 CALL field_data_type_set_and_lock(equations_materials%MATERIALS_FIELD,field_u_variable_type, &
1160 & field_dp_type,err,error,*999)
1161 CALL field_number_of_components_set_and_lock(equations_materials%MATERIALS_FIELD,field_u_variable_type, &
1162 & material_field_number_of_components,err,error,*999)
1163 CALL field_component_mesh_component_get(equations_set%GEOMETRY%GEOMETRIC_FIELD,field_u_variable_type, &
1164 & 1,geometric_component_number,err,error,*999)
1165 CALL field_component_mesh_component_set(equations_materials%MATERIALS_FIELD,field_u_variable_type, &
1166 & 1,geometric_component_number,err,error,*999)
1167 CALL field_component_interpolation_set(equations_materials%MATERIALS_FIELD,field_u_variable_type, &
1168 & 1,field_constant_interpolation,err,error,*999)
1170 CALL field_scaling_type_get(equations_set%GEOMETRY%GEOMETRIC_FIELD,geometric_scaling_type,err,error,*999)
1171 CALL field_scaling_type_set(equations_materials%MATERIALS_FIELD,geometric_scaling_type,err,error,*999)
1174 CALL field_type_check(equations_set_setup%FIELD,field_material_type,err,error,*999)
1175 CALL field_dependent_type_check(equations_set_setup%FIELD,field_independent_type,err,error,*999)
1176 CALL field_number_of_variables_check(equations_set_setup%FIELD,1,err,error,*999)
1177 CALL field_variable_types_check(equations_set_setup%FIELD,[field_u_variable_type],err,error,*999)
1178 CALL field_dimension_check(equations_set_setup%FIELD,field_u_variable_type,field_vector_dimension_type, &
1180 CALL field_data_type_check(equations_set_setup%FIELD,field_u_variable_type,field_dp_type,err,error,*999)
1181 CALL field_number_of_components_get(equations_set%GEOMETRY%GEOMETRIC_FIELD,field_u_variable_type, &
1182 & number_of_dimensions,err,error,*999)
1183 CALL field_number_of_components_check(equations_set_setup%FIELD,field_u_variable_type,1,err,error,*999)
1186 CALL flagerror(
"Equations set materials is not associated.",err,error,*999)
1189 equations_materials=>equations_set%MATERIALS
1190 IF(
ASSOCIATED(equations_materials))
THEN 1191 IF(equations_materials%MATERIALS_FIELD_AUTO_CREATED)
THEN 1193 CALL field_create_finish(equations_materials%MATERIALS_FIELD,err,error,*999)
1195 CALL field_component_values_initialise(equations_materials%MATERIALS_FIELD,field_u_variable_type, &
1196 & field_values_set_type,1,1.0_dp,err,error,*999)
1199 CALL flagerror(
"Equations set materials is not associated.",err,error,*999)
1202 local_error=
"The action type of "//
trim(
number_to_vstring(equations_set_setup%ACTION_TYPE,
"*",err,error))// &
1203 &
" for a setup type of "//
trim(
number_to_vstring(equations_set_setup%SETUP_TYPE,
"*",err,error))// &
1204 &
" is invalid for a moving mesh Laplace equation." 1205 CALL flagerror(local_error,err,error,*999)
1208 SELECT CASE(equations_set_setup%ACTION_TYPE)
1214 local_error=
"The action type of "//
trim(
number_to_vstring(equations_set_setup%ACTION_TYPE,
"*",err,error))// &
1215 &
" for a setup type of "//
trim(
number_to_vstring(equations_set_setup%SETUP_TYPE,
"*",err,error))// &
1216 &
" is invalid for a moving mesh Laplace equation." 1217 CALL flagerror(local_error,err,error,*999)
1220 SELECT CASE(equations_set_setup%ACTION_TYPE)
1222 IF(equations_set%DEPENDENT%DEPENDENT_FINISHED)
THEN 1223 dependent_field=>equations_set%DEPENDENT%DEPENDENT_FIELD
1224 IF(
ASSOCIATED(dependent_field))
THEN 1225 geometric_field=>equations_set%GEOMETRY%GEOMETRIC_FIELD
1226 IF(
ASSOCIATED(geometric_field))
THEN 1227 CALL field_number_of_components_get(geometric_field,field_u_variable_type,number_of_dimensions,err,error,*999)
1228 SELECT CASE(equations_set_setup%ANALYTIC_FUNCTION_TYPE)
1231 IF(number_of_dimensions/=2)
THEN 1232 local_error=
"The number of geometric dimensions of "// &
1234 &
" is invalid. The analytic function type of "// &
1236 &
" requires that there be 2 geometric dimensions." 1237 CALL flagerror(local_error,err,error,*999)
1244 IF(number_of_dimensions/=2)
THEN 1245 local_error=
"The number of geometric dimensions of "// &
1247 &
" is invalid. The analytic function type of "// &
1249 &
" requires that there be 2 geometric dimensions." 1250 CALL flagerror(local_error,err,error,*999)
1257 IF(number_of_dimensions/=3)
THEN 1258 local_error=
"The number of geometric dimensions of "// &
1260 &
" is invalid. The analytic function type of "// &
1262 &
" requires that there be 3 geometric dimensions." 1263 CALL flagerror(local_error,err,error,*999)
1270 IF(number_of_dimensions/=3)
THEN 1271 local_error=
"The number of geometric dimensions of "// &
1273 &
" is invalid. The analytic function type of "// &
1275 &
" requires that there be 3 geometric dimensions." 1276 CALL flagerror(local_error,err,error,*999)
1282 local_error=
"The specified analytic function type of "// &
1284 &
" is invalid for a moving mesh Laplace equation." 1285 CALL flagerror(local_error,err,error,*999)
1288 CALL flagerror(
"Equations set geometric field is not associated.",err,error,*999)
1291 CALL flagerror(
"Equations set dependent field is not associated.",err,error,*999)
1294 CALL flagerror(
"Equations set dependent field has not been finished.",err,error,*999)
1297 IF(
ASSOCIATED(equations_set%ANALYTIC))
THEN 1298 analytic_field=>equations_set%ANALYTIC%ANALYTIC_FIELD
1299 IF(
ASSOCIATED(analytic_field))
THEN 1300 IF(equations_set%ANALYTIC%ANALYTIC_FIELD_AUTO_CREATED)
THEN 1301 CALL field_create_finish(equations_set%DEPENDENT%DEPENDENT_FIELD,err,error,*999)
1305 CALL flagerror(
"Equations set analytic is not associated.",err,error,*999)
1308 local_error=
"The action type of "//
trim(
number_to_vstring(equations_set_setup%ACTION_TYPE,
"*",err,error))// &
1309 &
" for a setup type of "//
trim(
number_to_vstring(equations_set_setup%SETUP_TYPE,
"*",err,error))// &
1310 &
" is invalid for a moving mesh Laplace equation." 1311 CALL flagerror(local_error,err,error,*999)
1314 SELECT CASE(equations_set_setup%ACTION_TYPE)
1316 IF(equations_set%DEPENDENT%DEPENDENT_FINISHED)
THEN 1321 CALL flagerror(
"Equations set dependent field has not been finished.",err,error,*999)
1324 SELECT CASE(equations_set%SOLUTION_METHOD)
1338 SELECT CASE(equations%SPARSITY_TYPE)
1348 local_error=
"The equations matrices sparsity type of "// &
1350 CALL flagerror(local_error,err,error,*999)
1354 CALL flagerror(
"Not implemented.",err,error,*999)
1356 CALL flagerror(
"Not implemented.",err,error,*999)
1358 CALL flagerror(
"Not implemented.",err,error,*999)
1360 CALL flagerror(
"Not implemented.",err,error,*999)
1362 CALL flagerror(
"Not implemented.",err,error,*999)
1364 local_error=
"The solution method of "//
trim(
number_to_vstring(equations_set%SOLUTION_METHOD,
"*",err,error))// &
1366 CALL flagerror(local_error,err,error,*999)
1369 local_error=
"The action type of "//
trim(
number_to_vstring(equations_set_setup%ACTION_TYPE,
"*",err,error))// &
1370 &
" for a setup type of "//
trim(
number_to_vstring(equations_set_setup%SETUP_TYPE,
"*",err,error))// &
1371 &
" is invalid for a moving mesh Laplace equation." 1372 CALL flagerror(local_error,err,error,*999)
1375 local_error=
"The setup type of "//
trim(
number_to_vstring(equations_set_setup%SETUP_TYPE,
"*",err,error))// &
1376 &
" is invalid for a moving mesh Laplace equation." 1377 CALL flagerror(local_error,err,error,*999)
1380 local_error=
"The equations set subtype of "//
trim(
number_to_vstring(equations_set%SPECIFICATION(3),
"*",err,error))// &
1381 &
" does not equal a moving mesh Laplace equation subtype." 1382 CALL flagerror(local_error,err,error,*999)
1385 CALL flagerror(
"Equations set is not associated.",err,error,*999)
1388 exits(
"Laplace_EquationsSetMovingMeshSetup")
1390 999 errorsexits(
"Laplace_EquationsSetMovingMeshSetup",err,error)
1404 INTEGER(INTG),
INTENT(OUT) :: ERR
1409 enters(
"LAPLACE_EQUATION_EQUATIONS_SET_SETUP",err,error,*999)
1411 IF(
ASSOCIATED(equations_set))
THEN 1412 IF(.NOT.
ALLOCATED(equations_set%SPECIFICATION))
THEN 1413 CALL flagerror(
"Equations set specification is not allocated.",err,error,*999)
1414 ELSE IF(
SIZE(equations_set%SPECIFICATION,1)/=3)
THEN 1415 CALL flagerror(
"Equations set specification must have three entries for a Laplace type equations set.", &
1418 SELECT CASE(equations_set%SPECIFICATION(3))
1426 local_error=
"Equations set subtype "//
trim(
number_to_vstring(equations_set%SPECIFICATION(3),
"*",err,error))// &
1427 &
" is not valid for a Laplace equation type of a classical field equation set class." 1428 CALL flagerror(local_error,err,error,*999)
1431 CALL flagerror(
"Equations set is not associated.",err,error,*999)
1434 exits(
"LAPLACE_EQUATION_EQUATIONS_SET_SETUP")
1436 999 errorsexits(
"LAPLACE_EQUATION_EQUATIONS_SET_SETUP",err,error)
1449 INTEGER(INTG),
INTENT(IN) :: SOLUTION_METHOD
1450 INTEGER(INTG),
INTENT(OUT) :: ERR
1455 enters(
"Laplace_EquationsSetSolutionMethodSet",err,error,*999)
1457 IF(
ASSOCIATED(equations_set))
THEN 1458 IF(.NOT.
ALLOCATED(equations_set%SPECIFICATION))
THEN 1459 CALL flagerror(
"Equations set specification is not allocated.",err,error,*999)
1460 ELSE IF(
SIZE(equations_set%SPECIFICATION,1)/=3)
THEN 1461 CALL flagerror(
"Equations set specification must have three entries for a Laplace type equations set.", &
1464 SELECT CASE(equations_set%SPECIFICATION(3))
1466 SELECT CASE(solution_method)
1470 CALL flagerror(
"Not implemented.",err,error,*999)
1472 CALL flagerror(
"Not implemented.",err,error,*999)
1474 CALL flagerror(
"Not implemented.",err,error,*999)
1476 CALL flagerror(
"Not implemented.",err,error,*999)
1478 CALL flagerror(
"Not implemented.",err,error,*999)
1480 local_error=
"The specified solution method of "//
trim(
number_to_vstring(solution_method,
"*",err,error))//
" is invalid." 1481 CALL flagerror(local_error,err,error,*999)
1484 SELECT CASE(solution_method)
1488 CALL flagerror(
"Not implemented.",err,error,*999)
1490 CALL flagerror(
"Not implemented.",err,error,*999)
1492 CALL flagerror(
"Not implemented.",err,error,*999)
1494 CALL flagerror(
"Not implemented.",err,error,*999)
1496 CALL flagerror(
"Not implemented.",err,error,*999)
1498 local_error=
"The specified solution method of "//
trim(
number_to_vstring(solution_method,
"*",err,error))//
" is invalid." 1499 CALL flagerror(local_error,err,error,*999)
1502 SELECT CASE(solution_method)
1506 CALL flagerror(
"Not implemented.",err,error,*999)
1508 CALL flagerror(
"Not implemented.",err,error,*999)
1510 CALL flagerror(
"Not implemented.",err,error,*999)
1512 CALL flagerror(
"Not implemented.",err,error,*999)
1514 CALL flagerror(
"Not implemented.",err,error,*999)
1516 local_error=
"The specified solution method of "//
trim(
number_to_vstring(solution_method,
"*",err,error))//
" is invalid." 1517 CALL flagerror(local_error,err,error,*999)
1520 local_error=
"Equations set subtype of "//
trim(
number_to_vstring(equations_set%SPECIFICATION(3),
"*",err,error))// &
1521 &
" is not valid for a Laplace equation type of an classical field equations set class." 1522 CALL flagerror(local_error,err,error,*999)
1525 CALL flagerror(
"Equations set is not associated.",err,error,*999)
1528 exits(
"Laplace_EquationsSetSolutionMethodSet")
1530 999
errors(
"Laplace_EquationsSetSolutionMethodSet",err,error)
1531 exits(
"Laplace_EquationsSetSolutionMethodSet")
1544 INTEGER(INTG),
INTENT(IN) :: specification(:)
1545 INTEGER(INTG),
INTENT(OUT) :: err
1549 INTEGER(INTG) :: subtype
1551 enters(
"Laplace_EquationsSetSpecificationSet",err,error,*999)
1553 IF(
ASSOCIATED(equationsset))
THEN 1554 IF(
SIZE(specification,1)/=3)
THEN 1555 CALL flagerror(
"Equations set specification must have three entries for a Laplace type equations set.", &
1558 subtype=specification(3)
1559 SELECT CASE(subtype)
1565 localerror=
"The third equations set specification of "//
trim(
numbertovstring(subtype,
"*",err,error))// &
1566 &
" is not valid for a Laplace type of a classical field equations set." 1567 CALL flagerror(localerror,err,error,*999)
1570 IF(
ALLOCATED(equationsset%specification))
THEN 1571 CALL flagerror(
"Equations set specification is already allocated.",err,error,*999)
1573 ALLOCATE(equationsset%specification(3),stat=err)
1574 IF(err/=0)
CALL flagerror(
"Could not allocate equations set specification.",err,error,*999)
1578 CALL flagerror(
"Equations set is not associated.",err,error,*999)
1581 CALL exits(
"Laplace_EquationsSetSpecificationSet")
1583 999
CALL errors(
"Laplace_EquationsSetSpecificationSet",err,error)
1584 CALL exits(
"Laplace_EquationsSetSpecificationSet")
1599 INTEGER(INTG),
INTENT(OUT) :: ERR
1602 INTEGER(INTG) :: GEOMETRIC_MESH_COMPONENT,GEOMETRIC_SCALING_TYPE,NUMBER_OF_DIMENSIONS
1604 TYPE(
field_type),
POINTER :: ANALYTIC_FIELD,DEPENDENT_FIELD,GEOMETRIC_FIELD
1610 enters(
"LAPLACE_EQUATION_EQUATION_SET_STANDARD_SETUP",err,error,*999)
1613 NULLIFY(equations_mapping)
1614 NULLIFY(equations_matrices)
1615 NULLIFY(geometric_decomposition)
1617 IF(
ASSOCIATED(equations_set))
THEN 1618 IF(.NOT.
ALLOCATED(equations_set%SPECIFICATION))
THEN 1619 CALL flagerror(
"Equations set specification is not allocated.",err,error,*999)
1620 ELSE IF(
SIZE(equations_set%SPECIFICATION,1)/=3)
THEN 1621 CALL flagerror(
"Equations set specification must have three entries for a Laplace type equations set.", &
1625 SELECT CASE(equations_set_setup%SETUP_TYPE)
1627 SELECT CASE(equations_set_setup%ACTION_TYPE)
1633 local_error=
"The action type of "//
trim(
number_to_vstring(equations_set_setup%ACTION_TYPE,
"*",err,error))// &
1634 &
" for a setup type of "//
trim(
number_to_vstring(equations_set_setup%SETUP_TYPE,
"*",err,error))// &
1635 &
" is invalid for a standard Laplace equation." 1636 CALL flagerror(local_error,err,error,*999)
1641 SELECT CASE(equations_set_setup%ACTION_TYPE)
1643 IF(equations_set%DEPENDENT%DEPENDENT_FIELD_AUTO_CREATED)
THEN 1645 CALL field_create_start(equations_set_setup%FIELD_USER_NUMBER,equations_set%REGION,equations_set%DEPENDENT% &
1646 & dependent_field,err,error,*999)
1647 CALL field_label_set(equations_set%DEPENDENT%DEPENDENT_FIELD,
"Dependent Field",err,error,*999)
1648 CALL field_type_set_and_lock(equations_set%DEPENDENT%DEPENDENT_FIELD,field_general_type,err,error,*999)
1649 CALL field_dependent_type_set_and_lock(equations_set%DEPENDENT%DEPENDENT_FIELD,field_dependent_type,err,error,*999)
1650 CALL field_mesh_decomposition_get(equations_set%GEOMETRY%GEOMETRIC_FIELD,geometric_decomposition,err,error,*999)
1651 CALL field_mesh_decomposition_set_and_lock(equations_set%DEPENDENT%DEPENDENT_FIELD,geometric_decomposition, &
1653 CALL field_geometric_field_set_and_lock(equations_set%DEPENDENT%DEPENDENT_FIELD,equations_set%GEOMETRY% &
1654 & geometric_field,err,error,*999)
1655 CALL field_number_of_variables_set_and_lock(equations_set%DEPENDENT%DEPENDENT_FIELD,2,err,error,*999)
1656 CALL field_variable_types_set_and_lock(equations_set%DEPENDENT%DEPENDENT_FIELD,[field_u_variable_type, &
1657 & field_deludeln_variable_type],err,error,*999)
1658 CALL field_variable_label_set(equations_set%DEPENDENT%DEPENDENT_FIELD,field_u_variable_type,
"Phi",err,error,*999)
1659 CALL field_variable_label_set(equations_set%DEPENDENT%DEPENDENT_FIELD,field_deludeln_variable_type,
"del Phi/del n", &
1661 CALL field_dimension_set_and_lock(equations_set%DEPENDENT%DEPENDENT_FIELD,field_u_variable_type, &
1662 & field_scalar_dimension_type,err,error,*999)
1663 CALL field_dimension_set_and_lock(equations_set%DEPENDENT%DEPENDENT_FIELD,field_deludeln_variable_type, &
1664 & field_scalar_dimension_type,err,error,*999)
1665 CALL field_data_type_set_and_lock(equations_set%DEPENDENT%DEPENDENT_FIELD,field_u_variable_type, &
1666 & field_dp_type,err,error,*999)
1667 CALL field_data_type_set_and_lock(equations_set%DEPENDENT%DEPENDENT_FIELD,field_deludeln_variable_type, &
1668 & field_dp_type,err,error,*999)
1669 CALL field_number_of_components_set_and_lock(equations_set%DEPENDENT%DEPENDENT_FIELD,field_u_variable_type,1, &
1671 CALL field_number_of_components_set_and_lock(equations_set%DEPENDENT%DEPENDENT_FIELD,field_deludeln_variable_type,1, &
1673 CALL field_component_label_set(equations_set%DEPENDENT%DEPENDENT_FIELD,field_u_variable_type,1,
"Phi",err,error,*999)
1674 CALL field_component_label_set(equations_set%DEPENDENT%DEPENDENT_FIELD,field_deludeln_variable_type,1, &
1675 &
"del Phi/del n",err,error,*999)
1677 CALL field_component_mesh_component_get(equations_set%GEOMETRY%GEOMETRIC_FIELD,field_u_variable_type,1, &
1678 & geometric_mesh_component,err,error,*999)
1679 CALL field_component_mesh_component_set(equations_set%DEPENDENT%DEPENDENT_FIELD,field_u_variable_type,1, &
1680 & geometric_mesh_component,err,error,*999)
1681 CALL field_component_mesh_component_set(equations_set%DEPENDENT%DEPENDENT_FIELD,field_deludeln_variable_type,1, &
1682 & geometric_mesh_component,err,error,*999)
1683 SELECT CASE(equations_set%SOLUTION_METHOD)
1685 CALL field_component_interpolation_set_and_lock(equations_set%DEPENDENT%DEPENDENT_FIELD, &
1686 & field_u_variable_type,1,field_node_based_interpolation,err,error,*999)
1687 CALL field_component_interpolation_set_and_lock(equations_set%DEPENDENT%DEPENDENT_FIELD, &
1688 & field_deludeln_variable_type,1,field_node_based_interpolation,err,error,*999)
1690 CALL field_scaling_type_get(equations_set%GEOMETRY%GEOMETRIC_FIELD,geometric_scaling_type,err,error,*999)
1691 CALL field_scaling_type_set(equations_set%DEPENDENT%DEPENDENT_FIELD,geometric_scaling_type,err,error,*999)
1693 CALL flagerror(
"Not implemented.",err,error,*999)
1695 CALL flagerror(
"Not implemented.",err,error,*999)
1697 CALL flagerror(
"Not implemented.",err,error,*999)
1699 CALL flagerror(
"Not implemented.",err,error,*999)
1701 CALL flagerror(
"Not implemented.",err,error,*999)
1703 local_error=
"The solution method of "//
trim(
number_to_vstring(equations_set%SOLUTION_METHOD,
"*",err,error))// &
1705 CALL flagerror(local_error,err,error,*999)
1709 CALL field_type_check(equations_set_setup%FIELD,field_general_type,err,error,*999)
1710 CALL field_dependent_type_check(equations_set_setup%FIELD,field_dependent_type,err,error,*999)
1711 CALL field_number_of_variables_check(equations_set_setup%FIELD,2,err,error,*999)
1712 CALL field_variable_types_check(equations_set_setup%FIELD,[field_u_variable_type,field_deludeln_variable_type], &
1714 CALL field_dimension_check(equations_set_setup%FIELD,field_u_variable_type,field_scalar_dimension_type,err,error,*999)
1715 CALL field_dimension_check(equations_set_setup%FIELD,field_deludeln_variable_type,field_scalar_dimension_type, &
1717 CALL field_data_type_check(equations_set_setup%FIELD,field_u_variable_type,field_dp_type,err,error,*999)
1718 CALL field_data_type_check(equations_set_setup%FIELD,field_deludeln_variable_type,field_dp_type,err,error,*999)
1719 CALL field_number_of_components_check(equations_set_setup%FIELD,field_u_variable_type,1,err,error,*999)
1720 CALL field_number_of_components_check(equations_set_setup%FIELD,field_deludeln_variable_type,1,err,error,*999)
1721 SELECT CASE(equations_set%SOLUTION_METHOD)
1723 CALL field_component_interpolation_check(equations_set_setup%FIELD,field_u_variable_type,1, &
1724 & field_node_based_interpolation,err,error,*999)
1725 CALL field_component_interpolation_check(equations_set_setup%FIELD,field_deludeln_variable_type,1, &
1726 & field_node_based_interpolation,err,error,*999)
1728 CALL flagerror(
"Not implemented.",err,error,*999)
1730 CALL flagerror(
"Not implemented.",err,error,*999)
1732 CALL flagerror(
"Not implemented.",err,error,*999)
1734 CALL flagerror(
"Not implemented.",err,error,*999)
1736 CALL flagerror(
"Not implemented.",err,error,*999)
1738 local_error=
"The solution method of "//
trim(
number_to_vstring(equations_set%SOLUTION_METHOD,
"*",err,error))// &
1740 CALL flagerror(local_error,err,error,*999)
1744 IF(equations_set%DEPENDENT%DEPENDENT_FIELD_AUTO_CREATED)
THEN 1745 CALL field_create_finish(equations_set%DEPENDENT%DEPENDENT_FIELD,err,error,*999)
1748 local_error=
"The action type of "//
trim(
number_to_vstring(equations_set_setup%ACTION_TYPE,
"*",err,error))// &
1749 &
" for a setup type of "//
trim(
number_to_vstring(equations_set_setup%SETUP_TYPE,
"*",err,error))// &
1750 &
" is invalid for a standard Laplace equation" 1751 CALL flagerror(local_error,err,error,*999)
1754 SELECT CASE(equations_set_setup%ACTION_TYPE)
1760 local_error=
"The action type of "//
trim(
number_to_vstring(equations_set_setup%ACTION_TYPE,
"*",err,error))// &
1761 &
" for a setup type of "//
trim(
number_to_vstring(equations_set_setup%SETUP_TYPE,
"*",err,error))// &
1762 &
" is invalid for a standard Laplace equation." 1763 CALL flagerror(local_error,err,error,*999)
1766 SELECT CASE(equations_set_setup%ACTION_TYPE)
1772 local_error=
"The action type of "//
trim(
number_to_vstring(equations_set_setup%ACTION_TYPE,
"*",err,error))// &
1773 &
" for a setup type of "//
trim(
number_to_vstring(equations_set_setup%SETUP_TYPE,
"*",err,error))// &
1774 &
" is invalid for a standard Laplace equation." 1775 CALL flagerror(local_error,err,error,*999)
1778 SELECT CASE(equations_set_setup%ACTION_TYPE)
1780 IF(equations_set%DEPENDENT%DEPENDENT_FINISHED)
THEN 1781 dependent_field=>equations_set%DEPENDENT%DEPENDENT_FIELD
1782 IF(
ASSOCIATED(dependent_field))
THEN 1783 geometric_field=>equations_set%GEOMETRY%GEOMETRIC_FIELD
1784 IF(
ASSOCIATED(geometric_field))
THEN 1785 CALL field_number_of_components_get(geometric_field,field_u_variable_type,number_of_dimensions,err,error,*999)
1786 SELECT CASE(equations_set_setup%ANALYTIC_FUNCTION_TYPE)
1789 IF(number_of_dimensions/=2)
THEN 1790 local_error=
"The number of geometric dimensions of "// &
1792 &
" is invalid. The analytic function type of "// &
1794 &
" requires that there be 2 geometric dimensions." 1795 CALL flagerror(local_error,err,error,*999)
1802 IF(number_of_dimensions/=2)
THEN 1803 local_error=
"The number of geometric dimensions of "// &
1805 &
" is invalid. The analytic function type of "// &
1807 &
" requires that there be 2 geometric dimensions." 1808 CALL flagerror(local_error,err,error,*999)
1815 IF(number_of_dimensions/=3)
THEN 1816 local_error=
"The number of geometric dimensions of "// &
1818 &
" is invalid. The analytic function type of "// &
1820 &
" requires that there be 3 geometric dimensions." 1821 CALL flagerror(local_error,err,error,*999)
1828 IF(number_of_dimensions/=3)
THEN 1829 local_error=
"The number of geometric dimensions of "// &
1831 &
" is invalid. The analytic function type of "// &
1833 &
" requires that there be 3 geometric dimensions." 1834 CALL flagerror(local_error,err,error,*999)
1840 local_error=
"The specified analytic function type of "// &
1842 &
" is invalid for a standard Laplace equation." 1843 CALL flagerror(local_error,err,error,*999)
1846 CALL flagerror(
"Equations set geometric field is not associated.",err,error,*999)
1849 CALL flagerror(
"Equations set dependent field is not associated.",err,error,*999)
1852 CALL flagerror(
"Equations set dependent field has not been finished.",err,error,*999)
1855 IF(
ASSOCIATED(equations_set%ANALYTIC))
THEN 1856 analytic_field=>equations_set%ANALYTIC%ANALYTIC_FIELD
1857 IF(
ASSOCIATED(analytic_field))
THEN 1858 IF(equations_set%ANALYTIC%ANALYTIC_FIELD_AUTO_CREATED)
THEN 1859 CALL field_create_finish(equations_set%DEPENDENT%DEPENDENT_FIELD,err,error,*999)
1863 CALL flagerror(
"Equations set analytic is not associated.",err,error,*999)
1866 local_error=
"The action type of "//
trim(
number_to_vstring(equations_set_setup%ACTION_TYPE,
"*",err,error))// &
1867 &
" for a setup type of "//
trim(
number_to_vstring(equations_set_setup%SETUP_TYPE,
"*",err,error))// &
1868 &
" is invalid for a standard Laplace equation." 1869 CALL flagerror(local_error,err,error,*999)
1872 SELECT CASE(equations_set_setup%ACTION_TYPE)
1874 IF(equations_set%DEPENDENT%DEPENDENT_FINISHED)
THEN 1879 CALL flagerror(
"Equations set dependent field has not been finished.",err,error,*999)
1882 SELECT CASE(equations_set%SOLUTION_METHOD)
1896 SELECT CASE(equations%SPARSITY_TYPE)
1906 local_error=
"The equations matrices sparsity type of "// &
1908 CALL flagerror(local_error,err,error,*999)
1912 CALL flagerror(
"Not implemented.",err,error,*999)
1914 CALL flagerror(
"Not implemented.",err,error,*999)
1916 CALL flagerror(
"Not implemented.",err,error,*999)
1918 CALL flagerror(
"Not implemented.",err,error,*999)
1920 CALL flagerror(
"Not implemented.",err,error,*999)
1922 local_error=
"The solution method of "//
trim(
number_to_vstring(equations_set%SOLUTION_METHOD,
"*",err,error))// &
1924 CALL flagerror(local_error,err,error,*999)
1927 local_error=
"The action type of "//
trim(
number_to_vstring(equations_set_setup%ACTION_TYPE,
"*",err,error))// &
1928 &
" for a setup type of "//
trim(
number_to_vstring(equations_set_setup%SETUP_TYPE,
"*",err,error))// &
1929 &
" is invalid for a standard Laplace equation." 1930 CALL flagerror(local_error,err,error,*999)
1933 local_error=
"The setup type of "//
trim(
number_to_vstring(equations_set_setup%SETUP_TYPE,
"*",err,error))// &
1934 &
" is invalid for a standard Laplace equation." 1935 CALL flagerror(local_error,err,error,*999)
1938 local_error=
"The equations set subtype of "//
trim(
number_to_vstring(equations_set%SPECIFICATION(3),
"*",err,error))// &
1939 &
" does not equal a standard Laplace equation subtype." 1940 CALL flagerror(local_error,err,error,*999)
1943 CALL flagerror(
"Equations set is not associated.",err,error,*999)
1946 exits(
"Laplace_EquationsSetStandardSetup")
1948 999 errorsexits(
"Laplace_EquationsSetStandardSetup",err,error)
1963 INTEGER(INTG),
INTENT(OUT) :: ERR
1966 INTEGER(INTG) :: GEOMETRIC_MESH_COMPONENT,GEOMETRIC_SCALING_TYPE,NUMBER_OF_DIMENSIONS,NUMBER_OF_MATERIALS_COMPONENTS
1967 INTEGER(INTG) :: component_idx
1969 TYPE(
field_type),
POINTER :: ANALYTIC_FIELD,DEPENDENT_FIELD,GEOMETRIC_FIELD
1975 enters(
"Laplace_EquationsSetGeneralisedSetup",err,error,*999)
1978 NULLIFY(equations_mapping)
1979 NULLIFY(equations_matrices)
1980 NULLIFY(geometric_decomposition)
1982 IF(
ASSOCIATED(equations_set))
THEN 1983 IF(.NOT.
ALLOCATED(equations_set%SPECIFICATION))
THEN 1984 CALL flagerror(
"Equations set specification is not allocated.",err,error,*999)
1985 ELSE IF(
SIZE(equations_set%SPECIFICATION,1)/=3)
THEN 1986 CALL flagerror(
"Equations set specification must have three entries for a Laplace type equations set.", &
1990 SELECT CASE(equations_set_setup%SETUP_TYPE)
1993 SELECT CASE(equations_set_setup%ACTION_TYPE)
1999 local_error=
"The action type of "//
trim(
number_to_vstring(equations_set_setup%ACTION_TYPE,
"*",err,error))// &
2000 &
" for a setup type of "//
trim(
number_to_vstring(equations_set_setup%SETUP_TYPE,
"*",err,error))// &
2001 &
" is invalid for a generalised Laplace equation." 2002 CALL flagerror(local_error,err,error,*999)
2009 SELECT CASE(equations_set_setup%ACTION_TYPE)
2012 IF(equations_set%DEPENDENT%DEPENDENT_FIELD_AUTO_CREATED)
THEN 2014 CALL field_create_start(equations_set_setup%FIELD_USER_NUMBER,equations_set%REGION,equations_set%DEPENDENT% &
2015 & dependent_field,err,error,*999)
2016 CALL field_label_set(equations_set%DEPENDENT%DEPENDENT_FIELD,
"Dependent Field",err,error,*999)
2017 CALL field_type_set_and_lock(equations_set%DEPENDENT%DEPENDENT_FIELD,field_general_type,err,error,*999)
2018 CALL field_dependent_type_set_and_lock(equations_set%DEPENDENT%DEPENDENT_FIELD,field_dependent_type,err,error,*999)
2019 CALL field_mesh_decomposition_get(equations_set%GEOMETRY%GEOMETRIC_FIELD,geometric_decomposition,err,error,*999)
2020 CALL field_mesh_decomposition_set_and_lock(equations_set%DEPENDENT%DEPENDENT_FIELD,geometric_decomposition, &
2022 CALL field_geometric_field_set_and_lock(equations_set%DEPENDENT%DEPENDENT_FIELD,equations_set%GEOMETRY% &
2023 & geometric_field,err,error,*999)
2024 CALL field_number_of_variables_set_and_lock(equations_set%DEPENDENT%DEPENDENT_FIELD,2,err,error,*999)
2025 CALL field_variable_types_set_and_lock(equations_set%DEPENDENT%DEPENDENT_FIELD,[field_u_variable_type, &
2026 & field_deludeln_variable_type],err,error,*999)
2028 CALL field_variable_label_set(equations_set%DEPENDENT%DEPENDENT_FIELD,field_u_variable_type,
"Phi",err,error,*999)
2029 CALL field_variable_label_set(equations_set%DEPENDENT%DEPENDENT_FIELD,field_deludeln_variable_type,
"del Phi/del n", &
2032 CALL field_dimension_set_and_lock(equations_set%DEPENDENT%DEPENDENT_FIELD,field_u_variable_type, &
2033 & field_scalar_dimension_type,err,error,*999)
2034 CALL field_dimension_set_and_lock(equations_set%DEPENDENT%DEPENDENT_FIELD,field_deludeln_variable_type, &
2035 & field_scalar_dimension_type,err,error,*999)
2037 CALL field_data_type_set_and_lock(equations_set%DEPENDENT%DEPENDENT_FIELD,field_u_variable_type, &
2038 & field_dp_type,err,error,*999)
2039 CALL field_data_type_set_and_lock(equations_set%DEPENDENT%DEPENDENT_FIELD,field_deludeln_variable_type, &
2040 & field_dp_type,err,error,*999)
2042 CALL field_number_of_components_set_and_lock(equations_set%DEPENDENT%DEPENDENT_FIELD,field_u_variable_type,1, &
2044 CALL field_number_of_components_set_and_lock(equations_set%DEPENDENT%DEPENDENT_FIELD,field_deludeln_variable_type,1, &
2047 CALL field_component_label_set(equations_set%DEPENDENT%DEPENDENT_FIELD,field_u_variable_type,1,
"Phi",err,error,*999)
2048 CALL field_component_label_set(equations_set%DEPENDENT%DEPENDENT_FIELD,field_deludeln_variable_type,1, &
2049 &
"del Phi/del n",err,error,*999)
2051 CALL field_component_mesh_component_get(equations_set%GEOMETRY%GEOMETRIC_FIELD,field_u_variable_type,1, &
2052 & geometric_mesh_component,err,error,*999)
2054 CALL field_component_mesh_component_set(equations_set%DEPENDENT%DEPENDENT_FIELD,field_u_variable_type,1, &
2055 & geometric_mesh_component,err,error,*999)
2056 CALL field_component_mesh_component_set(equations_set%DEPENDENT%DEPENDENT_FIELD,field_deludeln_variable_type,1, &
2057 & geometric_mesh_component,err,error,*999)
2058 SELECT CASE(equations_set%SOLUTION_METHOD)
2060 CALL field_component_interpolation_set_and_lock(equations_set%DEPENDENT%DEPENDENT_FIELD, &
2061 & field_u_variable_type,1,field_node_based_interpolation,err,error,*999)
2062 CALL field_component_interpolation_set_and_lock(equations_set%DEPENDENT%DEPENDENT_FIELD, &
2063 & field_deludeln_variable_type,1,field_node_based_interpolation,err,error,*999)
2065 CALL field_scaling_type_get(equations_set%GEOMETRY%GEOMETRIC_FIELD,geometric_scaling_type,err,error,*999)
2066 CALL field_scaling_type_set(equations_set%DEPENDENT%DEPENDENT_FIELD,geometric_scaling_type,err,error,*999)
2068 CALL flagerror(
"Not implemented.",err,error,*999)
2070 CALL flagerror(
"Not implemented.",err,error,*999)
2072 CALL flagerror(
"Not implemented.",err,error,*999)
2074 CALL flagerror(
"Not implemented.",err,error,*999)
2076 CALL flagerror(
"Not implemented.",err,error,*999)
2078 local_error=
"The solution method of "//
trim(
number_to_vstring(equations_set%SOLUTION_METHOD,
"*",err,error))// &
2080 CALL flagerror(local_error,err,error,*999)
2084 CALL field_type_check(equations_set_setup%FIELD,field_general_type,err,error,*999)
2085 CALL field_dependent_type_check(equations_set_setup%FIELD,field_dependent_type,err,error,*999)
2086 CALL field_number_of_variables_check(equations_set_setup%FIELD,2,err,error,*999)
2087 CALL field_variable_types_check(equations_set_setup%FIELD,[field_u_variable_type,field_deludeln_variable_type], &
2089 CALL field_dimension_check(equations_set_setup%FIELD,field_u_variable_type,field_scalar_dimension_type,err,error,*999)
2090 CALL field_dimension_check(equations_set_setup%FIELD,field_deludeln_variable_type,field_scalar_dimension_type, &
2092 CALL field_data_type_check(equations_set_setup%FIELD,field_u_variable_type,field_dp_type,err,error,*999)
2093 CALL field_data_type_check(equations_set_setup%FIELD,field_deludeln_variable_type,field_dp_type,err,error,*999)
2094 CALL field_number_of_components_check(equations_set_setup%FIELD,field_u_variable_type,1,err,error,*999)
2095 CALL field_number_of_components_check(equations_set_setup%FIELD,field_deludeln_variable_type,1,err,error,*999)
2096 SELECT CASE(equations_set%SOLUTION_METHOD)
2098 CALL field_component_interpolation_check(equations_set_setup%FIELD,field_u_variable_type,1, &
2099 & field_node_based_interpolation,err,error,*999)
2100 CALL field_component_interpolation_check(equations_set_setup%FIELD,field_deludeln_variable_type,1, &
2101 & field_node_based_interpolation,err,error,*999)
2103 CALL flagerror(
"Not implemented.",err,error,*999)
2105 CALL flagerror(
"Not implemented.",err,error,*999)
2107 CALL flagerror(
"Not implemented.",err,error,*999)
2109 CALL flagerror(
"Not implemented.",err,error,*999)
2111 CALL flagerror(
"Not implemented.",err,error,*999)
2113 local_error=
"The solution method of "//
trim(
number_to_vstring(equations_set%SOLUTION_METHOD,
"*",err,error))// &
2115 CALL flagerror(local_error,err,error,*999)
2120 IF(equations_set%DEPENDENT%DEPENDENT_FIELD_AUTO_CREATED)
THEN 2121 CALL field_create_finish(equations_set%DEPENDENT%DEPENDENT_FIELD,err,error,*999)
2124 local_error=
"The action type of "//
trim(
number_to_vstring(equations_set_setup%ACTION_TYPE,
"*",err,error))// &
2125 &
" for a setup type of "//
trim(
number_to_vstring(equations_set_setup%SETUP_TYPE,
"*",err,error))// &
2126 &
" is invalid for a generalised Laplace equation" 2127 CALL flagerror(local_error,err,error,*999)
2131 SELECT CASE(equations_set_setup%ACTION_TYPE)
2134 IF(equations_set%MATERIALS%MATERIALS_FIELD_AUTO_CREATED)
THEN 2136 CALL field_create_start(equations_set_setup%FIELD_USER_NUMBER,equations_set%REGION,equations_set%MATERIALS% &
2137 & materials_field,err,error,*999)
2138 CALL field_label_set(equations_set%MATERIALS%MATERIALS_FIELD,
"Materials Field",err,error,*999)
2139 CALL field_type_set_and_lock(equations_set%MATERIALS%MATERIALS_FIELD,field_material_type,err,error,*999)
2140 CALL field_mesh_decomposition_get(equations_set%GEOMETRY%GEOMETRIC_FIELD,geometric_decomposition,err,error,*999)
2141 CALL field_mesh_decomposition_set_and_lock(equations_set%DEPENDENT%DEPENDENT_FIELD,geometric_decomposition, &
2143 CALL field_geometric_field_set_and_lock(equations_set%MATERIALS%MATERIALS_FIELD,equations_set%GEOMETRY% &
2144 & geometric_field,err,error,*999)
2145 CALL field_number_of_variables_set_and_lock(equations_set%MATERIALS%MATERIALS_FIELD,1,err,error,*999)
2146 CALL field_variable_types_set_and_lock(equations_set%MATERIALS%MATERIALS_FIELD,[field_u_variable_type], &
2148 CALL field_variable_label_set(equations_set%MATERIALS%MATERIALS_FIELD,field_u_variable_type,
"conductivity",err, &
2150 CALL field_number_of_components_get(equations_set%GEOMETRY%GEOMETRIC_FIELD,field_u_variable_type, &
2151 & number_of_dimensions,err,error,*999)
2152 IF(number_of_dimensions==1)
THEN 2153 number_of_materials_components=1
2154 ELSEIF(number_of_dimensions==2)
THEN 2155 number_of_materials_components=3
2156 ELSEIF(number_of_dimensions==3)
THEN 2157 number_of_materials_components=6
2160 CALL field_number_of_components_set_and_lock(equations_set%MATERIALS%MATERIALS_FIELD,field_u_variable_type, &
2161 & number_of_materials_components,err,error,*999)
2162 CALL field_data_type_set_and_lock(equations_set%MATERIALS%MATERIALS_FIELD,field_u_variable_type, &
2163 & field_dp_type,err,error,*999)
2165 CALL field_component_mesh_component_get(equations_set%GEOMETRY%GEOMETRIC_FIELD,field_u_variable_type,1, &
2166 & geometric_mesh_component,err,error,*999)
2167 DO component_idx=1,number_of_materials_components
2168 CALL field_component_mesh_component_set(equations_set%MATERIALS%MATERIALS_FIELD,field_u_variable_type,1, &
2169 & geometric_mesh_component,err,error,*999)
2172 SELECT CASE(equations_set%SOLUTION_METHOD)
2174 DO component_idx=1,number_of_materials_components
2175 CALL field_component_interpolation_set_and_lock(equations_set%MATERIALS%MATERIALS_FIELD, &
2176 & field_u_variable_type,1,field_node_based_interpolation,err,error,*999)
2179 CALL field_scaling_type_get(equations_set%GEOMETRY%GEOMETRIC_FIELD,geometric_scaling_type,err,error,*999)
2180 CALL field_scaling_type_set(equations_set%MATERIALS%MATERIALS_FIELD,geometric_scaling_type,err,error,*999)
2182 CALL flagerror(
"Not implemented.",err,error,*999)
2184 CALL flagerror(
"Not implemented.",err,error,*999)
2186 CALL flagerror(
"Not implemented.",err,error,*999)
2188 CALL flagerror(
"Not implemented.",err,error,*999)
2190 CALL flagerror(
"Not implemented.",err,error,*999)
2192 local_error=
"The solution method of "//
trim(
number_to_vstring(equations_set%SOLUTION_METHOD,
"*",err,error))// &
2194 CALL flagerror(local_error,err,error,*999)
2198 CALL field_type_check(equations_set_setup%FIELD,field_material_type,err,error,*999)
2199 CALL field_number_of_variables_check(equations_set_setup%FIELD,1,err,error,*999)
2200 CALL field_variable_types_check(equations_set_setup%FIELD,[field_u_variable_type],err,error,*999)
2201 CALL field_data_type_check(equations_set_setup%FIELD,field_u_variable_type,field_dp_type,err,error,*999)
2202 CALL field_number_of_components_get(equations_set%GEOMETRY%GEOMETRIC_FIELD,field_u_variable_type, &
2203 & number_of_dimensions,err,error,*999)
2204 IF(number_of_dimensions==1)
THEN 2205 CALL field_number_of_components_check(equations_set_setup%FIELD,field_u_variable_type,1,err, &
2207 ELSEIF(number_of_dimensions==2)
THEN 2208 CALL field_number_of_components_check(equations_set_setup%FIELD,field_u_variable_type,3,err, &
2210 ELSEIF(number_of_dimensions==3)
THEN 2211 CALL field_number_of_components_check(equations_set_setup%FIELD,field_u_variable_type,6,err, &
2214 SELECT CASE(equations_set%SOLUTION_METHOD)
2218 CALL flagerror(
"Not implemented.",err,error,*999)
2220 CALL flagerror(
"Not implemented.",err,error,*999)
2222 CALL flagerror(
"Not implemented.",err,error,*999)
2224 CALL flagerror(
"Not implemented.",err,error,*999)
2226 CALL flagerror(
"Not implemented.",err,error,*999)
2228 local_error=
"The solution method of "//
trim(
number_to_vstring(equations_set%SOLUTION_METHOD,
"*",err,error))// &
2230 CALL flagerror(local_error,err,error,*999)
2235 IF(equations_set%MATERIALS%MATERIALS_FIELD_AUTO_CREATED)
THEN 2236 CALL field_create_finish(equations_set%MATERIALS%MATERIALS_FIELD,err,error,*999)
2239 local_error=
"The action type of "//
trim(
number_to_vstring(equations_set_setup%ACTION_TYPE,
"*",err,error))// &
2240 &
" for a setup type of "//
trim(
number_to_vstring(equations_set_setup%SETUP_TYPE,
"*",err,error))// &
2241 &
" is invalid for a generalised Laplace equation." 2242 CALL flagerror(local_error,err,error,*999)
2246 SELECT CASE(equations_set_setup%ACTION_TYPE)
2252 local_error=
"The action type of "//
trim(
number_to_vstring(equations_set_setup%ACTION_TYPE,
"*",err,error))// &
2253 &
" for a setup type of "//
trim(
number_to_vstring(equations_set_setup%SETUP_TYPE,
"*",err,error))// &
2254 &
" is invalid for a generalised Laplace equation." 2255 CALL flagerror(local_error,err,error,*999)
2259 SELECT CASE(equations_set_setup%ACTION_TYPE)
2262 IF(equations_set%DEPENDENT%DEPENDENT_FINISHED)
THEN 2263 dependent_field=>equations_set%DEPENDENT%DEPENDENT_FIELD
2264 IF(
ASSOCIATED(dependent_field))
THEN 2265 geometric_field=>equations_set%GEOMETRY%GEOMETRIC_FIELD
2266 IF(
ASSOCIATED(geometric_field))
THEN 2267 CALL field_number_of_components_get(geometric_field,field_u_variable_type,number_of_dimensions,err,error,*999)
2268 SELECT CASE(equations_set_setup%ANALYTIC_FUNCTION_TYPE)
2271 IF(number_of_dimensions/=2)
THEN 2272 local_error=
"The number of geometric dimensions of "// &
2274 &
" is invalid. The analytic function type of "// &
2276 &
" requires that there be 2 geometric dimensions." 2277 CALL flagerror(local_error,err,error,*999)
2284 IF(number_of_dimensions/=2)
THEN 2285 local_error=
"The number of geometric dimensions of "// &
2287 &
" is invalid. The analytic function type of "// &
2289 &
" requires that there be 2 geometric dimensions." 2290 CALL flagerror(local_error,err,error,*999)
2297 IF(number_of_dimensions/=3)
THEN 2298 local_error=
"The number of geometric dimensions of "// &
2300 &
" is invalid. The analytic function type of "// &
2302 &
" requires that there be 3 geometric dimensions." 2303 CALL flagerror(local_error,err,error,*999)
2310 IF(number_of_dimensions/=3)
THEN 2311 local_error=
"The number of geometric dimensions of "// &
2313 &
" is invalid. The analytic function type of "// &
2315 &
" requires that there be 3 geometric dimensions." 2316 CALL flagerror(local_error,err,error,*999)
2322 local_error=
"The specified analytic function type of "// &
2324 &
" is invalid for a generalised Laplace equation." 2325 CALL flagerror(local_error,err,error,*999)
2328 CALL flagerror(
"Equations set geometric field is not associated.",err,error,*999)
2331 CALL flagerror(
"Equations set dependent field is not associated.",err,error,*999)
2334 CALL flagerror(
"Equations set dependent field has not been finished.",err,error,*999)
2338 IF(
ASSOCIATED(equations_set%ANALYTIC))
THEN 2339 analytic_field=>equations_set%ANALYTIC%ANALYTIC_FIELD
2340 IF(
ASSOCIATED(analytic_field))
THEN 2341 IF(equations_set%ANALYTIC%ANALYTIC_FIELD_AUTO_CREATED)
THEN 2342 CALL field_create_finish(equations_set%DEPENDENT%DEPENDENT_FIELD,err,error,*999)
2346 CALL flagerror(
"Equations set analytic is not associated.",err,error,*999)
2349 local_error=
"The action type of "//
trim(
number_to_vstring(equations_set_setup%ACTION_TYPE,
"*",err,error))// &
2350 &
" for a setup type of "//
trim(
number_to_vstring(equations_set_setup%SETUP_TYPE,
"*",err,error))// &
2351 &
" is invalid for a generalised Laplace equation." 2352 CALL flagerror(local_error,err,error,*999)
2356 SELECT CASE(equations_set_setup%ACTION_TYPE)
2359 IF(equations_set%DEPENDENT%DEPENDENT_FINISHED)
THEN 2364 CALL flagerror(
"Equations set dependent field has not been finished.",err,error,*999)
2368 SELECT CASE(equations_set%SOLUTION_METHOD)
2382 SELECT CASE(equations%SPARSITY_TYPE)
2392 local_error=
"The equations matrices sparsity type of "// &
2394 CALL flagerror(local_error,err,error,*999)
2398 CALL flagerror(
"Not implemented.",err,error,*999)
2400 CALL flagerror(
"Not implemented.",err,error,*999)
2402 CALL flagerror(
"Not implemented.",err,error,*999)
2404 CALL flagerror(
"Not implemented.",err,error,*999)
2406 CALL flagerror(
"Not implemented.",err,error,*999)
2408 local_error=
"The solution method of "//
trim(
number_to_vstring(equations_set%SOLUTION_METHOD,
"*",err,error))// &
2410 CALL flagerror(local_error,err,error,*999)
2413 local_error=
"The action type of "//
trim(
number_to_vstring(equations_set_setup%ACTION_TYPE,
"*",err,error))// &
2414 &
" for a setup type of "//
trim(
number_to_vstring(equations_set_setup%SETUP_TYPE,
"*",err,error))// &
2415 &
" is invalid for a generalised Laplace equation." 2416 CALL flagerror(local_error,err,error,*999)
2419 local_error=
"The setup type of "//
trim(
number_to_vstring(equations_set_setup%SETUP_TYPE,
"*",err,error))// &
2420 &
" is invalid for a generalised Laplace equation." 2421 CALL flagerror(local_error,err,error,*999)
2424 local_error=
"The equations set subtype of "//
trim(
number_to_vstring(equations_set%SPECIFICATION(3),
"*",err,error))// &
2425 &
" does not equal a generalised Laplace equation subtype." 2426 CALL flagerror(local_error,err,error,*999)
2429 CALL flagerror(
"Equations set is not associated.",err,error,*999)
2432 exits(
"Laplace_EquationsSetGeneralisedSetup")
2434 999
errors(
"Laplace_EquationsSetGeneralisedSetup",err,error)
2435 exits(
"Laplace_EquationsSetGeneralisedSetup")
2450 INTEGER(INTG),
INTENT(OUT) :: ERR
2455 enters(
"LAPLACE_EQUATION_PROBLEM_SETUP",err,error,*999)
2457 IF(
ASSOCIATED(problem))
THEN 2458 IF(.NOT.
ALLOCATED(problem%SPECIFICATION))
THEN 2459 CALL flagerror(
"Problem specification is not allocated.",err,error,*999)
2460 ELSE IF(
SIZE(problem%SPECIFICATION,1)<3)
THEN 2461 CALL flagerror(
"Problem specification must have three entries for a Laplace problem.",err,error,*999)
2463 SELECT CASE(problem%SPECIFICATION(3))
2470 &
" is not valid for a Laplace equation type of a classical field problem class." 2471 CALL flagerror(local_error,err,error,*999)
2474 CALL flagerror(
"Problem is not associated.",err,error,*999)
2477 exits(
"LAPLACE_EQUATION_PROBLEM_SETUP")
2479 999 errorsexits(
"LAPLACE_EQUATION_PROBLEM_SETUP",err,error)
2492 INTEGER(INTG),
INTENT(IN) :: problemSpecification(:)
2493 INTEGER(INTG),
INTENT(OUT) :: err
2497 INTEGER(INTG) :: problemSubtype
2499 enters(
"Laplace_ProblemSpecificationSet",err,error,*999)
2501 IF(
ASSOCIATED(problem))
THEN 2502 IF(
SIZE(problemspecification,1)==3)
THEN 2503 problemsubtype=problemspecification(3)
2504 SELECT CASE(problemsubtype)
2509 localerror=
"The third problem specification of "//
trim(
numbertovstring(problemsubtype,
"*",err,error))// &
2510 &
" is not valid for a Laplace type of a classical field problem." 2511 CALL flagerror(localerror,err,error,*999)
2513 IF(
ALLOCATED(problem%specification))
THEN 2514 CALL flagerror(
"Problem specification is already allocated.",err,error,*999)
2516 ALLOCATE(problem%specification(3),stat=err)
2517 IF(err/=0)
CALL flagerror(
"Could not allocate problem specification.",err,error,*999)
2521 CALL flagerror(
"Laplace problem specification must have three entries.",err,error,*999)
2524 CALL flagerror(
"Problem is not associated.",err,error,*999)
2527 exits(
"Laplace_ProblemSpecificationSet")
2529 999
errors(
"Laplace_ProblemSpecificationSet",err,error)
2530 exits(
"Laplace_ProblemSpecificationSet")
2545 INTEGER(INTG),
INTENT(OUT) :: ERR
2554 enters(
"LAPLACE_EQUATION_PROBLEM_STANDARD_SETUP",err,error,*999)
2556 NULLIFY(control_loop)
2558 NULLIFY(solver_equations)
2560 IF(
ASSOCIATED(problem))
THEN 2561 IF(.NOT.
ALLOCATED(problem%SPECIFICATION))
THEN 2562 CALL flagerror(
"Problem specification is not allocated.",err,error,*999)
2563 ELSE IF(
SIZE(problem%SPECIFICATION,1)<3)
THEN 2564 CALL flagerror(
"Problem specification must have three entries for a Laplace problem.",err,error,*999)
2567 SELECT CASE(problem_setup%SETUP_TYPE)
2569 SELECT CASE(problem_setup%ACTION_TYPE)
2575 local_error=
"The action type of "//
trim(
number_to_vstring(problem_setup%ACTION_TYPE,
"*",err,error))// &
2577 &
" is invalid for a standard Laplace equation." 2578 CALL flagerror(local_error,err,error,*999)
2581 SELECT CASE(problem_setup%ACTION_TYPE)
2587 control_loop_root=>problem%CONTROL_LOOP
2591 local_error=
"The action type of "//
trim(
number_to_vstring(problem_setup%ACTION_TYPE,
"*",err,error))// &
2593 &
" is invalid for a standard Laplace equation." 2594 CALL flagerror(local_error,err,error,*999)
2598 control_loop_root=>problem%CONTROL_LOOP
2600 SELECT CASE(problem_setup%ACTION_TYPE)
2616 local_error=
"The action type of "//
trim(
number_to_vstring(problem_setup%ACTION_TYPE,
"*",err,error))// &
2618 &
" is invalid for a standard Laplace equation." 2619 CALL flagerror(local_error,err,error,*999)
2622 SELECT CASE(problem_setup%ACTION_TYPE)
2625 control_loop_root=>problem%CONTROL_LOOP
2637 control_loop_root=>problem%CONTROL_LOOP
2646 local_error=
"The action type of "//
trim(
number_to_vstring(problem_setup%ACTION_TYPE,
"*",err,error))// &
2648 &
" is invalid for a standard Laplace equation." 2649 CALL flagerror(local_error,err,error,*999)
2652 local_error=
"The setup type of "//
trim(
number_to_vstring(problem_setup%SETUP_TYPE,
"*",err,error))// &
2653 &
" is invalid for a standard Laplace equation." 2654 CALL flagerror(local_error,err,error,*999)
2657 local_error=
"The problem subtype of "//
trim(
number_to_vstring(problem%SPECIFICATION(3),
"*",err,error))// &
2658 &
" does not equal a standard Laplace equation subtype." 2659 CALL flagerror(local_error,err,error,*999)
2662 CALL flagerror(
"Problem is not associated.",err,error,*999)
2665 exits(
"LAPLACE_EQUATION_PROBLEM_STANDARD_SETUP")
2667 999 errorsexits(
"LAPLACE_EQUATION_PROBLEM_STANDARD_SETUP",err,error)
2681 INTEGER(INTG),
INTENT(OUT) :: ERR
2690 enters(
"LAPLACE_EQUATION_PROBLEM_GENERALISED_SETUP",err,error,*999)
2692 NULLIFY(control_loop)
2694 NULLIFY(solver_equations)
2697 IF(
ASSOCIATED(problem))
THEN 2698 IF(.NOT.
ALLOCATED(problem%SPECIFICATION))
THEN 2699 CALL flagerror(
"Problem specification is not allocated.",err,error,*999)
2700 ELSE IF(
SIZE(problem%SPECIFICATION,1)<3)
THEN 2701 CALL flagerror(
"Problem specification must have three entries for a Laplace problem.",err,error,*999)
2704 SELECT CASE(problem_setup%SETUP_TYPE)
2706 SELECT CASE(problem_setup%ACTION_TYPE)
2712 local_error=
"The action type of "//
trim(
number_to_vstring(problem_setup%ACTION_TYPE,
"*",err,error))// &
2714 &
" is invalid for a generalised Laplace equation." 2715 CALL flagerror(local_error,err,error,*999)
2718 SELECT CASE(problem_setup%ACTION_TYPE)
2724 control_loop_root=>problem%CONTROL_LOOP
2728 local_error=
"The action type of "//
trim(
number_to_vstring(problem_setup%ACTION_TYPE,
"*",err,error))// &
2730 &
" is invalid for a generalised Laplace equation." 2731 CALL flagerror(local_error,err,error,*999)
2735 control_loop_root=>problem%CONTROL_LOOP
2737 SELECT CASE(problem_setup%ACTION_TYPE)
2753 local_error=
"The action type of "//
trim(
number_to_vstring(problem_setup%ACTION_TYPE,
"*",err,error))// &
2755 &
" is invalid for a generalised Laplace equation." 2756 CALL flagerror(local_error,err,error,*999)
2759 SELECT CASE(problem_setup%ACTION_TYPE)
2762 control_loop_root=>problem%CONTROL_LOOP
2774 control_loop_root=>problem%CONTROL_LOOP
2783 local_error=
"The action type of "//
trim(
number_to_vstring(problem_setup%ACTION_TYPE,
"*",err,error))// &
2785 &
" is invalid for a generalised Laplace equation." 2786 CALL flagerror(local_error,err,error,*999)
2789 local_error=
"The setup type of "//
trim(
number_to_vstring(problem_setup%SETUP_TYPE,
"*",err,error))// &
2790 &
" is invalid for a generalised Laplace equation." 2791 CALL flagerror(local_error,err,error,*999)
2794 local_error=
"The problem subtype of "//
trim(
number_to_vstring(problem%SPECIFICATION(3),
"*",err,error))// &
2795 &
" does not equal a generalised Laplace equation subtype." 2796 CALL flagerror(local_error,err,error,*999)
2799 CALL flagerror(
"Problem is not associated.",err,error,*999)
2802 exits(
"LAPLACE_EQUATION_PROBLEM_GENERALISED_SETUP")
2804 999 errorsexits(
"LAPLACE_EQUATION_PROBLEM_GENERALISED_SETUP",err,error)
subroutine laplace_equationssetgeneralisedsetup(EQUATIONS_SET, EQUATIONS_SET_SETUP, ERR, ERROR,)
Sets up the generalised Laplace equation.
integer(intg), parameter equations_set_setup_dependent_type
Dependent variables.
integer(intg), parameter equations_set_fem_solution_method
Finite Element Method solution method.
This module contains all basis function routines.
integer(intg), parameter equations_set_setup_materials_type
Materials setup.
Contains information on the boundary conditions for the solver equations.
subroutine, public enters(NAME, ERR, ERROR,)
Records the entry into the named procedure and initialises the error code.
subroutine, public solvers_create_finish(SOLVERS, ERR, ERROR,)
Finish the creation of solvers.
integer(intg), parameter equations_set_laplace_equation_two_dim_1
u=x**2+2*x*y-y**2
This module contains all coordinate transformation and support routines.
Contains information on the equations mapping i.e., how field variable DOFS are mapped to the rows an...
Contains information about the equations in an equations set.
integer(intg), parameter equations_set_gfem_solution_method
Grid-based Finite Element Method solution method.
integer(intg), parameter global_deriv_s1_s2_s3
Cross derivative in the s1, s2 and s3 direction i.e., d^3u/ds1ds2ds3.
integer(intg), parameter problem_laplace_equation_type
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 equations_set_generalised_laplace_subtype
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 Laplace equations routines.
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 laplace_equationssetspecificationset(equationsSet, specification, err, error,)
Sets the equation specification for a Laplace type of a classical field equations set...
subroutine, public solvers_create_start(CONTROL_LOOP, SOLVERS, ERR, ERROR,)
Start the creation of a solvers for the control loop.
Contains information on the solvers to be used in a control loop.
integer(intg), parameter first_part_deriv
First partial derivative i.e., du/ds.
integer(intg), parameter equations_set_laplace_equation_two_dim_2
u=cos(x)cosh(y)
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.
This module contains all mathematics support routines.
integer(intg), parameter equations_set_laplace_equation_type
subroutine, public solvers_solver_get(SOLVERS, SOLVER_INDEX, SOLVER, ERR, ERROR,)
Returns a pointer to the specified solver in the list of solvers.
Contains information for a field defined on a region.
integer(intg), parameter, public equations_matrices_full_matrices
Use fully populated equation matrices.
subroutine, public equations_mapping_rhs_variable_type_set(EQUATIONS_MAPPING, RHS_VARIABLE_TYPE, ERR, ERROR,)
Sets the mapping between a dependent field variable and the equations set rhs vector.
integer(intg), parameter solver_equations_linear
Solver equations are linear.
integer(intg), parameter global_deriv_s2
First global derivative in the s2 direction i.e., du/ds2.
Contains information on a control loop.
integer(intg), parameter equations_set_standard_laplace_subtype
subroutine, public laplace_equation_problem_setup(PROBLEM, PROBLEM_SETUP, ERR, ERROR,)
Sets up the Laplace problem.
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.
integer(intg), parameter global_deriv_s2_s3
Global Cross derivative in the s2 and s3 direction i.e., d^2u/ds2ds3.
subroutine, public solver_equations_create_start(SOLVER, SOLVER_EQUATIONS, ERR, ERROR,)
Starts the process of creating solver equations.
integer(intg), parameter equations_set_laplace_equation_three_dim_2
u=cos(x)*cosh(y)*z
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.
integer(intg), parameter equations_set_setup_independent_type
Independent variables.
This module contains all program wide constants.
subroutine, public solver_library_type_set(SOLVER, SOLVER_LIBRARY_TYPE, ERR, ERROR,)
Sets/changes the type of library type to use for the solver.
subroutine, public 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.
Contains the interpolated point coordinate metrics. Old CMISS name GL,GU,RG.
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 laplace_equationssetsolutionmethodset(EQUATIONS_SET, SOLUTION_METHOD, ERR, ERROR,)
Sets/changes the solution method for a Laplace equation type of an classical field equations set clas...
integer(intg), parameter problem_generalised_laplace_subtype
subroutine, public coordinates_materialsystemcalculate(geometricInterpPointMetrics, fibreInterpPoint, dNudX, dXdNu, dNudXi, dXidNu, err, error,)
Calculates the tensor to get from material coordinate system, nu, to local coordinate system...
subroutine, public solver_equations_linearity_type_set(SOLVER_EQUATIONS, LINEARITY_TYPE, ERR, ERROR,)
Sets/changes the linearity type for solver equations.
integer(intg), parameter equations_set_setup_start_action
Start setup action.
integer(intg), parameter problem_classical_field_class
subroutine, public exits(NAME)
Records the exit out of the named procedure.
recursive subroutine, public control_loop_solvers_get(CONTROL_LOOP, SOLVERS, ERR, ERROR,)
Returns a pointer to the solvers for a control loop.
This module contains all type definitions in order to avoid cyclic module references.
Contains information on the equations matrices and vectors.
integer(intg), parameter, public equations_matrix_fem_structure
Finite element matrix structure.
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.
integer(intg), parameter equations_set_laplace_equation_three_dim_1
u=x**2-2*y**2+z**2
subroutine laplace_equation_problem_standard_setup(PROBLEM, PROBLEM_SETUP, ERR, ERROR,)
Sets up the standard Laplace equations problem.
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.
integer(intg), dimension(4) partial_derivative_first_derivative_map
PARTIAL_DERIVATIVE_FIRST_DERIVATIVE_MAP(nic) gives the partial derivative index for the first derivat...
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.
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 problem_standard_laplace_subtype
integer(intg), parameter equations_set_classical_field_class
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.
subroutine, public laplace_equation_equations_set_setup(EQUATIONS_SET, EQUATIONS_SET_SETUP, ERR, ERROR,)
Sets up the Laplace equation type of a classical field equations set class.
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 equations_mapping_create_start(EQUATIONS, EQUATIONS_MAPPING, ERR, ERROR,)
Finishes the process of creating an equations mapping for a equations set equations.
integer(intg), parameter equations_set_moving_mesh_laplace_subtype
Contains the interpolated value (and the derivatives wrt xi) of a field at a point. Old CMISS name XG.
Contains information about an equations matrix.
Contains information for a particular quadrature scheme.
subroutine, public laplace_problemspecificationset(problem, problemSpecification, err, error,)
Sets the problem specification for a Laplace equation type.
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.
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 global_deriv_s3
First global derivative in the s3 direction i.e., du/ds3.
subroutine, public laplaceequation_finiteelementcalculate(equationsSet, elementNumber, err, error,)
Calculates the element stiffness matrices and RHS for a Laplace equation finite element equations set...
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 laplace_boundaryconditionsanalyticcalculate(EQUATIONS_SET, BOUNDARY_CONDITIONS, ERR, ERROR,)
Calculates the analytic solution and sets the boundary conditions for an analytic problem...
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.
Calculates and returns the matrix-product A*B in the matrix C.
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.
subroutine laplace_equation_problem_generalised_setup(PROBLEM, PROBLEM_SETUP, ERR, ERROR,)
Sets up the generalised Laplace equations problem.
subroutine laplace_equationssetstandardsetup(EQUATIONS_SET, EQUATIONS_SET_SETUP, ERR, ERROR,)
Sets up the standard Laplace equation.
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.
subroutine laplace_equationssetmovingmeshsetup(EQUATIONS_SET, EQUATIONS_SET_SETUP, ERR, ERROR,)
Sets up the moving mesh Laplace equation.
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 global_deriv_s1_s3
Global Cross derivative in the s1 and s3 direction i.e., d^2u/ds1ds3.
integer(intg), parameter equations_set_setup_analytic_type
Analytic setup.
Flags an error condition.
integer(intg), parameter, public solver_linear_type
A linear solver.
Contains information of the RHS vector for equations matrices.
Contains information for mapping field variables to the linear matrices in the equations set of the m...
This module contains all kind definitions.
integer(intg), parameter equations_set_setup_finish_action
Finish setup action.