-
Notifications
You must be signed in to change notification settings - Fork 26
New IO capabilities via FieldAPI IO #121
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: develop
Are you sure you want to change the base?
Changes from all commits
1522dd7
a5f8798
12f9f89
224903b
064722b
ab7f0f6
20ef684
9eaec81
4f1f7e5
088d7f2
dc95167
dd9ac5b
3fb48c0
c007421
5cbf8f9
6a3dfc3
b7e11c7
214e3b6
0a85172
570a2e0
eff8730
4ccb643
d1ea252
cb4441a
9a47bac
2c1cfaf
a113138
a7fd474
d099df9
33bf481
d6f7445
0a80a13
99329a2
5b51681
16eb274
0034e29
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -35,7 +35,10 @@ In order to do so, please create a pull request with your contribution and sign | |
| also is slightly cleaner than the original version. | ||
| - **dwarf-cloudsc-fortran-field**: A fortran version of CLOUDSC that uses Field API | ||
| for the data structures. The intent of this version is to show how | ||
| Field API is used in newer versions of the IFS. | ||
| Field API is used in newer versions of the IFS. Optionally, this version also tests | ||
| Field API IO. To test IO write/read feature, add --with-field-api-io at the build stage. | ||
| Note that this enables MPI by default. The IO feature is embedded in the | ||
| cloudsc-fortran Field API test. | ||
|
Comment on lines
+38
to
+41
Collaborator
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. This probably needs a small update later. |
||
| - **dwarf-cloudsc-c**: Standalone C version of the kernel that has | ||
| been generated by ECMWF tools. This relies exclusively on the Serialbox | ||
| validation mechanism. | ||
|
|
||
| Original file line number | Diff line number | Diff line change | ||
|---|---|---|---|---|
|
|
@@ -10,6 +10,7 @@ cmake : > | |||
| BUILD_eckit=OFF | ||||
| BUILD_fckit=OFF | ||||
| BUILD_atlas=OFF | ||||
| BUILD_fiat=OFF | ||||
| BUILD_field_api=OFF | ||||
| BUILD_loki=OFF | ||||
| ENABLE_MPI=OFF | ||||
|
|
@@ -19,7 +20,7 @@ projects : | |||
|
|
||||
| - ecbuild : | ||||
| git : https://github.com/ecmwf/ecbuild | ||||
| version : 3.11.0 | ||||
| version : 3.12.0 | ||||
| bundle : false | ||||
|
|
||||
| - serialbox : | ||||
|
|
@@ -36,14 +37,14 @@ projects : | |||
|
|
||||
| - loki : | ||||
| git : https://github.com/ecmwf-ifs/loki | ||||
| version : 0.3.1 | ||||
| version : 0.3.3 | ||||
| require : ecbuild | ||||
| cmake : > | ||||
| LOKI_ENABLE_TESTS=OFF | ||||
|
|
||||
| - eckit : | ||||
| git : https://github.com/ecmwf/eckit | ||||
| version : 1.30.0 | ||||
| version : 1.32.2 | ||||
| require : ecbuild | ||||
| cmake : > | ||||
| ECKIT_ENABLE_TESTS=OFF | ||||
|
|
@@ -54,24 +55,33 @@ projects : | |||
| ECKIT_ENABLE_ECKIT_SQL=OFF | ||||
| ECKIT_ENABLE_WARNINGS=OFF | ||||
|
|
||||
| - field_api : | ||||
| git : https://github.com/ecmwf-ifs/field_api | ||||
| version : develop-ecmwf | ||||
| - fiat : | ||||
|
piotrows marked this conversation as resolved.
|
||||
| git : https://github.com/ecmwf-ifs/fiat | ||||
| version : 1.6.1 | ||||
| require : ecbuild | ||||
| optional: true | ||||
| cmake : > | ||||
| UTIL_MODULE_PATH=${CMAKE_SOURCE_DIR}/cloudsc-dwarf/src/common/module | ||||
|
|
||||
| FIAT_ENABLE_TESTS=OFF | ||||
| - fckit : | ||||
| git : https://github.com/ecmwf/fckit | ||||
| version : 0.14.0 | ||||
| require : ecbuild eckit | ||||
| cmake : > | ||||
| FCKIT_ENABLE_TESTS=OFF | ||||
| FCKIT_ENABLE_FCKIT_VENV=ON | ||||
|
|
||||
| - field_api : | ||||
| git : https://github.com/ecmwf-ifs/field_api.git | ||||
| version : develop-ecmwf | ||||
| require : ecbuild | ||||
| cmake : > | ||||
| UTIL_MODULE_PATH=${CMAKE_SOURCE_DIR}/cloudsc-dwarf/src/common/module | ||||
|
Collaborator
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I don't think we need this anymore if we build fiat
Suggested change
Contributor
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. We are not necessarily building Fiat, so I would propose to leave it. |
||||
| FIELD_API_ENABLE_TESTS=OFF | ||||
|
|
||||
| - atlas : | ||||
| git : https://github.com/ecmwf/atlas | ||||
| version : 0.43.1 | ||||
| version : 0.44.0 | ||||
| optional: true | ||||
| require : ecbuild eckit fckit | ||||
| cmake : > | ||||
|
|
@@ -100,6 +110,18 @@ options : | |||
| help : Enable Field API variants [ON|OFF] | ||||
| cmake : BUILD_field_api={{value}} | ||||
|
piotrows marked this conversation as resolved.
|
||||
|
|
||||
| - with-field-api-io-serial : | ||||
| help : Enable Field API IO (serial only) [ON|OFF] | ||||
| cmake : > | ||||
| FIELD_API_ENABLE_IO_SERIAL={{value}} | ||||
| ENABLE_FIELD_API_ENABLE_IO={{value}} | ||||
|
|
||||
| - with-field-api-io-parallel : | ||||
| help : Enable Field API IO (requires MPI) [ON|OFF] | ||||
| cmake : > | ||||
| FIELD_API_ENABLE_IO_PARALLEL={{value}} | ||||
| ENABLE_FIELD_API_ENABLE_IO={{value}} | ||||
|
|
||||
| - without-mapped-fields : | ||||
| help : Disables automatic registering of Field API fields in ACC map | ||||
| cmake : ENABLE_FIELD_API_DISABLE_MAPPED_MEMORY=ON | ||||
|
|
||||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -22,7 +22,6 @@ MODULE CLOUDSC_DRIVER_FIELD_MOD | |
| SUBROUTINE CLOUDSC_DRIVER_FIELD( & | ||
| & NUMOMP, NPROMA, NLEV, NGPTOT, NGPTOTG, KFLDX, PTSPHY, PAUX, FLUX, & | ||
| & TENDENCY_TMP, TENDENCY_LOC, YDOMCST, YDOETHF, YDECLDP) | ||
| ! Driver routine that invokes the optimized CLAW-based CLOUDSC GPU kernel | ||
|
|
||
| USE YOECLDP , ONLY : TECLDP | ||
| USE YOMCST , ONLY : TOMCST | ||
|
|
@@ -50,6 +49,13 @@ SUBROUTINE CLOUDSC_DRIVER_FIELD( & | |
| write(0,1003) NUMPROC,NUMOMP,NGPTOTG,NPROMA,NGPBLKS | ||
| end if | ||
|
|
||
| #ifdef FIELD_API_IO | ||
|
Collaborator
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. To me, the option to write the input state to file would be a run-time option, and not a compile-time option. How about we rename Similar we could then write the output by implementing the same boilerplate on
Contributor
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Could be done but what we are doing at the moment is testing (write+read, not a write alone).
Contributor
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Well, this is an option, but then it looses the virtue of a top-level, clear example that teaches the FieldAPI IO. So it really depends if we want expand CLOUDSC capabilities or we would rather prefer a FA IO tutorial, or perhaps both.
Collaborator
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
I disagree on this one - having a pure procedural test routine does not make a good "tutorial". Instead, the derived types
Collaborator
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. How about splitting the two into a write and read routine and calling them in this order from here? For a full-on switch to HDF5 as inputs, we would need to replicate the inputs in a third format commited to the repository. I think that is a good idea but could also be tackled in a follow-on PR maybe? |
||
| CALL WRITE_FIELD_HDF5(NUMOMP, NPROMA, NLEV, NGPTOT, NGPTOTG, KFLDX, PTSPHY, PAUX, & | ||
| & TENDENCY_TMP, TENDENCY_LOC) | ||
| CALL READ_FIELD_HDF5(NUMOMP, NPROMA, NLEV, NGPTOT, NGPTOTG, KFLDX, PTSPHY, PAUX, & | ||
| & TENDENCY_TMP, TENDENCY_LOC) | ||
| #endif | ||
|
|
||
| ! Global timer for the parallel region | ||
| CALL TIMER%START(NUMOMP) | ||
|
|
||
|
|
@@ -115,6 +121,118 @@ SUBROUTINE CLOUDSC_DRIVER_FIELD( & | |
| CALL TIMER%PRINT_PERFORMANCE(NPROMA, NGPBLKS, NGPTOT) | ||
|
|
||
| END SUBROUTINE CLOUDSC_DRIVER_FIELD | ||
| #ifdef FIELD_API_IO | ||
| SUBROUTINE WRITE_FIELD_HDF5( & | ||
| & NUMOMP, NPROMA, NLEV, NGPTOT, NGPTOTG, KFLDX, PTSPHY, PAUX, & | ||
| & TENDENCY_TMP, TENDENCY_LOC) | ||
|
|
||
| USE FIELD_HDF5_MODULE, ONLY: WRITE_HDF5_PERRANK_DATA | ||
| INTEGER(KIND=JPIM) ,INTENT(IN) :: NUMOMP, NPROMA, NLEV, NGPTOT, NGPTOTG | ||
| INTEGER(KIND=JPIM) ,INTENT(IN) :: KFLDX | ||
| REAL(KIND=JPRB) ,INTENT(IN) :: PTSPHY ! PHYSICS TIMESTEP | ||
| TYPE(CLOUDSC_AUX_TYPE) ,INTENT(IN) :: PAUX | ||
| TYPE(CLOUDSC_STATE_TYPE) ,INTENT(IN) :: TENDENCY_TMP | ||
| TYPE(CLOUDSC_STATE_TYPE) ,INTENT(IN) :: TENDENCY_LOC | ||
|
|
||
| CALL WRITE_HDF5_PERRANK_DATA(PAUX%F_PT, "cloudsc_data", "PT", HDFEXISTS=.TRUE.) | ||
| CALL WRITE_HDF5_PERRANK_DATA(PAUX%F_PQ, "cloudsc_data", "PQ", HDFEXISTS=.TRUE.) | ||
|
|
||
| CALL WRITE_HDF5_PERRANK_DATA(TENDENCY_TMP%F_T, "cloudsc_data", "TEND_TMP_T", HDFEXISTS=.TRUE.) | ||
| CALL WRITE_HDF5_PERRANK_DATA(TENDENCY_TMP%F_Q, "cloudsc_data", "TEND_TMP_Q", HDFEXISTS=.TRUE.) | ||
| CALL WRITE_HDF5_PERRANK_DATA(TENDENCY_TMP%F_A, "cloudsc_data", "TEND_TMP_A", HDFEXISTS=.TRUE.) | ||
| CALL WRITE_HDF5_PERRANK_DATA(TENDENCY_TMP%F_CLD, "cloudsc_data", "TEND_TMP_CLD", HDFEXISTS=.TRUE.) | ||
|
|
||
| CALL WRITE_HDF5_PERRANK_DATA(TENDENCY_LOC%F_T, "cloudsc_data", "TEND_LOC_T", HDFEXISTS=.TRUE.) | ||
| CALL WRITE_HDF5_PERRANK_DATA(TENDENCY_LOC%F_Q, "cloudsc_data", "TEND_LOC_Q", HDFEXISTS=.TRUE.) | ||
| CALL WRITE_HDF5_PERRANK_DATA(TENDENCY_LOC%F_A, "cloudsc_data", "TEND_LOC_A", HDFEXISTS=.TRUE.) | ||
| CALL WRITE_HDF5_PERRANK_DATA(TENDENCY_LOC%F_CLD, "cloudsc_data", "TEND_LOC_CLD", HDFEXISTS=.TRUE.) | ||
|
|
||
| CALL WRITE_HDF5_PERRANK_DATA(PAUX%F_PVFA, "cloudsc_data", "PVFA", HDFEXISTS=.TRUE.) | ||
| CALL WRITE_HDF5_PERRANK_DATA(PAUX%F_PVFL, "cloudsc_data", "PVFL", HDFEXISTS=.TRUE.) | ||
| CALL WRITE_HDF5_PERRANK_DATA(PAUX%F_PVFI, "cloudsc_data", "PVFI", HDFEXISTS=.TRUE.) | ||
| CALL WRITE_HDF5_PERRANK_DATA(PAUX%F_PDYNA, "cloudsc_data", "PDYNA", HDFEXISTS=.TRUE.) | ||
| CALL WRITE_HDF5_PERRANK_DATA(PAUX%F_PDYNL, "cloudsc_data", "PDYNL", HDFEXISTS=.TRUE.) | ||
| CALL WRITE_HDF5_PERRANK_DATA(PAUX%F_PDYNI, "cloudsc_data", "PDYNI", HDFEXISTS=.TRUE.) | ||
| CALL WRITE_HDF5_PERRANK_DATA(PAUX%F_PHRSW, "cloudsc_data", "PHRSW", HDFEXISTS=.TRUE.) | ||
| CALL WRITE_HDF5_PERRANK_DATA(PAUX%F_PHRLW, "cloudsc_data", "PHRLW", HDFEXISTS=.TRUE.) | ||
| CALL WRITE_HDF5_PERRANK_DATA(PAUX%F_PVERVEL, "cloudsc_data", "PVERVEL", HDFEXISTS=.TRUE.) | ||
| CALL WRITE_HDF5_PERRANK_DATA(PAUX%F_PAP, "cloudsc_data", "PAP", HDFEXISTS=.TRUE.) | ||
| CALL WRITE_HDF5_PERRANK_DATA(PAUX%F_PAPH, "cloudsc_data", "PAPH", HDFEXISTS=.TRUE.) | ||
| CALL WRITE_HDF5_PERRANK_DATA(PAUX%F_PLSM, "cloudsc_data", "PLSM" , HDFEXISTS=.TRUE.) | ||
| CALL WRITE_HDF5_PERRANK_DATA(PAUX%F_LDCUM, "cloudsc_data", "LDCUM", HDFEXISTS=.TRUE.) | ||
| CALL WRITE_HDF5_PERRANK_DATA(PAUX%F_KTYPE, "cloudsc_data", "KTYPE", HDFEXISTS=.TRUE.) | ||
| CALL WRITE_HDF5_PERRANK_DATA(PAUX%F_PLU, "cloudsc_data", "PLU", HDFEXISTS=.TRUE.) | ||
| CALL WRITE_HDF5_PERRANK_DATA(PAUX%F_PLUDE, "cloudsc_data", "PLUDE", HDFEXISTS=.TRUE.) | ||
| CALL WRITE_HDF5_PERRANK_DATA(PAUX%F_PSNDE, "cloudsc_data", "PSNDE", HDFEXISTS=.TRUE.) | ||
| CALL WRITE_HDF5_PERRANK_DATA(PAUX%F_PMFU, "cloudsc_data", "PMFU", HDFEXISTS=.TRUE.) | ||
| CALL WRITE_HDF5_PERRANK_DATA(PAUX%F_PMFD, "cloudsc_data", "PMFD", HDFEXISTS=.TRUE.) | ||
| CALL WRITE_HDF5_PERRANK_DATA(PAUX%F_PA, "cloudsc_data", "PA", HDFEXISTS=.TRUE.) | ||
| CALL WRITE_HDF5_PERRANK_DATA(PAUX%F_PCLV, "cloudsc_data", "PCLV", HDFEXISTS=.TRUE.) | ||
| CALL WRITE_HDF5_PERRANK_DATA(PAUX%F_PSUPSAT, "cloudsc_data", "PSUPSAT", HDFEXISTS=.TRUE.) | ||
| CALL WRITE_HDF5_PERRANK_DATA(PAUX%F_PLCRIT_AER, "cloudsc_data", "PLCRIT_AER", HDFEXISTS=.TRUE.) | ||
| CALL WRITE_HDF5_PERRANK_DATA(PAUX%F_PICRIT_AER, "cloudsc_data", "PICRIT_AER", HDFEXISTS=.TRUE.) | ||
| CALL WRITE_HDF5_PERRANK_DATA(PAUX%F_PRE_ICE, "cloudsc_data", "PRE_ICE_AER", HDFEXISTS=.TRUE.) | ||
| CALL WRITE_HDF5_PERRANK_DATA(PAUX%F_PCCN, "cloudsc_data", "PCCN", HDFEXISTS=.TRUE.) | ||
| CALL WRITE_HDF5_PERRANK_DATA(PAUX%F_PNICE, "cloudsc_data", "PNICE", HDFEXISTS=.TRUE.) | ||
|
|
||
| END SUBROUTINE WRITE_FIELD_HDF5 | ||
|
|
||
| SUBROUTINE READ_FIELD_HDF5( & | ||
| & NUMOMP, NPROMA, NLEV, NGPTOT, NGPTOTG, KFLDX, PTSPHY, PAUX, & | ||
| & TENDENCY_TMP, TENDENCY_LOC) | ||
|
|
||
| USE FIELD_HDF5_MODULE, ONLY: READ_HDF5_PERRANK_DATA | ||
| INTEGER(KIND=JPIM) :: NUMOMP, NPROMA, NLEV, NGPTOT, NGPTOTG | ||
| INTEGER(KIND=JPIM) :: KFLDX | ||
| REAL(KIND=JPRB) :: PTSPHY ! PHYSICS TIMESTEP | ||
| TYPE(CLOUDSC_AUX_TYPE) :: PAUX | ||
| TYPE(CLOUDSC_STATE_TYPE) :: TENDENCY_TMP | ||
| TYPE(CLOUDSC_STATE_TYPE) :: TENDENCY_LOC | ||
|
|
||
| CALL READ_HDF5_PERRANK_DATA(PAUX%F_PT, "cloudsc_data", "PT", HDFEXISTS=.TRUE.) | ||
| CALL READ_HDF5_PERRANK_DATA(PAUX%F_PQ, "cloudsc_data", "PQ", HDFEXISTS=.TRUE.) | ||
|
|
||
| CALL READ_HDF5_PERRANK_DATA(TENDENCY_TMP%F_T, "cloudsc_data", "TEND_TMP_T", HDFEXISTS=.TRUE.) | ||
| CALL READ_HDF5_PERRANK_DATA(TENDENCY_TMP%F_Q, "cloudsc_data", "TEND_TMP_Q", HDFEXISTS=.TRUE.) | ||
| CALL READ_HDF5_PERRANK_DATA(TENDENCY_TMP%F_A, "cloudsc_data", "TEND_TMP_A", HDFEXISTS=.TRUE.) | ||
| CALL READ_HDF5_PERRANK_DATA(TENDENCY_TMP%F_CLD, "cloudsc_data", "TEND_TMP_CLD", HDFEXISTS=.TRUE.) | ||
|
|
||
| CALL READ_HDF5_PERRANK_DATA(TENDENCY_LOC%F_T, "cloudsc_data", "TEND_LOC_T", HDFEXISTS=.TRUE.) | ||
| CALL READ_HDF5_PERRANK_DATA(TENDENCY_LOC%F_Q, "cloudsc_data", "TEND_LOC_Q", HDFEXISTS=.TRUE.) | ||
| CALL READ_HDF5_PERRANK_DATA(TENDENCY_LOC%F_A, "cloudsc_data", "TEND_LOC_A", HDFEXISTS=.TRUE.) | ||
| CALL READ_HDF5_PERRANK_DATA(TENDENCY_LOC%F_CLD, "cloudsc_data", "TEND_LOC_CLD", HDFEXISTS=.TRUE.) | ||
|
|
||
| CALL READ_HDF5_PERRANK_DATA(PAUX%F_PVFA, "cloudsc_data", "PVFA", HDFEXISTS=.TRUE.) | ||
| CALL READ_HDF5_PERRANK_DATA(PAUX%F_PVFL, "cloudsc_data", "PVFL", HDFEXISTS=.TRUE.) | ||
| CALL READ_HDF5_PERRANK_DATA(PAUX%F_PVFI, "cloudsc_data", "PVFI", HDFEXISTS=.TRUE.) | ||
| CALL READ_HDF5_PERRANK_DATA(PAUX%F_PDYNA, "cloudsc_data", "PDYNA", HDFEXISTS=.TRUE.) | ||
| CALL READ_HDF5_PERRANK_DATA(PAUX%F_PDYNL, "cloudsc_data", "PDYNL", HDFEXISTS=.TRUE.) | ||
| CALL READ_HDF5_PERRANK_DATA(PAUX%F_PDYNI, "cloudsc_data", "PDYNI", HDFEXISTS=.TRUE.) | ||
| CALL READ_HDF5_PERRANK_DATA(PAUX%F_PHRSW, "cloudsc_data", "PHRSW", HDFEXISTS=.TRUE.) | ||
| CALL READ_HDF5_PERRANK_DATA(PAUX%F_PHRLW, "cloudsc_data", "PHRLW", HDFEXISTS=.TRUE.) | ||
| CALL READ_HDF5_PERRANK_DATA(PAUX%F_PVERVEL, "cloudsc_data", "PVERVEL", HDFEXISTS=.TRUE.) | ||
| CALL READ_HDF5_PERRANK_DATA(PAUX%F_PAP, "cloudsc_data", "PAP", HDFEXISTS=.TRUE.) | ||
| CALL READ_HDF5_PERRANK_DATA(PAUX%F_PAPH, "cloudsc_data", "PAPH", HDFEXISTS=.TRUE.) | ||
| CALL READ_HDF5_PERRANK_DATA(PAUX%F_PLSM, "cloudsc_data", "PLSM" , HDFEXISTS=.TRUE.) | ||
| CALL READ_HDF5_PERRANK_DATA(PAUX%F_LDCUM, "cloudsc_data", "LDCUM", HDFEXISTS=.TRUE.) | ||
| CALL READ_HDF5_PERRANK_DATA(PAUX%F_KTYPE, "cloudsc_data", "KTYPE", HDFEXISTS=.TRUE.) | ||
| CALL READ_HDF5_PERRANK_DATA(PAUX%F_PLU, "cloudsc_data", "PLU", HDFEXISTS=.TRUE.) | ||
| CALL READ_HDF5_PERRANK_DATA(PAUX%F_PLUDE, "cloudsc_data", "PLUDE", HDFEXISTS=.TRUE.) | ||
| CALL READ_HDF5_PERRANK_DATA(PAUX%F_PSNDE, "cloudsc_data", "PSNDE", HDFEXISTS=.TRUE.) | ||
| CALL READ_HDF5_PERRANK_DATA(PAUX%F_PMFU, "cloudsc_data", "PMFU", HDFEXISTS=.TRUE.) | ||
| CALL READ_HDF5_PERRANK_DATA(PAUX%F_PMFD, "cloudsc_data", "PMFD", HDFEXISTS=.TRUE.) | ||
| CALL READ_HDF5_PERRANK_DATA(PAUX%F_PA, "cloudsc_data", "PA", HDFEXISTS=.TRUE.) | ||
| CALL READ_HDF5_PERRANK_DATA(PAUX%F_PCLV, "cloudsc_data", "PCLV", HDFEXISTS=.TRUE.) | ||
| CALL READ_HDF5_PERRANK_DATA(PAUX%F_PSUPSAT, "cloudsc_data", "PSUPSAT", HDFEXISTS=.TRUE.) | ||
| CALL READ_HDF5_PERRANK_DATA(PAUX%F_PLCRIT_AER, "cloudsc_data", "PLCRIT_AER", HDFEXISTS=.TRUE.) | ||
| CALL READ_HDF5_PERRANK_DATA(PAUX%F_PICRIT_AER, "cloudsc_data", "PICRIT_AER", HDFEXISTS=.TRUE.) | ||
| CALL READ_HDF5_PERRANK_DATA(PAUX%F_PRE_ICE, "cloudsc_data", "PRE_ICE_AER", HDFEXISTS=.TRUE.) | ||
| CALL READ_HDF5_PERRANK_DATA(PAUX%F_PCCN , "cloudsc_data", "PCCN", HDFEXISTS=.TRUE.) | ||
| CALL READ_HDF5_PERRANK_DATA(PAUX%F_PNICE, "cloudsc_data", "PNICE", HDFEXISTS=.TRUE.) | ||
|
|
||
| END SUBROUTINE READ_FIELD_HDF5 | ||
| #endif | ||
|
|
||
|
|
||
| END MODULE CLOUDSC_DRIVER_FIELD_MOD | ||
|
|
||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Still curious what makes this necessary?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
As stated earlier, dependence of hdf5.h on mpi.h. I am not sure if CXX will be needed here, but it is hard to exclude at the moment.