NASA-LIS / LISF

Land Information System Framework
Apache License 2.0
117 stars 155 forks source link

Add MOGREPS-G forecast reader #1477

Closed yyoon4 closed 8 months ago

yyoon4 commented 8 months ago

Description

Add MOGREPS-G (Met Office Global and Regional Ensemble Prediction System - global ensemble), version PS45, medium-range forecasts reader for GHI (https://github.com/NASA-LIS/LISF/issues/1476).

These codes are part of LIS 557WW 7.6 delivery.

Pre-processing is needed The initial conditions for the MR system are sourced from the GHI NRT system. However, the ensemble sizes of the NRT (12 members) and MR (18 members) differ. Therefore, preprocessing is necessary to align the ensemble sizes.

Testcase

LDT: /discover/nobackup/projects/usaf_lis/yyoon4/Hydro/MRF/MOGREPS-G/testcase/ldt/ldt.config.global.noahmp401.ensemble

LIS: /discover/nobackup/projects/usaf_lis/yyoon4/Hydro/MRF/MOGREPS-G/testcase/lis/lis.config.global.noahmp401

dmocko commented 8 months ago

Hi @yyoon4 - can you please add descriptions of these new config entries to the lis/configs/lis.config.adoc file?

yyoon4 commented 8 months ago

Hi @yyoon4 - can you please add descriptions of these new config entries to the lis/configs/lis.config.adoc file?

@dmocko Thanks for checking. I have updated the 'lis/configs/lis.config.adoc' file.

emkemp commented 8 months ago

Hi @yyoon4

Please add group read permission for /discover/nobackup/projects/usaf_lis/yyoon4/Hydro/dataset_for_MRF/MOGREPS-G. I cannot currently read the MOGREPS files to test your code changes.

yyoon4 commented 8 months ago

Hi @yyoon4

Please add group read permission for /discover/nobackup/projects/usaf_lis/yyoon4/Hydro/dataset_for_MRF/MOGREPS-G. I cannot currently read the MOGREPS files to test your code changes.

@emkemp Done.

emkemp commented 8 months ago

Thanks @yyoon4

I confirmed identical results when using the Intel compiler. Also, a debug run with the Intel compiler shows no errors.

LIS also builds with the GNU compilers; however, I get an energy budget warning from the NoahMP Glacier code and a floating point exception after six hours of simulation.

ERRENG = 1.82518959E-02 1 1 2.5895 141.441124891.9844**-3857.9014 Energy budget problem in NOAHMP GLACIER Note: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG IEEE_DIVIDE_BY_ZERO IEEE_UNDERFLOW_FLAG IEEE_DENORMAL

I don't know if this is worth holding the pull request. @dmocko, do you have any comments?

jvgeiger commented 8 months ago

I would like to point out that the LISF AppImage is built with the GNU compilers. So we cannot forget about this error.

emkemp commented 8 months ago

Okay, I reran both the Intel and GNU cases, but with extra output variables (same output selection as the NRT case for NoahMP).

In both cases, Antarctica has nearly uniform soil temperatures at the top (~273K), except for ensemble member 12. For that ensemble member, there are very cold soil temperatures (ranging from ~255K to ~205K).

In addition, in the GNU case, ncview reports there is at least one pixel with unphysically high soil temperature (728K by three hours, and 1120K by 6 hours). I'm confident this pixel causes the GNU run to crash shortly afterward.

I'm guessing something is wrong with the restart file used to initialize this test case. I notice that the ldt.config file has these settings:

LIS restart source: "LSM" Ensemble restart generation mode: "upscale" Number of ensembles per tile (input restart): 12 Number of ensembles per tile (output restart): 18 Ensemble restart generation sampling strategy: "random sampling"

@yyoon4 Where did the 12-member ensemble restart (the input for LDT) come from? And did you try running LIS with that restart file first?

emkemp commented 8 months ago
Screenshot 2024-01-12 at 4 41 09 PM Screenshot 2024-01-12 at 4 42 03 PM

These are screenshots of SoilTemp_inst at the top layer for Intel run at 3-hr, for ensemble members 11 and 12. Ensemble member 11 is representative of the other ensemble members except for 12.

yyoon4 commented 8 months ago

@emkemp Thanks for checking. I've also confirmed that this problem is caused by the restart file I used. I'm not sure why member 12 is showing the wrong surface temperature over Antarctica.

I downloaded the operational NRT restart file (noah39) for 2023/08/18 12Z and reproduced the outputs. It looks okay with all surface temperature members. The MOGREPS-G reader itself looks okay.

Please use this testcase: /discover/nobackup/projects/usaf_lis/yyoon4/Hydro/MRF/MOGREPS-G/testcase/lis/lis.config.global.noah39

emkemp commented 8 months ago

Hi @yyoon4

Please add group read permission to /discover/nobackup/projects/usaf_lis/yyoon4/Hydro/MRF/MOGREPS-G/testcase/lis/input/rstfile/LIS_RST_NOAH39_202308181200_EN18.d01.nc.

Thanks.

yyoon4 commented 8 months ago

Hi @yyoon4

Please add group read permission to /discover/nobackup/projects/usaf_lis/yyoon4/Hydro/MRF/MOGREPS-G/testcase/lis/input/rstfile/LIS_RST_NOAH39_202308181200_EN18.d01.nc.

Thanks.

@emkemp Done!

emkemp commented 8 months ago

Thanks @yyoon4!

I ran both with both Intel and GNU compilers. Intel results are identical to yours. GNU has some isolated differences in soil temperature, which I think should be expected.

emkemp commented 8 months ago

I can replicate the latest usecase version from @yyoon4 when using Intel compilers, and GNU compilers do not crash. At this point I'm satisfied with the code, and I approve the pull request.