Changeset 5082 for LMDZ6/branches/Amaury_dev/libf/dyn3d_common
- Timestamp:
- Jul 19, 2024, 5:41:58 PM (4 months ago)
- Location:
- LMDZ6/branches/Amaury_dev/libf/dyn3d_common
- Files:
-
- 23 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ6/branches/Amaury_dev/libf/dyn3d_common/advn.F
r4593 r5082 170 170 c calcul des pentes en u: 171 171 c ----------------------- 172 if (mode .eq.0) then172 if (mode==0) then 173 173 do l=1,llm 174 174 do ij=1,ip1jm … … 211 211 enddo 212 212 do ij=iip2+1,ip1jm 213 extremum(ij)=dxqu(ij)*dxqu(ij-1) .le.0.213 extremum(ij)=dxqu(ij)*dxqu(ij-1)<=0. 214 214 enddo 215 215 do ij=iip1+iip1,ip1jm,iip1 … … 285 285 data mode/1/ 286 286 287 if (mode .eq.0) then287 if (mode==0) then 288 288 do l=1,llm 289 289 do ij=1,ip1jmp1 … … 307 307 308 308 do ij=iip2,ip1jm 309 extremum(ij)=dyqv(ij)*dyqv(ij-iip1) .le.0.309 extremum(ij)=dyqv(ij)*dyqv(ij-iip1)<=0. 310 310 enddo 311 311 … … 385 385 c ----------------------- 386 386 387 if (mode .eq.0) then387 if (mode==0) then 388 388 do l=1,llm 389 389 do ij=1,ip1jmp1 … … 410 410 do l=2,llm-1 411 411 do ij=1,ip1jmp1 412 extremum(ij,l)=dzqw(ij,l)*dzqw(ij,l+1) .le.0.412 extremum(ij,l)=dzqw(ij,l)*dzqw(ij,l+1)<=0. 413 413 enddo 414 414 enddo … … 525 525 c qg(ij,l)=q(ij,l) 526 526 c endif 527 if(abs(zdq) .gt.prec) then527 if(abs(zdq)>prec) then 528 528 zsigd(ij,l)=(q(ij,l)-qg(ij,l))/zdq 529 529 zsigg(ij,l)=1.-zsigd(ij,l) … … 548 548 do l=1,llm 549 549 do ij=iip2,ip1jm-1 550 if (u_m(ij,l) .ge.0.) then550 if (u_m(ij,l)>=0.) then 551 551 zsigp=zsigd(ij,l) 552 552 zsigm=zsigg(ij,l) … … 564 564 endif 565 565 zu=abs(u_m(ij,l)) 566 ladvplus(ij,l)=zu .gt.zm566 ladvplus(ij,l)=zu>zm 567 567 zsig=zu/zm 568 if(zsig .eq.0.) zsigp=0.1569 if (mode .eq.1) then570 if (zsig .le.zsigp) then568 if(zsig==0.) zsigp=0.1 569 if (mode==1) then 570 if (zsig<=zsigp) then 571 571 u_mq(ij,l)=u_m(ij,l)*zqp 572 else if (mode .eq.1) then572 else if (mode==1) then 573 573 u_mq(ij,l)= 574 574 s sign(zm,u_m(ij,l))*(zsigp*zqp+(zsig-zsigp)*zqm) 575 575 endif 576 576 else 577 if (zsig .le.zsigp) then577 if (zsig<=zsigp) then 578 578 u_mq(ij,l)=u_m(ij,l)*(zqp-0.5*zsig/zsigp*(zqp-zq)) 579 579 else … … 613 613 enddo 614 614 615 if(n0 .gt.1) then615 if(n0>1) then 616 616 IF (prt_level > 9) WRITE(lunout,*) 617 617 & 'Nombre de points pour lesquels on advect plus que le' … … 619 619 620 620 do l=1,llm 621 if(nl(l) .gt.0) then621 if(nl(l)>0) then 622 622 iju=0 623 623 c indicage des mailles concernees par le traitement special 624 624 do ij=iip2,ip1jm 625 if(ladvplus(ij,l).and.mod(ij,iip1) .ne.0) then625 if(ladvplus(ij,l).and.mod(ij,iip1)/=0) then 626 626 iju=iju+1 627 627 indu(iju)=ij … … 637 637 zu_m=u_m(ij,l) 638 638 u_mq(ij,l)=0. 639 if(zu_m .gt.0.) then639 if(zu_m>0.) then 640 640 ijq=ij 641 641 i=ijq-(j-1)*iip1 642 642 c accumulation pour les mailles completements advectees 643 do while(zu_m .gt.masse(ijq,l))643 do while(zu_m>masse(ijq,l)) 644 644 u_mq(ij,l)=u_mq(ij,l)+q(ijq,l)*masse(ijq,l) 645 645 zu_m=zu_m-masse(ijq,l) … … 650 650 c ajout de la maille non completement advectee 651 651 zsig=zu_m/masse(ijq,l) 652 if(zsig .le.zsigd(ijq,l)) then652 if(zsig<=zsigd(ijq,l)) then 653 653 u_mq(ij,l)=u_mq(ij,l)+zu_m*(qd(ijq,l) 654 654 s -0.5*zsig/zsigd(ijq,l)*(qd(ijq,l)-q(ijq,l))) … … 657 657 c goto 8888 658 658 zz=0.5*(zsig-zsigd(ijq,l))/zsigg(ijq,l) 659 if(.not.(zz .gt.0..and.zz.le.0.5)) then659 if(.not.(zz>0..and.zz<=0.5)) then 660 660 WRITE(lunout,*)'probleme2 au point ij=',ij, 661 661 s ' l=',l … … 671 671 i=ijq-(j-1)*iip1 672 672 c accumulation pour les mailles completements advectees 673 do while(-zu_m .gt.masse(ijq,l))673 do while(-zu_m>masse(ijq,l)) 674 674 u_mq(ij,l)=u_mq(ij,l)-q(ijq,l)*masse(ijq,l) 675 675 zu_m=zu_m+masse(ijq,l) … … 680 680 c 2eme MODIF SPECIFIQUE 681 681 zsig=-zu_m/masse(ij+1,l) 682 if(zsig .le.zsigg(ijq,l)) then682 if(zsig<=zsigg(ijq,l)) then 683 683 u_mq(ij,l)=u_mq(ij,l)+zu_m*(qg(ijq,l) 684 684 s -0.5*zsig/zsigg(ijq,l)*(qg(ijq,l)-q(ijq,l))) … … 687 687 c goto 9999 688 688 zz=0.5*(zsig-zsigg(ijq,l))/zsigd(ijq,l) 689 if(.not.(zz .gt.0..and.zz.le.0.5)) then689 if(.not.(zz>0..and.zz<=0.5)) then 690 690 WRITE(lunout,*)'probleme22 au point ij=',ij 691 691 s ,' l=',l … … 786 786 c qs(ij,l)=q(ij,l) 787 787 c endif 788 if(abs(zdq) .gt.prec) then788 if(abs(zdq)>prec) then 789 789 zsign(ij)=(q(ij,l)-qs(ij,l))/zdq 790 790 zsigs(ij)=1.-zsign(ij) … … 804 804 805 805 do ij=1,ip1jm 806 if (v_m(ij,l) .ge.0.) then806 if (v_m(ij,l)>=0.) then 807 807 zsigp=zsign(ij+iip1) 808 808 zsigm=zsigs(ij+iip1) … … 820 820 endif 821 821 zsig=abs(v_m(ij,l))/zm 822 if(zsig .eq.0.) zsigp=0.1823 if (zsig .le.zsigp) then822 if(zsig==0.) zsigp=0.1 823 if (zsig<=zsigp) then 824 824 v_mq(ij,l)=v_m(ij,l)*(zqp-0.5*zsig/zsigp*(zqp-zq)) 825 825 else … … 918 918 c endif 919 919 920 if(abs(zdq) .gt.prec) then920 if(abs(zdq)>prec) then 921 921 zsigb(ij,l)=(q(ij,l)-qh(ij,l))/zdq 922 922 zsigh(ij,l)=1.-zsigb(ij,l) … … 933 933 do l=2,llm 934 934 do ij=1,ip1jmp1 935 if (w_m(ij,l) .ge.0.) then935 if (w_m(ij,l)>=0.) then 936 936 zsigp=zsigb(ij,l) 937 937 zsigm=zsigh(ij,l) … … 949 949 endif 950 950 zsig=abs(w_m(ij,l))/zm 951 if(zsig .eq.0.) zsigp=0.1952 if (zsig .le.zsigp) then951 if(zsig==0.) zsigp=0.1 952 if (zsig<=zsigp) then 953 953 w_mq(ij,l)=w_m(ij,l)*(zqp-0.5*zsig/zsigp*(zqp-zq)) 954 954 else -
LMDZ6/branches/Amaury_dev/libf/dyn3d_common/coordij.F
r2598 r5082 28 28 29 29 DO i=1,iim+1 30 IF (rlonu(i) .GT.zlon) THEN30 IF (rlonu(i)>zlon) THEN 31 31 ilon=i 32 32 GOTO 10 … … 37 37 j=0 38 38 DO j=1,jjm 39 IF(rlatv(j) .LT.zlat) THEN39 IF(rlatv(j)<zlat) THEN 40 40 jlat=j 41 41 GOTO 20 … … 43 43 ENDDO 44 44 20 CONTINUE 45 IF(j .EQ.0) j=jjm+145 IF(j==0) j=jjm+1 46 46 47 47 RETURN -
LMDZ6/branches/Amaury_dev/libf/dyn3d_common/diagedyn.F
r4593 r5082 279 279 C =================================== 280 280 C 281 IF ( (idiag2 .gt.0) .and. (pas(idiag2) .ne.0) ) THEN281 IF ( (idiag2>0) .and. (pas(idiag2) /= 0) ) THEN 282 282 d_h_vcol = (h_vcol_tot - h_vcol_pre(idiag2) )/dtime 283 283 d_h_dair = (h_dair_tot- h_dair_pre(idiag2))/dtime … … 303 303 ENDIF 304 304 C 305 IF (iprt .ge.2) THEN305 IF (iprt>=2) THEN 306 306 WRITE(6,9000) tit,pas(idiag),d_qt,d_qw,d_ql,d_qs 307 307 9000 format('Dyn3d. Watter Mass Budget (kg/m2/s)',A15 -
LMDZ6/branches/Amaury_dev/libf/dyn3d_common/disvert_noterre.F
r2603 r5082 24 24 c 25 25 c======================================================================= 26 c Discretisation verticale en coordonn ée hybride (ou sigma)26 c Discretisation verticale en coordonn�e hybride (ou sigma) 27 27 c 28 28 c======================================================================= … … 66 66 open(99,file="esasig.def",status='old',form='formatted', 67 67 s iostat=ierr2) 68 if(ierr2 .ne.0) then68 if(ierr2/=0) then 69 69 close(99) 70 70 open(99,file="z2sig.def",status='old',form='formatted', … … 76 76 c ---------------------------------------- 77 77 78 IF(ierr2 .eq.0) then78 IF(ierr2==0) then 79 79 80 80 c Lecture de esasig.def : … … 114 114 s( llm ) = 1. 115 115 s(llm-1) = quoi 116 IF( llm .gt.2 ) THEN116 IF( llm>2 ) THEN 117 117 DO ll = 2, llm-1 118 118 l = llm+1 - ll … … 131 131 c ---------------------------------------- 132 132 133 ELSE IF(ierr4 .eq.0) then133 ELSE IF(ierr4==0) then 134 134 write(lunout,*)'****************************' 135 135 write(lunout,*)'Reading z2sig.def' … … 208 208 c Calcul au milieu des couches : 209 209 c WARNING : le choix de placer le milieu des couches au niveau de 210 c pression interm édiaire est arbitraire et pourrait etre modifié.210 c pression interm�diaire est arbitraire et pourrait etre modifi�. 211 211 c Le calcul du niveau pour la derniere couche 212 212 c (on met la meme distance (en log pression) entre P(llm) 213 213 c et P(llm -1) qu'entre P(llm-1) et P(llm-2) ) est 214 c Specifique. Ce choix est sp écifiéici ET dans exner_milieu.F214 c Specifique. Ce choix est sp�cifi� ici ET dans exner_milieu.F 215 215 216 216 DO l = 1, llm-1 … … 284 284 c L'objectif est de calculer newsig telle que 285 285 c (1 -pa/preff)*exp(1-1./newsig**2)+(pa/preff)*newsig = sig 286 c Cela ne se r ésoud pas analytiquement:287 c => on r ésoud par iterration bourrine286 c Cela ne se r�soud pas analytiquement: 287 c => on r�soud par iterration bourrine 288 288 c ---------------------------------------------- 289 289 c Information : where exp(1-1./x**2) become << x … … 307 307 x1=0 308 308 x2=1 309 if (sig .ge.1) then309 if (sig>=1) then 310 310 newsig= sig 311 else if (sig*preff/pa .ge.0.25) then311 else if (sig*preff/pa>=0.25) then 312 312 DO J=1,9999 ! nombre d''iteration max 313 313 F=((1 -pa/preff)*exp(1-1./newsig**2)+(pa/preff)*newsig)/sig 314 314 c write(0,*) J, ' newsig =', newsig, ' F= ', F 315 if (F .gt.1) then315 if (F>1) then 316 316 X2 = newsig 317 317 newsig=(X1+newsig)*0.5 … … 320 320 newsig=(X2+newsig)*0.5 321 321 end if 322 c Test : on arete lorsque on approxime sig à moins de 0.01 m près322 c Test : on arete lorsque on approxime sig � moins de 0.01 m pr�s 323 323 c (en pseudo altitude) : 324 IF(abs(10.*log(F)) .LT.1.E-5) goto 999324 IF(abs(10.*log(F))<1.E-5) goto 999 325 325 END DO 326 326 else ! if (sig*preff/pa.le.0.25) then -
LMDZ6/branches/Amaury_dev/libf/dyn3d_common/dump2d.F
r1952 r5082 22 22 DO j=1,jm 23 23 DO i=1,im 24 IF(z(i,j) .GT.zllm) THEN24 IF(z(i,j)>zllm) THEN 25 25 illm=i 26 26 jllm=j 27 27 zllm=z(i,j) 28 28 ENDIF 29 IF(z(i,j) .LT.zmin) THEN29 IF(z(i,j)<zmin) THEN 30 30 imin=i 31 31 jmin=j … … 38 38 PRINT*,'MAX: ',zllm 39 39 40 IF(zllm .GT.zmin) THEN40 IF(zllm>zmin) THEN 41 41 DO j=1,jm 42 42 WRITE(*,'(600i1)') (NINT(10.*(z(i,j)-zmin)/(zllm-zmin)),i=1,im) -
LMDZ6/branches/Amaury_dev/libf/dyn3d_common/exner_hyb_m.F90
r2600 r5082 58 58 if (firstcall) then 59 59 ! sanity checks for Shallow Water case (1 vertical layer) 60 if (llm .eq.1) then61 if (kappa .ne.1) then60 if (llm==1) then 61 if (kappa/=1) then 62 62 call abort_gcm(modname, & 63 63 "kappa!=1 , but running in Shallow Water mode!!",42) 64 64 endif 65 if (cpp .ne.r) then65 if (cpp/=r) then 66 66 call abort_gcm(modname, & 67 67 "cpp!=r , but running in Shallow Water mode!!",42) … … 73 73 74 74 ! Specific behaviour for Shallow Water (1 vertical layer) case: 75 if (llm .eq.1) then75 if (llm==1) then 76 76 77 77 ! Compute pks(:),pk(:),pkf(:) -
LMDZ6/branches/Amaury_dev/libf/dyn3d_common/exner_milieu_m.F90
r2600 r5082 55 55 if (firstcall) then 56 56 ! sanity checks for Shallow Water case (1 vertical layer) 57 if (llm .eq.1) then58 if (kappa .ne.1) then57 if (llm==1) then 58 if (kappa/=1) then 59 59 call abort_gcm(modname, & 60 60 "kappa!=1 , but running in Shallow Water mode!!",42) 61 61 endif 62 if (cpp .ne.r) then62 if (cpp/=r) then 63 63 call abort_gcm(modname, & 64 64 "cpp!=r , but running in Shallow Water mode!!",42) … … 70 70 71 71 ! Specific behaviour for Shallow Water (1 vertical layer) case: 72 if (llm .eq.1) then72 if (llm==1) then 73 73 74 74 ! Compute pks(:),pk(:),pkf(:) -
LMDZ6/branches/Amaury_dev/libf/dyn3d_common/gr_int_dyn.F
r1945 r5082 34 34 do j = 1, jp1 35 35 do i = 1, iim 36 if (j .eq.1) then36 if (j == 1) then 37 37 champdyn(i, j) = polenord 38 else if (j .eq.jp1) then38 else if (j == jp1) then 39 39 champdyn(i, j) = polesud 40 40 else -
LMDZ6/branches/Amaury_dev/libf/dyn3d_common/gradiv2.F
r4593 r5082 49 49 CALL divergf( klevel, gdx, gdy , div ) 50 50 51 IF( ld .GT.1 ) THEN51 IF( ld>1 ) THEN 52 52 53 53 CALL laplacien ( klevel, div, div ) -
LMDZ6/branches/Amaury_dev/libf/dyn3d_common/heavyside.F
r1945 r5082 12 12 REAL(KIND=8) heavyside , a 13 13 14 IF ( a .LE.0. ) THEN14 IF ( a<=0. ) THEN 15 15 heavyside = 0. 16 16 ELSE -
LMDZ6/branches/Amaury_dev/libf/dyn3d_common/infotrac.F90
r5003 r5082 175 175 176 176 lerr=strParse(type_trac, '|', types_trac, n=nt) 177 IF (nt .GT.1) THEN178 IF (nt .GT.2) CALL abort_gcm(modname, 'you need to modify type_trac, this version is not supported by lmdz', 1)179 if (nt .EQ.2) type_trac=types_trac(2)177 IF (nt > 1) THEN 178 IF (nt > 2) CALL abort_gcm(modname, 'you need to modify type_trac, this version is not supported by lmdz', 1) 179 if (nt == 2) type_trac=types_trac(2) 180 180 ENDIF 181 181 -
LMDZ6/branches/Amaury_dev/libf/dyn3d_common/inidissip.F90
r2603 r5082 76 76 CALL minmax(iip1*jjp1,zh,zhmin,zhmax ) 77 77 78 IF ( zhmin .GE.zhmax ) THEN78 IF ( zhmin >= zhmax ) THEN 79 79 write(lunout,*)' Inidissip zh min max ',zhmin,zhmax 80 80 abort_message='probleme generateur alleatoire dans inidissip' … … 122 122 123 123 DO l = 1, 50 124 IF(ii .EQ.1) THEN124 IF(ii==1) THEN 125 125 !cccc CALL covcont( 1,zu,zv,zu,zv ) 126 126 IF(lstardis) THEN … … 142 142 end DO 143 143 144 IF ( ii .EQ.1 ) THEN144 IF ( ii==1 ) THEN 145 145 IF(lstardis) THEN 146 146 cdivu = 1./zllm … … 201 201 tetah(l) = zvert(l)/tetatemp 202 202 203 IF( tetamin .GT.(1./tetaudiv(l)) ) tetamin = 1./ tetaudiv(l)204 IF( tetamin .GT.(1./tetaurot(l)) ) tetamin = 1./ tetaurot(l)205 IF( tetamin .GT.(1./ tetah(l)) ) tetamin = 1./ tetah(l)203 IF( tetamin> (1./tetaudiv(l)) ) tetamin = 1./ tetaudiv(l) 204 IF( tetamin> (1./tetaurot(l)) ) tetamin = 1./ tetaurot(l) 205 IF( tetamin> (1./ tetah(l)) ) tetamin = 1./ tetah(l) 206 206 ENDDO 207 207 -
LMDZ6/branches/Amaury_dev/libf/dyn3d_common/inigeom.F
r2603 r5082 170 170 c 171 171 c 172 IF( nitergdiv .NE.2 ) THEN172 IF( nitergdiv/=2 ) THEN 173 173 gamdi_gdiv = coefdis/ ( REAL(nitergdiv) -2. ) 174 174 ELSE 175 175 gamdi_gdiv = 0. 176 176 ENDIF 177 IF( nitergrot .NE.2 ) THEN177 IF( nitergrot/=2 ) THEN 178 178 gamdi_grot = coefdis/ ( REAL(nitergrot) -2. ) 179 179 ELSE 180 180 gamdi_grot = 0. 181 181 ENDIF 182 IF( niterh .NE.2 ) THEN182 IF( niterh/=2 ) THEN 183 183 gamdi_h = coefdis/ ( REAL(niterh) -2. ) 184 184 ELSE … … 230 230 x1 = x1 - f/df 231 231 xdm = ABS( x1- xo1 ) 232 IF( xdm .LE.eps )GO TO 11232 IF( xdm<=eps )GO TO 11 233 233 xo1 = x1 234 234 10 CONTINUE … … 247 247 y1 = y1 -f/df 248 248 ydm = ABS(y1-yo1) 249 IF(ydm .LE.eps) GO TO 17249 IF(ydm<=eps) GO TO 17 250 250 yo1 = y1 251 251 15 CONTINUE … … 410 410 c 411 411 412 IF ( j .gt. 1 .AND. j .lt.jjp1 ) THEN412 IF ( j > 1 .AND. j < jjp1 ) THEN 413 413 c 414 414 rlatp = rlatu2 ( j-1 ) -
LMDZ6/branches/Amaury_dev/libf/dyn3d_common/inigrads.F
r4593 r5082 33 33 unit(9)=46 34 34 35 if (if .le.nf) stop'verifier les appels a inigrads'35 if (if<=nf) stop'verifier les appels a inigrads' 36 36 37 37 print*,'Entree dans inigrads' … … 51 51 do i=1,im 52 52 xd(i,if)=x(i)*fx 53 if(xd(i,if) .lt.xmin) iid(if)=i+154 if(xd(i,if) .le.xmax) ifd(if)=i53 if(xd(i,if)<xmin) iid(if)=i+1 54 if(xd(i,if)<=xmax) ifd(if)=i 55 55 enddo 56 56 print*,'On stoke du point ',iid(if),' a ',ifd(if),' en x' … … 61 61 do j=1,jm 62 62 yd(j,if)=y(j)*fy 63 if(yd(j,if) .gt.ymax) jid(if)=j+164 if(yd(j,if) .ge.ymin) jfd(if)=j63 if(yd(j,if)>ymax) jid(if)=j+1 64 if(yd(j,if)>=ymin) jfd(if)=j 65 65 enddo 66 66 print*,'On stoke du point ',jid(if),' a ',jfd(if),' en y' -
LMDZ6/branches/Amaury_dev/libf/dyn3d_common/inter_barxy_m.F90
r2597 r5082 153 153 154 154 CALL minmax( imodmax, xxim, chmin, chmax) 155 IF( chmax .LT.6.50 ) THEN155 IF( chmax<6.50 ) THEN 156 156 DO imod = 1, imodmax 157 157 xxim(imod) = xxim(imod) * 180./pi … … 172 172 173 173 CALL minmax( idatmax, xxd, chmin, chmax) 174 IF( chmax .LT.6.50 ) THEN174 IF( chmax<6.50 ) THEN 175 175 DO idat = 1, idatmax 176 176 xxd(idat) = xxd(idat) * 180./pi … … 213 213 214 214 DO idat = 1, idatmax 215 IF ( xxd( idatmax1- idat ) .LT.360.) exit215 IF ( xxd( idatmax1- idat )<360.) exit 216 216 id1 = id1 + 1 217 217 ENDDO 218 218 219 219 DO idat = 1, idatmax 220 IF (xxd(idat) .GT.0.) exit220 IF (xxd(idat)>0.) exit 221 221 id0 = id0 + 1 222 222 END DO … … 264 264 265 265 do while (imod <= imodmax) 266 do while (xxim(imod) .GT.xxid(idat))266 do while (xxim(imod)>xxid(idat)) 267 267 dx = xxid(idat) - x0 268 268 dxm = dxm + dx … … 271 271 idat = idat + 1 272 272 end do 273 IF (xxim(imod) .LT.xxid(idat)) THEN273 IF (xxim(imod)<xxid(idat)) THEN 274 274 dx = xxim(imod) - x0 275 275 dxm = dxm + dx -
LMDZ6/branches/Amaury_dev/libf/dyn3d_common/iso_verif_dyn.F
r4325 r5082 13 13 integer iso_verif_noNaN_nostop 14 14 15 if ((x .gt.-borne).and.(x.lt.borne)) then15 if ((x>-borne).and.(x<borne)) then 16 16 iso_verif_noNAN_nostop=0 17 17 else … … 47 47 iso_verif_egalite_nostop=0 48 48 49 if (abs(a-b) .gt.errmax) then49 if (abs(a-b)>errmax) then 50 50 if (abs((a-b)/max(max(abs(b),abs(a)),1e-18)) 51 : .gt.errmaxrel) then51 : >errmaxrel) then 52 52 write(*,*) 'erreur detectee par iso_verif_egalite:' 53 53 write(*,*) err_msg … … 84 84 85 85 ! verifier que HDO est raisonable 86 if (q .gt.qmin) then86 if (q>qmin) then 87 87 IF(getKey('tnat', tnat, isoName(iso))) THEN 88 88 err_msg = 'Missing isotopic parameter "tnat"' … … 91 91 END IF 92 92 deltaD=(x/q/tnat-1)*1000 93 if ((deltaD .gt.deltaDmax).or.(deltaD.lt.deltaDmin)) then93 if ((deltaD>deltaDmax).or.(deltaD<deltaDmin)) then 94 94 write(*,*) 'erreur detectee par iso_verif_aberrant:' 95 95 write(*,*) err_msg -
LMDZ6/branches/Amaury_dev/libf/dyn3d_common/limx.F
r2603 r5082 84 84 85 85 do ij=iip2+1,ip1jm 86 if( dxqu(ij-1)*dxqu(ij) .gt.0.87 & .and. dxq(ij,l)*dxqu(ij) .gt.0.) then86 if( dxqu(ij-1)*dxqu(ij)>0. 87 & .and. dxq(ij,l)*dxqu(ij)>0.) then 88 88 dxq(ij,l)= 89 89 & sign(min(abs(dxq(ij,l)),dxqmax(ij)),dxq(ij,l)) -
LMDZ6/branches/Amaury_dev/libf/dyn3d_common/limz.F
r2603 r5082 77 77 78 78 do l=2,llm-1 79 if( dzqw(l-1)*dzqw(l) .gt.0.80 & .and. dzq(ij,l)*dzqw(l) .gt.0.) then79 if( dzqw(l-1)*dzqw(l)>0. 80 & .and. dzq(ij,l)*dzqw(l)>0.) then 81 81 dzq(ij,l)= 82 82 & sign(min(abs(dzq(ij,l)),dzqmax(l)),dzq(ij,l)) -
LMDZ6/branches/Amaury_dev/libf/dyn3d_common/pentes_ini.F
r2600 r5082 74 74 c if (mode.eq.1.or.mode.eq.3) then 75 75 c if (mode.eq.1) then 76 if (mode .ge.1) then76 if (mode>=1) then 77 77 lati=2 78 78 latf=jjm … … 187 187 c enddo 188 188 CCC 189 if(mode .eq.2) then189 if(mode==2) then 190 190 do l=1,llm 191 191 s0s=0. … … 247 247 endif 248 248 249 if (mode .eq.4) then249 if (mode==4) then 250 250 do l=1,llm 251 251 do i=1,iip1 … … 261 261 call advx( limit,.5*dtvr,pbaru,sm,s0,sx,sy,sz,lati,latf) 262 262 c call minmaxq(zq,1.e33,-1.e33,'avant advy ') 263 if (mode .eq.4) then263 if (mode==4) then 264 264 do l=1,llm 265 265 do i=1,iip1 … … 282 282 call limz(s0,sz,sm,pente_max) 283 283 call advz( limit,dtvr,w,sm,s0,sx,sy,sz ) 284 if (mode .eq.4) then284 if (mode==4) then 285 285 do l=1,llm 286 286 do i=1,iip1 … … 306 306 307 307 c call minmaxq(zq,1.e33,-1.e33,'avant advx ') 308 if (mode .eq.4) then308 if (mode==4) then 309 309 do l=1,llm 310 310 do i=1,iip1 … … 346 346 c Traitements specifiques au pole 347 347 348 if(mode .ge.1) then348 if(mode>=1) then 349 349 DO l=1,llm 350 350 c filtrages aux poles … … 361 361 q( i,jjp1,llm+1-l,0)=qps 362 362 enddo 363 if(mode .eq.3) then363 if(mode==3) then 364 364 dyn1=0. 365 365 dys1=0. … … 382 382 enddo 383 383 endif 384 if(mode .eq.1) then384 if(mode==1) then 385 385 c on filtre les valeurs au bord de la "grande maille pole" 386 386 dyn1=0. … … 440 440 DO j = 1,jjp1 441 441 DO i = 1,iip1 442 IF (q(i,j,l,0) .lt.0.) THEN442 IF (q(i,j,l,0)<0.) THEN 443 443 c PRINT*,'------------ BIP-----------' 444 444 c PRINT*,'Q0(',i,j,l,')=',q(i,j,l,0) … … 459 459 do j=1,jjp1 460 460 do i=1,iip1 461 if(q(i,j,l,0) .lt.qmin)461 if(q(i,j,l,0)<qmin) 462 462 , print*,'apres pentes, s0(',i,',',j,',',l,')=',q(i,j,l,0) 463 463 enddo -
LMDZ6/branches/Amaury_dev/libf/dyn3d_common/prather.F
r2600 r5082 330 330 DO j = 2,jjm 331 331 DO i = 1,iip1 332 IF (q(i,j,l,0) .lt.0.) THEN332 IF (q(i,j,l,0)<0.) THEN 333 333 PRINT*,'------------ BIP-----------' 334 334 PRINT*,'S0(',i,j,l,')=',q(i,j,l,0), … … 346 346 do j=1,jjp1,jjm 347 347 do i=1,iip1 348 IF (q(i,j,l,0) .lt.0.) THEN348 IF (q(i,j,l,0)<0.) THEN 349 349 PRINT*,'------------ BIP 2-----------' 350 350 PRINT*,'S0(',i,j,l,')=',q(i,j,l,0) -
LMDZ6/branches/Amaury_dev/libf/dyn3d_common/sortvarc.F
r2622 r5082 79 79 heure = ( itau*dtvrs1j-rjour ) * 24. 80 80 imjmp1 = iim * jjp1 81 IF(ABS(heure - 24.) .LE.0.0001 ) heure = 0.81 IF(ABS(heure - 24.)<=0.0001 ) heure = 0. 82 82 c 83 83 CALL massbarxy ( masse, massebxy ) … … 161 161 ! compute relative changes in etot,... (except if 'reference' values 162 162 ! are zero, which can happen when using iniacademic) 163 if (etot0 .ne.0) then163 if (etot0/=0) then 164 164 etot= etot/etot0 165 165 else … … 167 167 endif 168 168 rmsv= SQRT(rmsv/ptot) 169 if (ptot0 .ne.0) then169 if (ptot0/=0) then 170 170 ptot= ptot/ptot0 171 171 else 172 172 ptot=1. 173 173 endif 174 if (ztot0 .ne.0) then174 if (ztot0/=0) then 175 175 ztot= ztot/ztot0 176 176 else 177 177 ztot=1. 178 178 endif 179 if (stot0 .ne.0) then179 if (stot0/=0) then 180 180 stot= stot/stot0 181 181 else 182 182 stot=1. 183 183 endif 184 if (ang0 .ne.0) then184 if (ang0/=0) then 185 185 ang = ang /ang0 186 186 else -
LMDZ6/branches/Amaury_dev/libf/dyn3d_common/test_period.F
r4593 r5082 27 27 DO l = 1, llm 28 28 DO ij = 1, ip1jmp1, iip1 29 IF( ucov(ij,l) .NE.ucov(ij+iim,l) ) THEN29 IF( ucov(ij,l)/=ucov(ij+iim,l) ) THEN 30 30 PRINT *,'STOP dans test_period car --- UCOV --- n est pas', 31 31 , ' periodique en longitude ! ' … … 33 33 STOP 34 34 ENDIF 35 IF( teta(ij,l) .NE.teta(ij+iim,l) ) THEN35 IF( teta(ij,l)/=teta(ij+iim,l) ) THEN 36 36 PRINT *,'STOP dans test_period car --- TETA --- n est pas', 37 37 , ' periodique en longitude ! ' … … 43 43 44 44 do ij=1,iim 45 if (teta(ij,l) .ne.teta(1,l)46 s .or.teta(ip1jm+ij,l) .ne.teta(ip1jm+1,l) ) then45 if (teta(ij,l)/=teta(1,l) 46 s .or.teta(ip1jm+ij,l)/=teta(ip1jm+1,l) ) then 47 47 PRINT *,'STOP dans test_period car --- TETA --- n est pas', 48 48 , ' constant aux poles ! ' … … 59 59 DO l = 1, llm 60 60 DO ij = 1, ip1jm, iip1 61 IF( vcov(ij,l) .NE.vcov(ij+iim,l) ) THEN61 IF( vcov(ij,l)/=vcov(ij+iim,l) ) THEN 62 62 PRINT *,'STOP dans test_period car --- VCOV --- n est pas', 63 63 , ' periodique en longitude !' … … 73 73 DO l =1, llm 74 74 DO ij = 1, ip1jmp1, iip1 75 IF( q(ij,l,nq) .NE.q(ij+iim,l,nq) ) THEN75 IF( q(ij,l,nq)/=q(ij+iim,l,nq) ) THEN 76 76 PRINT *,'STOP dans test_period car --- Q --- n est pas ', 77 77 , 'periodique en longitude !' … … 85 85 DO l = 1, llm 86 86 DO ij = 1, ip1jmp1, iip1 87 IF( p(ij,l) .NE.p(ij+iim,l) ) THEN87 IF( p(ij,l)/=p(ij+iim,l) ) THEN 88 88 PRINT *,'STOP dans test_period car --- P --- n est pas', 89 89 , ' periodique en longitude !' … … 91 91 STOP 92 92 ENDIF 93 IF( phis(ij) .NE.phis(ij+iim) ) THEN93 IF( phis(ij)/=phis(ij+iim) ) THEN 94 94 PRINT *,'STOP dans test_period car --- PHIS --- n est pas', 95 95 , ' periodique en longitude ! l, IJ = ', l, ij,ij+iim … … 99 99 ENDDO 100 100 do ij=1,iim 101 if (p(ij,l) .ne.p(1,l)102 s .or.p(ip1jm+ij,l) .ne.p(ip1jm+1,l) ) then101 if (p(ij,l)/=p(1,l) 102 s .or.p(ip1jm+ij,l)/=p(ip1jm+1,l) ) then 103 103 PRINT *,'STOP dans test_period car --- P --- n est pas', 104 104 , ' constant aux poles ! ' -
LMDZ6/branches/Amaury_dev/libf/dyn3d_common/ugeostr.F90
r2597 r5082 29 29 DO j=1,jjm 30 30 31 if (abs(sin(rlatv(j))) .lt.1.e-4) then31 if (abs(sin(rlatv(j)))<1.e-4) then 32 32 zlat=1.e-4 33 33 else
Note: See TracChangeset
for help on using the changeset viewer.