Module that defines a PDE equation. It is derived from the equation class and provides the routines that are common for all PDE equation systems while deferring implementation of the routines that are specific to a given PDE equation system.
The implementation is found in submodule_pde_equations_implementation.f90.
The interface for the PDE version of set_to_zero. This interface is consistent with eq_set_to_zero_interface.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(cpde_equation), | intent(inout) | :: | this | The routine is called on this equation. |
||
integer(kind=ip), | intent(in) | :: | dest | Can be either -1 (RHS), 0 (main) or between 1 and ntmp (temporary). |
The interface for the PDE version of update_vars. This interface is consistent with eq_update_vars_interface.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(cpde_equation), | intent(inout), | target | :: | this | The routine is called on this equation. |
|
integer(kind=ip), | intent(in) | :: | source | The first source for the update. Can be either -1 (RHS), 0 (main) or between 1 and ntmp (temporary). |
||
integer(kind=ip), | intent(in) | :: | dest | The destination for the update. Can be either -1 (RHS), 0 (main) or between 1 and ntmp (temporary). |
||
integer(kind=ip), | intent(in), | optional | :: | source2 | The second source for the update. Can be either -1 (RHS), 0 (main) or between 1 and ntmp (temporary). |
|
real(kind=wp), | intent(in), | optional | :: | scalar | The scalar multiplying the first source. |
|
real(kind=wp), | intent(in), | optional | :: | scalar2 | The scalar multiplying the second source. |
The interface for the PDE version of output. This interface is consistent with eq_output.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(cpde_equation), | intent(inout) | :: | this | The routine is called on this equation. |
The interface for the PDE version of print_data. This interface is consistent with eq_print_data.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(cpde_equation), | intent(inout) | :: | this | The routine is called on this equation. |
The interface for the PDE version of init. This interface is consistent with eq_init_interface.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(cpde_equation), | intent(inout), | target | :: | this | The equation that is being initialized. |
The interface for the PDE version of rhs. This interface is consistent with eq_rhs_interface.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(cpde_equation), | intent(inout) | :: | this | The equation for which the RHS is calculated. |
The interface for the PDE version of save_globals_1. This interface is consistent with eq_save_globals_1.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(cpde_equation), | intent(inout) | :: | this | The routine is called on this equation. |
The interface for the PDE version of save_globals_2. This interface is consistent with eq_save_globals_2.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(cpde_equation), | intent(inout) | :: | this | The routine is called on this equation. |
The interface for the PDE version of load_globals. This interface is consistent with eq_load_globals.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(cpde_equation), | intent(inout) | :: | this | The routine is called on this equation. |
A class derived from equation specific for PDE equations.
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
integer(kind=ip), | public | :: | ntmp | The number of temporary storage variables to allocate. |
|||
character(len=:), | public, | allocatable | :: | ename | The name of the system of equations |
||
integer(kind=ip), | public | :: | nmodes | The number of spherical harmonic modes. Should be moved to the specific implementation of the equation as this class should not be limited to systems using spherical harmonic decomposition. |
|||
integer(kind=ip), | public | :: | nvars | = | 3 | The number of variables per mode. Should probably be changed to be the total number of variables in order to make this independent of spherical harmonic decomposition. And the value should be set by the equation implementation. |
|
type(cgf), | public, | dimension(:,:), allocatable | :: | eq_data | A 2d array of complex grid functions that contains the data variables for the equation system. Should probably be changed to a 1d array to make this independent of spherical harmonic decomposition. |
||
type(cgf), | public, | dimension(:,:), allocatable | :: | eq_rhs_data | A 2d array of complex grid functions that contains the rhs variables for the equation system. Should probably be changed to a 1d array to make this independent of spherical harmonic decomposition. |
||
type(cgf), | public, | dimension(:,:,:), allocatable | :: | eq_tmp_data | A 3d array of complex grid functions that contains the temporary variables needed by the time integrator. Should probably be changed to a 2d array to make this independent of spherical harmonic decomposition. |
||
type(cgf_pointer), | public, | dimension(:,:,:), allocatable | :: | data_pointer | A 3d array of pointers to complex grid functions that points to the RHS variables (:,:,-1), the data variables (:,:,0) and the temporary variables (:,:,1:ntmp) for the equation system. Should probably be changed to a 2d array to make this independent of spherical harmonic decomposition. |
procedure(cpde_eq_init_interface), public, pass :: init | The init routine is deferred. |
procedure(cpde_eq_rhs_interface), public, pass :: rhs | The rhs routine is deferred. |
procedure, public :: set_to_zero => cpde_set_to_zero | The set_to_zero routine is provided by cpde_set_to_zero. |
procedure, public :: update_vars => cpde_update_vars | The update_vars routine is provided by cpde_update_vars. |
procedure(cpde_eq_save_globals_1), public, pass :: save_globals_1 | The save_globals_1 routine is deferred. |
procedure(cpde_eq_save_globals_2), public, pass :: save_globals_2 | The save_globals_2 routine is deferred. |
procedure(cpde_eq_load_globals), public, pass :: load_globals | The load_globals routine is deferred. |
procedure, public :: output => cpde_output | The output routine is provided by cpde_output. |
procedure, public :: print_data => cpde_print_data | The print_data routine is provided by cpde_print_data. |