Ignore:
Timestamp:
Feb 27, 2025, 2:53:07 PM (4 months ago)
Author:
emoisan
Message:

Titan physics (under MESOSCALE precompiling flag):
Change initialization for microphysics model, to be consistent with
initialization for physics.
The parameters are now defined in callphys.def instead of datagcm.
The new callphys.def with all the parameters is in deftank
(callphys.def.allmuparams).
EMo

Location:
trunk/LMDZ.TITAN/libf/muphytitan
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/LMDZ.TITAN/libf/muphytitan/mm_globals.f90

    r3496 r3657  
    724724      ENDIF
    725725      ! Reads species properties configuration file
    726       err = cfg_read_config(cp,TRIM(spcfile)) ; IF (err /= 0) RETURN
     726      !err = cfg_read_config(cp,TRIM(spcfile)) ; IF (err /= 0) RETURN
     727      err = cfg_read_config(cp,TRIM(spcfile))
     728      IF (err /= 0) THEN
     729        write(*,*) err !return error message (EMoi24)
     730        RETURN
     731      ENDIF
    727732      err = cfg_get_value(cp,"used_species",species)
    728733      IF (err /= 0) THEN
     
    836841    ENDIF
    837842
    838     ! compute m3 thresholds from user-defined thresholds.
    839     mm_m3as_min  =  mm_m0as_min*mm_alpha_s(3._mm_wp) * mm_rcs_min**3._mm_wp
    840     mm_m3af_min  =  mm_m0af_min*mm_alpha_f(3._mm_wp) * mm_rcf_min**3._mm_wp
    841     mm_m3cld_min =  mm_m0n_min * (4._mm_wp * mm_pi / 3._mm_wp) * mm_drad_min**3._mm_wp
    842 
    843843    ! clouds control flags
    844844    IF (mm_w_clouds) THEN
     
    875875    END SUBROUTINE printw
    876876  END FUNCTION mm_global_init_0
     877
     878  SUBROUTINE mm_global_init_calc
     879    ! compute m3 thresholds from user-defined thresholds.
     880    ! -- we operate here on global variables
     881    mm_m3as_min  =  mm_m0as_min*mm_alpha_s(3._mm_wp) * mm_rcs_min**3._mm_wp
     882    mm_m3af_min  =  mm_m0af_min*mm_alpha_f(3._mm_wp) * mm_rcf_min**3._mm_wp
     883    mm_m3cld_min =  mm_m0n_min * (4._mm_wp * mm_pi / 3._mm_wp) * mm_drad_min**3._mm_wp
     884  END SUBROUTINE mm_global_init_calc
    877885
    878886  FUNCTION mm_global_init_1(cfg) RESULT(err)
     
    980988    err = mm_check_opt(cfg_get_value(cfg,"haze_coagulation",mm_w_haze_coag),mm_w_haze_coag,zwhc,wlog=mm_log)
    981989    err = mm_check_opt(cfg_get_value(cfg,"clouds_sedimentation",mm_w_cloud_sed),mm_w_cloud_sed,zwcs,wlog=mm_log)
    982     err = mm_check_opt(cfg_get_value(cfg,"clouds_nucl_cond",mm_w_cloud_nucond),mm_w_cloud_nucond,zwcn,wlog=mm_log)
     990    err = mm_check_opt(cfg_get_value(cfg,"clouds_nuc_cond",mm_w_cloud_nucond),mm_w_cloud_nucond,zwcn,wlog=mm_log)
    983991    err = mm_check_opt(cfg_get_value(cfg,"wsed_m0",mm_wsed_m0),mm_wsed_m0,zwstom0,wlog=mm_log)
    984992    err = mm_check_opt(cfg_get_value(cfg,"wsed_m3",mm_wsed_m3),mm_wsed_m3,zwstom3,wlog=mm_log)
  • trunk/LMDZ.TITAN/libf/muphytitan/mmp_gcm.f90

    r3090 r3657  
    4343  USE CFGPARSE
    4444  USE DATASETS
     45  USE CALLKEYS_MOD
    4546  IMPLICIT NONE
    4647
     
    8788      !! Internal microphysic configuration file.
    8889
     90    TYPE(error)                                       :: err
     91    INTEGER                                           :: i
     92    TYPE(cfgparser)                                   :: cparser
     93    CHARACTER(len=st_slen)                            :: opt_file
     94    CHARACTER(len=st_slen), DIMENSION(:), ALLOCATABLE :: species
     95    REAL(kind=mm_wp), DIMENSION(:), ALLOCATABLE       :: tmp
     96    LOGICAL                                           :: wdebug
     97
     98! for mesoscale, initialized in inifis_mod (EMoi)
     99#ifndef MESOSCALE
    89100    INTEGER                                           :: coag_choice
    90101    REAL(kind=mm_wp)                                  :: fiad_max,fiad_min,df,rm,rho_aer
    91102    LOGICAL                                           :: w_h_prod,w_h_sed,w_h_coag,w_c_sed,w_c_nucond, &
    92103                                                         no_fiadero,fwsed_m0,fwsed_m3
    93     TYPE(error)                                       :: err
    94     INTEGER                                           :: i
    95     TYPE(cfgparser)                                   :: cparser
    96     CHARACTER(len=st_slen)                            :: spcpath,pssfile,mqfile,opt_file
    97     CHARACTER(len=st_slen), DIMENSION(:), ALLOCATABLE :: species
    98     REAL(kind=mm_wp), DIMENSION(:), ALLOCATABLE       :: tmp
     104    CHARACTER(len=st_slen)                            :: spcpath,pssfile,mqfile
    99105    REAL(kind=mm_wp)                                  :: m0as_min,rcs_min,m0af_min,rcf_min,m0n_min
    100     LOGICAL                                           :: wdebug
    101106
    102107    w_h_prod    = .true.
     
    117122    rcf_min     = 1e-9_mm_wp
    118123    m0n_min     = 1e-10_mm_wp
     124#endif
    119125
    120126    WRITE(*,'(a)') "##### MMP_GCM SPEAKING #####"
     
    129135    ENDIF
    130136
     137! for mesoscale, the initialization of these parameters has been transfered to inifis (EMoi)
     138#ifndef MESOSCALE
    131139    ! YAMMS internal parameters:
    132140    err = mm_check_opt(cfg_get_value(cparser,"rm",rm),rm,50e-9_mm_wp,mm_log)
     
    139147    err = mm_check_opt(cfg_get_value(cparser,"haze_coagulation",w_h_coag)         ,w_h_coag   ,.true.     ,mm_log)
    140148    err = mm_check_opt(cfg_get_value(cparser,"clouds_sedimentation",w_c_sed)      ,w_c_sed    ,clouds     ,mm_log)
    141     err = mm_check_opt(cfg_get_value(cparser,"clouds_nucl_cond",w_c_nucond)       ,w_c_nucond ,clouds     ,mm_log)
     149    err = mm_check_opt(cfg_get_value(cparser,"clouds_nuc_cond",w_c_nucond)       ,w_c_nucond ,clouds     ,mm_log)
    142150    err = mm_check_opt(cfg_get_value(cparser,"wsed_m0",fwsed_m0)                  ,fwsed_m0   ,.true.     ,mm_log)
    143151    err = mm_check_opt(cfg_get_value(cparser,"wsed_m3",fwsed_m3)                  ,fwsed_m3   ,.false.    ,mm_log)
     
    159167      IF (err/=0) call abort_program(err)
    160168    ENDIF
     169#endif
     170
     171! for mesoscale, the initialization of these parameters has been transfered to inifis (EMoi)
     172#ifndef MESOSCALE
     173    ! YAMMS initialization.
     174    ! NB: in MESOSCALE this is done in inifis EMoi
     175    err = mm_global_init_0(dt,df,rm,rho_aer,p_prod,tx_prod,rc_prod,rplanet,g0, &
     176                           air_rad,air_mmol,coag_choice,clouds,spcpath,  &
     177                           w_h_prod,w_h_sed,w_h_coag,w_c_nucond,  &
     178                           w_c_sed,fwsed_m0,fwsed_m3, &
     179                           no_fiadero,fiad_min,fiad_max, &
     180                           m0as_min,rcs_min,m0af_min,rcf_min,m0n_min,wdebug)
     181    IF (err /= 0) call abort_program(err)
     182#endif
    161183
    162184    ! Setup alpha function: THEY ARE REQUIRED IN YAMMS global initialization !
     
    170192    IF (err /= 0) call abort_program(error("alpha_s: "//TRIM(err%msg),-1))
    171193
    172     ! YAMMS initialization.
    173     err = mm_global_init_0(dt,df,rm,rho_aer,p_prod,tx_prod,rc_prod,rplanet,g0, &
    174                            air_rad,air_mmol,coag_choice,clouds,spcpath,  &
    175                            w_h_prod,w_h_sed,w_h_coag,w_c_nucond,  &
    176                            w_c_sed,fwsed_m0,fwsed_m3, &
    177                            no_fiadero,fiad_min,fiad_max, &
    178                            m0as_min,rcs_min,m0af_min,rcf_min,m0n_min,wdebug)
    179     IF (err /= 0) call abort_program(err)
    180 
     194    ! perform threshold computations once global variables + settings collected
     195    CALL mm_global_init_calc
     196
     197! for mesoscale, the initialization of these parameters has been transfered to inifis (EMoi)
     198#ifndef MESOSCALE
    181199    ! Extra initialization (needed for YAMMS method interfaces)
    182200    err = mm_check_opt(cfg_get_value(cparser, "transfert_probability", mmp_w_ps2s), mmp_w_ps2s, wlog=mm_log)
     
    184202    err = mm_check_opt(cfg_get_value(cparser, "electric_charging"    , mmp_w_qe  ), mmp_w_qe, wlog=mm_log)
    185203    IF (err/=0) call abort_program(err)
     204#endif
    186205
    187206    ! initialize transfert probabilities look-up tables
    188207    IF (mm_w_haze_coag .AND. mmp_w_ps2s) THEN
     208! for mesoscale, the initialization of these parameters has been transfered to inifis (EMoi)
     209#ifndef MESOSCALE
    189210      err = mm_check_opt(cfg_get_value(cparser, "ps2s_file", pssfile), pssfile)
    190211      IF (err /= 0) call abort_program(err)
     212#endif
    191213
    192214      IF (.NOT.read_dset(pssfile,'p_m0_co',mmp_pco0p)) THEN
     
    203225      ENDIF
    204226    ENDIF
     227
    205228    ! initialize mean electric correction look-up tables
    206229    IF (mm_w_haze_coag .AND. mmp_w_qe) THEN
     230! for mesoscale, the initialization of these parameters has been transfered to inifis (EMoi)
     231#ifndef MESOSCALE
    207232      err = mm_check_opt(cfg_get_value(cparser, "mq_file", mqfile), mqfile)
    208233      IF (err /= 0) call abort_program(err)
     234#endif
    209235
    210236      IF (.NOT.read_dset(mqfile,'qbsf0',mmp_qbsf0)) THEN
     
    245271    ! dump parameters ...
    246272    WRITE(*,'(a)')        "========= MUPHYS PARAMETERS ==========="
    247     WRITE(*,'(a,L2)')     "transfert_probability: ", mmp_w_ps2s
    248     WRITE(*,'(a,L2)')     "electric_charging    : ", mmp_w_qe
     273    !WRITE(*,'(a,L2)')     "transfert_probability: ", mmp_w_ps2s
     274    !WRITE(*,'(a,L2)')     "electric_charging    : ", mmp_w_qe
    249275    call mm_dump_parameters()
    250276    IF (clouds) THEN
Note: See TracChangeset for help on using the changeset viewer.