U
    —rfŠ.  ã                   @   sÀ   d Z ddl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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 )z2
Namelist creator for E3SM's atmosphere component
é    Nz..ÚcimeÚscriptsÚTools)Ú*)ÚCase)ÚexpectÚrun_cmd_no_failÚ	safe_copyÚ
SharedArea)Úcreate_namelist_infileÚparse_inputc           @      C   sx  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 ¡}!|  d!¡ ¡ }"tj |d"¡}#tj |#¡s‚t |#¡ |sÚ|d#kr–d$}|d%kr¤d&}|d'kr²d(}|d)krÀd*}|rÊd+nd,}$|d-krÜd.nd/}%|d0krô|!sôd1nd2}&|d3kr|  d4¡d5krd6n|}'d,}(|d7kr,d7}(|d8kr:d8}(d9|krNd: 	|¡nd,})d,}*t
 d;¡}+|+ |¡},|,rŒ|, ¡ d< }d=|, ¡ d0  }*|"d>kršd?nd,}-d@ 	tj |dA¡|'||(|$|%|&||||*|)||-¡}.t|.|#dB nt tj tj |#dC¡¡dDƒ dE|ks
dF|krdGndH}/|
dIkr$dJ|
 ndK}0d,}1td0|d0 ƒD ]6}2d,}1|d0kr²dL 	|2¡}1tj tj |dM 	|1¡¡¡s²tj tj |dN¡¡r²ttj |dN¡tj |dM 	|1¡¡ƒ d,}3|dOkrtj dP 	||1|| ¡¡rìdQ 	||1|| ¡}3ndR 	||| ¡}3|1d,krt dS 	|3¡¡ d,}4|dTkr|tj dU 	|||1|| ¡¡rRdV 	|||1|| ¡}4n*dW 	|||| ¡}4|1d,kr|t dS 	|4¡¡ |dXkrdY| }5n8|dZkr¤d[| }5n$|d\kr¸d]| }5nt dS 	|¡¡ | d^d,¡}6|| }7|d_krìd`}8nda}8d,}9|9db 	|5¡7 }9|9dc 	|¡7 }9|9dd 	|6¡7 }9|3r2|9de 	|3¡7 }9|4rF|9df 	|4¡7 }9|rT|9dg7 }9|8rb|9dh7 }9|rp|9di7 }9t| dj 	||1¡dk 	|#¡|9dl |2d0krÄtj tj |dm¡¡rÄt tj |dm¡¡ tj |dn¡}:|:do 	|#¡7 }:|:dp 	||/|0¡7 }:|:dq 	|¡7 }:|:dr 	|7¡7 }:|:ds 	|	¡7 }:tj tj |dt¡¡r>t du¡ t|:|#dB tj |¡ršttj |#dv¡tj |dw 	|1¡¡ƒ ttj |#dx¡tj |dx¡ƒ tƒ Ê tj |  d¡dy¡};t |;¡D ]¤}<tj |dz¡}=tj |=|<¡}>tj |=¡szt |=¡ W n tk
r   Y nX z6t |>tjtjB ¡}?t  |?¡ ttj |;|<¡|>ƒ W n tk
r`   Y nX qÀW 5 Q R X q:d S ){NÚeamZATM_FLUX_INTEGRATION_METHODZATM_SUPPLIES_GUSTINESSZATM_GRIDZATM_NCPLÚBUILD_COMPLETEÚCAM_CONFIG_OPTSZCAM_NAMELIST_OPTSZCAM_NML_USE_CASEZ
CAM_DYCOREÚ
CAM_TARGETÚ	CASEBUILDZCCSM_CO2_PPMVÚSRCROOTÚCOMP_INTERFACEÚCOMP_OCNÚDEBUGÚDIN_LOC_ROOTÚEXEROOTÚMPILIBÚNCPL_BASE_PERIODZ
NTHRDS_ATMZ
NTASKS_ATMZ	NINST_ATMZPTS_MODEÚRUNDIRÚRUN_TYPEZRUN_STARTDATEÚRUN_REFCASEÚRUN_REFDATEZ
RUN_REFTODÚFORCE_BUILD_SMPÚOSZeamconfZT31Z48x96ZT42Z64x128ZT85Z128x256ZT341Z512x1024z-scam -nosmpÚ z
mpi-serialz-nospmdz-spmdé   z-nosmpz-smpZdocnZ	DOCN_MODEZsomÚpopÚmctÚesmfZcospz-cosp_libdir {}/atm/obj/cospz	(.+)L(.+)r   z-nlev Zbgqz-target_os bgqz{{} -s -ccsm_seq -ice none -ocn {} -caseroot {} -comp_intf {} {} -spmd {} -smp {} -dyn {} -dyn_target {} -res {} {} {} {} {}zcomponents/eam/bld/configure)Úfrom_dirzconfig_cache.xmlzMissing eam cache filez-01-01z-09-01z-ignore_ic_yearz-ignore_ic_date)NÚUNSETz
-use_case ú z_{0:04d}zrpointer.atm{}zrpointer.atmÚhybridz{}.eam{}.i.{}-{}.ncz'{}.eam{}.i.{}-{}.nc'z'{}.eam.i.{}-{}.nc'zWARNING: {} is being usedÚbranchz{}/{}.eam{}.r.{}-{}.ncz'{}/{}.eam{}.r.{}-{}.nc'z'{}/{}.eam.r.{}-{}.nc'Úyeari€3áÚdayi€Q Úhouri  ú-Zimplicit_stressTFz dtime = {} 
z co2vmr = {:f}e-6
z start_ymd = {}z ncdata = {} 
z cam_branch_file = {} 
z state_debug_checks = .true. 
z linearize_pbl_winds = .true. 
z export_gustiness = .true. 
z{}/user_nl_eam{}z{}/cesm_namelist)Úinfile_textzeam.input_data_listz!components/eam/bld/build-namelistz -infile {}/cesm_namelistz -csmdata {} {} {}z" -inputdata {}/eam.input_data_listz -ntasks {}z -namelist " &atmexp {} /" Zuser_nl_camz]
 *** STOP: It appears you are still using user_nl_cam, please change it to user_nl_eam. ***
