Ignore:
Timestamp:
Jul 24, 2024, 4:23:34 PM (2 months ago)
Author:
abarral
Message:

rename modules properly lmdz_*
move some unused files to obsolete/
(lint) uppercase fortran keywords

File:
1 edited

Legend:

Unmodified
Added
Removed
  • LMDZ6/branches/Amaury_dev/libf/dyn3d_common/ppm3d.f90

    r5116 r5117  
    269269  ! User modifiable parameters
    270270  !
    271   integer,parameter :: Jmax = 361, kmax = 150
     271  INTEGER,parameter :: Jmax = 361, kmax = 150
    272272  !
    273273  ! ****6***0*********0*********0*********0*********0*********0**********72
     
    282282  INTEGER :: IMRD2
    283283  REAL :: PT
    284   logical :: cross, fill, dum
     284  LOGICAL :: cross, fill, dum
    285285  !
    286286  ! Local dynamic arrays
     
    327327    WRITE(6,*) 'NLAY must be >= 6'
    328328    stop
    329   endif
    330   if (JNP<NLAY) THEN
     329  ENDIF
     330  IF (JNP<NLAY) THEN
    331331     WRITE(6,*) 'JNP must be >= NLAY'
    332332    stop
    333   endif
     333  ENDIF
    334334  IMRD2=mod(IMR,2)
    335   if (j1==2.and.IMRD2/=0) THEN
     335  IF (j1==2.AND.IMRD2/=0) THEN
    336336     WRITE(6,*) 'if j1=2 IMR must be an even integer'
    337337    stop
    338   endif
    339 
    340   !
    341   IF(Jmax<JNP .or. Kmax<NLAY) THEN
     338  ENDIF
     339
     340  !
     341  IF(Jmax<JNP .OR. Kmax<NLAY) THEN
    342342    WRITE(6,*) 'Jmax or Kmax is too small'
    343343    stop
    344   endif
     344  ENDIF
    345345  !
    346346  DO k=1,NLAY
     
    359359  ! Define cosine consistent with GEOS-GCM (using dycore2.0 or later)
    360360        CALL cosc(cosp,cose,JNP,PI,DP)
    361   endif
     361  ENDIF
    362362  !
    363363  do J=2,JMR
     
    370370  acosp(1)   = RCAP
    371371  acosp(JNP) = RCAP
    372   endif
     372  ENDIF
    373373  !
    374374  IF(NDT0 /= NDT) THEN
     
    384384  IF(MaxDT < abs(NDT)) THEN
    385385        WRITE(6,*) 'Warning!!! NDT maybe too large!'
    386   endif
     386  ENDIF
    387387  !
    388388  IF(CR1>=0.95) THEN
     
    398398  IML = min(6*JS0/(J1-1)+2, 4*IMR/5)
    399399  JN0 = JNP-JS0+1
    400   endif
     400  ENDIF
    401401  !
    402402  !
     
    414414  !
    415415  !  WRITE(6,*) 'J1=',J1,' J2=', J2
    416   endif
     416  ENDIF
    417417  !
    418418  ! *********** End Initialization **********************
     
    438438  END DO
    439439  END DO
    440   endif
     440  ENDIF
    441441  !
    442442  ! Compute "tracer density"
     
    472472  CRY(i,2) = DTDY*V(i,1,k)
    473473  END DO
    474   endif
     474  ENDIF
    475475  !
    476476  ! Determine JS and JN
     
    483483        JS = j
    484484        go to 2222
    485   endif
     485  ENDIF
    486486  enddo
    487487  enddo
     
    493493        JN = j
    494494        go to 2233
    495   endif
     495  ENDIF
    496496  enddo
    497497  enddo
     
    503503  DPI(i,JMR,k) = 0.
    504504  enddo
    505   endif
     505  ENDIF
    506506  !
    507507  ! ******* Compute horizontal mass fluxes ************
     
    596596  VA(IMR,1)=VA(1,1)
    597597  VA(IMR,JNP)=VA(1,JNP)
    598   endif
     598  ENDIF
    599599  !
    600600  ! ****6***0*********0*********0*********0*********0*********0**********72
     
    608608  ! E-W advective cross term
    609609  do j=J1,J2
    610   IF(J>JS  .and. J<JN) GO TO 250
     610  IF(J>JS  .AND. J<JN) GO TO 250
    611611  !
    612612  do i=1,IMR
     
    627627  else
    628628  wk1(i,j,1) = qtmp(iiu)+ru*(qtmp(iiu)-qtmp(iiu+1))
    629   endif
     629  ENDIF
    630630  wk1(i,j,1) = wk1(i,j,1) - qtmp(i)
    631631  END DO
     
    648648  enddo
    649649  enddo
    650   endif
     650  ENDIF
    651651  ! ****6***0*********0*********0*********0*********0*********0**********72
    652652  ! Contribution from the N-S advection
     
    681681  enddo
    682682  enddo
    683   endif
     683  ENDIF
    684684  !
    685685  CALL xtp(IMR,JNP,IML,j1,j2,JN,JS,PU,DQ(1,1,k,IC),wk1(1,1,2) &
     
    773773  END DO
    774774  END DO
    775   endif
     775  ENDIF
    776776  END DO
    777777  !
     
    783783  END DO
    784784  END DO
    785   endif
     785  ENDIF
    786786  !
    787787  RETURN
     
    792792        flux,wk1,wk2,wz2,delp,KORD)
    793793  IMPLICIT NONE
    794   integer,parameter :: kmax = 150
    795   real,parameter :: R23 = 2./3., R3 = 1./3.
     794  INTEGER,parameter :: kmax = 150
     795  REAL,parameter :: R23 = 2./3., R3 = 1./3.
    796796  INTEGER :: IMR,JNP,NLAY,J1,KORD
    797797  REAL :: WZ(IMR,JNP,NLAY),P(IMR,JNP,NLAY),DC(IMR,JNP,NLAY), &
     
    838838  !
    839839  DO j=1,JNP
    840   if((j==2 .or. j==JMR) .and. j1/=2) goto 2000
     840  IF((j==2 .OR. j==JMR) .AND. j1/=2) goto 2000
    841841  !
    842842  DO k=1,NLAY
     
    942942    flux(i,2) = AL(i,2)+0.5*CP*(AL(i,2)-AR(i,2)-A6(i,2)*(1.+R23*CP))
    943943     ! print *,'test2',i, AL(i,2),AR(i,2),A6(i,2),R23
    944   endif
     944  ENDIF
    945945  END DO
    946946  !
     
    990990  enddo
    991991  !
    992   IF(j>=JN .or. j<=JS) goto 2222
     992  IF(j>=JN .OR. j<=JS) goto 2222
    993993  ! ************* Eulerian **********
    994994  !
     
    998998  qtmp(IMP+1) = q(2,J)
    999999  !
    1000   IF(IORD==1 .or. j==j1 .or. j==j2) THEN
     1000  IF(IORD==1 .OR. j==j1 .OR. j==j2) THEN
    10011001  DO i=1,IMR
    10021002  iu = REAL(i) - uc(i,j)
     
    10071007  DC(0) = DC(IMR)
    10081008  !
    1009   IF(IORD==2 .or. j<=j1vl .or. j>=j2vl) THEN
     1009  IF(IORD==2 .OR. j<=j1vl .OR. j>=j2vl) THEN
    10101010  DO i=1,IMR
    10111011  iu = REAL(i) - uc(i,j)
     
    10141014  else
    10151015  CALL fxppm(IMR,IML,UC(1,j),Qtmp,DC,fx1,IORD)
    1016   endif
     1016  ENDIF
    10171017  !
    10181018  ENDIF
     
    10331033  enddo
    10341034  !
    1035   IF(IORD==1 .or. j==j1 .or. j==j2) THEN
     1035  IF(IORD==1 .OR. j==j1 .OR. j==j2) THEN
    10361036  DO i=1,IMR
    10371037  itmp = INT(uc(i,j))
     
    10681068    enddo
    10691069  !DIR$ VECTOR
    1070   endif
     1070  ENDIF
    10711071  END DO
    10721072  do i=1,IMR
     
    10911091  INTEGER :: IMR,IML,IORD
    10921092  REAL :: UT,P,DC,flux
    1093   real,parameter ::  R3 = 1./3., R23 = 2./3.
     1093  REAL,parameter ::  R3 = 1./3., R23 = 2./3.
    10941094  DIMENSION UT(*),flux(*),P(-IML:IMR+IML+1),DC(-IML:IMR+IML+1)
    10951095  REAL :: AR(0:IMR),AL(0:IMR),A6(0:IMR)
    10961096  INTEGER :: LMT,IMP,JLVL,i
    1097    ! logical first
     1097   ! LOGICAL first
    10981098   ! data first /.TRUE./
    10991099   ! SAVE LMT
     
    11121112  !  else
    11131113  !        LMT = IORD - 3
    1114   !  endif
     1114  !  ENDIF
    11151115  !
    11161116  LMT = IORD - 3
    11171117   ! WRITE(6,*) 'PPM option in E-W direction = ', LMT
    11181118   ! first = .FALSE.
    1119    ! endif
     1119   ! END IF
    11201120  !
    11211121  DO i=1,IMR
     
    11451145  flux(i) = AL(i) - 0.5*UT(i)*(AR(i) - AL(i) + &
    11461146        A6(i)*(1.+R23*UT(i)))
    1147   endif
     1147  ENDIF
    11481148  enddo
    11491149  RETURN
     
    11531153  IMPLICIT NONE
    11541154  INTEGER :: IMR,IML
    1155   real,parameter :: R24 = 1./24.
     1155  REAL,parameter :: R24 = 1./24.
    11561156  REAL :: P(-IML:IMR+1+IML),DC(-IML:IMR+1+IML)
    11571157  INTEGER :: i
     
    11911191  CALL ymist(IMR,JNP,j1,P,DC2,4)
    11921192  !
    1193   IF(JORD<=0 .or. JORD>=3) THEN
     1193  IF(JORD<=0 .OR. JORD>=3) THEN
    11941194  CALL fyppm(VC,P,DC2,fx,IMR,JNP,j1,j2,A6,AR,AL,JORD)
    11951195
     
    11991199  fx(i,j1) = p(i,JT) + (sign(1.,VC(i,j1))-VC(i,j1))*DC2(i,JT)
    12001200  END DO
    1201   endif
    1202   endif
     1201  ENDIF
     1202  ENDIF
    12031203  !
    12041204  DO i=1,len
     
    12321232  DQ(i,JMR) = sum2
    12331233  enddo
    1234   endif
     1234  ENDIF
    12351235  !
    12361236  RETURN
     
    12401240  IMPLICIT NONE
    12411241  INTEGER :: IMR,JNP,j1,ID
    1242   real,parameter :: R24 = 1./24.
     1242  REAL,parameter :: R24 = 1./24.
    12431243  REAL :: P(IMR,JNP),DC(IMR,JNP)
    12441244  INTEGER :: iimh,jmr,ijm3,imh,i
     
    13151315  DC(i,JNP) =  - DC(i-imh,JNP)
    13161316  END DO
    1317   endif
     1317  ENDIF
    13181318  RETURN
    13191319END SUBROUTINE ymist
     
    13221322  IMPLICIT NONE
    13231323  INTEGER :: IMR,JNP,j1,j2,JORD
    1324   real,parameter :: R3 = 1./3., R23 = 2./3.
     1324  REAL,parameter :: R3 = 1./3., R23 = 2./3.
    13251325  REAL :: VC(IMR,*),flux(IMR,*),P(IMR,*),DC(IMR,*)
    13261326  ! Local work arrays.
     
    13281328  INTEGER :: LMT,i
    13291329  INTEGER :: IMH,JMR,j11,IMJM1,len
    1330    ! logical first
     1330   ! LOGICAL first
    13311331   ! data first /.TRUE./
    13321332   ! SAVE LMT
     
    13481348   ! else
    13491349   !       LMT = JORD - 3
    1350    ! endif
     1350   ! END IF
    13511351  !
    13521352  !  first = .FALSE.
    1353   !  endif
     1353  !  ENDIF
    13541354  !
    13551355  ! modifs pour pouvoir choisir plusieurs schemas PPM
     
    13941394  flux(i,j1) = AL(i,j1) - 0.5*VC(i,j1)*(AR(i,j1) - AL(i,j1) + &
    13951395        A6(i,j1)*(1.+R23*VC(i,j1)))
    1396   endif
     1396  ENDIF
    13971397  END DO
    13981398  RETURN
     
    14981498    JMR = JNP-1
    14991499  do j=j1,j2
    1500   IF(J>JS  .and. J<JN) GO TO 1309
     1500  IF(J>JS  .AND. J<JN) GO TO 1309
    15011501  !
    15021502  do i=1,IMR
     
    15271527  else
    15281528  adx(i,j) = qtmp(iiu)+ru*(qtmp(iiu)-qtmp(iiu+1))
    1529   endif
     1529  ENDIF
    15301530  enddo
    15311531  ENDIF
     
    15981598  ! LMT = 2: POSITIVE-DEFINITE CONSTRAINT
    15991599  !
    1600   real,parameter :: R12 = 1./12.
     1600  REAL,parameter :: R12 = 1./12.
    16011601  REAL :: A6(IM),AR(IM),AL(IM),P(IM),DC(IM)
    16021602  INTEGER :: IM,LMT
     
    16211621        A6(i) = 3.*(AR(i)-p(i))
    16221622        AL(i) = AR(i) - A6(i)
    1623   endif
    1624   endif
     1623  ENDIF
     1624  ENDIF
    16251625  END DO
    16261626  elseif(LMT==1) THEN
     
    16281628  do i=1,IM
    16291629  IF(abs(AR(i)-AL(i)) >= -A6(i)) go to 150
    1630   IF(p(i)<AR(i) .and. p(i)<AL(i)) THEN
     1630  IF(p(i)<AR(i) .AND. p(i)<AL(i)) THEN
    16311631        AR(i) = p(i)
    16321632        AL(i) = p(i)
     
    16381638        A6(i) = 3.*(AR(i)-p(i))
    16391639        AL(i) = AR(i) - A6(i)
    1640   endif
     1640  ENDIF
    16411641150   continue
    16421642  END DO
     
    16461646  fmin = p(i) + 0.25*(AR(i)-AL(i))**2/A6(i) + A6(i)*R12
    16471647  IF(fmin>=0.) go to 250
    1648   IF(p(i)<AR(i) .and. p(i)<AL(i)) THEN
     1648  IF(p(i)<AR(i) .AND. p(i)<AL(i)) THEN
    16491649        AR(i) = p(i)
    16501650        AL(i) = p(i)
     
    16561656        A6(i) = 3.*(AR(i)-p(i))
    16571657        AL(i) = AR(i) - A6(i)
    1658   endif
     1658  ENDIF
    16591659250   continue
    16601660  END DO
    1661   endif
     1661  ENDIF
    16621662  RETURN
    16631663END SUBROUTINE lmtppm
     
    17081708   cose(j) =  cose(JNP+2-j)
    17091709   enddo
    1710   endif
     1710  ENDIF
    17111711  !
    17121712  do j=2,JMR
     
    17461746        cross,IC,NSTEP)
    17471747  !
    1748   real,parameter :: tiny = 1.E-60
     1748  REAL,parameter :: tiny = 1.E-60
    17491749  INTEGER :: IMR,JNP,NLAY,j1,j2,IC,NSTEP
    17501750  REAL :: Q(IMR,JNP,NLAY),qtmp(IMR,JNP),cosp(*),acosp(*)
    1751   logical :: cross
     1751  LOGICAL :: cross
    17521752  INTEGER :: NLAYM1,len,ip,L,icr,ipy,ipx,i
    17531753  REAL :: qup,qly,dup,sum
     
    17671767  IF(cross) THEN
    17681768  CALL filcr(q(1,1,L),IMR,JNP,j1,j2,cosp,acosp,icr,tiny)
    1769   endif
     1769  ENDIF
    17701770  IF(icr==0) goto 50
    17711771  !
     
    17761776      Q(i,j1,2) = Q(i,j1,2) + Q(i,j1,1)
    17771777      Q(i,j1,1) = 0.
    1778   endif
     1778  ENDIF
    17791779  enddo
    17801780  !
     
    17891789  IF(cross) THEN
    17901790  CALL filcr(q(1,1,L),IMR,JNP,j1,j2,cosp,acosp,icr,tiny)
    1791   endif
     1791  ENDIF
    17921792  IF(icr==0) goto 225
    17931793  !
     
    18431843  WRITE(6,*) 'IC=',IC,' STEP=',NSTEP, &
    18441844        ' Vertical filling pts=',ip
    1845   endif
     1845  ENDIF
    18461846  !
    18471847  IF(sum>1.e-25) THEN
    18481848  WRITE(6,*) IC,NSTEP,' Mass source from the ground=',sum
    1849   endif
     1849  ENDIF
    18501850  RETURN
    18511851END SUBROUTINE qckxyz
     
    18751875  q(i+1,j-1) = (ds - d2)*acosp(j-1)
    18761876  q(i,j) = (d2 - dq)*acosp(j) + tiny
    1877   endif
    1878   END DO
    1879   IF(icr==0 .and. q(IMR,j)>=0.) goto 65
     1877  ENDIF
     1878  END DO
     1879  IF(icr==0 .AND. q(IMR,j)>=0.) goto 65
    18801880  DO i=2,IMR
    18811881  IF(q(i,j)<0.) THEN
     
    18941894  q(i-1,j-1) = (ds - d2)*acosp(j-1)
    18951895  q(i,j) = (d2 - dq)*acosp(j) + tiny
    1896   endif
     1896  ENDIF
    18971897  END DO
    18981898  ! *****************************************
     
    19141914  q(IMR,j-1) = (ds - d2)*acosp(j-1)
    19151915  q(i,j) = (d2 - dq)*acosp(j) + tiny
    1916   endif
     1916  ENDIF
    19171917  ! *****************************************
    19181918  ! i=IMR
     
    19331933  q(1,j-1) = (ds - d2)*acosp(j-1)
    19341934  q(i,j) = (d2 - dq)*acosp(j) + tiny
    1935   endif
     1935  ENDIF
    19361936  ! *****************************************
    1937193765   continue
     
    19391939  !
    19401940  do i=1,IMR
    1941   IF(q(i,j1)<0. .or. q(i,j2)<0.) THEN
     1941  IF(q(i,j1)<0. .OR. q(i,j2)<0.) THEN
    19421942  icr = 1
    19431943  goto 80
    1944   endif
     1944  ENDIF
    19451945  enddo
    19461946  !
    1947194780   continue
    19481948  !
    1949   IF(q(1,1)<0. .or. q(1,jnp)<0.) THEN
     1949  IF(q(1,1)<0. .OR. q(1,jnp)<0.) THEN
    19501950  icr = 1
    1951   endif
     1951  ENDIF
    19521952  !
    19531953  RETURN
     
    19601960  REAL :: DP,CAP1,dq,dn,d0,d1,ds,d2
    19611961  INTEGER :: i,j
    1962    ! logical first
     1962   ! LOGICAL first
    19631963   ! data first /.TRUE./
    19641964   ! save cap1
     
    19681968  CAP1 = IMR*(1.-COS((j1-1.5)*DP))/DP
    19691969   ! first = .FALSE.
    1970    ! endif
     1970   ! END IF
    19711971  !
    19721972  ipy = 0
     
    19881988  q(i,j-1) = (ds - d2)*acosp(j-1)
    19891989  q(i,j) = (d2 - dq)*acosp(j) + tiny
    1990   endif
     1990  ENDIF
    19911991  END DO
    19921992  END DO
     
    20022002  q(i,j1+1) = (dn - d1)*acosp(j1+1)
    20032003  q(i,j1) = (d1 - dq)*acosp(j1) + tiny
    2004   endif
     2004  ENDIF
    20052005  enddo
    20062006  !
     
    20162016  q(i,j-1) = (ds - d2)*acosp(j-1)
    20172017  q(i,j) = (d2 - dq)*acosp(j) + tiny
    2018   endif
     2018  ENDIF
    20192019  enddo
    20202020  !
     
    20272027  IF(q(i,j1)<0.) ipy = 1
    20282028  enddo
    2029   endif
     2029  ENDIF
    20302030  !
    20312031  IF(q(1,JNP)<0.) THEN
     
    20362036  IF(q(i,j2)<0.) ipy = 1
    20372037  enddo
    2038   endif
     2038  ENDIF
    20392039  !
    20402040  RETURN
     
    20702070  qtmp(j,i+1) = qtmp(j,i+1) - d2
    20712071  qtmp(j,i) = qtmp(j,i) + d2 + tiny
    2072   endif
     2072  ENDIF
    20732073  END DO
    20742074  END DO
     
    20892089  !
    20902090  qtmp(j,i) = qtmp(j,i) + d2 + tiny
    2091   endif
     2091  ENDIF
    20922092  END DO
    20932093  i=IMR
     
    21062106  !
    21072107  qtmp(j,i) = qtmp(j,i) + d2 + tiny
    2108   endif
     2108  ENDIF
    21092109  END DO
    21102110  !
     
    21182118  !
    21192119  ! Poles.
    2120   IF(q(1,1)<0 .or. q(1,JNP)<0.) ipx = 1
    2121   endif
     2120  IF(q(1,1)<0 .OR. q(1,JNP)<0.) ipx = 1
     2121  ENDIF
    21222122  RETURN
    21232123END SUBROUTINE filew
Note: See TracChangeset for help on using the changeset viewer.