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)