Zatm_inzatm_in{}Zdrv_flds_inzcomponents/eamxx/datazatm/cam/physprops)!r   ÚosÚchdirÚ	get_valueÚlowerÚpathÚjoinÚisdirÚmkdirÚformatÚreÚcompileÚmatchÚgroupsr   ÚexistsÚranger	   ÚloggerÚwarningÚreplacer   ÚremoveÚsysÚexitr
   ÚlistdirÚmakedirsÚOSErrorÚopenÚO_CREATÚO_EXCLÚclose)@ÚcaseÚcaserootÚcompnameZatm_flux_methodZatm_gustinessZatm_gridZatm_ncplÚbuild_completeZcam_config_optsZcam_namelist_optsZcam_nml_use_caseZ
cam_dycoreÚ
cam_targetÚ	casebuildZccsm_co2_ppmvÚsrcrootÚcomp_interfaceZcomp_ocnÚdebugÚdin_loc_rootÚexerootÚmpilibÚncpl_base_periodZ
nthrds_atmZ
ntasks_atmZ	ninst_atmZpts_modeÚrundirÚrun_typeZrun_startdateÚrun_refcaseÚrun_refdateZ
run_reftodZforce_build_smpÚos_Zeamconf_dirZscmZspmdÚsmpÚocnÚcompZcam_lib_dirsZnlevZregex_Zmatch_Zos_optZ
config_cmdÚignoreZusecaseZinst_stringÚinst_counterZncdataZcam_branch_fileZdtimeZ	start_ymdÚntasksZlinearize_pbl_windsr.   Zcam_buildnml_cmdZscream_data_dirÚitemÚtgt_dirÚtgt_pathÚfd© rg   úM/global/u1/q/qinyi/eagles_code/eaglesrrm/components/eam//cime_config/buildnmlÚbuildnml   sT   































 

 
 
 
 "
 
 

             ÿ

ÿÿ










     
ý	

$
ri   c               	   C   s.   t tjƒ} t| ƒ}t|| dƒ W 5 Q R X d S )Nr   )r   rB   Úargvr   ri   )rL   rK   rg   rg   rh   Ú
_main_funcÿ   s    

rk   Ú__main__)Ú__doc__r/   rB   r8   r3   r4   ÚdirnameÚabspathÚ__file__Z	_CIMEROOTÚappendÚstandard_script_setupÚ	CIME.caser   Ú
CIME.utilsr   r   r	   r
   ZCIME.buildnmlr   r   ÚloggingÚ	getLoggerÚ__name__r>   ri   rk   rg   rg   rg   rh   Ú<module>   s   $
 l