43     equivalence(rnan,inan)
 
   55   REAL,
POINTER :: field(:)
 
   60     IF (
ASSOCIATED(field)) 
DEALLOCATE(field)
 
   61     ALLOCATE(field(d%ijb_u:d%ije_u))
 
   71   REAL,
POINTER :: field(:,:)
 
   77     IF (
ASSOCIATED(field)) 
DEALLOCATE(field)
 
   78     ALLOCATE(field(d%ijb_u:d%ije_u,dim1))
 
   87   REAL,
POINTER :: field(:,:,:)
 
   93     IF (
ASSOCIATED(field)) 
DEALLOCATE(field)
 
   94     ALLOCATE(field(d%ijb_u:d%ije_u,dim1,dim2))
 
  105   REAL,
POINTER :: field(:)
 
  110     IF (
ASSOCIATED(field)) 
DEALLOCATE(field)
 
  111     ALLOCATE(field(d%ijb_v:d%ije_v))
 
  121   REAL,
POINTER :: field(:,:)
 
  127     IF (
ASSOCIATED(field)) 
DEALLOCATE(field)
 
  128     ALLOCATE(field(d%ijb_v:d%ije_v,dim1))
 
  137   REAL,
POINTER :: field(:,:,:)
 
  143     IF (
ASSOCIATED(field)) 
DEALLOCATE(field)
 
  144     ALLOCATE(field(d%ijb_v:d%ije_v,dim1,dim2))
 
  162   REAL,
POINTER :: field(:,:)
 
  167     IF (
ASSOCIATED(field)) 
DEALLOCATE(field)
 
  168     ALLOCATE(field(iip1,d%jjb_u:d%jje_u))
 
  179   REAL,
POINTER :: field(:,:,:)
 
  185     IF (
ASSOCIATED(field)) 
DEALLOCATE(field)
 
  186     ALLOCATE(field(iip1,d%jjb_u:d%jje_u,dim1))
 
  196   REAL,
POINTER :: field(:,:,:,:)
 
  202     IF (
ASSOCIATED(field)) 
DEALLOCATE(field)
 
  203     ALLOCATE(field(iip1,d%jjb_u:d%jje_u,dim1,dim2))
 
  215   REAL,
POINTER :: field(:,:)
 
  220     IF (
ASSOCIATED(field)) 
DEALLOCATE(field)
 
  221     ALLOCATE(field(iip1,d%jjb_v:d%jje_v))
 
  232   REAL,
POINTER :: field(:,:,:)
 
  238     IF (
ASSOCIATED(field)) 
DEALLOCATE(field)
 
  239     ALLOCATE(field(iip1,d%jjb_v:d%jje_v,dim1))
 
  249   REAL,
POINTER :: field(:,:,:,:)
 
  255     IF (
ASSOCIATED(field)) 
DEALLOCATE(field)
 
  256     ALLOCATE(field(iip1,d%jjb_v:d%jje_v,dim1,dim2))
 
  280   SUBROUTINE switch1d_u1d(field,old_dist,new_dist,up,down)
 
  284   REAL,
POINTER :: field(:)
 
  285   TYPE(
distrib),
INTENT(IN) :: old_dist
 
  286   TYPE(
distrib),
INTENT(IN) :: new_dist
 
  287   INTEGER, 
OPTIONAL,
INTENT(IN) :: up
 
  288   INTEGER, 
OPTIONAL,
INTENT(IN) :: down
 
  290   REAL,
POINTER,
SAVE :: new_field(:)
 
  295     ALLOCATE(new_field(new_dist%ijb_u:new_dist%ije_u))
 
  316   SUBROUTINE switch2d_u1d(field,old_dist,new_dist,up,down)
 
  320   REAL,
POINTER :: field(:,:)
 
  321   TYPE(
distrib),
INTENT(IN) :: old_dist
 
  322   TYPE(
distrib),
INTENT(IN) :: new_dist
 
  323   INTEGER, 
OPTIONAL,
INTENT(IN) :: up
 
  324   INTEGER, 
OPTIONAL,
INTENT(IN) :: down
 
  326   REAL,
POINTER,
SAVE :: new_field(:,:)
 
  331     ALLOCATE(new_field(new_dist%ijb_u:new_dist%ije_u,
size(field,2)))
 
  352   SUBROUTINE switch3d_u1d(field,old_dist,new_dist,up,down)
 
  356   REAL,
