Changeset 108 for trunk/libf/dyn3dpar
- Timestamp:
- Apr 12, 2011, 11:16:02 AM (14 years ago)
- Location:
- trunk/libf/dyn3dpar
- Files:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/libf/dyn3dpar/addfi_p.F
r7 r108 28 28 c pdufi(ip1jmp1,llm) | 29 29 c pdvfi(ip1jm,llm) | respective 30 c pdhfi(ip1jmp1) | tendencies 30 c pdhfi(ip1jmp1) | tendencies (unit/s) 31 31 c pdtsfi(ip1jmp1) | 32 32 c -
trunk/libf/dyn3dpar/calfis_p.F
r97 r108 952 952 953 953 ! ADAPTATION GCM POUR CP(T) 954 !$OMP DO SCHEDULE(STATIC,OMP_CHUNK)955 DO l=1,llm956 ztfi(1:klon,l)=ztfi(1:klon,l)+zdtfi(1:klon,l)*dtphys957 ENDDO958 !$OMP END DO959 954 call t2tpot_p(ngridmx,llm,ztfi,zteta,zpk) 960 955 -
trunk/libf/dyn3dpar/comconst.h
r52 r108 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 & 11 & ,dissip_factz,dissip_deltaz,dissip_zref&12 & 11 & ,dissip_fac_mid,dissip_fac_up,dissip_deltaz,dissip_hdelta & 12 & ,dissip_pupstart ,tau_top_bound, & 13 13 & daylen,year_day,molmass, ihf 14 14 COMMON/cpdetvenus/nu_venus,t0_venus … … 28 28 REAL g ! (m/s2) gravity 29 29 REAL omeg ! (rad/s) rotation rate of the planet 30 REAL dissip_factz,dissip_deltaz,dissip_zref 31 INTEGER iflag_top_bound 30 REAL dissip_fac_mid,dissip_fac_up,dissip_deltaz,dissip_hdelta 31 REAL dissip_pupstart 32 INTEGER iflag_top_bound,mode_top_bound 32 33 REAL tau_top_bound 33 34 REAL daylen ! length of solar day, in 'standard' day length -
trunk/libf/dyn3dpar/conf_gcm.F
r97 r108 314 314 ! Parametres controlant la variation sur la verticale des constantes de 315 315 ! dissipation. 316 ! Pour le moment actifs uniquement dans la version a 39 niveaux 317 ! avec ok_strato=y 318 319 dissip_factz=4. 320 dissip_deltaz=10. 321 dissip_zref=30. 322 CALL getin('dissip_factz',dissip_factz ) 316 ! Actifs uniquement avec ok_strato=y 317 318 dissip_fac_mid=2. 319 dissip_fac_up=10. 320 dissip_deltaz=10.! Intervalle (km) pour le changement mid / up 321 dissip_hdelta=5. ! scale height (km) dans la zone de la transition(m) 322 dissip_pupstart=1.e3 ! pression (Pa) au bas la transition mid / up 323 CALL getin('dissip_fac_mid',dissip_fac_mid ) 324 CALL getin('dissip_fac_up',dissip_fac_up ) 323 325 CALL getin('dissip_deltaz',dissip_deltaz ) 324 CALL getin('dissip_zref',dissip_zref ) 325 326 CALL getin('dissip_hdelta',dissip_hdelta ) 327 CALL getin('dissip_pupstart',dissip_pupstart ) 328 329 ! Parametres controlant la couche eponge 330 ! Actifs uniquement avec ok_strato=y 331 ! mode = 0 : pas de sponge 332 ! mode = 1 : u et v -> 0 333 ! mode = 2 : u et v -> moyenne zonale 334 ! mode = 3 : u, v et h -> moyenne zonale 326 335 iflag_top_bound=1 336 mode_top_bound=3 327 337 tau_top_bound=1.e-5 328 338 CALL getin('iflag_top_bound',iflag_top_bound) 339 CALL getin('mode_top_bound',mode_top_bound) 329 340 CALL getin('tau_top_bound',tau_top_bound) 330 341 -
trunk/libf/dyn3dpar/leapfrog_p.F
r101 r108 113 113 REAL,DIMENSION(:,:,:),ALLOCATABLE,SAVE :: dqfi 114 114 115 !! Aymeric -- cp(T) comme dans leapfrog.F, SAVE OK ??? 116 REAL,SAVE :: duspg(ip1jmp1,llm) ! for bilan_dyn 117 115 c tendances top_bound (sponge layer) 116 REAL,SAVE :: dvtop(ip1jm,llm),dutop(ip1jmp1,llm) 117 REAL,SAVE :: dtetatop(ip1jmp1,llm) 118 REAL,SAVE :: dptop(ip1jmp1) 119 REAL,DIMENSION(:,:,:),ALLOCATABLE,SAVE :: dqtop 118 120 119 121 c variables pour le fichier histoire … … 242 244 ALLOCATE(dqfi(ip1jmp1,llm,nqtot)) 243 245 ALLOCATE(dqfi_tmp(iip1,llm,nqtot)) 246 ALLOCATE(dqtop(ip1jmp1,llm,nqtot)) 244 247 END IF 245 248 c$OMP END MASTER … … 251 254 252 255 c$OMP MASTER 256 c INITIALISATIONS 257 dudis(:,:) =0. 258 dvdis(:,:) =0. 259 dtetadis(:,:)=0. 260 dutop(:,:) =0. 261 dvtop(:,:) =0. 262 dtetatop(:,:)=0. 263 dqtop(:,:,:) =0. 264 dptop(:) =0. 265 dufi(:,:) =0. 266 dvfi(:,:) =0. 267 dtetafi(:,:)=0. 268 dqfi(:,:,:) =0. 269 dpfi(:) =0. 253 270 dq(:,:,:)=0. 271 254 272 CALL pression ( ip1jmp1, ap, bp, ps, p ) 255 273 CALL exner_hyb( ip1jmp1, ps, p,alpha,beta, pks, pk, pkf ) … … 914 932 c ajout des tendances physiques: 915 933 c ------------------------------ 916 IF (ok_strato) THEN917 CALL top_bound_p( vcov,ucov,teta,masse,dufi,dvfi,dtetafi)918 ENDIF919 920 934 CALL addfi_p( dtphys, leapf, forward , 921 935 $ ucov, vcov, teta , q ,ps , 922 936 $ dufi, dvfi, dtetafi , dqfi ,dpfi ) 923 937 938 c Couche superieure : 939 c ------------------- 940 IF (ok_strato) THEN 941 CALL top_bound_p( vcov,ucov,teta,masse,dutop,dvtop,dtetatop) 942 CALL addfi_p( dtphys, leapf, forward , 943 $ ucov, vcov, teta , q ,ps , 944 $ dutop, dvtop, dtetatop , dqtop ,dptop ) 945 946 ENDIF 947 924 948 c$OMP BARRIER 925 949 c$OMP MASTER … … 1444 1468 CALL bilan_dyn_p(dtvr*iperiod,dtvr*day_step*periodav, 1445 1469 & ps,masse,pk,pbaru,pbarv,teta,phi,ucov,vcov, 1446 & du,dudis,du spg,dufi)1470 & du,dudis,dutop,dufi) 1447 1471 c$OMP END MASTER 1448 1472 ENDIF !ok_dynzon … … 1670 1694 CALL bilan_dyn_p(dtvr*iperiod,dtvr*day_step*periodav, 1671 1695 & ps,masse,pk,pbaru,pbarv,teta,phi,ucov,vcov, 1672 & du,dudis,du spg,dufi)1696 & du,dudis,dutop,dufi) 1673 1697 1674 1698 c$OMP END MASTER -
trunk/libf/dyn3dpar/top_bound_p.F
r1 r108 64 64 rdamp(llm-3)=tau_top_bound/8. 65 65 else if (iflag_top_bound == 2) then 66 ! couc e eponge dans toutes les couches de pression plus faible que66 ! couche eponge dans toutes les couches de pression plus faible que 67 67 ! 100 fois la pression de la derniere couche 68 68 rdamp(:)=tau_top_bound … … 70 70 endif 71 71 first=.false. 72 print*,'TOP_BOUND rdamp=',rdamp 72 print*,'TOP_BOUND mode',mode_top_bound 73 print*,'Coeffs pour la couche eponge a l equateur' 74 print*,'p (Pa) z(km) tau (s) dt*rdamp' 75 do l=1,llm 76 if (rdamp(l).ne.0.) then 77 zkm = phi(iip1/2,jjp1/2,l)/(1000*g) 78 print*,presnivs(l),zkm, 79 . 1./rdamp(l), 80 . dt*rdamp(l) 81 endif 82 enddo 73 83 c$OMP END MASTER 74 84 c$OMP BARRIER … … 77 87 78 88 CALL massbar_p(masse,massebx,masseby) 89 90 c mode = 0 : pas de sponge 91 c mode = 1 : u et v -> 0 92 c mode = 2 : u et v -> moyenne zonale 93 c mode = 3 : u, v et h -> moyenne zonale 94 95 C POUR V 96 79 97 C CALCUL DES CHAMPS EN MOYENNE ZONALE: 80 98 … … 84 102 85 103 c$OMP DO SCHEDULE(STATIC,OMP_CHUNK) 86 do l=1,llm 104 if (mode_top_bound.ge.2) then 105 do l=1,llm 87 106 do j=jjb,jje 88 107 zm=0. … … 97 116 vzon(j,l)=vzon(j,l)/zm 98 117 enddo 99 enddo 118 enddo 119 else 120 do l=1,llm 121 do j=jjb,jje 122 vzon(j,l)=0. 123 enddo 124 enddo 125 endif 100 126 c$OMP END DO NOWAIT 101 127 102 c$OMP DO SCHEDULE(STATIC,OMP_CHUNK) 103 do l=1,llm 128 C AMORTISSEMENTS LINEAIRES: 129 130 c$OMP DO SCHEDULE(STATIC,OMP_CHUNK) 131 if (mode_top_bound.ge.1) then 132 do l=1,llm 104 133 do j=jjb,jje 105 134 do i=1,iip1 106 dv(i,j,l)=dv(i,j,l)-rdamp(l)*(vcov(i,j,l)-vzon(j,l)) 107 enddo 108 enddo 109 enddo 110 c$OMP END DO NOWAIT 135 dv(i,j,l)= -rdamp(l)*(vcov(i,j,l)-vzon(j,l)) 136 enddo 137 enddo 138 enddo 139 endif 140 c$OMP END DO NOWAIT 141 142 C POUR U ET H 143 144 C CALCUL DES CHAMPS EN MOYENNE ZONALE: 111 145 112 146 jjb=jj_begin … … 116 150 117 151 c$OMP DO SCHEDULE(STATIC,OMP_CHUNK) 118 do l=1,llm 152 if (mode_top_bound.ge.2) then 153 do l=1,llm 119 154 do j=jjb,jje 120 155 uzon(j,l)=0. … … 126 161 uzon(j,l)=uzon(j,l)/zm 127 162 enddo 128 enddo 163 enddo 164 else 165 do l=1,llm 166 do j=jjb,jje 167 uzon(j,l)=0. 168 enddo 169 enddo 170 endif 129 171 c$OMP END DO NOWAIT 130 172 131 173 c$OMP DO SCHEDULE(STATIC,OMP_CHUNK) 132 do l=1,llm 174 if (mode_top_bound.ge.3) then 175 do l=1,llm 133 176 do j=jjb,jje 134 177 zm=0. … … 140 183 tzon(j,l)=tzon(j,l)/zm 141 184 enddo 142 enddo 185 enddo 186 endif 143 187 c$OMP END DO NOWAIT 144 188 … … 146 190 147 191 c$OMP DO SCHEDULE(STATIC,OMP_CHUNK) 148 do l=1,llm 192 if (mode_top_bound.ge.1) then 193 do l=1,llm 149 194 do j=jjb,jje 150 195 do i=1,iip1 151 du(i,j,l)=du(i,j,l) 152 s -rdamp(l)*(ucov(i,j,l)-cu(i,j)*uzon(j,l)) 153 dh(i,j,l)=dh(i,j,l)-rdamp(l)*(teta(i,j,l)-tzon(j,l)) 154 enddo 155 enddo 156 enddo 196 du(i,j,l)= -rdamp(l)*(ucov(i,j,l)-cu(i,j)*uzon(j,l)) 197 enddo 198 enddo 199 enddo 200 endif 201 c$OMP END DO NOWAIT 202 203 c$OMP DO SCHEDULE(STATIC,OMP_CHUNK) 204 if (mode_top_bound.ge.3) then 205 do l=1,llm 206 do j=jjb,jje 207 do i=1,iip1 208 dh(i,j,l)= -rdamp(l)*(teta(i,j,l)-tzon(j,l)) 209 enddo 210 enddo 211 enddo 212 endif 157 213 c$OMP END DO NOWAIT 158 214
Note: See TracChangeset
for help on using the changeset viewer.