Ignore:
Timestamp:
Apr 17, 2009, 5:34:01 PM (16 years ago)
Author:
jghattas
Message:

Ajoute possiblilite de forcer avec d'autre aersols avec le meme principe que pour les so4.

Par default la convergence est rempu avec flag_aersosol=1 + ok_ade=ok_aie=y. Exactement les memes resultats peuvent etre retrouver avec new_aod=n. Les resultats sont exactement les memes sans prise en compte aucun aerosol, avec ok_ade=ok_aie=n.

  • flag_aerosol indique quel aersosol ou combinasion a utiliser (=1 uniquement les SO4 comme avant)
  • les fichiers d'entree so4.runXXXX.cdf change du nom pour majescule SO4.runXXXX.cdf
  • readsulfate change du nom pour readaerosol qui trait tous les aerosols
  • radlwsw change du nom pour radlwsw_aero.
  • aeropt_2bands.F90 et aeropt_5wv.F90 correspond a un reecriture de aeropt.F (premier et deuxieme moitie respectivement)
  • aeropt.F est gardé pour retrouver la convergence si demande avec new_aod=false (=true default)
  • sw_aero est un version evolue de sw_lmdar4 (dans fichier radiation_ar4.F)

ACo + JG

File:
1 edited

Legend:

Unmodified
Added
Removed
  • LMDZ4/branches/LMDZ4-dev/libf/phylmd/physiq.F

    r1134 r1150  
    5050c
    5151c nlon----input-I-nombre de points horizontaux
    52 c nlev----input-I-nombre de couches verticales
     52c nlev----input-I-nombre de couches verticales, doit etre egale a klev
    5353c debut---input-L-variable logique indiquant le premier passage
    5454c lafin---input-L-variable logique indiquant le dernier passage
     
    736736      EXTERNAL phyetat0  ! lire l'etat initial de la physique
    737737      EXTERNAL phyredem  ! ecrire l'etat de redemarrage de la physique
    738       EXTERNAL radlwsw   ! rayonnements solaire et infrarouge
    739738      EXTERNAL suphel    ! initialiser certaines constantes
    740739      EXTERNAL transp    ! transport total de l'eau et de l'energie
     
    10561055      CHARACTER*40 t2mincels, t2maxcels       !t2m min., t2m max
    10571056      CHARACTER*40 tinst, tave, typeval
    1058 cjq   Aerosol effects (Johannes Quaas, 27/11/2003)
    1059       REAL sulfate(klon, klev) ! SO4 aerosol concentration [ug/m3]
    1060 
    10611057      REAL cldtaupi(klon,klev)  ! Cloud optical thickness for pre-industrial (pi) aerosols
    10621058
     
    10671063
    10681064      ! Aerosol optical properties
    1069 
    1070       ! Aerosol optical properties by INCA model
    1071       CHARACTER*4              ::    rfname(9)
    1072       REAL aerindex(klon)       ! POLDER aerosol index
    1073      
     1065      CHARACTER*4, DIMENSION(9)      :: rfname
     1066      REAL, DIMENSION(klon)          :: aerindex     ! POLDER aerosol index
     1067      REAL, DIMENSION(klon,klev)     :: maerosol     ! aerosol concentration [ug/m3]
     1068      REAL, DIMENSION(klon,klev)     :: maerosol_pi  ! aerosol concentration [ug/m3] (pre-industrial value)
     1069      REAL, DIMENSION(klon,klev,9,2) :: tau_aero, piz_aero, cg_aero
     1070      REAL, DIMENSION(klon)          :: topswad_aero, solswad_aero   ! diag
     1071      REAL, DIMENSION(klon)          :: topswai_aero, solswai_aero   ! diag
     1072      REAL, DIMENSION(klon)          :: topswad0_aero, solswad0_aero ! pas utilise, eventuellment pour diag
     1073      REAL, DIMENSION(klon,9)        :: topsw_aero, solsw_aero       ! pas utilise
     1074      REAL, DIMENSION(klon,9)        :: topsw0_aero, solsw0_aero     ! pas utilise
     1075
     1076
    10741077      ! Parameters
    10751078      LOGICAL ok_ade, ok_aie    ! Apply aerosol (in)direct effects or not
     
    10801083                                      ! false : lecture des aerosol dans un fichier
    10811084c$OMP THREADPRIVATE(aerosol_couple)   
    1082 
     1085      INTEGER, SAVE :: flag_aerosol
     1086c$OMP THREADPRIVATE(flag_aerosol)
     1087      LOGICAL, SAVE :: new_aod
     1088c$OMP THREADPRIVATE(new_aod)
     1089   
    10831090c
    10841091c Declaration des constantes et des fonctions thermodynamiques
     
    11061113         write(lunout,*) 'DEBUT DE PHYSIQ !!!!!!!!!!!!!!!!!!!!'
    11071114         write(lunout,*)
    1108      s 'nlon,nlev,nqtot,debut,lafin,rjourvrai,gmtime,pdtphys'
     1115     s 'nlon,klev,nqtot,debut,lafin,rjourvrai,gmtime,pdtphys'
    11091116         write(lunout,*)
    1110      s  nlon,nlev,nqtot,debut,lafin,rjourvrai,gmtime,pdtphys
     1117     s  nlon,klev,nqtot,debut,lafin,rjourvrai,gmtime,pdtphys
    11111118
    11121119         write(lunout,*) 'papers, play, phi, u, v, t, omega'
    1113          do k=1,nlev
     1120         do k=1,klev
    11141121            write(lunout,*) paprs(igout,k),pplay(igout,k),pphi(igout,k),
    11151122     s   u(igout,k),v(igout,k),t(igout,k),omega(igout,k)
    11161123         enddo
    11171124         write(lunout,*) 'ovap (g/kg),  oliq (g/kg)'
    1118          do k=1,nlev
     1125         do k=1,klev
    11191126            write(lunout,*) qx(igout,k,1)*1000,qx(igout,k,2)*1000.
    11201127         enddo
     
    11901197         u10m(:,:)=0.
    11911198         v10m(:,:)=0.
    1192          piz_ae(:,:,:)=0.
    1193          tau_ae(:,:,:)=0.
    1194          cg_ae(:,:,:)=0.
    11951199         rain_con(:)=0.
    11961200         snow_con(:)=0.
     
    12051209         wmax_th(:)=0.
    12061210         tau_overturning_th(:)=0.
    1207          IF (config_inca /= 'none') THEN
    1208             tau_inca(:,:,:,:) = 0.
    1209             piz_inca(:,:,:,:) = 0.
    1210             cg_inca(:,:,:,:)  = 0.
    1211             ccm(:,:,:)        = 0.
    1212             topswai_inca(:)   = 0.
    1213             topswad_inca(:)   = 0.
    1214             topswad0_inca(:)  = 0.
    1215             topsw_inca(:,:)   = 0.
    1216             topsw0_inca(:,:)  = 0.
    1217             solswai_inca(:)   = 0.
    1218             solswad_inca(:)   = 0.
    1219             solswad0_inca(:)  = 0.
    1220             solsw_inca(:,:)   = 0.
    1221             solsw0_inca(:,:)  = 0.
    1222          END IF
     1211
     1212         IF (config_inca /= 'none') ccm(:,:,:) = 0.
    12231213
    12241214         rnebcon0(:,:) = 0.0
     
    12391229     .                  iflag_cldcon,iflag_ratqs,ratqsbas,ratqshaut,
    12401230     .                  ok_ade, ok_aie, aerosol_couple,
     1231     .                  flag_aerosol, new_aod,
    12411232     .                  bl95_b0, bl95_b1,
    12421233     .                  iflag_thermals,nsplit_thermals,tau_thermals,
     
    26582649cjq - Johannes Quaas, 27/11/2003 (quaas@lmd.jussieu.fr)
    26592650      IF (ok_ade.OR.ok_aie) THEN
    2660        IF ( .NOT. aerosol_couple ) THEN
    2661          ! Get sulfate aerosol distribution
    2662          CALL readsulfate(rjourvrai, debut, sulfate)
    2663          CALL readsulfate_preind(rjourvrai, debut, sulfate_pi)
    2664 
    2665          ! Calculate aerosol optical properties (Olivier Boucher)
    2666          CALL aeropt(pplay, paprs, t_seri, sulfate, rhcl,
    2667      .        tau_ae, piz_ae, cg_ae, aerindex)
    2668        ENDIF
     2651         IF (.NOT. aerosol_couple)
     2652     &        CALL aerosol_optic(
     2653     &        debut, new_aod, flag_aerosol, rjourvrai, pdtphys,
     2654     &        pplay, paprs, t_seri, rhcl,
     2655     &        maerosol, maerosol_pi,
     2656     &        tau_aero, piz_aero, cg_aero )
    26692657      ELSE
    2670         tau_ae(:,:,:)=0.0
    2671         piz_ae(:,:,:)=0.0
    2672         cg_ae(:,:,:)=0.0
     2658         tau_aero(:,:,:,:) = 0.
     2659         piz_aero(:,:,:,:) = 0.
     2660         cg_aero(:,:,:,:)  = 0.
    26732661      ENDIF
    26742662
     
    28472835
    28482836      IF (aerosol_couple) THEN
    2849          sulfate(:,:) = ccm(:,:,1)
    2850          sulfate_pi(:,:) = ccm(:,:,2)
    2851       ENDIF
     2837         maerosol(:,:)    = ccm(:,:,1)
     2838         maerosol_pi(:,:) = ccm(:,:,2)
     2839      END IF
    28522840
    28532841      if (ok_newmicro) then
     
    28572845     .            flwp, fiwp, flwc, fiwc,
    28582846     e            ok_aie,
    2859      e            sulfate, sulfate_pi,
     2847     e            maerosol, maerosol_pi,
    28602848     e            bl95_b0, bl95_b1,
    28612849     s            cldtaupi, re, fl)
     
    28652853     .            cldh, cldl, cldm, cldt, cldq,
    28662854     e            ok_aie,
    2867      e            sulfate, sulfate_pi,
     2855     e            maerosol, maerosol_pi,
    28682856     e            bl95_b0, bl95_b1,
    28692857     s            cldtaupi, re, fl)
     
    28952883      IF (aerosol_couple) THEN
    28962884#ifdef INCA
    2897       CALL radlwsw_inca
    2898      e            (kdlon,kflev,dist, rmu0, fract, solaire,
    2899      e             paprs, pplay,zxtsol,albsol1, albsol2, t_seri,q_seri,
    2900      e             wo,
    2901      e             cldfra, cldemi, cldtau,
    2902      s             heat,heat0,cool,cool0,radsol,albpla,
    2903      s             topsw,toplw,solsw,sollw,
    2904      s             sollwdown,
    2905      s             topsw0,toplw0,solsw0,sollw0,
    2906      s             lwdn0, lwdn, lwup0, lwup,
    2907      s             swdn0, swdn, swup0, swup,
    2908      e             ok_ade, ok_aie,
    2909      e             tau_inca, piz_inca, cg_inca,
    2910      s             topswad_inca, solswad_inca,
    2911      s             topswad0_inca, solswad0_inca,
    2912      s             topsw_inca, topsw0_inca,
    2913      s             solsw_inca, solsw0_inca,
    2914      e             cldtaupi,
    2915      s             topswai_inca, solswai_inca)
     2885         CALL radlwsw_inca
     2886     e        (kdlon,kflev,dist, rmu0, fract, solaire,
     2887     e        paprs, pplay,zxtsol,albsol1, albsol2, t_seri,q_seri,
     2888     e        wo,
     2889     e        cldfra, cldemi, cldtau,
     2890     s        heat,heat0,cool,cool0,radsol,albpla,
     2891     s        topsw,toplw,solsw,sollw,
     2892     s        sollwdown,
     2893     s        topsw0,toplw0,solsw0,sollw0,
     2894     s        lwdn0, lwdn, lwup0, lwup,
     2895     s        swdn0, swdn, swup0, swup,
     2896     e        ok_ade, ok_aie,
     2897     e        tau_aero, piz_aero, cg_aero,
     2898     s        topswad_aero, solswad_aero,
     2899     s        topswad0_aero, solswad0_aero,
     2900     s        topsw_aero, topsw0_aero,
     2901     s        solsw_aero, solsw0_aero,
     2902     e        cldtaupi,
     2903     s        topswai_aero, solswai_aero)
     2904           
    29162905#endif
    29172906      ELSE
    2918       CALL radlwsw ! nouveau rayonnement (compatible Arpege-IFS)
    2919      e            (dist, rmu0, fract,
    2920      e             paprs, pplay,zxtsol,albsol1, albsol2, t_seri,q_seri,
    2921      e             wo,
    2922      e             cldfra, cldemi, cldtau,
    2923      s             heat,heat0,cool,cool0,radsol,albpla,
    2924      s             topsw,toplw,solsw,sollw,
    2925      s             sollwdown,
    2926      s             topsw0,toplw0,solsw0,sollw0,
    2927      s             lwdn0, lwdn, lwup0, lwup,
    2928      s             swdn0, swdn, swup0, swup,
    2929      e             ok_ade, ok_aie, ! new for aerosol radiative effects
    2930      e             tau_ae, piz_ae, cg_ae, ! ="=
    2931      s             topswad, solswad, ! ="=
    2932      e             cldtaupi, ! ="=
    2933      s             topswai, solswai,zqsat,flwc,fiwc) ! ="=
     2907
     2908         CALL radlwsw_aero
     2909     e        (dist, rmu0, fract, solaire,
     2910     e        paprs, pplay,zxtsol,albsol1, albsol2,
     2911     e        t_seri,q_seri,wo,
     2912     e        cldfra, cldemi, cldtau,
     2913     e        ok_ade, ok_aie,
     2914     e        tau_aero, piz_aero, cg_aero,
     2915     e        cldtaupi,new_aod,
     2916     s        heat,heat0,cool,cool0,radsol,albpla,
     2917     s        topsw,toplw,solsw,sollw,
     2918     s        sollwdown,
     2919     s        topsw0,toplw0,solsw0,sollw0,
     2920     s        lwdn0, lwdn, lwup0, lwup,
     2921     s        swdn0, swdn, swup0, swup,
     2922     s        topswad_aero, solswad_aero,
     2923     s        topswai_aero, solswai_aero,
     2924     o        topswad0_aero, solswad0_aero,
     2925     o        topsw_aero, topsw0_aero,
     2926     o        solsw_aero, solsw0_aero)
     2927         
     2928
    29342929      ENDIF
    29352930      itaprad = 0
     
    31593154     I                   lafin,
    31603155     I                   nlon,
    3161      I                   nlev,
     3156     I                   klev,
    31623157     I                   dtime,
    31633158     I                   u,
     
    32073202     I                   aerosol_couple,
    32083203     I                   flxmass_w,
    3209      I                   tau_inca,
    3210      I                   piz_inca,
    3211      I                   cg_inca,
     3204     I                   tau_aero,
     3205     I                   piz_aero,
     3206     I                   cg_aero,
    32123207     I                   ccm,
    32133208     I                   rfname,
     
    32183213         print*,'Attention on met a 0 les thermiques pour phystoke'
    32193214         call phystokenc (
    3220      I                   nlon,nlev,pdtphys,rlon,rlat,
     3215     I                   nlon,klev,pdtphys,rlon,rlat,
    32213216     I                   t,pmfu, pmfd, pen_u, pde_u, pen_d, pde_d,
    32223217     I                   fm_therm,entr_therm,
     
    34153410      write(lunout,*) 'FIN DE PHYSIQ !!!!!!!!!!!!!!!!!!!!'
    34163411      write(lunout,*)
    3417      s 'nlon,nlev,nqtot,debut,lafin,rjourvrai,gmtime,pdtphys pct tlos'
     3412     s 'nlon,klev,nqtot,debut,lafin,rjourvrai,gmtime,pdtphys pct tlos'
    34183413      write(lunout,*)
    3419      s  nlon,nlev,nqtot,debut,lafin,rjourvrai,gmtime,pdtphys,
     3414     s  nlon,klev,nqtot,debut,lafin,rjourvrai,gmtime,pdtphys,
    34203415     s  pctsrf(igout,is_ter), pctsrf(igout,is_lic),pctsrf(igout,is_oce),
    34213416     s  pctsrf(igout,is_sic)
    34223417      write(lunout,*) 'd_t_dyn,d_t_con,d_t_lsc,d_t_ajsb,d_t_ajs,d_t_eva'
    3423       do k=1,nlev
     3418      do k=1,klev
    34243419         write(lunout,*) d_t_dyn(igout,k),d_t_con(igout,k),
    34253420     s   d_t_lsc(igout,k),d_t_ajsb(igout,k),d_t_ajs(igout,k),
     
    34273422      enddo
    34283423      write(lunout,*) 'cool,heat'
    3429       do k=1,nlev
     3424      do k=1,klev
    34303425         write(lunout,*) cool(igout,k),heat(igout,k)
    34313426      enddo
    34323427
    34333428      write(lunout,*) 'd_t_oli,d_t_vdf,d_t_oro,d_t_lif,d_t_ec'
    3434       do k=1,nlev
     3429      do k=1,klev
    34353430         write(lunout,*) d_t_oli(igout,k),d_t_vdf(igout,k),
    34363431     s d_t_oro(igout,k),d_t_lif(igout,k),d_t_ec(igout,k)
     
    34393434      write(lunout,*) 'd_ps ',d_ps(igout)
    34403435      write(lunout,*) 'd_u, d_v, d_t, d_qx1, d_qx2 '
    3441       do k=1,nlev
     3436      do k=1,klev
    34423437         write(lunout,*) d_u(igout,k),d_v(igout,k),d_t(igout,k),
    34433438     s  d_qx(igout,k,1),d_qx(igout,k,2)
Note: See TracChangeset for help on using the changeset viewer.