Module with geometry-related routines (e.g., divergence, curl)
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| integer, | public, | parameter | :: | Cartesian | = | 0 | |
| integer, | public, | parameter | :: | Cartesian_expansion | = | 4 | |
| integer, | public, | parameter | :: | Cartesian_stretched | = | 1 | |
| integer, | public, | parameter | :: | Gaussbased | = | 2 | |
| integer, | public, | parameter | :: | Stokesbased | = | 3 | |
| integer, | public, | parameter | :: | central | = | 1 | |
| integer, | public | :: | coordinate | = | -1 | ||
| integer, | public, | parameter | :: | cylindrical | = | 2 | |
| integer, | public, | parameter | :: | spherical | = | 3 | |
| integer, | public | :: | type_curl | = | 0 |
The radial coordinate map, from the logical coordinate s to the physical radius r, and its inverse.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| double precision, | intent(in) | :: | s |
Inverse of r_of_s. See there.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| double precision, | intent(in) | :: | r |
Calculate curl of a vector qvec within ixL Options to employ standard second order CD evaluations use Gauss theorem for non-Cartesian grids use Stokes theorem for non-Cartesian grids
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| double precision, | intent(in) | :: | qvec(ixImin1:ixImax1,ixImin2:ixImax2,ixImin3:ixImax3,1:ndir0) | |||
| 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) | :: | curlvec(ixImin1:ixImax1,ixImin2:ixImax2,ixImin3:ixImax3,idirmin0:3) | |||
| integer, | intent(inout) | :: | idirmin | |||
| integer, | intent(in) | :: | idirmin0 | |||
| integer, | intent(in) | :: | ndir0 | |||
| logical, | intent(in), | optional | :: | fourthorder |
Calculate divergence of a vector qvec within ixL
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| double precision, | intent(in) | :: | qvec(ixImin1:ixImax1,ixImin2:ixImax2,ixImin3:ixImax3,1:ndir) | |||
| 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) | :: | divq(ixImin1:ixImax1,ixImin2:ixImax2,ixImin3:ixImax3) | |||
| logical, | intent(in), | optional | :: | fourthorder |
Default: false |
|
| logical, | intent(in), | optional | :: | sixthorder |
Default: false |
Calculate divergence of a vector qvec within ixL using limited extrapolation to cell edges
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| double precision, | intent(in) | :: | qvec(ixImin1:ixImax1,ixImin2:ixImax2,ixImin3:ixImax3,1:ndir) | |||
| 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) | :: | divq(ixImin1:ixImax1,ixImin2:ixImax2,ixImin3:ixImax3) |
Calculate gradient of a scalar q within ixL in direction idir
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| double precision, | intent(in) | :: | q(ixImin1:ixImax1,ixImin2:ixImax2,ixImin3:ixImax3) | |||
| 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 | |||
| integer, | intent(in) | :: | idir | |||
| double precision, | intent(inout) | :: | gradq(ixImin1:ixImax1,ixImin2:ixImax2,ixImin3:ixImax3) |
Set the coordinate system to be used
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| character(len=*), | intent(in) | :: | geom |
Name of the coordinate system |
Return a block's whole geometry - positions and metrics alike - from the device to the host, for every grid the host is about to read.
Return cell-centre positions from the device to the host.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| integer, | intent(in), | optional | :: | igrid |