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

[NDSL] Hystpdf/Evap/Subl loop #938

Open
1 task
FlorianDeconinck opened this issue May 22, 2024 · 3 comments
Open
1 task

[NDSL] Hystpdf/Evap/Subl loop #938

FlorianDeconinck opened this issue May 22, 2024 · 3 comments
Assignees

Comments

@FlorianDeconinck
Copy link
Collaborator

Self-contained 3-axis loop to port with the GFDL_1M parametrization

Original code: GEOS_GFDL_1M_InterfaceMod.F90:L578

Parent: GEOS-ESM/SMT-Nebulae#57


  • Port Hystpdf/Eval/Subl 3-axis loop to ndsl
@CharlesKrop
Copy link

Flowchart to track progress on issue here

@CharlesKrop CharlesKrop changed the title [NDSL] Hystpdf/Eval/Subl loop [NDSL] Hystpdf/Evap/Subl loop Sep 6, 2024
@CharlesKrop
Copy link

evap3, subl3, and initial calculations within the loop have been ported and verified. hystpdf has been ported and compiles, but is not yet verified.

A QSat module has been developed to handle the numerous calls to various QSat functions throughout GEOS, currently on branch dsl/QSat.

Functions available in this module:

  • get_table: called on init, creates the three qsat tables to be referenced from subsequent functions
  • QSat_FloatField: takes 3D data as input and computes QSat at each according to Fortran QSAT0/DQSAT0. Interpolates QSat values between ice and liquid water at/around 0C based on TMIX parameter
  • QSat_Float: identical to QSat_FloatField but for single point calculations (can be called from within a stencil)
  • QSat_Float_Liquid/QSat_Float_Ice: Fortran QSATLQU0/QSATICE0, these functions are similar to QSat_Float, but abandones the interpolation and always calculates for ice/liquid water

KNOWN ISSUES:

  • QSat_Float/FloatField fails verification at 86% of points, metric diff O[10^-4]. Errors traces back to differences in saturation tables, which fail at 97% of points. These errors are also small and dependent on temperature. Differences in temperature used within the calculation may be cause of some of these errors. Potential rounding error.
  • issue casting to int with dace:cpu backend. have to use intermediary buffer to avoid error

@FlorianDeconinck
Copy link
Collaborator Author

Port is done - might be re-adjusted after validation is ran

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants