Changeset 1707 for LMDZ5/branches/testing/libf/dyn3dmem/integrd_loc.F
- Timestamp:
- Jan 11, 2013, 10:19:19 AM (11 years ago)
- Location:
- LMDZ5/branches/testing
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ5/branches/testing
- Property svn:mergeinfo changed
/LMDZ5/trunk merged: 1670-1692,1694-1703,1705-1706
- Property svn:mergeinfo changed
-
LMDZ5/branches/testing/libf/dyn3dmem/integrd_loc.F
r1669 r1707 4 4 SUBROUTINE integrd_loc 5 5 $ ( nq,vcovm1,ucovm1,tetam1,psm1,massem1, 6 $ dv,du,dteta,dq,dp,vcov,ucov,teta,q,ps0,masse,phis ,finvmaold)6 $ dv,du,dteta,dq,dp,vcov,ucov,teta,q,ps0,masse,phis) !,finvmaold) 7 7 USE parallel 8 8 USE control_mod … … 37 37 #include "temps.h" 38 38 #include "serre.h" 39 include 'mpif.h' 39 #include "iniprint.h" 40 ! include 'mpif.h' 40 41 41 42 c Arguments: 42 43 c ---------- 43 44 44 INTEGER nq 45 46 REAL vcov(ijb_v:ije_v,llm),ucov(ijb_u:ije_u,llm) 47 REAL teta(ijb_u:ije_u,llm) 48 REAL q(ijb_u:ije_u,llm,nq) 49 REAL ps0(ijb_u:ije_u),masse(ijb_u:ije_u,llm),phis(ijb_u:ije_u) 50 51 REAL vcovm1(ijb_v:ije_v,llm),ucovm1(ijb_u:ije_u,llm) 52 REAL tetam1(ijb_u:ije_u,llm),psm1(ijb_u:ije_u) 53 REAL massem1(ijb_u:ije_u,llm) 54 55 REAL dv(ijb_v:ije_v,llm),du(ijb_u:ije_u,llm) 56 REAL dteta(ijb_u:ije_u,llm),dp(ijb_u:ije_u) 57 REAL dq(ijb_u:ije_u,llm,nq), finvmaold(ijb_u:ije_u,llm) 45 INTEGER,intent(in) :: nq ! number of tracers to handle in this routine 46 47 REAL,INTENT(INOUT) :: vcov(ijb_v:ije_v,llm) ! covariant meridional wind 48 REAL,INTENT(INOUT) :: ucov(ijb_u:ije_u,llm) ! covariant zonal wind 49 REAL,INTENT(INOUT) :: teta(ijb_u:ije_u,llm) ! potential temperature 50 REAL,INTENT(INOUT) :: q(ijb_u:ije_u,llm,nq) ! advected tracers 51 REAL,INTENT(INOUT) :: ps0(ijb_u:ije_u) ! surface pressure 52 REAL,INTENT(INOUT) :: masse(ijb_u:ije_u,llm) ! atmospheric mass 53 REAL,INTENT(INOUT) :: phis(ijb_u:ije_u) ! ground geopotential !!! unused 54 ! values at previous time step 55 REAL,INTENT(INOUT) :: vcovm1(ijb_v:ije_v,llm) 56 REAL,INTENT(INOUT) :: ucovm1(ijb_u:ije_u,llm) 57 REAL,INTENT(INOUT) :: tetam1(ijb_u:ije_u,llm) 58 REAL,INTENT(INOUT) :: psm1(ijb_u:ije_u) 59 REAL,INTENT(INOUT) :: massem1(ijb_u:ije_u,llm) 60 ! the tendencies to add 61 REAL,INTENT(INOUT) :: dv(ijb_v:ije_v,llm) 62 REAL,INTENT(INOUT) :: du(ijb_u:ije_u,llm) 63 REAL,INTENT(INOUT) :: dteta(ijb_u:ije_u,llm) 64 REAL,INTENT(INOUT) :: dp(ijb_u:ije_u) 65 REAL,INTENT(INOUT) :: dq(ijb_u:ije_u,llm,nq) !!! unused 66 ! REAL,INTENT(INOUT) ::finvmaold(ijb_u:ije_u,llm) !!! unused 58 67 59 68 c Local: … … 62 71 REAL vscr( ijb_v:ije_v ),uscr( ijb_u:ije_u ) 63 72 REAL hscr( ijb_u:ije_u ),pscr(ijb_u:ije_u) 64 REAL massescr( ijb_u:ije_u,llm ), finvmasse(ijb_u:ije_u,llm) 73 REAL massescr( ijb_u:ije_u,llm ) 74 ! REAL finvmasse(ijb_u:ije_u,llm) 65 75 REAL tpn,tps,tppn(iim),tpps(iim) 66 76 REAL qpn,qps,qppn(iim),qpps(iim) 67 77 68 INTEGER l,ij,iq 78 INTEGER l,ij,iq,i,j 69 79 70 80 REAL SSUM … … 74 84 LOGICAL,SAVE :: checksum_all=.TRUE. 75 85 INTEGER :: stop_it 76 INTEGER :: ierr ,j86 INTEGER :: ierr 77 87 78 88 c----------------------------------------------------------------------- … … 137 147 ! & MPI_LOGICAL,MPI_LOR,COMM_LMDZ,ierr) 138 148 IF( .NOT. checksum ) THEN 139 PRINT*,' Au point ij = ',stop_it, ' , pression sol neg. ' 140 & , ps(stop_it) 141 STOP' dans integrd' 142 ENDIF 149 write(lunout,*) "integrd: negative surface pressure ", 150 & ps(stop_it) 151 write(lunout,*) " at node ij =", stop_it 152 ! since ij=j+(i-1)*jjp1 , we have 153 ! j=modulo(stop_it,jjp1) 154 ! i=1+(stop_it-j)/jjp1 155 ! write(lunout,*) " lon = ",rlonv(i)*180./pi, " deg", 156 ! & " lat = ",rlatu(j)*180./pi, " deg" 157 ENDIF 158 143 159 c$OMP END MASTER 144 160 c$OMP BARRIER … … 160 176 call WriteField_u('int_dteta',dteta) 161 177 call WriteField_u('int_dp',dp) 162 call WriteField_u('int_finvmaold',finvmaold)178 ! call WriteField_u('int_finvmaold',finvmaold) 163 179 do j=1,nq 164 180 call WriteField_u('int_q'//trim(int2str(j)), … … 206 222 CALL massdair_loc ( p , masse ) 207 223 208 c CALL SCOPY( ijp1llm , masse, 1, finvmasse, 1 ) 209 ijb=ij_begin 210 ije=ij_end 211 212 c$OMP DO SCHEDULE(STATIC,OMP_CHUNK) 213 DO l = 1,llm 214 finvmasse(ijb:ije,l)=masse(ijb:ije,l) 215 ENDDO 216 c$OMP END DO NOWAIT 217 218 jjb=jj_begin 219 jje=jj_end 220 CALL filtreg_p( finvmasse,jjb_u,jje_u,jjb,jje, jjp1, llm, 221 & -2, 2, .TRUE., 1 ) 224 ! Ehouarn : we don't use/need finvmaold and finvmasse, 225 ! so might as well not compute them 226 !c CALL SCOPY( ijp1llm , masse, 1, finvmasse, 1 ) 227 ! ijb=ij_begin 228 ! ije=ij_end 229 ! 230 !c$OMP DO SCHEDULE(STATIC,OMP_CHUNK) 231 ! DO l = 1,llm 232 ! finvmasse(ijb:ije,l)=masse(ijb:ije,l) 233 ! ENDDO 234 !c$OMP END DO NOWAIT 235 236 ! jjb=jj_begin 237 ! jje=jj_end 238 ! CALL filtreg_p( finvmasse,jjb_u,jje_u,jjb,jje, jjp1, llm, 239 ! & -2, 2, .TRUE., 1 ) 222 240 c 223 241 … … 320 338 321 339 CALL qminimum_loc( q, nq, deltap ) 322 endif ! of if (planet_type.eq."earth")323 340 c 324 341 c ..... Calcul de la valeur moyenne, unique aux poles pour q ..... … … 371 388 ENDIF 372 389 373 c CALL SCOPY( ijp1llm , finvmasse, 1, finvmaold, 1 ) 374 375 c$OMP DO SCHEDULE(STATIC,OMP_CHUNK) 376 DO l = 1, llm 377 finvmaold(ijb:ije,l)=finvmasse(ijb:ije,l) 378 ENDDO 379 c$OMP END DO NOWAIT 390 ! Ehouarn: forget about finvmaold 391 !c CALL SCOPY( ijp1llm , finvmasse, 1, finvmaold, 1 ) 392 393 !c$OMP DO SCHEDULE(STATIC,OMP_CHUNK) 394 ! DO l = 1, llm 395 ! finvmaold(ijb:ije,l)=finvmasse(ijb:ije,l) 396 ! ENDDO 397 !c$OMP END DO NOWAIT 398 399 endif ! of if (planet_type.eq."earth") 400 380 401 c 381 402 c
Note: See TracChangeset
for help on using the changeset viewer.