Changeset 108
- Timestamp:
- Apr 12, 2011, 11:16:02 AM (14 years ago)
- Location:
- trunk
- Files:
-
- 4 added
- 17 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/chantiers/commit_importants.log
r105 r108 736 736 Avec la v105, la compilation Titan se fait sans problemes. 737 737 738 738 **----------- 739 (commit 106: ajustements dans phytitan) 740 **----------- 741 - Sorties des opacites (*_hist*.h) 742 - g(z) pris en compte (physiq.F, zzlay) 743 - correction topo (physiq.F, zzlev(i,1)) 744 - correction lell.F et lell_light.F (et aussi radtitan.F du coup) 745 - remise a jour des sorties 746 - suphec.F : RDAY=1.37889e6 et non RSIDAY 747 **----------- 748 749 ********************* 750 **** commit_v108 **** 751 ********************* 752 753 Modifs Sebastien Lebonnois dans dyn3d[par] pour sponge layer et dissip horizontale. 754 755 ** Correction bug 756 **--------------- 757 758 * Modif de dyn3d[par]/calfis[_p].F 759 => ztfi doublement incremente... 760 761 ** Sponge layer 762 **------------- 763 764 * Modif de dyn3d[par]/leapfrog[_p].F 765 Utilisation de d*top dans appel a top_bound.F 766 Initialisation des d* (dis, fi, top) 767 768 * Modif de dyn3d[par]/top_bound[_p].F 769 Implementation de mode_top_bound 770 Pas d'incrementation 771 772 * Modif de dyn3d[par]/conf_gcm.F 773 Parametres de top_bound 774 775 * Modif de dyn3d[par]/comconst.h 776 Parametres de top_bound 777 778 * Modif de deftank/[titan/venus]/gcm.def 779 Ajout ok_strato 780 Ajout parametres de top_bound 781 782 * Ecriture doc 783 Ajout top_bound.tex (et .pdf) dans la documentation. 784 785 ** Dissipation horizontale 786 **------------------------ 787 788 * Modif de dyn3d[par]/inidissip.F 789 passage a dissip_fac_mid automatique 790 passage a dissip_fac_up sur modele martien si ok_strato 791 792 * Modif de dyn3d[par]/conf_gcm.F 793 Parametres dissip_* 794 795 * Modif de dyn3d[par]/comconst.h 796 Parametres dissip_* 797 798 * Modif de deftank/[titan/venus]/gcm.def 799 Ajout parametres dissip_* !!! REGLAGES A FAIRE !!! 800 801 * Ecriture doc 802 Ajout dissip_horiz.tex (et .pdf) dans la documentation. 803 804 Reste la discretisation verticale a voir. 805 -
trunk/deftanks/titan/gcm.def
r6 r108 41 41 ## avec ou sans traceurs 42 42 iflag_trac=1 43 ## Avec ou sans strato // i.e. Couche eponge et second palier pour dissip horiz. 44 ok_strato=y 45 ## Dissipation horizontale 46 dissip_fac_mid=2. 47 dissip_fac_up=10. 48 # deltaz et hdelta en km 49 dissip_deltaz=10. 50 dissip_hdelta=5. 51 # pupstart en Pa 52 dissip_pupstart=1.e3 53 ## Couche eponge 54 # 1: dans les 4 derniers niveaux 55 # 2: dans les couches de pression plus faible que 100 fois la pression de la derniere couche 56 iflag_top_bound=1 57 ## Mode Couche eponge 58 # mode = 0 : pas de sponge 59 # mode = 1 : u et v -> 0 60 # mode = 2 : u et v -> moyenne zonale 61 # mode = 3 : u, v et h -> moyenne zonale 62 mode_top_bound=1 63 # Coefficient pour la couche eponge (valeur derniere couche) 64 tau_top_bound=4.e-5 43 65 # 44 66 ## longitude en degres du centre du zoom -
trunk/deftanks/venus/gcm.def
r6 r108 41 41 ## avec ou sans traceurs 42 42 iflag_trac=0 43 ## Avec ou sans strato // i.e. Couche eponge et second palier pour dissip horiz. 44 ok_strato=y 45 ## Dissipation horizontale 46 dissip_fac_mid=2. 47 dissip_fac_up=2. 48 # deltaz et hdelta en km 49 dissip_deltaz=10. 50 dissip_hdelta=5. 51 # pupstart en Pa 52 dissip_pupstart=1.e3 53 ## Couche eponge 54 # 1: dans les 4 derniers niveaux 55 # 2: dans les couches de pression plus faible que 100 fois la pression de la derniere couche 56 iflag_top_bound=1 57 ## Mode Couche eponge 58 # mode = 0 : pas de sponge 59 # mode = 1 : u et v -> 0 60 # mode = 2 : u et v -> moyenne zonale 61 # mode = 3 : u, v et h -> moyenne zonale 62 mode_top_bound=1 63 # Coefficient pour la couche eponge (valeur derniere couche) 64 tau_top_bound=1.e-5 43 65 # 44 66 ## longitude en degres du centre du zoom -
trunk/documentation/cpdet.tex
r5 r108 112 112 \section{Pratical aspects in the code} 113 113 114 A specific file has been added to the dynamical core, cpdet.F, which includes114 A specific file has been added to the dynamical core, \textsf{cpdet.F}, which includes 115 115 all the needed routines to take the $C_p(T)$ possibility into account. 116 116 These routines take advantage of the keyword \textsf{planet\_type} to -
trunk/libf/dyn3d/calfis.F
r97 r108 587 587 588 588 ! ADAPTATION GCM POUR CP(T) 589 ztfi=ztfi+zdtfi*dtphys590 589 call t2tpot(ngridmx*llm,ztfi,zteta,zpk) 591 590 -
trunk/libf/dyn3d/comconst.h
r53 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/dyn3d/conf_gcm.F
r97 r108 303 303 ! Parametres controlant la variation sur la verticale des constantes de 304 304 ! dissipation. 305 ! Pour le moment actifs uniquement dans la version a 39 niveaux 306 ! avec ok_strato=y 307 308 dissip_factz=4. 309 dissip_deltaz=10. 310 dissip_zref=30. 311 CALL getin('dissip_factz',dissip_factz ) 305 ! Actifs uniquement avec ok_strato=y 306 307 dissip_fac_mid=2. 308 dissip_fac_up=10. 309 dissip_deltaz=10.! Intervalle (km) pour le changement mid / up 310 dissip_hdelta=5. ! scale height (km) dans la zone de la transition(m) 311 dissip_pupstart=1.e3 ! pression (Pa) au bas la transition mid / up 312 CALL getin('dissip_fac_mid',dissip_fac_mid ) 313 CALL getin('dissip_fac_up',dissip_fac_up ) 312 314 CALL getin('dissip_deltaz',dissip_deltaz ) 313 CALL getin('dissip_zref',dissip_zref ) 314 315 CALL getin('dissip_hdelta',dissip_hdelta ) 316 CALL getin('dissip_pupstart',dissip_pupstart ) 317 318 ! Parametres controlant la couche eponge 319 ! Actifs uniquement avec ok_strato=y 320 ! mode = 0 : pas de sponge 321 ! mode = 1 : u et v -> 0 322 ! mode = 2 : u et v -> moyenne zonale 323 ! mode = 3 : u, v et h -> moyenne zonale 315 324 iflag_top_bound=1 325 mode_top_bound=3 316 326 tau_top_bound=1.e-5 317 327 CALL getin('iflag_top_bound',iflag_top_bound) 328 CALL getin('mode_top_bound',mode_top_bound) 318 329 CALL getin('tau_top_bound',tau_top_bound) 319 330 -
trunk/libf/dyn3d/inidissip.F
r1 r108 31 31 INTEGER l,ij,idum,ii 32 32 REAL tetamin 33 REAL pseudoz33 REAL Pup 34 34 35 35 REAL ran1 … … 177 177 c -------------------------------------------------- 178 178 179 if (ok_strato .and. llm==39) then 180 do l=1,llm 181 pseudoz=8.*log(preff/presnivs(l)) 182 zvert(l)=1+ 183 s (tanh((pseudoz-dissip_zref)/dissip_deltaz)+1.)/2. 184 s *(dissip_factz-1.) 185 enddo 186 else 187 DO l=1,llm 188 zvert(l)=1. 189 ENDDO 190 fact=2. 191 DO l = 1, llm 192 zz = 1. - preff/presnivs(l) 193 zvert(l)= fact -( fact-1.)/( 1.+zz*zz ) 194 ENDDO 179 c First step: going from 1 to dissip_fac_mid (in gcm.def) 180 c============ 181 DO l=1,llm 182 zz = 1. - preff/presnivs(l) 183 zvert(l)= dissip_fac_mid -( dissip_fac_mid-1.)/( 1.+zz*zz ) 184 ENDDO 185 186 write(*,*) 'Dissipation : ' 187 write(*,*) 'Multiplication de la dissipation en altitude :', 188 write(*,*) ' dissip_fac_mid =', dissip_fac_mid 189 190 c Second step if ok_strato: from dissip_fac_mid to dissip_fac_up (in gcm.def) 191 c========================== 192 c Utilisation de la fonction tangente hyperbolique pour augmenter 193 c arbitrairement la dissipation et donc la stabilite du modele a 194 c partir d'une certaine altitude. 195 196 c Le facteur multiplicatif de basse atmosphere etant deja pris 197 c en compte, il faut diviser le facteur multiplicatif de haute 198 c atmosphere par celui-ci. 199 200 if (ok_strato) then 201 202 Pup = dissip_pupstart*exp(-0.5*dissip_deltaz/dissip_hdelta) 203 do l=1,llm 204 zvert(l)= zvert(l)*(1.0+( (dissip_fac_up/dissip_fac_mid-1) 205 & *(1-(0.5*(1+tanh(-6./dissip_deltaz* 206 & (-dissip_hdelta*log(presnivs(l)/Pup)) )))) )) 207 enddo 208 209 write(*,*) ' dissip_fac_up =', dissip_fac_up 210 write(*,*) 'Transition mid /up: Pupstart,delta =', 211 & dissip_pupstart,'Pa', dissip_deltaz , '(km)' 212 195 213 endif 196 214 -
trunk/libf/dyn3d/leapfrog.F
r101 r108 111 111 REAL dvfi(ip1jm,llm),dufi(ip1jmp1,llm) 112 112 REAL dtetafi(ip1jmp1,llm),dqfi(ip1jmp1,llm,nqtot),dpfi(ip1jmp1) 113 114 real :: duspg(ip1jmp1,llm) ! for bilan_dyn115 113 116 114 c variables pour le fichier histoire … … 463 461 c ------------------- 464 462 IF (ok_strato) THEN 465 CALL top_bound( vcov,ucov,teta,masse,dufi,dvfi,dtetafi) 463 CALL top_bound( vcov,ucov,teta,masse,dutop,dvtop,dtetatop) 464 c dqtop=0, dptop=0 465 CALL addfi( dtphys, leapf, forward , 466 $ ucov, vcov, teta , q ,ps , 467 $ dutop, dvtop, dtetatop , dqtop ,dptop ) 466 468 ENDIF 467 c dqtop=0, dptop=0 468 469 c ajout des tendances physiques: 470 c ------------------------------ 471 CALL addfi( dtphys, leapf, forward , 472 $ ucov, vcov, teta , q ,ps , 473 $ dufi, dvfi, dtetafi , dqfi ,dpfi ) 474 c 469 475 470 c Diagnostique de conservation de l'énergie : difference 476 471 IF (ip_ebil_dyn.ge.1 ) THEN … … 512 507 ! Sponge layer (if any) 513 508 IF (ok_strato) THEN 514 dutop(:,:)=0.515 dvtop(:,:)=0.516 dtetatop(:,:)=0.517 dqtop(:,:,:)=0.518 dptop(:)=0.519 509 CALL top_bound(vcov,ucov,teta,masse,dutop,dvtop,dtetatop) 510 c dqtop=0, dptop=0 520 511 CALL addfi( dtvr, leapf, forward , 521 512 $ ucov, vcov, teta , q ,ps , … … 669 660 CALL bilan_dyn(dtvr*iperiod,dtvr*day_step*periodav, 670 661 & ps,masse,pk,pbaru,pbarv,teta,phi,ucov,vcov, 671 & du,dudis,du spg,dufi)662 & du,dudis,dutop,dufi) 672 663 #endif 673 664 END IF … … 801 792 CALL bilan_dyn(dtvr*iperiod,dtvr*day_step*periodav, 802 793 & ps,masse,pk,pbaru,pbarv,teta,phi,ucov,vcov, 803 & du,dudis,du spg,dufi)794 & du,dudis,dutop,dufi) 804 795 #endif 805 796 ENDIF -
trunk/libf/dyn3d/top_bound.F
r1 r108 52 52 LOGICAL,SAVE :: first=.true. 53 53 54 REAL zkm 54 55 INTEGER j,l 55 56 … … 68 69 rdamp(llm-3)=tau_top_bound/8. 69 70 else if (iflag_top_bound.eq.2) then 70 ! couc e eponge dans toutes les couches de pression plus faible que71 ! couche eponge dans toutes les couches de pression plus faible que 71 72 ! 100 fois la pression de la derniere couche 72 73 rdamp(:)=tau_top_bound … … 74 75 endif 75 76 first=.false. 76 print*,'TOP_BOUND rdamp=',rdamp 77 print*,'TOP_BOUND mode',mode_top_bound 78 print*,'Coeffs pour la couche eponge a l equateur' 79 print*,'p (Pa) z(km) tau (s) dt*rdamp' 80 do l=1,llm 81 if (rdamp(l).ne.0.) then 82 zkm = phi(iip1/2,jjp1/2,l)/(1000*g) 83 print*,presnivs(l),zkm, 84 . 1./rdamp(l), 85 . dt*rdamp(l) 86 endif 87 enddo 77 88 endif 78 89 79 90 CALL massbar(masse,massebx,masseby) 80 91 81 do l=1,llm 92 c mode = 0 : pas de sponge 93 c mode = 1 : u et v -> 0 94 c mode = 2 : u et v -> moyenne zonale 95 c mode = 3 : u, v et h -> moyenne zonale 96 97 if (mode_top_bound.ge.2) then 98 do l=1,llm 82 99 do j=1,jjm 83 100 vzon(j,l)=0. … … 92 109 vzon(j,l)=vzon(j,l)/zm 93 110 enddo 94 enddo111 enddo 95 112 96 do l=1,llm 97 do i=1,iip1 98 do j=1,jjm 99 dv(i,j,l)=dv(i,j,l)-rdamp(l)*(vcov(i,j,l)-vzon(j,l)) 100 enddo 101 enddo 102 enddo 103 104 do l=1,llm 113 do l=1,llm 105 114 do j=2,jjm 106 115 uzon(j,l)=0. … … 112 121 uzon(j,l)=uzon(j,l)/zm 113 122 enddo 114 enddo 123 enddo 124 else 125 vzon(:,:)=0. 126 uzon(:,:)=0. 127 endif 115 128 116 do l=1,llm 129 if (mode_top_bound.ge.3) then 130 do l=1,llm 117 131 do j=2,jjm 118 132 zm=0. … … 124 138 tzon(j,l)=tzon(j,l)/zm 125 139 enddo 126 enddo 140 enddo 141 endif 127 142 128 143 C AMORTISSEMENTS LINEAIRES: 129 144 130 do l=1,llm 145 if (mode_top_bound.ge.1) then 146 do l=1,llm 147 do i=1,iip1 148 do j=1,jjm 149 dv(i,j,l)= -rdamp(l)*(vcov(i,j,l)-vzon(j,l)) 150 enddo 151 enddo 152 enddo 153 154 do l=1,llm 131 155 do i=1,iip1 132 156 do j=2,jjm 133 du(i,j,l)=du(i,j,l) 134 s -rdamp(l)*(ucov(i,j,l)-cu(i,j)*uzon(j,l)) 135 dh(i,j,l)=dh(i,j,l)-rdamp(l)*(teta(i,j,l)-tzon(j,l)) 157 du(i,j,l)= -rdamp(l)*(ucov(i,j,l)-cu(i,j)*uzon(j,l)) 136 158 enddo 137 159 enddo 138 enddo 160 enddo 161 endif 162 163 if (mode_top_bound.ge.3) then 164 do l=1,llm 165 do i=1,iip1 166 do j=2,jjm 167 dh(i,j,l)= -rdamp(l)*(teta(i,j,l)-tzon(j,l)) 168 enddo 169 enddo 170 enddo 171 endif 139 172 140 141 173 RETURN 142 174 END -
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.