U
    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rd}
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       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   sP    



 




r<   c                 C   s|   d}d}| j dd | d}|D ](}d|}| |}|dkr"d} qLq"|rntd t| }td	 n
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)r5   
get_valuesr4   r    r2   r3   r<   )selfr;   Z	has_adiosZcomponent_classes	compclasskeypio_typenamer   r   r   case_post_run_ioX   s     




rD   )__doc__r!   CIME.XML.standard_module_setup
CIME.utilsr   r   logging	getLogger__name__r2   r<   rD   r   r   r   r   <module>   s   
M