Skip to content
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

Adding area correction based on 'epsilon bubble' for RRM (redo PR1022) #1581

Merged
merged 4 commits into from
Jul 2, 2017

Conversation

oksanaguba
Copy link
Contributor

@oksanaguba oksanaguba commented Jun 13, 2017

Numerical area of a sphere (area that is based on sum of integration weights) and its geometric area do not coincide in homme. Previously, in homme 3D code 'alpha' correction was used to make two quantities to match. In 'alpha correction', global difference of numerical and geometric areas was spread among all DOFs as a multiplier. Now for RRM meshes in homme (or more generally with option cubed_sphere_map=2) 'epsilon bubble' correction is introduced instead. The 'bubble' correction fixes the difference between geometric and numerical areas for individual elements adjusting only metric terms for inner (not on elements' edges) DOFs of the element. Uniform meshes (with cubed_sphere_map=0) still use 'alpha' correction.

This new map changes (slightly) the area assocated with each atmosphere column, but it doesn't change the position. Thus it will impact area based mapping utilities, meaning any conservative (but not bilinear) maps need to be updated, as well as files generated from conservative mapping files, which includes the domain files. Changes to the domain file will result in slight changes to the land/ocean mask, which requires a new land IC file as well.

modified:   ../../../../cime/config/acme/config_grids.xml
modified:   ../../../cam/bld/namelist_files/namelist_defaults_cam.xml
modified:   cube_mod.F90
modified:   prim_driver_mod.F90
modified:   ../sweqx/init_mod.F90

[Non-BFB] - Non Bit-For-Bit

Results of homme tests:

Test project /ascldap/users/onguba/runhomme/bld-rrm-remove-double/test_execs
Start 1: verifyBaselineResults
1/12 Test #1: verifyBaselineResults ............ Passed 0.51 sec
Start 2: swtc1
2/12 Test #2: swtc1 ............................ Passed 42.72 sec
Start 3: swtc2
3/12 Test #3: swtc2 ............................***Failed 16.04 sec
Submitting 1 jobs
Running test swtc2-run ... /ascldap/users/onguba/runhomme/bld-rrm-remove-double/tests/swtc2/swtc2-run.sh > swtc2-run.out 2> swtc2-run.err
test swtc2-run was run successfully
Test name = swtc2
Examining cprnc reference comparison output files
Test swtc2: no netcdf CHECKREF output files, skipping CHECKREF test.
############################################################################
The diff using CPRNC has passed
############################################################################
Examining cprnc baseline comparison output files
file = swtc21.nc
The files are different: DIFF_RESULT=DIFFERENT
############################################################################
CPRNC returned the following RMS differences
RMS zeta 2.5117E-18 NORMALIZED 3.2604E-13
RMS geop 9.7924E-12 NORMALIZED 4.7845E-15
RMS zeta 9.5492E-18 NORMALIZED 1.2396E-12
############################################################################

  Start  4: swtc5

4/12 Test #4: swtc5 ............................ Passed 72.32 sec
Start 5: swtc6
5/12 Test #5: swtc6 ............................***Failed 9.47 sec
Submitting 1 jobs
Running test swtc6-run ... /ascldap/users/onguba/runhomme/bld-rrm-remove-double/tests/swtc6/swtc6-run.sh > swtc6-run.out 2> swtc6-run.err
test swtc6-run was run successfully
Test name = swtc6
Examining cprnc reference comparison output files
file = exodus-swtc61.nc
The files are different: DIFF_RESULT=DIFFERENT
Checking RMS differences with tol = 1E-14
CPRNC returned the following RMS differences
RMS geop 1.8539E-12 NORMALIZED 2.0247E-16
RMS u 1.9029E-14 NORMALIZED 5.9105E-16
RMS v 2.6356E-14 NORMALIZED 1.2926E-15
RMS geop 4.6736E-12 NORMALIZED 5.1047E-16
RMS u 1.0857E-13 NORMALIZED 3.3759E-15
RMS v 1.0171E-13 NORMALIZED 4.9531E-15
RMS geop 6.3729E-12 NORMALIZED 6.9585E-16
RMS u 2.0972E-13 NORMALIZED 6.5181E-15
RMS v 1.8381E-13 NORMALIZED 9.0064E-15
2.0247E-16 <= 1E-14 OK
5.9105E-16 <= 1E-14 OK
1.2926E-15 <= 1E-14 OK
5.1047E-16 <= 1E-14 OK
3.3759E-15 <= 1E-14 OK
4.9531E-15 <= 1E-14 OK
6.9585E-16 <= 1E-14 OK
6.5181E-15 <= 1E-14 OK
9.0064E-15 <= 1E-14 OK
############################################################################
The diff using CPRNC has passed
############################################################################
Examining cprnc baseline comparison output files
file = swtc61.nc
The files are different: DIFF_RESULT=DIFFERENT
############################################################################
CPRNC returned the following RMS differences
RMS u 1.1564E-14 NORMALIZED 3.5918E-16
RMS v 7.5817E-15 NORMALIZED 3.7183E-16
RMS geop 2.1102E-07 NORMALIZED 2.3049E-11
RMS u 1.1343E-08 NORMALIZED 3.5271E-10
RMS v 1.3057E-08 NORMALIZED 6.3583E-10
RMS geop 3.2342E-07 NORMALIZED 3.5314E-11
RMS u 1.8554E-08 NORMALIZED 5.7666E-10
RMS v 2.7999E-08 NORMALIZED 1.3719E-09
############################################################################

  Start  6: baro2b

6/12 Test #6: baro2b ........................... Passed 180.05 sec
Start 7: baro2c
7/12 Test #7: baro2c ........................... Passed 20.55 sec
Start 8: baro2d
8/12 Test #8: baro2d ........................... Passed 270.86 sec
Start 9: baroCamMoist
9/12 Test #9: baroCamMoist ..................... Passed 49.53 sec
Start 10: baroCamMoistSL
10/12 Test #10: baroCamMoistSL ...................***Failed 10.45 sec
Submitting 1 jobs
Running test baroCamMoistSL-run ... /ascldap/users/onguba/runhomme/bld-rrm-remove-double/tests/baroCamMoistSL/baroCamMoistSL-run.sh > baroCamMoistSL-run.out 2> baroCamMoistSL-run.err
test baroCamMoistSL-run was run successfully
Test name = baroCamMoistSL
Examining cprnc reference comparison output files
Test baroCamMoistSL: no netcdf CHECKREF output files, skipping CHECKREF test.
############################################################################
The diff using CPRNC has passed
############################################################################
Examining cprnc baseline comparison output files
file = camBaroMoist-SL-asp_baroclinic1.nc
The files are different: DIFF_RESULT=DIFFERENT
############################################################################
CPRNC returned the following RMS differences
RMS zeta 1.5749E-09 NORMALIZED 2.7121E-04
RMS ps 1.7950E+00 NORMALIZED 1.7938E-05
RMS zeta 7.5282E-09 NORMALIZED 1.0647E-03
RMS u 7.2652E-03 NORMALIZED 4.4218E-04
RMS v 7.3207E-03 NORMALIZED 2.2569E-03
############################################################################
file = camBaroMoist-SL-asp_baroclinic2.nc
The files are different: DIFF_RESULT=DIFFERENT
############################################################################
CPRNC returned the following RMS differences
RMS Q 2.1318E-06 NORMALIZED 3.4542E-03
RMS Q2 2.2789E-06 NORMALIZED 3.2413E-03
RMS Q3 1.0053E-05 NORMALIZED 6.2723E-05
RMS Q4 7.7306E-15 NORMALIZED 7.7306E-15
############################################################################

  Start 11: baroCamMoist-acc

11/12 Test #11: baroCamMoist-acc ................. Passed 19.47 sec
Start 12: templates
12/12 Test #12: templates ........................***Failed 7.84 sec
Submitting 1 jobs
Running test templates-run ... /ascldap/users/onguba/runhomme/bld-rrm-remove-double/tests/templates/templates-run.sh > templates-run.out 2> templates-run.err
test templates-run was run successfully
Test name = templates
Examining cprnc reference comparison output files
Test templates: no netcdf CHECKREF output files, skipping CHECKREF test.
############################################################################
The diff using CPRNC has passed
############################################################################
Examining cprnc baseline comparison output files
file = template1-held_suarez01.nc
The files are identical: DIFF_RESULT=IDENTICAL
file = template2-held_suarez01.nc
The files are different: DIFF_RESULT=DIFFERENT
############################################################################
CPRNC returned the following RMS differences
RMS area 3.2718E-11 NORMALIZED 1.8282E-08
############################################################################

67% tests passed, 4 tests failed out of 12

Total Test time (real) = 700.05 sec

The following tests FAILED:
3 - swtc2 (Failed)
5 - swtc6 (Failed)
10 - baroCamMoistSL (Failed)
12 - templates (Failed)

*********1*********2*********3*********4*********5*********6*********7**

Numerical area of a sphere (area that is based on integration weights) and its geometric area do not coincide. Previously, in homme 3D code 'alpha' correction was used to address this. In 'alpha correction', global difference of numerical and geometric areas was spread among all DOFs. Now for RRM meshes in homme (or more generally with option cubed_sphere_map=2) 'epsilon bubble' correction is introduced instead. The 'bubble' correction fixes the difference between geometric and numerical areas for individual elements adjusting only metric terms for inner (not on elements' edges) DOFs of the element. Uniform meshes (with cubed_sphere_map=0) still use 'alpha' correction.

This new map changes (slightly) the area assocated with each atmosphere column, but it doesn't change the position. Thus it will impact area based mapping utilities, meaning any conservative (but not bilinear) maps need to be updated, as well as files generated from conservative mapping files, which includes the domain files. Changes to the domain file will result in slight changes to the land/ocean mask, which requires a new land IC file as well.

	modified:   ../../../../cime/config/acme/config_grids.xml
	modified:   ../../../cam/bld/namelist_files/namelist_defaults_cam.xml
	modified:   cube_mod.F90
	modified:   prim_driver_mod.F90
	modified:   ../sweqx/init_mod.F90

[Non-BFB] - Non Bit-For-Bit
@oksanaguba oksanaguba added HOMME non-BFB PR makes roundoff changes to answers. Atmosphere labels Jun 13, 2017
@oksanaguba
Copy link
Contributor Author

I still need to run a smoke test with this, do not merge yet. I opened it to keep records in one place.

@oksanaguba
Copy link
Contributor Author

oksanaguba commented Jun 13, 2017

Below are results from following README file in homme/test/reg_test. I did not find anything concerning except that I do not know if I should plot fields from baroCamMoistSL. I tried to use baro2.ncl for it, and if fails with dimensions check (did not dig deeper). @mt5555 : failing tests are swtc2, swtc6, baroCamMoistSL, templates. Should I plot anything here?

https://gist.github.com/oksanaguba/0a045b223820bef4ce6159e626a82daf

@oksanaguba
Copy link
Contributor Author

I would like to keep baseline comparisons in PR, but format is quite long and not readable.

@rljacob
Copy link
Member

rljacob commented Jun 13, 2017

Put them in a gist (gist.github.com) and put a link to the gist here.

@oksanaguba
Copy link
Contributor Author

Ran make check after the last commit, do not see any difference between this output and the first make check output, https://gist.github.com/oksanaguba/15474c87d4a6e2a3bf9849dd40054dca . Smoke test is running now...

    Inserted the new IC file into 1850 setup instead of 2000 setup,
    which bring a question about what to do with this file:

    clmi.I1850CLM45.conusx4v1.74e105b.clm2.r.0021-01-01-00000.nc ?
@oksanaguba
Copy link
Contributor Author

Since there are two setups, for year 1850 and year 2000, in namelists_default_cam.xml , and file for 2000 had to be remapped, this file won't work with the new conus setup:

clmi.I1850CLM45.conusx4v1.74e105b.clm2.r.0021-01-01-00000.nc

@oksanaguba
Copy link
Contributor Author

oksanaguba commented Jun 16, 2017

Ran one of smoke tests but could not plot it: there is no output file cam.h0, only r files (update : I forgot to change the stop option to nmonth). I tried to output cam.r. file on skybridge to a rectangular grid in the same way as before, but got an error about hdf5 (Ben H. reports the same issue).

Conus setup is broken somewhere in cime. Before running, these steps need to be done

  1. ./xmlchange CAM_DYCORE=se,RTM_MODE=NULL (by some reason, the default dycore is FV)
  2. user_nl_clm should contain
    finidat='/projects/ccsm/inputdata/lnd/clm2/initdata_map/clmi.ICRUCLM45.0021-01-01.conusx4v1.0ac6464_simyr2000_c161130.nc'
    (though file components/cam/bld/namelist_files/namelist_defaults_cam.xml was modified by this PR)

@oksanaguba
Copy link
Contributor Author

oksanaguba commented Jun 16, 2017

To compare cubed_sphere_map=0 and =2 options, jw baroclinic test was run for executable preqx-nlev30-interp for 9 days and NE30, qsize=1 . The output was plotted with zeta.ncl (zeta and Q1 fields). I could not spot any difference between plots for _map=0 and _map=2.

Both runs are in /ascldap/users/onguba/runhomme/verifyPR1581june15

Let's merge this PR?

@rljacob
Copy link
Member

rljacob commented Jun 23, 2017

I assume Mark is busy with INCITE but yes please merge this PR.

@mt5555 mt5555 merged commit 97f454d into master Jul 2, 2017
@oksanaguba oksanaguba deleted the oksanaguba/homme/rrm2 branch July 2, 2017 21:50
else
! Abort since the denominator in correction is too small.
call abortmp('Cube_mod, set_area_correction_map2() : Area correction based on eps. bubble &
cannot be done, sum_w is too small.')
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Getting this with the IBM compiler:

components/homme/src/share/cube_mod.F90", line 2215.1: 1515-021 (E) Syntax error: Token " & " is expected.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It is only about this string then? Even for things this small, there should be PR? I will submit a PR for this (and another thing) tonight.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't have means to test this with IBm, is this an issue because the line is too long or because IBM does not like
print('........... &
..........') ?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The ampersand at the beginning of the second/continuation line of a string appears to be mandatory for the IBM compiler:

                 call abortmp('Cube_mod, set_area_correction_map2() : Area correction based on eps. bubble &
-                              cannot be done, sum_w is too small.')
+                             &cannot be done, sum_w is too small.')
              endif

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Or you break the string into two and not have the ampersand inside of a string.

@rljacob
Copy link
Member

rljacob commented Jul 5, 2017

Since this has been merged to master, you can open an issue and yes a new PR to fix it.

@oksanaguba , you should get an account on Mira which has the IBM compiler.

jgfouca pushed a commit that referenced this pull request Jul 14, 2017
DOCN aquaplanet from file and new A compsets with DOCN modes

Addition of file driven aquaplanet to DOCN

This PR actually does several things:

- adds  aquaplanet capability to DOCN where the input is from a file rather than analytic.

- adds a new directory `$CIMEROOT/src/drivers/mct/cime_config/testdefs/testmods_dirs/drv/default
`
that creates cpl history files on a daily basis and thereby permits answer changes to be compared more easily.

- adds new A compsets to the driver config_compsets.xml that have different DOCN functionality 
ADSOM - DOCN SOM
ADSOMAQP - DOCN aquaplanet SOM
ADAQP3 - DOCN analytic aquaplanet (mode 3)
ADAQFILE - DOCN aquaplanet from file

- removes COPYALL as a possible DOCN_MODE since it is not used

Test suite: scripts_regression tests and
created a modified sandbox off of` 8657a18` with the new compsets and default/ testmods directory to show that the following tests were bfb with `8657a18`
```
ERS.f19_f19.ADAQP3.cheyenne_intel.drv-default.C.8657a18/
ERS.f19_f19.ADSOMAQP.cheyenne_intel.drv-default.C.8657a18/
ERS.f19_g16_rx1.A.cheyenne_intel.drv-default.C.8657a18/
ERS.f19_g16_rx1.ADSOM.cheyenne_intel.drv-default.C.8657a18/
ERS.f19_g16_rx1.AIAF.cheyenne_intel.drv-default.C.8657a18/

```
Test baseline: `8657a18`
Test namelist changes: 
Test status: bit for bit
Fixes #1581 

User interface changes?: None
Code review: Bill Sacks, Rob Jacob
amametjanov added a commit that referenced this pull request Jul 19, 2017
Provides a fix for a land IC file and a minor fix for an IBM compiler
PR #1581 changed how area of columns is computed for RRM
atmospheric meshes. For an existing compset for 2000 year
land IC file was remapped, but 1850 year the IC file was not
remapped (issue 1609). This PR removes the 1850 land file
from the setup.
This PR also fixes a minor print statement issue with an
IBM compiler from a commit in PR #1581.

Fixes #1609
[BFB]
amametjanov added a commit that referenced this pull request Jul 21, 2017
Provides a fix for a land IC file and a minor fix for an IBM compiler.
PR #1581 changed how area of columns is computed for RRM
atmospheric meshes. For an existing compset for 2000 year
land IC file was remapped, but 1850 year the IC file was not
remapped (issue 1609). This PR removes the 1850 land file
from the setup.
This PR also fixes a minor print statement issue with an
IBM compiler from a commit in PR #1581.

Fixes #1609
[BFB]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Atmosphere HOMME non-BFB PR makes roundoff changes to answers.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants