- Timestamp:
- Jul 24, 2024, 1:27:51 PM (8 weeks ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ6/branches/Amaury_dev/libf/dyn3dmem/writedynav_loc.f90
r5113 r5114 1 2 1 ! $Id: writedynav_p.F 1279 2009-12-10 09:02:56Z fairhead $ 3 2 4 SUBROUTINE writedynav_loc( time, vcov, ucov,teta,ppk,phi,q, &5 masse, ps,phis)3 SUBROUTINE writedynav_loc(time, vcov, ucov, teta, ppk, phi, q, & 4 masse, ps, phis) 6 5 7 6 ! This routine needs IOIPSL … … 10 9 USE misc_mod 11 10 USE infotrac, ONLY: nqtot 12 use com_io_dyn_mod, ONLY: histaveid, histvaveid,histuaveid11 use com_io_dyn_mod, ONLY: histaveid, histvaveid, histuaveid 13 12 USE comconst_mod, ONLY: cpp 14 13 USE temps_mod, ONLY: itau_dyn 14 USE lmdz_description, ONLY: descript 15 15 16 16 IMPLICIT NONE … … 45 45 include "paramet.h" 46 46 include "comgeom.h" 47 include "description.h"48 47 include "iniprint.h" 49 48 … … 52 51 ! 53 52 54 REAL :: vcov(ijb_v:ije_v, llm),ucov(ijb_u:ije_u,llm)55 REAL :: teta(ijb_u:ije_u, llm),phi(ijb_u:ije_u,llm)56 REAL :: ppk(ijb_u:ije_u, llm)57 REAL :: ps(ijb_u:ije_u), masse(ijb_u:ije_u,llm)53 REAL :: vcov(ijb_v:ije_v, llm), ucov(ijb_u:ije_u, llm) 54 REAL :: teta(ijb_u:ije_u, llm), phi(ijb_u:ije_u, llm) 55 REAL :: ppk(ijb_u:ije_u, llm) 56 REAL :: ps(ijb_u:ije_u), masse(ijb_u:ije_u, llm) 58 57 REAL :: phis(ijb_u:ije_u) 59 REAL :: q(ijb_u:ije_u, llm,nqtot)58 REAL :: q(ijb_u:ije_u, llm, nqtot) 60 59 integer :: time 61 60 … … 64 63 ! Variables locales 65 64 ! 66 INTEGER, SAVE,ALLOCATABLE :: ndex2d(:),ndexu(:),ndexv(:)65 INTEGER, SAVE, ALLOCATABLE :: ndex2d(:), ndexu(:), ndexv(:) 67 66 INTEGER :: iq, ii, ll 68 REAL, SAVE,ALLOCATABLE :: tm(:,:)69 REAL, SAVE,ALLOCATABLE :: vnat(:,:),unat(:,:)67 REAL, SAVE, ALLOCATABLE :: tm(:, :) 68 REAL, SAVE, ALLOCATABLE :: vnat(:, :), unat(:, :) 70 69 logical :: ok_sync 71 70 integer :: itau_w 72 integer :: ijb, ije,jjn73 LOGICAL, SAVE :: first=.TRUE.74 !$OMP THREADPRIVATE(first)71 integer :: ijb, ije, jjn 72 LOGICAL, SAVE :: first = .TRUE. 73 !$OMP THREADPRIVATE(first) 75 74 76 75 ! … … 80 79 81 80 IF (first) THEN 82 !$OMP BARRIER83 !$OMP MASTER84 ALLOCATE(unat(ijb_u:ije_u, llm))85 ALLOCATE(vnat(ijb_v:ije_v, llm))86 ALLOCATE(tm(ijb_u:ije_u, llm))87 ALLOCATE(ndex2d(ijnb_u *llm))88 ALLOCATE(ndexu(ijnb_u *llm))89 ALLOCATE(ndexv(ijnb_v *llm))81 !$OMP BARRIER 82 !$OMP MASTER 83 ALLOCATE(unat(ijb_u:ije_u, llm)) 84 ALLOCATE(vnat(ijb_v:ije_v, llm)) 85 ALLOCATE(tm(ijb_u:ije_u, llm)) 86 ALLOCATE(ndex2d(ijnb_u * llm)) 87 ALLOCATE(ndexu(ijnb_u * llm)) 88 ALLOCATE(ndexv(ijnb_v * llm)) 90 89 ndex2d = 0 91 90 ndexu = 0 92 91 ndexv = 0 93 !$OMP END MASTER94 !$OMP BARRIER95 first =.FALSE.92 !$OMP END MASTER 93 !$OMP BARRIER 94 first = .FALSE. 96 95 ENDIF 97 96 … … 108 107 ! 109 108 110 !$OMP BARRIER111 !$OMP MASTER112 ijb =ij_begin113 ije =ij_end114 jjn =jj_nb115 116 CALL histwrite(histuaveid, 'u', itau_w, unat(ijb:ije, :), &117 iip1*jjn*llm, ndexu)118 !$OMP END MASTER109 !$OMP BARRIER 110 !$OMP MASTER 111 ijb = ij_begin 112 ije = ij_end 113 jjn = jj_nb 114 115 CALL histwrite(histuaveid, 'u', itau_w, unat(ijb:ije, :), & 116 iip1 * jjn * llm, ndexu) 117 !$OMP END MASTER 119 118 120 119 ! 121 120 ! Vents V 122 121 ! 123 ije =ij_end124 if (pole_sud) jjn =jj_nb-1125 if (pole_sud) ije =ij_end-iip1126 !$OMP BARRIER127 !$OMP MASTER128 CALL histwrite(histvaveid, 'v', itau_w, vnat(ijb:ije, :), &129 iip1*jjn*llm, ndexv)130 !$OMP END MASTER122 ije = ij_end 123 if (pole_sud) jjn = jj_nb - 1 124 if (pole_sud) ije = ij_end - iip1 125 !$OMP BARRIER 126 !$OMP MASTER 127 CALL histwrite(histvaveid, 'v', itau_w, vnat(ijb:ije, :), & 128 iip1 * jjn * llm, ndexv) 129 !$OMP END MASTER 131 130 132 131 … … 134 133 ! Temperature potentielle moyennee 135 134 ! 136 ijb =ij_begin137 ije =ij_end138 jjn =jj_nb139 !$OMP MASTER140 CALL histwrite(histaveid, 'theta', itau_w, teta(ijb:ije, :), &141 iip1*jjn*llm, ndexu)142 !$OMP END MASTER135 ijb = ij_begin 136 ije = ij_end 137 jjn = jj_nb 138 !$OMP MASTER 139 CALL histwrite(histaveid, 'theta', itau_w, teta(ijb:ije, :), & 140 iip1 * jjn * llm, ndexu) 141 !$OMP END MASTER 143 142 144 143 ! … … 146 145 ! 147 146 148 !$OMP DO SCHEDULE(STATIC,OMP_CHUNK)149 do ll =1,llm147 !$OMP DO SCHEDULE(STATIC,OMP_CHUNK) 148 do ll = 1, llm 150 149 do ii = ijb, ije 151 tm(ii, ll) = teta(ii,ll) * ppk(ii,ll)/cpp150 tm(ii, ll) = teta(ii, ll) * ppk(ii, ll) / cpp 152 151 enddo 153 152 enddo 154 !$OMP ENDDO155 156 !$OMP MASTER157 CALL histwrite(histaveid, 'temp', itau_w, tm(ijb:ije, :), &158 iip1*jjn*llm, ndexu)159 !$OMP END MASTER153 !$OMP ENDDO 154 155 !$OMP MASTER 156 CALL histwrite(histaveid, 'temp', itau_w, tm(ijb:ije, :), & 157 iip1 * jjn * llm, ndexu) 158 !$OMP END MASTER 160 159 161 160 … … 163 162 ! Geopotentiel 164 163 ! 165 !$OMP MASTER166 CALL histwrite(histaveid, 'phi', itau_w, phi(ijb:ije, :), &167 iip1*jjn*llm, ndexu)168 !$OMP END MASTER164 !$OMP MASTER 165 CALL histwrite(histaveid, 'phi', itau_w, phi(ijb:ije, :), & 166 iip1 * jjn * llm, ndexu) 167 !$OMP END MASTER 169 168 170 169 … … 183 182 ! Masse 184 183 ! 185 !$OMP MASTER186 CALL histwrite(histaveid, 'masse', itau_w, masse(ijb:ije,:), &187 iip1*jjn*llm, ndexu)188 !$OMP END MASTER184 !$OMP MASTER 185 CALL histwrite(histaveid, 'masse', itau_w, masse(ijb:ije, :), & 186 iip1 * jjn * llm, ndexu) 187 !$OMP END MASTER 189 188 190 189 … … 192 191 ! Pression au sol 193 192 ! 194 !$OMP MASTER195 196 197 iip1*jjn, ndex2d)198 !$OMP END MASTER193 !$OMP MASTER 194 195 CALL histwrite(histaveid, 'ps', itau_w, ps(ijb:ije), & 196 iip1 * jjn, ndex2d) 197 !$OMP END MASTER 199 198 200 199 ! 201 200 ! Geopotentiel au sol 202 201 ! 203 !$OMP MASTER204 202 !$OMP MASTER 203 ! CALL histwrite(histaveid, 'phis', itau_w, phis(ijb:ije), 205 204 ! . iip1*jjn, ndex2d) 206 !$OMP END MASTER205 !$OMP END MASTER 207 206 208 207 ! 209 208 ! Fin 210 209 ! 211 !$OMP MASTER210 !$OMP MASTER 212 211 if (ok_sync) then 213 214 215 212 CALL histsync(histaveid) 213 CALL histsync(histvaveid) 214 CALL histsync(histuaveid) 216 215 ENDIF 217 !$OMP END MASTER216 !$OMP END MASTER 218 217 end subroutine writedynav_loc
Note: See TracChangeset
for help on using the changeset viewer.