POINTER :: field(:,:,:)
 
  357   TYPE(
distrib),
INTENT(IN) :: old_dist
 
  358   TYPE(
distrib),
INTENT(IN) :: new_dist
 
  359   INTEGER, 
OPTIONAL,
INTENT(IN) :: up
 
  360   INTEGER, 
OPTIONAL,
INTENT(IN) :: down
 
  362   REAL,
POINTER,
SAVE :: new_field(:,:,:)
 
  367     ALLOCATE(new_field(new_dist%ijb_u:new_dist%ije_u,
size(field,2),
size(field,3)))
 
  391   SUBROUTINE switch1d_v1d(field,old_dist,new_dist,up,down)
 
  395   REAL,
POINTER :: field(:)
 
  396   TYPE(
distrib),
INTENT(IN) :: old_dist
 
  397   TYPE(
distrib),
INTENT(IN) :: new_dist
 
  398   INTEGER, 
OPTIONAL,
INTENT(IN) :: up
 
  399   INTEGER, 
OPTIONAL,
INTENT(IN) :: down
 
  401   REAL,
POINTER,
SAVE :: new_field(:)
 
  406     ALLOCATE(new_field(new_dist%ijb_v:new_dist%ije_v))
 
  427   SUBROUTINE switch2d_v1d(field,old_dist,new_dist,up,down)
 
  431   REAL,
POINTER :: field(:,:)
 
  432   TYPE(
distrib),
INTENT(IN) :: old_dist
 
  433   TYPE(
distrib),
INTENT(IN) :: new_dist
 
  434   INTEGER, 
OPTIONAL,
INTENT(IN) :: up
 
  435   INTEGER, 
OPTIONAL,
INTENT(IN) :: down
 
  437   REAL,
POINTER,
SAVE :: new_field(:,:)
 
  442     ALLOCATE(new_field(new_dist%ijb_v:new_dist%ije_v,
size(field,2)))
 
  463   SUBROUTINE switch3d_v1d(field,old_dist,new_dist,up,down)
 
  467   REAL,
POINTER :: field(:,:,:)
 
  468   TYPE(
distrib),
INTENT(IN) :: old_dist
 
  469   TYPE(
distrib),
INTENT(IN) :: new_dist
 
  470   INTEGER, 
OPTIONAL,
INTENT(IN) :: up
 
  471   INTEGER, 
OPTIONAL,
INTENT(IN) :: down
 
  473   REAL,
POINTER,
SAVE :: new_field(:,:,:)
 
  478     ALLOCATE(new_field(new_dist%ijb_v:new_dist%ije_v,
size(field,2),
size(field,3)))
 
  510   SUBROUTINE switch1d_u2d(field,old_dist,new_dist,up,down)
 
  515   REAL,
POINTER :: field(:,:)
 
  516   TYPE(
distrib),
INTENT(IN) :: old_dist
 
  517   TYPE(
distrib),
INTENT(IN) :: new_dist
 
  518   INTEGER, 
OPTIONAL,
INTENT(IN) :: up
 
  519   INTEGER, 
OPTIONAL,
INTENT(IN) :: down
 
  521   REAL,
POINTER,
SAVE :: new_field(:,:)
 
  526     ALLOCATE(new_field(iip1,new_dist%jjb_u:new_dist%jje_u))
 
  547   SUBROUTINE switch2d_u2d(field,old_dist,new_dist,up,down)
 
  552   REAL,
POINTER :: field(:,:,:)
 
  553   TYPE(
distrib),
INTENT(IN) :: old_dist
 
  554   TYPE(
distrib),
INTENT(IN) :: new_dist
 
  555   INTEGER, 
OPTIONAL,
INTENT(IN) :: up
 
  556   INTEGER, 
OPTIONAL,
INTENT(IN) :: down
 
  558   REAL,
POINTER,
SAVE :: new_field(:,:,:)
 
  563     ALLOCATE(new_field(iip1,new_dist%jjb_u:new_dist%jje_u,
size(field,3)))
 
  584   SUBROUTINE switch3d_u2d(field,old_dist,new_dist,up,down)
 
  589   REAL,
POINTER :: field(:,:,:,:)
 
  590   TYPE(
distrib),
INTENT(IN) :: old_dist
 
  591   TYPE(
distrib),
INTENT(IN) :: new_dist
 
  592   INTEGER, 
