| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| type(fake_neighbors), | public, | dimension(:,:,:,:,:), allocatable | :: | fine_neighbors | |||
| integer, | public, | dimension(:,:,:,:,:), allocatable | :: | old_neighbor | |||
| type(facealloc), | public, | dimension(:,:,:), allocatable | :: | pface | |||
| integer, | private | :: | ibuf_recv | ||||
| integer, | private | :: | ibuf_send | ||||
| integer, | private | :: | ibuf_send_next | ||||
| integer, | private | :: | irecv | ||||
| integer, | private | :: | isend | ||||
| integer, | private, | dimension(3) | :: | isize | |||
| integer, | private | :: | itag | ||||
| integer, | private | :: | nrecv | ||||
| integer, | private | :: | nsend | ||||
| double precision, | private, | allocatable | :: | recvbuffer(:) | |||
| integer, | private, | dimension(:), allocatable | :: | recvrequest | |||
| integer, | private, | dimension(:,:), allocatable | :: | recvstatus | |||
| double precision, | private, | allocatable | :: | sendbuffer(:) | |||
| integer, | private, | dimension(:), allocatable | :: | sendrequest | |||
| integer, | private, | dimension(:,:), allocatable | :: | sendstatus |
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| double precision, | public, | dimension(:,:,:), pointer | :: | face |
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| integer, | public | :: | igrid | ||||
| integer, | public | :: | ipe |
This routine fills the fine faces before prolonging. It is the face equivalent of fix_conserve
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(state) | :: | sFi | ||||
| integer, | intent(in) | :: | ichild | |||
| logical | :: | fine_min1 | ||||
| logical | :: | fine_min2 | ||||
| logical | :: | fine_min3 | ||||
| logical | :: | fine_max1 | ||||
| logical | :: | fine_max2 | ||||
| logical | :: | fine_max3 |
When refining a coarse block with fine neighbours, it is necessary prolong consistently with the already fine faces. This routine takes care of the communication of such faces.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| integer, | intent(in), | dimension(2,2,2) | :: | child_igrid | ||
| integer, | intent(in), | dimension(2,2,2) | :: | child_ipe | ||
| integer, | intent(in) | :: | igrid | |||
| integer, | intent(in) | :: | ipe |
This subroutine performs a 2nd order prolongation for a staggered field F, preserving the divergence of the coarse cell. This is useful for preserving DivF=0. If DivF=f(x), a different algorithm must be used.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(state), | intent(in) | :: | sCo | |||
| type(state), | intent(inout) | :: | sFi | |||
| integer, | intent(in) | :: | ixComin1in | |||
| integer, | intent(in) | :: | ixComin2in | |||
| integer, | intent(in) | :: | ixComin3in | |||
| integer, | intent(in) | :: | ixComax1in | |||
| integer, | intent(in) | :: | ixComax2in | |||
| integer, | intent(in) | :: | ixComax3in | |||
| integer, | intent(in) | :: | ixFimin1in | |||
| integer, | intent(in) | :: | ixFimin2in | |||
| integer, | intent(in) | :: | ixFimin3in | |||
| integer, | intent(in) | :: | ixFimax1in | |||
| integer, | intent(in) | :: | ixFimax2in | |||
| integer, | intent(in) | :: | ixFimax3in | |||
| double precision, | intent(in) | :: | dxCo1 | |||
| double precision, | intent(in) | :: | dxCo2 | |||
| double precision, | intent(in) | :: | dxCo3 | |||
| double precision, | intent(in) | :: | xComin1 | |||
| double precision, | intent(in) | :: | xComin2 | |||
| double precision, | intent(in) | :: | xComin3 | |||
| double precision, | intent(in) | :: | dxFi1 | |||
| double precision, | intent(in) | :: | dxFi2 | |||
| double precision, | intent(in) | :: | dxFi3 | |||
| double precision, | intent(in) | :: | xFimin1 | |||
| double precision, | intent(in) | :: | xFimin2 | |||
| double precision, | intent(in) | :: | xFimin3 | |||
| logical, | intent(in) | :: | ghost | |||
| logical, | optional | :: | fine_min1in | |||
| logical, | optional | :: | fine_min2in | |||
| logical, | optional | :: | fine_min3in | |||
| logical, | optional | :: | fine_max1in | |||
| logical, | optional | :: | fine_max2in | |||
| logical, | optional | :: | fine_max3in |
To achive consistency and thus conservation of divergence, when refining a block we take into account the faces of the already fine neighbours, if any. This routine stores them.