o
    ˜rf'  ã                   @   s¸   d Z ddlZddlZej ej ej e¡¡dddd¡Zej 	ej edd¡¡ ddl
T ddlmZ dd	lmZmZmZ dd
lmZmZ e e¡Zdd„ Zdd„ ZedkrZeƒ  dS dS )z2
Namelist creator for E3SM's Land Model component
é    Nz..ÚcimeÚscriptsÚTools)Ú*)ÚCase)ÚexpectÚrun_cmd_no_failÚ	safe_copy)Úcreate_namelist_infileÚparse_inputc           4   	   C   sª  t |dk|ƒ t |¡ |  d¡}|  d¡}|  d¡}|  d¡}|  d¡}|  d¡}|  d¡}	|  d	¡}
|  d
¡}|  d¡}|  d¡}|  d¡}|  d¡}|  d¡}|  d¡}|  d¡}|  d¡}|  d¡}|  d¡}|  d¡}|  d¡}|  d¡}|  d¡}|  d¡}|  d¡}|  d¡}|  d¡}|  d¡}|  d¡}|  d¡} |  d ¡}!tj |!d!¡}"tj |"¡s¹t |"¡ |d"kr¿d#}|d$krÅd%}|d&krËd'}|d(krÑd)}d*}#d*}$d*}%|d+krád,}#|}$d*}%|d+krò|d-kròd. |¡}#|}$d*}%|d-krÿd,}#|	}$d/ |	¡}%d0|v rd1}#d2 |¡}&|&d3 |#||
¡7 }&|&d4 |¡7 }&t	|&|"d5 d6}'d7}(|d8kr2|d9kr1d:}(n
|d;kr:d8}(n|}(|d<krCd=}'d*})t
d>|d> ƒD ]…}*d*})|d>krˆd? |*¡})tj tj |d@ |)¡¡¡sˆtj tj |dA¡¡rˆttj |dA¡tj |d@ |)¡¡ƒ |*d>krŸtj dB |¡¡rŸt dB |¡¡ d*}+d*},|d;ks­|d<krÎdC ||)|| ¡},tj tj ||,¡¡sÈdD ||| ¡},dE |'|,¡}+d*}-|+rÙdF |'|,¡}-|dGkrádH}.ndI}.|.rê|-dJ7 }-|rñ|-dK7 }-t| dL ||)¡dM |"¡|-dN d*}/|dOkrt|  dP¡ƒ ¡ }0dQ |0¡}/d,}1|dRkr!dS |¡}1| dTd*¡}2dU}3dV ||¡}&|&dW |||3¡7 }&|&dX |2|¡7 }&|&dY |1|/|$|%|(¡7 }&|&dZ |||||¡7 }&|&d[ |||¡7 }&|&d\ |¡7 }&|&d] |"|¡7 }&|d+krz|&d^ |¡7 }&tj tj |d_¡¡r‹t d`¡ t	|&|"d5 tj |¡rªttj |"da¡tj |db |)¡¡ƒ tj tj |dc¡¡sÑtj tj |"dc¡¡rÑttj |"dc¡tj |dc¡ƒ qLd S )dNÚelmÚSRCROOTÚCOMPSETÚATM_FLUX_INTEGRATION_METHODÚATM_SUPPLIES_GUSTINESSÚCCSM_CO2_PPMVZELM_CO2_TYPEZELM_USRDAT_NAMEZELM_CONFIG_OPTSZELM_NAMELIST_OPTSZELM_BLDNML_OPTSZELM_NML_USE_CASEZELM_FORCE_COLDSTARTÚCOMP_INTERFACEÚCOMP_GLCÚDIN_LOC_ROOTZGLC_NECZLND_GRIDZLND_NCPLZROF_NCPLZLND_DOMAIN_PATHZLND_DOMAIN_FILEÚ	MASK_GRIDÚNCPL_BASE_PERIODZ	NINST_LNDÚRUNDIRÚRUN_TYPEÚRUN_STARTDATEÚRUN_REFCASEÚRUN_REFDATEÚ
RUN_REFTODÚ	CASEBUILDZelmconfÚT31Ú48x96ÚT42Ú64x128ÚT85Ú128x256ÚT341Ú512x1024Ú Zregú Z
ELM_USRDATz-sitespf_pt {}z -clm_usr_name {}Z1PTz -sitespf_pt regz{}/components/elm/bld/configurez  {} -comp_intf {} {}z -usr_src {}/SourceMods/src.elm)Úfrom_dirZfinidatÚdefaultÚstartupÚonZcoldÚhybridÚbranchZnrevsné   z_{0:04d}zrpointer.lnd{}zrpointer.lndz {}/Buildconf/elm.input_data_listz{}.elm{}.r.{}-{}.ncz{}.elm.r.{}-{}.ncz
 {} = '{}'z{} = '{}' 
Úimplicit_stressTFz implicit_stress = .true. 
z atm_gustiness = .true. 
z{}/user_nl_elm{}z{}/namelist)Úinfile_textÚsglcZGLC_SMBz-glc_present -glc_smb .{}. ÚUNSETz-use_case {}ú-z-ignore_ic_yearzK{}/components/elm/bld/build-namelist -infile {}/Buildconf/elmconf/namelist z; -csmdata {} -inputdata {}/Buildconf/elm.input_data_list {}z, -namelist " &elm_inparm  start_ymd={} {} /"z$ {} {} -res {} {} -clm_start_type {}z5 -envxml_dir {} -l_ncpl {} -r_ncpl {} -lnd_frac {}/{}z' -glc_nec {} -co2_ppmv {} -co2_type {} z -ncpl_base_period {} z -config {}/config_cache.xml {}z	 -mask {}Zuser_nl_clmz]
 *** STOP: It appears you are still using user_nl_clm, please change it to user_nl_elm. ***
Zlnd_inzlnd_in{}Údrv_flds_in)r   ÚosÚchdirÚ	get_valueÚpathÚjoinÚisdirÚmkdirÚformatr   ÚrangeÚexistsr	   Úremover
   ÚstrÚlowerÚreplaceÚsysÚexit)4ÚcaseÚcaserootÚcompnameÚsrcrootÚcompsetÚatm_flux_methodÚatm_gustinessÚccsm_co2_ppmvZelm_co2_typeZelm_usrdat_nameZelm_config_optsZelm_namelist_optsZelm_bldnml_optsZelm_nml_use_caseZelm_force_coldstartÚcomp_interfaceZcomp_glcÚdin_loc_rootZglc_necZlnd_gridZlnd_ncplZrof_ncplZlnd_domain_pathZlnd_domain_fileZ	mask_gridÚncpl_base_periodZ	ninst_lndÚrundirÚrun_typeÚrun_startdateÚrun_refcaseÚrun_refdateÚ
run_reftodÚ	casebuildZelmconf_dirZconfig_optsÚ
resolutionZclmusrZsysmodZstartfiletypeZ
start_typeÚinst_stringÚinst_counterZ	elmicfileZelm_startfiler0   r/   Zglc_optsZglc_smbÚusecaseÚ	start_ymdÚignore© r]   úL/global/u1/q/qinyi/eagles_code/eaglesrrm/components/elm/cime_config/buildnmlÚbuildnml   s  





































€


ÿÿ


ý	



$0€ r_   c                  C   sD   t tjƒ} t| ƒ}t|| dƒ W d   ƒ d S 1 sw   Y  d S )Nr   )r   rC   Úargvr   r_   )rF   rE   r]   r]   r^   Ú
_main_funcÛ   s   

"ÿra   Ú__main__)Ú__doc__r5   rC   r8   r9   ÚdirnameÚabspathÚ__file__Ú	_CIMEROOTÚappendÚstandard_script_setupÚ	CIME.caser   Ú
CIME.utilsr   r   r	   ÚCIME.buildnmlr
   r   ÚloggingÚ	getLoggerÚ__name__Úloggerr_   ra   r]   r]   r]   r^   Ú<module>   s   $
 H
ÿ