module containing all the informations and subroutines about the state of a solver.
Data type to describe the state of an equation in a solver.
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
type(tem_time_type), | private | :: | local_time | Local time of this kernel |
|||
real(kind=rk), | private | :: | local_output_time | Local output time of this kernel |
|||
real(kind=rk), | private, | allocatable | :: | state(:,:,:) | State collects the states of the variables of our simulation. So the dimension of this array is as follows: The first dimension is the number of elements. If we assume that our atl_kerneldata_type variable is located inside cube_container_type%state_list(index) then the number of elements is given by cube_container_type%mesh_list(index)%descriptor%nElems_fluid + cube_container_type%mesh_list(index)%descriptor%nElems_ghostFromCoarser + cube_container_type%mesh_list(index)%descriptor%nElems_ghostFromFiner + cube_container_type%mesh_list(index)%descriptor%nElems_halo . The second dimension is the number of degree of freedoms. This information is stored in side atl_kerneldata_type%scheme%nDoFs and no where else, since p-adaptivity might change the number of degrees of freedoms for other parts of the mesh. The third dimension is the number of variables we have to simulate for our equation(s). It is stored inside Equations_type%nScalars. |
Data type to describe the kernelstate of a specific kernel.
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
integer, | private | :: | nTotal | The total number of cells (including only fluid, ghost, halo and boundary cells). |
|||
integer, | private | :: | nVars | The number of scalar variables of the current equation. |
|||
integer, | private | :: | maxPolyDegree | Maximal polynomial degree of the data in this kerneldata. |
|||
integer, | private | :: | poly_space | Chosen tensor kind of the polynomial representation in this kerneldata. |
|||
integer, | private | :: | nDims | Number of dimensions of the polynomial in this kerneldata. |
|||
integer, | private | :: | nDofs | The number of degrees of freedom per scalar variable of your equation. |
|||
integer, | private | :: | nDervQuant | The number of derived quantities the kernel will use in the future. |
|||
real(kind=rk), | private, | allocatable | :: | state_der(:,:,:) | array of derived states. Could be anything like derivatives face values, etc. The only thing that is important is that the kernel has to handle the data consistently. The first dimension is the number of elemnts (including fluid, ghost, halo and boundary cells). The second dimension is the number of derived quantities (e.g. the fave value and derivatives at the faces). The exact meaning of this dimension is specified by the kernel. The third dimension is the number of informations per derived quantity per cell (e.g. the number of faces times the quadrature points). The exact meaning of this dimension is specified by the kernel. The fourth dimension is the number of varibales of the equation. |
||
logical, | private | :: | need_deviation | = | .false. | Flag to indicate, whether to compute the deviation. |
|
logical, | private | :: | need_maxgrad | = | .false. | Flag to indicate, whether to compute maximal estimates for derivatives. |
|
real(kind=rk), | private, | allocatable | :: | deviation(:,:) | Maximal deviation bound of the polynomial in state. |
||
real(kind=rk), | private, | allocatable | :: | maxgrad(:,:) | Limit for maximal size of derivative in state. |
Initialize the statedata.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(atl_statedata_type), | intent(inout) | :: | statedata | |||
integer, | intent(in) | :: | nTotal | The total number of cells (including only fluid, ghost, halo and boundary cells). |
||
integer, | intent(in) | :: | nDofs | The number of degrees of freedom per scalar variable of your equation. |
||
integer, | intent(in) | :: | nVars | The number of scalar variables of the current equation. |
||
type(tem_time_type), | intent(in) | :: | time | current time |
init routine for the kerneldata type.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(atl_kerneldata_type), | intent(inout) | :: | kerneldata | The data type to initialize. |
||
type(atl_statedata_type), | intent(inout) | :: | statedata | The data type to initialize. |
||
integer, | intent(in) | :: | nTotal | The total number of cells (including only fluid, ghost, halo and boundary cells). |
||
integer, | intent(in) | :: | nVars | The number of scalar variables of the current equation. |
||
integer, | intent(in) | :: | nDofs | The number of degrees of freedom per scalar variable of your equation. |
||
integer, | intent(in) | :: | nDervQuant | The number of derived quantities the kernel will use in the future. |
||
type(tem_time_type), | intent(in) | :: | time | current time |
||
integer, | intent(in) | :: | maxPolyDegree | The maximal polynomial degree in each spatial direction. |
||
integer, | intent(in) | :: | nDims | Number of dimensions for the polynomials in the kerneldata. |
||
integer, | intent(in) | :: | poly_space | Kind of tensor product used to represent multidimensional polynomials in this kerneldata. |
||
logical, | intent(in) | :: | need_deviation | Should the maximal deviation be computed for the state? |
||
logical, | intent(in) | :: | need_maxgrad | Should the maximal gradient be computed for the state? |
Find the maximal deviation for the polynomials representing the state in each element.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(atl_statedata_type), | intent(in) | :: | statedata | The statedata to update the bounds for. deviation of kerneldata will be recomputed according to the statedata. |
||
type(atl_kerneldata_type), | intent(inout) | :: | kerneldata | The kerneldata storing the deviation, this will be updated according to the data provided in statedata. |
Find the maximal gradient estimation for the polynomials representing the state in each element.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(atl_statedata_type), | intent(in) | :: | statedata | The statedata to update the bounds for. maxgrad of kerneldata will be recomputed according to the statedata. |
||
type(atl_kerneldata_type), | intent(inout) | :: | kerneldata | The kerneldata storing the gradients, this will be updated according to the data provided in statedata. |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(atl_statedata_type), | intent(in) | :: | statedata | The statedata to update the estimates for. maxgrad of kerneldata will be recomputed according to the statedata. |
||
type(atl_kerneldata_type), | intent(inout) | :: | kerneldata | The kerneldata storing the estimates, this will be updated according to the data provided in statedata. |