U
    ™rfQ  ã                   @   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r°eƒ  dS )z.
Namelist creator for E3SM's MOSART component
é    Nz..ÚcimeÚscriptsÚTools)Ú*)ÚCase)ÚexpectÚrun_cmd_no_failÚ	safe_copy)Úcreate_namelist_infileÚparse_inputc              	   C   s"  t |dk|ƒ t |¡ |  d¡}|  d¡}|  d¡}|  d¡}|  d¡}|  d¡}|  d¡}|  d	¡}	|  d
¡}
|  d¡}|  d¡}|  d¡}|  d¡}|  d¡}tj |d¡}tj |¡sÈt |¡ d}t ||kd |¡ƒ d}t	d|d ƒD ](}d}|dkrjd |¡}tj 
tj |
d |¡¡¡sjtj 
tj |
d¡¡rjttj |
d¡tj |
d |¡¡ƒ tj 
tj |d¡¡r–t tj |d¡¡ d}|dkrld}|dks¼|dkr<d |
||||¡}tj 
|¡s<d |
|||¡}tj 
|¡s<d |
||||¡}tj 
|¡s<d |
|||¡}t tj 
|¡d ƒ |dkrT|d! |¡7 }|dkrl|d" |¡7 }t| d# ||¡d$ |¡|d% tj |d&¡}|d' |¡7 }|d( |¡7 }|d) |¡7 }|d* |	¡7 }|d+ ||¡7 }t||d, tj 
|
¡ròttj |d-¡tj |
d. |¡¡ƒ qòd S )/NÚmosartÚ	CASEBUILDÚCASEROOTÚSRCROOTÚDIN_LOC_ROOTZ	NINST_ROFZROF_GRIDZMOSART_BLDNML_OPTSZMOSART_NAMELIST_OPTSÚRUNDIRÚRUN_TYPEÚRUN_REFCASEÚRUN_REFDATEÚ
RUN_REFTODZSCRIPTSROOTZ
mosartconf)ÚnullZr2Zr05Zr0125Zr01ZNLDASZ
ELM_USRDATzcROF_GRID '{}' is not supported in mosart. Choose from: null, r2, r05, r0125, r01, NLDAS, ELM_USRDATÚ é   z_{0:04d}zrpointer.rof{}zrpointer.rofzmosart.input_data_listr   ÚhybridÚbranchz{}/{}.mosart{}.r.{}-{}.ncz{}/{}.mosart.r.{}-{}.ncz{}/{}.clm2{}.r.{}-{}.ncz{}/{}.clm2.r.{}-{}.nczMERROR mosart.buildnml: could not find restart file for branch or hybrid startzfinidat_rtm = '{}'
znrevsn_rtm  = '{}'
z{}/user_nl_mosart{}z{}/cesm_namelist)Úinfile_textz$components/mosart/bld/build-namelistz -infile {}/cesm_namelistz -caseroot {}z -scriptsroot {}z -namelist " &mosartexp {} /" z -inst_string "{}" {})Úfrom_dirZ	mosart_inzmosart_in{})r   ÚosÚchdirÚ	get_valueÚpathÚjoinÚisdirÚmkdirÚformatÚrangeÚexistsr	   Úremover
   r   )ÚcaseÚcaserootÚcompnameÚ	casebuildÚsrcrootÚdin_loc_rootZ	ninst_rofZrof_gridZmosart_bldnml_optsZmosart_namelist_optsÚrundirÚrun_typeÚrun_refcaseÚrun_refdateÚ
run_reftodZscriptsrootZrofconf_dirZrof_grid_supportedÚinst_stringÚinst_counterr   ZfncheckZsysmod© r5   úP/global/u1/q/qinyi/eagles_code/eaglesrrm/components/mosart//cime_config/buildnmlÚbuildnml   s€    














 


ÿÿ

 
 
ý	r7   c               	   C   s.   t tjƒ} t| ƒ}t|| dƒ W 5 Q R X d S )Nr   )r   ÚsysÚargvr   r7   )r)   r(   r5   r5   r6   Ú
_main_func}   s    

r:   Ú__main__)Ú__doc__r   r8   r    r!   ÚdirnameÚabspathÚ__file__Ú	_CIMEROOTÚappendÚstandard_script_setupÚ	CIME.caser   Ú
CIME.utilsr   r   r	   ÚCIME.buildnmlr
   r   ÚloggingÚ	getLoggerÚ__name__Úloggerr7   r:   r5   r5   r5   r6   Ú<module>   s   $
i