-
Notifications
You must be signed in to change notification settings - Fork 11
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
how to produce diagnostic winds at time step 0? #32
Comments
Hi, Steve. Thank you for opening this issue. I will take a closer look upon
returning from travel but I believe the upshot is that `u_srf`/`v_srf` need
to have the lat-lon winds to have been previously computed; this is done at
the end of `fv_dynamics()` but not necessarily in the model initialization.
These are indeed the lowest-layer winds which are not the same as the 10-m
winds; the latter is computed from the physics by Monin-Obhukov theory.
Lucas
…On Mon, Nov 13, 2023 at 9:10 PM Steve Penny ***@***.***> wrote:
*Is your question related to a problem? Please describe.*
From our own external driver routine, we are accessing the 10m winds
through IPD_Data(nb)%intdiag%u10m and IPD_Data(nb)%intdiag%v10m. This works
fine for us after the first model time step. However we have noticed that
on time step 0 (upon initialization of the model) these fields are empty.
It appears that they are diagnostic fields that only get populated after
the first model time step completes. We would like realistic u10m/v10m
fields to be populated at time 0, e.g. based on the initial condition file
or restart file.
Is there a straightforward way to trigger the diagnostic computation of
u10m/v10m winds when the model initializes so that they are not empty at
time step 0?
*Describe what you have tried*
We've tried accessing the Atm(mygrid)%u_srf and Atm(mygrid)%v_srf fields
from the fv3 dynamical core at timestep 0, but they appear to be
represented slightly differently on the grid. It's not clear to me whether
these are on a C-grid or D-grid stagger while it appears the diagnostic 10m
winds above are at cell centers. Ideally, we'd like them to be on the same
grid at the same associated height. The bigger problem for us in this case
was identifying the appropriate means of collecting the
parallel-distributed data, which appears to be different from what was used
above for the IPD_Data(nb)%intdiag data structure.
We attempted something like:
if (varchar=='u') then
do j=jsc,jec
do i=isc,iec
dataPtr_r8(i,j) = real(Atm(mygrid)%u_srf(i,j),kind=8)
enddo
enddo
elseif (varchar=='v') then
do j=jsc,jec
do i=isc,iec
dataPtr_r8(i,j) = real(Atm(mygrid)%v_srf(i,j),kind=8)
enddo
enddo
endif
but the resulting fields were not reconstructed correctly. Further, we
presume these fields are defined at the model's bottom level and not at the
desired 10m height.
—
Reply to this email directly, view it on GitHub
<#32>, or unsubscribe
<https://github.com/notifications/unsubscribe-auth/AMUQRVGQTBAF5QLMRLOCLTDYELHHTAVCNFSM6AAAAAA7KCHD32VHI2DSMVQWIX3LMV43ASLTON2WKOZRHE4TCOBUGM4DOMQ>
.
You are receiving this because you are subscribed to this thread.Message
ID: ***@***.***>
|
Thanks Lucas (@lharris4), we are currently using the 10m winds computed here, and they appear to be accurate (we have tested against scatterometer observations): SHiELD_physics/gsmphys/sfc_diag.f Lines 37 to 38 in a5a3a40
For example, here is tile 1 after 1 model time step: and what the wave model is seeing at the same time step: Our driver routine runs this initialization sequence, which was copied from the SHiELD "program coupler_main":
where 'model' and 'dclock' are ESMF objects, and our 'coupler_init' is as close as possible to:
At initialization time, it appears that all data stored in "IPD_Data(nb)%Sfcprop" have been populated with values, while all data stored in IPD_Data(nb)%intdiag are empty, hence our challenge with 10m winds at time step 0. |
FYI @lharris4 this first plot is what we see when accessing Atm(mygrid)%u_srf after initialization, using the loops described in the original post above. The second plot shows u10m diagnostic (intdiag) at time 1 (it is empty at initialization time 0). I'm not sure why we're losing half the field, but if we can recover it then we can replicate the u10m/v10m diagnostic Monin-Obhukov computation to get what we need: |
Hi, Steve. Thank you for sending this information. I am juggling a few
things during this holiday week but hope to get back to this shortly.
Lucas
…On Fri, Nov 17, 2023 at 8:16 PM Steve Penny ***@***.***> wrote:
FYI @lharris4 <https://github.com/lharris4> this first plot is what we
see when accessing Atm(mygrid)%u_srf after initialization, using the loops
described in the original post above. The second plot shows u10m diagnostic
(intdiag) at time 1 (it is empty at initialization time 0). I'm not sure
why we're losing half the field, but if we can recover it then we can
replicate the u10m/v10m diagnostic Monin-Obhukov computation to get what we
need:
[image: Screen Shot 2023-11-17 at 3 52 11 PM]
<https://user-images.githubusercontent.com/11303168/283951346-9daa1628-c75f-4f9e-ae0b-af753abadba0.png> [image:
Screen Shot 2023-11-17 at 3 52 43 PM]
<https://user-images.githubusercontent.com/11303168/283951359-d7a14ae4-0513-454c-a946-95e019550c90.png>
—
Reply to this email directly, view it on GitHub
<#32 (comment)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/AMUQRVFMSWYHMUNBYUYHMXLYFAD73AVCNFSM6AAAAAA7KCHD32VHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTQMJXGMYDMMRUGQ>
.
You are receiving this because you were mentioned.Message ID:
***@***.***>
|
Hi @StevePny. I think there are a couple of convolved issues here.
(next comment to follow) |
|
@lharris4
Which is written to file with:
|
Hi @StevePny . Sorry for the delay. I don't see anything in this code that might cause a problem. The only things that come to my mind are (a) that a sync didn't complete by the time of the write, or (b) for some reason the Thanks |
Is your question related to a problem? Please describe.
From our own external driver routine, we are accessing the 10m winds through IPD_Data(nb)%intdiag%u10m and IPD_Data(nb)%intdiag%v10m. This works fine for us after the first model time step. However we have noticed that on time step 0 (upon initialization of the model) these fields are empty. It appears that they are diagnostic fields that only get populated after the first model time step completes. We would like realistic u10m/v10m fields to be populated at time 0, e.g. based on the initial condition file or restart file.
Is there a straightforward way to trigger the diagnostic computation of u10m/v10m winds when the model initializes so that they are not empty at time step 0?
Describe what you have tried
We've tried accessing the Atm(mygrid)%u_srf and Atm(mygrid)%v_srf fields from the fv3 dynamical core at timestep 0, but they appear to be represented slightly differently on the grid. It's not clear to me whether these are on a C-grid or D-grid stagger while it appears the diagnostic 10m winds above are at cell centers. Ideally, we'd like them to be on the same grid at the same associated height. The bigger problem for us in this case was identifying the appropriate means of collecting the parallel-distributed data, which appears to be different from what was used above for the IPD_Data(nb)%intdiag data structure.
We attempted something like:
but the resulting fields were not reconstructed correctly. Further, we presume these fields are defined at the model's bottom level and not at the desired 10m height.
The text was updated successfully, but these errors were encountered: