Difference between revisions of "Dynamic water level correction"
m (→Frequently Asked Questions)
m (Taylorgasher moved page Water level offset to Dynamic water level correction: matching updates to input parameters and variables in code)
Revision as of 17:43, 16 June 2020
Improvements in forecasting and hindcasting of tropical cyclones have led to much more accurate meteorological data associated with these storms. These improvements, together with more detailed representations of the physics and greater model resolution, have improved storm surge model skill. This has led to a state in which storm surge forecast and hindcast errors are often dominated by what we refer to as unresolved drivers, i.e., physical processes that are not explicitly included in storm surge models. Common examples include baroclinic processes, major oceanic currents, precipitation, steric fluctuations and far-field atmospheric forcing. These phenomena typically have longer timescales than the storm surge itself and therefore often show up as biases in water level during the period leading up to, encompassing and following the surge event. [From T.G.Asher]
[include reference to Taylor's paper in references section at end]
AMS 2017 Presentation from Luettich, et al:
Representing Low Frequency, Spatially Varying Waterlevel Anomalies in Storm Surge Forecasting
[include link to Rick's powerpoint slides] [include reference to Rick's powerpoint slides in references section at end]
In order to accommodate these unresolved drivers, a water level offset ingestion feature has been added to ADCIRC.
Controlling Water Level Offset
The water level offset feature is triggered by the presence of the &offsetControl namelist at the bottom of the fort.15 file. Here is an example of how this line is used:
&offsetControl offsetFileName="hsofs_offset_test_ft.dat" offsetMultiplier=0.3048, offsetRampStart=0.0, offsetRampEnd=259200.0 offsetRampReferenceTime="hotstart", offsetSkipSnaps=0 /
The code looks for the water level offset file in the same directory as the other fulldomain files, both in serial and in parallel. In parallel, each subdomain does domain decomposition of the offset data on the fly, so the only change to adcprep is the read/write of the new namelist to the subdomain fort.15 files.
The multiplier value allows us to easily change the entire dataset by single factor. It may be needed in a case where the data were provided in ft but adcirc requires meters, for example.
The offsetRampStart and offsetRampEnd parameter are the time in seconds for a linear ramp up period. The offsetRampReferenceTime parameter controls whether the ramp times are relative to the hotstart time or the coldstart time. Prior to the start of the ramp, the offset values are multiplied by 0.0, eliminating the offset until the ramp period starts.
The input parameter offsetSkipSnaps is used to skip the specified number of initial data sets in the offsets data file. It can also be used to insert blank snaps at the beginning of the run if it is negative.
Water Level Offset Input File
The water level offset input file starts with the following three lines:
# test file for 1ft offset on hsofs mesh during matthew 14400.0 # time increment between datasets -- read but ignored if constant offset 0.0 # default offset value
The first line is a comment line. The second line is the time interval in seconds between successive datasets. The third line is the default offset value; this allows us to create offset input files in a "sparse" format where only the non-default values are provided.
If there is only one dataset in the offset file, then the values are treated as temporally constant. If there is more than one dataset, ADCIRC linearly interpolates between them in time. If ADCIRC runs out of offset data, it continues with the last dataset as a set of constant values for the remainder of the run.
Because each offset dataset may have a different number of values, the # (hash, pound, or number) symbol is used as a separator. Specifically, users should place a line containing # in the first and second columns, i.e. ##, of the file after the end of the current time snap of data. When ADCIRC sees this, it understands the next line is the start of the next time snap of data.
If a water level offset input file is specified, then the time interpolated water level offset values will be written to a file called offset.63 on the same schedule as output to the fort.63. This file can then be used as a diagnostic to check that the offset values have been applied as expected.
Although the offset is implemented as a pseudo barometric pressure, it is entirely independent of any/all meteorological forcing and meteorological data. The values do not show up in the fort.71 (barometric pressure stations) or fort.73 (fulldomain barometric pressure field) output files. The offset can be used with any meteorological forcing data, or with no meteorological forcing data at all.
An ADCIRC model is coldstarted with a tide only run that uses a 10 day ramp, and runs for 15 days. How should the water level offset be configured?
In this case, I suggest that you apply your bias correction after reaching full strength tidal forcing (i.e., after the 10 day tidal ramp). So to have your bias correction ramp completed at the end of the 15 day tidal spinup, start the ramp period at 13.0 days and end it at 15.0 days. This should ensure you clearly see the correction occurring when you look at the output data, while avoiding applying the correction too rapidly. In summary, set your ramp period in the fort.15 file to
offsetRampStart =1123200.0, offsetRampEnd = 1296000.0
Since this is the model spin-up period, using a time-constant offset is likely sufficient. That means a single time snap of offset data can be supplied, for example:
# bias correction values test for GFS 20161002 cycle 00Z 99999.9 # time increment in seconds; not used in this case 0.0 # default nodal value applied to any node not specified below 234 0.5 1223 0.6 1789 -0.2 4000 0.1 ##
After the spinup, in preparation for a forecast run, when you want to migrate from one set of bias correction values to another over a 6 hour time period, the fort.15 file's
offsetControl line would be something like this:
&offsetControl offsetFileName= "offset_migration_from_00Z_to_06Z.dat", offsetMultiplier = 1.0, offsetRampStart = 1252800.0, offsetRampEnd = 1296000.0, offsetRampReferenceTime = "coldstart", offsetSkipSnaps = 0 /
and the corresponding file would look like something like the following:
# bias correction values for GFS 20161002 from cycle 00Z to cycle 06Z 21600.0 # 6 hour time increment in seconds 0.0 # default nodal value applied to any node not specified below 234 0.5 1223 0.6 1789 -0.2 4000 0.1 ## 512 0.3 1001 -0.5 2346 0.74 4000 -0.1 ##
At the end of the 15.0 day tidal spinup in this example the bias correction at node 234 would be 0.5. Three hours later (after the hotstart) it would be 0.25. Six hours after the hotstart it would be zero.
At the end of the 15.0 day tidal spinup in this example the bias correction at node 1001 would be 0.0. Three hours later (after the hotstart) it would be -0.25. Six hours after the hotstart it would be -0.5.
At the end of the 15.0 day tidal spinup in this example the bias correction at node 4000 would be 0.1. Three hours later (after the hotstart) it would be 0.0. Six hours after the hotstart it would be -0.1.
Frequently Asked Questions
Question: When writing the &offsetControl namelist, should I write the parameters on a single line, comma separated?
Answer: I always put fortran namelist parameters on a single line and separate the assignments with commas, but other formatting may be possible depending on the compiler you are using. I've never had issues with the way I format these fortran namelist input lines, but I've never tried any other way so I'll defer to your compiler's documentation on that.
Question: Do I need to ramp the offset, i.e., is it wise to do so for some reason?
Answer: We haven't tried a sudden application of the water level offset to the solution, but it should behave the same as a sudden application of atmospheric pressure forcing, which could lead to (presumably spurious) waves. Our shortest ramp up period is 12 hours but you might get away with 6 hours or even less. We have seen that rapidly ramping in the offset can lead to two outcomes that may be undesirable. One is a strong geostrophic current response. The other is that the water level response can lag behind the offset. This is most common for large water bodies with narrow connections to the open ocean, such as Pamlico Sound in North Carolina.
Question: Does the application of a dynamic water level offset surface affect the velocity solution (not just the elevation solution as it is primarily intended)?
Answer: Yes, hopefully in a physically realistic manner. As an example, when applying a water level offset to a back bay area with a nearby tidal inlet, the water level change in the back bay must be reflected in the velocity in the inlet in order to maintain continuity (conservation of mass). In the case of an initial application of a temporally steady water level offset, this velocity effect will be a one-time occurrence. On the other hand, for a time varying water level offset surface, the continuous adjustments to the water level will be continuously reflected in the velocity solution. This should be physically realistic when the water should have come from offshore, but if the elevated water level is due to rainfall, then the model is directing flow in the wrong direction.
[Ricks 2017 AMS ppt] [Taylor's manuscript]