Changeset 5123 for LMDZ6/branches/Amaury_dev/libf/dyn3dmem
- Timestamp:
- Jul 25, 2024, 8:45:50 AM (8 weeks ago)
- Location:
- LMDZ6/branches/Amaury_dev/libf/dyn3dmem
- Files:
-
- 14 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ6/branches/Amaury_dev/libf/dyn3dmem/addfi_loc.f90
r5117 r5123 1 2 1 ! $Id$ 3 2 4 3 SUBROUTINE addfi_loc(pdt, leapf, forward, & 5 pucov, pvcov, pteta, pq , pps, &6 pdufi, pdvfi, pdhfi, pdqfi, pdpfi)4 pucov, pvcov, pteta, pq, pps, & 5 pdufi, pdvfi, pdhfi, pdqfi, pdpfi) 7 6 USE parallel_lmdz 8 7 USE infotrac, ONLY: nqtot 9 8 USE control_mod, ONLY: planet_type 9 USE lmdz_ssum_scopy, ONLY: ssum 10 10 11 IMPLICIT NONE 11 12 ! … … 53 54 ! ----------- 54 55 ! 55 REAL, INTENT(IN) :: pdt ! time step for the integration (s)56 ! 57 REAL, INTENT(INOUT) :: pvcov(ijb_v:ije_v,llm) ! covariant meridional wind58 REAL, INTENT(INOUT) :: pucov(ijb_u:ije_u,llm) ! covariant zonal wind59 REAL, INTENT(INOUT) :: pteta(ijb_u:ije_u,llm) ! potential temperature60 REAL, INTENT(INOUT) :: pq(ijb_u:ije_u,llm,nqtot) ! tracers61 REAL, INTENT(INOUT) :: pps(ijb_u:ije_u) ! surface pressure (Pa)56 REAL, INTENT(IN) :: pdt ! time step for the integration (s) 57 ! 58 REAL, INTENT(INOUT) :: pvcov(ijb_v:ije_v, llm) ! covariant meridional wind 59 REAL, INTENT(INOUT) :: pucov(ijb_u:ije_u, llm) ! covariant zonal wind 60 REAL, INTENT(INOUT) :: pteta(ijb_u:ije_u, llm) ! potential temperature 61 REAL, INTENT(INOUT) :: pq(ijb_u:ije_u, llm, nqtot) ! tracers 62 REAL, INTENT(INOUT) :: pps(ijb_u:ije_u) ! surface pressure (Pa) 62 63 ! respective tendencies (.../s) to add 63 REAL, INTENT(IN) :: pdvfi(ijb_v:ije_v,llm)64 REAL, INTENT(IN) :: pdufi(ijb_u:ije_u,llm)65 REAL, INTENT(IN) :: pdqfi(ijb_u:ije_u,llm,nqtot)66 REAL, INTENT(IN) :: pdhfi(ijb_u:ije_u,llm)67 REAL, INTENT(IN) :: pdpfi(ijb_u:ije_u)68 ! 69 LOGICAL, INTENT(IN) :: leapf,forward ! not used64 REAL, INTENT(IN) :: pdvfi(ijb_v:ije_v, llm) 65 REAL, INTENT(IN) :: pdufi(ijb_u:ije_u, llm) 66 REAL, INTENT(IN) :: pdqfi(ijb_u:ije_u, llm, nqtot) 67 REAL, INTENT(IN) :: pdhfi(ijb_u:ije_u, llm) 68 REAL, INTENT(IN) :: pdpfi(ijb_u:ije_u) 69 ! 70 LOGICAL, INTENT(IN) :: leapf, forward ! not used 70 71 ! 71 72 ! … … 73 74 ! ----------------- 74 75 ! 75 REAL :: xpn(iim),xps(iim),tpn,tps 76 INTEGER :: j,k,iq,ij 77 REAL,PARAMETER :: qtestw = 1.0e-15 78 REAL,PARAMETER :: qtestt = 1.0e-40 79 80 REAL :: SSUM 81 EXTERNAL SSUM 82 83 INTEGER :: ijb,ije 76 REAL :: xpn(iim), xps(iim), tpn, tps 77 INTEGER :: j, k, iq, ij 78 REAL, PARAMETER :: qtestw = 1.0e-15 79 REAL, PARAMETER :: qtestt = 1.0e-40 80 81 INTEGER :: ijb, ije 84 82 ! 85 83 !----------------------------------------------------------------------- 86 84 87 ijb =ij_begin88 ije =ij_end89 90 !$OMP DO SCHEDULE(STATIC,OMP_CHUNK)91 DO k = 1, llm92 DO j = ijb,ije93 pteta(j,k)= pteta(j,k) + pdhfi(j,k) * pdt94 95 ENDDO 96 !$OMP END DO NOWAIT85 ijb = ij_begin 86 ije = ij_end 87 88 !$OMP DO SCHEDULE(STATIC,OMP_CHUNK) 89 DO k = 1, llm 90 DO j = ijb, ije 91 pteta(j, k) = pteta(j, k) + pdhfi(j, k) * pdt 92 ENDDO 93 ENDDO 94 !$OMP END DO NOWAIT 97 95 98 96 IF (pole_nord) THEN 99 !$OMP DO SCHEDULE(STATIC,OMP_CHUNK)100 DO k 101 DO ij= 1, iim102 xpn(ij) = aire( ij ) * pteta( ij ,k)103 ENDDO104 tpn = SSUM(iim,xpn,1)/ apoln105 106 DO ij= 1, iip1107 pteta( ij ,k)= tpn108 ENDDO109 ENDDO110 !$OMP END DO NOWAIT97 !$OMP DO SCHEDULE(STATIC,OMP_CHUNK) 98 DO k = 1, llm 99 DO ij = 1, iim 100 xpn(ij) = aire(ij) * pteta(ij, k) 101 ENDDO 102 tpn = SSUM(iim, xpn, 1) / apoln 103 104 DO ij = 1, iip1 105 pteta(ij, k) = tpn 106 ENDDO 107 ENDDO 108 !$OMP END DO NOWAIT 111 109 ENDIF 112 110 113 111 IF (pole_sud) THEN 114 !$OMP DO SCHEDULE(STATIC,OMP_CHUNK)115 DO k 116 DO ij= 1, iim117 xps(ij) = aire(ij+ip1jm) * pteta(ij+ip1jm,k)118 ENDDO119 tps = SSUM(iim,xps,1)/ apols120 121 DO ij= 1, iip1122 pteta(ij+ip1jm,k)= tps123 ENDDO124 ENDDO125 !$OMP END DO NOWAIT126 ENDIF 127 ! 128 129 ijb =ij_begin130 ije =ij_end131 IF (pole_nord) ijb =ij_begin+iip1132 IF (pole_sud) ije =ij_end-iip1133 134 !$OMP DO SCHEDULE(STATIC,OMP_CHUNK)135 DO k = 1, llm136 DO j = ijb,ije137 pucov(j,k)= pucov(j,k) + pdufi(j,k) * pdt138 139 ENDDO 140 !$OMP END DO NOWAIT141 142 IF (pole_nord) ijb =ij_begin143 144 !$OMP DO SCHEDULE(STATIC,OMP_CHUNK)145 DO k = 1, llm146 DO j = ijb,ije147 pvcov(j,k)= pvcov(j,k) + pdvfi(j,k) * pdt148 149 ENDDO 150 !$OMP END DO NOWAIT151 152 ! 153 IF (pole_sud) ije =ij_end154 !$OMP MASTER155 DO j = ijb, ije156 157 ENDDO 158 !$OMP END MASTER112 !$OMP DO SCHEDULE(STATIC,OMP_CHUNK) 113 DO k = 1, llm 114 DO ij = 1, iim 115 xps(ij) = aire(ij + ip1jm) * pteta(ij + ip1jm, k) 116 ENDDO 117 tps = SSUM(iim, xps, 1) / apols 118 119 DO ij = 1, iip1 120 pteta(ij + ip1jm, k) = tps 121 ENDDO 122 ENDDO 123 !$OMP END DO NOWAIT 124 ENDIF 125 ! 126 127 ijb = ij_begin 128 ije = ij_end 129 IF (pole_nord) ijb = ij_begin + iip1 130 IF (pole_sud) ije = ij_end - iip1 131 132 !$OMP DO SCHEDULE(STATIC,OMP_CHUNK) 133 DO k = 1, llm 134 DO j = ijb, ije 135 pucov(j, k) = pucov(j, k) + pdufi(j, k) * pdt 136 ENDDO 137 ENDDO 138 !$OMP END DO NOWAIT 139 140 IF (pole_nord) ijb = ij_begin 141 142 !$OMP DO SCHEDULE(STATIC,OMP_CHUNK) 143 DO k = 1, llm 144 DO j = ijb, ije 145 pvcov(j, k) = pvcov(j, k) + pdvfi(j, k) * pdt 146 ENDDO 147 ENDDO 148 !$OMP END DO NOWAIT 149 150 ! 151 IF (pole_sud) ije = ij_end 152 !$OMP MASTER 153 DO j = ijb, ije 154 pps(j) = pps(j) + pdpfi(j) * pdt 155 ENDDO 156 !$OMP END MASTER 159 157 160 158 IF (planet_type=="earth") THEN 161 ! earth case, special treatment for first 2 tracers (water)162 DO iq = 1, 2163 !$OMP DO SCHEDULE(STATIC,OMP_CHUNK)164 DO k = 1,llm165 DO j = ijb, ije166 pq(j,k,iq)= pq(j,k,iq) + pdqfi(j,k,iq) * pdt167 pq(j,k,iq)= AMAX1( pq(j,k,iq), qtestw)168 ENDDO 169 ENDDO170 !$OMP END DO NOWAIT171 ENDDO172 173 DO iq = 3, nqtot174 !$OMP DO SCHEDULE(STATIC,OMP_CHUNK)175 DO k = 1,llm176 DO j = ijb, ije177 pq(j,k,iq)= pq(j,k,iq) + pdqfi(j,k,iq) * pdt178 pq(j,k,iq)= AMAX1( pq(j,k,iq), qtestt)179 ENDDO 180 ENDDO181 !$OMP END DO NOWAIT182 ENDDO159 ! earth case, special treatment for first 2 tracers (water) 160 DO iq = 1, 2 161 !$OMP DO SCHEDULE(STATIC,OMP_CHUNK) 162 DO k = 1, llm 163 DO j = ijb, ije 164 pq(j, k, iq) = pq(j, k, iq) + pdqfi(j, k, iq) * pdt 165 pq(j, k, iq) = AMAX1(pq(j, k, iq), qtestw) 166 ENDDO 167 ENDDO 168 !$OMP END DO NOWAIT 169 ENDDO 170 171 DO iq = 3, nqtot 172 !$OMP DO SCHEDULE(STATIC,OMP_CHUNK) 173 DO k = 1, llm 174 DO j = ijb, ije 175 pq(j, k, iq) = pq(j, k, iq) + pdqfi(j, k, iq) * pdt 176 pq(j, k, iq) = AMAX1(pq(j, k, iq), qtestt) 177 ENDDO 178 ENDDO 179 !$OMP END DO NOWAIT 180 ENDDO 183 181 else 184 ! general case, treat all tracers equally)185 DO iq = 1, nqtot186 !$OMP DO SCHEDULE(STATIC,OMP_CHUNK)187 DO k = 1,llm188 DO j = ijb, ije189 pq(j,k,iq)= pq(j,k,iq) + pdqfi(j,k,iq) * pdt190 pq(j,k,iq)= AMAX1( pq(j,k,iq), qtestt)191 ENDDO 192 ENDDO193 !$OMP END DO NOWAIT194 ENDDO182 ! general case, treat all tracers equally) 183 DO iq = 1, nqtot 184 !$OMP DO SCHEDULE(STATIC,OMP_CHUNK) 185 DO k = 1, llm 186 DO j = ijb, ije 187 pq(j, k, iq) = pq(j, k, iq) + pdqfi(j, k, iq) * pdt 188 pq(j, k, iq) = AMAX1(pq(j, k, iq), qtestt) 189 ENDDO 190 ENDDO 191 !$OMP END DO NOWAIT 192 ENDDO 195 193 ENDIF ! of if (planet_type=="earth") 196 194 197 !$OMP MASTER195 !$OMP MASTER 198 196 IF (pole_nord) THEN 199 DO ij 200 xpn(ij) = aire( ij ) * pps( ij)201 ENDDO 202 203 tpn = SSUM(iim,xpn,1)/apoln204 205 DO ij 206 pps ( ij )= tpn197 DO ij = 1, iim 198 xpn(ij) = aire(ij) * pps(ij) 199 ENDDO 200 201 tpn = SSUM(iim, xpn, 1) / apoln 202 203 DO ij = 1, iip1 204 pps (ij) = tpn 207 205 ENDDO 208 206 … … 210 208 211 209 IF (pole_sud) THEN 212 DO ij 213 xps(ij) = aire(ij +ip1jm) * pps(ij+ip1jm)214 ENDDO 215 216 tps = SSUM(iim,xps,1)/apols217 218 DO ij 219 pps ( ij+ip1jm )= tps220 ENDDO 221 222 ENDIF 223 !$OMP END MASTER210 DO ij = 1, iim 211 xps(ij) = aire(ij + ip1jm) * pps(ij + ip1jm) 212 ENDDO 213 214 tps = SSUM(iim, xps, 1) / apols 215 216 DO ij = 1, iip1 217 pps (ij + ip1jm) = tps 218 ENDDO 219 220 ENDIF 221 !$OMP END MASTER 224 222 225 223 IF (pole_nord) THEN 226 224 DO iq = 1, nqtot 227 !$OMP DO SCHEDULE(STATIC,OMP_CHUNK)228 DO k 229 DO ij 230 xpn(ij) = aire( ij ) * pq( ij ,k,iq)231 ENDDO 232 tpn = SSUM(iim,xpn,1)/apoln233 234 DO ij 235 pq ( ij ,k,iq)= tpn236 ENDDO 237 ENDDO 238 !$OMP END DO NOWAIT 225 !$OMP DO SCHEDULE(STATIC,OMP_CHUNK) 226 DO k = 1, llm 227 DO ij = 1, iim 228 xpn(ij) = aire(ij) * pq(ij, k, iq) 229 ENDDO 230 tpn = SSUM(iim, xpn, 1) / apoln 231 232 DO ij = 1, iip1 233 pq (ij, k, iq) = tpn 234 ENDDO 235 ENDDO 236 !$OMP END DO NOWAIT 239 237 ENDDO 240 238 ENDIF … … 242 240 IF (pole_sud) THEN 243 241 DO iq = 1, nqtot 244 !$OMP DO SCHEDULE(STATIC,OMP_CHUNK) 245 DO k = 1, llm 246 DO ij = 1, iim 247 xps(ij) = aire(ij+ip1jm) * pq(ij+ip1jm,k,iq) 248 ENDDO 249 tps = SSUM(iim,xps,1)/apols 250 251 DO ij = 1, iip1 252 pq (ij+ip1jm,k,iq) = tps 253 ENDDO 254 ENDDO 255 !$OMP END DO NOWAIT 256 ENDDO 257 ENDIF 258 259 242 !$OMP DO SCHEDULE(STATIC,OMP_CHUNK) 243 DO k = 1, llm 244 DO ij = 1, iim 245 xps(ij) = aire(ij + ip1jm) * pq(ij + ip1jm, k, iq) 246 ENDDO 247 tps = SSUM(iim, xps, 1) / apols 248 249 DO ij = 1, iip1 250 pq (ij + ip1jm, k, iq) = tps 251 ENDDO 252 ENDDO 253 !$OMP END DO NOWAIT 254 ENDDO 255 ENDIF 260 256 261 257 END SUBROUTINE addfi_loc -
LMDZ6/branches/Amaury_dev/libf/dyn3dmem/advect_new_loc.f90
r5117 r5123 51 51 52 52 INTEGER :: ij, l, ijb, ije 53 EXTERNAL SSUM54 REAL :: SSUM55 56 57 53 58 54 !----------------------------------------------------------------------- -
LMDZ6/branches/Amaury_dev/libf/dyn3dmem/call_dissip_mod.f90
r5117 r5123 85 85 USE write_field_loc 86 86 USE lmdz_cppkeys_wrapper, ONLY: CPPKEY_DEBUGIO 87 USE lmdz_ssum_scopy, ONLY: ssum 88 87 89 88 90 IMPLICIT NONE … … 97 99 REAL :: tpn, tps 98 100 99 REAL SSUM100 101 LOGICAL, PARAMETER :: dissip_conservative = .TRUE. 101 102 TYPE(Request), SAVE :: Request_dissip -
LMDZ6/branches/Amaury_dev/libf/dyn3dmem/convflu_loc.f90
r5105 r5123 16 16 ! 17 17 USE parallel_lmdz 18 USE lmdz_ssum_scopy, ONLY: ssum 19 18 20 IMPLICIT NONE 19 21 ! … … 26 28 ! 27 29 INTEGER :: ijb,ije 28 EXTERNAL SSUM29 REAL :: SSUM30 30 ! 31 31 ! -
LMDZ6/branches/Amaury_dev/libf/dyn3dmem/dissip_loc.f90
r5117 r5123 56 56 57 57 INTEGER :: l, ij 58 59 REAL :: SSUM60 58 INTEGER :: ijb, ije 61 59 -
LMDZ6/branches/Amaury_dev/libf/dyn3dmem/diverg_gam_loc.f90
r5117 r5123 10 10 ! ********************************************************************* 11 11 USE parallel_lmdz 12 USE lmdz_ssum_scopy, ONLY: ssum 13 12 14 IMPLICIT NONE 13 15 ! … … 39 41 INTEGER :: l,ij 40 42 ! ................................................................... 41 !42 EXTERNAL SSUM43 REAL :: SSUM44 43 INTEGER :: ijb,ije,jjb,jje 45 44 ! -
LMDZ6/branches/Amaury_dev/libf/dyn3dmem/diverg_p.f90
r5117 r5123 9 9 ! ********************************************************************* 10 10 USE parallel_lmdz 11 USE lmdz_ssum_scopy, ONLY: ssum 12 11 13 IMPLICIT NONE 12 14 ! … … 36 38 INTEGER :: ijb,ije 37 39 ! ................................................................... 38 !39 EXTERNAL SSUM40 REAL :: SSUM41 40 ! 42 41 ! -
LMDZ6/branches/Amaury_dev/libf/dyn3dmem/divergf_loc.f90
r5117 r5123 10 10 USE parallel_lmdz 11 11 USE lmdz_filtreg_p 12 USE lmdz_ssum_scopy, ONLY: ssum 13 12 14 IMPLICIT NONE 13 15 ! … … 37 39 REAL :: sumypn,sumyps 38 40 ! ................................................................... 39 !40 EXTERNAL SSUM41 REAL :: SSUM42 41 INTEGER :: ijb,ije,jjb,jje 43 42 ! -
LMDZ6/branches/Amaury_dev/libf/dyn3dmem/integrd_loc.f90
r5118 r5123 17 17 USE lmdz_strings, ONLY: int2str 18 18 USE lmdz_iniprint, ONLY: lunout, prt_level 19 USE lmdz_ssum_scopy, ONLY: ssum 19 20 20 21 IMPLICIT NONE … … 78 79 INTEGER :: l,ij,iq,i,j 79 80 80 REAL :: SSUM81 EXTERNAL SSUM82 81 INTEGER :: ijb,ije,jjb,jje 83 82 LOGICAL :: checksum -
LMDZ6/branches/Amaury_dev/libf/dyn3dmem/leapfrog_loc.F90
r5118 r5123 134 134 REAL :: time 135 135 136 REAL :: SSUM137 136 ! REAL,SAVE,ALLOCATABLE :: finvmaold(:,:) 138 137 -
LMDZ6/branches/Amaury_dev/libf/dyn3dmem/massdair_loc.f90
r5117 r5123 30 30 REAL :: massemoyn, massemoys 31 31 32 REAL :: SSUM33 EXTERNAL SSUM34 32 ! 35 33 ! -
LMDZ6/branches/Amaury_dev/libf/dyn3dmem/qminimum_loc.f90
r5118 r5123 38 38 REAL :: zx_defau_diag(ijb_u:ije_u, llm, 2) 39 39 REAL :: q_follow(ijb_u:ije_u, llm, 2) 40 !41 REAL :: SSUM42 EXTERNAL SSUM43 40 ! 44 41 INTEGER :: imprim -
LMDZ6/branches/Amaury_dev/libf/dyn3dmem/vlsplt_loc.f90
r5118 r5123 46 46 47 47 Logical :: extremum 48 49 REAL :: SSUM50 48 51 49 REAL :: z1, z2, z3 … … 384 382 min_qParent, min_qMass, min_ratio ! MVals et CRisi 385 383 USE comconst_mod, ONLY: pi 384 USE lmdz_ssum_scopy, ONLY: ssum 385 386 386 IMPLICIT NONE 387 387 ! … … 428 428 REAL :: Ratio(ijb_u:ije_u, llm, nqtot) ! CRisi 429 429 INTEGER :: ifils, iq2 ! CRisi 430 !431 !432 REAL :: SSUM433 EXTERNAL SSUM434 430 435 431 DATA first/.TRUE./ … … 850 846 !$OMP THREADPRIVATE(temps0,temps1,temps2,temps3,temps4,temps5) 851 847 852 REAL :: SSUM853 854 848 DATA temps0, temps1, temps2, temps3, temps4, temps5/0., 0., 0., 0., 0., 0./ 855 849 INTEGER :: ijb, ije, ijb_x, ije_x -
LMDZ6/branches/Amaury_dev/libf/dyn3dmem/vlspltqs_loc.f90
r5118 r5123 40 40 REAL :: Ratio(ijb_u:ije_u, llm, nqtot) ! CRisi 41 41 INTEGER :: ifils, iq2 ! CRisi 42 43 REAL :: SSUM44 42 45 43 INTEGER :: ijb, ije, ijb_x, ije_x … … 392 390 USE comconst_mod, ONLY: pi 393 391 USE lmdz_iniprint, ONLY: lunout, prt_level 392 USE lmdz_ssum_scopy, ONLY: ssum 393 394 394 IMPLICIT NONE 395 395 ! … … 437 437 INTEGER :: ijb, ije 438 438 INTEGER :: ijbm, ijem 439 440 REAL :: ssum441 439 442 440 ijb = ij_begin - 2 * iip1
Note: See TracChangeset
for help on using the changeset viewer.