Issuing rollback() due to DESTROY without explicit disconnect() of DBD::mysql::db handle dbname=MITgcm at /usr/local/share/lxr/lib/LXR/Common.pm line 1224.
Last-Modified: Fri, 18 Jun 2026 05:09:14 GMT
Content-Type: text/html; charset=utf-8
MITgcm/MITgcm/verification/global_oce_latlon/README.md
f1b47febb7 Jean*0001 # Global Ocean Simulation at 4 degree Resolution, including Adjoint Set-Up
7fe51dd492 Jean*0002 First configuration to use OpenAD, started on 2005-08-19
0003 by heimbach@mit.edu, utke@mcs.anl.gov, cnh@mit.edu
0004 ***Note*** this experiment was previously named "OpenAD".
00050006 ### Overview:
f1b47febb7 Jean*0007 This experiment is derived from `tutorial_global_oce_latlon` (see also `global_ocean.90x40x15`)
0008 with surface forcing provided by specific pkgs, either
0009 `pkg/exf` or `pkg/ebm`, instead of relying on the main model surface forcing capability.
0010 It contains 3 forward set-up, all using the same executable built from `code`
0011 config but with specific input files from `input/` (primary test) and,
0012 as secondary tests, from `input.yearly/` and `input.ebm/`.
00130014 It provides also adjoint settings for 3 AD compilers, OpenAD, TAF and Tapenade, with primary
7fe51dd492 Jean*0015 test input files in `input_oad/`, `input_ad/` and `input_tap/` respectively, but also
0016 several secondary test setting with each of the AD compilers.
0017f1b47febb7 Jean*0018 ## Part 0, Forward only tests:
00190020 The **primary** forward test, using input files from `input/`,
0021 uses prescribed monthly-mean air-sea surface fluxes from `pkg/exf`.<br>
00220023 The **secondary** test, using input files from `input.yearly/`,
0024 is very similar except for the specification of yearly input fields to`pkg/exf`.<br>
00250026 **Note:**
00270028 1. These 2 set-up have been moved (in PR #830) from `verification/global_with_exf/`
0029 where a "README" still provides some details related to `pkg/exf` specific
0030 features used here.
0031 2. The ability, using `pkg/exf`, to compute surface fluxes from near surface
0032 atmospheric state and downward radiation as shown, e.g., in experiment
0033 `global_ocean.cs32x15` (secondary test `input.seaice` or `input.icedyn` or `input.in_p`)
0034 is not used here (`#undef ALLOW_BULKFORMULAE`).
00350036 The **secondary** test, using input files from `input.ebm/`,
0037 relies on the Energy-Balance Model package (`pkg/ebm`) to compute oceanic surface forcing.<br>
00380039 **Note:**
00400041 This secondary test set-up has been moved (in PR #944) from `verification/global_ocean_ebm/`
0042 and a "README" there still provides some details related to `pkg/ebm` specific
0043 features used here.
00447fe51dd492 Jean*0045 ## Part 1, using OpenAD Adjoint Compiler:
00460047 The built process needed to be modified, and some routines
0048 needed changes. Most changes were commited to default routines,
0049 the remaining changes are kept in `code_oad/` for now.
00500051 ### Instructions:
0052 Configure and compile the code:
f1b47febb7 Jean*00537fe51dd492 Jean*0054 ```
0055 cd build
0056 ../../../tools/genmake2 -mods ../code_oad [-of my_platform_optionFile]
0057 [make Clean]
0058 make adAll
0059 cd ..
0060 ```
00610062 ***Note:*** might want to split the full single step above (make adAll) in
0063 several intermediate steps such as:
f1b47febb7 Jean*00647fe51dd492 Jean*0065 ```
0066 make cb2m
0067 make makefile
0068 make small_f
0069 make allmods
0070 make adAll
0071 ```
f1b47febb7 Jean*0072 where the first step (`cb2m`) invokes a script to convert `COMMON` block headers
0073 (e.g. `FILE.h`) to `MODULE` headers (`FILE_mod.h`) and create new module files
0074 (`FILE_mod.F90`); the second step (`makefile`) re-generates the makefile to take
0075 into account newly created files `FILE_mod.h`, `FILE_mod.F90` ; the third step
0076 (`small_f`) generates `.f` and `.f90` files. The fourth step (`allmods`)
0077 compiles all module files `.f90` ; and the fifth and last step compliles all f90
7fe51dd492 Jean*0078 src files.
00790080 To run primary test:
f1b47febb7 Jean*00817fe51dd492 Jean*0082 ```
0083 cd run
0084 ln -s ../input_oad/* .
15ec4b1e94 Jean*0085 ./prepare_run
7fe51dd492 Jean*0086 ../build/mitgcmuv_ad > output_oadm.txt
0087 cd ..
0088 ```
00890090 There is comparison output in the directory:
0091 `results/output_oadm.txt`
00920093 To run any of secondary `$st` test (`$st` in: `ggl90`, `kpp`):
f1b47febb7 Jean*00947fe51dd492 Jean*0095 ```
0096 cd run
0097 rm *
0098 ln -s ../input_oad.$st/* .
0099 ln -s ../input_oad/* .
0100 ./prepare_run
0101 ../build/mitgcmuv_ad > output_oadm.txt
0102 ```
01030104 There is comparison output in the directory:
0105 `results/output_oadm.$st.txt`
01060107 ## Part 2, using TAF Adjoint Compiler:
0108 similar to above but using set-up specific code from `code_ad/` and input files from `input_ad/`
01090110 ### Instructions:
0111 Configure and compile the code:
f1b47febb7 Jean*01127fe51dd492 Jean*0113 ```
0114 cd build
0115 ../../../tools/genmake2 -mods ../code_ad [-of my_platform_optionFile]
0116 [make Clean]
0117 make depend
0118 make adall
0119 cd ..
0120 ```
01210122 To run primary test:
f1b47febb7 Jean*01237fe51dd492 Jean*0124 ```
0125 cd run
0126 ln -s ../input_ad/* .
15ec4b1e94 Jean*0127 ./prepare_run
7fe51dd492 Jean*0128 ../build/mitgcmuv_ad > output_adm.txt
0129 cd ..
0130 ```
01310132 There is comparison output in the directory:
0133 `results/output_adm.txt`
0134f1b47febb7 Jean*0135 To run any of secondary `$st` test (`$st` in: `ggl90`, `w_exf`, `ebm`):
01367fe51dd492 Jean*0137 ```
0138 cd run
0139 rm *
0140 ln -s ../input_ad.$st/* .
0141 ln -s ../input_ad/* .
0142 ./prepare_run
0143 ../build/mitgcmuv_ad > output_adm.txt
0144 ```
01450146 There is comparison output in the directory:
0147 `results/output_adm.$st.txt`
0148f1b47febb7 Jean*0149 **Note:**
01500151 1. `input_ad.w_exf` set-up has been moved (in PR #830)
0152 from `verification/global_with_exf/input_ad`
0153 2. `input_ad.ebm` set-up has been moved (in PR #944)
0154 from `verification/global_ocean_ebm/input_ad`
7fe51dd492 Jean*01550156 ## Part 3, using Tapenade Adjoint Compiler:
0157 similar to above but using set-up specific code from `code_tap/` and input files from `input_tap/`