-
Notifications
You must be signed in to change notification settings - Fork 8
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge branch 'release/8.8.0' into main
- Loading branch information
Showing
16 changed files
with
1,239 additions
and
40 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,76 @@ | ||
# GNU Makefile template for user ESMF application | ||
|
||
################################################################################ | ||
################################################################################ | ||
## This Makefile must be able to find the "esmf.mk" Makefile fragment in the ## | ||
## 'include' line below. Following the ESMF User's Guide, a complete ESMF ## | ||
## installation should ensure that a single environment variable "ESMFMKFILE" ## | ||
## is made available on the system. This variable should point to the ## | ||
## "esmf.mk" file. ## | ||
## ## | ||
## This example Makefile uses the "ESMFMKFILE" environment variable. ## | ||
## ## | ||
## If you notice that this Makefile cannot find variable ESMFMKFILE then ## | ||
## please contact the person responsible for the ESMF installation on your ## | ||
## system. ## | ||
## As a work-around you can simply hardcode the path to "esmf.mk" in the ## | ||
## include line below. However, doing so will render this Makefile a lot less ## | ||
## flexible and non-portable. ## | ||
################################################################################ | ||
|
||
ifneq ($(origin ESMFMKFILE), environment) | ||
$(error Environment variable ESMFMKFILE was not set.) | ||
endif | ||
|
||
include $(ESMFMKFILE) | ||
|
||
# strip quotes around the ESMF_INTERNAL_MPIRUN value | ||
ESMF_INTERNAL_MPIRUN := $(shell echo $(ESMF_INTERNAL_MPIRUN)) | ||
|
||
################################################################################ | ||
################################################################################ | ||
|
||
.SUFFIXES: .f90 .F90 .c .C | ||
|
||
%.o : %.f90 | ||
$(ESMF_F90COMPILER) -c $(ESMF_F90COMPILEOPTS) $(ESMF_F90COMPILEPATHS) $(ESMF_F90COMPILEFREENOCPP) $< | ||
|
||
%.o : %.F90 | ||
$(ESMF_F90COMPILER) -c $(ESMF_F90COMPILEOPTS) $(ESMF_F90COMPILEPATHS) $(ESMF_F90COMPILEFREECPP) $(ESMF_F90COMPILECPPFLAGS) $< | ||
|
||
%.o : %.c | ||
$(ESMF_CXXCOMPILER) -c $(ESMF_CXXCOMPILEOPTS) $(ESMF_CXXCOMPILEPATHSLOCAL) $(ESMF_CXXCOMPILEPATHS) $(ESMF_CXXCOMPILECPPFLAGS) $< | ||
|
||
%.o : %.C | ||
$(ESMF_CXXCOMPILER) -c $(ESMF_CXXCOMPILEOPTS) $(ESMF_CXXCOMPILEPATHSLOCAL) $(ESMF_CXXCOMPILEPATHS) $(ESMF_CXXCOMPILECPPFLAGS) $< | ||
|
||
|
||
# ----------------------------------------------------------------------------- | ||
esmApp: esmApp.o esm.o atm.o ocn.o | ||
$(ESMF_F90LINKER) $(ESMF_F90LINKOPTS) $(ESMF_F90LINKPATHS) $(ESMF_F90LINKRPATHS) -o $@ $^ $(ESMF_F90ESMFLINKLIBS) | ||
|
||
# module dependencies: | ||
esmApp.o: esm.o | ||
esm.o: atm.o ocn.o | ||
|
||
# ----------------------------------------------------------------------------- | ||
# ----------------------------------------------------------------------------- | ||
.PHONY: dust clean distclean info edit | ||
dust: | ||
rm -f PET*.ESMF_LogFile *.nc *.stdout | ||
clean: | ||
rm -f esmApp *.o *.mod | ||
distclean: dust clean | ||
|
||
info: | ||
@echo ================================================================== | ||
@echo ESMFMKFILE=$(ESMFMKFILE) | ||
@echo ================================================================== | ||
@cat $(ESMFMKFILE) | ||
@echo ================================================================== | ||
|
||
edit: | ||
nedit esmApp.F90 esm.F90 atm.F90 ocn.F90 & | ||
|
||
run: | ||
$(ESMF_INTERNAL_MPIRUN) -np 4 ./esmApp |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,48 @@ | ||
README for ATM-OCN with field mirroring NUOPC prototype | ||
------------------------------------------------------- | ||
|
||
A simple two model system, where one Model component requests field mirroring | ||
with Namesapces on one of its States. | ||
|
||
Description: | ||
|
||
A two-way coupled system with a single driver (ESM) and two model components | ||
(ATM, OCN). | ||
|
||
The ESM driver uses explicitly constructed petLists when adding the two | ||
model components. | ||
|
||
The ESM driver component uses the default run sequence to implement coupling | ||
between ATM and OCN components. | ||
|
||
The connector components are explicitly added by the driver. | ||
|
||
The OCN component use a simple two-phase initialization, consisting of | ||
advertise and realize. | ||
|
||
The ATM component uses a three-phase initialization, consisting of | ||
advertise/request-mirror with FieldTransferPolicy="transferAllWithNamespace", | ||
modify mirror-advertised fields, realize. | ||
|
||
|
||
Build: | ||
- Set environment variable ESMFMKFILE to point to the esmf.mk of your ESMF | ||
installation. | ||
- make | ||
|
||
Execution: | ||
- Optionally set environment variable ESMF_RUNTIME_COMPLIANCECHECK to ON. | ||
- mpirun -np X ./esmApp (where X is the total number of PETs, typically 4) | ||
|
||
Output: | ||
- PET*.Log files containing compliance checker output if turned on. | ||
- The prototype outputs time stepping information to stdout. | ||
|
||
Code structure: | ||
- Makefile - Makefile that is based on the standard esmf.mk mechanism. | ||
- atm.F90 - The ATM component, specializing generic NUOPC_Model. | ||
- ocn.F90 - The OCN component, specializing generic NUOPC_Model. | ||
- esm.F90 - The Earth System Model (ESM) component, specializing generic | ||
NUOPC_Driver. Define partial petLists for ATM and OCN. | ||
- esmApp.F90 - ESM application. | ||
|
Oops, something went wrong.