ESCOMP / PUMAS

Parameterization for Unified Microphysics Across Scales
9 stars 12 forks source link

Pumas DDT #46

Closed cacraigucar closed 1 year ago

cacraigucar commented 2 years ago

Introduce proc_rates type to store PUMAS fields in a DDT

ESCOMP/CAM PR 632 https://github.com/ESCOMP/CAM/pull/632

cacraigucar commented 1 year ago

I ran the code for 3 months and did a brief 'science' check. Everything looks okay with a few comments.

  1. the new fields in the ddt come out with dimension 'trop_cld_lev' which is still 32 levels. Is this correct? I thought we were going to limit the top height?

The top is limited by top_lev. Is it true that top_lev is 1 unless you are making a WACCM run?

  1. trop_cld_lev needs to have standard pressures output on the history file (right now it is just index) as the lev dimension does

Noted

  1. I missed some fields that are 'process rates' and should be in the DDT (either in this PR or a second PR, perhaps Kate can add later):

I've looked at random variables from this list. How are you determining that these fields are missing? For instance, PRAIO is known as proc_rates$praitot and is set back to the praio_grid prior to being output. Is that causing the confusion?

The variables in the proc_rates DDT are a mixture of local variables as well as variables which reside in the pbuf. I think that is why some of them needed the subcol_field_avg calls and some did not. Note that I didn't add or remove any subcol_field_avg calls, but rather just modified the variable name if it was in one.

BERGO,BERGSO,CMELIQ (I think, if from microphysics),EVAPPREC,MELT* (MELTGTOT,MELTO,MELTSDT,MELTSTOT),MNUCCRO,MNUCCRIO,NNUCCRO,MNUCCTO,MNUDEPO,MSACWIO,NGRACSO,NIDEPTEN,NIDEPTEN,NIMEYTEN,NIHFTEN,NIIMMTEN,NMELTGO,NMELTGRO,NPRACGO,NSCNGO,PRACGO,PRACSO,PRAIO,PRAO,PRCIO,PRCO,PRDGO,PSACRO,PSACWGO,PSACWSO,QIRESO,QMULTGO,QMULTRGO,VAPDEPSO

Katetc commented 1 year ago

Cheryl, could you add a link or note on the corresponding CAM PR and branch to the description of this PR? Just for future reference, thanks! ---Edit: I just did it, no worries.

cacraigucar commented 1 year ago

@andrewgettelman -- Here are all the variables you listed - most of them already reside in the DDT. Perhaps some of the confusion is that there was a name mismatch between what was in the PUMAS code and what was in the CAM interface code for some of these variables. Since there is only one name possible within the DDT, I selected the name from PUMAS. Also, in some cases, the variable was being converted back to the grid in the CAM interface code and the grid variable was what was being used in the outfld calls without needing to use the avg_subcol_field directive. I did not modify this logic at all, but rather just replaced the names as needed.

In summary, there is one variable which needs to be added, and a number that I were unable to find listed at the end of this comment.

BERGO - proc_rates%bergtot -- put back into bergo_grid BERGSO - proc_rates%bergstot -- put back into bergso_grid MELTGTOT - proc_rates%meltgtot MELTO - proc_rates%melttot -- put back into melto_grid MELTSDT - proc_rates%meltsdttot MELTSTOT - proc_rates%meltstot MNUCCRO - proc_rates%mnuccrtot MNUCCRIO - proc_rates%mnuccritot NNUCCRO - proc_rates%nnuccrtot MNUCCTO - proc_rates%mnuccttot -- put back into mnuccto_grid MNUDEPO - proc_rates%mnudeptot MSACWIO - proc_rates%msacwitot -- put back into msacwio_grid NGRACSO - proc_rates%ngracstot -- put back into ngracso_grid NMELTGO - proc_rates%nmeltgtot NPRACGO - proc_rates%npracgtot -- put back into npracgo_grid NSCNGO - proc_rates%nscngtot -- put back into nscngo_grid PRACGO - proc_rates%pracgtot -- put back into pracgo_grid PRACSO - proc_rates%pracstot PRAIO - proc_rates%praitot -- put back into praio_grid PRAO - proc_rates%pratot -- put back into prao_grid PRCIO - proc_rates%prcitot -- put back into prcio_grid PRCO - proc_rates%prctot -- put back into prco_grid PRDGO - proc_rates%prdgtot -- put back into prdgo_grid PSACRO - proc_rates%psacrtot -- put back into psacro_grid PSACWGO - proc_rates%psacwgtot -- put back into psacwgo_grid PSACWSO - proc_rates%psacwstot -- put back into psacwso_grid QIRESO - proc_rates%qirestot -- put back into qireso_grid QMULTGO - proc_rates%qmultgtot -- put back into qmultgo_grid QMULTRGO - proc_rates%qmultrgtot -- put back into qmultrgo_grid VAPDEPSO - proc_rates%vapdepstot

EVAPPREC - is known as nevapr in code -- NEED TO ADD TO DDT CMELIQ (I think, if from microphysics) - Is not in PUMAS call - it is coming from pbuf only NMELTGRO- I don't find this at all in either PUMAS or the CAM interface code NIDEPTEN,NIDEPTEN,NIMEYTEN,NIHFTEN,NIIMMTEN - I don't find these at all in either PUMAS or the CAM interface code

andrewgettelman commented 1 year ago

Hi Cheryl,

Thanks for clarifying. Sorry about missing all those variables. What I did was do a grep on all the variables in an output file with the dimension 'trop_cld_lev' assuming these were in the DDT. And the ones I flagged were missing from that, because I guess they are output on the grid and have a level dimension 'lev' on the output file.

But you say these are in the DDT?

If we run where trop_cld_lev ≠ lev (i.e. below the model top) then what is going to happen to these fields?

I guess this is some difference in the interface between sub-column stuff and non-subcolumn stuff? It's importance is lost for me at this point.

So I guess everything is working?

Might be good to have a quick synchronous conversation about this when I return to the office Monday (at a meeting in England this week).

Regarding the other variables: my bad in that most of these are from other parameterizations.

CMELIQ (I think, if from microphysics) - Is not in PUMAS call - it is coming from pbuf only

NMELTGRO- I don't find this at all in either PUMAS or the CAM interface code

NIDEPTEN,NIDEPTEN,NIMEYTEN,NIHFTEN,NIIMMTEN - I don't find these at all in either PUMAS or the CAM interface code

Sorry, they are used in PUMAS, but I forgot they are like CMELIQ produced and output from another parameterization (nucleate ice) and are input to PUMAS.

cacraigucar commented 1 year ago

@andrewgettelman - I too am concerned if I have been able to capture the subtleties of the code mods when trop_cld_lev =/ lev. To test this, I believe I need to make a WACCM run, but I am having difficulties using WACCM and cam_dev together (with our without my mods). I believe that WACCM runs are the only ones which modify top_lev (or trop_cloud_top_lev as it is known in ref_pres), is that correct? If there is another way to modify the trop_cloud_top_press, please let me know and I'll test with it. Otherwise I am awaiting confirmation that I am setting up my WACCM runs correctly or not.

andrewgettelman commented 1 year ago

@cacraigucar, its a namelist variable. So you can just set trop_cloud_top_press = 7.D3 and that should do it.

Right now its 1.D2 in pascals, so that 1hPa (above the model top) 1D3 = 70hPa so that's the lower stratosphere, but shouldn't affect the clouds much (not many clouds above 100hPa).

That should work...

cacraigucar commented 1 year ago

@Katetc and @sjsprecious - I think this is ready for final review and tagging. I can then put the tag in my CAM PR and move this project forward