Changeset 1795 for LMDZ5/branches/testing/libf/dyn3dmem
- Timestamp:
- Jul 18, 2013, 10:20:28 AM (12 years ago)
- Location:
- LMDZ5/branches/testing
- Files:
-
- 7 deleted
- 14 edited
- 2 copied
Legend:
- Unmodified
- Added
- Removed
-
LMDZ5/branches/testing
- Property svn:mergeinfo changed
/LMDZ5/trunk merged: 1747-1749,1751,1753-1767,1769,1771-1772,1774-1776,1778-1794
- Property svn:mergeinfo changed
-
LMDZ5/branches/testing/libf/dyn3dmem/abort_gcm.F
r1707 r1795 1 1 ! 2 ! $Id $2 ! $Id: abort_gcm.F 1747 2013-04-23 14:06:30Z lguez $ 3 3 ! 4 4 c … … 24 24 25 25 character(len=*) modname 26 integer ierr 26 integer ierr, ierror_mpi 27 27 character(len=*) message 28 28 … … 47 47 else 48 48 write(lunout,*) 'Houston, we have a problem ', ierr 49 #ifdef CPP_MPI 50 C$OMP CRITICAL (MPI_ABORT_GCM) 51 call MPI_ABORT(COMM_LMDZ, 1, ierror_mpi) 52 C$OMP END CRITICAL (MPI_ABORT_GCM) 53 #else 49 54 stop 1 55 #endif 50 56 endif 51 57 END -
LMDZ5/branches/testing/libf/dyn3dmem/calfis_loc.F
r1707 r1795 34 34 USE dimphy 35 35 USE mod_phys_lmdz_para, mpi_root_xx=>mpi_root 36 USE parallel, ONLY : omp_chunk, using_mpi,jjb_u,jje_u,jjb_v,jje_v37 36 USE mod_interface_dyn_phys 38 37 USE IOPHY 39 38 #endif 39 USE parallel, ONLY : omp_chunk, using_mpi,jjb_u,jje_u,jjb_v,jje_v 40 40 USE Write_Field 41 41 Use Write_field_p … … 116 116 c ----------- 117 117 LOGICAL lafin 118 REAL heure119 118 ! REAL heure 119 REAL, intent(in):: jD_cur, jH_cur 120 120 REAL pvcov(iip1,jjb_v:jje_v,llm) 121 121 REAL pucov(iip1,jjb_u:jje_u,llm) … … 130 130 REAL pdteta(iip1,jjb_u:jje_u,llm) 131 131 REAL pdq(iip1,jjb_u:jje_u,llm,nqtot) 132 REAL flxw(iip1,jjb_u:jje_u,llm) ! Flux de masse verticale sur la grille dynamique 132 133 c 133 134 REAL pps(iip1,jjb_u:jje_u) … … 226 227 REAL PVteta(klon,ntetaSTD) 227 228 228 REAL flxw(iip1,jjb_u:jje_u,llm) ! Flux de masse verticale sur la grille dynamique229 229 230 230 REAL SSUM … … 234 234 SAVE firstcal,debut 235 235 c$OMP THREADPRIVATE(firstcal,debut) 236 REAL, intent(in):: jD_cur, jH_cur237 236 238 237 REAL,SAVE,dimension(1:iim,1:llm):: du_send,du_recv,dv_send,dv_recv -
LMDZ5/branches/testing/libf/dyn3dmem/call_calfis_mod.F90
r1707 r1795 321 321 #endif 322 322 323 IF (ok_strato) THEN324 CALL top_bound_loc( vcov,ucov,teta,masse,dufi,dvfi,dtetafi)325 ENDIF326 327 323 #ifdef DEBUG_IO 328 324 CALL WriteField_u('ucovfi',ucov) … … 348 344 ENDDO 349 345 #endif 346 347 IF (ok_strato) THEN 348 ! CALL top_bound_loc( vcov,ucov,teta,masse,dufi,dvfi,dtetafi) 349 CALL top_bound_loc(vcov,ucov,teta,masse,dtphys) 350 ENDIF 350 351 351 352 !$OMP BARRIER -
LMDZ5/branches/testing/libf/dyn3dmem/ce0l.F90
r1707 r1795 23 23 USE infotrac 24 24 USE parallel, ONLY: finalize_parallel 25 USE indice_sol_mod 25 26 26 27 #ifdef CPP_IOIPSL … … 39 40 #include "dimensions.h" 40 41 #include "paramet.h" 41 #include "indicesol.h"42 !#include "indicesol.h" 42 43 #include "iniprint.h" 43 44 #include "temps.h" -
LMDZ5/branches/testing/libf/dyn3dmem/comconst.h
r1707 r1795 1 1 ! 2 ! $Id $2 ! $Id: comconst.h 1671 2012-10-24 07:10:10Z emillour $ 3 3 ! 4 4 !----------------------------------------------------------------------- … … 6 6 7 7 COMMON/comconsti/im,jm,lllm,imp1,jmp1,lllmm1,lllmp1,lcl, & 8 & iflag_top_bound 8 & iflag_top_bound,mode_top_bound 9 9 COMMON/comconstr/dtvr,daysec, & 10 10 & pi,dtphys,dtdiss,rad,r,cpp,kappa,cotot,unsim,g,omeg & … … 21 21 REAL dtdiss ! (s) time step for the dissipation 22 22 REAL rad ! (m) radius of the planet 23 REAL r ! Reduced Gas constant r=R/mu 24 ! with R=8.31.. J.K-1.mol-1, mu: mol mass of atmosphere (kg/mol) 23 REAL r ! Reduced Gas constant r=R/mu 24 ! with R=8.31.. J.K-1.mol-1, mu: mol mass of atmosphere (kg/mol) 25 25 REAL cpp ! Specific heat Cp (J.kg-1.K-1) 26 26 REAL kappa ! kappa=R/Cp … … 30 30 REAL omeg ! (rad/s) rotation rate of the planet 31 31 REAL dissip_factz,dissip_deltaz,dissip_zref 32 INTEGER iflag_top_bound 33 REAL tau_top_bound 32 ! top_bound sponge: 33 INTEGER iflag_top_bound ! sponge type 34 INTEGER mode_top_bound ! sponge mode 35 REAL tau_top_bound ! inverse of sponge characteristic time scale (Hz) 34 36 REAL daylen ! length of solar day, in 'standard' day length 35 37 REAL year_day ! Number of standard days in a year -
LMDZ5/branches/testing/libf/dyn3dmem/comvert.h
r1707 r1795 1 1 ! 2 ! $Id $2 ! $Id: comvert.h 1654 2012-09-24 15:07:18Z aslmd $ 3 3 ! 4 4 !----------------------------------------------------------------------- … … 23 23 real bps ! hybrid sigma contribution at mid-layers 24 24 real scaleheight ! atmospheric (reference) scale height (km) 25 real pseudoalt ! for planets 25 real pseudoalt ! pseudo-altitude of model levels (km), based on presnivs(), 26 ! preff and scaleheight 26 27 27 28 integer disvert_type ! type of vertical discretization: -
LMDZ5/branches/testing/libf/dyn3dmem/conf_gcm.F
r1750 r1795 335 335 CALL getin('dissip_zref',dissip_zref ) 336 336 337 ! top_bound sponge: only active if ok_strato=.true. and iflag_top_bound!=0 338 ! iflag_top_bound=0 for no sponge 339 ! iflag_top_bound=1 for sponge over 4 topmost layers 340 ! iflag_top_bound=2 for sponge from top to ~1% of top layer pressure 337 341 iflag_top_bound=1 342 CALL getin('iflag_top_bound',iflag_top_bound) 343 344 ! mode_top_bound : fields towards which sponge relaxation will be done: 345 ! mode_top_bound=0: no relaxation 346 ! mode_top_bound=1: u and v relax towards 0 347 ! mode_top_bound=2: u and v relax towards their zonal mean 348 ! mode_top_bound=3: u,v and pot. temp. relax towards their zonal mean 349 mode_top_bound=3 350 CALL getin('mode_top_bound',mode_top_bound) 351 352 ! top_bound sponge : inverse of charactericstic relaxation time scale for sponge 338 353 tau_top_bound=1.e-5 339 CALL getin('iflag_top_bound',iflag_top_bound)340 354 CALL getin('tau_top_bound',tau_top_bound) 341 355 -
LMDZ5/branches/testing/libf/dyn3dmem/exner_milieu_loc.F
r1707 r1795 27 27 c 28 28 USE parallel 29 USE mod_filtreg_p 29 30 IMPLICIT NONE 30 31 c … … 120 121 jjb=jj_begin 121 122 jje=jj_end 122 CALL filtreg_p ( pkf,jjb,jje, jmp1, llm, 2, 1, .TRUE., 1 ) 123 CALL filtreg_p ( pkf,jjb_u,jje_u,jjb,jje, jmp1, llm, 124 & 2, 1, .TRUE., 1 ) 123 125 124 126 ! our work is done, exit routine … … 206 208 jjb=jj_begin 207 209 jje=jj_end 208 CALL filtreg_p ( pkf,jjb,jje, jmp1, llm, 2, 1, .TRUE., 1 ) 210 CALL filtreg_p ( pkf,jjb_u,jje_u,jjb,jje, jmp1, llm, 211 & 2, 1, .TRUE., 1 ) 209 212 210 213 c EST-CE UTILE ?? : calcul de beta -
LMDZ5/branches/testing/libf/dyn3dmem/gcm.F
r1707 r1795 19 19 USE filtreg_mod 20 20 USE control_mod 21 22 #ifdef INCA 23 ! Only INCA needs these informations (from the Earth's physics) 24 USE indice_sol_mod 25 #endif 21 26 22 27 #ifdef CPP_PHYS … … 75 80 #ifdef INCA 76 81 ! Only INCA needs these informations (from the Earth's physics) 77 #include "indicesol.h"82 !#include "indicesol.h" 78 83 #endif 79 84 … … 270 275 ! constants & fields, if we run the 'newtonian' or 'SW' cases: 271 276 if (iflag_phys.ne.1) then 272 CALL iniacademic (vcov,ucov,teta,q,masse,ps,phis,time_0)277 CALL iniacademic_loc(vcov,ucov,teta,q,masse,ps,phis,time_0) 273 278 endif 274 279 … … 291 296 . 'GCM: AVANT iniacademic AVANT AVANT AVANT AVANT' 292 297 if (.not.read_start) then 293 CALL iniacademic (vcov,ucov,teta,q,masse,ps,phis,time_0)298 CALL iniacademic_loc(vcov,ucov,teta,q,masse,ps,phis,time_0) 294 299 endif 295 300 … … 398 403 #endif 399 404 400 405 if (iflag_phys.eq.1) then 406 ! these initialisations have already been done (via iniacademic) 407 ! if running in SW or Newtonian mode 401 408 c----------------------------------------------------------------------- 402 409 c Initialisation des constantes dynamiques : … … 414 421 c -------------------------- 415 422 CALL inifilr 423 endif ! of if (iflag_phys.eq.1) 416 424 c 417 425 c----------------------------------------------------------------------- -
LMDZ5/branches/testing/libf/dyn3dmem/inigeom.F
r1669 r1795 426 426 radclatm = 0.5* rad * coslatm 427 427 c 428 ai14 = un4rad2 * coslatp * yprp 429 ai23 = un4rad2 * coslatm * yprm 428 430 DO 32 i = 1,iim 429 431 xprp = xprimp025( i ) 430 432 xprm = xprimm025( i ) 431 433 432 ai14 = un4rad2 * coslatp * yprp433 ai23 = un4rad2 * coslatm * yprm434 434 aireij1 ( i,j ) = ai14 * xprp 435 435 aireij2 ( i,j ) = ai23 * xprp -
LMDZ5/branches/testing/libf/dyn3dmem/leapfrog_loc.F
r1707 r1795 1125 1125 ! Sponge layer (if any) 1126 1126 IF (ok_strato) THEN 1127 ! set dufi,dvfi,... to zero 1128 ijb=ij_begin 1129 ije=ij_end 1130 !$OMP DO SCHEDULE(STATIC,OMP_CHUNK) 1131 do l=1,llm 1132 dufi(ijb:ije,l)=0 1133 dtetafi(ijb:ije,l)=0 1134 dqfi(ijb:ije,l,1:nqtot)=0 1135 enddo 1136 !$OMP END DO 1137 !$OMP MASTER 1138 dpfi(ijb:ije)=0 1139 !$OMP END MASTER 1140 ijb=ij_begin 1141 ije=ij_end 1142 if (pole_sud) ije=ije-iip1 1143 !$OMP DO SCHEDULE(STATIC,OMP_CHUNK) 1144 do l=1,llm 1145 dvfi(ijb:ije,l)=0 1146 enddo 1147 !$OMP END DO 1148 1149 CALL top_bound_loc(vcov,ucov,teta,masse,dufi,dvfi,dtetafi) 1150 CALL addfi_loc( dtvr, leapf, forward , 1151 $ ucov, vcov, teta , q ,ps , 1152 $ dufi, dvfi, dtetafi , dqfi ,dpfi ) 1127 CALL top_bound_loc(vcov,ucov,teta,masse,dtvr) 1153 1128 !$OMP BARRIER 1154 1129 ENDIF ! of IF (ok_strato) -
LMDZ5/branches/testing/libf/dyn3dmem/temps.h
r1707 r1795 13 13 ! INCLUDE 'temps.h' 14 14 15 COMMON/temps/ itaufin, dt, day_ini, day_end, annee_ref, day_ref,&16 & itau_dyn, itau_phy, jD_ref, jH_ref, calend,&17 & start_time15 COMMON/temps/ dt, jD_ref, jH_ref, start_time, & 16 & day_ini, day_end, annee_ref, day_ref, & 17 & itau_dyn, itau_phy, itaufin, calend 18 18 19 19 20 20 INTEGER itaufin 21 INTEGER itau_dyn, itau_phy 21 INTEGER itau_dyn, itau_phy 22 22 INTEGER day_ini, day_end, annee_ref, day_ref 23 23 REAL dt, jD_ref, jH_ref, start_time -
LMDZ5/branches/testing/libf/dyn3dmem/top_bound_loc.F
r1669 r1795 1 SUBROUTINE top_bound_loc( vcov,ucov,teta,masse, du,dv,dh ) 1 ! 2 ! $Id: $ 3 ! 4 SUBROUTINE top_bound_loc(vcov,ucov,teta,masse,dt) 2 5 USE parallel 3 6 IMPLICIT NONE … … 25 28 c 26 29 c======================================================================= 27 c----------------------------------------------------------------------- 28 c Declarations: 29 c ------------- 30 31 ! top_bound sponge layer model: 32 ! Quenching is modeled as: A(t)=Am+A0*exp(-lambda*t) 33 ! where Am is the zonal average of the field (or zero), and lambda the inverse 34 ! of the characteristic quenching/relaxation time scale 35 ! Thus, assuming Am to be time-independent, field at time t+dt is given by: 36 ! A(t+dt)=A(t)-(A(t)-Am)*(1-exp(-lambda*t)) 37 ! Moreover lambda can be a function of model level (see below), and relaxation 38 ! can be toward the average zonal field or just zero (see below). 39 40 ! NB: top_bound sponge is only called from leapfrog if ok_strato=.true. 41 42 ! sponge parameters: (loaded/set in conf_gcm.F ; stored in comconst.h) 43 ! iflag_top_bound=0 for no sponge 44 ! iflag_top_bound=1 for sponge over 4 topmost layers 45 ! iflag_top_bound=2 for sponge from top to ~1% of top layer pressure 46 ! mode_top_bound=0: no relaxation 47 ! mode_top_bound=1: u and v relax towards 0 48 ! mode_top_bound=2: u and v relax towards their zonal mean 49 ! mode_top_bound=3: u,v and pot. temp. relax towards their zonal mean 50 ! tau_top_bound : inverse of charactericstic relaxation time scale at 51 ! the topmost layer (Hz) 52 30 53 31 54 #include "comdissipn.h" 55 #include "iniprint.h" 32 56 33 57 c Arguments: 34 58 c ---------- 35 59 36 REAL ucov(iip1,jjb_u:jje_u,llm),vcov(iip1,jjb_v:jje_v,llm) 37 REAL teta(iip1,jjb_u:jje_u,llm) 38 REAL masse(iip1,jjb_u:jje_u,llm) 39 REAL dv(iip1,jjb_v:jje_v,llm),du(iip1,jjb_u:jje_u,llm) 40 REAL dh(iip1,jjb_u:jje_u,llm) 60 real,intent(inout) :: ucov(iip1,jjb_u:jje_u,llm) ! covariant zonal wind 61 real,intent(inout) :: vcov(iip1,jjb_v:jje_v,llm) ! covariant meridional wind 62 real,intent(inout) :: teta(iip1,jjb_u:jje_u,llm) ! potential temperature 63 real,intent(in) :: masse(iip1,jjb_u:jje_u,llm) ! mass of atmosphere 64 real,intent(in) :: dt ! time step (s) of sponge model 65 66 ! REAL dv(iip1,jjb_v:jje_v,llm),du(iip1,jjb_u:jje_u,llm) 67 ! REAL dh(iip1,jjb_u:jje_u,llm) 41 68 42 69 c Local: … … 47 74 REAL tzon(jjb_u:jje_u,llm) 48 75 49 INTEGER NDAMP50 PARAMETER (NDAMP=4)51 76 integer i 52 77 REAL,SAVE :: rdamp(llm) 53 ! & (/(0., i =1,llm-NDAMP),0.125E-5,.25E-5,.5E-5,1.E-5/) 78 real,save :: lambda(llm) ! inverse or quenching time scale (Hz) 54 79 LOGICAL,SAVE :: first=.true. 55 80 INTEGER j,l,jjb,jje … … 57 82 58 83 if (iflag_top_bound == 0) return 84 59 85 if (first) then 60 86 c$OMP BARRIER 61 87 c$OMP MASTER 62 88 if (iflag_top_bound == 1) then 63 ! couche eponge dans les 4 dernieres couches du modele64 rdamp(:)=0.65 rdamp(llm)=tau_top_bound66 rdamp(llm-1)=tau_top_bound/2.67 rdamp(llm-2)=tau_top_bound/4.68 rdamp(llm-3)=tau_top_bound/8.89 ! sponge quenching over the topmost 4 atmospheric layers 90 lambda(:)=0. 91 lambda(llm)=tau_top_bound 92 lambda(llm-1)=tau_top_bound/2. 93 lambda(llm-2)=tau_top_bound/4. 94 lambda(llm-3)=tau_top_bound/8. 69 95 else if (iflag_top_bound == 2) then 70 ! couce eponge dans toutes les couches de pression plus faible que71 ! 100 fois la pression de la derniere couche72 rdamp(:)=tau_top_bound96 ! sponge quenching over topmost layers down to pressures which are 97 ! higher than 100 times the topmost layer pressure 98 lambda(:)=tau_top_bound 73 99 s *max(presnivs(llm)/presnivs(:)-0.01,0.) 74 100 endif 101 102 ! quenching coefficient rdamp(:) 103 ! rdamp(:)=dt*lambda(:) ! Explicit Euler approx. 104 rdamp(:)=1.-exp(-lambda(:)*dt) 105 106 write(lunout,*)'TOP_BOUND mode',mode_top_bound 107 write(lunout,*)'Sponge layer coefficients' 108 write(lunout,*)'p (Pa) z(km) tau(s) 1./tau (Hz)' 109 do l=1,llm 110 if (rdamp(l).ne.0.) then 111 write(lunout,'(6(1pe12.4,1x))') 112 & presnivs(l),log(preff/presnivs(l))*scaleheight, 113 & 1./lambda(l),lambda(l) 114 endif 115 enddo 75 116 first=.false. 76 print*,'TOP_BOUND rdamp=',rdamp77 117 c$OMP END MASTER 78 118 c$OMP BARRIER 79 endif 119 endif ! of if (first) 80 120 81 121 82 122 CALL massbar_loc(masse,massebx,masseby) 83 C CALCUL DES CHAMPS EN MOYENNE ZONALE: 84 85 jjb=jj_begin86 jje=jj_end87 IF (pole_sud) jje=jj_end-188 89 c$OMP DO SCHEDULE(STATIC,OMP_CHUNK) 90 do l=1,llm123 124 ! compute zonal average of vcov (or set it to zero) 125 if (mode_top_bound.ge.2) then 126 jjb=jj_begin 127 jje=jj_end 128 IF (pole_sud) jje=jj_end-1 129 c$OMP DO SCHEDULE(STATIC,OMP_CHUNK) 130 do l=1,llm 91 131 do j=jjb,jje 92 132 zm=0. 93 133 vzon(j,l)=0 94 134 do i=1,iim 95 ! Rm: on peut travailler directement avec la moyenne zonale de vcov 96 ! plutot qu'avec celle de v car le coefficient cv qui relie les deux 97 ! ne varie qu'en latitude 135 ! NB: we can work using vcov zonal mean rather than v since the 136 ! cv coefficient (which relates the two) only varies with latitudes 98 137 vzon(j,l)=vzon(j,l)+vcov(i,j,l)*masseby(i,j,l) 99 138 zm=zm+masseby(i,j,l) … … 101 140 vzon(j,l)=vzon(j,l)/zm 102 141 enddo 103 enddo142 enddo 104 143 c$OMP END DO NOWAIT 105 106 c$OMP DO SCHEDULE(STATIC,OMP_CHUNK) 107 do l=1,llm 108 do j=jjb,jje 109 do i=1,iip1 110 dv(i,j,l)=dv(i,j,l)-rdamp(l)*(vcov(i,j,l)-vzon(j,l)) 111 enddo 112 enddo 113 enddo 114 c$OMP END DO NOWAIT 115 116 jjb=jj_begin 117 jje=jj_end 118 IF (pole_nord) jjb=jj_begin+1 119 IF (pole_sud) jje=jj_end-1 120 121 c$OMP DO SCHEDULE(STATIC,OMP_CHUNK) 122 do l=1,llm 144 else 145 c$OMP DO SCHEDULE(STATIC,OMP_CHUNK) 146 do l=1,llm 147 vzon(:,l)=0. 148 enddo 149 c$OMP END DO NOWAIT 150 endif ! of if (mode_top_bound.ge.2) 151 152 ! compute zonal average of u (or set it to zero) 153 if (mode_top_bound.ge.2) then 154 jjb=jj_begin 155 jje=jj_end 156 IF (pole_nord) jjb=jj_begin+1 157 IF (pole_sud) jje=jj_end-1 158 c$OMP DO SCHEDULE(STATIC,OMP_CHUNK) 159 do l=1,llm 123 160 do j=jjb,jje 124 161 uzon(j,l)=0. … … 130 167 uzon(j,l)=uzon(j,l)/zm 131 168 enddo 132 enddo 133 c$OMP END DO NOWAIT 134 169 enddo 170 c$OMP END DO NOWAIT 171 else 172 c$OMP DO SCHEDULE(STATIC,OMP_CHUNK) 173 do l=1,llm 174 uzon(:,l)=0. 175 enddo 176 c$OMP END DO NOWAIT 177 endif ! of if (mode_top_bound.ge.2) 178 179 ! compute zonal average of potential temperature, if necessary 180 if (mode_top_bound.ge.3) then 181 jjb=jj_begin 182 jje=jj_end 183 IF (pole_nord) jjb=jj_begin+1 184 IF (pole_sud) jje=jj_end-1 135 185 c$OMP DO SCHEDULE(STATIC,OMP_CHUNK) 136 do l=1,llm186 do l=1,llm 137 187 do j=jjb,jje 138 188 zm=0. … … 144 194 tzon(j,l)=tzon(j,l)/zm 145 195 enddo 146 enddo 147 c$OMP END DO NOWAIT 148 149 C AMORTISSEMENTS LINEAIRES: 150 151 c$OMP DO SCHEDULE(STATIC,OMP_CHUNK) 152 do l=1,llm 196 enddo 197 c$OMP END DO NOWAIT 198 endif ! of if (mode_top_bound.ge.3) 199 200 if (mode_top_bound.ge.1) then 201 ! Apply sponge quenching on vcov: 202 jjb=jj_begin 203 jje=jj_end 204 IF (pole_sud) jje=jj_end-1 205 206 c$OMP DO SCHEDULE(STATIC,OMP_CHUNK) 207 do l=1,llm 153 208 do j=jjb,jje 154 209 do i=1,iip1 155 du(i,j,l)=du(i,j,l) 156 s -rdamp(l)*(ucov(i,j,l)-cu(i,j)*uzon(j,l)) 157 dh(i,j,l)=dh(i,j,l)-rdamp(l)*(teta(i,j,l)-tzon(j,l)) 158 enddo 159 enddo 160 enddo 161 c$OMP END DO NOWAIT 162 163 164 RETURN 210 vcov(i,j,l)=vcov(i,j,l) 211 & -rdamp(l)*(vcov(i,j,l)-vzon(j,l)) 212 enddo 213 enddo 214 enddo 215 c$OMP END DO NOWAIT 216 217 ! Apply sponge quenching on ucov: 218 jjb=jj_begin 219 jje=jj_end 220 IF (pole_nord) jjb=jj_begin+1 221 IF (pole_sud) jje=jj_end-1 222 223 c$OMP DO SCHEDULE(STATIC,OMP_CHUNK) 224 do l=1,llm 225 do j=jjb,jje 226 do i=1,iip1 227 ucov(i,j,l)=ucov(i,j,l) 228 & -rdamp(l)*(ucov(i,j,l)-cu(i,j)*uzon(j,l)) 229 enddo 230 enddo 231 enddo 232 c$OMP END DO NOWAIT 233 endif ! of if (mode_top_bound.ge.1) 234 235 if (mode_top_bound.ge.3) then 236 ! Apply sponge quenching on teta: 237 jjb=jj_begin 238 jje=jj_end 239 IF (pole_nord) jjb=jj_begin+1 240 IF (pole_sud) jje=jj_end-1 241 242 c$OMP DO SCHEDULE(STATIC,OMP_CHUNK) 243 do l=1,llm 244 do j=jjb,jje 245 do i=1,iip1 246 teta(i,j,l)=teta(i,j,l) 247 & -rdamp(l)*(teta(i,j,l)-tzon(j,l)) 248 enddo 249 enddo 250 enddo 251 c$OMP END DO NOWAIT 252 endif ! of if (mode_top_bond.ge.3) 253 165 254 END
Note: See TracChangeset
for help on using the changeset viewer.