Changeset 2251 for LMDZ5/trunk


Ignore:
Timestamp:
Mar 26, 2015, 6:28:25 PM (10 years ago)
Author:
fhourdin
Message:

Suite du nettoyage dans phyetat0
Keep on cleaning and cleaning ...

File:
1 edited

Legend:

Unmodified
Added
Removed
  • LMDZ5/trunk/libf/phylmd/phyetat0.F90

    r2243 r2251  
    552552     ENDDO
    553553ELSE
    554   PRINT*,'AVANT phyetat0_srf'
    555554  found=phyetat0_srf(1,z0m,"RUG","Z0m ancien",0.001)
    556   PRINT*,'APRES phyetat0_srf'
    557555  IF (found) THEN
    558556     z0h(:,1:nbsrf)=z0m(:,1:nbsrf)
     
    751749  ENDIF   !(iflag_pbl>1 .AND. iflag_wake>=1 .AND. iflag_pbl_split >=1 )
    752750
    753   ! zmax0
    754   CALL get_field("ZMAX0", zmax0, found)
    755   IF (.NOT. found) THEN
    756      PRINT*, "phyetat0: Le champ <ZMAX0> est absent"
    757      PRINT*, "Depart legerement fausse. Mais je continue"
    758      zmax0=40.
    759   ENDIF
    760   PRINT*, '(ecart-type) zmax0:', MINval(zmax0),MAXval(zmax0)
    761 
    762   !           f0(ig)=1.e-5
    763   ! f0
    764   CALL get_field("F0", f0, found)
    765   IF (.NOT. found) THEN
    766      PRINT*, "phyetat0: Le champ <f0> est absent"
    767      PRINT*, "Depart legerement fausse. Mais je continue"
    768      f0=1.e-5
    769   ENDIF
    770   PRINT*, '(ecart-type) f0:', MINval(f0),MAXval(f0)
    771 
    772   ! sig1 or ema_work1
    773 
    774   CALL get_field("sig1", sig1, found)
    775   IF (.NOT. found) CALL get_field("EMA_WORK1", sig1, found)
    776   IF (.NOT. found) THEN
    777      PRINT*, "phyetat0: Le champ sig1 est absent"
    778      PRINT*, "Depart legerement fausse. Mais je continue"
    779      sig1=0.
    780   ELSE
    781      PRINT*, 'sig1:',minval(sig1(:,:)),maxval(sig1(:,:))
    782   ENDIF
    783 
    784   ! w01 or ema_work2
    785 
    786   CALL get_field("w01", w01, found)
    787   IF (.NOT. found) CALL get_field("EMA_WORK2", w01, found)
    788   IF (.NOT. found) THEN
    789      PRINT*, "phyetat0: Le champ w01 est absent"
    790      PRINT*, "Depart legerement fausse. Mais je continue"
    791      w01=0.
    792   ELSE
    793      PRINT*, 'w01:', minval(w01(:,:)),maxval(w01(:,:))
    794   ENDIF
    795 
    796   ! wake_deltat
    797 
    798   CALL get_field("WAKE_DELTAT", wake_deltat, found)
    799   IF (.NOT. found) THEN
    800      PRINT*, "phyetat0: Le champ <WAKE_DELTAT> est absent"
    801      PRINT*, "Depart legerement fausse. Mais je continue"
    802      wake_deltat=0.
    803   ELSE
    804      PRINT*, 'wake_deltat:',  minval(wake_deltat(:,:)),maxval(wake_deltat(:,:))
    805   ENDIF
    806 
    807   ! wake_deltaq
    808 
     751!==================================
     752!  thermiques, poches, convection
     753!==================================
     754
     755  found=phyetat0_get(1,w01,"w01","w01",0.)
     756  found=phyetat0_get(1,sig1,"sig1","sig1",0.)
     757
     758  found=phyetat0_get(klev,wake_deltat,"WAKE_DELTAT","Delta T wake/env",0.)
    809759  found=phyetat0_get(klev,wake_deltaq,"WAKE_DELTAQ","Delta hum. wake/env",0.)
    810 ! CALL get_field("WAKE_DELTAQ", wake_deltaq, found)
    811 ! IF (.NOT. found) THEN
    812 !    PRINT*, "phyetat0: Le champ <WAKE_DELTAQ> est absent"
    813 !    PRINT*, "Depart legerement fausse. Mais je continue"
    814 !    wake_deltaq=0.
    815 ! ELSE
    816 !    PRINT*, 'wake_deltaq:',  minval(wake_deltaq(:,:)),maxval(wake_deltaq(:,:))
    817 ! ENDIF
    818 
    819   ! wake_s
    820 
    821   CALL get_field("WAKE_S", wake_s, found)
    822   IF (.NOT. found) THEN
    823      PRINT*, "phyetat0: Le champ <WAKE_S> est absent"
    824      PRINT*, "Depart legerement fausse. Mais je continue"
    825      wake_s=0.
    826   ENDIF
    827   PRINT*, '(ecart-type) wake_s:', MINval(wake_s),MAXval(wake_s)
    828 
    829   ! wake_cstar
    830 
    831   CALL get_field("WAKE_CSTAR", wake_cstar, found)
    832   IF (.NOT. found) THEN
    833      PRINT*, "phyetat0: Le champ <WAKE_CSTAR> est absent"
    834      PRINT*, "Depart legerement fausse. Mais je continue"
    835      wake_cstar=0.
    836   ENDIF
    837   PRINT*, '(ecart-type) wake_cstar:', MINval(wake_cstar),MAXval(wake_cstar)
    838 
    839   ! wake_pe
    840 
    841   CALL get_field("WAKE_PE", wake_pe, found)
    842   IF (.NOT. found) THEN
    843      PRINT*, "phyetat0: Le champ <WAKE_PE> est absent"
    844      PRINT*, "Depart legerement fausse. Mais je continue"
    845      wake_pe=0.
    846   ENDIF
    847   xmin = 1.0E+20
    848   xmax = -1.0E+20
    849   xmin = MINval(wake_pe)
    850   xmax = MAXval(wake_pe)
    851   PRINT*, '(ecart-type) wake_pe:', xmin, xmax
    852 
    853   ! wake_fip
    854 
    855   CALL get_field("WAKE_FIP", wake_fip, found)
    856   IF (.NOT. found) THEN
    857      PRINT*, "phyetat0: Le champ <WAKE_FIP> est absent"
    858      PRINT*, "Depart legerement fausse. Mais je continue"
    859      wake_fip=0.
    860   ENDIF
    861   xmin = 1.0E+20
    862   xmax = -1.0E+20
    863   xmin = MINval(wake_fip)
    864   xmax = MAXval(wake_fip)
    865   PRINT*, '(ecart-type) wake_fip:', xmin, xmax
    866 
    867   !  thermiques
    868 
    869   CALL get_field("FM_THERM", fm_therm, found)
    870   IF (.NOT. found) THEN
    871      PRINT*, "phyetat0: Le champ <fm_therm> est absent"
    872      PRINT*, "Depart legerement fausse. Mais je continue"
    873      fm_therm=0.
    874   ENDIF
    875   xmin = 1.0E+20
    876   xmax = -1.0E+20
    877   xmin = MINval(fm_therm)
    878   xmax = MAXval(fm_therm)
    879   PRINT*, '(ecart-type) fm_therm:', xmin, xmax
    880 
    881   CALL get_field("ENTR_THERM", entr_therm, found)
    882   IF (.NOT. found) THEN
    883      PRINT*, "phyetat0: Le champ <entr_therm> est absent"
    884      PRINT*, "Depart legerement fausse. Mais je continue"
    885      entr_therm=0.
    886   ENDIF
    887   xmin = 1.0E+20
    888   xmax = -1.0E+20
    889   xmin = MINval(entr_therm)
    890   xmax = MAXval(entr_therm)
    891   PRINT*, '(ecart-type) entr_therm:', xmin, xmax
    892 
    893   CALL get_field("DETR_THERM", detr_therm, found)
    894   IF (.NOT. found) THEN
    895      PRINT*, "phyetat0: Le champ <detr_therm> est absent"
    896      PRINT*, "Depart legerement fausse. Mais je continue"
    897      detr_therm=0.
    898   ENDIF
    899   xmin = 1.0E+20
    900   xmax = -1.0E+20
    901   xmin = MINval(detr_therm)
    902   xmax = MAXval(detr_therm)
    903   PRINT*, '(ecart-type) detr_therm:', xmin, xmax
    904 
    905   CALL get_field("ALE_BL", ale_bl, found)
    906   IF (.NOT. found) THEN
    907      PRINT*, "phyetat0: Le champ <ale_bl> est absent"
    908      PRINT*, "Depart legerement fausse. Mais je continue"
    909      ale_bl=0.
    910   ENDIF
    911   xmin = 1.0E+20
    912   xmax = -1.0E+20
    913   xmin = MINval(ale_bl)
    914   xmax = MAXval(ale_bl)
    915   PRINT*, '(ecart-type) ale_bl:', xmin, xmax
    916 
    917   CALL get_field("ALE_BL_TRIG", ale_bl_trig, found)
    918   IF (.NOT. found) THEN
    919      PRINT*, "phyetat0: Le champ <ale_bl_trig> est absent"
    920      PRINT*, "Depart legerement fausse. Mais je continue"
    921      ale_bl_trig=0.
    922   ENDIF
    923   xmin = 1.0E+20
    924   xmax = -1.0E+20
    925   xmin = MINval(ale_bl_trig)
    926   xmax = MAXval(ale_bl_trig)
    927   PRINT*, '(ecart-type) ale_bl_trig:', xmin, xmax
    928 
    929   CALL get_field("ALP_BL", alp_bl, found)
    930   IF (.NOT. found) THEN
    931      PRINT*, "phyetat0: Le champ <alp_bl> est absent"
    932      PRINT*, "Depart legerement fausse. Mais je continue"
    933      alp_bl=0.
    934   ENDIF
    935   xmin = 1.0E+20
    936   xmax = -1.0E+20
    937   xmin = MINval(alp_bl)
    938   xmax = MAXval(alp_bl)
    939   PRINT*, '(ecart-type) alp_bl:', xmin, xmax
    940 
     760  found=phyetat0_get(1,wake_s,"WAKE_S","???",0.)
     761  found=phyetat0_get(1,wake_cstar,"WAKE_CSTAR","???",0.)
     762  found=phyetat0_get(1,wake_pe,"WAKE_PE","???",0.)
     763  found=phyetat0_get(1,wake_fip,"WAKE_FIP","???",0.)
     764
     765
     766  found=phyetat0_get(1,zmax0,"ZMAX0","ZMAX0",40.)
     767  found=phyetat0_get(1,f0,"F0","F0",1.e-5)
     768  found=phyetat0_get(klev,fm_therm,"FM_THERM","Thermals mass flux",0.)
     769  found=phyetat0_get(klev,entr_therm,"ENTR_THERM","Thermals Entrain.",0.)
     770  found=phyetat0_get(klev,detr_therm,"DETR_THERM","Thermals Detrain.",0.)
     771
     772
     773  found=phyetat0_get(1,ale_bl,"ALE_BL","ALE BL",0.)
     774  found=phyetat0_get(1,ale_bl_trig,"ALE_BL_TRIG","ALE BL_TRIG",0.)
     775  found=phyetat0_get(1,alp_bl,"ALP_BL","ALP BL",0.)
     776
     777
     778!===========================================
    941779  ! Read and send field trs to traclmdz
     780!===========================================
    942781
    943782  IF (type_trac == 'lmdz') THEN
    944783     DO it=1, nbtr
    945784        iiq=niadv(it+2)
    946         CALL get_field("trs_"//tname(iiq), trs(:, it), found)
    947         IF (.NOT. found) THEN
    948            PRINT*,  &
    949                 "phyetat0: Le champ <trs_"//tname(iiq)//"> est absent"
    950            PRINT*, "Depart legerement fausse. Mais je continue"
    951            trs(:, it) = 0.
    952         ENDIF
    953         xmin = 1.0E+20
    954         xmax = -1.0E+20
    955         xmin = MINval(trs(:, it))
    956         xmax = MAXval(trs(:, it))
    957         PRINT*, "(ecart-type) trs_"//tname(iiq)//" :", xmin, xmax
    958 
     785        found=phyetat0_get(1,trs(:,it),"trs_"//tname(iiq),"Surf trac"//tname(iiq),0.)
    959786     END DO
    960787     CALL traclmdz_from_restart(trs)
    961788
    962789     IF (carbon_cycle_cpl) THEN
    963         ALLOCATE(co2_send(klon), stat=ierr)
    964         IF (ierr /= 0) CALL abort_gcm &
    965              ('phyetat0', 'pb allocation co2_send', 1)
    966         CALL get_field("co2_send", co2_send, found)
    967         IF (.NOT. found) THEN
    968            PRINT*, "phyetat0: Le champ <co2_send> est absent"
    969            PRINT*, "Initialisation uniforme a co2_ppm=", co2_ppm
    970            co2_send(:) = co2_ppm
    971         END IF
     790        found=phyetat0_get(1,co2_send,"co2_send","co2 send",0.)
    972791     END IF
    973792  END IF
    974793
     794!===========================================
     795!  ondes de gravite non orographiques
     796!===========================================
     797
    975798  if (ok_gwd_rando) then
    976799     call get_field("du_gwd_rando", du_gwd_rando, found)
    977      if (.not. found) then
    978         print *, "du_gwd_rando not found, setting it to 0."
    979         du_gwd_rando = 0.
    980      end if
    981 
    982      call get_field("dv_gwd_rando", dv_gwd_rando, found)
    983      if (.not. found) then
    984         print *, "dv_gwd_rando not found, setting it to 0."
    985         dv_gwd_rando = 0.
    986      end if
     800     found=phyetat0_get(klev,du_gwd_rando,"du_gwd_rando","du_gwd_rando",0.)
     801     found=phyetat0_get(klev,dv_gwd_rando,"dv_gwd_rando","dv_gwd_rando",0.)
    987802  end if
    988803
    989   ! Initialize Slab variables
     804!===========================================
     805! Initialize ocean
     806!===========================================
     807
    990808  IF ( type_ocean == 'slab' ) THEN
    991       print*, "calling slab_init"
    992809      CALL ocean_slab_init(dtime, pctsrf)
    993       ! tslab
    994       CALL get_field("tslab", tslab, found)
     810      found=phyetat0_get(nslay,tslab,"tslab","tslab",0.)
    995811      IF (.NOT. found) THEN
    996812          PRINT*, "phyetat0: Le champ <tslab> est absent"
     
    1000816          END DO
    1001817      END IF
     818
    1002819      ! Sea ice variables
     820      found=phyetat0_get(1,tice,"slab_tice","slab_tice",0.)
    1003821      IF (version_ocean == 'sicINT') THEN
    1004           CALL get_field("slab_tice", tice, found)
    1005822          IF (.NOT. found) THEN
    1006823              PRINT*, "phyetat0: Le champ <tice> est absent"
     
    1008825                  tice(:)=ftsol(:,is_sic)
    1009826          END IF
    1010           CALL get_field("seaice", seaice, found)
    1011827          IF (.NOT. found) THEN
    1012828              PRINT*, "phyetat0: Le champ <seaice> est absent"
Note: See TracChangeset for help on using the changeset viewer.