Earth System Modeling Framework (ESMF) and National Unified Operational Prediction Capability (NUOPC) caps for SCHISM
| Platform | Compiler | ESMF | MPI | Status | Date |
|---|---|---|---|---|---|
| macOS 15 (arm64) | gfortran 14.3.0 | 8.9.0 | MPICH 4.3.2 | ✅ Passing | Nov 2025 |
| Linux (x86_64) | gfortran 11+ | 8.7+ | OpenMPI/MPICH | ✅ Passing | - |
Key Requirements:
- ESMF must use real MPI (
mpi_mpichormpi_openmpi), notmpiuniornompi - SCHISM libraries:
libcore.a,libhydro.a,libturbulence.a,libyaml.a,libparmetis.a,libmetis.a - MPI libraries must match between ESMF and SCHISM
| Document | Purpose |
|---|---|
| QUICKSTART.md | Detailed walkthrough with platform-specific instructions |
| BUILD_TROUBLESHOOTING.md | Solutions to all 9 known build issues |
| cmake-architecture.md | CMake build system internals and patterns |
| running-examples.md | How to run executables and examples |
| test-cmake-instructions.sh | Automated environment validation |
| BuildingDocs.md | How to build HTML documentation |
Build HTML Docs: cmake .. -DBUILD_DOCS=ON && make docs (requires Python, MkDocs)
Get SCHISM-ESMF building in under 30 minutes. Full details in QUICKSTART.md.
-
ESMF: You need to have ESMF installed and an environment variable
ESMFMKFILEdefined (viasetenvorexport) that points to your ESMF installation, for exampleon femto: setenv ESMFMKFILE /sciclone/home10/yinglong/esmf_femto/lib/libO/Linux.intel.64.openmpi.default/esmf.mk setenv LD_LIBRARY_PATH ${LD_LIBRARY_PATH}:/sciclone/home10/yinglong/esmf_femto/lib/libO/Linux.intel.64.openmpi.default/
on WW: setenv ESMFMKFILE /sciclone/home10/yinglong/esmf_WW/lib/libO/Linux.intel.64.mvapich2.default/esmf.mk setenv LD_LIBRARY_PATH ${LD_LIBRARY_PATH}:/sciclone/home10/yinglong/esmf_WW/lib/libO/Linux.intel.64.mvapich2.default
on James: setenv ESMFMKFILE /ches/home00/yinglong/esmf_James/lib/libO/Linux.intel.64.openmpi.default/esmf.mk setenv LD_LIBRARY_PATH ${LD_LIBRARY_PATH}:/ches/home00/yinglong/esmf_James/lib/libO/Linux.intel.64.openmpi.default
on Cyclops: setenv ESMFMKFILE /sciclone/home10/yinglong/esmf_cyclops/lib/libO/Linux.intel.64.mvapich2.default/esmf.mk setenv LD_LIBRARY_PATH ${LD_LIBRARY_PATH}:/sciclone/home10/yinglong/esmf_cyclops/lib/libO/Linux.intel.64.mvapich2.default
-
SCHISM: You need to have SCHISM built with
cmakeand an environment variableSCHISM_BUILD_DIRdefined that points to your SCHISM build directory containinglib/libhydro.a, e.g.on femto: setenv SCHISM_BUILD_DIR /sciclone/home10/yinglong/git/schism/build.femto
on WW: setenv SCHISM_BUILD_DIR /sciclone/home10/yinglong/git/schism/build.whirlwind
on James: setenv SCHISM_BUILD_DIR /ches/home00/yinglong/git/schism/build_james
on Cyclops: setenv SCHISM_BUILD_DIR /sciclone/home10/yinglong/git/schism/build.cyclops
-
Optionally, you need PDAF:
on WW: setenv PDAF_LIB_DIR /sciclone/home10/yinglong/PDAF-D_V1.14/lib/Whirlwind
on Cyclops: setenv PDAF_LIB_DIR /sciclone/home10/yinglong/PDAF-D_V1.14/lib/Cyclops
make distclean [make version older than v3.82 will spit out an error on undef cmd]
make all
This will produce (1) the libesmf_schism.a libschism_nuopc.a library, which can be linked in
other ESMF applications that want to include SCHISM as a component. This is
the primary application.
#Also (2) schism_esmf_test and (3) concurrent_esmf_test executables are produced
#that can be executed from any directory that contains a schism setup. Results
#should exactly match those produced from a pschism uncoupled executable.
Please report bugs to [email protected]. You are very welcome to contribute to improving this cap. Fork on github, make changes, and file a pull request.