o
    rf                     @   sB   d Z ddlZddlT ddlmZmZ eeZ	dd Z
dd ZdS )	z
Post run I/O processing
    N)*)new_lidrun_and_log_case_statusc                    s|  |  d}| d}d}tj||}| dd }|d | }|d}|dd	}| d
}t| d}	|dkrwd}
d}d}|  d}d| _tt	t
| j|
 ||| _d| _|| j| j| _|| j| j\| _| _|  j| j7  _| jdd |jddd}| |}|d} ||  || td  | jdd  fdd}t|d| d|dkd}|S )zG
    Converts all ADIOS output files for the case to NetCDF format
    mach_specificEXEROOTzadios2pio-nm.exeRUNDIRz--idir= run_misc_suffixze3sm.logze3sm_adios_post_io.logBATCH_SYSTEM)casenoneg      ?   i   mach_pesF)allow_unresolved_envvarsrun_exeT)resolvedz-Run command for ADIOS post processing is : {})resetc                      s   t  dd S )N)from_dirr   )run_cmd cmdrundirr   R/global/u1/q/qinyi/eagles_code/eaglesrrm/cime_config/customize/case_post_run_io.py<lambda>M   s    z&_convert_adios_to_nc.<locals>.<lambda>zADIOS to NetCDF conversionCASEROOT)caserootis_batch)get_env	get_valueospathjoinreplacer   thread_countmaxmininttotal_taskscores_per_taskget_tasks_per_nodetasks_per_nodeget_total_nodes	num_nodesspare_nodesget_mpirun_cmdget_resolved_valueloggerinfoformatload_envr   )r   env_mach_specificexerootZadios_conv_tool_nameZadios_conv_tool_exeZadios_conv_tool_argsZadios_conv_tool_cmdZadios_conv_tool_cmd_suffixr   lidZCONV_JOB_SCALE_FACTORZCONV_JOB_MIN_TOTAL_TASKSZCONV_JOB_MAX_TOTAL_TASKSenv_mach_pesr   r	   run_funcsuccessr   r   r   _convert_adios_to_nc   sN   








r;   c                 C   s~   d}d}| j dd | d}|D ]}d|}| |}|dkr%d} nq|r8td t| }td	 |S td
 |S )zT
    I/O Post processing :
    1. Convert ADIOS output files, if any, to NetCDF
    TFzcase.post_run_io)jobCOMP_CLASSESzPIO_TYPENAME_{}Zadiosz&I/O post processing for ADIOS startingz'I/O post processing for ADIOS completedzNo I/O post processing required)r4   
get_valuesr3   r   r1   r2   r;   )selfr:   Z	has_adiosZcomponent_classes	compclasskeypio_typenamer   r   r   case_post_run_ioX   s$   





rC   )__doc__r    CIME.XML.standard_module_setup
CIME.utilsr   r   logging	getLogger__name__r1   r;   rC   r   r   r   r   <module>   s    
M