From f8af3f0d11a0f8e1691d54a2dc4d9096e2d58ffb Mon Sep 17 00:00:00 2001 From: Pao Corrales Date: Tue, 2 Jan 2024 19:00:50 -0300 Subject: [PATCH] add fgat method explanation --- content/gsi/05-tutorial.qmd | 165 ++++++++++++++++++++++++++++++- content/gsi/img/fgat_diagram.png | Bin 0 -> 18246 bytes 2 files changed, 160 insertions(+), 5 deletions(-) create mode 100644 content/gsi/img/fgat_diagram.png diff --git a/content/gsi/05-tutorial.qmd b/content/gsi/05-tutorial.qmd index 9868fc1..284f556 100644 --- a/content/gsi/05-tutorial.qmd +++ b/content/gsi/05-tutorial.qmd @@ -48,7 +48,7 @@ The background files includes the 10-member ensemble generated using the WRF-ARW By cloning the tutorial repo and downloading the associated data with the provied script you will end up with the following folder structure. -```bash +``` bash tutorial_gsi/ ├── download_data.sh ├── fix @@ -179,7 +179,7 @@ The example used in this tutorial is relatively small, so while you may need a H Here are the \~20 first lines of the script `run_gsi.sh`: -```bash +``` bash #PBS -N TEST-1-GSI #PBS -m abe #PBS -l walltime=03:00:00 @@ -213,7 +213,7 @@ The script assume many things, in particular, where the configuration files, obs The other very possible issue is machine dependent. GSI creates files with the information of the observations and background called `pe\*something`. Those files are later concatenated in `diag_*` files. This process depends on listing all the types of observations with some regex magic: -```bash +``` bash listall=`ls pe* | cut -f2 -d"." | awk '{print substr($0, 0, length($0)-2)}' | sort | uniq ` for type in $listall; do @@ -241,7 +241,7 @@ The second step to run GSI with the Kalman Filter method is running the code tha Similarly to the first step, the script it's almost ready to run and you only need to change `BASEDIR` and `GSIDIR` variables. -```bash +``` bash #PBS -N tutorial-enkf #PBS -m abe #PBS -l walltime=03:00:00 @@ -282,6 +282,161 @@ If you get a `exit 0` at the end, it probably means that everything went well. O ## Running GSI using the FGAT method +The tutorial is configured to use the FGAT (First Guess at Appropriate Time) methods, this means that will GSI attempt to read multiple time level backgrounds a show in the following diagram. + +![FGAT method](img/fgat_diagram.png){fig-alt="A diagram that shows the assimilation window of 1 h centered at 12 UTC. The observations are used every 10 minutes"} + +There is no option in the namelist or configuration files to use the FGAT method. To "activate" this option GSI needs to find the appropiate files in appropriate folder. In this example we have 7 files in total for each member, 1 background file at the assimilation time plus 3 files every 10 minutes before and after the assimilation time. + +So, GSI will expect to find files called `wrf_inou1` to `wrf_inou7`. The fonder structure looks like this: + +``` bash +GUESS/ +└── 20181122120000 + ├── 00 + │   ├── wrfarw.ensmean + │   ├── wrfarw.mem001 + │   ├── wrfarw.mem002 + │   ├── wrfarw.mem003 + │   ├── wrfarw.mem004 + │   ├── wrfarw.mem005 + │   ├── wrfarw.mem006 + │   ├── wrfarw.mem007 + │   ├── wrfarw.mem008 + │   ├── wrfarw.mem009 + │   └── wrfarw.mem010 + ├── 01 + │   ├── wrf_inou1 + │   ├── wrf_inou2 + │   ├── wrf_inou3 + │   ├── wrf_inou4 + │   ├── wrf_inou5 + │   ├── wrf_inou6 + │   └── wrf_inou7 + ├── 02 + │   ├── wrf_inou1 + │   ├── wrf_inou2 + │   ├── wrf_inou3 + │   ├── wrf_inou4 + │   ├── wrf_inou5 + │   ├── wrf_inou6 + │   └── wrf_inou7 + ├── 03 + │   ├── wrf_inou1 + │   ├── wrf_inou2 + │   ├── wrf_inou3 + │   ├── wrf_inou4 + │   ├── wrf_inou5 + │   ├── wrf_inou6 + │   └── wrf_inou7 + ├── 04 + │   ├── wrf_inou1 + │   ├── wrf_inou2 + │   ├── wrf_inou3 + │   ├── wrf_inou4 + │   ├── wrf_inou5 + │   ├── wrf_inou6 + │   └── wrf_inou7 + ├── 05 + │   ├── wrf_inou1 + │   ├── wrf_inou2 + │   ├── wrf_inou3 + │   ├── wrf_inou4 + │   ├── wrf_inou5 + │   ├── wrf_inou6 + │   └── wrf_inou7 + ├── 06 + │   ├── wrf_inou1 + │   ├── wrf_inou2 + │   ├── wrf_inou3 + │   ├── wrf_inou4 + │   ├── wrf_inou5 + │   ├── wrf_inou6 + │   └── wrf_inou7 + ├── 07 + │   ├── wrf_inou1 + │   ├── wrf_inou2 + │   ├── wrf_inou3 + │   ├── wrf_inou4 + │   ├── wrf_inou5 + │   ├── wrf_inou6 + │   └── wrf_inou7 + ├── 08 + │   ├── wrf_inou1 + │   ├── wrf_inou2 + │   ├── wrf_inou3 + │   ├── wrf_inou4 + │   ├── wrf_inou5 + │   ├── wrf_inou6 + │   └── wrf_inou7 + ├── 09 + │   ├── wrf_inou1 + │   ├── wrf_inou2 + │   ├── wrf_inou3 + │   ├── wrf_inou4 + │   ├── wrf_inou5 + │   ├── wrf_inou6 + │   └── wrf_inou7 + └── 10 + ├── wrf_inou1 + ├── wrf_inou2 + ├── wrf_inou3 + ├── wrf_inou4 + ├── wrf_inou5 + ├── wrf_inou6 + └── wrf_inou7 +``` + +The files in folders `01` to `10` are the ones used during the assimilation. The files in fonder `00` where used to calculate the ensemble mean and can be also used to run GSI without the FGAT option. For that it is necessary to uncomment line 102 in the `run_gsi.sh` script: + +``` bash +# BK_FILE_mem=${BK_ROOT}/wrfarw.mem +``` + +and change lines 600 and 601 from: + +``` bash +cp ${BK_ROOT}/${ensmemid}/wrf_inou* . +BK_FILE_ANA=wrf_inou4 +``` + +to: + +``` bash +cp ${BK_ROOT}/00/wrfarw_mem0${ensmemid}. +BK_FILE_ANA=${BK_FILE} +``` + +That way, GSI will ignore the other folder and only use 1 background file for each member. + +To check if GSI is doing what's suppose to, we need to check the `stdout` file created during the observation operator step. + +``` bash +CONVERT_NETCDF_MASS: problem with flnm1 = wrf_inou1, Status = -1021 +``` + +Means that GSI did not find all the background files and only used the one at the analysis time. + +Instead if you see something this: + +``` bash +convert wrf_inou1 to sigf01 + iy,m,d,h,m,s= 2018 11 22 11 30 0 + dh1 = 1 + rmse_var = SMOIS + ndim1 = 3 + ordering = XYZ + staggering = N/A + start_index = 1 1 1 0 + end_index = 199 239 4 0 +``` + +You'll know that GSI is using the FGAT method. The example here shows that GSI found the `wrf_inout1` file that is renaming to `sig01` and then, information related to the time and domain characteristics. This will be repeated for each background file. In this case the first file corresponds to th 11:30 UTC of November 2018 and after that there is 1 file every 10 minutes. + +This period between background files (10 minutes) is defined by the user when saving the background files. Again there is no configuration option to do this. GSI relies on finding the files in the especified folder. + +------------------------------------------------------------------------ + ::: callout-important The `run_gsi.sh` and `run_enkf.sh` scripts mentioned in this tutorial are derived from the example scripts provided with the [Community GSIV3.7 Online Tutorial](https://dtcenter.org/community-gsiv3-7-online-tutorial). -::: \ No newline at end of file +::: diff --git a/content/gsi/img/fgat_diagram.png b/content/gsi/img/fgat_diagram.png new file mode 100644 index 0000000000000000000000000000000000000000..829f8ce562cfc4825354ee6ef96a4847eb943de6 GIT binary patch literal 18246 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 literal 0 HcmV?d00001