Open SorooshMani-NOAA opened 1 year ago
@pvelissariou1 it seems there's a difference between how ADCIRC processes track files vs what PaHM does. @WPringle and I would like to first confirm this before separating the logic of handling both in stormevents
and ensembleperturbation
.
My understanding based on our prior discussions is that in PaHM, the advisory type (e.g. BEST
vs OFCL
vs CARQ
, etc.) and forecast hour (e.g. 0
, 6
, 12
, 18
, ...) don't matter, and all that the model looks at is date tag column for figuring out time. And other than that PaHM cares about the isotach speed column and the rest of the physical variables, such as velocity , direction, pressures, radii.
Please also look at the issue description above and let me know if I'm missing anything.
@WPringle I just had a meeting with Takis and it seems I didn't have the full picture for PaHM. Later he will paste the link to locations in PaHM where the ATCF files are processed, as well as the ADCIRC code that does the same. Let's then review those and decide how to move forward with the stormevent
handling of different cases.
@SorooshMani-NOAA The atcf files are preprocessed in PaHM in the https://github.com/noaa-ocs-modeling/PaHM/blob/main/src/parwind.F90
as follows:
ProcessHollandData
, lines: 1017 - 1068ProcessAsymmetricVortexData
, lines: 1227-1324.Here there is no checking for BEST, OCFL fields as the loop goes through the sequence of times only. Both were designed having "best" track files in mind. Might need to explicitly consider the OCFL fields filtering out all hours except hour 0.
In ADCIRC the atcf files are processed in a similar way and in file: https://github.com/adcirc/adcirc/blob/bd62a3c1b167cfb95db5af13325b031de2a1cdfb/src/wind.F
a) Holland Model: In SUBROUTINE GetHollandStormData, lines: 5283-5385 b) GAHM: In SUBROUTINE NWS20GET, lines 6578-6662 (no testing on OCFL fields either).
To use forecast files input data need to be filtered to consider only "hour 0" (possibly also hour 3). Furthermore, in the forecast atcf files the radius of the last closed isobar is not estimated (is set to 0) which makes both ADCIRC and PaHM produce zero wind fields.
@pvelissariou1 @WPringle I'll try to summarize my concerns and understanding here, including #81 (i.e. explicit normalization):
OFCL
vs BEST
vs anything, it just reads the tracks and the track rows must be unique in time (3 isotachs per time)
BEST
vs OFCL
:
BEST
the tracks are filtered and only the first entry for unique dates str is kept.OFCL
only hour-0 or the first available entry for every date (track start date) is taken, the rest are filteredstormevents
must do the following normalizations in any case:
BEST
track [currently done implicitly]In terms of our use cases, we have the following items, along with what it means for stormevents
output:
BEST
track for hindcast
OFCL
track data from a single advisory needs to be used.OFCL
track needs to be modified to add missing fieldsOFCL
date and forecast hour need to be modified to feed it to the model. This means:
0
does not exists for that date, and GAHM only cares about forecast time after making sure dates are uniquePlease note that:
stromevents
requires the user to tell stormevents
that it's a modified track, either by file extension or by explicit argument.stormevents
for GAHM vs SymH modelsI'd like to also note that @WPringle has told me that the processing of OFCL
in ADCIRC GAHM only cares about the forecast hours, and not the date tags, and I'm not sure if PaHM is the same; so please let me know if my understanding is incorrect.
Please let me know if any part of this is incorrect or anything is missing so that I update the comment! Also please let me know if any part of this is unclear. I want to make sure we're all on the same page before making any major changes!
For OFCL only hour-0 or the first available entry for every date (track start date) is taken, the rest are filtered In both models OFCL filtering is not performed at this point
Radius of the last closed isobar [missing] We should add the capability to estimate the radius; methods to do so exist but we need to understand how thay do it at NHC
Radius for quadrants for GAHM [missing] The radii of quadrant wind intensities need to be estimated when their values are missing (again need to check with NHC on how they estimate these values)
The forecast dates need to be increasing for it to work with GAHM (at least in ADCIRC) PaHM checks the timestamps and re-orders them in ascending order if needed
OFCL track data from a single advisory needs to be used. The OFCL time intervals are not constant, using the OFCI field that contains the interpolated values for every 6 hours may be a more useful approach.
Link to format documentation: ATCF Formats
@pvelissariou1 thank you for the information. I just have some follow up questions/points:
In both models OFCL filtering is not performed at this point
Isn't this line doing the filtering in PaHM for SymH (not GAHM)? Lines 1024-1026
IF (iCnt > 1) THEN
IF ( (strOut%fcstInc(iCnt) /= 0) .AND. (strOut%fcstInc(iCnt) == strOut%fcstInc(iCnt - 1))) CYCLE
END IF
Also in response to
The OFCL time intervals are not constant, using the OFCI field ...
Right now for SymH only BEST
and OFCL
are accepted, right? So if we use OFCI
we can only use it with GAHM, isn't it so?
And for
The forecast dates need to be increasing for it to work with GAHM (at least in ADCIRC)
I meant to say we cannot have all 0
forecast hours (even with different date tags) for BEST
track in ADCIRC. Is it the same in PaHM? In other words the following doesn't work for ADCIRC GAHM I think:
AL, 09, 2022092600, , BEST, 0, 168N, 809W, 50, 991, TS, 34, NEQ, 60, 60, 0, 30, 1007, 120, 30, 60, 0, L, 0, , 0, 0, IAN, D, 12, NEQ, 30, 0, 0, 0, genesis-num, 028,
AL, 09, 2022092600, , BEST, 0, 168N, 809W, 50, 991, TS, 50, NEQ, 30, 0, 0, 0, 1007, 120, 30, 60, 0, L, 0, , 0, 0, IAN, D, 12, NEQ, 30, 0, 0, 0, genesis-num, 028,
AL, 09, 2022092606, , BEST, 0, 177N, 817W, 65, 985, HU, 34, NEQ, 70, 70, 30, 70, 1007, 150, 15, 80, 0, L, 0, , 0, 0, IAN, D, 12, NEQ, 45, 30, 30, 30, genesis-num, 028,
AL, 09, 2022092606, , BEST, 0, 177N, 817W, 65, 985, HU, 50, NEQ, 30, 30, 0, 20, 1007, 150, 15, 80, 0, L, 0, , 0, 0, IAN, D, 12, NEQ, 45, 30, 30, 30, genesis-num, 028,
AL, 09, 2022092606, , BEST, 0, 177N, 817W, 65, 985, HU, 64, NEQ, 15, 0, 0, 0, 1007, 150, 15, 80, 0, L, 0, , 0, 0, IAN, D, 12, NEQ, 45, 30, 30, 30, genesis-num, 028,
AL, 09, 2022092612, , BEST, 0, 187N, 824W, 70, 981, HU, 34, NEQ, 90, 80, 40, 90, 1008, 150, 15, 85, 0, L, 0, , 0, 0, IAN, D, 12, NEQ, 60, 30, 30, 60, genesis-num, 028,
AL, 09, 2022092612, , BEST, 0, 187N, 824W, 70, 981, HU, 50, NEQ, 40, 40, 0, 30, 1008, 150, 15, 85, 0, L, 0, , 0, 0, IAN, D, 12, NEQ, 60, 30, 30, 60, genesis-num, 028,
AL, 09, 2022092612, , BEST, 0, 187N, 824W, 70, 981, HU, 64, NEQ, 20, 0, 0, 0, 1008, 150, 15, 85, 0, L, 0, , 0, 0, IAN, D, 12, NEQ, 60, 30, 30, 60, genesis-num, 028,
AL, 09, 2022092618, , BEST, 0, 197N, 830W, 80, 976, HU, 34, NEQ, 100, 90, 60, 90, 1008, 150, 20, 100, 0, L, 0, , 0, 0, IAN, D, 12, NEQ, 120, 60, 30, 75, genesis-num, 028,
AL, 09, 2022092618, , BEST, 0, 197N, 830W, 80, 976, HU, 50, NEQ, 50, 50, 20, 30, 1008, 150, 20, 100, 0, L, 0, , 0, 0, IAN, D, 12, NEQ, 120, 60, 30, 75, genesis-num, 028,
AL, 09, 2022092618, , BEST, 0, 197N, 830W, 80, 976, HU, 64, NEQ, 30, 25, 0, 20, 1008, 150, 20, 100, 0, L, 0, , 0, 0, IAN, D, 12, NEQ, 120, 60, 30, 75, genesis-num, 028,
AL, 09, 2022092700, , BEST, 0, 208N, 833W, 85, 965, HU, 34, NEQ, 100, 90, 60, 90, 1006, 130, 20, 105, 0, L, 0, , 0, 0, IAN, D, 12, NEQ, 150, 120, 60, 90, genesis-num, 028,
instead it should be like:
AL, 09, 2022092600, , BEST, 0, 168N, 809W, 50, 991, TS, 34, NEQ, 60, 60, 0, 30, 1007, 120, 30, 60, 0, L, 0, , 0, 0, IAN, D, 12, NEQ, 30, 0, 0, 0, genesis-num, 028,
AL, 09, 2022092600, , BEST, 0, 168N, 809W, 50, 991, TS, 50, NEQ, 30, 0, 0, 0, 1007, 120, 30, 60, 0, L, 0, , 0, 0, IAN, D, 12, NEQ, 30, 0, 0, 0, genesis-num, 028,
AL, 09, 2022092606, , BEST, 6, 177N, 817W, 65, 985, HU, 34, NEQ, 70, 70, 30, 70, 1007, 150, 15, 80, 0, L, 0, , 0, 0, IAN, D, 12, NEQ, 45, 30, 30, 30, genesis-num, 028,
AL, 09, 2022092606, , BEST, 6, 177N, 817W, 65, 985, HU, 50, NEQ, 30, 30, 0, 20, 1007, 150, 15, 80, 0, L, 0, , 0, 0, IAN, D, 12, NEQ, 45, 30, 30, 30, genesis-num, 028,
AL, 09, 2022092606, , BEST, 6, 177N, 817W, 65, 985, HU, 64, NEQ, 15, 0, 0, 0, 1007, 150, 15, 80, 0, L, 0, , 0, 0, IAN, D, 12, NEQ, 45, 30, 30, 30, genesis-num, 028,
AL, 09, 2022092612, , BEST, 12, 187N, 824W, 70, 981, HU, 34, NEQ, 90, 80, 40, 90, 1008, 150, 15, 85, 0, L, 0, , 0, 0, IAN, D, 12, NEQ, 60, 30, 30, 60, genesis-num, 028,
AL, 09, 2022092612, , BEST, 12, 187N, 824W, 70, 981, HU, 50, NEQ, 40, 40, 0, 30, 1008, 150, 15, 85, 0, L, 0, , 0, 0, IAN, D, 12, NEQ, 60, 30, 30, 60, genesis-num, 028,
AL, 09, 2022092612, , BEST, 12, 187N, 824W, 70, 981, HU, 64, NEQ, 20, 0, 0, 0, 1008, 150, 15, 85, 0, L, 0, , 0, 0,
...
@Soroosh Mani - NOAA Affiliate @.***>
Isn't this line doing the filtering in PaHM for SymH (not GAHM)?
Lines 1024-1026 IF (iCnt > 1) THEN IF ( (strOut%fcstInc(iCnt) /= 0) .AND. (strOut%fcstInc(iCnt) == strOut%fcstInc(iCnt - 1))) CYCLE END IF
It does it partially, it does not filter out the remaining OCFL fields though. I need to modify PaHM
and ADCIRC to allow for the filtering of these fields.
Also in response to
The OFCL time intervals are not constant, using the OFCI field ... Right now for SymH only BEST and OFCL are accepted, right? So if we use OFCI we can only use it with GAHM, isn't it so?
Correct. You may want to rename the OCFI fields to OFCL from within StormEvents. I will modify PaHM and possibly ADCIRC
to accept these fields as well.
Just have in mind that the OCFL fields are irregularly spaced in time (not every six hours). In PaHM I do a temporal interpolation to bring the data to the time intervals requested by the user. In ADCIRC these fields are temporarily interpolated (linearly) at the end at each model's time step. It will be a good idea to know how NHC does this interpolation.
And for
The forecast dates need to be increasing for it to work with GAHM (at least in ADCIRC) I meant to say we cannot have all 0 forecast hours (even with different date tags) for BEST track in ADCIRC. Is it the same in PaHM? In other words the following doesn't work for ADCIRC GAHM I think:
For BEST fields the 6th column should always have 0 values (the timestamp 2022092600 is exactly the time for the data to be used). So the second block:
instead it should be like:
AL, 09, 2022092600, , BEST, 0, 168N, 809W, 50, 991, TS, 34, NEQ, 60, 60, 0, 30, 1007, 120, 30, 60, 0, L, 0, , 0, 0, IAN, D, 12, NEQ, 30, 0, 0, 0, genesis-num, 028, AL, 09, 2022092600, , BEST, 0, 168N, 809W, 50, 991, TS, 50, NEQ, 30, 0, 0, 0, 1007, 120, 30, 60, 0, L, 0, , 0, 0, IAN, D, 12, NEQ, 30, 0, 0, 0, genesis-num, 028, AL, 09, 2022092606, , BEST, 6, 177N, 817W, 65, 985, HU, 34, NEQ, 70, 70, 30, 70, 1007, 150, 15, 80, 0, L, 0, , 0, 0, IAN, D, 12, NEQ, 45, 30, 30, 30, genesis-num, 028, AL, 09, 2022092606, , BEST, 6, 177N, 817W, 65, 985, HU, 50, NEQ, 30, 30, 0, 20, 1007, 150, 15, 80, 0, L, 0, , 0, 0, IAN, D, 12, NEQ, 45, 30, 30, 30, genesis-num, 028, AL, 09, 2022092606, , BEST, 6, 177N, 817W, 65, 985, HU, 64, NEQ, 15, 0, 0, 0, 1007, 150, 15, 80, 0, L, 0, , 0, 0, IAN, D, 12, NEQ, 45, 30, 30, 30, genesis-num, 028, AL, 09, 2022092612, , BEST, 12, 187N, 824W, 70, 981, HU, 34, NEQ, 90, 80, 40, 90, 1008, 150, 15, 85, 0, L, 0, , 0, 0, IAN, D, 12, NEQ, 60, 30, 30, 60, genesis-num, 028, AL, 09, 2022092612, , BEST, 12, 187N, 824W, 70, 981, HU, 50, NEQ, 40, 40, 0, 30, 1008, 150, 15, 85, 0, L, 0, , 0, 0, IAN, D, 12, NEQ, 60, 30, 30, 60, genesis-num, 028, AL, 09, 2022092612, , BEST, 12, 187N, 824W, 70, 981, HU, 64, NEQ, 20, 0, 0, 0, 1008, 150, 15, 85, 0, L, 0, , 0, 0,
won't work either in ADCIRC or PaHM.
Panagiotis Velissariou, Ph.D., P.E. UCAR Scientist National Ocean and Atmospheric Administration National Ocean Service Office of Coast Survey CSDL/CMMB Physical Scientist - Project Lead cell: (205) 227-9141 email: @.***
On Tue, Jun 27, 2023 at 1:16 PM Soroosh Mani @.***> wrote:
@pvelissariou1 https://github.com/pvelissariou1 thank you for the information. I just have some follow up questions/points:
In both models OFCL filtering is not performed at this point
Isn't this line doing the filtering in PaHM for SymH (not GAHM)? Lines 1024-1026
IF (iCnt > 1) THEN IF ( (strOut%fcstInc(iCnt) /= 0) .AND. (strOut%fcstInc(iCnt) == strOut%fcstInc(iCnt - 1))) CYCLE END IF
Also in response to
The OFCL time intervals are not constant, using the OFCI field ...
Right now for SymH only BEST and OFCL are accepted, right? So if we use OFCI we can only use it with GAHM, isn't it so?
And for
The forecast dates need to be increasing for it to work with GAHM (at least in ADCIRC)
I meant to say we cannot have all 0 forecast hours (even with different date tags) for BEST track in ADCIRC. Is it the same in PaHM? In other words the following doesn't work for ADCIRC GAHM I think:
AL, 09, 2022092600, , BEST, 0, 168N, 809W, 50, 991, TS, 34, NEQ, 60, 60, 0, 30, 1007, 120, 30, 60, 0, L, 0, , 0, 0, IAN, D, 12, NEQ, 30, 0, 0, 0, genesis-num, 028, AL, 09, 2022092600, , BEST, 0, 168N, 809W, 50, 991, TS, 50, NEQ, 30, 0, 0, 0, 1007, 120, 30, 60, 0, L, 0, , 0, 0, IAN, D, 12, NEQ, 30, 0, 0, 0, genesis-num, 028, AL, 09, 2022092606, , BEST, 0, 177N, 817W, 65, 985, HU, 34, NEQ, 70, 70, 30, 70, 1007, 150, 15, 80, 0, L, 0, , 0, 0, IAN, D, 12, NEQ, 45, 30, 30, 30, genesis-num, 028, AL, 09, 2022092606, , BEST, 0, 177N, 817W, 65, 985, HU, 50, NEQ, 30, 30, 0, 20, 1007, 150, 15, 80, 0, L, 0, , 0, 0, IAN, D, 12, NEQ, 45, 30, 30, 30, genesis-num, 028, AL, 09, 2022092606, , BEST, 0, 177N, 817W, 65, 985, HU, 64, NEQ, 15, 0, 0, 0, 1007, 150, 15, 80, 0, L, 0, , 0, 0, IAN, D, 12, NEQ, 45, 30, 30, 30, genesis-num, 028, AL, 09, 2022092612, , BEST, 0, 187N, 824W, 70, 981, HU, 34, NEQ, 90, 80, 40, 90, 1008, 150, 15, 85, 0, L, 0, , 0, 0, IAN, D, 12, NEQ, 60, 30, 30, 60, genesis-num, 028, AL, 09, 2022092612, , BEST, 0, 187N, 824W, 70, 981, HU, 50, NEQ, 40, 40, 0, 30, 1008, 150, 15, 85, 0, L, 0, , 0, 0, IAN, D, 12, NEQ, 60, 30, 30, 60, genesis-num, 028, AL, 09, 2022092612, , BEST, 0, 187N, 824W, 70, 981, HU, 64, NEQ, 20, 0, 0, 0, 1008, 150, 15, 85, 0, L, 0, , 0, 0, IAN, D, 12, NEQ, 60, 30, 30, 60, genesis-num, 028, AL, 09, 2022092618, , BEST, 0, 197N, 830W, 80, 976, HU, 34, NEQ, 100, 90, 60, 90, 1008, 150, 20, 100, 0, L, 0, , 0, 0, IAN, D, 12, NEQ, 120, 60, 30, 75, genesis-num, 028, AL, 09, 2022092618, , BEST, 0, 197N, 830W, 80, 976, HU, 50, NEQ, 50, 50, 20, 30, 1008, 150, 20, 100, 0, L, 0, , 0, 0, IAN, D, 12, NEQ, 120, 60, 30, 75, genesis-num, 028, AL, 09, 2022092618, , BEST, 0, 197N, 830W, 80, 976, HU, 64, NEQ, 30, 25, 0, 20, 1008, 150, 20, 100, 0, L, 0, , 0, 0, IAN, D, 12, NEQ, 120, 60, 30, 75, genesis-num, 028, AL, 09, 2022092700, , BEST, 0, 208N, 833W, 85, 965, HU, 34, NEQ, 100, 90, 60, 90, 1006, 130, 20, 105, 0, L, 0, , 0, 0, IAN, D, 12, NEQ, 150, 120, 60, 90, genesis-num, 028,
instead it should be like:
AL, 09, 2022092600, , BEST, 0, 168N, 809W, 50, 991, TS, 34, NEQ, 60, 60, 0, 30, 1007, 120, 30, 60, 0, L, 0, , 0, 0, IAN, D, 12, NEQ, 30, 0, 0, 0, genesis-num, 028, AL, 09, 2022092600, , BEST, 0, 168N, 809W, 50, 991, TS, 50, NEQ, 30, 0, 0, 0, 1007, 120, 30, 60, 0, L, 0, , 0, 0, IAN, D, 12, NEQ, 30, 0, 0, 0, genesis-num, 028, AL, 09, 2022092606, , BEST, 6, 177N, 817W, 65, 985, HU, 34, NEQ, 70, 70, 30, 70, 1007, 150, 15, 80, 0, L, 0, , 0, 0, IAN, D, 12, NEQ, 45, 30, 30, 30, genesis-num, 028, AL, 09, 2022092606, , BEST, 6, 177N, 817W, 65, 985, HU, 50, NEQ, 30, 30, 0, 20, 1007, 150, 15, 80, 0, L, 0, , 0, 0, IAN, D, 12, NEQ, 45, 30, 30, 30, genesis-num, 028, AL, 09, 2022092606, , BEST, 6, 177N, 817W, 65, 985, HU, 64, NEQ, 15, 0, 0, 0, 1007, 150, 15, 80, 0, L, 0, , 0, 0, IAN, D, 12, NEQ, 45, 30, 30, 30, genesis-num, 028, AL, 09, 2022092612, , BEST, 12, 187N, 824W, 70, 981, HU, 34, NEQ, 90, 80, 40, 90, 1008, 150, 15, 85, 0, L, 0, , 0, 0, IAN, D, 12, NEQ, 60, 30, 30, 60, genesis-num, 028, AL, 09, 2022092612, , BEST, 12, 187N, 824W, 70, 981, HU, 50, NEQ, 40, 40, 0, 30, 1008, 150, 15, 85, 0, L, 0, , 0, 0, IAN, D, 12, NEQ, 60, 30, 30, 60, genesis-num, 028, AL, 09, 2022092612, , BEST, 12, 187N, 824W, 70, 981, HU, 64, NEQ, 20, 0, 0, 0, 1008, 150, 15, 85, 0, L, 0, , 0, 0, ...
— Reply to this email directly, view it on GitHub https://github.com/oceanmodeling/StormEvents/issues/84#issuecomment-1610004548, or unsubscribe https://github.com/notifications/unsubscribe-auth/APC7TP3ZGPHFFFVYFLS4SKTXNMPP3ANCNFSM6AAAAAAZUFQY2I . You are receiving this because you were mentioned.Message ID: @.***>
@WPringle please see above. It seems that we don't need the forecast hours for GAHM on BEST
track.
@SorooshMani-NOAA For everything except ADCIRC GAHM (original NHC format):
For ADCIRC GAHM:
@WPringle, @pvelissariou1 as we discussed in the meeting, we'd like to focus on theses three columns datetime tag, track type, and forecast hour, i.e. 3rd, 5th and 6th (e.g. 20180901
, OFCL
, 24
) from the NHC track file (ATCF). The main concern here is what the expected track input is for PaHM and ADCIRC for either of the GAHM or Holland models. There are also missing forecast fields that we'll address later.
Note that we're not talking about column spacing or value types or orders, we already assume it's the same for all cases. The question is about the values within each column in relation to other columns.
So far, this is my understanding of where things stand based on all that was discussed:
OFCL
vs BEST
track types do not matterThis means that the output expected from storm events should be different from original NHC file, which means (with focus on the 3 aforementioned columns):
stormevents
output file should always have increasing datetag (to work with symmetric)stormevents
output file should always have increasing forecast hour (to work with GAHM)stormevents
output file should contain 1 track, at least this should be an optionstormevents
output file has equal time intervals between track entries (interpolation) -- is this optional or necessary for PaHM to work @pvelissariou1?stormevents
output file should work for ADCIRC and PaHM, for either GAHM or symmetricstormevents
reads track files, there should be a way to distinguish original vs modified track (e.g. by extension)OFCL
or BEST
without any change to any of the other columns (among the 3) as long as all other items above are trueThese output requirements mean:
BEST
track, the output file is different in that its forecast hours are not 0
in the outputOFCL
track, the output file is different because the datetime tags are increasing as opposed to constant in original single track@WPringle @pvelissariou1, please confirm that these statements are valid, then I'll go ahead and make the changes.
@SorooshMani-NOAA No, for OFCL
we do not require the datetime tags to be increasing. They can stay as is. Only change is for best-track GAHM for ADCIRC where forecast hours needs to be present.
I think I misunderstood:
For everything except ADCIRC GAHM (original NHC format):
- Actual time should be validation time + forecast time
What do you mean by "actual time" then?
Also does it matter if for non-GAHM model the forecast hours are not all 0
s?
"actual time" means the time that the values are supposed to be representative of, sorry perhaps in that I mean validation time.
The datetime tag represents the time that the forecast is made, or rather the analysis time.
In ADCIRC the symmetric model actually reads the datetimes and forecast hours correctly. It is only the GAHM model which for some reason they ignored the datetimes and only read forecast hours assuming that 0 is the start time of the simulation
@WPringle I just remembered @pvelissariou1 said (if I remember correctly) that for OFCL
, PaHM only picks up hour-0 of each advisory, hence the need to fake best track for the simulation. Based on what you're saying that's different in ADCIRC, right? So it's not all the same between PaHM and ADCIRC?
@Soroosh Mani - NOAA Affiliate @.> , @William Pringle @.> Soroosh as William mentioned in GAHM the forecast hours column is used to check the forecast cycle, the subroutine NWS20GET in ADCIRC reads a modified version of fort.22 to read all required variables (not all of them found in the original track file) to run GAHM.
Having said that, in PAHM I read the best track file and internally I adjust the forecast hours column as shown in column 6 ORIGINAL florence_BEST.dat AL, 06, 2018083006, , BEST, 0, ... AL, 06, 2018083012, , BEST, 0, ... AL, 06, 2018083018, , BEST, 0, ... AL, 06, 2018083100, , BEST, 0, ... AL, 06, 2018083106, , BEST, 0, ... AL, 06, 2018083112, , BEST, 0, ... AL, 06, 2018083118, , BEST, 0, ... AL, 06, 2018090100, , BEST, 0, ... AL, 06, 2018090106, , BEST, 0, ... AL, 06, 2018090112, , BEST, 0, ... AL, 06, 2018090118, , BEST, 0, ... AL, 06, 2018090200, , BEST, 0, ...
MODIFIED florence_BEST.dat_adj AL, 06, 2018083006, 0, BEST, 6, ... AL, 06, 2018083012, 0, BEST, 12, ... AL, 06, 2018083018, 0, BEST, 18, ... AL, 06, 2018083100, 0, BEST, 24, ... AL, 06, 2018083106, 0, BEST, 30, ... AL, 06, 2018083112, 0, BEST, 36, ... AL, 06, 2018083118, 0, BEST, 42, ... AL, 06, 2018090100, 0, BEST, 48, ... AL, 06, 2018090106, 0, BEST, 54, ... AL, 06, 2018090112, 0, BEST, 60, ... AL, 06, 2018090118, 0, BEST, 66, ... AL, 06, 2018090200, 0, BEST, 72, ... This format works in both Holland and GAHM models. I have tested this with ADCIRC. Also, in both GAHM and Holland the timestamp column is read and the field is split to year, month, day and hour values.
Panagiotis Velissariou, Ph.D., P.E. UCAR Scientist National Ocean and Atmospheric Administration National Ocean Service Office of Coast Survey CSDL/CMMB Physical Scientist - Project Lead cell: (205) 227-9141 email: @.***
On Tue, Jul 11, 2023 at 1:37 PM William Pringle @.***> wrote:
In ADCIRC the symmetric model actually reads the datetimes and forecast hours correctly. It is only the GAHM model which for some reason they ignored the datetimes and only read forecast hours assuming that 0 is the start time of the simulation
— Reply to this email directly, view it on GitHub https://github.com/oceanmodeling/StormEvents/issues/84#issuecomment-1631315921, or unsubscribe https://github.com/notifications/unsubscribe-auth/APC7TP6TNCEY5CF372DYKELXPWMO3ANCNFSM6AAAAAAZUFQY2I . You are receiving this because you were mentioned.Message ID: @.***>
@pvelissariou1 @SorooshMani-NOAA That's true that modified format would work for both Holland and GAHM. So for BEST we can just use that format as the fort.22
, for OFCL I would advise against updating the datetime column.
@Soroosh Mani - NOAA Affiliate @.***> In PaHM I read the timestamp and the forecast hour (0 for best) and I calculate the proper year, month, day, hour values for that data row. Please refer to my previous reply on how I do things in PaHM. For GAHM the best track file needs to be preprocessed before can be digested by ADCIRC.
Panagiotis Velissariou, Ph.D., P.E. UCAR Scientist National Ocean and Atmospheric Administration National Ocean Service Office of Coast Survey CSDL/CMMB Physical Scientist - Project Lead cell: (205) 227-9141 email: @.***
On Tue, Jul 11, 2023 at 2:17 PM Soroosh Mani @.***> wrote:
@WPringle https://github.com/WPringle I just remembered @pvelissariou1 https://github.com/pvelissariou1 said (if I remember correctly) that for OFCL, PaHM only picks up hour-0 of each advisory, hence the need to fake best track for the simulation. Based on what you're saying that's different in ADCIRC, right? So it's not all the same between PaHM and ADCIRC?
— Reply to this email directly, view it on GitHub https://github.com/oceanmodeling/StormEvents/issues/84#issuecomment-1631380709, or unsubscribe https://github.com/notifications/unsubscribe-auth/APC7TPYFT3FE7RYFVYVCHKLXPWRDRANCNFSM6AAAAAAZUFQY2I . You are receiving this because you were mentioned.Message ID: @.***>
@Soroosh Mani - NOAA Affiliate @.> , @William Pringle @.> My understanding is that ADCIRC (PaHM as well) uses the timestamp + forecast hours fields to determine the exact time location of the data within the simulation time array (it interpolates the data at the time location of the simulation). So, as long as timestamp+forecast hours are set properly the "time location" can be calculated accurately. My personal preference would be to update both the timestamp and the forecast hour columns and keep track of the forecast analysis time.
Panagiotis Velissariou, Ph.D., P.E. UCAR Scientist National Ocean and Atmospheric Administration National Ocean Service Office of Coast Survey CSDL/CMMB Physical Scientist - Project Lead cell: (205) 227-9141 email: @.***
On Tue, Jul 11, 2023 at 1:19 PM Soroosh Mani @.***> wrote:
@WPringle https://github.com/WPringle, @pvelissariou1 https://github.com/pvelissariou1 as we discussed in the meeting, we'd like to focus on theses three columns datetime tag, track type, and forecast hour, i.e. 3rd, 5th and 6th (e.g. 20180901, OFCL, 24) from the NHC track file (ATCF). The main concern here is what the expected track input is for PaHM and ADCIRC for either of the GAHM or Holland models. There are also missing forecast fields that we'll address later.
Note that we're not talking about column spacing or value types or orders, we already assume it's the same for all cases. The question is about the values within each column in relation to other columns.
So far, this is my understanding of where things stand based on all that was discussed:
- ADCIRC and PaHM can work with the same input track files
- In either ADCIRC or PaHM OFCL vs BEST track types do not matter
- Both ADCIRC and PaHM's symmetric Holland implementation requires datetime tags to be increasing (for every given isotach)
- Both ADCIRC and PaHM's GAHM implementation requires forecast hours to be increasing (for every given isotach)
This means that the output expected from storm events should be different from original NHC file, which means (with focus on the 3 aforementioned columns):
- stormevents output file should always have increasing datetag (to work with symmetric)
- stormevents output file should always have increasing forecast hour (to work with GAHM)
- stormevents output file should contain 1 track, at least this should be an option
- stormevents output file has equal time intervals between track entries (interpolation) -- is this optional or necessary for PaHM to work @pvelissariou1 https://github.com/pvelissariou1?
- The same stormevents output file should work for ADCIRC and PaHM, for either GAHM or symmetric
- When stormevents reads track files, there should be a way to distinguish original vs modified track (e.g. by extension)
- Based on all above, it shouldn't matter what the track type is, so it could be either OFCL or BEST without any change to any of the other columns (among the 3) as long as all other items above are true
These output requirements mean:
- If input is BEST track, the output file is different in that its forecast hours are not 0 in the output
- If input is OFCL track, the output file is different because the datetime tags are increasing as opposed to constant in original single track
@WPringle https://github.com/WPringle @pvelissariou1 https://github.com/pvelissariou1, please confirm that these statements are valid, then I'll go ahead and make the changes.
— Reply to this email directly, view it on GitHub https://github.com/oceanmodeling/StormEvents/issues/84#issuecomment-1631281796, or unsubscribe https://github.com/notifications/unsubscribe-auth/APC7TP2TO23XRVD4VWHQCNLXPWKI5ANCNFSM6AAAAAAZUFQY2I . You are receiving this because you were mentioned.Message ID: @.***>
@SorooshMani-NOAA @pvelissariou1 need to be careful to tag the correct Soroosh 🤣
So, let's just stick to the standard NHC format which PaHM can handle no problems (the .dat
). We only require the preprocessing for ADCIRC GAHM best-track as described by Takis, which is either done internally by PaHM or can be done by stormevents to pass to ADCIRC when output with fort.22
.
@William Pringle @.> @Soroosh Mani - NOAA Affiliate @.> Yes I agree William, Soroosh if I remember correctly, pyADCIRC does this sort of thing (that is, preprocessing the best track file).
Panagiotis Velissariou, Ph.D., P.E. UCAR Scientist National Ocean and Atmospheric Administration National Ocean Service Office of Coast Survey CSDL/CMMB Physical Scientist - Project Lead cell: (205) 227-9141 email: @.***
On Tue, Jul 11, 2023 at 3:59 PM William Pringle @.***> wrote:
@SorooshMani-NOAA https://github.com/SorooshMani-NOAA @pvelissariou1 https://github.com/pvelissariou1 need to be careful to tag the correct Soroosh 🤣
So, let's just stick to the standard NHC format which PaHM can handle no problems (the .dat). We only require the preprocessing for ADCIRC GAHM best-track as described by Takis, which is either done internally by PaHM or can be done by stormevents to pass to ADCIRC when output with fort.22.
— Reply to this email directly, view it on GitHub https://github.com/oceanmodeling/StormEvents/issues/84#issuecomment-1631501270, or unsubscribe https://github.com/notifications/unsubscribe-auth/APC7TPZCHYXLPNJL3UY2TEDXPW5C3ANCNFSM6AAAAAAZUFQY2I . You are receiving this because you were mentioned.Message ID: @.***>
@pvelissariou1 I think GitHub has issues with in-email reply, let's stick with on-website replies to avoid issues! In any case, let me think about it a bit. I'm more and more convinced that maybe we should remove all implicit conversions and just have methods/functions like normalize_for_adcirc
or normalize_for_pahm
that user needs to explicitly call before writing to output.
Since that has implications on how ensembleperturbation
works, I need to make sure any change is either reflected downstream too.
@SorooshMani-NOAA I like that idea Soroosh, but what I got from Takis is that I don't think we need a normalize_for_pahm
.
I would have the normalize_for_adcirc
as an optional kwarg for the write function,
William is right, whatever works for ADCIRC it will work for PaHM as well.
Panagiotis Velissariou, Ph.D., P.E. UCAR Scientist National Ocean and Atmospheric Administration National Ocean Service Office of Coast Survey CSDL/CMMB Physical Scientist - Project Lead cell: (205) 227-9141 email: @.***
On Tue, Jul 11, 2023 at 4:42 PM William Pringle @.***> wrote:
@SorooshMani-NOAA https://github.com/SorooshMani-NOAA I like that idea Soroosh, but what I got from Takis is that I don't think we need a normalize_for_pahm.
— Reply to this email directly, view it on GitHub https://github.com/oceanmodeling/StormEvents/issues/84#issuecomment-1631548769, or unsubscribe https://github.com/notifications/unsubscribe-auth/APC7TP6XMOXSESMM4E3IPD3XPXCCXANCNFSM6AAAAAAZUFQY2I . You are receiving this because you were mentioned.Message ID: @.***>
Just to be concrete, so these should work for both GAHM and Holland for both PaHM and ADCIRC without any issues:
Modified BEST
AL, 06, 2018083006, 0, BEST, 6, ...
AL, 06, 2018083012, 0, BEST, 12, ...
AL, 06, 2018083018, 0, BEST, 18, ...
AL, 06, 2018083100, 0, BEST, 24, ...
AL, 06, 2018083106, 0, BEST, 30, ...
AL, 06, 2018083112, 0, BEST, 36, ...
AL, 06, 2018083118, 0, BEST, 42, ...
AL, 06, 2018090100, 0, BEST, 48, ...
AL, 06, 2018090106, 0, BEST, 54, ...
AL, 06, 2018090112, 0, BEST, 60, ...
AL, 06, 2018090118, 0, BEST, 66, ...
AL, 06, 2018090200, 0, BEST, 72, ...
Unmodified OFCL
AL, 08, 2018090712, 03, OFCL, 0, ..., 34, ...
AL, 08, 2018090712, 03, OFCL, 3, ..., 34, ...
AL, 08, 2018090712, 03, OFCL, 12, ..., 34, ...
AL, 08, 2018090712, 03, OFCL, 24, ..., 34, ...
AL, 08, 2018090712, 03, OFCL, 36, ..., 34, ...
AL, 08, 2018090712, 03, OFCL, 48, ..., 34, ...
AL, 08, 2018090712, 03, OFCL, 48, ..., 50, ...
AL, 08, 2018090712, 03, OFCL, 72, ..., 34, ...
AL, 08, 2018090712, 03, OFCL, 72, ..., 50, ...
AL, 08, 2018090712, 03, OFCL, 96, ..., 34, ...
AL, 08, 2018090712, 03, OFCL, 120, ..., 34, ...
AL, 08, 2018090712, 03, OFCL, 144, ..., 34, ...
AL, 08, 2018090712, 03, OFCL, 168, ..., 34, ...
@SorooshMani-NOAA Looks good. I suppose we should actually test this all in PaHM and ADCIRC.
See https://github.com/noaa-ocs-modeling/PaHM/issues/27#issuecomment-1664135037 for formatting related issues for OFCL tracks.
Issue related to missing fields: https://github.com/noaa-ocs-modeling/PaHM/issues/29
In SCHISM, the GAHM model has been modified slightly to use the radius of the last closed isobar (RRP) to reduce the amount of calculations in the domain (similar to the Holland model) by eliminating the nodal points outside RRP (I disagree with this approach but this is for future discussion with the SCHISM developers).
In our case, in the OFCL track files all the RRPs are set to zero, hence the problem with the OFCL files. My suggestion for a temporary workaround is to replace RRP by the max(radius1, radius2, radius3, radius4) of the 34 isotach.
Also see #86
See https://github.com/noaa-ocs-modeling/EnsemblePerturbation/issues/99.
There seems to be different contradicting requirements for track inputs for ADCIRC vs PaHM. The ones currently identified are
BEST
vsOFCL
)BEST
track has increasing date tags from ATCF but0
for all forecast hoursOFCL
and other non-BEST
tracks have fixed date tags for each issued advisory (i.e. track start time), but have increasing forecast hoursThese changes potentially require a separate file extension for PaHM vs ADCIRC compliant input files (i.e.
stormevents
outputs) as discussed in https://github.com/noaa-ocs-modeling/EnsemblePerturbation/pull/98#issuecomment-1604801773