| 1 | subroutine reverse4d(nlon,nlat,np,nt,newf) | 
|---|
| 2 | !============================================================================== | 
|---|
| 3 | ! Purpose: | 
|---|
| 4 | ! reverse lat, lon and vertical axis on a 3D+time field | 
|---|
| 5 | !============================================================================== | 
|---|
| 6 | implicit none | 
|---|
| 7 | !============================================================================== | 
|---|
| 8 | ! Arguments: | 
|---|
| 9 | !============================================================================== | 
|---|
| 10 | integer,intent(in) :: nlon ! longitude size | 
|---|
| 11 | integer,intent(in) :: nlat ! latitude size | 
|---|
| 12 | integer,intent(in) :: np   ! vertical size | 
|---|
| 13 | integer,intent(in) :: nt   ! time size | 
|---|
| 14 | real,intent(inout),dimension(nlon,nlat,np,nt) :: newf ! field to be reversed | 
|---|
| 15 |  | 
|---|
| 16 | !============================================================================== | 
|---|
| 17 | ! Local variables: | 
|---|
| 18 | !============================================================================== | 
|---|
| 19 | integer :: i,j,k,l | 
|---|
| 20 | real,dimension(nlon,nlat,np,nt) :: tmp,tmp2 ! reversed fields | 
|---|
| 21 | include "planet.h" | 
|---|
| 22 |  | 
|---|
| 23 | ! Vertical axis: | 
|---|
| 24 |     do k=1,np | 
|---|
| 25 |           tmp(:,:,k,:)=newf(:,:,np+1-k,:) | 
|---|
| 26 |     enddo | 
|---|
| 27 | ! horizontal dimensions | 
|---|
| 28 | if(planet.eq."Venus") then | 
|---|
| 29 |   do l=1,nt | 
|---|
| 30 |       do i=1,nlat | 
|---|
| 31 |         do j=1,nlon | 
|---|
| 32 |           tmp2(j,i,:,l)=tmp(nlon+1-j,nlat+1-i,:,l) | 
|---|
| 33 |         enddo | 
|---|
| 34 |       enddo | 
|---|
| 35 |   enddo | 
|---|
| 36 | else | 
|---|
| 37 |   tmp2=tmp | 
|---|
| 38 | endif | 
|---|
| 39 |  | 
|---|
| 40 | newf=tmp2 | 
|---|
| 41 |  | 
|---|
| 42 | end subroutine reverse4d | 
|---|
| 43 |  | 
|---|
| 44 | !=============================================================================== | 
|---|
| 45 |  | 
|---|
| 46 | subroutine reverse2d(nlon,nlat,newf) | 
|---|
| 47 | !============================================================================== | 
|---|
| 48 | ! Purpose: | 
|---|
| 49 | ! reverse lat and lon on a 2D field | 
|---|
| 50 | !============================================================================== | 
|---|
| 51 | implicit none | 
|---|
| 52 | !============================================================================== | 
|---|
| 53 | ! Arguments: | 
|---|
| 54 | !============================================================================== | 
|---|
| 55 | integer,intent(in) :: nlon ! longitude size | 
|---|
| 56 | integer,intent(in) :: nlat ! latitude size | 
|---|
| 57 | real,intent(inout),dimension(nlon,nlat) :: newf ! field to be reversed | 
|---|
| 58 |  | 
|---|
| 59 | !============================================================================== | 
|---|
| 60 | ! Local variables: | 
|---|
| 61 | !============================================================================== | 
|---|
| 62 | integer :: i,j | 
|---|
| 63 | real,dimension(nlon,nlat) :: tmp ! reversed field | 
|---|
| 64 |  | 
|---|
| 65 |       do i=1,nlat | 
|---|
| 66 |         do j=1,nlon | 
|---|
| 67 |           tmp(j,i)=newf(nlon+1-j,nlat+1-i) | 
|---|
| 68 |         enddo | 
|---|
| 69 |       enddo | 
|---|
| 70 | newf=tmp | 
|---|
| 71 |  | 
|---|
| 72 | end subroutine reverse2d | 
|---|
| 73 |  | 
|---|
| 74 | !=============================================================================== | 
|---|
| 75 |  | 
|---|
| 76 | subroutine reverse3d(nlon,nlat,nt,newf) | 
|---|
| 77 | !============================================================================== | 
|---|
| 78 | ! Purpose: | 
|---|
| 79 | ! reverse lat and lon on a 2D+time field | 
|---|
| 80 | !============================================================================== | 
|---|
| 81 | implicit none | 
|---|
| 82 | !============================================================================== | 
|---|
| 83 | ! Arguments: | 
|---|
| 84 | !============================================================================== | 
|---|
| 85 | integer,intent(in) :: nlon ! longitude size | 
|---|
| 86 | integer,intent(in) :: nlat ! latitude size | 
|---|
| 87 | integer,intent(in) :: nt ! time size | 
|---|
| 88 | real,intent(inout),dimension(nlon,nlat,nt) :: newf ! field to be reversed | 
|---|
| 89 |  | 
|---|
| 90 | !============================================================================== | 
|---|
| 91 | ! Local variables: | 
|---|
| 92 | !============================================================================== | 
|---|
| 93 | integer :: i,j,l | 
|---|
| 94 | real,dimension(nlon,nlat,nt) :: tmp ! reversed field | 
|---|
| 95 |  | 
|---|
| 96 |   do l=1,nt | 
|---|
| 97 |       do i=1,nlat | 
|---|
| 98 |         do j=1,nlon | 
|---|
| 99 |           tmp(j,i,l)=newf(nlon+1-j,nlat+1-i,l) | 
|---|
| 100 |         enddo | 
|---|
| 101 |       enddo | 
|---|
| 102 |   enddo | 
|---|
| 103 | newf=tmp | 
|---|
| 104 |  | 
|---|
| 105 | end subroutine reverse3d | 
|---|
| 106 |  | 
|---|
| 107 | !=============================================================================== | 
|---|
| 108 |  | 
|---|
| 109 | subroutine reverselev(np,newf) | 
|---|
| 110 | !============================================================================== | 
|---|
| 111 | ! Purpose: | 
|---|
| 112 | ! reverse vertical pressure axis  | 
|---|
| 113 | !============================================================================== | 
|---|
| 114 | implicit none | 
|---|
| 115 | !============================================================================== | 
|---|
| 116 | ! Arguments: | 
|---|
| 117 | !============================================================================== | 
|---|
| 118 | integer,intent(in) :: np   ! vertical size | 
|---|
| 119 | real,intent(inout),dimension(np) :: newf ! field to be reversed | 
|---|
| 120 |  | 
|---|
| 121 | !============================================================================== | 
|---|
| 122 | ! Local variables: | 
|---|
| 123 | !============================================================================== | 
|---|
| 124 | integer :: k | 
|---|
| 125 | real,dimension(np) :: tmp ! reversed field | 
|---|
| 126 |  | 
|---|
| 127 |     do k=1,np | 
|---|
| 128 |           tmp(k)=newf(np+1-k) | 
|---|
| 129 |     enddo | 
|---|
| 130 | newf=tmp | 
|---|
| 131 |  | 
|---|
| 132 | end subroutine reverselev | 
|---|