Changeset 640 for LMDZ4/trunk/libf


Ignore:
Timestamp:
May 19, 2005, 10:27:15 AM (20 years ago)
Author:
Laurent Fairhead
Message:

Synchro avec la version modifiée de LMDZ.3.3. Routine a ré-écrire
LF

File:
1 edited

Legend:

Unmodified
Added
Removed
  • LMDZ4/trunk/libf/phylmd/readsulfate.F

    r524 r640  
    5151c ----------------     
    5252      INTEGER i, ig, k, it
    53       INTEGER j, iday, ny, iyr
     53      INTEGER j, iday, ny, iyr, iyr1, iyr2
    5454      parameter (ny=jjm+1)
    5555     
    5656      INTEGER ismaller
    57       INTEGER idec1, idec2 ! The two decadal data read ini
     57CJLD      INTEGER idec1, idec2 ! The two decadal data read ini
    5858      CHARACTER*4 cyear
    5959     
     
    103103      ENDDO
    104104
    105       ! Read in data:
     105
     106      IF (iyr .lt. 1850) THEN
     107         cyear='.nat'
     108         WRITE(*,*) 'getso4  iyr=', iyr,'   ',cyear
     109         CALL getso4fromfile(cyear, so4_1)
     110      ELSE IF (iyr .ge. 2100) THEN
     111         cyear='2100'
     112         WRITE(*,*) 'getso4  iyr=', iyr,'   ',cyear
     113         CALL getso4fromfile(cyear, so4_1)
     114      ELSE
     115
     116        ! Read in data:
    106117      ! a) from actual 10-yr-period
    107118
    108       idec1 = (iyr-1900)/10
    109       IF (idec1.LT.10) THEN
    110          cyear='19'//char(idec1+48)//'0'
    111       ELSE         
    112          cyear='20'//char(idec1-10+48)//'0'
     119      IF (iyr.LT.1900) THEN
     120         iyr1 = 1850
     121         iyr2 = 1900
     122      ELSE IF (iyr.ge.1900.and.iyr.lt.1920) THEN
     123         iyr1 = 1900
     124         iyr2 = 1920
     125      ELSE
     126         iyr1 = INT(iyr/10)*10
     127         iyr2 = INT(1+iyr/10)*10
    113128      ENDIF
     129      WRITE(cyear,'(I4)') iyr1
     130      WRITE(*,*) 'getso4  iyr=', iyr,'   ',cyear
    114131      CALL getso4fromfile(cyear, so4_1)
    115132
     
    117134      ! If to read two decades:
    118135      IF (.NOT.lonlyone) THEN
    119       idec2=idec1+1
    120136         
    121137      ! b) from the next following one
    122       IF (idec2.LT.10) THEN
    123          cyear='19'//char(idec2+48)//'0'
    124       ELSE
    125          cyear='20'//char(idec2-10+48)//'0'
     138      WRITE(cyear,'(I4)') iyr2
     139      WRITE(*,*) 'getso4  iyr=', iyr,'   ',cyear
     140      CALL getso4fromfile(cyear, so4_2)
     141
    126142      ENDIF
    127       CALL getso4fromfile(cyear, so4_2)
    128          
     143 
    129144      ! Interpolate linarily to the actual year:
    130145      DO it=1,12
     
    133148               DO i=1,iim
    134149                  so4_1(i,j,k,it)=so4_1(i,j,k,it)
    135      .                 - FLOAT(iyr-1900-10*idec1)/10.
     150     .                 - FLOAT(iyr-iyr1)/FLOAT(iyr2-iyr1)
    136151     .                 * (so4_1(i,j,k,it) - so4_2(i,j,k,it))
    137152               ENDDO
     
    226241
    227242     
    228       ! The sulfate concentration [molec cm-3] is read in.
    229       ! Convert it into mass [ug SO4/m3]
    230       ! masse_so4 in [g/mol], n_avogadro in [molec/mol]
     243CJLD      ! The sulfate concentration [molec cm-3] is read in.
     244CJLD      ! Convert it into mass [ug SO4/m3]
     245CJLD      ! masse_so4 in [g/mol], n_avogadro in [molec/mol]
     246      ! The sulfate mass [ug SO4/m3] is read in.
    231247      DO k=1,klev
    232248         DO i=1,klon
    233             sulfate(i,k) = sulfate(i,k)*masse_so4
    234      .           /n_avogadro*1.e+12
     249CJLD            sulfate(i,k) = sulfate(i,k)*masse_so4
     250CJLD     .           /n_avogadro*1.e+12
    235251            so4_out(i,k) = sulfate(i,k)
    236252            IF (so4_out(i,k).LT.0)
     
    443459
    444460     
    445       ! The sulfate concentration [molec cm-3] is read in.
    446       ! Convert it into mass [ug SO4/m3]
    447       ! masse_so4 in [g/mol], n_avogadro in [molec/mol]
     461CJLD      ! The sulfate concentration [molec cm-3] is read in.
     462CJLD      ! Convert it into mass [ug SO4/m3]
     463CJLD      ! masse_so4 in [g/mol], n_avogadro in [molec/mol]
    448464      DO k=1,klev
    449465         DO i=1,klon
    450             pi_sulfate(i,k) = pi_sulfate(i,k)*masse_so4
    451      .           /n_avogadro*1.e+12
     466CJLD            pi_sulfate(i,k) = pi_sulfate(i,k)*masse_so4
     467CJLD     .           /n_avogadro*1.e+12
    452468            pi_so4_out(i,k) = pi_sulfate(i,k)
    453469         ENDDO
Note: See TracChangeset for help on using the changeset viewer.