ESCOMP / HEMCO_CESM

CESM/CAM interface to modular HEMCO chemistry emissions module
1 stars 8 forks source link

HEMCO PIO module #4

Open jimmielin opened 4 years ago

jimmielin commented 4 years ago

Task description

Develop a PIO module for HEMCO.

Initialization

DOF needs to be pre-generated for PIO to work; need to look at restart file examples to see how this is approached.

Read routines

Need to implement a HEMCO-compatible IO routine which reads netCDF gridded data (lat-lon for now) and regrid to HEMCO internal grid structure (ESMF_Grid).

It will implement a routine with this signature:

SUBROUTINE HCOIO_Read( am_I_Root, HcoState, Lct, RC )

And basically write data on this CPU from this file path: Lct%Dct%Dta%ncFile (ListContainer -> DataContainer -> Data -> ncFile array) to this array structure (also needs to be allocated in this IO routine):

! 3D, Lct%Dct%Dta%SpaceDim == 3
Lct%Dct%Dta%V3(1)%Val => ...
! 2D, Lct%Dct%Dta%SpaceDim == 2
Lct%Dct%Dta%V2(1)%Val => ...

A good starting point to look at this is the ESMF module: https://github.com/geoschem/HEMCO/blob/master/src/Core/hcoio_read_esmf_mod.F90

For detailed description of the data structure the standard module provides more insight: https://github.com/geoschem/HEMCO/blob/master/src/Core/hcoio_read_std_mod.F90

The call interfaces / module names of these modules will be unified in HEMCO 3.0, where they implement the same interface and one is chosen at compile time.

Code

This will be implemented inside HEMCO in order not to introduce circular dependencies - it will likely go into HEMCO/src/IO/hcoio_read_cesm_mod.F90 or something like that, replacing the GEOS-Chem serial IO HEMCO/src/IO/hcoio_read_std_mod.F90.