This module defines the procedures of a physics module. It contains function pointers for the various supported routines. An actual physics module has to set these pointers to its implementation of these routines.
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| procedure(sub_boundary_adjust), | public, | pointer | :: | phys_boundary_adjust | => | null() | |
| procedure(sub_check_params), | public, | pointer | :: | phys_check_params | => | null() | |
| procedure(sub_clean_divb), | public, | pointer | :: | phys_clean_divb | => | null() | |
| procedure(sub_evaluate_implicit), | public, | pointer | :: | phys_evaluate_implicit | => | null() | |
| procedure(sub_face_to_center), | public, | pointer | :: | phys_face_to_center | => | null() | |
| procedure(sub_global_source), | public, | pointer | :: | phys_global_source_after | => | null() | |
| procedure(sub_implicit_update), | public, | pointer | :: | phys_implicit_update | => | null() | |
| procedure(sub_set_equi_vars), | public, | pointer | :: | phys_set_equi_vars | => | null() | |
| procedure(sub_special_advance), | public, | pointer | :: | phys_special_advance | => | null() | |
| procedure(sub_check_params), | public, | pointer | :: | phys_te_images | => | null() | |
| procedure(sub_write_info), | public, | pointer | :: | phys_write_info | => | null() |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| integer, | intent(in) | :: | igrid | |||
| type(state), | target | :: | psb(max_blocks) |
clean initial divb
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| double precision, | intent(in) | :: | qdt |
Current time step |
||
| double precision, | intent(in) | :: | qt |
Current time |
||
| logical, | intent(inout) | :: | active |
Output if the source is active |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| double precision, | intent(in) | :: | qtC | |||
| type(state), | target | :: | psa(max_blocks) |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| integer, | intent(in) | :: | ixOmin1 | |||
| integer, | intent(in) | :: | ixOmin2 | |||
| integer, | intent(in) | :: | ixOmin3 | |||
| integer, | intent(in) | :: | ixOmax1 | |||
| integer, | intent(in) | :: | ixOmax2 | |||
| integer, | intent(in) | :: | ixOmax3 | |||
| type(state) | :: | s |
Add global source terms on complete domain (potentially implicit)
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| double precision, | intent(in) | :: | qdt |
Current time step |
||
| double precision, | intent(in) | :: | qt |
Current time |
||
| logical, | intent(inout) | :: | active |
Output if the source is active |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| double precision, | intent(in) | :: | dtfactor | |||
| double precision, | intent(in) | :: | qdt | |||
| double precision, | intent(in) | :: | qtC | |||
| type(state), | target | :: | psa(max_blocks) | |||
| type(state), | target | :: | psb(max_blocks) |
set equilibrium variables other than b0 (e.g. p0 and rho0)
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| integer, | intent(in) | :: | igrid |
Add special advance in each advect step
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| double precision, | intent(in) | :: | qt |
Current time |
||
| type(state), | target | :: | psa(max_blocks) |
Compute based on this state |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| integer, | intent(in) | :: | file_handle |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| integer, | intent(in) | :: | igrid | |||
| type(state), | target | :: | psb(max_blocks) |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| double precision, | intent(in) | :: | qtC | |||
| type(state), | target | :: | psa(max_blocks) |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| integer, | intent(in) | :: | ixOmin1 | |||
| integer, | intent(in) | :: | ixOmin2 | |||
| integer, | intent(in) | :: | ixOmin3 | |||
| integer, | intent(in) | :: | ixOmax1 | |||
| integer, | intent(in) | :: | ixOmax2 | |||
| integer, | intent(in) | :: | ixOmax3 | |||
| type(state) | :: | s |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| integer, | intent(in) | :: | fh |
File handle |
Initialize the module
Transform primitive variables into conservative ones
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| integer, | intent(in) | :: | ixImin1 | |||
| integer, | intent(in) | :: | ixImin2 | |||
| integer, | intent(in) | :: | ixImin3 | |||
| integer, | intent(in) | :: | ixImax1 | |||
| integer, | intent(in) | :: | ixImax2 | |||
| integer, | intent(in) | :: | ixImax3 | |||
| integer, | intent(in) | :: | ixOmin1 | |||
| integer, | intent(in) | :: | ixOmin2 | |||
| integer, | intent(in) | :: | ixOmin3 | |||
| integer, | intent(in) | :: | ixOmax1 | |||
| integer, | intent(in) | :: | ixOmax2 | |||
| integer, | intent(in) | :: | ixOmax3 | |||
| double precision, | intent(inout) | :: | w(ixImin1:ixImax1,ixImin2:ixImax2,ixImin3:ixImax3,nw_phys) | |||
| double precision, | intent(in) | :: | x(ixImin1:ixImax1,ixImin2:ixImax2,ixImin3:ixImax3,1:ndim) |
Transform conservative variables into primitive ones
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| integer, | intent(in) | :: | ixImin1 | |||
| integer, | intent(in) | :: | ixImin2 | |||
| integer, | intent(in) | :: | ixImin3 | |||
| integer, | intent(in) | :: | ixImax1 | |||
| integer, | intent(in) | :: | ixImax2 | |||
| integer, | intent(in) | :: | ixImax3 | |||
| integer, | intent(in) | :: | ixOmin1 | |||
| integer, | intent(in) | :: | ixOmin2 | |||
| integer, | intent(in) | :: | ixOmin3 | |||
| integer, | intent(in) | :: | ixOmax1 | |||
| integer, | intent(in) | :: | ixOmax2 | |||
| integer, | intent(in) | :: | ixOmax3 | |||
| double precision, | intent(inout) | :: | w(ixImin1:ixImax1,ixImin2:ixImax2,ixImin3:ixImax3,nw_phys) | |||
| double precision, | intent(in) | :: | x(ixImin1:ixImax1,ixImin2:ixImax2,ixImin3:ixImax3,1:ndim) |
here no SI_UNIT used by default, to be implemented
Read this module's parameters from a file
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| character(len=*), | intent(in) | :: | files(:) |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| real(kind=dp), | intent(inout) | :: | u(nw_phys) |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| real(kind=dp), | intent(inout) | :: | u(nw_phys) |