OPTIONAL,
INTENT(IN) :: up
 
  593   INTEGER, 
OPTIONAL,
INTENT(IN) :: down
 
  595   REAL,
POINTER,
SAVE :: new_field(:,:,:,:)
 
  600     ALLOCATE(new_field(iip1,new_dist%jjb_u:new_dist%jje_u,
size(field,3),
size(field,4)))
 
  624   SUBROUTINE switch1d_v2d(field,old_dist,new_dist,up,down)
 
  629   REAL,
POINTER :: field(:,:)
 
  630   TYPE(
distrib),
INTENT(IN) :: old_dist
 
  631   TYPE(
distrib),
INTENT(IN) :: new_dist
 
  632   INTEGER, 
OPTIONAL,
INTENT(IN) :: up
 
  633   INTEGER, 
OPTIONAL,
INTENT(IN) :: down
 
  635   REAL,
POINTER,
SAVE :: new_field(:,:)
 
  640     ALLOCATE(new_field(iip1,new_dist%jjb_v:new_dist%jje_v))
 
  661   SUBROUTINE switch2d_v2d(field,old_dist,new_dist,up,down)
 
  666   REAL,
POINTER :: field(:,:,:)
 
  667   TYPE(
distrib),
INTENT(IN) :: old_dist
 
  668   TYPE(
distrib),
INTENT(IN) :: new_dist
 
  669   INTEGER, 
OPTIONAL,
INTENT(IN) :: up
 
  670   INTEGER, 
OPTIONAL,
INTENT(IN) :: down
 
  672   REAL,
POINTER,
SAVE :: new_field(:,:,:)
 
  677     ALLOCATE(new_field(iip1,new_dist%jjb_v:new_dist%jje_v,
size(field,3)))
 
  698   SUBROUTINE switch3d_v2d(field,old_dist,new_dist,up,down)
 
  703   REAL,
POINTER :: field(:,:,:,:)
 
  704   TYPE(
distrib),
INTENT(IN) :: old_dist
 
  705   TYPE(
distrib),
INTENT(IN) :: new_dist
 
  706   INTEGER, 
OPTIONAL,
INTENT(IN) :: up
 
  707   INTEGER, 
OPTIONAL,
INTENT(IN) :: down
 
  709   REAL,
POINTER,
SAVE :: new_field(:,:,:,:)
 
  714     ALLOCATE(new_field(iip1,new_dist%jjb_v:new_dist%jje_v,
size(field,3),
size(field,4)))
 
subroutine allocate2d_v2d(field, dim1, d)
 
subroutine switch3d_u1d(field, old_dist, new_dist, up, down)
 
subroutine allocate1d_u2d(field, d)
 
subroutine allocate3d_v2d(field, dim1, dim2, d)
 
subroutine allocate2d_u2d(field, dim1, d)
 
subroutine switch3d_v1d(field, old_dist, new_dist, up, down)
 
subroutine allocate3d_v1d(field, dim1, dim2, d)
 
subroutine allocate1d_v1d(field, d)
 
subroutine switch2d_u2d(field, old_dist, new_dist, up, down)
 
subroutine switch2d_v1d(field, old_dist, new_dist, up, down)
 
subroutine switch3d_v2d(field, old_dist, new_dist, up, down)
 
subroutine switch2d_v2d(field, old_dist, new_dist, up, down)
 
subroutine sendrequest(a_Request)
 
subroutine allocate2d_u1d(field, dim1, d)
 
subroutine allocate1d_u1d(field, d)
 
subroutine switch1d_v1d(field, old_dist, new_dist, up, down)
 
subroutine switch1d_v2d(field, old_dist, new_dist, up, down)
 
subroutine allocate3d_u2d(field, dim1, dim2, d)
 
subroutine switch3d_u2d(field, old_dist, new_dist, up, down)
 
subroutine allocate3d_u1d(field, dim1, dim2, d)
 
subroutine switch1d_u1d(field, old_dist, new_dist, up, down)
 
subroutine switch1d_u2d(field, old_dist, new_dist, up, down)
 
subroutine switch2d_u1d(field, old_dist, new_dist, up, down)
 
subroutine allocate1d_v2d(field, d)
 
subroutine allocate2d_v1d(field, dim1, d)
 
subroutine waitrequest(a_Request)