From 482c500da51c2caf41ce3f8f011855bb4ab38d76 Mon Sep 17 00:00:00 2001 From: Juan Manuel Castillo Sanchez <48921434+ukmo-juan-castillo@users.noreply.github.com> Date: Tue, 18 May 2021 18:27:49 +0100 Subject: [PATCH] Fb coupling fields (#285) This PR adds new fields that can be sent (mean wave number, mean wave period, total ocean wind stress) and received (air density, wind stress) to/from other models via OASIS coupling, which will also be available in the model output. The fields that can be received via coupling can also be read from an external file, and using a homogeneous ice fraction is now activated when using '.inp' input files, as it was already possible to do it using '.nml' input files. In order to add this functionality it was necessary to modify the format of the ww3_shel.inp and ww3_multi.inp files, so that new flags controlling if these fields are used can be read. Furthermore, the format of the ww3_outf.inp file must be modified to accommodate the new output fields available. If no air density is read from file or via coupling, the default constant value is used. The infrastructure to read and use the wind stress is already in place, but the actual use of wind stress to drive the model is not implemented yet and it will be the aim of issue #337 * Fb oasis t+0 (#13) In the original code a coupling lag had to be used, coupling took place at the last time step but not at the first, and the coupling fields had to be written in an oasis restart file. With this ticket, the program can run in a different way by not using a coupling lag, coupling taking place at the first time step but not the last, and the coupling fields are written in the wave restart file - no extra oasis restart file needed. * Fb uprstr inp (#15) Enhancement to improve the way in which input data is read in and logged by the ww3_uprstr program: * read in variables specific to the update process selected * output the values provided in the ww3_uprstr.out log file * update the .inp template file and regtests to improve clarity and work with the changes * add capability to read inputs from a namelist (ww3_uprstr.nml) file * First set of changes, still testing * Some fixes * Further changes mainly fixing vector boundaries * Main changes * Most changes already present, only need to write in output and restart * Further changes - activate coupling * Bug fixes to make the code compile * Further changes to run regtests * Minor fixes for output, manual, and switches * Small fix to comments in model input * Remove some lines that had to be removed but were overlooked * Substitute ATTX and ATXX switches by WNTX and WNXX; add comments regarding last modification date * Change in file missed in latest commit * Minor changes fixing version change * Small fixes after reviewer's comments and to fix regtest * Changes to pass regtests * Addition of a new regtest and small fixes to ww3_prnc * Time-interpolate air density when read from file * Ensure that units are consistent * Restore long name in metadata for new fieds, and update code version for input files needed in regtest * Update last modification date; corrections for new output field: WNMEAN has now index (2,19) instead of (2,18) * Fixes from Jessica Meixner; update date of last change in restart file * Small fix to the format of the example input file ww3_multi.inp * Some fixes after merging with latest version of develop * Correct one version number * Fix the header of the table printed in log.ww3, should not cause changes in the output * Minor fix in the ww3_shel.inp file of one of the regtests * Update ww3_shel.inp * Some fixes and improvements that were proposed during the review process * Added comment to the new regtests implemented in ww3_tp2.15 Co-authored-by: Andy Saulter <48921142+ukmo-ansaulter@users.noreply.github.com> Co-authored-by: ukmo-chris.bunney Co-authored-by: Ali.Abdolali <37336972+aliabdolali@users.noreply.github.com> Co-authored-by: aliabdolali Co-authored-by: Chris Bunney <48915820+ukmo-ccbunney@users.noreply.github.com> --- manual/impl/switch.tex | 4 +- model/bin/ww3_from_ftp.sh | 3 +- model/ftn/gx_outf.ftn | 30 +- model/ftn/pdlib_field_vec.ftn | 35 +- model/ftn/w3adatmd.ftn | 127 +++++-- model/ftn/w3agcmmd.ftn | 89 ++++- model/ftn/w3fld1md.ftn | 14 +- model/ftn/w3fld2md.ftn | 13 +- model/ftn/w3fldsmd.ftn | 82 +++-- model/ftn/w3idatmd.ftn | 125 +++++-- model/ftn/w3initmd.ftn | 225 +++++++++--- model/ftn/w3iogomd.ftn | 95 ++++- model/ftn/w3iorsmd.ftn | 79 ++-- model/ftn/w3nmlmultimd.ftn | 26 +- model/ftn/w3nmlprncmd.ftn | 12 +- model/ftn/w3nmlshelmd.ftn | 24 +- model/ftn/w3oacpmd.ftn | 39 +- model/ftn/w3odatmd.ftn | 30 +- model/ftn/w3ogcmmd.ftn | 49 ++- model/ftn/w3ounfmetamd.ftn | 86 ++++- model/ftn/w3sic2md.ftn | 3 +- model/ftn/w3srcemd.ftn | 30 +- model/ftn/w3updtmd.ftn | 285 +++++++++++++- model/ftn/w3wavemd.ftn | 121 ++++-- model/ftn/w3wdatmd.ftn | 35 +- model/ftn/wminitmd.ftn | 273 +++++++------- model/ftn/wmmdatmd.ftn | 25 +- model/ftn/wmupdtmd.ftn | 172 ++++++--- model/ftn/wmwavemd.ftn | 12 +- model/ftn/ww3_gint.ftn | 129 ++++++- model/ftn/ww3_grib.ftn | 59 ++- model/ftn/ww3_ounf.ftn | 73 +++- model/ftn/ww3_outf.ftn | 65 +++- model/ftn/ww3_prep.ftn | 42 ++- model/ftn/ww3_prnc.ftn | 69 +++- model/ftn/ww3_shel.ftn | 338 ++++++++++------- model/inp/ww3_multi.inp | 31 +- model/inp/ww3_ounf.inp | 6 +- model/inp/ww3_prep.inp | 2 + model/inp/ww3_prnc.inp | 2 + model/inp/ww3_shel.inp | 4 +- model/nml/ww3_multi.nml | 2 + model/nml/ww3_ounf.nml | 6 +- model/nml/ww3_prnc.nml | 2 + model/nml/ww3_shel.nml | 2 + regtests/bin/matrix.base | 80 ++-- regtests/bin/matrix_divider_p.sh | 3 +- regtests/mww3_test_01/input/ww3_shel.inp | 4 +- .../mww3_test_02/input/ww3_multi_grdset_a.inp | 4 +- .../mww3_test_02/input/ww3_multi_grdset_b.inp | 4 +- .../mww3_test_02/input/ww3_multi_grdset_c.inp | 4 +- .../mww3_test_02/input/ww3_multi_grdset_d.inp | 4 +- .../mww3_test_03/input/ww3_multi_grdset_a.inp | 6 +- .../mww3_test_03/input/ww3_multi_grdset_b.inp | 8 +- .../mww3_test_03/input/ww3_multi_grdset_c.inp | 8 +- .../mww3_test_03/input/ww3_multi_grdset_d.inp | 12 +- .../input/ww3_multi_grdset_d2.inp | 12 +- .../mww3_test_03/input/ww3_multi_grdset_e.inp | 4 +- .../mww3_test_04/input/ww3_multi_grdset_a.inp | 6 +- .../mww3_test_04/input/ww3_multi_grdset_b.inp | 6 +- .../mww3_test_04/input/ww3_multi_grdset_c.inp | 6 +- .../mww3_test_04/input/ww3_multi_grdset_d.inp | 6 +- .../mww3_test_04/input/ww3_multi_grdset_e.inp | 6 +- .../mww3_test_04/input/ww3_multi_grdset_f.inp | 6 +- .../mww3_test_04/input/ww3_multi_grdset_g.inp | 6 +- .../mww3_test_05/input/ww3_multi_grdset_a.inp | 8 +- .../mww3_test_05/input/ww3_multi_grdset_b.inp | 4 +- .../mww3_test_05/input/ww3_multi_grdset_c.inp | 2 +- .../mww3_test_05/input/ww3_multi_grdset_d.inp | 2 +- .../mww3_test_05/input/ww3_multi_grdset_e.inp | 2 +- .../mww3_test_06/input/ww3_multi_grdset_d.inp | 26 +- .../input/ww3_multi_grdset_d_h.inp | 28 +- .../input/ww3_multi_grdset_d_r.inp | 28 +- .../mww3_test_06/input/ww3_outf_depth.inp | 4 +- .../mww3_test_07/input/ww3_multi_grdset.inp | 4 +- .../i_highres_multi/ww3_multi_grdset_a.inp | 16 +- .../mww3_test_08/i_highres_shel/ww3_shel.inp | 4 +- .../i_highres_shel_IC1/ww3_shel.inp | 4 +- .../i_lowres_multi/ww3_multi_grdset_a.inp | 16 +- .../mww3_test_08/i_lowres_shel/ww3_shel.inp | 4 +- .../i_lowres_shel_IC1/ww3_shel.inp | 4 +- .../mww3_test_08/input/ww3_multi_grdset_a.inp | 18 +- regtests/ww3_ta1/input_UPD0F_O/ww3_shel.inp | 4 +- regtests/ww3_ta1/input_UPD0F_U/ww3_shel.inp | 4 +- regtests/ww3_ta1/input_UPD2_O/ww3_shel.inp | 4 +- regtests/ww3_ta1/input_UPD2_U/ww3_shel.inp | 4 +- .../ww3_ta1/input_UPD2_U_cap/ww3_shel.inp | 4 +- regtests/ww3_ta1/input_UPD3_O/ww3_shel.inp | 4 +- regtests/ww3_ta1/input_UPD3_U/ww3_shel.inp | 4 +- .../ww3_ta1/input_UPD3_U_cap/ww3_shel.inp | 4 +- regtests/ww3_ta1/input_UPD5_O/ww3_shel.inp | 4 +- regtests/ww3_ta1/input_UPD5_U/ww3_shel.inp | 4 +- .../ww3_ta1/input_UPD5_U_cap/ww3_shel.inp | 4 +- regtests/ww3_ta1/input_UPD6_O/ww3_shel.inp | 4 +- regtests/ww3_ta1/input_UPD6_U/ww3_shel.inp | 4 +- .../ww3_ta1/input_UPD6_U_cap/ww3_shel.inp | 4 +- regtests/ww3_tbt1.1/input/ww3_shel.inp | 4 +- regtests/ww3_tbt2.1/input/ww3_shel.inp | 4 +- regtests/ww3_tc1/input/ww3_shel.inp | 4 +- regtests/ww3_tic1.1/input_IC1/ww3_shel.inp | 4 +- .../ww3_tic1.1/input_IC1_156x3/ww3_shel.inp | 4 +- .../ww3_tic1.1/input_IC2_ifr/ww3_shel.inp | 4 +- .../ww3_tic1.1/input_IC2_nondisp/ww3_shel.inp | 4 +- .../ww3_tic1.1/input_IC2_nrl/ww3_shel.inp | 4 +- regtests/ww3_tic1.1/input_IC3/ww3_shel.inp | 4 +- regtests/ww3_tic1.1/input_IC3NL/ww3_shel.inp | 4 +- .../ww3_tic1.1/input_IC3_nondisp/ww3_shel.inp | 4 +- regtests/ww3_tic1.1/input_IC4_M1/ww3_shel.inp | 4 +- regtests/ww3_tic1.1/input_IC4_M2/ww3_shel.inp | 4 +- regtests/ww3_tic1.1/input_IC4_M3/ww3_shel.inp | 4 +- regtests/ww3_tic1.1/input_IC4_M4/ww3_shel.inp | 4 +- regtests/ww3_tic1.1/input_IC4_M5/ww3_shel.inp | 4 +- regtests/ww3_tic1.1/input_IC4_M6/ww3_shel.inp | 4 +- regtests/ww3_tic1.1/input_IC4_M7/ww3_shel.inp | 4 +- regtests/ww3_tic1.1/input_IC5/ww3_shel.inp | 4 +- regtests/ww3_tic1.1/input_IS2/ww3_shel.inp | 4 +- .../ww3_tic1.2/input_IC3_A0.5k/ww3_shel.inp | 4 +- .../ww3_tic1.2/input_IC3_A1.0k/ww3_shel.inp | 4 +- .../ww3_tic1.2/input_IC3_A2.5k/ww3_shel.inp | 4 +- .../ww3_tic1.2/input_IC3_B0.5k/ww3_shel.inp | 4 +- .../ww3_tic1.2/input_IC3_B1.0k/ww3_shel.inp | 4 +- .../ww3_tic1.2/input_IC3_B2.5k/ww3_shel.inp | 4 +- .../ww3_tic1.2/input_IC3_CHENG/ww3_shel.inp | 4 +- .../ww3_tic1.2/input_IC3_V1_G/ww3_shel.inp | 4 +- .../ww3_tic1.2/input_IC3_V1_h/ww3_shel.inp | 4 +- .../ww3_tic1.3/input_IC3_0.5k/ww3_shel.inp | 4 +- .../ww3_tic1.3/input_IC3_2.5k/ww3_shel.inp | 4 +- .../ww3_tic1.3/input_IC3_CHENG/ww3_shel.inp | 4 +- .../ww3_tic1.3/input_IC3_V1_G/ww3_shel.inp | 4 +- .../ww3_tic1.3/input_IC3_V1_h/ww3_shel.inp | 4 +- regtests/ww3_tic1.4/input/ww3_shel.inp | 4 +- regtests/ww3_tic2.1/input_IC1/ww3_shel.inp | 4 +- regtests/ww3_tic2.1/input_IC2IS2/ww3_shel.inp | 4 +- regtests/ww3_tic2.1/input_IC4/ww3_shel.inp | 4 +- regtests/ww3_tic2.2/input/ww3_shel.inp | 4 +- regtests/ww3_tic2.2/input_IC2/ww3_shel.inp | 4 +- regtests/ww3_tic2.3/input/ww3_shel.inp | 4 +- regtests/ww3_tig1.1/input/ww3_shel.inp | 4 +- regtests/ww3_tnc1/input/ww3_shel.inp | 4 +- regtests/ww3_tp1.1/input/ww3_shel.inp | 4 +- regtests/ww3_tp1.1/input2/ww3_shel.inp | 4 +- regtests/ww3_tp1.10/input/ww3_shel.inp | 4 +- regtests/ww3_tp1.2/input/ww3_shel.inp | 4 +- .../ww3_tp1.3/input/ww3_outf_whgt_end.inp | 4 +- regtests/ww3_tp1.3/input/ww3_shel.inp | 4 +- regtests/ww3_tp1.4/input/ww3_shel.inp | 4 +- regtests/ww3_tp1.5/input/ww3_shel.inp | 4 +- regtests/ww3_tp1.6/input/ww3_shel.inp | 4 +- .../input_moderate_current/ww3_shel.inp | 4 +- regtests/ww3_tp1.7/input/ww3_shel.inp | 4 +- regtests/ww3_tp1.7/input_OBST/ww3_shel.inp | 4 +- regtests/ww3_tp1.8/input/ww3_shel.inp | 4 +- regtests/ww3_tp1.8/input_BJ/ww3_shel.inp | 4 +- regtests/ww3_tp1.9/input/ww3_shel.inp | 4 +- regtests/ww3_tp2.1/input/ww3_multi.inp | 2 +- regtests/ww3_tp2.1/input/ww3_shel.inp | 4 +- regtests/ww3_tp2.10/input/ww3_outf.inp | 4 +- regtests/ww3_tp2.10/input/ww3_shel.inp | 4 +- regtests/ww3_tp2.11/input/ww3_shel.inp | 4 +- regtests/ww3_tp2.13/input/ww3_shel.inp | 4 +- regtests/ww3_tp2.14/input/ww3_shel_OASACM.inp | 4 +- .../ww3_tp2.14/input/ww3_shel_OASACM2.inp | 4 +- .../ww3_tp2.14/input/ww3_shel_OASACM3.inp | 4 +- .../ww3_tp2.14/input/ww3_shel_OASACM4.inp | 4 +- .../ww3_tp2.14/input/ww3_shel_OASACM5.inp | 4 +- .../ww3_tp2.14/input/ww3_shel_OASACM6.inp | 4 +- regtests/ww3_tp2.14/input/ww3_shel_OASICM.inp | 4 +- regtests/ww3_tp2.14/input/ww3_shel_OASOCM.inp | 4 +- regtests/ww3_tp2.15/info | 11 +- regtests/ww3_tp2.15/input/ww3_shel.inp | 4 +- .../ww3_tp2.15/input_rho/extract_AA_STE.m | 117 ++++++ regtests/ww3_tp2.15/input_rho/switch | 1 + regtests/ww3_tp2.15/input_rho/switch_MPI | 1 + regtests/ww3_tp2.15/input_rho/ww3_grid.inp | 33 ++ regtests/ww3_tp2.15/input_rho/ww3_grid.nml | 347 ++++++++++++++++++ regtests/ww3_tp2.15/input_rho/ww3_ounf.inp | 21 ++ regtests/ww3_tp2.15/input_rho/ww3_ounf.nml | 58 +++ .../ww3_tp2.15/input_rho/ww3_ounp_par.inp | 117 ++++++ .../ww3_tp2.15/input_rho/ww3_ounp_par.nml | 188 ++++++++++ .../ww3_tp2.15/input_rho/ww3_ounp_spec.inp | 117 ++++++ .../ww3_tp2.15/input_rho/ww3_ounp_spec.nml | 186 ++++++++++ regtests/ww3_tp2.15/input_rho/ww3_outf.inp | 10 + .../ww3_tp2.15/input_rho/ww3_prnc_RHO.inp | 50 +++ .../ww3_tp2.15/input_rho/ww3_prnc_RHO.nml | 76 ++++ .../ww3_tp2.15/input_rho/ww3_prnc_TAU.inp | 50 +++ .../ww3_tp2.15/input_rho/ww3_prnc_TAU.nml | 77 ++++ .../ww3_tp2.15/input_rho/ww3_prnc_WND.inp | 50 +++ .../ww3_tp2.15/input_rho/ww3_prnc_WND.nml | 77 ++++ regtests/ww3_tp2.15/input_rho/ww3_shel.inp | 48 +++ regtests/ww3_tp2.15/input_rho/ww3_shel.nml | 339 +++++++++++++++++ regtests/ww3_tp2.15/input_rho/ww3_strt.inp | 7 + regtests/ww3_tp2.16/input/ww3_shel.inp | 4 +- .../ww3_tp2.17/input/ww3_multi_grdset_a.inp | 2 +- .../ww3_tp2.17/input/ww3_multi_grdset_b.inp | 2 +- .../ww3_tp2.17/input/ww3_multi_grdset_c.inp | 2 +- regtests/ww3_tp2.17/input/ww3_shel.inp | 4 +- regtests/ww3_tp2.18/input/ww3_shel.inp | 2 + regtests/ww3_tp2.2/input/ww3_multi.inp | 2 +- regtests/ww3_tp2.2/input/ww3_shel.inp | 4 +- regtests/ww3_tp2.21/input/ww3_shel.inp | 19 +- regtests/ww3_tp2.3/input/ww3_shel.inp | 4 +- regtests/ww3_tp2.4/input/ww3_outf_depth.inp | 4 +- regtests/ww3_tp2.4/input/ww3_shel.inp | 4 +- regtests/ww3_tp2.5/input/ww3_shel.inp | 4 +- regtests/ww3_tp2.5/input_REF/ww3_shel.inp | 4 +- regtests/ww3_tp2.6/input/ww3_shel.inp | 4 +- regtests/ww3_tp2.7/input/ww3_shel.inp | 4 +- regtests/ww3_tp2.8/input/ww3_shel.inp | 8 +- regtests/ww3_tp2.9/input/ww3_shel.inp | 4 +- regtests/ww3_tr1/input/ww3_shel.inp | 4 +- regtests/ww3_tr1/input_bndin/ww3_shel.inp | 4 +- regtests/ww3_tr1/input_std/ww3_shel.inp | 4 +- regtests/ww3_ts1/input/ww3_shel.inp | 4 +- regtests/ww3_ts1/input_fld/ww3_shel.inp | 4 +- .../ww3_ts1/input_icesct_IC0/ww3_shel.inp | 4 +- .../ww3_ts1/input_icesct_IC1/ww3_shel.inp | 4 +- .../ww3_ts1/input_icesct_IC2/ww3_shel.inp | 4 +- .../ww3_ts1/input_icesct_IC3/ww3_shel.inp | 4 +- .../ww3_ts1/input_icesct_IC4/ww3_shel.inp | 4 +- regtests/ww3_ts2/input/ww3_shel.inp | 4 +- regtests/ww3_ts3/input/ww3_shel.inp | 8 +- .../input_rg_multi/ww3_multi_grdset.inp | 6 +- regtests/ww3_ts4/input_rg_shel/ww3_shel.inp | 4 +- regtests/ww3_ts4/input_ug/ww3_shel.inp | 4 +- 224 files changed, 4818 insertions(+), 1000 deletions(-) create mode 100644 regtests/ww3_tp2.15/input_rho/extract_AA_STE.m create mode 100644 regtests/ww3_tp2.15/input_rho/switch create mode 100644 regtests/ww3_tp2.15/input_rho/switch_MPI create mode 100644 regtests/ww3_tp2.15/input_rho/ww3_grid.inp create mode 100644 regtests/ww3_tp2.15/input_rho/ww3_grid.nml create mode 100644 regtests/ww3_tp2.15/input_rho/ww3_ounf.inp create mode 100644 regtests/ww3_tp2.15/input_rho/ww3_ounf.nml create mode 100644 regtests/ww3_tp2.15/input_rho/ww3_ounp_par.inp create mode 100644 regtests/ww3_tp2.15/input_rho/ww3_ounp_par.nml create mode 100644 regtests/ww3_tp2.15/input_rho/ww3_ounp_spec.inp create mode 100644 regtests/ww3_tp2.15/input_rho/ww3_ounp_spec.nml create mode 100644 regtests/ww3_tp2.15/input_rho/ww3_outf.inp create mode 100644 regtests/ww3_tp2.15/input_rho/ww3_prnc_RHO.inp create mode 100644 regtests/ww3_tp2.15/input_rho/ww3_prnc_RHO.nml create mode 100644 regtests/ww3_tp2.15/input_rho/ww3_prnc_TAU.inp create mode 100644 regtests/ww3_tp2.15/input_rho/ww3_prnc_TAU.nml create mode 100644 regtests/ww3_tp2.15/input_rho/ww3_prnc_WND.inp create mode 100644 regtests/ww3_tp2.15/input_rho/ww3_prnc_WND.nml create mode 100644 regtests/ww3_tp2.15/input_rho/ww3_shel.inp create mode 100644 regtests/ww3_tp2.15/input_rho/ww3_shel.nml create mode 100644 regtests/ww3_tp2.15/input_rho/ww3_strt.inp diff --git a/manual/impl/switch.tex b/manual/impl/switch.tex index 50f62e119..964190f26 100644 --- a/manual/impl/switch.tex +++ b/manual/impl/switch.tex @@ -186,7 +186,7 @@ \subsubsection{~Mandatory switches} \label{sub:man_switch} \end{slist} \noindent -Selection of method of wind interpolation (time): +Selection of method of wind/momentum interpolation (time): \begin{slist} \sit{wnt0}{No interpolation.} \sit{wnt1}{Linear interpolation.} @@ -194,7 +194,7 @@ \subsubsection{~Mandatory switches} \label{sub:man_switch} \end{slist} \noindent -Selection of method of wind interpolation (space): +Selection of method of wind/momentum interpolation (space): \begin{slist} \sit{wnx0}{Vector interpolation.} \sit{wnx1}{Approximately linear speed interpolation.} diff --git a/model/bin/ww3_from_ftp.sh b/model/bin/ww3_from_ftp.sh index 03d0f4fe4..87aefd97e 100755 --- a/model/bin/ww3_from_ftp.sh +++ b/model/bin/ww3_from_ftp.sh @@ -28,7 +28,8 @@ tar -xvzf ww3_from_ftp.${ww3ver}.tar.gz #Move regtest info from data_regtests to regtests: echo -e "Moving data from data_regtests to regtests" cp -r data_regtests/ww3_tp2.18/input/*.nc regtests/ww3_tp2.18/input/ -cp -r data_regtests/ww3_tp2.15/input/*.nc regtests/ww3_tp2.15/input/ +cp -r data_regtests/ww3_tp2.15/input/wind.nc regtests/ww3_tp2.15/input/ +cp -r data_regtests/ww3_tp2.15/input/*.nc regtests/ww3_tp2.15/input_rho/ cp -r data_regtests/ww3_tp2.13/*.png regtests/ww3_tp2.13/ cp -r data_regtests/ww3_tic1.4/input/*.nc regtests/ww3_tic1.4/input/ cp -r data_regtests/ww3_tp2.8/input/*.nc regtests/ww3_tp2.8/input/ diff --git a/model/ftn/gx_outf.ftn b/model/ftn/gx_outf.ftn index 92aa665ec..2a97acb32 100644 --- a/model/ftn/gx_outf.ftn +++ b/model/ftn/gx_outf.ftn @@ -8,7 +8,7 @@ !/ | A. Chawla | !/ | J.H.G.M. Alves | !/ | FORTRAN 90 | -!/ | Last update : 27-Aug-2015 | +!/ | Last update : 22-Mar-2021 | !/ +-----------------------------------+ !/ !/ 30-Jun-1999 : Final FORTRAN 77 ( version 1.18 ) @@ -37,6 +37,7 @@ !/ 25-Feb-2013 : Adding double-index output fields ( version 4.11 ) !/ 27-Aug-2015 : ICEH and ICEF added as output ( version 5.10 ) !/ 25-Aug-2018 : Add WBT parameter ( version 6.06 ) +!/ 22-Mar-2021 : RHOA and TAUA added as output ( version 7.xx ) !/ !/ !/ Copyright 2009 National Weather Service (NWS), @@ -124,12 +125,13 @@ USE W3TIMEMD, ONLY: STME21, TICK21, DSEC21 !/ USE W3GDATMD - USE W3WDATMD, ONLY: TIME, WLV, ICE, ICEH, ICEF, BERG, UST, USTDIR + USE W3WDATMD, ONLY: TIME, WLV, ICE, ICEH, ICEF, BERG, & + UST, USTDIR, RHOAIR USE W3ADATMD, ONLY: CFLXYMAX, CFLTHMAX, AS, CX, CY, UA, UD, WN, & DW, HS, WLM, T01, T0M1, T02, THM, THS, FP0, & THP0, FP1, THP1, ABA, ABD, UBA, UBD, FCUT, & SXX, SYY, SXY, PHS, PTP, PLP, PDIR, PSI, PWS,& - PTM1, PT1, PT2, PEP, & + PTM1, PT1, PT2, PEP, TAUA, TAUADIR, & PTHP0, PQP, PSW, PPE, PGW, QP, & PWST, PNR, USERO, TAUOX, TAUOY, TAUWIX, & TAUWIY, PHIAW, PHIOC, TUSX, TUSY, PRMS, TPMS,& @@ -734,7 +736,7 @@ !/ | WAVEWATCH III NOAA/NCEP | !/ | H. L. Tolman | !/ | FORTRAN 90 | -!/ | Last update : 28-Mar-2007 | +!/ | Last update : 22-Mar-2021 | !/ +-----------------------------------+ !/ !/ 30-Jun-1999 : Final FORTRAN 77 ( version 1.18 ) @@ -748,6 +750,7 @@ !/ 18-Jan-2007 : Update MSOUT/MBOUT treatment. ( version 3.10 ) !/ 28-Mar-2007 : Adding partitioned output. ( version 3.11 ) !/ Adding user slots for outputs. +!/ 22-Mar-2021 : Add output fields RHOA and TAUA ( version 7.xx ) !/ ! 1. Purpose : ! @@ -971,15 +974,30 @@ FLONE = .TRUE. CALL W3S2XY ( NSEA, NSEA, NX, NY, ICE , MAPSF, X1 ) ! +! Atmospheric momentum +! + ELSE IF ( J.EQ.1 .AND. K.EQ.8 ) THEN + FLTWO = .TRUE. + CALL W3S2XY ( NSEA, NSEA, NX, NY, TAUA(1:NSEA) & + , MAPSF, XX ) + CALL W3S2XY ( NSEA, NSEA, NX, NY, TAUADIR(1:NSEA) & + , MAPSF, XY ) +! +! Air density +! + ELSE IF ( J.EQ.1 .AND. K.EQ.9 ) THEN + FLONE = .TRUE. + CALL W3S2XY ( NSEA, NSEA, NX, NY, RHOAIR, MAPSF, X1 ) +! ! Ice thickness ! -!/IS2 ELSE IF ( J.EQ.1 .AND. K.EQ.9 ) THEN +!/IS2 ELSE IF ( J.EQ.1 .AND. K.EQ.11 ) THEN !/IS2 FLONE = .TRUE. !/IS2 CALL W3S2XY (NSEA, NSEA, NX, NY, ICEH , MAPSF, X1 ) ! ! Average sea ice floe diameter ! -!/IS2 ELSE IF ( J.EQ.1 .AND. K.EQ.10) THEN +!/IS2 ELSE IF ( J.EQ.1 .AND. K.EQ.12) THEN !/IS2 FLONE = .TRUE. !/IS2 CALL W3S2XY (NSEA, NSEA, NX, NY, ICEF , MAPSF, X1 ) ! diff --git a/model/ftn/pdlib_field_vec.ftn b/model/ftn/pdlib_field_vec.ftn index 5da116d5e..31a78eb1d 100644 --- a/model/ftn/pdlib_field_vec.ftn +++ b/model/ftn/pdlib_field_vec.ftn @@ -6,10 +6,11 @@ MODULE PDLIB_FIELD_VEC !/ | Mathieu Dutour-Sikiric (IRB) | !/ | | !/ | FORTRAN 90 | -!/ | Last update : 01-Jan-2010 | +!/ | Last update : 22-Mar-2021 | !/ +-----------------------------------+ !/ !/ 01-Jan-2010 : Origination. ( version 6.04 ) +!/ 22-Mar-2021 : Add WNMEAN, TAUOC output ( version 7.xx ) !/ !/ Copyright 2010 National Weather Service (NWS), !/ National Oceanic and Atmospheric Administration. All rights @@ -163,6 +164,9 @@ MODULE PDLIB_FIELD_VEC IF ( FLGRDALL( 2, 17) ) THEN IH = IH + 1 END IF + IF ( FLGRDALL( 2, 19) ) THEN + IH = IH + 1 + END IF IF ( FLGRDALL( 3, 1) ) THEN DO IK=E3DF(2,1),E3DF(3,1) IH = IH + 1 @@ -317,6 +321,10 @@ MODULE PDLIB_FIELD_VEC IF ( FLGRDALL( 6, 11) ) THEN IH = IH + 1 END IF + IF ( FLGRDALL( 6, 13) ) THEN + IH = IH + 1 + IH = IH + 1 + END IF IF ( FLGRDALL( 7, 1) ) THEN IH = IH + 1 IH = IH + 1 @@ -837,10 +845,11 @@ MODULE PDLIB_FIELD_VEC !/ | Mathieu Dutour-Sikiric (IRB) | !/ | | !/ | FORTRAN 90 | -!/ | Last update : 01-Mai-2018 | +!/ | Last update : 22-Mar-2021 | !/ +-----------------------------------+ !/ !/ 01-Mai-2018 : Origination. ( version 6.04 ) +!/ 22-Mar-2021 : Add WNMEAN, TAUOC output ( version 7.xx ) !/ ! 1. Purpose : Do communication for PDLIB output ! 2. Method : @@ -863,7 +872,7 @@ MODULE PDLIB_FIELD_VEC DTDYN, FCUT, SPPNT, ABA, ABD, UBA, UBD,& SXX, SYY, SXY, USERO, PHS, PTP, PLP, & PDIR, PSI, PWS, PWST, PNR, PHIAW, & - PHIOC, & + PHIOC, TAUOCX, TAUOCY, WNMEAN, & TUSX, TUSY, TAUWIX, TAUWIY, TAUOX, & TAUOY, USSX, USSY, MSSX, MSSY, & MSCX, MSCY, PRMS, TPMS, CHARN, & @@ -1013,6 +1022,10 @@ MODULE PDLIB_FIELD_VEC IH = IH + 1 Arrexch(IH,JSEA)=WBT(JSEA) END IF + IF ( FLGRDALL( 2, 19) ) THEN + IH = IH + 1 + Arrexch(IH,JSEA)=WNMEAN(JSEA) + END IF IF ( FLGRDALL( 3, 1) ) THEN DO IK=E3DF(2,1),E3DF(3,1) IH = IH + 1 @@ -1251,6 +1264,12 @@ MODULE PDLIB_FIELD_VEC IH = IH + 1 Arrexch(IH,JSEA)=PHICE(JSEA) END IF + IF ( FLGRDALL( 6, 13) ) THEN + IH = IH + 1 + Arrexch(IH,JSEA)=TAUOCX(JSEA) + IH = IH + 1 + Arrexch(IH,JSEA)=TAUOCY(JSEA) + END IF IF ( FLGRDALL( 7, 1) ) THEN IH = IH + 1 Arrexch(IH,JSEA)=ABA(JSEA) @@ -1474,6 +1493,10 @@ MODULE PDLIB_FIELD_VEC IH = IH + 1 WBT(1:NSEA) = ARRtotal(IH,:) END IF + IF ( FLGRDALL( 2, 19) ) THEN + IH = IH + 1 + WNMEAN(1:NSEA) = ARRtotal(IH,:) + END IF IF ( FLGRDALL( 3, 1) ) THEN DO IK=E3DF(2,1),E3DF(3,1) IH = IH + 1 @@ -1712,6 +1735,12 @@ MODULE PDLIB_FIELD_VEC IH = IH + 1 PHICE(1:NSEA) = ARRtotal(IH,:) END IF + IF ( FLGRDALL( 6, 13) ) THEN + IH = IH + 1 + TAUOCX(1:NSEA) = ARRtotal(IH,:) + IH = IH + 1 + TAUOCY(1:NSEA) = ARRtotal(IH,:) + END IF IF ( FLGRDALL( 7, 1) ) THEN IH = IH + 1 ABA(1:NSEA) = ARRtotal(IH,:) diff --git a/model/ftn/w3adatmd.ftn b/model/ftn/w3adatmd.ftn index ada79edc5..d64cc3127 100644 --- a/model/ftn/w3adatmd.ftn +++ b/model/ftn/w3adatmd.ftn @@ -7,7 +7,7 @@ !/ | WAVEWATCH III NOAA/NCEP | !/ | H. L. Tolman | !/ | FORTRAN 90 | -!/ | Last update : 05-Jun-2018 | +!/ | Last update : 22-Mar-2021 | !/ +-----------------------------------+ !/ !/ 28-Dec-2004 : Origination. ( version 3.06 ) @@ -38,6 +38,7 @@ !/ 30-Jul-2017 : Adds TWS parameter ( version 6.02 ) !/ 05-Jun-2018 : Adds PDLIB and MEMCHECK ( version 6.04 ) !/ 21-Aug-2018 : Add WBT parameter ( version 6.06 ) +!/ 22-Mar-2021 : Adds TAUA, WNMEAN, TAUOC parameters ( version 7.xx ) ! !/ !/ Copyright 2009-2013 National Weather Service (NWS), @@ -86,6 +87,10 @@ ! in W3UWND (rad) ! AS0-I R.A. Public Stability par. (initial and incr.) ! in W3UWND (degr) +! MA0-I R.A. Public Absolute atmospheric momentum (initial +! and inc.) in W3UTAU. +! MD0-I R.A. Public Atmospheric momentum direction (initial and +! increment) in W3UTAU. ! ATRNX/Y R.A. Public Actual transparency info. ! ! Fields of mean wave parameters: @@ -97,6 +102,8 @@ ! U10D R.A. Public Wind direction used. ! AS R.A. Public Stability parameter. ! CX/Y R.A. Public Current components. +! TAUA R.A. Public Absolute atmospheric momentum. +! TAUADIR R.A. Public Absolute atmospheric momentum direction. ! ! HS R.A. Public Wave Height. ! WLM R.A. Public Mean wave length. @@ -116,6 +123,7 @@ ! HCMAXD R.A. Public STD of HCMAXE ! WBT R.A. Public Dominant wave breaking probability ! (b_T in Babanin et al. (2001, JGR)) +! WNMEAN R.A. Public Mean wave number ! ! CHARN R.A. Public Charnock parameter for air-sea friction. ! TWS R.A. Public Wind sea period (used for flux parameterizations) @@ -134,6 +142,7 @@ ! PHIOC R.A. Public Waves to ocean energy flux. ! TUSX/Y R.A. Public Volume transport associated to Stokes drift. ! USSX/Y R.A. Public Surface Stokes drift. +! TAUOCX/Y R.A. Public Total ocean momentum flux ! TAUICE R.A. Public Wave-ice momentum flux. ! PHICE R.A. Public Waves to ice energy flux. ! @@ -350,12 +359,13 @@ ! REAL, POINTER :: CA0(:), CAI(:), CD0(:), CDI(:), & UA0(:), UAI(:), UD0(:), UDI(:), & + MA0(:), MAI(:), MD0(:), MDI(:), & AS0(:), ASI(:), ATRNX(:,:), ATRNY(:,:) ! ! Output fields group 1) ! REAL, POINTER :: DW(:), UA(:), UD(:), U10(:), U10D(:),& - AS(:), CX(:), CY(:) + AS(:), CX(:), CY(:), TAUA(:), TAUADIR(:) ! ! Output fields group 2) ! @@ -364,13 +374,14 @@ THS(:), THP0(:), FP1(:), THP1(:), & HSIG(:), STMAXE(:), STMAXD(:), & HMAXE(:), HCMAXE(:), HMAXD(:), & - HCMAXD(:), QP(:), WBT(:) + HCMAXD(:), QP(:), WBT(:), WNMEAN(:) REAL, POINTER :: XHS(:), XWLM(:), XT02(:), XT0M1(:), & XT01 (:), XFP0(:), XTHM(:), & XTHS(:), XTHP0(:), XFP1(:), XTHP1(:),& XHSIG(:), XSTMAXE(:), XSTMAXD(:), & XHMAXE(:), XHCMAXE(:), XHMAXD(:), & - XHCMAXD(:), XQP(:), XWBT(:) + XHCMAXD(:), XQP(:), XWBT(:), & + XWNMEAN(:) ! ! Output fields group 3) ! @@ -408,14 +419,16 @@ REAL, POINTER :: SXX(:), SYY(:), SXY(:), TAUOX(:),& TAUOY(:), BHD(:), PHIOC(:), & TUSX(:), TUSY(:), USSX(:), & - USSY(:), PRMS(:), TPMS(:), & - PHICE(:), TAUICE(:,:) + USSY(:), TAUOCX(:), TAUOCY(:), & + PRMS(:), TPMS(:), PHICE(:), & + TAUICE(:,:) REAL, POINTER :: P2SMS(:,:), US3D(:,:), USSP(:,:) REAL, POINTER :: XSXX(:), XSYY(:), XSXY(:), XTAUOX(:),& XTAUOY(:), XBHD(:), XPHIOC(:), & XTUSX(:), XTUSY(:), XUSSX(:), & - XUSSY(:), XPRMS(:), XTPMS(:), & - XPHICE(:), XTAUICE(:,:) + XUSSY(:), XTAUOCX(:), XTAUOCY(:), & + XPRMS(:), XTPMS(:), XPHICE(:), & + XTAUICE(:,:) REAL, POINTER :: XP2SMS(:,:), XUS3D(:,:), XUSSP(:,:) ! ! Output fields group 7) @@ -519,17 +532,18 @@ ! REAL, POINTER :: CA0(:), CAI(:), CD0(:), CDI(:), & UA0(:), UAI(:), UD0(:), UDI(:), & + MA0(:), MAI(:), MD0(:), MDI(:), & AS0(:), ASI(:), ATRNX(:,:), ATRNY(:,:) ! REAL, POINTER :: DW(:), UA(:), UD(:), U10(:), U10D(:),& - AS(:), CX(:), CY(:) + AS(:), CX(:), CY(:), TAUA(:), TAUADIR(:) ! REAL, POINTER :: HS(:), WLM(:), T02(:), T0M1(:), & T01 (:), FP0(:), THM(:), THS(:), & THP0(:), FP1(:), THP1(:), HSIG(:), & STMAXE(:), STMAXD(:), HMAXE(:), & - HCMAXE(:), HMAXD(:), HCMAXD(:), QP(:),& - WBT(:) + HCMAXE(:), HMAXD(:), HCMAXD(:), & + QP(:), WBT(:), WNMEAN(:) ! REAL, POINTER :: EF(:,:), TH1M(:,:), STH1M(:,:), & TH2M(:,:), STH2M(:,:) @@ -547,8 +561,8 @@ REAL, POINTER :: SXX(:), SYY(:), SXY(:), TAUOX(:), & TAUOY(:), BHD(:), PHIOC(:), & TUSX(:), TUSY(:), USSX(:), USSY(:), & - PRMS(:), TPMS(:), PHICE(:), & - TAUICE(:,:) + TAUOCX(:), TAUOCY(:), PRMS(:), & + TPMS(:), PHICE(:), TAUICE(:,:) REAL, POINTER :: P2SMS(:,:), US3D(:,:), USSP(:,:) ! REAL, POINTER :: ABA(:), ABD(:), UBA(:), UBD(:), & @@ -751,7 +765,7 @@ !/ | WAVEWATCH III NOAA/NCEP | !/ | H. L. Tolman | !/ | FORTRAN 90 | -!/ | Last update : 10-Dec-2014 ! +!/ | Last update : 22-Mar-2021 ! !/ +-----------------------------------+ !/ !/ 28-Dec-2004 : Origination. ( version 3.06 ) @@ -765,6 +779,7 @@ !/ 28-Jul-2013 : Bug fix initialization P2SMS. ( version 4.11 ) !/ 30-Apr-2014 : Memory reduction for group3. ( version 5.00 ) !/ 10-Dec-2014 : Add checks for allocate status ( version 5.04 ) +!/ 22-Mar-2021 : Adds TAUA, WNMEAN, TAUOC parameters ( version 7.xx ) !/ ! 1. Purpose : ! @@ -830,7 +845,7 @@ USSPF, GTYPE, UNGTYPE USE W3ODATMD, ONLY: IAPROC, NAPROC, NTPROC, NAPFLD, & NOSWLL, NOEXTR, UNDEF, FLOGRD, FLOGR2 - USE W3IDATMD, ONLY: FLCUR, FLWIND + USE W3IDATMD, ONLY: FLCUR, FLWIND, FLTAUA USE W3SERVMD, ONLY: EXTCDE !/S USE W3SERVMD, ONLY: STRACE ! @@ -889,7 +904,7 @@ ! ! -------------------------------------------------------------------- / ! 2. Allocate arrays -! Call W3SETA to assure of pointes FLCUR an FLWND +! Call W3SETA to assure of pointes FLCUR, FLWND, and FLTAUA ! CALL W3SETA ( IMOD, NDSE, NDST ) @@ -915,6 +930,12 @@ WADATS(IMOD)%U10(NSEA) , WADATS(IMOD)%U10D(NSEA) , & WADATS(IMOD)%AS(0:NSEA) , STAT=ISTAT ) CHECK_ALLOC_STATUS ( ISTAT ) +! + ALLOCATE ( WADATS(IMOD)%TAUA(0:NSEA) , & + WADATS(IMOD)%TAUADIR(0:NSEA), STAT=ISTAT ) + CHECK_ALLOC_STATUS ( ISTAT ) + WADATS(IMOD)%TAUA(:) =0. + WADATS(IMOD)%TAUADIR(:)=0. !/MEMCHECK WRITE(740+IAPROC,*) 'memcheck_____:', 'W3DIMA 2' !/MEMCHECK call getMallocInfo(mallinfos) @@ -946,6 +967,7 @@ WADATS(IMOD)%HCMAXE(NSEALM), & WADATS(IMOD)%HCMAXD(NSEALM), WADATS(IMOD)%QP(NSEALM), & WADATS(IMOD)%WBT(NSEALM), & + WADATS(IMOD)%WNMEAN(NSEALM), & STAT=ISTAT ) CHECK_ALLOC_STATUS ( ISTAT ) ! @@ -962,13 +984,14 @@ WADATS(IMOD)%THP1 = UNDEF WADATS(IMOD)%HSIG = UNDEF WADATS(IMOD)%STMAXE = UNDEF - WADATS(IMOD)%STMAXD= UNDEF - WADATS(IMOD)%HMAXE = UNDEF - WADATS(IMOD)%HMAXD = UNDEF - WADATS(IMOD)%HCMAXE= UNDEF - WADATS(IMOD)%HCMAXD= UNDEF + WADATS(IMOD)%STMAXD = UNDEF + WADATS(IMOD)%HMAXE = UNDEF + WADATS(IMOD)%HMAXD = UNDEF + WADATS(IMOD)%HCMAXE = UNDEF + WADATS(IMOD)%HCMAXD = UNDEF WADATS(IMOD)%QP = UNDEF WADATS(IMOD)%WBT = UNDEF + WADATS(IMOD)%WNMEAN = UNDEF !/MEMCHECK WRITE(740+IAPROC,*) 'memcheck_____:', 'W3DIMA 3' !/MEMCHECK call getMallocInfo(mallinfos) @@ -1104,6 +1127,8 @@ WADATS(IMOD)%TUSY (NSEALM) , & WADATS(IMOD)%USSX (NSEALM) , & WADATS(IMOD)%USSY (NSEALM) , & + WADATS(IMOD)%TAUOCX(NSEALM) , & + WADATS(IMOD)%TAUOCY(NSEALM) , & WADATS(IMOD)%PRMS (NSEALM) , & WADATS(IMOD)%TPMS (NSEALM) , & WADATS(IMOD)%PHICE (NSEALM) , & @@ -1141,6 +1166,8 @@ WADATS(IMOD)%TUSY = UNDEF WADATS(IMOD)%USSX = UNDEF WADATS(IMOD)%USSY = UNDEF + WADATS(IMOD)%TAUOCX = UNDEF + WADATS(IMOD)%TAUOCY = UNDEF WADATS(IMOD)%PRMS = UNDEF WADATS(IMOD)%TPMS = UNDEF WADATS(IMOD)%PHICE = UNDEF @@ -1259,6 +1286,15 @@ STAT=ISTAT ) CHECK_ALLOC_STATUS ( ISTAT ) END IF +! + IF ( FLTAUA ) THEN + ALLOCATE ( WADATS(IMOD)%MA0(NSEA) , & + WADATS(IMOD)%MAI(NSEA) , & + WADATS(IMOD)%MD0(NSEA) , & + WADATS(IMOD)%MDI(NSEA) , & + STAT=ISTAT ) + CHECK_ALLOC_STATUS ( ISTAT ) + END IF ! ALLOCATE ( WADATS(IMOD)%ATRNX(NY*NX,-1:1) , & WADATS(IMOD)%ATRNY(NY*NX,-1:1) , STAT=ISTAT ) @@ -1407,11 +1443,12 @@ !/ | WAVEWATCH III NOAA/NCEP | !/ | H. L. Tolman | !/ | FORTRAN 90 | -!/ | Last update : 10-Dec-2014 ! +!/ | Last update : 22-Mar-2021 ! !/ +-----------------------------------+ !/ !/ 26-Dec-2012 : Origination. ( version 3.06 ) !/ 10-Dec-2014 : Add checks for allocate status ( version 5.04 ) +!/ 22-Mar-2021 : Adds WNMEAN, TAUOC parameters ( version 7.xx ) !/ ! 1. Purpose : ! @@ -1427,7 +1464,6 @@ USE W3ODATMD, ONLY: IAPROC, NAPROC, NTPROC, NAPFLD, & NOSWLL, NOEXTR, UNDEF, FLOGRD, FLOGR2, & NOGRP, NGRPP - USE W3IDATMD, ONLY: FLCUR, FLWIND USE W3SERVMD, ONLY: EXTCDE !/S USE W3SERVMD, ONLY: STRACE ! @@ -1600,6 +1636,14 @@ ALLOCATE ( WADATS(IMOD)%XWBT (1), STAT=ISTAT ) CHECK_ALLOC_STATUS ( ISTAT ) END IF +! + IF ( OUTFLAGS( 2, 19) ) THEN + ALLOCATE ( WADATS(IMOD)%XWNMEAN(NXXX), STAT=ISTAT ) + CHECK_ALLOC_STATUS ( ISTAT ) + ELSE + ALLOCATE ( WADATS(IMOD)%XWNMEAN(1), STAT=ISTAT ) + CHECK_ALLOC_STATUS ( ISTAT ) + END IF ! ! IF ( OUTFLAGS( 2,xx) ) THEN ! ALLOCATE ( WADATS(IMOD)%XFP1(NXXX), STAT=ISTAT ) @@ -1634,6 +1678,7 @@ WADATS(IMOD)%XHCMAXE= UNDEF WADATS(IMOD)%XHCMAXD= UNDEF WADATS(IMOD)%XWBT = UNDEF + WADATS(IMOD)%XWNMEAN= UNDEF ! WADATS(IMOD)%XFP1 = UNDEF ! WADATS(IMOD)%XTHP1 = UNDEF ! @@ -2031,6 +2076,18 @@ ALLOCATE ( WADATS(IMOD)%XUSSP(1,1), STAT=ISTAT ) CHECK_ALLOC_STATUS ( ISTAT ) END IF +! + IF ( OUTFLAGS( 6, 13) ) THEN + ALLOCATE ( WADATS(IMOD)%XTAUOCX(NXXX), STAT=ISTAT ) + CHECK_ALLOC_STATUS ( ISTAT ) + ALLOCATE ( WADATS(IMOD)%XTAUOCY(NXXX), STAT=ISTAT ) + CHECK_ALLOC_STATUS ( ISTAT ) + ELSE + ALLOCATE ( WADATS(IMOD)%XTAUOCX(1), STAT=ISTAT ) + CHECK_ALLOC_STATUS ( ISTAT ) + ALLOCATE ( WADATS(IMOD)%XTAUOCY(1), STAT=ISTAT ) + CHECK_ALLOC_STATUS ( ISTAT ) + END IF ! WADATS(IMOD)%XSXX = UNDEF @@ -2051,6 +2108,8 @@ WADATS(IMOD)%XPHICE = UNDEF WADATS(IMOD)%XTAUICE = UNDEF WADATS(IMOD)%XUSSP = UNDEF + WADATS(IMOD)%XTAUOCX = UNDEF + WADATS(IMOD)%XTAUOCY = UNDEF ! IF ( OUTFLAGS( 7, 1) ) THEN ALLOCATE ( WADATS(IMOD)%XABA(NXXX), STAT=ISTAT ) @@ -2322,7 +2381,6 @@ USE W3GDATMD, ONLY: NGRIDS, IGRID, NK, NX, NY, NSEA, NSEAL, & NSPEC, NTH, GTYPE, UNGTYPE USE W3ODATMD, ONLY: NAPROC - USE W3IDATMD, ONLY: FLCUR, FLWIND USE W3SERVMD, ONLY: EXTCDE !/S USE W3SERVMD, ONLY: STRACE ! @@ -2443,7 +2501,7 @@ !/ | WAVEWATCH III NOAA/NCEP | !/ | H. L. Tolman | !/ | FORTRAN 90 | -!/ | Last update : 28_Mar-2007 | +!/ | Last update : 22-Mar-2021 | !/ +-----------------------------------+ !/ !/ 28-Dec-2004 : Origination. ( version 3.06 ) @@ -2454,6 +2512,7 @@ !/ 04-Oct-2006 : Add filter to array pointers. ( version 3.10 ) !/ 28_Mar-2007 : Add partitioned data arrays. ( version 3.11 ) !/ Add aditional undefined arrays. +!/ 22-Mar-2021 : Adds TAUA, WNMEAN, TAUOC parameters ( version 7.xx ) !/ ! 1. Purpose : ! @@ -2630,6 +2689,8 @@ AS => WADATS(IMOD)%AS CX => WADATS(IMOD)%CX CY => WADATS(IMOD)%CY + TAUA => WADATS(IMOD)%TAUA + TAUADIR=> WADATS(IMOD)%TAUADIR ! HS => WADATS(IMOD)%HS WLM => WADATS(IMOD)%WLM @@ -2651,6 +2712,7 @@ HCMAXD => WADATS(IMOD)%HCMAXD QP => WADATS(IMOD)%QP WBT => WADATS(IMOD)%WBT + WNMEAN => WADATS(IMOD)%WNMEAN ! EF => WADATS(IMOD)%EF TH1M => WADATS(IMOD)%TH1M @@ -2704,6 +2766,8 @@ PHICE => WADATS(IMOD)%PHICE TAUICE => WADATS(IMOD)%TAUICE USSP => WADATS(IMOD)%USSP + TAUOCX => WADATS(IMOD)%TAUOCX + TAUOCY => WADATS(IMOD)%TAUOCY ! ABA => WADATS(IMOD)%ABA ABD => WADATS(IMOD)%ABD @@ -2770,6 +2834,13 @@ AS0 => WADATS(IMOD)%AS0 ASI => WADATS(IMOD)%ASI END IF +! + IF ( INPUTS(IMOD)%INFLAGS1(5) ) THEN + MA0 => WADATS(IMOD)%MA0 + MAI => WADATS(IMOD)%MAI + MD0 => WADATS(IMOD)%MD0 + MDI => WADATS(IMOD)%MDI + END IF ! !/PR1 IS0 => WADATS(IMOD)%IS0 !/PR1 IS2 => WADATS(IMOD)%IS2 @@ -2873,11 +2944,12 @@ !/ | WAVEWATCH III NOAA/NCEP | !/ | H. L. Tolman | !/ | FORTRAN 90 | -!/ | Last update : 30-Apr-2014 | +!/ | Last update : 22-Mar-2021 | !/ +-----------------------------------+ !/ !/ 25-Dec-2012 : Origination. ( version 4.11 ) !/ 30-Apr-2014 : Add s/th1-2m ( version 5.01 ) +!/ 22-Mar-2021 : Adds WNMEAN, TAUOC parameters ( version 7.xx ) !/ ! 1. Purpose : ! @@ -2950,6 +3022,7 @@ HCMAXD => WADATS(IMOD)%XHCMAXD QP => WADATS(IMOD)%XQP WBT => WADATS(IMOD)%XWBT + WNMEAN => WADATS(IMOD)%XWNMEAN ! FP1 => WADATS(IMOD)%XFP1 ! THP1 => WADATS(IMOD)%XTHP1 ! @@ -3005,6 +3078,8 @@ PHICE => WADATS(IMOD)%XPHICE TAUICE => WADATS(IMOD)%XTAUICE USSP => WADATS(IMOD)%XUSSP + TAUOCX => WADATS(IMOD)%XTAUOCX + TAUOCY => WADATS(IMOD)%XTAUOCY ABA => WADATS(IMOD)%XABA ABD => WADATS(IMOD)%XABD UBA => WADATS(IMOD)%XUBA diff --git a/model/ftn/w3agcmmd.ftn b/model/ftn/w3agcmmd.ftn index d7ab969d6..7a746782f 100644 --- a/model/ftn/w3agcmmd.ftn +++ b/model/ftn/w3agcmmd.ftn @@ -6,12 +6,13 @@ !/ | WAVEWATCH III NOAA/NCEP | !/ | J. Pianezze | !/ | FORTRAN 90 | -!/ | Last update : April-2016 | +!/ | Last update : Mar-2021 | !/ +-----------------------------------+ !/ !/ Mar-2014 : Origination. ( version 4.18 ) !/ For upgrades see subroutines. !/ Apr-2016 : Add comments (J. Pianezze) ( version 5.07 ) +!/ Mar-2021 : Add TAUA and RHOA coupling ( version 7.xx ) !/ !/ Copyright 2009-2012 National Weather Service (NWS), !/ National Oceanic and Atmospheric Administration. All rights @@ -198,12 +199,13 @@ !/ | WAVEWATCH III NOAA/NCEP | !/ | J. Pianezze | !/ | FORTRAN 90 | -!/ | Last update : April-2016 | +!/ | Last update : Mar-2021 | !/ +-----------------------------------+ !/ !/ Mar-2014 : Origination. ( version 4.18 ) !/ Apr-2015 : Modification (M. Accensi) ( version 5.07 ) !/ Apr-2016 : Add comments (J. Pianezze) ( version 5.07 ) +!/ Mar-2021 : Add TAUA and RHOA coupling ( version 7.xx ) !/ ! 1. Purpose : ! @@ -327,6 +329,89 @@ ENDIF ! ENDIF + IF (IDFLD == 'TAU') THEN + ! + ! Atmospheric momentum (Pa) (u-component) + ! ---------------------------------------------------------------------- + IF (RCV_FLD(IB_DO)%CL_FIELD_NAME == 'WW3_UTAU') THEN + CALL CPL_OASIS_RCV(IB_DO, ID_OASIS_TIME, RLA_OASIS_RCV, LL_ACTION) + IF (LL_ACTION) THEN + TMP(1:NSEAL) = RLA_OASIS_RCV(1:NSEAL,1) + SND_BUFF(1:NSEA) = 0.0 + DO IB_I = 1, NSEAL + IB_J = IAPROC + (IB_I-1)*NAPROC + SND_BUFF(IB_J) = TMP(IB_I) + ENDDO + ! + CALL MPI_ALLREDUCE(SND_BUFF(1:NSEA), & + RCV_BUFF(1:NSEA), & + NSEA, & + MPI_REAL, & + MPI_SUM, & + ID_LCOMM, & + IL_ERR) + ! + ! Convert from storage (NSEA) to spatial grid (NX, NY) + CALL W3S2XY(NSEA,NSEA,NX,NY,RCV_BUFF(1:NSEA),MAPSF,FXN) + ! + ENDIF + ENDIF + ! + ! Atmospheric momentum (Pa) (v-component) + ! ---------------------------------------------------------------------- + IF (RCV_FLD(IB_DO)%CL_FIELD_NAME == 'WW3_VTAU') THEN + CALL CPL_OASIS_RCV(IB_DO, ID_OASIS_TIME, RLA_OASIS_RCV, LL_ACTION) + IF (LL_ACTION) THEN + TMP(1:NSEAL) = RLA_OASIS_RCV(1:NSEAL,1) + SND_BUFF(1:NSEA) = 0.0 + DO IB_I = 1, NSEAL + IB_J = IAPROC + (IB_I-1)*NAPROC + SND_BUFF(IB_J) = TMP(IB_I) + END DO + ! + CALL MPI_ALLREDUCE(SND_BUFF(1:NSEA), & + RCV_BUFF(1:NSEA), & + NSEA, & + MPI_REAL, & + MPI_SUM, & + ID_LCOMM, & + IL_ERR) + ! + ! Convert from storage (NSEA) to spatial grid (NX, NY) + CALL W3S2XY(NSEA,NSEA,NX,NY,RCV_BUFF(1:NSEA),MAPSF,FYN) + ! + ENDIF + ENDIF + ! + ENDIF + IF (IDFLD == 'RHO') THEN + ! + ! Air density (kg.m-3) + ! ---------------------------------------------------------------------- + IF (RCV_FLD(IB_DO)%CL_FIELD_NAME == 'WW3_RHOA') THEN + CALL CPL_OASIS_RCV(IB_DO, ID_OASIS_TIME, RLA_OASIS_RCV, LL_ACTION) + IF (LL_ACTION) THEN + TMP(1:NSEAL) = RLA_OASIS_RCV(1:NSEAL,1) + SND_BUFF(1:NSEA) = 0.0 + DO IB_I = 1, NSEAL + IB_J = IAPROC + (IB_I-1)*NAPROC + SND_BUFF(IB_J) = TMP(IB_I) + ENDDO + ! + CALL MPI_ALLREDUCE(SND_BUFF(1:NSEA), & + RCV_BUFF(1:NSEA), & + NSEA, & + MPI_REAL, & + MPI_SUM, & + ID_LCOMM, & + IL_ERR) + ! + ! Convert from storage (NSEA) to spatial grid (NX, NY) + CALL W3S2XY(NSEA,NSEA,NX,NY,RCV_BUFF(1:NSEA),MAPSF,FAN) + ! + ENDIF + ENDIF + ENDIF ENDDO !/ ------------------------------------------------------------------- / END SUBROUTINE RCV_FIELDS_FROM_ATMOS diff --git a/model/ftn/w3fld1md.ftn b/model/ftn/w3fld1md.ftn index 436f0a827..c279c3302 100644 --- a/model/ftn/w3fld1md.ftn +++ b/model/ftn/w3fld1md.ftn @@ -5,7 +5,7 @@ !/ | WAVEWATCH III NOAA/NCEP/NOPP | !/ | B. G. Reichl | !/ | FORTRAN 90 | -!/ | Last update : 18-Mar-2015 | +!/ | Last update : 22-Mar-2021 | !/ +-----------------------------------+ !/ !/ 01-Jul-2013 : Origination. ( version 4.xx ) @@ -16,6 +16,7 @@ !/ 22-Jun-2018 : updated SIG2WN subroutine (X.Chen) ( version 6.06 ) !/ modified the range of wind profile computation; !/ corrected direction of the shortest waves +!/ 22-Mar-2021 : Consider DAIR a variable ( version 7.xx ) !/ !/ !/ Copyright 2009 National Weather Service (NWS), @@ -86,17 +87,19 @@ CONTAINS !/ ------------------------------------------------------------------- / SUBROUTINE W3FLD1( ASPC, FPI, WNDX,WNDY, ZWND, & - DEPTH, RIB, UST, USTD, Z0, TAUNUX,TAUNUY, CHARN) + DEPTH, RIB, DAIR, UST, USTD, Z0, & + TAUNUX, TAUNUY, CHARN) !/ !/ +-----------------------------------+ !/ | WAVEWATCH III NOAA/NCEP/NOPP | !/ | B. G. Reichl | !/ | FORTRAN 90 | -!/ | Last update : 18-Mar-2015 | +!/ | Last update : 22-Mar-2021 | !/ +-----------------------------------+ !/ !/ 01-Jul-2013 : Origination. ( version 4.xx ) !/ 18-Mar-2015 : Prepare for submission ( version 5.12 ) +!/ 22-Mar-2021 : Consider DAIR a variable ( version 7.xx ) !/ ! 1. Purpose : ! @@ -123,6 +126,7 @@ ! RIB REAL I Bulk Richardson in lower atmosphere ! (for determining stability in ABL to get ! 10 m neutral wind) +! DAIR REAL I Air density ! TAUNUX Real 0 X-dir viscous stress (guessed from prev.) ! TAUNUY Real 0 Y-dir viscous stress (guessed from prev.) ! UST Real O Friction velocity. @@ -164,7 +168,7 @@ ! 10. Source code : ! !/ ------------------------------------------------------------------- / - USE CONSTANTS, ONLY: GRAV, DWAT, DAIR, TPI, PI, KAPPA + USE CONSTANTS, ONLY: GRAV, DWAT, TPI, PI, KAPPA USE W3GDATMD, ONLY: NK, NTH, NSPEC, SIG, DTH, XFR, TH USE W3ODATMD, ONLY: NDSE USE W3SERVMD, ONLY: EXTCDE @@ -176,7 +180,7 @@ !/ Parameter list !/ REAL, INTENT(IN) :: ASPC(NSPEC), WNDX, WNDY, & - ZWND, DEPTH, RIB, FPI + ZWND, DEPTH, RIB, DAIR, FPI REAL, INTENT(OUT) :: UST, USTD, Z0 REAL, INTENT(OUT), OPTIONAL :: CHARN REAL, INTENT(INOUT) :: TAUNUX, TAUNUY diff --git a/model/ftn/w3fld2md.ftn b/model/ftn/w3fld2md.ftn index bae17012e..86004bcac 100644 --- a/model/ftn/w3fld2md.ftn +++ b/model/ftn/w3fld2md.ftn @@ -5,7 +5,7 @@ !/ | WAVEWATCH III NOAA/NCEP/NOPP | !/ | B. G. Reichl | !/ | FORTRAN 90 | -!/ | Last update : 19-Mar-2015 | +!/ | Last update : 22-Mar-2021 | !/ +-----------------------------------+ !/ !/ 01-Jul-2013 : Origination (version 3.14) @@ -14,6 +14,7 @@ !/ 27-Jul-2016 : Added Charnock output (J.Meixner) (version 5.12) !/ 22-Jun-2018 : Minor modification for application in shallow water. !/ (X.Chen) (version 6.06) +!/ 22-Mar-2021 : Consider DAIR a variable ( version 7.xx ) !/ !/ Copyright 2009 National Weather Service (NWS), !/ National Oceanic and Atmospheric Administration. All rights @@ -62,17 +63,18 @@ CONTAINS !/ ------------------------------------------------------------------- / SUBROUTINE W3FLD2( ASPC,FPI, WNDX,WNDY, ZWND, & - DEPTH, RIB, UST, USTD, Z0, TAUNUX,TAUNUY,CHARN) + DEPTH, RIB, DAIR, UST, USTD, Z0, TAUNUX,TAUNUY,CHARN) !/ !/ +-----------------------------------+ !/ | WAVEWATCH III NOAA/NCEP/NOPP | !/ | B. G. Reichl | !/ | FORTRAN 90 | -!/ | Last update : 19-Mar-2015 | +!/ | Last update : 22-Mar-2021 | !/ +-----------------------------------+ !/ !/ 01-Jul-2013 : Origination (version 3.14) !/ 19-Mar-2015 : Clean-up for submission (version 5.12) +!/ 22-Mar-2021 : Consider DAIR a variable ( version 7.xx ) !/ ! 1. Purpose : ! @@ -93,6 +95,7 @@ ! ZWND Real I Wind height. ! DEPTH Real I Water depth. ! RIB Real I Bulk Richardson number in lower atm +! DAIR Real I Air density ! TAUNUX Real 0 X-dir viscous stress (guessed from prev.) ! TAUNUY Real 0 Y-dir viscous stress (guessed from prev.) ! UST Real O Friction velocity. @@ -139,7 +142,7 @@ ! 10. Source code : ! !/ ------------------------------------------------------------------- / - USE CONSTANTS, ONLY: DWAT, DAIR, GRAV, TPI, PI, KAPPA + USE CONSTANTS, ONLY: DWAT, GRAV, TPI, PI, KAPPA USE W3GDATMD, ONLY: NK, NTH, NSPEC, SIG, DTH, XFR, TH USE W3ODATMD, ONLY: NDSE USE W3SERVMD, ONLY: EXTCDE @@ -154,7 +157,7 @@ !/ Parameter list !/ REAL, INTENT(IN) :: ASPC(NSPEC), WNDX, WNDY, & - ZWND, DEPTH, RIB, FPI + ZWND, DEPTH, RIB, DAIR, FPI REAL, INTENT(OUT) :: UST, USTD, Z0 REAL, INTENT(OUT),OPTIONAL :: CHARN REAL, INTENT(INOUT) :: TAUNUX, TAUNUY diff --git a/model/ftn/w3fldsmd.ftn b/model/ftn/w3fldsmd.ftn index d936847d9..e59777a2a 100644 --- a/model/ftn/w3fldsmd.ftn +++ b/model/ftn/w3fldsmd.ftn @@ -7,7 +7,7 @@ !/ | H. L. Tolman | !/ | A. Chawla | !/ | FORTRAN 90 | -!/ | Last update : 05-Jun-2018 | +!/ | Last update : 22-Mar-2021 | !/ +-----------------------------------+ !/ !/ 30-Nov-1999 : Upgrade to FORTRAN 90 ( version 2.00 ) @@ -33,6 +33,7 @@ !/ (M. Accensi & F. Ardhuin, IFREMER) !/ 20-Jan-2017 : Update to new W3GSRUMD APIs ( version 6.02 ) !/ 05-Jun-2018 : adds DEBUGFLS ( version 6.04 ) +!/ 22-Mar-2021 : adds momentum and density input ( version 7.xx ) !/ !/ Copyright 2009-2012 National Weather Service (NWS), !/ National Oceanic and Atmospheric Administration. All rights @@ -42,7 +43,8 @@ ! 1. Purpose : ! ! Gathers a set of routines to manage input fields of depth, -! current, wind and ice concentration. +! current, wind, ice concentration, atmospheric momentum, and +! air density ! ! 2. Variables and types : ! @@ -91,7 +93,7 @@ !/ | H. L. Tolman | !/ | A. Chawla | !/ | FORTRAN 90 | -!/ | Last update : 26-Dec-2012 | +!/ | Last update : 22-Mar-2021 | !/ +-----------------------------------+ !/ !/ 15-Jan-1999 : Final FORTRAN 77 ( version 1.18 ) @@ -106,6 +108,7 @@ !/ 04-Apr-2010 : Adding iceberg field. ( version 3.14 ) !/ 09-Sep-2012 : Implement tidal cons. (F. Ardhuin ) ( version 4.09 ) !/ 26-Dec-2012 : Modified obsolete declarations. ( version 4.11 ) +!/ 22-Mar-2021 : adds momentum and density input ( version 7.xx ) !/ ! 1. Purpose : ! @@ -127,7 +130,7 @@ ! IDFLD C*3 I/O ID string for field type, valid are: 'IC1', ! 'IC2', 'IC3', 'IC4', 'IC5', 'MDN', 'MTH', ! 'MVS', 'LEV', 'CUR', 'WND', 'WNS', 'ICE', -! 'ISI', and 'DTn'. +! 'TAU', 'RHO', 'ISI', and 'DTn'. ! NDS Int. I Dataset number for fields file. ! NDST Int. I Dataset number for test output. ! NDSE Int. I Dataset number for error output. @@ -253,7 +256,8 @@ IDFLD.NE.'MTH' .AND. IDFLD.NE.'MVS' .AND. & IDFLD.NE.'LEV' .AND. IDFLD.NE.'CUR' .AND. & IDFLD.NE.'WND' .AND. IDFLD.NE.'WNS' .AND. & - IDFLD.NE.'ICE' .AND. IDFLD.NE.'DT0' .AND. & + IDFLD.NE.'ICE' .AND. IDFLD.NE.'TAU' .AND. & + IDFLD.NE.'RHO' .AND. IDFLD.NE.'DT0' .AND. & IDFLD.NE.'DT1' .AND. IDFLD.NE.'DT2' .AND. & IDFLD.NE.'ISI' ) GOTO 802 ! @@ -283,6 +287,12 @@ ELSE IF ( IDFLD.EQ.'ICE' .OR. IDFLD.EQ.'ISI' ) THEN FNAME = 'ice.' // TEMPXT(:I) I = I + 4 + ELSE IF ( IDFLD.EQ.'TAU' ) THEN + FNAME = 'momentum.' // TEMPXT(:I) + I = I + 9 + ELSE IF ( IDFLD.EQ.'RHO' ) THEN + FNAME = 'density.' // TEMPXT(:I) + I = I + 8 ELSE IF ( IDFLD.EQ.'DT0' ) THEN FNAME = 'data0.' // TEMPXT(:I) I = I + 6 @@ -524,11 +534,12 @@ !/ | F. Ardhuin | !/ | | !/ | FORTRAN 90 | -!/ | Last update : 30-Jun-2013 | +!/ | Last update : 22-Mar-2021 | !/ +-----------------------------------+ !/ !/ 24-Sep-2012 : Creation ( version 4.09 ) !/ 30-Jun-2013 : Split in 2 subroutines ( version 4.11 ) +!/ 22-Mar-2021 : adds momentum and density input ( version 7.xx ) !/ ! 1. Purpose : ! @@ -544,7 +555,8 @@ ! INXOUT C*(*) I Test string for read/write, valid are: ! 'READ' and 'WRITE'. ! IDFLD C*3 I/O ID string for field type, valid are: -! 'LEV', 'CUR', 'WND', 'WNS', 'ICE', 'ISI', and 'DTn'. +! 'LEV', 'CUR', 'WND', 'WNS', 'ICE', 'ISI', +! 'TAU', 'RHO', and 'DTn'. ! NDS Int. I Dataset number for fields file. ! NDST Int. I Dataset number for test output. ! NDSE Int. I Dataset number for error output. @@ -628,7 +640,8 @@ IF (INXOUT.NE.'READ' .AND. INXOUT.NE.'WRITE') GOTO 801 IF ( IDFLD.NE.'LEV' .AND. IDFLD.NE.'CUR' .AND. & IDFLD.NE.'WND' .AND. IDFLD.NE.'WNS' .AND. & - IDFLD.NE.'ICE' .AND. IDFLD.NE.'DT0' .AND. & + IDFLD.NE.'ICE' .AND. IDFLD.NE.'TAU' .AND. & + IDFLD.NE.'RHO' .AND. IDFLD.NE.'DT0' .AND. & IDFLD.NE.'DT1' .AND. IDFLD.NE.'DT2' .AND. & IDFLD.NE.'ISI' ) GOTO 802 WRITE = INXOUT .EQ. 'WRITE' @@ -702,11 +715,12 @@ !/ | F. Ardhuin | !/ | | !/ | FORTRAN 90 | -!/ | Last update : 30-Jun-2013 | +!/ | Last update : 22-Mar-2021 | !/ +-----------------------------------+ !/ !/ 24-Sep-2012 : Creation ( version 4.09 ) !/ 30-Jun-2013 : Split in 2 subroutines ( version 4.11 ) +!/ 22-Mar-2021 : adds momentum and density input ( version 7.xx ) !/ ! 1. Purpose : ! @@ -722,7 +736,8 @@ ! INXOUT C*(*) I Test string for read/write, valid are: ! 'READ' and 'WRITE'. ! IDFLD C*3 I/O ID string for field type, valid are: -! 'LEV', 'CUR', 'WND', 'WNS', 'ICE', 'ISI', and 'DTn'. +! 'LEV', 'CUR', 'WND', 'WNS', 'ICE', 'ISI', +! 'TAU', 'RHO', and 'DTn'. ! NDS Int. I Dataset number for fields file. ! NDST Int. I Dataset number for test output. ! NDSE Int. I Dataset number for error output. @@ -807,7 +822,8 @@ IF (INXOUT.NE.'READ' .AND. INXOUT.NE.'WRITE') GOTO 801 IF ( IDFLD.NE.'LEV' .AND. IDFLD.NE.'CUR' .AND. & IDFLD.NE.'WND' .AND. IDFLD.NE.'WNS' .AND. & - IDFLD.NE.'ICE' .AND. IDFLD.NE.'DT0' .AND. & + IDFLD.NE.'ICE' .AND. IDFLD.NE.'TAU' .AND. & + IDFLD.NE.'RHO' .AND. IDFLD.NE.'DT0' .AND. & IDFLD.NE.'DT1' .AND. IDFLD.NE.'DT2' .AND. & IDFLD.NE.'ISI' ) GOTO 802 WRITE = INXOUT .EQ. 'WRITE' @@ -919,7 +935,7 @@ !/ | WAVEWATCH III NOAA/NCEP | !/ | H. L. Tolman | !/ | FORTRAN 90 | -!/ | Last update : 25-Sep-2020 | +!/ | Last update : 22-Mar-2021 | !/ +-----------------------------------+ !/ !/ 15-Jan-1999 : Final FORTRAN 77 ( version 1.18 ) @@ -930,6 +946,7 @@ !/ 24-Apr-2015 : Adding OASIS coupling calls ( version 5.07 ) !/ (M. Accensi & F. Ardhuin, IFREMER) !/ 25-Sep-2020 : Receive coupled fields at T+0 ( version 7.10 ) +!/ 22-Mar-2021 : adds momentum and density input ( version 7.xx ) !/ ! 1. Purpose : ! @@ -948,7 +965,8 @@ ! 'READ' and 'WRITE'. ! IDFLD C*3 I ID string for field type, valid are: 'IC1', ! 'IC2', 'IC3', 'IC4', 'IC5', 'MDN', 'MTH', 'MVS', -! 'LEV', 'CUR', 'WND', 'WNS', 'ICE' and 'ISI'. +! 'LEV', 'CUR', 'WND', 'WNS', 'ICE', 'ISI', +! 'TAU', and 'RHO'. ! NDS Int. I Dataset number for fields file. ! NDST Int. I Dataset number for test output. ! NDSE Int. I Dataset number for error output. @@ -1072,13 +1090,14 @@ IDFLD.NE.'MTH' .AND. IDFLD.NE.'MVS' .AND. & IDFLD.NE.'LEV' .AND. IDFLD.NE.'CUR' .AND. & IDFLD.NE.'WND' .AND. IDFLD.NE.'WNS' .AND. & - IDFLD.NE.'ICE' .AND. IDFLD.NE.'ISI' ) GOTO 802 + IDFLD.NE.'ICE' .AND. IDFLD.NE.'ISI' .AND. & + IDFLD.NE.'TAU' .AND. IDFLD.NE.'RHO' ) GOTO 802 ! ! Set internal variables --------------------------------------------- * ! WRITE = INXOUT .EQ. 'WRITE' FL2D = IDFLD.EQ.'CUR' .OR. IDFLD.EQ.'WND' .OR. IDFLD.EQ.'WNS' & - .OR. IDFLD.EQ.'ISI' + .OR. IDFLD.EQ.'ISI' .OR. IDFLD.EQ.'TAU' FLBE = IDFLD.EQ.'ISI' FLST = IDFLD.EQ.'WNS' @@ -1092,8 +1111,8 @@ ! of integration for the first time step which is integrated on 0 ! to be able to output integrated variables like cha, ust, taw - FLINTERP = IDFLD.EQ.'CUR' .OR. IDFLD.EQ.'WND' .OR. IDFLD.EQ.'WNS' - + FLINTERP = IDFLD.EQ.'CUR' .OR. IDFLD.EQ.'WND' .OR. IDFLD.EQ.'WNS' & + .OR. IDFLD.EQ.'TAU' .OR. IDFLD.EQ.'RHO' ! if the model is coupled, no interpolation in time must be done IF (FLCOUPL) FLINTERP = .FALSE. @@ -1119,7 +1138,7 @@ DO IX=1, NX DO IY=1, NY FX0(IX,IY) = FXN(IX,IY) - FY0(IX,IY) = FYN(IX,IY) + IF (FL2D) FY0(IX,IY) = FYN(IX,IY) END DO IF( FLST ) THEN DO IY=1, NY @@ -1244,7 +1263,7 @@ DO IX=1, NX DO IY=1, NY FX0(IX,IY) = FXN(IX,IY) - FY0(IX,IY) = FYN(IX,IY) + IF (FL2D) FY0(IX,IY) = FYN(IX,IY) END DO IF( FLST ) THEN DO IY=1, NY @@ -2004,7 +2023,7 @@ !/ | WAVEWATCH III NOAA/NCEP | !/ | H. L. Tolman | !/ | FORTRAN 90 | -!/ | Last update : 05-Jul-2005 | +!/ | Last update : 22-Mar-2021 | !/ +-----------------------------------+ !/ !/ 15-Jan-1999 : Final FORTRAN 77 ( version 1.18 ) @@ -2012,6 +2031,7 @@ !/ 04-Sep-2003 : Bug fix par. list declaration. ( version 3.04 ) !/ 05-Jul-2005 : Correct first level/ice. ( version 3.07 ) !/ 15-May-2018 : Allow homog ice. ( version 6.05 ) +!/ 22-Mar-2021 : adds momentum and density input ( version 7.xx ) !/ ! 1. Purpose : ! @@ -2040,7 +2060,9 @@ ! 2 : currents ! 3 : winds ! 4 : ice -! 8 : moving grid +! 5 : atmospheric momentum +! 6 : air density +! 10 : moving grid ! NDST Int. I Unit number test output. ! NDSE Int. I Unit number error messages. ! (No output if NDSE < 0). @@ -2110,9 +2132,9 @@ !/ INTEGER, INTENT(IN) :: J, NDST, NDSE, MX, MY, NX, NY, & T0(2), TN(2), NHM - INTEGER, INTENT(INOUT) :: NH, THO(2,-7:8,NHM), TF0(2), TFN(2) + INTEGER, INTENT(INOUT) :: NH, THO(2,-7:10,NHM), TF0(2), TFN(2) INTEGER, INTENT(OUT) :: IERR - REAL, INTENT(INOUT) :: HA(NHM,-7:8), HD(NHM,-7:8), HS(NHM,-7:8), & + REAL, INTENT(INOUT) :: HA(NHM,-7:10), HD(NHM,-7:10), HS(NHM,-7:10), & FX0(MX,MY), FY0(MX,MY), FS0(MX,MY), & FXN(MX,MY), FYN(MX,MY), FSN(MX,MY) !/ @@ -2138,7 +2160,7 @@ ! ! Test field ID number for validity ! - IF ( J.LT.-7 .OR. J .GT.8 ) GOTO 801 + IF ( J.LT.-7 .OR. J .GT.10 ) GOTO 801 FLFRST = TFN(1) .EQ. -1 ! !/T WRITE (NDST,9001) FLFRST @@ -2152,7 +2174,7 @@ TF0(1) = TFN(1) TF0(2) = TFN(2) IF ( TFN(1) .NE. -1 ) THEN - IF ( J .EQ. 2 ) THEN + IF ( (J .EQ. 2) .OR. (J .EQ. 5) ) THEN DO IX=1, NX DO IY=1, NY FX0(IX,IY) = FXN(IX,IY) @@ -2180,7 +2202,7 @@ TFN(1) = THO(1,J,1) TFN(2) = THO(2,J,1) ! ic* md* lev ice - IF ( ( J.LE.1 ) .OR. ( J.EQ.4) ) THEN + IF ( (J.LE.1) .OR. (J.EQ.4) .OR. (J.EQ.6) ) THEN DO IX=1, NX DO IY=1, NY FSN(IX,IY) = HA(1,J) @@ -2189,7 +2211,7 @@ !/T WRITE (NDST,9050) HA(1,J) END IF ! cur - IF ( J .EQ. 2 ) THEN + IF ( (J .EQ. 2) .OR. (J .EQ. 5) ) THEN DIR = ( 270. - HD(1,J) ) * DERA X = HA(1,J) * COS(DIR) Y = HA(1,J) * SIN(DIR) @@ -2248,7 +2270,7 @@ ! exit if field is ic* or md* or lev or ice ! and first forcing field has been stored ! at start run time - IF ( J.LE.(1).OR.(J.EQ.4) ) THEN + IF ( J.LE.(1).OR.(J.EQ.4).OR.(J.EQ.6) ) THEN IF (FLFRST .AND. DTTST.EQ.0. ) EXIT END IF END DO @@ -2403,9 +2425,9 @@ !/ Parameter list !/ INTEGER, INTENT(IN) :: J, NDST, NDSE, T0(2), TN(2), NHM - INTEGER, INTENT(INOUT) :: NH, THO(2,-7:8,NHM), TF0(2), TFN(2) + INTEGER, INTENT(INOUT) :: NH, THO(2,-7:10,NHM), TF0(2), TFN(2) INTEGER, INTENT(OUT) :: IERR - REAL, INTENT(INOUT) :: HA(NHM,-7:8), HD(NHM,-7:8), A0, AN, D0, DN + REAL, INTENT(INOUT) :: HA(NHM,-7:10), HD(NHM,-7:10), A0, AN, D0, DN !/ !/ ------------------------------------------------------------------- / !/ Local parameters diff --git a/model/ftn/w3idatmd.ftn b/model/ftn/w3idatmd.ftn index c670c1805..0cd07e58b 100644 --- a/model/ftn/w3idatmd.ftn +++ b/model/ftn/w3idatmd.ftn @@ -6,7 +6,7 @@ !/ | WAVEWATCH III NOAA/NCEP | !/ | H. L. Tolman | !/ | FORTRAN 90 | -!/ | Last update : 24-Apr-2015 | +!/ | Last update : 22-Mar-2021 | !/ +-----------------------------------+ !/ !/ 02-Apr-2004 : Origination. ( version 3.06 ) @@ -17,6 +17,7 @@ !/ 24-Apr-2015 : Adding OASIS coupling calls ( version 5.07 ) !/ (M. Accensi & F. Ardhuin, IFREMER) !/ 21-Jun-2018 : Add FSWND input for SMC grid. JGLi ( version 6.04 ) +!/ 22-Mar-2021 : Momentum and air density support ( version 7.xx ) !/ !/ Copyright 2009 National Weather Service (NWS), !/ National Oceanic and Atmospheric Administration. All rights @@ -51,6 +52,8 @@ ! TTN I.A. Public Time for mud thickness field. ! TVN I.A. Public Time for mud viscosity field. ! TIN I.A. Public Time for ice field. (concentration) +! TU0/N I.A. Public Times for momentum fields. +! TRN I.A. Public Time for air density field. ! TI1N I.A. Public Time for ice field. (parameter 1) ! TI2N I.A. Public Time for ice field. (parameter 2) ! TI3N I.A. Public Time for ice field. (parameter 3) @@ -69,13 +72,18 @@ ! CY0/N R.A. Public for both times. ! WLEV R.A. Public Next water level field. ! ICEI R.A. Public Ice concentrations. +! UX0/N R.A. Public Cartesian X and Y momentum components +! UY0/N R.A. Public for both times. +! RAIR R.A. Public Air density ! BERGI R.A. Public Iceberg damping coefficient ! IINIT Log. Public Flag for array initialization. ! FLLEV Log. Public Flag for water level input. ! FLCUR Log. Public Flag for current input. ! FLWIND Log. Public Flag for wind input. ! FLICE Log. Public Flag for ice input. -! INFLAGS1 L.A. Public Array consolidating the above four +! FLTAUA Log. Public Flag for atmospheric momentum input +! FLRHOA Log. Public Flag for air density input +! INFLAGS1 L.A. Public Array consolidating the above six ! flags, as well as four additional ! data flags. ! INFLAGS2 L.A. Public Like INFLAGS1 but does *not* get changed @@ -85,7 +93,7 @@ ! input fields. At present this is ! hardwired below. Field-related arrays ! (e.g., INFLAGS1) will be allocated from -! JFIRST:7 (e.g., ALLOCATE(INFLAGS1(JFIRST:7))). +! JFIRST:9 (e.g., ALLOCATE(INFLAGS1(JFIRST:9))). ! CXTIDE R.A. Public Tidal constituents of X current component ! CYTIDE R.A. Public Tidal constituents of Y current component ! WLTIDE R.A. Public Tidal constituents of water level @@ -116,7 +124,7 @@ ! - The number of grids is taken from W3GDATMD, and needs to be ! set first with W3DIMG. ! -! - INFLAGS1 dimensioning is hardwired as INFLAGS1(-7:12) where lowest possible +! - INFLAGS1 dimensioning is hardwired as INFLAGS1(-7:14) where lowest possible ! value of JFIRST is JFIRST=-7 ! ! 6. Switches : @@ -146,25 +154,27 @@ !/ Data structure INPUT !/ TYPE INPUT - INTEGER :: TFN(2,-7:8), TC0(2), TW0(2), & - TDN(2), TG0(2) + INTEGER :: TFN(2,-7:10), TC0(2), TW0(2), & + TU0(2), TDN(2), TG0(2) REAL :: GA0, GD0, GAN, GDN !/WRST REAL, POINTER :: WXNwrst(:,:),WYNwrst(:,:) REAL, POINTER :: WX0(:,:), WY0(:,:), DT0(:,:), & WXN(:,:), WYN(:,:), DTN(:,:), & CX0(:,:), CY0(:,:), CXN(:,:), & CYN(:,:), WLEV(:,:), ICEI(:,:), & - BERGI(:,:), MUDT(:,:), MUDV(:,:), & - MUDD(:,:), ICEP1(:,:), ICEP2(:,:), & - ICEP3(:,:), ICEP4(:,:), ICEP5(:,:) + UX0(:,:), UY0(:,:), UXN(:,:), & + UYN(:,:), RAIR(:,:), BERGI(:,:), & + MUDT(:,:), MUDV(:,:), MUDD(:,:), & + ICEP1(:,:), ICEP2(:,:), ICEP3(:,:), & + ICEP4(:,:), ICEP5(:,:) !/TIDE REAL, POINTER :: CXTIDE(:,:,:,:), CYTIDE(:,:,:,:), & !/TIDE WLTIDE(:,:,:,:) LOGICAL :: IINIT !/WRST LOGICAL :: WRSTIINIT=.FALSE. ! note that if size of INFLAGS1 is changed, then TFLAGS in wminitmd.ftn ! also must be resized. - LOGICAL :: INFLAGS1(-7:12), FLAGSC(-7:12), & - INFLAGS2(-7:12) + LOGICAL :: INFLAGS1(-7:14), FLAGSC(-7:14), & + INFLAGS2(-7:14) END TYPE INPUT !/ !/ Data storage @@ -174,24 +184,28 @@ !/ Data aliasses for structure INPUT(S) !/ INTEGER, POINTER :: TFN(:,:), TLN(:), TC0(:), TCN(:), & - TW0(:), TWN(:), TIN(:), T0N(:), & - T1N(:), T2N(:), TDN(:), TG0(:), & - TGN(:), TTN(:), TVN(:), TZN(:), & - TI1(:), TI2(:), TI3(:), TI4(:), TI5(:) + TW0(:), TWN(:), TU0(:), TUN(:), & + TIN(:), TRN(:), T0N(:), T1N(:), & + T2N(:), TDN(:), TG0(:), TGN(:), & + TTN(:), TVN(:), TZN(:), TI1(:), & + TI2(:), TI3(:), TI4(:), TI5(:) REAL, POINTER :: GA0, GD0, GAN, GDN REAL, POINTER :: WX0(:,:), WY0(:,:), DT0(:,:), & WXN(:,:), WYN(:,:), DTN(:,:), & !/WRST WXNwrst(:,:),WYNwrst(:,:), & CX0(:,:), CY0(:,:), CXN(:,:), & CYN(:,:), WLEV(:,:), ICEI(:,:), & - BERGI(:,:), MUDT(:,:), MUDV(:,:), & - MUDD(:,:), ICEP1(:,:), ICEP2(:,:), & - ICEP3(:,:), ICEP4(:,:), ICEP5(:,:) + UX0(:,:), UY0(:,:), UXN(:,:), & + UYN(:,:), RAIR(:,:), BERGI(:,:), & + MUDT(:,:), MUDV(:,:), MUDD(:,:), & + ICEP1(:,:), ICEP2(:,:), ICEP3(:,:), & + ICEP4(:,:), ICEP5(:,:) !/TIDE REAL, POINTER :: CXTIDE(:,:,:,:), & !/TIDE CYTIDE(:,:,:,:), WLTIDE(:,:,:,:) LOGICAL, POINTER :: IINIT LOGICAL, POINTER :: INFLAGS1(:), INFLAGS2(:), FLAGSC(:) - LOGICAL, POINTER :: FLLEV, FLCUR, FLWIND, FLICE + LOGICAL, POINTER :: FLLEV, FLCUR, FLWIND, FLICE, FLTAUA, & + FLRHOA LOGICAL, POINTER :: FLMTH, FLMVS, FLMDN LOGICAL, POINTER :: FLIC1, FLIC2, FLIC3, FLIC4, FLIC5 !/TIDE LOGICAL, POINTER :: FLLEVTIDE, FLCURTIDE, & @@ -205,12 +219,13 @@ !/ | WAVEWATCH III NOAA/NCEP | !/ | H. L. Tolman | !/ | FORTRAN 90 | -!/ | Last update : 10-Dec-2014 ! +!/ | Last update : 22-Mar-2021 ! !/ +-----------------------------------+ !/ !/ 02-Apr-2004 : Origination. ( version 3.06 ) !/ 19-Jul-2006 : Adding auxiliary grids. ( version 3.10 ) !/ 10-Dec-2014 : Add checks for allocate status ( version 5.04 ) +!/ 22-Mar-2021 : Momentum and air density support ( version 7.xx ) !/ ! 1. Purpose : ! @@ -296,6 +311,8 @@ INPUTS(I)%TC0(2) = 0 INPUTS(I)%TW0(1) = -1 INPUTS(I)%TW0(2) = 0 + INPUTS(I)%TU0(1) = -1 + INPUTS(I)%TU0(2) = 0 INPUTS(I)%TDN(1) = -1 INPUTS(I)%TDN(2) = 0 INPUTS(I)%TG0(1) = -1 @@ -332,7 +349,7 @@ !/ | WAVEWATCH III NOAA/NCEP | !/ | H. L. Tolman | !/ | FORTRAN 90 | -!/ | Last update : 10-Dec-2014 ! +!/ | Last update : 22-Mar-2021 ! !/ +-----------------------------------+ !/ !/ 02-Apr-2004 : Origination. ( version 3.06 ) @@ -340,6 +357,7 @@ !/ 04-Oct-2006 : Add filter to array pointers. ( version 3.10 ) !/ 10-Dec-2014 : Add checks for allocate status ( version 5.04 ) !/ 21-Jun-2018 : Add FSWND input for SMC grid. JGLi ( version 6.04 ) +!/ 22-Mar-2021 : Momentum and air density support ( version 7.xx ) !/ ! 1. Purpose : ! @@ -453,10 +471,10 @@ ! FLLEV => INPUTS(IMOD)%INFLAGS1(1) FLCUR => INPUTS(IMOD)%INFLAGS1(2) -!/TIDE FLLEVTIDE => INPUTS(IMOD)%INFLAGS1(9) -!/TIDE FLCURTIDE => INPUTS(IMOD)%INFLAGS1(10) -!/TIDE FLLEVRESI => INPUTS(IMOD)%INFLAGS1(11) -!/TIDE FLCURRESI => INPUTS(IMOD)%INFLAGS1(12) +!/TIDE FLLEVTIDE => INPUTS(IMOD)%INFLAGS1(11) +!/TIDE FLCURTIDE => INPUTS(IMOD)%INFLAGS1(12) +!/TIDE FLLEVRESI => INPUTS(IMOD)%INFLAGS1(13) +!/TIDE FLCURRESI => INPUTS(IMOD)%INFLAGS1(14) !/TIDE! !/TIDE FLLEVTIDE = FLAGSTIDE(1) !/TIDE FLCURTIDE = FLAGSTIDE(2) @@ -465,6 +483,8 @@ FLWIND => INPUTS(IMOD)%INFLAGS1(3) FLICE => INPUTS(IMOD)%INFLAGS1(4) + FLTAUA => INPUTS(IMOD)%INFLAGS1(5) + FLRHOA => INPUTS(IMOD)%INFLAGS1(6) ! ! notes: future improvement: flags for ICEPx should be ! "all or nothing" rather than 5 individual flags @@ -568,6 +588,26 @@ CHECK_ALLOC_STATUS ( ISTAT ) INPUTS(IMOD)%BERGI = 0. END IF +! + IF ( FLTAUA ) THEN +!/SMC IF( FSWND ) THEN +!/SMC ALLOCATE ( INPUTS(IMOD)%UX0(NSEA,1) , & +!/SMC INPUTS(IMOD)%UY0(NSEA,1) , & +!/SMC INPUTS(IMOD)%UXN(NSEA,1) , & +!/SMC INPUTS(IMOD)%UYN(NSEA,1) , STAT=ISTAT ) +!/SMC ELSE + ALLOCATE ( INPUTS(IMOD)%UX0(NX,NY) , & + INPUTS(IMOD)%UY0(NX,NY) , & + INPUTS(IMOD)%UXN(NX,NY) , & + INPUTS(IMOD)%UYN(NX,NY) , STAT=ISTAT ) +!/SMC ENDIF + CHECK_ALLOC_STATUS ( ISTAT ) + END IF +! + IF ( FLRHOA ) THEN + ALLOCATE ( INPUTS(IMOD)%RAIR(NX,NY), STAT=ISTAT ) + CHECK_ALLOC_STATUS ( ISTAT ) + END IF ! INPUTS(IMOD)%IINIT = .TRUE. ! @@ -617,12 +657,13 @@ !/ | WAVEWATCH III NOAA/NCEP | !/ | H. L. Tolman | !/ | FORTRAN 90 | -!/ | Last update : 04-Oct-2006 ! +!/ | Last update : 22-Mar-2021 ! !/ +-----------------------------------+ !/ !/ 02-Apr-2004 : Origination. ( version 3.06 ) !/ 19-Jul-2006 : Adding auxiliary grids. ( version 3.10 ) !/ 04-Oct-2006 : Add filter to array pointers. ( version 3.10 ) +!/ 22-Mar-2021 : Momentum and air density support ( version 7.xx ) !/ ! 1. Purpose : ! @@ -711,6 +752,7 @@ TFN => INPUTS(IMOD)%TFN TC0 => INPUTS(IMOD)%TC0 TW0 => INPUTS(IMOD)%TW0 + TU0 => INPUTS(IMOD)%TU0 TG0 => INPUTS(IMOD)%TG0 TDN => INPUTS(IMOD)%TDN ! @@ -728,10 +770,12 @@ TCN => INPUTS(IMOD)%TFN(:,2) TWN => INPUTS(IMOD)%TFN(:,3) TIN => INPUTS(IMOD)%TFN(:,4) - T0N => INPUTS(IMOD)%TFN(:,5) - T1N => INPUTS(IMOD)%TFN(:,6) - T2N => INPUTS(IMOD)%TFN(:,7) - TGN => INPUTS(IMOD)%TFN(:,8) + TUN => INPUTS(IMOD)%TFN(:,5) + TRN => INPUTS(IMOD)%TFN(:,6) + T0N => INPUTS(IMOD)%TFN(:,7) + T1N => INPUTS(IMOD)%TFN(:,8) + T2N => INPUTS(IMOD)%TFN(:,9) + TGN => INPUTS(IMOD)%TFN(:,10) ! GA0 => INPUTS(IMOD)%GA0 GD0 => INPUTS(IMOD)%GD0 @@ -755,13 +799,15 @@ ! FLLEV => INPUTS(IMOD)%INFLAGS1(1) FLCUR => INPUTS(IMOD)%INFLAGS1(2) -!/TIDE FLLEVTIDE => INPUTS(IMOD)%INFLAGS1(9) -!/TIDE FLCURTIDE => INPUTS(IMOD)%INFLAGS1(10) -!/TIDE FLLEVRESI => INPUTS(IMOD)%INFLAGS1(11) -!/TIDE FLCURRESI => INPUTS(IMOD)%INFLAGS1(12) +!/TIDE FLLEVTIDE => INPUTS(IMOD)%INFLAGS1(11) +!/TIDE FLCURTIDE => INPUTS(IMOD)%INFLAGS1(12) +!/TIDE FLLEVRESI => INPUTS(IMOD)%INFLAGS1(13) +!/TIDE FLCURRESI => INPUTS(IMOD)%INFLAGS1(14) FLWIND => INPUTS(IMOD)%INFLAGS1(3) FLICE => INPUTS(IMOD)%INFLAGS1(4) + FLTAUA => INPUTS(IMOD)%INFLAGS1(5) + FLRHOA => INPUTS(IMOD)%INFLAGS1(6) ! IF ( IINIT ) THEN ! @@ -825,6 +871,17 @@ ICEI => INPUTS(IMOD)%ICEI BERGI => INPUTS(IMOD)%BERGI END IF +! + IF ( FLTAUA ) THEN + UX0 => INPUTS(IMOD)%UX0 + UY0 => INPUTS(IMOD)%UY0 + UXN => INPUTS(IMOD)%UXN + UYN => INPUTS(IMOD)%UYN + END IF +! + IF ( FLRHOA ) THEN + RAIR => INPUTS(IMOD)%RAIR + END IF ! END IF ! diff --git a/model/ftn/w3initmd.ftn b/model/ftn/w3initmd.ftn index d8baa5b71..7f154ecc3 100644 --- a/model/ftn/w3initmd.ftn +++ b/model/ftn/w3initmd.ftn @@ -6,7 +6,7 @@ !/ | WAVEWATCH III NOAA/NCEP | !/ | H. L. Tolman | !/ | FORTRAN 90 | -!/ | Last update : 25-Sep-2020 | +!/ | Last update : 22-Mar-2021 | !/ +-----------------------------------+ !/ !/ 28-Dec-2004 : Origination (out of W3WAVEMD). ( version 3.06 ) @@ -58,6 +58,7 @@ !/ 21-Aug-2018 : Add WBT parameter ( version 6.06 ) !/ 26-Aug-2018 : UOST (Mentaschi et al. 2015, 2018) ( version 6.06 ) !/ 25-Sep-2020 : Extra fields for coupling restart ( version 7.10 ) +!/ 22-Mar-2021 : Extra coupling fields ( version 7.xx ) !/ !/ Copyright 2009-2013 National Weather Service (NWS), !/ National Oceanic and Atmospheric Administration. All rights @@ -348,7 +349,7 @@ ICLOSE, ZB, TRNX, TRNY, DMIN, DTCFL, DTMAX, & FLCK, NK, NTH, NSPEC, SIG, GNAME !/PDLIB USE W3GDATMD, ONLY : FLCTH - USE W3WDATMD, ONLY: TIME, TLEV, TICE, WLV, UST, USTDIR, VA + USE W3WDATMD, ONLY: TIME, TLEV, TICE, TRHO, WLV, UST, USTDIR, VA USE W3ODATMD, ONLY: NDSO, NDSE, NDST, SCREEN, NDS, NTPROC, & NAPROC, IAPROC, NAPLOG, NAPOUT, NAPERR, & NAPFLD, NAPPNT, NAPTRK, NAPRST, NAPBPT, & @@ -361,8 +362,9 @@ USE W3ADATMD, ONLY: NSEALM, IAPPRO, FLCOLD, FLIWND, DW, CG, WN, & UA, UD, U10, U10D, AS !/MPI USE W3ADATMD, ONLY: MPI_COMM_WAVE, MPI_COMM_WCMP - USE W3IDATMD, ONLY: FLLEV, FLCUR, FLWIND, FLICE, FLMDN, FLMTH, & - FLMVS, FLIC1, FLIC2, FLIC3, FLIC4, FLIC5 + USE W3IDATMD, ONLY: FLLEV, FLCUR, FLWIND, FLICE, FLTAUA, FLRHOA,& + FLMDN, FLMTH, FLMVS, FLIC1, FLIC2, FLIC3, & + FLIC4, FLIC5 USE W3DISPMD, ONLY: WAVNU1, WAVNU3 USE W3PARALL, ONLY : AC_tot USE W3PARALL, ONLY: SET_UP_NSEAL_NSEALM @@ -1313,6 +1315,10 @@ IF (.NOT. FLWIND) WRITE (NDSO,973) 'No' IF ( FLICE ) WRITE (NDSO,974) 'Prescribed' IF (.NOT. FLICE ) WRITE (NDSO,974) 'No' + IF ( FLTAUA ) WRITE (NDSO,988) 'Prescribed' + IF (.NOT. FLTAUA) WRITE (NDSO,988) 'No' + IF ( FLRHOA ) WRITE (NDSO,989) 'Prescribed' + IF (.NOT. FLRHOA) WRITE (NDSO,989) 'No' ! IF ( FLMDN ) WRITE (NDSO,9972) 'Prescribed' IF (.NOT. FLMDN ) WRITE (NDSO,9972) 'No' @@ -1382,6 +1388,10 @@ CALL STME21 ( TICE , DTME21 ) WRITE (NDSO,983) DTME21 END IF + IF (FLRHOA) THEN + CALL STME21 ( TRHO , DTME21 ) + WRITE (NDSO,990) DTME21 + END IF ! WRITE (NDSO,984) ! @@ -1460,6 +1470,8 @@ 972 FORMAT ( ' ',A,' curents.') 973 FORMAT ( ' ',A,' winds.') 974 FORMAT ( ' ',A,' ice fields.') + 988 FORMAT ( ' ',A,' momentum') + 989 FORMAT ( ' ',A,' air density') 9972 FORMAT( ' ',A,' mud density.') 9971 FORMAT( ' ',A,' mud thickness.') 9970 FORMAT( ' ',A,' mud viscosity.') @@ -1489,12 +1501,13 @@ 981 FORMAT (/' Initial time : ',A) 982 FORMAT ( ' Water level time : ',A) 983 FORMAT ( ' Ice field time : ',A) + 990 FORMAT ( ' Air density time : ',A) ! 984 FORMAT (// & - 37X,' | input | output |'/ & - 37X,' |-------------------|---------------|'/ & + 37X,' | input | output |'/ & + 37X,' |-----------------------|---------------|'/ & 2X,' step | pass | date time |', & - ' b w l c i i1 i5 d | g p t r b f c |'/ & + ' b w l c t r i i1 i5 d | g p t r b f c |'/ & 2X,'--------|------|---------------------|', & '-------------------|---------------|'/ & 2X,'--------+------+---------------------+', & @@ -1976,7 +1989,8 @@ !/MPI STH2M, HSIG, PHICE, TAUICE, USSP, & !/MPI STMAXE, STMAXD, HMAXE, HCMAXE, HMAXD, & !/MPI HCMAXD, QP, PTHP0, PQP, PPE, PGW, PSW, & -!/MPI PTM1, PT1, PT2, PEP, WBT, CX, CY +!/MPI PTM1, PT1, PT2, PEP, WBT, CX, CY, & +!/MPI TAUOCX, TAUOCY, WNMEAN !/MPI USE W3GDATMD, ONLY: NK !/MPI USE W3ODATMD, ONLY: NDST, IAPROC, NAPROC, NTPROC, FLOUT, & @@ -2042,8 +2056,9 @@ ! NRQMAX is the maximum number of fields, it is the sum of the ! sizes of scalar fields (Hs) + 2-component vectors (CUR) + 3-comp ... ! -!/MPI NRQMAX = 0 + 12 + 0 + 2+(NOGE(4)-2)*(NOSWLL+1) + 10+4 + & -!/MPI 7+6 + 5+5 + 2+2 + 5+0 + NOEXTR +!/MPI NRQMAX = 1+0+0 + 19+0+0 + 0+0+0 + & +!/MPI 2+(NOGE(4)-2)*(NOSWLL+1) + 11+3+1 + & +!/MPI 10+7+1 + 5+4+1 + 5+2+0 + 5+NOEXTR !/MPI DO IFJ=1,5 !/MPI IF ( FLGRDALL( 3,IFJ)) NRQMAX = NRQMAX + & !/MPI E3DF(3,IFJ) - E3DF(2,IFJ) + 1 @@ -2213,6 +2228,14 @@ !/MPIT WRITE (NDST,9011) IH, ' 2/17', IROOT, IT, IRQGO(IH), IERR !/MPI END IF ! +!/MPI IF ( FLGRDALL( 2, 19) ) THEN +!/MPI IH = IH + 1 +!/MPI IT = IT + 1 +!/MPI CALL MPI_SEND_INIT (WNMEAN(1),NSEALM , MPI_REAL, IROOT, & +!/MPI IT, MPI_COMM_WAVE, IRQGO(IH), IERR) +!/MPIT WRITE (NDST,9011) IH, ' 2/19', IROOT, IT, IRQGO(IH), IERR +!/MPI END IF +! !/MPI IF ( FLGRDALL( 3, 1) ) THEN !/MPI DO IK=E3DF(2,1),E3DF(3,1) !/MPI IH = IH + 1 @@ -2675,6 +2698,19 @@ !/MPI END DO !/MPI END IF ! +!/MPI IF ( FLGRDALL( 6, 13) ) THEN +!/MPI IH = IH + 1 +!/MPI IT = IT + 1 +!/MPI CALL MPI_SEND_INIT (TAUOCX(1),NSEALM , MPI_REAL, IROOT, & +!/MPI IT, MPI_COMM_WAVE, IRQGO(IH), IERR) +!/MPIT WRITE (NDST,9011) IH, ' 6/13', IROOT, IT, IRQGO(IH), IERR +!/MPI IH = IH + 1 +!/MPI IT = IT + 1 +!/MPI CALL MPI_SEND_INIT (TAUOCY(1),NSEALM , MPI_REAL, IROOT, & +!/MPI IT, MPI_COMM_WAVE, IRQGO(IH), IERR) +!/MPIT WRITE (NDST,9011) IH, ' 6/13', IROOT, IT, IRQGO(IH), IERR +!/MPI END IF +! !/MPI IF ( FLGRDALL( 7, 1) ) THEN !/MPI IH = IH + 1 !/MPI IT = IT + 1 @@ -3018,6 +3054,14 @@ !/MPIT WRITE (NDST,9011) IH, ' 2/17', IFROM, IT, IRQGO2(IH), IERR !/MPI END IF ! +!/MPI IF ( FLGRDALL( 2, 19) ) THEN +!/MPI IH = IH + 1 +!/MPI IT = IT + 1 +!/MPI CALL MPI_RECV_INIT (WNMEAN(I0),1,WW3_FIELD_VEC, IFROM, IT, & +!/MPI MPI_COMM_WAVE, IRQGO2(IH), IERR ) +!/MPIT WRITE (NDST,9011) IH, ' 2/19', IFROM, IT, IRQGO2(IH), IERR +!/MPI END IF +! !/MPI IF ( FLGRDALL( 3, 1) ) THEN !/MPI DO IK=E3DF(2,1),E3DF(3,1) !/MPI IH = IH + 1 @@ -3479,6 +3523,19 @@ !/MPI END DO !/MPI END IF ! +!/MPI IF ( FLGRDALL( 6, 13) ) THEN +!/MPI IH = IH + 1 +!/MPI IT = IT + 1 +!/MPI CALL MPI_RECV_INIT (TAUOCX(I0),1,WW3_FIELD_VEC, IFROM, IT, & +!/MPI MPI_COMM_WAVE, IRQGO2(IH), IERR ) +!/MPIT WRITE (NDST,9011) IH, ' 6/13', IFROM, IT, IRQGO2(IH), IERR +!/MPI IH = IH + 1 +!/MPI IT = IT + 1 +!/MPI CALL MPI_RECV_INIT (TAUOCY(I0),1,WW3_FIELD_VEC, IFROM, IT, & +!/MPI MPI_COMM_WAVE, IRQGO2(IH), IERR ) +!/MPIT WRITE (NDST,9011) IH, ' 6/13', IFROM, IT, IRQGO2(IH), IERR +!/MPI END IF +! !/MPI IF ( FLGRDALL( 7, 1) ) THEN !/MPI IH = IH + 1 !/MPI IT = IT + 1 @@ -3672,7 +3729,7 @@ ! !/MPI IF ( FLOUT(4) .OR. FLOUT(8) ) THEN !/MPI IF (OARST) THEN -!/MPI ALLOCATE ( OUTPTS(IMOD)%OUT4%IRQRS(30*NAPROC) ) +!/MPI ALLOCATE ( OUTPTS(IMOD)%OUT4%IRQRS(34*NAPROC) ) !/MPI ELSE !/MPI ALLOCATE ( OUTPTS(IMOD)%OUT4%IRQRS(3*NAPROC) ) !/MPI ENDIF @@ -3747,12 +3804,20 @@ !/MPI IT = IT0 + 9 !/MPI CALL MPI_SEND_INIT (T0M1(1), NSEALM, MPI_REAL, & !/MPI IROOT, IT, MPI_COMM_WAVE, IRQRS(IH), IERR) -!/MPIT WRITE (NDST,9011) IH, 'S T0', IROOT, IT, IRQRS(IH), IERR +!/MPIT WRITE (NDST,9021) IH, 'S T0', IROOT, IT, IRQRS(IH), IERR !/MPI ENDIF ! -!/MPI IF ( FLOGRR( 2, 6) ) THEN +!/MPI IF ( FLOGRR( 2, 5) ) THEN !/MPI IH = IH + 1 !/MPI IT = IT0 + 10 +!/MPI CALL MPI_SEND_INIT (T01 (1), NSEALM, MPI_REAL, & +!/MPI IROOT, IT, MPI_COMM_WAVE, IRQRS(IH), IERR) +!/MPIT WRITE (NDST,9021) IH, 'S T1', IROOT, IT, IRQRS(IH), IERR +!/MPI ENDIF +! +!/MPI IF ( FLOGRR( 2, 6) ) THEN +!/MPI IH = IH + 1 +!/MPI IT = IT0 + 11 !/MPI CALL MPI_SEND_INIT (FP0 (1), NSEALM, MPI_REAL, & !/MPI IROOT, IT, MPI_COMM_WAVE, IRQRS(IH), IERR) !/MPIT WRITE (NDST,9021) IH, 'S FP', IROOT, IT, IRQRS(IH), IERR @@ -3760,15 +3825,23 @@ ! !/MPI IF ( FLOGRR( 2, 7) ) THEN !/MPI IH = IH + 1 -!/MPI IT = IT0 + 11 +!/MPI IT = IT0 + 12 !/MPI CALL MPI_SEND_INIT (THM (1), NSEALM, MPI_REAL, & !/MPI IROOT, IT, MPI_COMM_WAVE, IRQRS(IH), IERR) !/MPIT WRITE (NDST,9021) IH, 'S TH', IROOT, IT, IRQRS(IH), IERR !/MPI END IF ! +!/MPI IF ( FLOGRR( 2, 19) ) THEN +!/MPI IH = IH + 1 +!/MPI IT = IT0 + 13 +!/MPI CALL MPI_SEND_INIT (WNMEAN(1), NSEALM, MPI_REAL, & +!/MPI IROOT, IT, MPI_COMM_WAVE, IRQRS(IH), IERR) +!/MPIT WRITE (NDST,9021) IH, 'S WM', IROOT, IT, IRQRS(IH), IERR +!/MPI END IF +! !/MPI IF ( FLOGRR( 5, 2) ) THEN !/MPI IH = IH + 1 -!/MPI IT = IT0 + 12 +!/MPI IT = IT0 + 14 !/MPI CALL MPI_SEND_INIT (CHARN(1), NSEALM, MPI_REAL, & !/MPI IROOT, IT, MPI_COMM_WAVE, IRQRS(IH), IERR) !/MPIT WRITE (NDST,9021) IH, 'S CH', IROOT, IT, IRQRS(IH), IERR @@ -3776,12 +3849,12 @@ ! !/MPI IF ( FLOGRR( 5, 5) ) THEN !/MPI IH = IH + 1 -!/MPI IT = IT0 + 13 +!/MPI IT = IT0 + 15 !/MPI CALL MPI_SEND_INIT (TAUWIX(1), NSEALM, MPI_REAL, & !/MPI IROOT, IT, MPI_COMM_WAVE, IRQRS(IH), IERR) !/MPIT WRITE (NDST,9021) IH, 'S WX', IROOT, IT, IRQRS(IH), IERR !/MPI IH = IH + 1 -!/MPI IT = IT0 + 14 +!/MPI IT = IT0 + 16 !/MPI CALL MPI_SEND_INIT (TAUWIY(1), NSEALM, MPI_REAL, & !/MPI IROOT, IT, MPI_COMM_WAVE, IRQRS(IH), IERR) !/MPIT WRITE (NDST,9021) IH, 'S WY', IROOT, IT, IRQRS(IH), IERR @@ -3789,7 +3862,7 @@ ! !/MPI IF ( FLOGRR( 5, 11) ) THEN !/MPI IH = IH + 1 -!/MPI IT = IT0 + 15 +!/MPI IT = IT0 + 17 !/MPI CALL MPI_SEND_INIT (TWS (1), NSEALM, MPI_REAL, & !/MPI IROOT, IT, MPI_COMM_WAVE, IRQRS(IH), IERR) !/MPIT WRITE (NDST,9021) IH, 'S TS', IROOT, IT, IRQRS(IH), IERR @@ -3797,12 +3870,12 @@ ! !/MPI IF ( FLOGRR( 6, 2) ) THEN !/MPI IH = IH + 1 -!/MPI IT = IT0 + 16 +!/MPI IT = IT0 + 18 !/MPI CALL MPI_SEND_INIT (TAUOX(1), NSEALM, MPI_REAL, & !/MPI IROOT, IT, MPI_COMM_WAVE, IRQRS(IH), IERR) !/MPIT WRITE (NDST,9021) IH, 'S OX', IROOT, IT, IRQRS(IH), IERR !/MPI IH = IH + 1 -!/MPI IT = IT0 + 17 +!/MPI IT = IT0 + 19 !/MPI CALL MPI_SEND_INIT (TAUOY(1), NSEALM, MPI_REAL, & !/MPI IROOT, IT, MPI_COMM_WAVE, IRQRS(IH), IERR) !/MPIT WRITE (NDST,9021) IH, 'S OY', IROOT, IT, IRQRS(IH), IERR @@ -3810,7 +3883,7 @@ ! !/MPI IF ( FLOGRR( 6, 3) ) THEN !/MPI IH = IH + 1 -!/MPI IT = IT0 + 18 +!/MPI IT = IT0 + 20 !/MPI CALL MPI_SEND_INIT (BHD (1), NSEALM, MPI_REAL, & !/MPI IROOT, IT, MPI_COMM_WAVE, IRQRS(IH), IERR) !/MPIT WRITE (NDST,9021) IH, 'S BH', IROOT, IT, IRQRS(IH), IERR @@ -3818,7 +3891,7 @@ ! !/MPI IF ( FLOGRR( 6, 4) ) THEN !/MPI IH = IH + 1 -!/MPI IT = IT0 + 19 +!/MPI IT = IT0 + 21 !/MPI CALL MPI_SEND_INIT (PHIOC(1), NSEALM, MPI_REAL, & !/MPI IROOT, IT, MPI_COMM_WAVE, IRQRS(IH), IERR) !/MPIT WRITE (NDST,9021) IH, 'S PH', IROOT, IT, IRQRS(IH), IERR @@ -3826,12 +3899,12 @@ ! !/MPI IF ( FLOGRR( 6, 5) ) THEN !/MPI IH = IH + 1 -!/MPI IT = IT0 + 20 +!/MPI IT = IT0 + 22 !/MPI CALL MPI_SEND_INIT (TUSX (1), NSEALM, MPI_REAL, & !/MPI IROOT, IT, MPI_COMM_WAVE, IRQRS(IH), IERR) !/MPIT WRITE (NDST,9021) IH, 'S UX', IROOT, IT, IRQRS(IH), IERR !/MPI IH = IH + 1 -!/MPI IT = IT0 + 21 +!/MPI IT = IT0 + 23 !/MPI CALL MPI_SEND_INIT (TUSY (1), NSEALM, MPI_REAL, & !/MPI IROOT, IT, MPI_COMM_WAVE, IRQRS(IH), IERR) !/MPIT WRITE (NDST,9021) IH, 'S UY', IROOT, IT, IRQRS(IH), IERR @@ -3839,12 +3912,12 @@ ! !/MPI IF ( FLOGRR( 6, 6) ) THEN !/MPI IH = IH + 1 -!/MPI IT = IT0 + 22 +!/MPI IT = IT0 + 24 !/MPI CALL MPI_SEND_INIT (USSX (1), NSEALM, MPI_REAL, & !/MPI IROOT, IT, MPI_COMM_WAVE, IRQRS(IH), IERR) !/MPIT WRITE (NDST,9021) IH, 'S SX', IROOT, IT, IRQRS(IH), IERR !/MPI IH = IH + 1 -!/MPI IT = IT0 + 23 +!/MPI IT = IT0 + 25 !/MPI CALL MPI_SEND_INIT (USSY (1), NSEALM, MPI_REAL, & !/MPI IROOT, IT, MPI_COMM_WAVE, IRQRS(IH), IERR) !/MPIT WRITE (NDST,9021) IH, 'S SY', IROOT, IT, IRQRS(IH), IERR @@ -3852,25 +3925,38 @@ ! !/MPI IF ( FLOGRR( 6,10) ) THEN !/MPI IH = IH + 1 -!/MPI IT = IT0 + 24 +!/MPI IT = IT0 + 26 !/MPI CALL MPI_SEND_INIT (TAUICE(1,1), NSEALM, MPI_REAL, & !/MPI IROOT, IT, MPI_COMM_WAVE, IRQRS(IH), IERR) !/MPIT WRITE (NDST,9021) IH, 'S I1', IROOT, IT, IRQRS(IH), IERR !/MPI IH = IH + 1 -!/MPI IT = IT0 + 25 +!/MPI IT = IT0 + 27 !/MPI CALL MPI_SEND_INIT (TAUICE(1,2), NSEALM, MPI_REAL, & !/MPI IROOT, IT, MPI_COMM_WAVE, IRQRS(IH), IERR) !/MPIT WRITE (NDST,9021) IH, 'S I2', IROOT, IT, IRQRS(IH), IERR !/MPI END IF ! +!/MPI IF ( FLOGRR( 6,13) ) THEN +!/MPI IH = IH + 1 +!/MPI IT = IT0 + 28 +!/MPI CALL MPI_SEND_INIT (TAUOCX(1), NSEALM, MPI_REAL, & +!/MPI IROOT, IT, MPI_COMM_WAVE, IRQRS(IH), IERR) +!/MPIT WRITE (NDST,9021) IH, 'S TX', IROOT, IT, IRQRS(IH), IERR +!/MPI IH = IH + 1 +!/MPI IT = IT0 + 29 +!/MPI CALL MPI_SEND_INIT (TAUOCY(1), NSEALM, MPI_REAL, & +!/MPI IROOT, IT, MPI_COMM_WAVE, IRQRS(IH), IERR) +!/MPIT WRITE (NDST,9021) IH, 'S TY', IROOT, IT, IRQRS(IH), IERR +!/MPI END IF +! !/MPI IF ( FLOGRR( 7, 2) ) THEN !/MPI IH = IH + 1 -!/MPI IT = IT0 + 26 +!/MPI IT = IT0 + 30 !/MPI CALL MPI_SEND_INIT (UBA (1), NSEALM, MPI_REAL, & !/MPI IROOT, IT, MPI_COMM_WAVE, IRQRS(IH), IERR) !/MPIT WRITE (NDST,9021) IH, 'S BA', IROOT, IT, IRQRS(IH), IERR !/MPI IH = IH + 1 -!/MPI IT = IT0 + 27 +!/MPI IT = IT0 + 31 !/MPI CALL MPI_SEND_INIT (UBD (1), NSEALM, MPI_REAL, & !/MPI IROOT, IT, MPI_COMM_WAVE, IRQRS(IH), IERR) !/MPIT WRITE (NDST,9021) IH, 'S BD', IROOT, IT, IRQRS(IH), IERR @@ -3878,7 +3964,7 @@ ! !/MPI IF ( FLOGRR( 7, 4) ) THEN !/MPI IH = IH + 1 -!/MPI IT = IT0 + 28 +!/MPI IT = IT0 + 32 !/MPI CALL MPI_SEND_INIT (PHIBBL(1), NSEALM, MPI_REAL, & !/MPI IROOT, IT, MPI_COMM_WAVE, IRQRS(IH), IERR) !/MPIT WRITE (NDST,9021) IH, 'S PB', IROOT, IT, IRQRS(IH), IERR @@ -3886,12 +3972,12 @@ ! !/MPI IF ( FLOGRR( 7, 5) ) THEN !/MPI IH = IH + 1 -!/MPI IT = IT0 + 29 +!/MPI IT = IT0 + 33 !/MPI CALL MPI_SEND_INIT (TAUBBL(1,1), NSEALM, MPI_REAL, & !/MPI IROOT, IT, MPI_COMM_WAVE, IRQRS(IH), IERR) !/MPIT WRITE (NDST,9021) IH, 'S T1', IROOT, IT, IRQRS(IH), IERR !/MPI IH = IH + 1 -!/MPI IT = IT0 + 30 +!/MPI IT = IT0 + 34 !/MPI CALL MPI_SEND_INIT (TAUBBL(1,2), NSEALM, MPI_REAL, & !/MPI IROOT, IT, MPI_COMM_WAVE, IRQRS(IH), IERR) !/MPIT WRITE (NDST,9021) IH, 'S T2', IROOT, IT, IRQRS(IH), IERR @@ -3973,9 +4059,17 @@ !/MPIT WRITE (NDST,9021) IH, 'R T0', IFROM, IT, IRQRS(IH), IERR !/MPI ENDIF ! -!/MPI IF ( FLOGRR( 2, 6) ) THEN +!/MPI IF ( FLOGRR( 2, 5) ) THEN !/MPI IH = IH + 1 !/MPI IT = IT0 + 10 +!/MPI CALL MPI_RECV_INIT (T01 (I0),1,WW3_FIELD_VEC, & +!/MPI IFROM, IT, MPI_COMM_WAVE, IRQRS(IH), IERR ) +!/MPIT WRITE (NDST,9021) IH, 'R T1', IFROM, IT, IRQRS(IH), IERR +!/MPI ENDIF +! +!/MPI IF ( FLOGRR( 2, 6) ) THEN +!/MPI IH = IH + 1 +!/MPI IT = IT0 + 11 !/MPI CALL MPI_RECV_INIT (FP0 (I0),1,WW3_FIELD_VEC, & !/MPI IFROM, IT, MPI_COMM_WAVE, IRQRS(IH), IERR ) !/MPIT WRITE (NDST,9021) IH, 'R FP', IFROM, IT, IRQRS(IH), IERR @@ -3983,15 +4077,23 @@ ! !/MPI IF ( FLOGRR( 2, 7) ) THEN !/MPI IH = IH + 1 -!/MPI IT = IT0 + 11 +!/MPI IT = IT0 + 12 !/MPI CALL MPI_RECV_INIT (THM (I0),1,WW3_FIELD_VEC, & !/MPI IFROM, IT, MPI_COMM_WAVE, IRQRS(IH), IERR ) !/MPIT WRITE (NDST,9021) IH, 'R TH', IFROM, IT, IRQRS(IH), IERR !/MPI END IF ! +!/MPI IF ( FLOGRR( 2, 19) ) THEN +!/MPI IH = IH + 1 +!/MPI IT = IT0 + 13 +!/MPI CALL MPI_RECV_INIT (WNMEAN(I0),1,WW3_FIELD_VEC, & +!/MPI IFROM, IT, MPI_COMM_WAVE, IRQRS(IH), IERR ) +!/MPIT WRITE (NDST,9021) IH, 'R WM', IFROM, IT, IRQRS(IH), IERR +!/MPI END IF +! !/MPI IF ( FLOGRR( 5, 2) ) THEN !/MPI IH = IH + 1 -!/MPI IT = IT0 + 12 +!/MPI IT = IT0 + 14 !/MPI CALL MPI_RECV_INIT (CHARN(I0),1,WW3_FIELD_VEC, & !/MPI IFROM, IT, MPI_COMM_WAVE, IRQRS(IH), IERR ) !/MPIT WRITE (NDST,9021) IH, 'R CH', IFROM, IT, IRQRS(IH), IERR @@ -3999,12 +4101,12 @@ ! !/MPI IF ( FLOGRR( 5, 5) ) THEN !/MPI IH = IH + 1 -!/MPI IT = IT0 + 13 +!/MPI IT = IT0 + 15 !/MPI CALL MPI_RECV_INIT (TAUWIX(I0),1,WW3_FIELD_VEC,& !/MPI IFROM, IT, MPI_COMM_WAVE, IRQRS(IH), IERR ) !/MPIT WRITE (NDST,9021) IH, 'R WX', IFROM, IT, IRQRS(IH), IERR !/MPI IH = IH + 1 -!/MPI IT = IT0 + 14 +!/MPI IT = IT0 + 16 !/MPI CALL MPI_RECV_INIT (TAUWIY(I0),1,WW3_FIELD_VEC,& !/MPI IFROM, IT, MPI_COMM_WAVE, IRQRS(IH), IERR ) !/MPIT WRITE (NDST,9021) IH, 'R WY', IFROM, IT, IRQRS(IH), IERR @@ -4012,7 +4114,7 @@ ! !/MPI IF ( FLOGRR( 5,11) ) THEN !/MPI IH = IH + 1 -!/MPI IT = IT0 + 15 +!/MPI IT = IT0 + 17 !/MPI CALL MPI_RECV_INIT (TWS (I0),1,WW3_FIELD_VEC, & !/MPI IFROM, IT, MPI_COMM_WAVE, IRQRS(IH), IERR ) !/MPIT WRITE (NDST,9021) IH, 'R TS', IFROM, IT, IRQRS(IH), IERR @@ -4020,12 +4122,12 @@ ! !/MPI IF ( FLOGRR( 6, 2) ) THEN !/MPI IH = IH + 1 -!/MPI IT = IT0 + 16 +!/MPI IT = IT0 + 18 !/MPI CALL MPI_RECV_INIT (TAUOX(I0),1,WW3_FIELD_VEC, & !/MPI IFROM, IT, MPI_COMM_WAVE, IRQRS(IH), IERR ) !/MPIT WRITE (NDST,9021) IH, 'R OX', IFROM, IT, IRQRS(IH), IERR !/MPI IH = IH + 1 -!/MPI IT = IT0 + 17 +!/MPI IT = IT0 + 19 !/MPI CALL MPI_RECV_INIT (TAUOY(I0),1,WW3_FIELD_VEC, & !/MPI IFROM, IT, MPI_COMM_WAVE, IRQRS(IH), IERR ) !/MPIT WRITE (NDST,9021) IH, 'R OY', IFROM, IT, IRQRS(IH), IERR @@ -4033,7 +4135,7 @@ ! !/MPI IF ( FLOGRR( 6, 3) ) THEN !/MPI IH = IH + 1 -!/MPI IT = IT0 + 18 +!/MPI IT = IT0 + 20 !/MPI CALL MPI_RECV_INIT (BHD (I0),1,WW3_FIELD_VEC, & !/MPI IFROM, IT, MPI_COMM_WAVE, IRQRS(IH), IERR ) !/MPIT WRITE (NDST,9021) IH, 'R BH', IFROM, IT, IRQRS(IH), IERR @@ -4041,7 +4143,7 @@ ! !/MPI IF ( FLOGRR( 6, 4) ) THEN !/MPI IH = IH + 1 -!/MPI IT = IT0 + 19 +!/MPI IT = IT0 + 21 !/MPI CALL MPI_RECV_INIT (PHIOC(I0),1,WW3_FIELD_VEC, & !/MPI IFROM, IT, MPI_COMM_WAVE, IRQRS(IH), IERR ) !/MPIT WRITE (NDST,9021) IH, 'R PH', IFROM, IT, IRQRS(IH), IERR @@ -4049,12 +4151,12 @@ ! !/MPI IF ( FLOGRR( 6, 5) ) THEN !/MPI IH = IH + 1 -!/MPI IT = IT0 + 20 +!/MPI IT = IT0 + 22 !/MPI CALL MPI_RECV_INIT (TUSX (I0),1,WW3_FIELD_VEC, & !/MPI IFROM, IT, MPI_COMM_WAVE, IRQRS(IH), IERR ) !/MPIT WRITE (NDST,9021) IH, 'R UX', IFROM, IT, IRQRS(IH), IERR !/MPI IH = IH + 1 -!/MPI IT = IT0 + 21 +!/MPI IT = IT0 + 23 !/MPI CALL MPI_RECV_INIT (TUSY (I0),1,WW3_FIELD_VEC, & !/MPI IFROM, IT, MPI_COMM_WAVE, IRQRS(IH), IERR ) !/MPIT WRITE (NDST,9021) IH, 'R UY', IFROM, IT, IRQRS(IH), IERR @@ -4062,12 +4164,12 @@ ! !/MPI IF ( FLOGRR( 6, 6) ) THEN !/MPI IH = IH + 1 -!/MPI IT = IT0 + 22 +!/MPI IT = IT0 + 24 !/MPI CALL MPI_RECV_INIT (USSX (I0),1,WW3_FIELD_VEC, & !/MPI IFROM, IT, MPI_COMM_WAVE, IRQRS(IH), IERR ) !/MPIT WRITE (NDST,9021) IH, 'R SX', IFROM, IT, IRQRS(IH), IERR !/MPI IH = IH + 1 -!/MPI IT = IT0 + 23 +!/MPI IT = IT0 + 25 !/MPI CALL MPI_RECV_INIT (USSY (I0),1,WW3_FIELD_VEC, & !/MPI IFROM, IT, MPI_COMM_WAVE, IRQRS(IH), IERR ) !/MPIT WRITE (NDST,9021) IH, 'R SY', IFROM, IT, IRQRS(IH), IERR @@ -4075,25 +4177,38 @@ ! !/MPI IF ( FLOGRR( 6,10) ) THEN !/MPI IH = IH + 1 -!/MPI IT = IT0 + 24 +!/MPI IT = IT0 + 26 !/MPI CALL MPI_RECV_INIT (TAUICE(I0,1),1,WW3_FIELD_VEC,& !/MPI IFROM, IT, MPI_COMM_WAVE, IRQRS(IH), IERR ) !/MPIT WRITE (NDST,9021) IH, 'R I1', IFROM, IT, IRQRS(IH), IERR !/MPI IH = IH + 1 -!/MPI IT = IT0 + 25 +!/MPI IT = IT0 + 27 !/MPI CALL MPI_RECV_INIT (TAUICE(I0,2),1,WW3_FIELD_VEC,& !/MPI IFROM, IT, MPI_COMM_WAVE, IRQRS(IH), IERR ) !/MPIT WRITE (NDST,9021) IH, 'R I2', IFROM, IT, IRQRS(IH), IERR !/MPI END IF ! +!/MPI IF ( FLOGRR( 6,13) ) THEN +!/MPI IH = IH + 1 +!/MPI IT = IT0 + 28 +!/MPI CALL MPI_RECV_INIT (TAUOCX(I0),1,WW3_FIELD_VEC,& +!/MPI IFROM, IT, MPI_COMM_WAVE, IRQRS(IH), IERR ) +!/MPIT WRITE (NDST,9021) IH, 'R SX', IFROM, IT, IRQRS(IH), IERR +!/MPI IH = IH + 1 +!/MPI IT = IT0 + 29 +!/MPI CALL MPI_RECV_INIT (TAUOCY(I0),1,WW3_FIELD_VEC,& +!/MPI IFROM, IT, MPI_COMM_WAVE, IRQRS(IH), IERR ) +!/MPIT WRITE (NDST,9021) IH, 'R SY', IFROM, IT, IRQRS(IH), IERR +!/MPI END IF +! !/MPI IF ( FLOGRR( 7, 2) ) THEN !/MPI IH = IH + 1 -!/MPI IT = IT0 + 26 +!/MPI IT = IT0 + 30 !/MPI CALL MPI_RECV_INIT (UBA (I0),1,WW3_FIELD_VEC, & !/MPI IFROM, IT, MPI_COMM_WAVE, IRQRS(IH), IERR ) !/MPIT WRITE (NDST,9021) IH, 'R BA', IFROM, IT, IRQRS(IH), IERR !/MPI IH = IH + 1 -!/MPI IT = IT0 + 27 +!/MPI IT = IT0 + 31 !/MPI CALL MPI_RECV_INIT (UBD (I0),1,WW3_FIELD_VEC, & !/MPI IFROM, IT, MPI_COMM_WAVE, IRQRS(IH), IERR ) !/MPIT WRITE (NDST,9021) IH, 'R BD', IFROM, IT, IRQRS(IH), IERR @@ -4101,7 +4216,7 @@ ! !/MPI IF ( FLOGRR( 7, 4) ) THEN !/MPI IH = IH + 1 -!/MPI IT = IT0 + 28 +!/MPI IT = IT0 + 32 !/MPI CALL MPI_RECV_INIT (PHIBBL(I0),1,WW3_FIELD_VEC,& !/MPI IFROM, IT, MPI_COMM_WAVE, IRQRS(IH), IERR ) !/MPIT WRITE (NDST,9021) IH, 'R PB', IFROM, IT, IRQRS(IH), IERR @@ -4109,12 +4224,12 @@ ! !/MPI IF ( FLOGRR( 7, 5) ) THEN !/MPI IH = IH + 1 -!/MPI IT = IT0 + 29 +!/MPI IT = IT0 + 33 !/MPI CALL MPI_RECV_INIT (TAUBBL(I0,1),1,WW3_FIELD_VEC,& !/MPI IFROM, IT, MPI_COMM_WAVE, IRQRS(IH), IERR ) !/MPIT WRITE (NDST,9021) IH, 'R T1', IFROM, IT, IRQRS(IH), IERR !/MPI IH = IH + 1 -!/MPI IT = IT0 + 30 +!/MPI IT = IT0 + 34 !/MPI CALL MPI_RECV_INIT (TAUBBL(I0,2),1,WW3_FIELD_VEC,& !/MPI IFROM, IT, MPI_COMM_WAVE, IRQRS(IH), IERR ) !/MPIT WRITE (NDST,9021) IH, 'R T2', IFROM, IT, IRQRS(IH), IERR @@ -4129,7 +4244,7 @@ ! !/MPI NRQRS = IH !/MPI IF (OARST) THEN -!/MPI IT0 = IT0 + 30 +!/MPI IT0 = IT0 + 34 !/MPI ELSE !/MPI IT0 = IT0 + 3 !/MPI ENDIF diff --git a/model/ftn/w3iogomd.ftn b/model/ftn/w3iogomd.ftn index 6cdd77e5e..6a8689ccf 100644 --- a/model/ftn/w3iogomd.ftn +++ b/model/ftn/w3iogomd.ftn @@ -6,7 +6,7 @@ !/ | WAVEWATCH III NOAA/NCEP | !/ | H. L. Tolman | !/ | FORTRAN 90 | -!/ | Last update : 03-Nov-2020 | +!/ | Last update : 22-Mar-2021 | !/ +-----------------------------------+ !/ !/ 04-Jan-2001 : Origination. ( version 2.00 ) @@ -59,6 +59,7 @@ !/ seperate subroutine. (C. Bunney) !/ 15-Jan-2020 : Added TP output based on exsiting ( version 7.12 ) !/ FP internal field. (C. Bunney) +!/ 22-Mar-2021 : Add extra coupling fields as output ( version 7.xx ) !/ !/ Copyright 2009-2014 National Weather Service (NWS), !/ National Oceanic and Atmospheric Administration. All rights @@ -674,10 +675,11 @@ !/ | WAVEWATCH III NOAA/NCEP | !/ | C. Bunney | !/ | FORTRAN 90 | -!/ | Last update : 03-Nov-2020 | +!/ | Last update : 22-Mar-2021 | !/ +-----------------------------------+ !/ !/ 03-Nov-2020 : Origination. ( version 7.12 ) +!/ 22-Mar-2021 : Add extra coupling fields as output ( version 7.xx ) ! ! 1. Purpose : ! @@ -734,15 +736,21 @@ CASE('IBG') I = 1 J = 7 + CASE('TAU') + I = 1 + J = 8 + CASE('RHO') + I = 1 + J = 9 !/BT4 CASE('D50') !/BT4 I = 1 -!/BT4 J = 8 +!/BT4 J = 10 !/IS2 CASE('IC1') !/IS2 I = 1 -!/IS2 J = 9 +!/IS2 J = 11 !/IS2 CASE('IC5') !/IS2 I = 1 -!/IS2 J = 10 +!/IS2 J = 12 ! Group 2 ! !/OASACM CASE('AHS') @@ -805,6 +813,9 @@ CASE('TP') ! Uses FP0 internally, as per FP I = 2 J = 18 + CASE('WNM') + I = 2 + J = 19 ! ! Group 3 ! @@ -969,7 +980,9 @@ ELSE IF ( IAPROC .EQ. NAPOUT ) WRITE(NDSEN,1008) 'USP','USSP' END IF - + CASE('TOC') + I = 6 + J = 13 ! ! Group 7 ! @@ -2293,7 +2306,7 @@ !/ | WAVEWATCH III NOAA/NCEP | !/ | H. L. Tolman | !/ | FORTRAN 90 | -!/ | Last update : 27-Nov-2013 | +!/ | Last update : 22-Mar-2021 | !/ +-----------------------------------+ !/ !/ 17-Mar-1999 : Distributed FORTRAN 77 version. ( version 1.18 ) @@ -2323,6 +2336,7 @@ !/ 01-Mar-2018 : Removed RTD code (now used in post ( version 6.02 ) !/ processing code) !/ 25-Aug-2018 : Add WBT parameter ( version 6.06 ) +!/ 22-Mar-2021 : Add extra coupling fields as output ( version 7.xx ) !/ ! 1. Purpose : ! @@ -2403,10 +2417,11 @@ USE W3ODATMD, ONLY: W3SETO !/ USE W3WDATMD, ONLY: TIME, DINIT, WLV, ICE, ICEF, ICEH, BERG, & - UST, USTDIR, ASF - USE W3ADATMD, ONLY: AINIT, DW, UA, UD, AS, CX, CY, WN + UST, USTDIR, ASF, RHOAIR + USE W3ADATMD, ONLY: AINIT, DW, UA, UD, AS, CX, CY, WN, & + TAUA, TAUADIR USE W3ADATMD, ONLY: HS, WLM, T02, T0M1, T01, FP0, THM, THS, THP0,& - WBT + WBT, WNMEAN USE W3ADATMD, ONLY: FP1, THP1, DTDYN, & FCUT, ABA, ABD, UBA, UBD, SXX, SYY, SXY, & PHS, PTP, PLP, PDIR, PSI, PWS, PWST, PNR, & @@ -2419,7 +2434,7 @@ CFLXYMAX, CFLTHMAX, CFLKMAX, P2SMS, US3D, & TH1M, STH1M, TH2M, STH2M, HSIG, PHICE, TAUICE,& STMAXE, STMAXD, HMAXE, HCMAXE, HMAXD, HCMAXD,& - USSP + USSP, TAUOCX, TAUOCY !/ USE W3ODATMD, ONLY: NOGRP, NGRPP, IDOUT, UNDEF, NDST, NDSE, & FLOGRD, IPASS => IPASS1, WRITE => WRITE1, & @@ -2673,6 +2688,7 @@ IF ( FLOGRD( 2,15) ) HMAXD (ISEA) = UNDEF IF ( FLOGRD( 2,16) ) HCMAXD(ISEA) = UNDEF IF ( FLOGRD( 2,17) ) WBT (ISEA) = UNDEF + IF ( FLOGRD( 2,19) ) WNMEAN(ISEA) = UNDEF ! IF ( FLOGRD( 3, 1) ) EF (ISEA,:) = UNDEF IF ( FLOGRD( 3, 2) ) TH1M (ISEA,:) = UNDEF @@ -2742,6 +2758,10 @@ IF ( FLOGRD( 6, 10) ) TAUICE(ISEA,:) = UNDEF IF ( FLOGRD( 6, 11) ) PHICE(ISEA) = UNDEF IF ( FLOGRD( 6, 12) ) USSP(ISEA,:) = UNDEF + IF ( FLOGRD( 6, 13) ) THEN + TAUOCX(ISEA) = UNDEF + TAUOCY(ISEA) = UNDEF + END IF ! IF ( FLOGRD( 7, 1) ) THEN ABA (ISEA) = UNDEF @@ -2852,13 +2872,32 @@ WRITE ( NDSOG ) ICE(1:NSEA) ELSE IF ( IFI .EQ. 1 .AND. IFJ .EQ. 7 ) THEN WRITE ( NDSOG ) BERG(1:NSEA) -!/BT4 ELSE IF ( IFI .EQ. 1 .AND. IFJ .EQ. 8 ) THEN + ELSE IF ( IFI .EQ. 1 .AND. IFJ .EQ. 8 ) THEN + DO ISEA=1, NSEA +!/ARC !!Li Rotate map-east momentum in Arctic part back to local east. JGLi02Feb2016 +!/ARC IF(ISEA .GT. NGLO) THEN +!/ARC UDARC = TAUADIR(ISEA) - ANGARC(ISEA - NGLO)*DERA +!/ARC TAUADIR(ISEA) = MOD(TPI + UDARC, TPI) +!/ARC ENDIF + IF (TAUA(ISEA) .NE.UNDEF) THEN + AUX1(ISEA) = TAUA(ISEA)*COS(TAUADIR(ISEA)) + AUX2(ISEA) = TAUA(ISEA)*SIN(TAUADIR(ISEA)) + ELSE + AUX1(ISEA) = UNDEF + AUX2(ISEA) = UNDEF + END IF + END DO + WRITE ( NDSOG ) AUX1 + WRITE ( NDSOG ) AUX2 + ELSE IF ( IFI .EQ. 1 .AND. IFJ .EQ. 9 ) THEN + WRITE ( NDSOG ) RHOAIR(1:NSEA) +!/BT4 ELSE IF ( IFI .EQ. 1 .AND. IFJ .EQ. 10 ) THEN !/BT4 WRITE ( NDSOG ) SED_D50(1:NSEA) -!/IS2 ELSE IF (IFI .EQ. 1 .AND. IFJ .EQ. 9 ) THEN +!/IS2 ELSE IF (IFI .EQ. 1 .AND. IFJ .EQ. 11 ) THEN !/IS2 WRITE (NDSOG ) ICEH(1:NSEA) -!/IS2 ELSE IF (IFI .EQ. 1 .AND. IFJ .EQ. 10 ) THEN +!/IS2 ELSE IF (IFI .EQ. 1 .AND. IFJ .EQ. 12 ) THEN !/IS2 WRITE (NDSOG ) ICEF(1:NSEA) -!/SETUP ELSE IF ( IFI .EQ. 1 .AND. IFJ .EQ. 11 ) THEN +!/SETUP ELSE IF ( IFI .EQ. 1 .AND. IFJ .EQ. 13 ) THEN !/SETUP WRITE ( NDSOG ) ZETA_SETUP(1:NSEA) ! @@ -2900,6 +2939,8 @@ WRITE ( NDSOG ) HCMAXD(1:NSEA) ELSE IF ( IFI .EQ. 2 .AND. IFJ .EQ. 17 ) THEN WRITE ( NDSOG ) WBT(1:NSEA) + ELSE IF ( IFI .EQ. 2 .AND. IFJ .EQ. 19 ) THEN + WRITE ( NDSOG ) WNMEAN(1:NSEA) ! ! Section 3) ! @@ -3029,6 +3070,9 @@ ELSE IF ( IFI .EQ. 6 .AND. IFJ .EQ. 12 ) THEN WRITE ( NDSOG ) USSP(1:NSEA, 1:USSPF(2)) WRITE ( NDSOG ) USSP(1:NSEA,NK+1:NK+USSPF(2)) + ELSE IF ( IFI .EQ. 6 .AND. IFJ .EQ. 13 ) THEN + WRITE ( NDSOG ) TAUOCX(1:NSEA) + WRITE ( NDSOG ) TAUOCY(1:NSEA) ! ! Section 7) ! @@ -3127,13 +3171,18 @@ READ (NDSOG,END=801,ERR=802,IOSTAT=IERR) ICE(1:NSEA) ELSE IF ( IFI .EQ. 1 .AND. IFJ .EQ. 7 ) THEN READ (NDSOG,END=801,ERR=802,IOSTAT=IERR) BERG(1:NSEA) -!/BT4 ELSE IF ( IFI .EQ. 1 .AND. IFJ .EQ. 8 ) THEN + ELSE IF ( IFI .EQ. 1 .AND. IFJ .EQ. 8 ) THEN + READ (NDSOG,END=801,ERR=802,IOSTAT=IERR) TAUA(1:NSEA) + READ (NDSOG,END=801,ERR=802,IOSTAT=IERR) TAUADIR(1:NSEA) + ELSE IF ( IFI .EQ. 1 .AND. IFJ .EQ. 9 ) THEN + READ (NDSOG,END=801,ERR=802,IOSTAT=IERR) RHOAIR(1:NSEA) +!/BT4 ELSE IF ( IFI .EQ. 1 .AND. IFJ .EQ. 10 ) THEN !/BT4 READ (NDSOG,END=801,ERR=802,IOSTAT=IERR) SED_D50(1:NSEA) -!/IS2 ELSE IF ( IFI .EQ. 1 .AND. IFJ .EQ. 9) THEN +!/IS2 ELSE IF ( IFI .EQ. 1 .AND. IFJ .EQ. 11 ) THEN !/IS2 READ (NDSOG,END=801,ERR=802,IOSTAT=IERR) ICEH(1:NSEA) -!/IS2 ELSE IF ( IFI .EQ. 1 .AND. IFJ .EQ. 10) THEN +!/IS2 ELSE IF ( IFI .EQ. 1 .AND. IFJ .EQ. 12 ) THEN !/IS2 READ (NDSOG,END=801,ERR=802,IOSTAT=IERR) ICEF(1:NSEA) -!/SETUP ELSE IF ( IFI .EQ. 1 .AND. IFJ .EQ. 11 ) THEN +!/SETUP ELSE IF ( IFI .EQ. 1 .AND. IFJ .EQ. 13 ) THEN !/SETUP READ (NDSOG,END=801,ERR=802,IOSTAT=IERR) ZETA_SETUP(1:NSEA) ! ! Section 2) @@ -3182,6 +3231,9 @@ HCMAXD(1:NSEA) ELSE IF ( IFI .EQ. 2 .AND. IFJ .EQ. 17 ) THEN READ (NDSOG,END=801,ERR=802,IOSTAT=IERR) WBT(1:NSEA) + ELSE IF ( IFI .EQ. 2 .AND. IFJ .EQ. 19 ) THEN + READ (NDSOG,END=801,ERR=802,IOSTAT=IERR) & + WNMEAN(1:NSEA) ! ! Section 3) ! @@ -3351,6 +3403,11 @@ USSP(1:NSEA,1:USSPF(2)) READ (NDSOG,END=801,ERR=802,IOSTAT=IERR) & USSP(1:NSEA,NK+1:NK+USSPF(2)) + ELSE IF ( IFI .EQ. 6 .AND. IFJ .EQ. 13 ) THEN + READ (NDSOG,END=801,ERR=802,IOSTAT=IERR) & + TAUOCX(1:NSEA) + READ (NDSOG,END=801,ERR=802,IOSTAT=IERR) & + TAUOCY(1:NSEA) ! ! Section 7) diff --git a/model/ftn/w3iorsmd.ftn b/model/ftn/w3iorsmd.ftn index 2a4003770..9f8c85924 100644 --- a/model/ftn/w3iorsmd.ftn +++ b/model/ftn/w3iorsmd.ftn @@ -6,7 +6,7 @@ !/ | WAVEWATCH III NOAA/NCEP | !/ | H. L. Tolman | !/ | FORTRAN 2003 | -!/ | Last update : 09-Aug-2017 | +!/ | Last update : 22-Mar-2021 | !/ +-----------------------------------+ !/ !/ See subroutine for update log. @@ -58,7 +58,7 @@ !/ !/ Private parameter statements (ID strings) !/ - CHARACTER(LEN=10), PARAMETER, PRIVATE :: VERINI = '2020-09-25' + CHARACTER(LEN=10), PARAMETER, PRIVATE :: VERINI = '2021-03-22' CHARACTER(LEN=26), PARAMETER, PRIVATE :: & IDSTR = 'WAVEWATCH III RESTART FILE' !/ @@ -70,7 +70,7 @@ !/ | WAVEWATCH III NOAA/NCEP | !/ | H. L. Tolman | !/ | FORTRAN 90 | -!/ | Last update : 25-Sep-2020 | +!/ | Last update : 22-Mar-2021 | !/ +-----------------------------------+ !/ !/ 12-Jan-1999 : Final FORTRAN 77 ( version 1.18 ) @@ -104,7 +104,7 @@ !/ restart files !/ (Roberto Padilla-Hernandez & J.H. Alves) !/ 25-Sep-2020 : Extra fields for coupled restart ( version 7.10 ) - +!/ 22-Mar-2021 : Add new coupling fields in restart ( version 7.xx ) !/ !/ Copyright 2009-2013 National Weather Service (NWS), !/ National Oceanic and Atmospheric Administration. All rights @@ -247,10 +247,11 @@ USE W3GDATMD, ONLY: W3SETG, W3SETREF, RSTYPE USE W3ODATMD, ONLY: W3SETO USE W3ADATMD, ONLY: W3SETA, W3XETA, NSEALM - USE W3ADATMD, ONLY: CX, CY, HS, WLM, T0M1, FP0, THM, CHARN, & + USE W3ADATMD, ONLY: CX, CY, HS, WLM, T0M1, T01, FP0, THM, CHARN,& TAUWIX, TAUWIY, TWS, TAUOX, TAUOY, BHD, & PHIOC, TUSX, TUSY, USSX, USSY, TAUICE, & - UBA, UBD, PHIBBL, TAUBBL + UBA, UBD, PHIBBL, TAUBBL, TAUOCX, TAUOCY, & + WNMEAN !/ USE W3GDATMD, ONLY: NX, NY, NSEA, NSEAL, NSPEC, MAPSTA, MAPST2, & GNAME, FILEXT, GTYPE, UNGTYPE @@ -746,7 +747,7 @@ WRITEBUFF(:) = 0. WRITE (NDSR,POS=RPOS,ERR=803,IOSTAT=IERR) WRITEBUFF WRITE (NDSR,POS=RPOS,ERR=803,IOSTAT=IERR) & - TLEV, TICE + TLEV, TICE, TRHO DO IPART=1,NPART NREC = NREC + 1 RPOS = 1_8 + LRECL*(NREC-1_8) @@ -851,10 +852,14 @@ WRITE(NDSR,ERR=803,IOSTAT=IERR) WLM(1:NSEA) IF ( FLOGRR(2,4) ) & WRITE(NDSR,ERR=803,IOSTAT=IERR) T0M1(1:NSEA) + IF ( FLOGRR(2,5) ) & + WRITE(NDSR,ERR=803,IOSTAT=IERR) T01(1:NSEA) IF ( FLOGRR(2,6) ) & WRITE(NDSR,ERR=803,IOSTAT=IERR) FP0(1:NSEA) IF ( FLOGRR(2,7) ) & WRITE(NDSR,ERR=803,IOSTAT=IERR) THM(1:NSEA) + IF ( FLOGRR(2,19) ) & + WRITE(NDSR,ERR=803,IOSTAT=IERR) WNMEAN(1:NSEA) IF ( FLOGRR(5,2) ) & WRITE(NDSR,ERR=803,IOSTAT=IERR) CHARN(1:NSEA) IF ( FLOGRR(5,5) ) THEN @@ -883,6 +888,10 @@ WRITE(NDSR,ERR=803,IOSTAT=IERR) TAUICE(1:NSEA,1) WRITE(NDSR,ERR=803,IOSTAT=IERR) TAUICE(1:NSEA,2) ENDIF + IF ( FLOGRR(6,13) ) THEN + WRITE(NDSR,ERR=803,IOSTAT=IERR) TAUOCX(1:NSEA) + WRITE(NDSR,ERR=803,IOSTAT=IERR) TAUOCY(1:NSEA) + ENDIF IF ( FLOGRR(7,2) ) THEN WRITE(NDSR,ERR=803,IOSTAT=IERR) UBA(1:NSEA) WRITE(NDSR,ERR=803,IOSTAT=IERR) UBD(1:NSEA) @@ -909,7 +918,7 @@ IF (TYPE.EQ.'FULL') THEN RPOS = 1_8 + LRECL*(NREC-1_8) READ (NDSR,POS=RPOS,ERR=802,IOSTAT=IERR) & - TLEV, TICE + TLEV, TICE, TRHO !/DEBUGINIT WRITE(740+IAPROC,*) 'Before reading WLV' DO IPART=1,NPART NREC = NREC + 1 @@ -1002,23 +1011,12 @@ IF (OARST) THEN !/DEBUGINIT WRITE(740+IAPROC,*) 'Before reading CUR' IF ( FLOGRR(1,2) ) THEN - READ (NDSR,ERR=802,IOSTAT=IERR) TMP(1:NSEA) - READ (NDSR,ERR=802,IOSTAT=IERR) TMP2(1:NSEA) - DO I=1, NSEALM - J = IAPROC + (I-1)*NAPROC - IF (J .LE. NSEA) THEN - CX(I) = TMP(J) - CY(I) = TMP2(J) - ENDIF - ENDDO + READ (NDSR,ERR=802,IOSTAT=IERR) CX(1:NSEA) + READ (NDSR,ERR=802,IOSTAT=IERR) CY(1:NSEA) ENDIF !/DEBUGINIT WRITE(740+IAPROC,*) 'Before reading ICEF' IF ( FLOGRR(1,9) ) THEN - READ (NDSR,ERR=802,IOSTAT=IERR) TMP(1:NSEA) - DO I=1, NSEALM - J = IAPROC + (I-1)*NAPROC - IF (J .LE. NSEA) ICEF(I) = TMP(J) - ENDDO + READ (NDSR,ERR=802,IOSTAT=IERR) ICEF(1:NSEA) ENDIF !/DEBUGINIT WRITE(740+IAPROC,*) 'Before reading HS' IF ( FLOGRR(2,1) ) THEN @@ -1041,9 +1039,15 @@ READ (NDSR,ERR=802,IOSTAT=IERR) TMP(1:NSEA) DO I=1, NSEALM J = IAPROC + (I-1)*NAPROC - IF (J .LE. NSEA) THEN - T0M1(I) = TMP(J) - ENDIF + IF (J .LE. NSEA) T0M1(I) = TMP(J) + ENDDO + ENDIF +!/DEBUGINIT WRITE(740+IAPROC,*) 'Before reading T01' + IF ( FLOGRR(2,5) ) THEN + READ (NDSR,ERR=802,IOSTAT=IERR) TMP(1:NSEA) + DO I=1, NSEALM + J = IAPROC + (I-1)*NAPROC + IF (J .LE. NSEA) T01(I) = TMP(J) ENDDO ENDIF !/DEBUGINIT WRITE(740+IAPROC,*) 'Before reading FP0' @@ -1062,6 +1066,14 @@ IF (J .LE. NSEA) THM(I) = TMP(J) ENDDO ENDIF +!/DEBUGINIT WRITE(740+IAPROC,*) 'Before reading WNMEAN' + IF ( FLOGRR(2,19) ) THEN + READ (NDSR,ERR=802,IOSTAT=IERR) TMP(1:NSEA) + DO I=1, NSEALM + J = IAPROC + (I-1)*NAPROC + IF (J .LE. NSEA) WNMEAN(I) = TMP(J) + ENDDO + ENDIF !/DEBUGINIT WRITE(740+IAPROC,*) 'Before reading CHARN' IF ( FLOGRR(5,2) ) THEN READ (NDSR,ERR=802,IOSTAT=IERR) TMP(1:NSEA) @@ -1154,6 +1166,18 @@ ENDIF ENDDO ENDIF +!/DEBUGINIT WRITE(740+IAPROC,*) 'Before reading TAUOC' + IF ( FLOGRR(6,13) ) THEN + READ (NDSR,ERR=802,IOSTAT=IERR) TMP(1:NSEA) + READ (NDSR,ERR=802,IOSTAT=IERR) TMP2(1:NSEA) + DO I=1, NSEALM + J = IAPROC + (I-1)*NAPROC + IF (J .LE. NSEA) THEN + TAUOCX(I) = TMP(J) + TAUOCY(I) = TMP2(J) + ENDIF + ENDDO + ENDIF !/DEBUGINIT WRITE(740+IAPROC,*) 'Before reading UB' IF ( FLOGRR(7,2) ) THEN READ (NDSR,ERR=802,IOSTAT=IERR) TMP(1:NSEA) @@ -1193,6 +1217,7 @@ TLEV(2) = 0 TICE(1) = -1 TICE(2) = 0 + TRHO(1) = -1 TIC1(1) = -1 TIC1(2) = 0 TIC5(1) = -1 @@ -1212,8 +1237,10 @@ HS = 0. WLM = 0. T0M1 = 0. + T01 = 0. FP0 = 1. THM = 0. + WNMEAN = 0. CHARN = 0.0185 TAUWIX = 0. TAUWIY = 0. @@ -1226,6 +1253,8 @@ TUSY = 0. USSX = 0. USSY = 0. + TAUOCX = 0. + TAUOCY = 0. TAUICE = 0. UBA = 0. UBD = 0. diff --git a/model/ftn/w3nmlmultimd.ftn b/model/ftn/w3nmlmultimd.ftn index 82f5a04a8..6d80dafc2 100644 --- a/model/ftn/w3nmlmultimd.ftn +++ b/model/ftn/w3nmlmultimd.ftn @@ -7,7 +7,7 @@ !/ | M. Accensi | !/ | | !/ | FORTRAN 90 | -!/ | Last update : 25-Sep-2020 | +!/ | Last update : 22-Mar-2021 | !/ +-----------------------------------+ !/ !/ For updates see subroutines. @@ -44,6 +44,8 @@ CHARACTER(13) :: WATER_LEVELS CHARACTER(13) :: CURRENTS CHARACTER(13) :: WINDS + CHARACTER(13) :: ATM_MOMENTUM + CHARACTER(13) :: AIR_DENSITY CHARACTER(13) :: ICE_CONC CHARACTER(13) :: ICE_PARAM1 CHARACTER(13) :: ICE_PARAM2 @@ -82,6 +84,8 @@ LOGICAL :: WATER_LEVELS LOGICAL :: CURRENTS LOGICAL :: WINDS + LOGICAL :: ATM_MOMENTUM + LOGICAL :: AIR_DENSITY LOGICAL :: ICE_CONC LOGICAL :: ICE_PARAM1 LOGICAL :: ICE_PARAM2 @@ -618,11 +622,12 @@ !/ | WAVEWATCH III NOAA/NCEP | !/ | M. Accensi | !/ | FORTRAN 90 | -!/ | Last update : 15-May-2018 | +!/ | Last update : 22-Mar-2021 | !/ +-----------------------------------+ !/ !/ 09-Aug-2016 : Adding comments ( version 5.12 ) !/ 15-May-2018 : Update namelist ( version 6.05 ) +!/ 22-Mar-2021 : Update namelist, new input fields ( version 7.xx ) !/ ! 1. Purpose : ! @@ -709,6 +714,8 @@ INPUT(I)%FORCING%WATER_LEVELS = .FALSE. INPUT(I)%FORCING%CURRENTS = .FALSE. INPUT(I)%FORCING%WINDS = .FALSE. + INPUT(I)%FORCING%ATM_MOMENTUM = .FALSE. + INPUT(I)%FORCING%AIR_DENSITY = .FALSE. INPUT(I)%FORCING%ICE_CONC = .FALSE. INPUT(I)%FORCING%ICE_PARAM1 = .FALSE. INPUT(I)%FORCING%ICE_PARAM2 = .FALSE. @@ -763,11 +770,12 @@ !/ | WAVEWATCH III NOAA/NCEP | !/ | M. Accensi | !/ | FORTRAN 90 | -!/ | Last update : 15-May-2018 | +!/ | Last update : 22-Mar-2021 | !/ +-----------------------------------+ !/ !/ 09-Aug-2016 : Adding comments ( version 5.12 ) !/ 15-May-2018 : Update namelist ( version 6.05 ) +!/ 22-Mar-2021 : Update namelist, new input fields ( version 7.xx ) !/ ! 1. Purpose : ! @@ -854,6 +862,8 @@ MODEL(I)%FORCING%WATER_LEVELS = 'no' MODEL(I)%FORCING%CURRENTS = 'no' MODEL(I)%FORCING%WINDS = 'no' + MODEL(I)%FORCING%ATM_MOMENTUM = 'no' + MODEL(I)%FORCING%AIR_DENSITY = 'no' MODEL(I)%FORCING%ICE_CONC = 'no' MODEL(I)%FORCING%ICE_PARAM1 = 'no' MODEL(I)%FORCING%ICE_PARAM2 = 'no' @@ -1488,11 +1498,12 @@ !/ | WAVEWATCH III NOAA/NCEP | !/ | M. Accensi | !/ | FORTRAN 90 | -!/ | Last update : 15-May-2018 | +!/ | Last update : 22-Mar-2021 | !/ +-----------------------------------+ !/ !/ 09-Aug-2016 : Adding comments ( version 5.12 ) !/ 15-May-2018 : Update namelist ( version 6.05 ) +!/ 22-Mar-2021 : Update namelist, new input fields ( version 7.xx ) !/ ! 1. Purpose : ! @@ -1561,6 +1572,8 @@ WRITE (NDSN,13) TRIM(MSG),'FORCING % WATER_LEVELS = ', NML_INPUT_GRID(I)%FORCING%WATER_LEVELS WRITE (NDSN,13) TRIM(MSG),'FORCING % CURRENTS = ', NML_INPUT_GRID(I)%FORCING%CURRENTS WRITE (NDSN,13) TRIM(MSG),'FORCING % WINDS = ', NML_INPUT_GRID(I)%FORCING%WINDS + WRITE (NDSN,13) TRIM(MSG),'FORCING % ATM_MOMENTUM = ', NML_INPUT_GRID(I)%FORCING%ATM_MOMENTUM + WRITE (NDSN,13) TRIM(MSG),'FORCING % AIR_DENSITY = ', NML_INPUT_GRID(I)%FORCING%AIR_DENSITY WRITE (NDSN,13) TRIM(MSG),'FORCING % ICE_CONC = ', NML_INPUT_GRID(I)%FORCING%ICE_CONC WRITE (NDSN,13) TRIM(MSG),'FORCING % ICE_PARAM1 = ', NML_INPUT_GRID(I)%FORCING%ICE_PARAM1 WRITE (NDSN,13) TRIM(MSG),'FORCING % ICE_PARAM2 = ', NML_INPUT_GRID(I)%FORCING%ICE_PARAM2 @@ -1596,11 +1609,12 @@ !/ | WAVEWATCH III NOAA/NCEP | !/ | M. Accensi | !/ | FORTRAN 90 | -!/ | Last update : 15-May-2018 | +!/ | Last update : 22-Mar-2021 | !/ +-----------------------------------+ !/ !/ 09-Aug-2016 : Adding comments ( version 5.12 ) !/ 15-May-2018 : Update namelist ( version 6.05 ) +!/ 22-Mar-2021 : Update namelist, new input fields ( version 7.xx ) !/ ! 1. Purpose : ! @@ -1669,6 +1683,8 @@ WRITE (NDSN,10) TRIM(MSG),'FORCING % WATER_LEVELS = ', TRIM(NML_MODEL_GRID(I)%FORCING%WATER_LEVELS) WRITE (NDSN,10) TRIM(MSG),'FORCING % CURRENTS = ', TRIM(NML_MODEL_GRID(I)%FORCING%CURRENTS) WRITE (NDSN,10) TRIM(MSG),'FORCING % WINDS = ', TRIM(NML_MODEL_GRID(I)%FORCING%WINDS) + WRITE (NDSN,10) TRIM(MSG),'FORCING % ATM_MOMENTUM = ', TRIM(NML_MODEL_GRID(I)%FORCING%ATM_MOMENTUM) + WRITE (NDSN,10) TRIM(MSG),'FORCING % AIR_DENSITY = ', TRIM(NML_MODEL_GRID(I)%FORCING%AIR_DENSITY) WRITE (NDSN,10) TRIM(MSG),'FORCING % ICE_CONC = ', TRIM(NML_MODEL_GRID(I)%FORCING%ICE_CONC) WRITE (NDSN,10) TRIM(MSG),'FORCING % ICE_PARAM1 = ', TRIM(NML_MODEL_GRID(I)%FORCING%ICE_PARAM1) WRITE (NDSN,10) TRIM(MSG),'FORCING % ICE_PARAM2 = ', TRIM(NML_MODEL_GRID(I)%FORCING%ICE_PARAM2) diff --git a/model/ftn/w3nmlprncmd.ftn b/model/ftn/w3nmlprncmd.ftn index 9a6ce89a0..18952d8ff 100644 --- a/model/ftn/w3nmlprncmd.ftn +++ b/model/ftn/w3nmlprncmd.ftn @@ -7,7 +7,7 @@ !/ | M. Accensi | !/ | | !/ | FORTRAN 90 | -!/ | Last update : 04-Jan-2018 | +!/ | Last update : 22-Mar-2021 | !/ +-----------------------------------+ !/ !/ For updates see subroutines. @@ -37,6 +37,8 @@ LOGICAL :: CURRENTS LOGICAL :: WINDS LOGICAL :: WINDS_AST + LOGICAL :: ATM_MOMENTUM + LOGICAL :: AIR_DENSITY LOGICAL :: ICE_CONC LOGICAL :: ICE_BERG LOGICAL :: DATA_ASSIM @@ -198,7 +200,7 @@ !/ | M. Accensi | !/ | | !/ | FORTRAN 90 | -!/ | Last update : 04-Jan-2018 | +!/ | Last update : 22-Mar-2021 | !/ +-----------------------------------+ !/ ! 1. Purpose : @@ -280,6 +282,8 @@ FORCING%FIELD%CURRENTS = .FALSE. FORCING%FIELD%WINDS = .FALSE. FORCING%FIELD%WINDS_AST = .FALSE. + FORCING%FIELD%ATM_MOMENTUM = .FALSE. + FORCING%FIELD%AIR_DENSITY = .FALSE. FORCING%FIELD%ICE_CONC = .FALSE. FORCING%FIELD%ICE_BERG = .FALSE. FORCING%FIELD%DATA_ASSIM = .FALSE. @@ -435,7 +439,7 @@ !/ | WAVEWATCH III NOAA/NCEP | !/ | M. Accensi | !/ | FORTRAN 90 | -!/ | Last update : 04-Jan-2018 | +!/ | Last update : 22-Mar-2021 | !/ +-----------------------------------+ !/ !/ @@ -509,6 +513,8 @@ WRITE (NDSN,13) TRIM(MSG),'FIELD % CURRENTS = ', NML_FORCING%FIELD%CURRENTS WRITE (NDSN,13) TRIM(MSG),'FIELD % WINDS = ', NML_FORCING%FIELD%WINDS WRITE (NDSN,13) TRIM(MSG),'FIELD % WINDS_AST = ', NML_FORCING%FIELD%WINDS_AST + WRITE (NDSN,13) TRIM(MSG),'FIELD % ATM_MOMENTUM = ', NML_FORCING%FIELD%ATM_MOMENTUM + WRITE (NDSN,13) TRIM(MSG),'FIELD % AIR_DENSITY = ', NML_FORCING%FIELD%AIR_DENSITY WRITE (NDSN,13) TRIM(MSG),'FIELD % ICE_CONC = ', NML_FORCING%FIELD%ICE_CONC WRITE (NDSN,13) TRIM(MSG),'FIELD % ICE_BERG = ', NML_FORCING%FIELD%ICE_BERG WRITE (NDSN,13) TRIM(MSG),'FIELD % DATA_ASSIM = ', NML_FORCING%FIELD%DATA_ASSIM diff --git a/model/ftn/w3nmlshelmd.ftn b/model/ftn/w3nmlshelmd.ftn index 471e8cdcd..44d7cf6bb 100644 --- a/model/ftn/w3nmlshelmd.ftn +++ b/model/ftn/w3nmlshelmd.ftn @@ -7,7 +7,7 @@ !/ | M. Accensi | !/ | | !/ | FORTRAN 90 | -!/ | Last update : 25-Sep-2020 | +!/ | Last update : 22-Mar-2021 | !/ +-----------------------------------+ !/ !/ For updates see subroutines. @@ -38,6 +38,8 @@ CHARACTER(13) :: WATER_LEVELS CHARACTER(13) :: CURRENTS CHARACTER(13) :: WINDS + CHARACTER(13) :: ATM_MOMENTUM + CHARACTER(13) :: AIR_DENSITY CHARACTER(13) :: ICE_CONC CHARACTER(13) :: ICE_PARAM1 CHARACTER(13) :: ICE_PARAM2 @@ -138,6 +140,8 @@ INTEGER :: N_CUR INTEGER :: N_WND INTEGER :: N_ICE + INTEGER :: N_TAU + INTEGER :: N_RHO INTEGER :: N_MOV INTEGER :: N_TOT END TYPE NML_HOMOG_COUNT_T @@ -435,7 +439,7 @@ !/ | M. Accensi | !/ | | !/ | FORTRAN 90 | -!/ | Last update : 18-Apr-2018 | +!/ | Last update : 22-Mar-2021 | !/ +-----------------------------------+ !/ !/ @@ -509,6 +513,8 @@ INPUT%FORCING%WATER_LEVELS = 'F' INPUT%FORCING%CURRENTS = 'F' INPUT%FORCING%WINDS = 'F' + INPUT%FORCING%ATM_MOMENTUM = 'F' + INPUT%FORCING%AIR_DENSITY = 'F' INPUT%FORCING%ICE_CONC = 'F' INPUT%FORCING%ICE_PARAM1 = 'F' INPUT%FORCING%ICE_PARAM2 = 'F' @@ -799,7 +805,7 @@ !/ | M. Accensi | !/ | | !/ | FORTRAN 90 | -!/ | Last update : 18-Apr-2018 | +!/ | Last update : 22-Mar-2021 | !/ +-----------------------------------+ !/ !/ @@ -885,6 +891,8 @@ HOMOG_COUNT%N_CUR = 0 HOMOG_COUNT%N_WND = 0 HOMOG_COUNT%N_ICE = 0 + HOMOG_COUNT%N_TAU = 0 + HOMOG_COUNT%N_RHO = 0 HOMOG_COUNT%N_MOV = 0 HOMOG_COUNT%N_TOT = 0 @@ -902,7 +910,7 @@ ! allocate the total count of homogeneous input HOMOG_COUNT%N_TOT = HOMOG_COUNT%N_IC1 + HOMOG_COUNT%N_IC2 + HOMOG_COUNT%N_IC3 + HOMOG_COUNT%N_IC4 + HOMOG_COUNT%N_IC5 + & HOMOG_COUNT%N_MDN + HOMOG_COUNT%N_MTH + HOMOG_COUNT%N_MVS + HOMOG_COUNT%N_LEV + HOMOG_COUNT%N_CUR + & - HOMOG_COUNT%N_WND + HOMOG_COUNT%N_ICE + HOMOG_COUNT%N_MOV + HOMOG_COUNT%N_WND + HOMOG_COUNT%N_ICE + HOMOG_COUNT%N_TAU + HOMOG_COUNT%N_RHO + HOMOG_COUNT%N_MOV ALLOCATE(HOMOG_INPUT(HOMOG_COUNT%N_TOT)) ALLOCATE(NML_HOMOG_INPUT(HOMOG_COUNT%N_TOT)) @@ -1039,7 +1047,7 @@ !/ | M. Accensi | !/ | | !/ | FORTRAN 90 | -!/ | Last update : 18-Apr-2018 | +!/ | Last update : 22-Mar-2021 | !/ +-----------------------------------+ !/ !/ @@ -1105,6 +1113,8 @@ WRITE (NDSN,10) TRIM(MSG),'FORCING % WATER_LEVELS = ', NML_INPUT%FORCING%WATER_LEVELS WRITE (NDSN,10) TRIM(MSG),'FORCING % CURRENTS = ', NML_INPUT%FORCING%CURRENTS WRITE (NDSN,10) TRIM(MSG),'FORCING % WINDS = ', NML_INPUT%FORCING%WINDS + WRITE (NDSN,10) TRIM(MSG),'FORCING % ATM_MOMENTUM = ', NML_INPUT%FORCING%ATM_MOMENTUM + WRITE (NDSN,10) TRIM(MSG),'FORCING % AIR_DENSITY = ', NML_INPUT%FORCING%AIR_DENSITY WRITE (NDSN,10) TRIM(MSG),'FORCING % ICE_CONC = ', NML_INPUT%FORCING%ICE_CONC WRITE (NDSN,10) TRIM(MSG),'FORCING % ICE_PARAM1 = ', NML_INPUT%FORCING%ICE_PARAM1 WRITE (NDSN,10) TRIM(MSG),'FORCING % ICE_PARAM2 = ', NML_INPUT%FORCING%ICE_PARAM2 @@ -1349,7 +1359,7 @@ !/ | M. Accensi | !/ | | !/ | FORTRAN 90 | -!/ | Last update : 18-Apr-2018 | +!/ | Last update : 22-Mar-2021 | !/ +-----------------------------------+ !/ !/ @@ -1427,6 +1437,8 @@ WRITE (NDSN,11) TRIM(MSG),'N_CUR = ', NML_HOMOG_COUNT%N_CUR WRITE (NDSN,11) TRIM(MSG),'N_WND = ', NML_HOMOG_COUNT%N_WND WRITE (NDSN,11) TRIM(MSG),'N_ICE = ', NML_HOMOG_COUNT%N_ICE + WRITE (NDSN,11) TRIM(MSG),'N_TAU = ', NML_HOMOG_COUNT%N_TAU + WRITE (NDSN,11) TRIM(MSG),'N_RHO = ', NML_HOMOG_COUNT%N_RHO WRITE (NDSN,11) TRIM(MSG),'N_MOV = ', NML_HOMOG_COUNT%N_MOV IF (NML_HOMOG_COUNT%N_TOT .NE. 0) THEN diff --git a/model/ftn/w3oacpmd.ftn b/model/ftn/w3oacpmd.ftn index 8f9fd8c2e..426b23fd8 100644 --- a/model/ftn/w3oacpmd.ftn +++ b/model/ftn/w3oacpmd.ftn @@ -6,13 +6,14 @@ !/ | WAVEWATCH III NOAA/NCEP | !/ | A. Thevenin | !/ | FORTRAN 90 | -!/ | Last update : 25-Sep-2020 | +!/ | Last update : 22-Mar-2021 | !/ +-----------------------------------+ !/ !/ July-2013 : Origination. ( version 4.18 ) !/ For upgrades see subroutines. !/ April-2016 : Add comments (J. Pianezze) ( version 5.07 ) !/ 25-Sep-2020 : Coupling at T+0 support ( version 7.10 ) +!/ 22-Mar-2021 : Adds extra coupling fields ( version 7.xx ) !/ !/ Copyright 2009-2012 National Weather Service (NWS), !/ National Oceanic and Atmospheric Administration. All rights @@ -747,13 +748,14 @@ !/ | V. Garnier | !/ | A.C. Bennis | !/ | FORTRAN 90 | -!/ | Last update : April-2016 | +!/ | Last update : 22-Mar-2021 | !/ +-----------------------------------+ !/ !/ Jul-2013 : Origination. ( version 4.18 ) !/ Mar-2014 : J. Pianezze (LPO) : Add atmospheric fields ( version 5.07 ) !/ Apr-2015 : M. Accensi (LPO) : Add fields selection ( version 5.07 ) !/ Apr-2016 : Add comments (J. Pianezze) ( version 5.07 ) +!/ 22-Mar-2021 : Adds extra coupling fields ( version 7.xx ) !/ ! 1. Purpose : ! @@ -869,6 +871,20 @@ !/OASACM ID_NB_RCV=ID_NB_RCV+1 !/OASACM RCV(ID_NB_RCV)%CL_FIELD_NAME='WW3__V10' ! +!/OASACM CASE('TAU') +!/OASACM ! UTAUA : u-momentum (m2.s-2) +!/OASACM ID_NB_RCV=ID_NB_RCV+1 +!/OASACM RCV(ID_NB_RCV)%CL_FIELD_NAME='WW3_UTAU' +! +!/OASACM ! V10 : v-momentum speed (m2.s-2) +!/OASACM ID_NB_RCV=ID_NB_RCV+1 +!/OASACM RCV(ID_NB_RCV)%CL_FIELD_NAME='WW3_VTAU' +! +!/OASACM CASE('RHO') +!/OASACM ! rhoa : air density (kg.m-3) +!/OASACM ID_NB_RCV=ID_NB_RCV+1 +!/OASACM RCV(ID_NB_RCV)%CL_FIELD_NAME='WW3_RHOA' +! ! ! ICE MODEL VARIABLES @@ -924,6 +940,11 @@ !/OASOCM ID_NB_SND = ID_NB_SND +1 !/OASOCM SND(ID_NB_SND)%CL_FIELD_NAME='WW3_T0M1' ! +!/OASOCM CASE('T01') +!/OASOCM ! T01 / wave_t01 : mean period (s) +!/OASOCM ID_NB_SND = ID_NB_SND +1 +!/OASOCM SND(ID_NB_SND)%CL_FIELD_NAME='WW3__T01' +! !/OASOCM CASE('DIR') !/OASOCM ! THM / wave_thm : cosinus of mean direction (n/a) !/OASOCM ID_NB_SND = ID_NB_SND +1 @@ -947,6 +968,15 @@ !/OASOCM ID_NB_SND = ID_NB_SND +1 !/OASOCM SND(ID_NB_SND)%CL_FIELD_NAME='WW3_TWOY' ! +!/OASOCM CASE('TOC') +!/OASOCM ! tauocx / wave_tauocx : x-component of the total wave-ocean momentum flux (tauocx in m2.s-2) +!/OASOCM ID_NB_SND = ID_NB_SND +1 +!/OASOCM SND(ID_NB_SND)%CL_FIELD_NAME='WW3_TOCX' +! +!/OASOCM ! tauocy / wave_tauocy : y-component of the total wave-ocean momentum flux (tauocx in m2.s-2) +!/OASOCM ID_NB_SND = ID_NB_SND +1 +!/OASOCM SND(ID_NB_SND)%CL_FIELD_NAME='WW3_TOCY' +! !/OASOCM CASE('FOC') !/OASOCM ! phioc / wave_phioc : Wave-to-ocean TKE flux (phioc in W.m-2) !/OASOCM ID_NB_SND = ID_NB_SND +1 @@ -989,6 +1019,11 @@ !/OASOCM ID_NB_SND = ID_NB_SND +1 !/OASOCM SND(ID_NB_SND)%CL_FIELD_NAME='WW3___LM' ! +!/OASOCM CASE('WNM') +!/OASOCM ! wnmean / wave_wnmean : mean wave number (m-1) +!/OASOCM ID_NB_SND = ID_NB_SND +1 +!/OASOCM SND(ID_NB_SND)%CL_FIELD_NAME='WW3__WNM' +! !/OASOCM CASE('TUS') !/OASOCM ! Volume transport associated to Stokes drift, u component (m2.s-1) !/OASOCM ID_NB_SND = ID_NB_SND +1 diff --git a/model/ftn/w3odatmd.ftn b/model/ftn/w3odatmd.ftn index fc5c3ee01..5821ef22b 100644 --- a/model/ftn/w3odatmd.ftn +++ b/model/ftn/w3odatmd.ftn @@ -6,7 +6,7 @@ !/ | WAVEWATCH III NOAA/NCEP | !/ | H. L. Tolman | !/ | FORTRAN 90 | -!/ | Last update : 25-Sep-2020 | +!/ | Last update : 22-Mar-2021 | !/ +-----------------------------------+ !/ !/ 13-Dec-2004 : Origination. ( version 3.06 ) @@ -46,6 +46,7 @@ !/ 25-Sep-2020 : Flags for coupling restart ( version 7.10 ) !/ 15-Jan-2020 : Added TP based on existing FP ( version 7.12 ) !/ internal fields. (C. Bunney, UKMO) +!/ 22-Mar-2021 : Add extra coupling variables ( version 7.xx ) !/ !/ Copyright 2009-2012 National Weather Service (NWS), !/ National Oceanic and Atmospheric Administration. All rights @@ -512,7 +513,7 @@ !/ | WAVEWATCH III NOAA/NCEP | !/ | H. L. Tolman | !/ | FORTRAN 90 | -!/ | Last update : 10-Dec-2014 | +!/ | Last update : 22-Mar-2021 | !/ +-----------------------------------+ !/ !/ 13-Dec-2004 : Origination. ( version 3.06 ) @@ -525,6 +526,7 @@ !/ 18-Dec-2012 : Moving IDOUT initialization here. ( version 4.11 ) !/ 19-Dec-2012 : Move NOSWLL to data structure. ( version 4.11 ) !/ 10-Dec-2014 : Add checks for allocate status ( version 5.04 ) +!/ 22-Mar-2021 : Add extra coupling variables ( version 7.xx ) !/ ! 1. Purpose : ! @@ -671,10 +673,10 @@ ! ! 1) Forcing fields ! - NOGE(1) = 7 -!/BT4 NOGE(1) = 8 -!/IS2 NOGE(1) = 10 ! CB -!/SETUP NOGE(1) = 11 ! CB + NOGE(1) = 9 +!/BT4 NOGE(1) = 10 +!/IS2 NOGE(1) = 12 ! CB +!/SETUP NOGE(1) = 13 ! CB ! IDOUT( 1, 1) = 'Water depth ' IDOUT( 1, 2) = 'Current vel. ' @@ -683,14 +685,16 @@ IDOUT( 1, 5) = 'Water level ' IDOUT( 1, 6) = 'Ice concentration ' IDOUT( 1, 7) = 'Iceberg damp coeffic' -!/BT4 IDOUT( 1, 8) = 'Sediment diam D50 ' -!/IS2 IDOUT( 1, 9) = 'ice thickness ' -!/IS2 IDOUT( 1, 10) = 'Avg. ice floe diam. ' -!/SETUP IDOUT( 1, 11) = 'wave induced setup' + IDOUT( 1, 8) = 'Atmospheric momentum' + IDOUT( 1, 9) = 'Air density ' +!/BT4 IDOUT( 1, 10) = 'Sediment diam D50 ' +!/IS2 IDOUT( 1, 11) = 'ice thickness ' +!/IS2 IDOUT( 1, 12) = 'Avg. ice floe diam. ' +!/SETUP IDOUT( 1, 13) = 'wave induced setup' ! ! 2) Standard mean wave parameters ! - NOGE(2) = 18 + NOGE(2) = 19 ! IDOUT( 2, 1) = 'Wave height ' IDOUT( 2, 2) = 'Mean wave length ' @@ -710,6 +714,7 @@ IDOUT( 2, 16) = 'STD ST Hmax^crest ' IDOUT( 2, 17) = 'Dominant wave bT ' IDOUT( 2, 18) = 'Peak prd. (from fp)' + IDOUT( 2, 19) = 'Mean wave number ' ! IDOUT( 2,10) = 'Mean wave dir. a2b2' ! IDOUT( 2,11) = 'Mean dir. spr. a2b2' ! IDOUT( 2,12) = 'Windsea height(Sin)' @@ -768,7 +773,7 @@ ! ! 6) Wave-ocean layer ! - NOGE(6) = 12 + NOGE(6) = 13 ! IDOUT( 6, 1) = 'Radiation stresses ' IDOUT( 6, 2) = 'Wave-ocean mom. flux' @@ -782,6 +787,7 @@ IDOUT( 6,10) = 'Wave-ice mom. flux ' IDOUT( 6,11) = 'Wave-ice energy flux' IDOUT( 6,12) = 'Split Surface Stokes' + IDOUT( 6,13) = 'Tot wav-ocn mom flux' ! ! 7) Wave-bottom layer ! diff --git a/model/ftn/w3ogcmmd.ftn b/model/ftn/w3ogcmmd.ftn index ac62e9393..a53cbf22b 100644 --- a/model/ftn/w3ogcmmd.ftn +++ b/model/ftn/w3ogcmmd.ftn @@ -6,12 +6,13 @@ !/ | WAVEWATCH III NOAA/NCEP | !/ | A. Thevenin | !/ | FORTRAN 90 | -!/ | Last update : April-2016 | +!/ | Last update : 22-Mar-2021 | !/ +-----------------------------------+ !/ !/ Jul-2013 : Origination. ( version 4.18 ) !/ For upgrades see subroutines. !/ Apr-2016 : Add comments (J. Pianezze) ( version 5.07 ) +!/ 22-Mar-2021 : Add extra coupling variables ( version 7.xx ) !/ !/ Copyright 2009-2012 National Weather Service (NWS), !/ National Oceanic and Atmospheric Administration. All rights @@ -64,11 +65,12 @@ !/ | WAVEWATCH III NOAA/NCEP | !/ | A. Thevenin | !/ | FORTRAN 90 | -!/ | Last update : April-2016 | +!/ | Last update : 22-Mar-2021 | !/ +-----------------------------------+ !/ !/ Jul-2013 : Origination. ( version 4.18 ) !/ Apr-2016 : Add comments (J. Pianezze) ( version 5.07 ) +!/ 22-Mar-2021 : Add extra coupling variables ( version 7.xx ) !/ ! 1. Purpose : ! @@ -108,9 +110,10 @@ ! USE W3OACPMD, ONLY: ID_OASIS_TIME, IL_NB_SND, SND_FLD, CPL_OASIS_SND USE W3GDATMD, ONLY: NSEAL, MAPSTA, MAPSF - USE W3ADATMD, ONLY: HS, T0M1, THM, BHD, TAUOX, TAUOY, PHIOC, & - UBA, UBD, TAUWIX, TAUWIY, TUSX, TUSY, & - USSX, USSY, WLM, PHIBBL,TAUBBL, CHARN + USE W3ADATMD, ONLY: HS, T0M1, T01, THM, BHD, TAUOX, TAUOY, PHIOC,& + UBA, UBD, TAUWIX, TAUWIY, TUSX, TUSY, USSX, & + USSY, WLM, PHIBBL,TAUBBL, CHARN, TAUOCX, & + TAUOCY, WNMEAN USE W3ODATMD, ONLY: NAPROC, IAPROC, UNDEF USE CONSTANTS, ONLY: PI, DERA ! @@ -157,6 +160,24 @@ CALL CPL_OASIS_SND(IB_DO, ID_OASIS_TIME, RLA_OASIS_SND, LL_ACTION) ENDIF ! + ! Mean wave period (tmn in s) (m0,1) + ! --------------------------------------------------------------------- + IF (SND_FLD(IB_DO)%CL_FIELD_NAME == 'WW3__T01') THEN + TMP(1:NSEAL) = 0.0 + WHERE(T01(1:NSEAL) /= UNDEF) TMP(1:NSEAL)=T01(1:NSEAL) + RLA_OASIS_SND(:,1) = DBLE(TMP(1:NSEAL)) + CALL CPL_OASIS_SND(IB_DO, ID_OASIS_TIME, RLA_OASIS_SND, LL_ACTION) + ENDIF + ! + ! Mean wave number (wnm in m-1) + ! --------------------------------------------------------------------- + IF (SND_FLD(IB_DO)%CL_FIELD_NAME == 'WW3__WNM') THEN + TMP(1:NSEAL) = 0.0 + WHERE(WNMEAN(1:NSEAL) /= UNDEF) TMP(1:NSEAL)=WNMEAN(1:NSEAL) + RLA_OASIS_SND(:,1) = DBLE(TMP(1:NSEAL)) + CALL CPL_OASIS_SND(IB_DO, ID_OASIS_TIME, RLA_OASIS_SND, LL_ACTION) + ENDIF + ! ! Charnock coefficient (-) ! --------------------------------------------------------------------- IF (SND_FLD(IB_DO)%CL_FIELD_NAME == 'WW3_OCHA') THEN @@ -218,6 +239,24 @@ CALL CPL_OASIS_SND(IB_DO, ID_OASIS_TIME, RLA_OASIS_SND, LL_ACTION) ENDIF ! + ! Wave-ocean total momentum flux (tauocx in Pa) + ! --------------------------------------------------------------------- + IF (SND_FLD(IB_DO)%CL_FIELD_NAME == 'WW3_TOCX') THEN + TMP(1:NSEAL) = 0.0 + WHERE(TAUOCX(1:NSEAL) /= UNDEF) TMP(1:NSEAL)=TAUOCX(1:NSEAL) + RLA_OASIS_SND(:,1) = DBLE(TMP(1:NSEAL)) + CALL CPL_OASIS_SND(IB_DO, ID_OASIS_TIME, RLA_OASIS_SND, LL_ACTION) + ENDIF + ! + ! Wave-ocean total momentum flux (tauocy in Pa) + ! --------------------------------------------------------------------- + IF (SND_FLD(IB_DO)%CL_FIELD_NAME == 'WW3_TOCY') THEN + TMP(1:NSEAL) = 0.0 + WHERE(TAUOCY(1:NSEAL) /= UNDEF) TMP(1:NSEAL)=TAUOCY(1:NSEAL) + RLA_OASIS_SND(:,1) = DBLE(TMP(1:NSEAL)) + CALL CPL_OASIS_SND(IB_DO, ID_OASIS_TIME, RLA_OASIS_SND, LL_ACTION) + ENDIF + ! ! Wave-to-ocean TKE flux (phioc in W.m-2) ! --------------------------------------------------------------------- IF (SND_FLD(IB_DO)%CL_FIELD_NAME == 'WW3__FOC') THEN diff --git a/model/ftn/w3ounfmetamd.ftn b/model/ftn/w3ounfmetamd.ftn index ad8f7f7d1..cca538569 100644 --- a/model/ftn/w3ounfmetamd.ftn +++ b/model/ftn/w3ounfmetamd.ftn @@ -6,12 +6,13 @@ !/ | C. Bunney | !/ | | !/ | FORTRAN 90 | -!/ | Last update : 26-Jan-2021 | +!/ | Last update : 22-Mar-2021 | !/ +-----------------------------------+ !/ !/ 02-Nov-2020 : Creation ( version 7.12 ) !/ 26-Jan-2021 : Added TP and alternative dir/mag ( version 7.12 ) !/ metadata for directional fields. +!/ 22-Mar-2021 : Adds extra coupling fields ( version 7.xx ) !/ ! 1. Purpose : ! @@ -181,11 +182,11 @@ !/ | C. Bunney | !/ | | !/ | FORTRAN 90 | -!/ | Last update : 25-Jan-2021 | +!/ | Last update : 22-Mar-2021 | !/ +-----------------------------------+ !/ !/ 09-Nov-2020 : Creation ( version 7.12 ) -!/ 26-Jan-2021 : Added vector flag ( version 7.12 ) +!/ 22-Mar-2021 : Added vector flag ( version 7.12 ) !/ ! ! 1. Purpose : @@ -1530,10 +1531,11 @@ !/ | C. Bunney | !/ | | !/ | FORTRAN 90 | -!/ | Last update : 02-Nov-2020 | +!/ | Last update : 22-Mar-2021 | !/ +-----------------------------------+ !/ !/ 02-Nov-2020 : Creation ( version 7.12 ) +!/ 22-Mar-2021 : Adds extra coupling fields ( version 7.xx ) !/ ! ! 1. Purpose : @@ -1700,7 +1702,39 @@ META(1)%VMIN = 0 META(1)%VMAX = 3.2 ! IFI=1, IFJ=8 -!/BT4 META => GROUP(1)%FIELD(8)%META + META => GROUP(1)%FIELD(8)%META + META(1)%FSC = 0.01 + META(1)%UNITS = 'Pa' + META(1)%ENAME = '.taua' + META(1)%VARNM='utaua' + META(1)%VARNL='surface_downward_eastward_stress' + META(1)%VARNS='surface_downward_eastward_stress' + META(1)%VARNG='surface_downward_eastward_stress' + META(2)%VARNC='taua=sqrt(utaua**2+vtaua**2)' + META(1)%VMIN = -320 + META(1)%VMAX = 320 + META(1)%VARND = DIRCOM + + ! Second component + META(2) = META(1) + META(2)%VARNM='vtaua' + META(2)%VARNL='surface_downward_northward_stress' + META(2)%VARNS='surface_downward_northward_stress' + META(2)%VARNG='surface_downward_northward_stress' + META(2)%VARNC='taua=sqrt(utaua**2+vtaua**2)' +! IFI=1, IFJ=9 + META => GROUP(1)%FIELD(9)%META + META(1)%FSC = 0.0001 + META(1)%UNITS = 'kg m-3' + META(1)%ENAME = '.rhoa' + META(1)%VARNM='rhoa' + META(1)%VARNL='air_density' + META(1)%VARNS='air_density' + META(1)%VARNG='air_density' + META(1)%VMIN = 0 + META(1)%VMAX = 2 +! IFI=1, IFJ=10 +!/BT4 META => GROUP(1)%FIELD(10)%META !/BT4 META(1)%FSC = 0.001 !/BT4 META(1)%UNITS = 'Krumbein phi scale' !/BT4 META(1)%ENAME = '.d50' @@ -1710,8 +1744,8 @@ !/BT4 META(1)%VARNG='sediment_grain_size' !/BT4 META(1)%VMIN = -10.0 !/BT4 META(1)%VMAX = 32.0 -! IFI=1, IFJ=9 -!/IS2 META => GROUP(1)%FIELD(9)%META +! IFI=1, IFJ=11 +!/IS2 META => GROUP(1)%FIELD(11)%META !/IS2 META(1)%FSC = 0.001 !/IS2 META(1)%UNITS = 'm' !/IS2 META(1)%ENAME = '.ic1' @@ -1721,8 +1755,8 @@ !/IS2 META(1)%VARNG='ice_thickness' !/IS2 META(1)%VMIN = 0 !/IS2 META(1)%VMAX = 30 -! IFI=1, IFJ=10 -!/IS2 META => GROUP(1)%FIELD(10)%META +! IFI=1, IFJ=12 +!/IS2 META => GROUP(1)%FIELD(12)%META !/IS2 META(1)%FSC = 0.05 !/IS2 META(1)%UNITS = 'm' !/IS2 META(1)%ENAME = '.ic5' @@ -1938,6 +1972,17 @@ META(1)%VARNG='dominant_wave_period' META(1)%VMIN = 0 META(1)%VMAX = 50 +! IFI=2, IFJ=19 + META => GROUP(2)%FIELD(19)%META + META(1)%FSC = 0.001 + META(1)%UNITS = 'm-1' + META(1)%ENAME = '.wnm' + META(1)%VARNM='wnm' + META(1)%VARNL='mean wave number' + META(1)%VARNS='' + META(1)%VARNG='' + META(1)%VMIN = 0 + META(1)%VMAX = 32 ! !---------- GROUP 3 ---------------- ! @@ -2631,6 +2676,29 @@ META(2)%VARNS='northward_partitioned_surface_stokes_drift' META(2)%VARNG='northward_partitioned_surface_stokes_drift' META(2)%VARNC='usp=sqrt(ussp**2+vssp**2)' +! IFI=6, IFJ=13 + META => GROUP(6)%FIELD(13)%META + META(1)%UNITS = 'Pa' + META(1)%FSC = 0.01 + META(1)%ENAME = '.toc' + META(1)%VMIN = -320 + META(1)%VMAX = 320 + META(1)%VARND = DIRCOM + + ! First component + META(1)%VARNM='utoc' + META(1)%VARNL='eastward total wave to ocean stres' + META(1)%VARNS='' + META(1)%VARNG='' + META(1)%VARNC='toc=sqrt(utoc**2+vtoc**2)' + + ! Second component + META(2) = META(1) + META(2)%VARNM='vtoc' + META(2)%VARNL='northward total wave to ocean stres' + META(2)%VARNS='' + META(2)%VARNG='' + META(2)%VARNC='toc=sqrt(utoc**2+vtoc**2)' ! !---------- GROUP 7 ---------------- ! diff --git a/model/ftn/w3sic2md.ftn b/model/ftn/w3sic2md.ftn index d216ebc55..7de98b751 100644 --- a/model/ftn/w3sic2md.ftn +++ b/model/ftn/w3sic2md.ftn @@ -235,8 +235,7 @@ USE W3DISPMD USE W3GDATMD, ONLY: NK, NTH, NSPEC, SIG, MAPWN, IC2PARS, DDEN, & FLAGLL, YGRD, GTYPE, RLGTYPE - USE W3IDATMD, ONLY: INFLAGS2,ICEP1,ICEP2,ICEP3,ICEP4,ICEP5,WLEV,& - ICEI + USE W3IDATMD, ONLY: INFLAGS2,ICEP1,ICEP2,ICEP3,ICEP4,ICEP5,ICEI !/T USE W3ODATMD, ONLY: NDST !/S USE W3SERVMD, ONLY: STRACE !/T0 USE W3ARRYMD, ONLY: PRT2DS diff --git a/model/ftn/w3srcemd.ftn b/model/ftn/w3srcemd.ftn index 63e6be201..5beb3101e 100644 --- a/model/ftn/w3srcemd.ftn +++ b/model/ftn/w3srcemd.ftn @@ -7,7 +7,7 @@ !/ | H. L. Tolman | !/ | F. Ardhuin | !/ | FORTRAN 90 | -!/ | Last update : 07-Jan-2018 | +!/ | Last update : 22-Mar-2021 | !/ +-----------------------------------+ !/ !/ For updates see subroutine. @@ -59,7 +59,7 @@ TAUWY, TAUOX, TAUOY, TAUWIX, TAUWIY, TAUWNX,& TAUWNY, PHIAW, CHARN, TWS, PHIOC, WHITECAP, & D50, PSIC, BEDFORM , PHIBBL, TAUBBL, TAUICE,& - PHICE, COEF) + PHICE, TAUOCX, TAUOCY, WNMEAN, DAIR, COEF) !/ !/ +-----------------------------------+ !/ | WAVEWATCH III NOAA/NCEP | @@ -68,7 +68,7 @@ !/ | A. Roland | !/ | M. Dutour Sikiric | !/ | FORTRAN 90 | -!/ | Last update : 07-Jan-2018 | +!/ | Last update : 22-Mar-2021 | !/ +-----------------------------------+ !/ !/ 06-Dec-1996 : Final FORTRAN 77 ( version 1.18 ) @@ -120,6 +120,7 @@ !/ 01-Jan-2018 : within PDLIB (A. Roland, M. Dutour !/ 18-Aug-2018 : S_{ice} IC5 (Q. Liu) ( version 6.06) !/ 26-Aug-2018 : UOST (Mentaschi et al. 2015, 2018) ( version 6.06 ) +!/ 22-Mar-2021 : Add extra fields used in coupling ( version 7.xx ) !/ !/ Copyright 2009-2013 National Weather Service (NWS), !/ National Oceanic and Atmospheric Administration. All rights @@ -212,6 +213,9 @@ ! TAUBBL R.A. O Momentum flux to BBL ( !/BTx ) ! TAUICE R.A. O Momentum flux to sea ice ( !/ICx ) ! PHICE Real O Energy flux to sea ice ( !/ICx ) +! TAUOCX-YReal O Total ocean momentum components +! WNMEAN Real O Mean wave number +! DAIR Real I Air density ! ---------------------------------------------------------------- ! Note: several pars are set to I/O to avoid compiler warnings. ! @@ -352,7 +356,8 @@ ! 10. Source code : ! !/ ------------------------------------------------------------------- / - USE CONSTANTS + USE CONSTANTS, ONLY: DWAT, srce_imp_post, srce_imp_pre, & + srce_direct, GRAV, TPI, TPIINV USE W3GDATMD, ONLY: NK, NTH, NSPEC, SIG, TH, DMIN, DTMAX, & DTMIN, FACTI1, FACTI2, FACSD, FACHFA, FACP, & XFC, XFLT, XREL, XFT, FXFM, FXPM, DDEN, & @@ -363,7 +368,7 @@ !/REF1 USE W3GDATMD, ONLY: IOBP, IOBPD, IOBDP, GTYPE, UNGTYPE, REFPARS USE W3WDATMD, ONLY: TIME USE W3ODATMD, ONLY: NDSE, NDST, IAPROC - USE W3IDATMD, ONLY: INFLAGS1, INFLAGS2, ICEP2 + USE W3IDATMD, ONLY: INFLAGS2, ICEP2 USE W3DISPMD !/NNT USE W3ODATMD, ONLY: IAPROC, SCREEN, FNMPRE !/FLD1 USE W3FLD1MD, ONLY: W3FLD1 @@ -439,7 +444,7 @@ ICE, ICEH INTEGER, INTENT(IN) :: REFLED(6) REAL, INTENT(IN) :: REFLEC(4), DELX, DELY, DELA, & - TRNX, TRNY, BERG, ICEDMAX + TRNX, TRNY, BERG, ICEDMAX, DAIR REAL, INTENT(INOUT) :: WN1(NK), CG1(NK), & SPEC(NSPEC), ALPHA(NK), USTAR, & USTDIR, FPI, TAUOX, TAUOY, & @@ -447,7 +452,7 @@ CHARN, TWS, BEDFORM(3), PHIBBL, & TAUBBL(2), TAUICE(2), WHITECAP(4), & TAUWIX, TAUWIY, TAUWNX, TAUWNY, & - ICEF + ICEF, TAUOCX, TAUOCY, WNMEAN REAL, INTENT(OUT) :: DTDYN, FCUT REAL, INTENT(IN) :: COEF !/ @@ -462,7 +467,7 @@ HDT, ZWND, FP, DEPTH, TAUSCX, TAUSCY, FHIGI ! Scaling factor for SIN, SDS, SNL REAL :: ICESCALELN, ICESCALEIN, ICESCALENL, ICESCALEDS - REAL :: EMEAN, FMEAN, WNMEAN, AMAX, CD, Z0, SCAT, & + REAL :: EMEAN, FMEAN, AMAX, CD, Z0, SCAT, & SMOOTH_ICEDISP REAL :: WN_R(NK), CG_ICE(NK),ALPHA_LIU(NK), ICECOEF2,& R(NK) @@ -635,6 +640,9 @@ TAUBBL = 0. TAUICE = 0. PHICE = 0. + TAUOCX = 0. + TAUOCY = 0. + WNMEAN = 0. !/DEBUGSRC IF (IX .eq. DEBUG_NODE) THEN !/DEBUGSRC WRITE(740+IAPROC,*) 'W3SRCE start sum(SPEC)=', sum(SPEC) @@ -1333,6 +1341,8 @@ TAUWNX=TAUWNX/DTG TAUWNY=TAUWNY/DTG TAUBBL(:)=TAUBBL(:)/DTG + TAUOCX=DAIR*COEF*COEF*USTAR*USTAR*COS(USTDIR) + DWAT*(TAUOX-TAUWIX) + TAUOCY=DAIR*COEF*COEF*USTAR*USTAR*SIN(USTDIR) + DWAT*(TAUOY-TAUWIY) ! ! Transformation in wave energy flux in W/m^2=kg / s^3 ! @@ -1471,14 +1481,14 @@ !/FLD1 IF (U10ABS.GT.10. .and. HSTOT.gt.0.5) then !/FLD1 CALL W3FLD1 ( SPEC,min(FPI/TPI,2.0),COEF*U10ABS*COS(U10DIR), & !/FLD1 COEF*U10ABS*Sin(U10DIR), ZWND, DEPTH, 0.0, & -!/FLD1 USTAR, USTDIR, Z0,TAUNUX,TAUNUY,CHARN) +!/FLD1 DAIR, USTAR, USTDIR, Z0,TAUNUX,TAUNUY,CHARN) !/FLD1 ELSE !/FLD1 CHARN = AALPHA !/FLD1 ENDIF !/FLD2 IF (U10ABS.GT.10. .and. HSTOT.gt.0.5) then !/FLD2 CALL W3FLD2 ( SPEC,min(FPI/TPI,2.0),COEF*U10ABS*COS(U10DIR), & !/FLD2 COEF*U10ABS*Sin(U10DIR), ZWND, DEPTH, 0.0, & -!/FLD2 USTAR, USTDIR, Z0,TAUNUX,TAUNUY,CHARN) +!/FLD2 DAIR, USTAR, USTDIR, Z0,TAUNUX,TAUNUY,CHARN) !/FLD2 ELSE !/FLD2 CHARN = AALPHA !/FLD2 ENDIF diff --git a/model/ftn/w3updtmd.ftn b/model/ftn/w3updtmd.ftn index 5b5aebda8..bc2f2aaa9 100644 --- a/model/ftn/w3updtmd.ftn +++ b/model/ftn/w3updtmd.ftn @@ -6,7 +6,7 @@ !/ | WAVEWATCH III NOAA/NCEP | !/ | H. L. Tolman | !/ | FORTRAN 90 | -!/ | Last update : 13-Jan-2016 | +!/ | Last update : 22-Mar-2021 | !/ +-----------------------------------+ !/ !/ 21-Jan-2000 : Origination. ( version 2.00 ) @@ -56,6 +56,7 @@ !/ 26-Mar-2018 : Sea-point only Wnd/Cur input. JGLi ( version 6.04 ) !/ 07-Oct-2019 : RTD option with standard lat-lon !/ grid when nesting to rotated grid ( version 7.11 ) +!/ 22-Mar-2021 : Add W3UTAU, W3URHO routines ( version 7.xx ) !/ !/ Copyright 2009-2014 National Weather Service (NWS), !/ National Oceanic and Atmospheric Administration. All rights @@ -74,10 +75,12 @@ ! ---------------------------------------------------------------- ! W3UCUR Subr. Public Update current fields. ! W3UWND Subr. Public Update wind fields. +! W3UTAU Subr. Public Update atmospheric momentum fields. ! W3UINI Subr. Public Update initial conditions. ! W3UBPT Subr. Public Update boundary conditions. ! W3UICE Subr. Public Update ice concentrations. ! W3ULEV Subr. Public Update water levels. +! W3URHO Subr. Public Update air density. ! W3UTRN Subr. Public Update cell boundary transparancies. ! W3DZXY Subr. Public Calculate derivatives of a field. ! ---------------------------------------------------------------- @@ -106,9 +109,9 @@ ! !/CRT1 Linear current interpolation. ! !/CRT2 Quasi-quadratic current interpolation. ! -! !/WNT0 No wind interpolation. -! !/WNT1 Linear wind interpolation. -! !/WNT2 Energy conservation in wind interpolation. +! !/WNT0 No wind/momentum interpolation. +! !/WNT1 Linear wind/momentum interpolation. +! !/WNT2 Energy conservation in wind/momentum interpolation. ! ! !/RWND Use wind speeds relative to currents. ! @@ -656,6 +659,182 @@ !/ End of W3UWND ----------------------------------------------------- / !/ END SUBROUTINE W3UWND +!/ ------------------------------------------------------------------- / + SUBROUTINE W3UTAU ( FLFRST ) +!/ +!/ +-----------------------------------+ +!/ | WAVEWATCH III NOAA/NCEP | +!/ | J. M. Castillo | +!/ | FORTRAN 90 | +!/ | Last update : 22-Mar-2021 | +!/ +-----------------------------------+ +!/ +!/ 22-Mar-2021 : First implementation ( version 7.xx ) +!/ +! 1. Purpose : +! +! Interpolate atmosphere momentum fields to the given time. +! +! 2. Method : +! +! Linear interpolation of momentum module and direction, with a simple +! correction to obtain quasi-conservation of energy. +! +! 3. Parameters : +! +! Parameter list +! ---------------------------------------------------------------- +! FLFRST Log. I Flag for first pass through routine. +! ---------------------------------------------------------------- +! +! 4. Subroutines used : +! +! See module documentation. +! +! 5. Called by : +! +! Name Type Module Description +! ---------------------------------------------------------------- +! W3WAVE Subr. W3WAVEMD Actual wave model routine. +! ---------------------------------------------------------------- +! +! 6. Error messages : +! +! None. +! +! 7. Remarks : +! +! - Only momentum over sea points is considered. +! - Time ranges checked in W3WAVE. +! +! 8. Structure : +! +! -------------------------------------- +! 1. Prepare auxiliary arrays. +! 2. Calculate interpolation factors +! 3. Get actual momentum +! -------------------------------------- +! +! 9. Switches : +! +! !/OMPG OpenMP compiler directives. +! +! !/WNT0 No momentum interpolation. +! !/WNT1 Linear momentum interpolation. +! !/WNT2 Energy conservation in momentum interpolation. +! +! !/S Enable subroutine tracing. +! !/T Test output. +! +! 10. Source code : +! +!/ ------------------------------------------------------------------- / + USE W3GDATMD, ONLY: NSEA, MAPSF +!/ARC USE W3GDATMD, ONLY: NARC, NGLO, ANGARC +!/SMC USE W3GDATMD, ONLY: FSWND + USE W3WDATMD, ONLY: TIME + USE W3ADATMD, ONLY: TAUA, TAUADIR, MA0, MAI, MD0, MDI + USE W3IDATMD, ONLY: TU0, UX0, UY0, TUN, UXN, UYN +!/ + IMPLICIT NONE +!/ +!/ ------------------------------------------------------------------- / +!/ Parameter list +!/ + LOGICAL, INTENT(IN) :: FLFRST +!/ +!/ ------------------------------------------------------------------- / +!/ + INTEGER :: ISEA, IX, IY +!/S INTEGER, SAVE :: IENT = 0 + REAL :: D0, DN, DD, DT0N, DT0T, RD, MI2, & + MXR, MYR +!/WNT2 REAL :: RD2 + REAL :: MDARC +!/ +!/ ------------------------------------------------------------------- / +!/ +!/S CALL STRACE (IENT, 'W3UTAU') +! +! 1. Prepare auxiliary arrays +! + IF ( FLFRST ) THEN + DO ISEA=1, NSEA +!/SMC !!Li For sea-point only SMC grid momentum 1-D momentum is stored on +!/SMC !!Li 2-D UX0(NSEA, 1) variable. +!/SMC IF( FSWND ) THEN +!/SMC IX = ISEA +!/SMC IY = 1 +!/SMC ELSE + IX = MAPSF(ISEA,1) + IY = MAPSF(ISEA,2) +!/SMC ENDIF + + MA0(ISEA) = SQRT ( UX0(IX,IY)**2 + UY0(IX,IY)**2 ) + MAI(ISEA) = SQRT ( UXN(IX,IY)**2 + UYN(IX,IY)**2 ) + IF ( MA0(ISEA) .GT. 1.E-7) THEN + D0 = MOD ( TPI+ATAN2(UY0(IX,IY),UX0(IX,IY)) , TPI ) + ELSE + D0 = 0 + END IF + IF ( MAI(ISEA) .GT. 1.E-7) THEN + DN = MOD ( TPI+ATAN2(UYN(IX,IY),UXN(IX,IY)) , TPI ) + ELSE + DN = D0 + END IF + IF ( MA0(ISEA) .GT. 1.E-7) THEN + MD0(ISEA) = D0 + ELSE + MD0(ISEA) = DN + END IF + DD = DN - MD0(ISEA) + IF (ABS(DD).GT.PI) DD = DD - TPI*SIGN(1.,DD) + MDI(ISEA) = DD + MAI(ISEA) = MAI(ISEA) - MA0(ISEA) + END DO + END IF +! +! 2. Calculate interpolation factor +! + DT0N = DSEC21 ( TU0, TUN ) + DT0T = DSEC21 ( TU0, TIME ) +! +!/WNT0 RD = 0. +!/WNT1 RD = DT0T / MAX ( 1.E-7 , DT0N ) +!/WNT2 RD = DT0T / MAX ( 1.E-7 , DT0N ) +!/WNT2 RD2 = 1. - RD +!/OASACM RD = 1. +! +!/T WRITE (NDST,9000) DT0N, DT0T, RD +! +! 3. Actual momentum for all grid points +! +!/OMPG/!$OMP PARALLEL DO PRIVATE (ISEA,MI2,MXR,MYR,MDARC) +! + DO ISEA=1, NSEA +! + TAUA(ISEA) = MA0(ISEA) + RD * MAI(ISEA) +!/WNT2 MI2 = SQRT ( RD2 * MA0(ISEA)**2 + & +!/WNT2 RD *(MA0(ISEA)+MAI(ISEA))**2 ) +!/WNT2 TAUA(ISEA) = TAUA(ISEA) * MIN(1.25,MI2/MAX(1.E-7,TAUA(ISEA))) + TAUADIR(ISEA) = MD0(ISEA) + RD * MDI(ISEA) +!/ARC !Li Rotate momentum direction by ANGARC for Arctic part cells. +!/ARC IF( ISEA .GT. NGLO ) THEN +!/ARC MDARC = TAUADIR(ISEA) + ANGARC( ISEA - NGLO )*DERA +!/ARC TAUADIR(ISEA) = MOD ( TPI + MDARC, TPI ) +!/ARC ENDIF +! + END DO +! + RETURN +! +! Formats +! +!/T 9000 FORMAT (' TEST W3UTAU : DT0N, DT0T, RD :',2F8.1,F6.3) +!/ +!/ End of W3UTAU ----------------------------------------------------- / +!/ + END SUBROUTINE W3UTAU !/ ------------------------------------------------------------------- / SUBROUTINE W3UINI ( A ) !/ @@ -1972,6 +2151,104 @@ !/ End of W3ULEV ----------------------------------------------------- / !/ END SUBROUTINE W3ULEV +!/ ------------------------------------------------------------------- / + SUBROUTINE W3URHO ( ) +!/ +!/ +-----------------------------------+ +!/ | WAVEWATCH III NOAA/NCEP | +!/ | J. M. Castillo | +!/ | FORTRAN 90 | +!/ | Last update : 22-Mar-2021 | +!/ +-----------------------------------+ +!/ +!/ 22-Mar-2021 : First implementation ( version 7.xx ) +!/ +! 1. Purpose : +! +! Update air density +! +! 2. Method : +! +! Conservative linear interpolation to new grid. +! +! 3. Parameters : +! +! Parameter list +! ---------------------------------------------------------------- +! None +! ---------------------------------------------------------------- +! +! 4. Subroutines used : +! +! See module documentation. +! +! 5. Called by : +! +! Name Type Module Description +! ---------------------------------------------------------------- +! W3WAVE Subr. W3WAVEMD Actual wave model routine. +! ---------------------------------------------------------------- +! +! 6. Error messages : +! +! None. +! +! 7. Remarks : +! +! 8. Structure : +! +! See source code. +! +! 9. Switches : +! +! !/SHRD Switch for shared / distributed memory architecture. +! !/DIST Id. +! +! !/S Enable subroutine tracing. +! !/T Enable test output. +! +! 10. Source code : +! +!/ ------------------------------------------------------------------- / + USE W3GDATMD, ONLY: NSEA, MAPSF + USE W3WDATMD, ONLY: TIME, TRHO, RHOAIR + USE W3IDATMD, ONLY: TRN, RAIR +!/ + IMPLICIT NONE +!/ +!/ ------------------------------------------------------------------- / +!/ Parameter list +!/ +!/ ------------------------------------------------------------------- / +!/ + INTEGER :: ISEA, IX, IY +!/S INTEGER, SAVE :: IENT = 0 +!/ +!/ ------------------------------------------------------------------- / +!/ +!/S CALL STRACE (IENT, 'W3URHO') +! +! 1. Update times --------------------------------------------------- * +! + TRHO(1) = TRN(1) + TRHO(2) = TRN(2) +! +! 2. Main loop over sea points -------------------------------------- * +! + DO ISEA=1, NSEA + IX = MAPSF(ISEA,1) + IY = MAPSF(ISEA,2) + RHOAIR(ISEA) = RAIR(IX,IY) + END DO +! + RETURN +! +! Formats +! +!/ +!/ End of W3URHO ----------------------------------------------------- / +!/ + END SUBROUTINE W3URHO !/ ------------------------------------------------------------------- / SUBROUTINE W3UTRN ( TRNX, TRNY ) !/ diff --git a/model/ftn/w3wavemd.ftn b/model/ftn/w3wavemd.ftn index 45e5e320d..f62692976 100644 --- a/model/ftn/w3wavemd.ftn +++ b/model/ftn/w3wavemd.ftn @@ -6,7 +6,7 @@ !/ | WAVEWATCH III NOAA/NCEP | !/ | H. L. Tolman | !/ | FORTRAN 90 | -!/ | Last update : 27-Aug-2015 | +!/ | Last update : 22-Mar-2021 | !/ +-----------------------------------+ !/ !/ 04-Feb-2000 : Origination. ( version 2.00 ) @@ -82,6 +82,7 @@ !/ 14-Sep-2018 : Remove PALM implementation ( version 6.06 ) !/ 15-Sep-2020 : Bugfix FIELD allocation. Remove ( version 7.11 ) !/ defunct OMPX switches. +!/ 22-Mar-2021 : Update TAUA, RHOA ( version 7.xx ) !/ !/ Copyright 2009-2014 National Weather Service (NWS), !/ National Oceanic and Atmospheric Administration. All rights @@ -184,7 +185,7 @@ !/ | WAVEWATCH III NOAA/NCEP | !/ | H. L. Tolman | !/ | FORTRAN 90 | -!/ | Last update : 25-Sep-2020 | +!/ | Last update : 22-Mar-2021 | !/ +-----------------------------------+ !/ !/ 17-Mar-1999 : Distributed FORTRAN 77 version. ( version 1.18 ) @@ -251,6 +252,7 @@ !/ DEBUGIOBP/DEBUGIOBC ( version 6.04 ) !/ 14-Sep-2018 : Remove PALM implementation ( version 6.06 ) !/ 25-Sep-2020 : Oasis coupling at T+0 ( version 7.10 ) +!/ 22-Mar-2021 : Update TAUA, RHOA ( version 7.xx ) !/ ! 1. Purpose : ! @@ -438,7 +440,7 @@ !/MPI INTEGER, ALLOCATABLE :: STATCO(:,:), STATIO(:,:) INTEGER :: IXrel REAL :: DTTST, DTTST1, DTTST2, DTTST3, & - DTL0, DTI0, DTI10, DTI50, & + DTL0, DTI0, DTR0, DTI10, DTI50, & DTGA, DTG, DTGpre, DTRES, & FAC, VGX, VGY, FACK, FACTH, & FACX, XXX, REFLEC(4), & @@ -470,7 +472,7 @@ !/IC3 REAL :: USE_CHENG, USE_CGICE, HICE LOGICAL :: UGDTUPDATE ! true if time step should be updated for UG schemes CHARACTER(LEN=8) :: STTIME - CHARACTER(LEN=17) :: IDACT + CHARACTER(LEN=21) :: IDACT CHARACTER(LEN=13) :: OUTID CHARACTER(LEN=23) :: IDTIME INTEGER eIOBP @@ -690,6 +692,40 @@ !/DEBUGINIT FLUSH(740+IAPROC) !/PDLIB!/DEBUGCOH CALL ALL_VA_INTEGRAL_PRINT(IMOD, "W3WAVEMD, step 6") ! +! 1.f Momentum interval +! + IF ( FLTAUA ) THEN + DTTST1 = DSEC21 ( TU0 , TUN ) + DTTST2 = DSEC21 ( TU0 , TIME ) + DTTST3 = DSEC21 ( TEND , TUN ) +!/T WRITE (NDST,9012) DTTST1, DTTST2, DTTST3 + IF ( DTTST1.LT.0. .OR. DTTST2.LT.0. .OR. DTTST3.LT.0. ) THEN + IF ( IAPROC .EQ. NAPERR ) WRITE (NDSE,1007) + CALL EXTCDE ( 3 ) + END IF + IF ( DTTST2.EQ.0..AND. ITIME.EQ.0 ) THEN + IDACT(9:9) = 'F' + TOFRST = TIME + END IF + END IF +! +! 1.g Air density time +! + IF ( FLRHOA ) THEN + IF ( TRHO(1) .GE. 0. ) THEN + DTR0 = DSEC21 ( TRHO , TRN ) + ELSE + DTR0 = 1. + END IF +!/T WRITE (NDST,9011) DTR0 + IF ( DTR0 .LT. 0. ) THEN + IF ( IAPROC .EQ. NAPERR ) WRITE (NDSE,1008) + CALL EXTCDE ( 2 ) + END IF + ELSE + DTR0 = 0. + END IF +! ! 1.e Ice thickness interval ! IF ( FLIC1 ) THEN @@ -945,7 +981,7 @@ ! VGX = 0. VGY = 0. - IF(INFLAGS1(8)) THEN + IF(INFLAGS1(10)) THEN DTTST1 = DSEC21 ( TIME, TGN ) DTTST2 = DSEC21 ( TG0, TGN ) FAC = DTTST1 / MAX ( 1. , DTTST2 ) @@ -962,7 +998,7 @@ !/DEBUGSRC WRITE(740+IAPROC,*) 'max(UST)=', maxval(UST) !/DEBUGSRC FLUSH(740+IAPROC) ! -! 3.1 Interpolate winds and currents. +! 3.1 Interpolate winds, currents, and momentum. ! (Initialize wave fields with winds) ! !/DEBUGRUN WRITE(740+IAPROC,*) 'FLCUR=', FLCUR @@ -1058,6 +1094,13 @@ IF ( FLIWND .AND. LOCAL ) CALL W3UINI ( VA ) !/DEBUGRUN WRITE(740+IAPROC,*) 'W3WAVE, step 6.5.1 DTG=', DTG !/DEBUGRUN FLUSH(740+IAPROC) +! + IF ( FLTAUA ) THEN + CALL W3UTAU ( FLFRST ) + ELSE IF ( FLFRST ) THEN + TAUA = 0.01 + TAUADIR = 0. + END IF ! ! 3.2 Update boundary conditions if boundary flag is true (FLBPI) ! @@ -1115,7 +1158,28 @@ !/MEMCHECK write(740+IAPROC,*) 'memcheck_____:', 'WW3_WAVE TIME LOOP 8' !/MEMCHECK call getMallocInfo(mallinfos) !/MEMCHECK call printMallInfo(IAPROC,mallInfos) - +! +! 3.3.0 Update air density +! + IF ( FLRHOA .AND. DTR0.NE.0. ) THEN +! + IF ( TRHO(1).GE.0 ) THEN + IF ( DTR0 .LT. 0. ) THEN + IDACT(11:11) = 'B' + ELSE + DTTST = DSEC21 ( TIME, TRN ) + IF ( DTTST .LE. 0.5*DTR0 ) IDACT(11:11) = 'U' + END IF + ELSE + IDACT(11:11) = 'I' + END IF + +! + IF ( IDACT(11:11).NE.' ' ) THEN + CALL W3URHO ( ) + END IF +! + END IF ! ! 3.3.1 Update ice coverage (if new ice map). ! Need to be run on output nodes too, to update MAPSTx @@ -1127,16 +1191,16 @@ ! IF ( TICE(1).GE.0 ) THEN IF ( DTI0 .LT. 0. ) THEN - IDACT(9:9) = 'B' + IDACT(13:13) = 'B' ELSE DTTST = DSEC21 ( TIME, TIN ) - IF ( DTTST .LE. 0.5*DTI0 ) IDACT(9:9) = 'U' + IF ( DTTST .LE. 0.5*DTI0 ) IDACT(13:13) = 'U' END IF ELSE - IDACT(9:9) = 'I' + IDACT(13:13) = 'I' END IF ! - IF ( IDACT(9:9).NE.' ' ) THEN + IF ( IDACT(13:13).NE.' ' ) THEN CALL W3UICE ( VA, VA ) DTI0 = 0. FLACT = .TRUE. @@ -1159,17 +1223,17 @@ ! IF ( TIC1(1).GE.0 ) THEN IF ( DTI10 .LT. 0. ) THEN - IDACT(11:11) = 'B' + IDACT(15:15) = 'B' ELSE DTTST = DSEC21 ( TIME, TI1 ) - IF ( DTTST .LE. 0.5*DTI10 ) IDACT(11:11) = 'U' + IF ( DTTST .LE. 0.5*DTI10 ) IDACT(15:15) = 'U' END IF ELSE - IDACT(11:11) = 'I' + IDACT(15:15) = 'I' END IF ! - IF ( IDACT(11:11).NE.' ' ) THEN + IF ( IDACT(15:15).NE.' ' ) THEN CALL W3UIC1 ( FLFRST ) DTI10 = 0. FLACT = .TRUE. @@ -1189,16 +1253,16 @@ ! !/IS2 IF ( TIC5(1).GE.0 ) THEN !/IS2 IF ( DTI50 .LT. 0. ) THEN -!/IS2 IDACT(14:14) = 'B' +!/IS2 IDACT(18:18) = 'B' !/IS2 ELSE !/IS2 DTTST = DSEC21 ( TIME, TI5 ) -!/IS2 IF ( DTTST .LE. 0.5*DTI50 ) IDACT(14:14) = 'U' +!/IS2 IF ( DTTST .LE. 0.5*DTI50 ) IDACT(18:18) = 'U' !/IS2 END IF !/IS2 ELSE -!/IS2 IDACT(14:14) = 'I' +!/IS2 IDACT(18:18) = 'I' !/IS2 END IF ! -!/IS2 IF ( IDACT(14:14).NE.' ' ) THEN +!/IS2 IF ( IDACT(18:18).NE.' ' ) THEN !/IS2 CALL W3UIC5( FLFRST ) !/IS2 DTI50 = 0. !/IS2 FLACT = .TRUE. @@ -1428,7 +1492,8 @@ !/PDLIB TAUWNY(JSEA), PHIAW(JSEA), CHARN(JSEA), & !/PDLIB TWS(JSEA), PHIOC(JSEA), TMP1, D50, PSIC, TMP2, & !/PDLIB PHIBBL(JSEA), TMP3, TMP4, PHICE(JSEA), & -!/PDLIB ASF(ISEA)) +!/PDLIB TAUOCX(JSEA), TAUOCY(JSEA), WNMEAN(JSEA), & +!/PDLIB RHOAIR(ISEA), ASF(ISEA)) !/PDLIB!/DEBUGSRC WRITE(740+IAPROC,*) 'After sum(VA)=', sum(VA(:,JSEA)) !/PDLIB!/DEBUGSRC WRITE(740+IAPROC,*) ' sum(VSTOT)=', sum(VSTOT(:,JSEA)) !/PDLIB!/DEBUGSRC WRITE(740+IAPROC,*) ' sum(VDTOT)=', sum(VDTOT(:,JSEA)) @@ -2012,7 +2077,8 @@ !/PDLIB TAUWNY(JSEA), PHIAW(JSEA), CHARN(JSEA), & !/PDLIB TWS(JSEA),PHIOC(JSEA), TMP1, D50, PSIC, TMP2,& !/PDLIB PHIBBL(JSEA), TMP3, TMP4, PHICE(JSEA), & -!/PDLIB ASF(ISEA)) +!/PDLIB TAUOCX(JSEA), TAUOCY(JSEA), WNMEAN(JSEA), & +!/PDLIB RHOAIR(ISEA), ASF(ISEA)) !/PDLIB ELSE CALL W3SRCE(srce_direct, IT, JSEA, IX, IY, IMOD, & VAoldDummy, VA(:,JSEA), & @@ -2032,7 +2098,8 @@ TAUWNY(JSEA), PHIAW(JSEA), CHARN(JSEA), & TWS(JSEA), PHIOC(JSEA), TMP1, D50, PSIC,TMP2,& PHIBBL(JSEA), TMP3, TMP4 , PHICE(JSEA), & - ASF(ISEA)) + TAUOCX(JSEA), TAUOCY(JSEA), WNMEAN(JSEA), & + RHOAIR(ISEA), ASF(ISEA)) !/PDLIB END IF WHITECAP(JSEA,1:4) = TMP1 BEDFORMS(JSEA,1:3) = TMP2 @@ -2563,9 +2630,13 @@ DTTST = DSEC21 ( TIME , TWN ) IF ( DTTST .EQ. 0. ) IDACT(3:3) = 'X' END IF + IF ( FLTAUA ) THEN + DTTST = DSEC21 ( TIME , TUN ) + IF ( DTTST .EQ. 0. ) IDACT(9:9) = 'X' + END IF IF ( TDN(1) .GT. 0 ) THEN DTTST = DSEC21 ( TIME , TDN ) - IF ( DTTST .EQ. 0. ) IDACT(17:17) = 'X' + IF ( DTTST .EQ. 0. ) IDACT(21:21) = 'X' END IF ! IF ( IDLAST.NE.TIME(1) ) THEN @@ -2634,6 +2705,10 @@ ' NEW ICE FIELD BEFORE OLD ICE FIELD '/) 1005 FORMAT (/' *** WAVEWATCH III ERROR IN W3WAVE :'/ & ' NEW IC1 FIELD BEFORE OLD IC1 FIELD '/) + 1007 FORMAT (/' *** WAVEWATCH III ERROR IN W3WAVE :'/ & + ' NEW ATM MOMENTUM BEFORE OLD ATM MOMENTUM '/) + 1008 FORMAT (/' *** WAVEWATCH III ERROR IN W3WAVE :'/ & + ' NEW AIR DENSITY BEFORE OLD AIR DENSITY '/) !/IS2 1006 FORMAT (/' *** WAVEWATCH III ERROR IN W3WAVE :'/ & !/IS2 ' NEW IC5 FIELD BEFORE OLD IC5 FIELD '/) 1030 FORMAT (/' *** WAVEWATCH III WARING IN W3WAVE :'/ & diff --git a/model/ftn/w3wdatmd.ftn b/model/ftn/w3wdatmd.ftn index 1d63269a6..8db99901c 100644 --- a/model/ftn/w3wdatmd.ftn +++ b/model/ftn/w3wdatmd.ftn @@ -6,7 +6,7 @@ !/ | WAVEWATCH III NOAA/NCEP | !/ | H. L. Tolman | !/ | FORTRAN 90 | -!/ | Last update : 06-Jun-2018 | +!/ | Last update : 22-Mar-2021 | !/ +-----------------------------------+ !/ !/ 22-Oct-2004 : Origination. ( version 3.06 ) @@ -19,6 +19,7 @@ !/ 14-Nov-2013 : Initialize UST and USTDIR. ( version 4.13 ) !/ 10-Dec-2014 : Add checks for allocate status ( version 5.04 ) !/ 06-Jun-2018 : Add PDLIB/SETUP/DEBUGINIT ( version 6.04 ) +!/ 22-Mar-2021 : Support for variable air density ( version 7.xx ) !/ !/ Copyright 2009-2013 National Weather Service (NWS), !/ National Oceanic and Atmospheric Administration. All rights @@ -50,11 +51,13 @@ ! TIMEEND I.A. Public Final time ! TLEV I.A. Public Valid time for water levels. ! TICE I.A. Public Valid time for ice concentration +! TRHO I.A. Public Valid time for air density ! TIC1 I.A. Public Valid time for ice thickness ! TIC5 I.A. Public Valid time for ice floe ! VA R.A. Public Storage array for spectra. ! WLV R.A. Public Water levels. ! ICE R.A. Public Ice coverage. +! RHOAIR R.A. Public Air density ! ICEH R.A. Public Ice thickness. ! ICEF R.A. Public Ice flow maximum diameter. ! ICEDMAX R.A. Public Ice flow maximum diameter for updates. @@ -112,12 +115,13 @@ !/ Data structures !/ TYPE WDATA - INTEGER :: TIME(2), TLEV(2), TICE(2), TIC1(2), TIC5(2) + INTEGER :: TIME(2), TLEV(2), TICE(2), TRHO(2), & + TIC1(2), TIC5(2) !/OASIS INTEGER :: TIME00(2) !/OASIS INTEGER :: TIMEEND(2) - REAL, POINTER :: VA(:,:), WLV(:), ICE(:), UST(:), & - USTDIR(:), ASF(:), FPIS(:), BERG(:), & - ICEH(:), ICEF(:), ICEDMAX(:) + REAL, POINTER :: VA(:,:), WLV(:), ICE(:), RHOAIR(:), & + UST(:), USTDIR(:), ASF(:), FPIS(:), & + BERG(:), ICEH(:), ICEF(:), ICEDMAX(:) !/SETUP REAL, POINTER :: ZETA_SETUP(:), FX_zs(:), FY_zs(:) !/SETUP REAL, POINTER :: SXX_zs(:), SXY_zs(:), SYY_zs(:) !/PDLIB REAL, POINTER :: VSTOT(:,:), VDTOT(:,:) @@ -134,12 +138,13 @@ !/ !/ Data aliasses for structure WDATA(S) !/ - INTEGER, POINTER :: TIME(:), TLEV(:), TICE(:), TIC1(:), TIC5(:) + INTEGER, POINTER :: TIME(:), TLEV(:), TICE(:), TRHO(:), & + TIC1(:), TIC5(:) !/OASIS INTEGER, POINTER :: TIME00(:) !/OASIS INTEGER, POINTER :: TIMEEND(:) - REAL, POINTER :: VA(:,:), WLV(:), ICE(:), UST(:), & - USTDIR(:), ASF(:), FPIS(:), BERG(:), & - ICEH(:), ICEF(:), ICEDMAX(:) + REAL, POINTER :: VA(:,:), WLV(:), ICE(:), RHOAIR(:), & + UST(:), USTDIR(:), ASF(:), FPIS(:), & + BERG(:), ICEH(:), ICEF(:), ICEDMAX(:) !/SETUP REAL, POINTER :: ZETA_SETUP(:), FX_zs(:), FY_zs(:) !/SETUP REAL, POINTER :: SXX_zs(:), SXY_zs(:), SYY_zs(:) !/PDLIB REAL, POINTER :: VSTOT(:,:), VDTOT(:,:) @@ -266,7 +271,7 @@ !/ | WAVEWATCH III NOAA/NCEP | !/ | H. L. Tolman | !/ | FORTRAN 90 | -!/ | Last update : 10-Dec-2014 ! +!/ | Last update : 22-Mar-2021 ! !/ +-----------------------------------+ !/ !/ 22-Oct-2004 : Origination. ( version 3.06 ) @@ -276,6 +281,7 @@ !/ 04-Oct-2006 : Add filter to array pointers. ( version 3.10 ) !/ 14-Nov-2013 : Initialize UST and USTDIR. ( version 4.13 ) !/ 10-Dec-2014 : Add checks for allocate status ( version 5.04 ) +!/ 22-Mar-2021 : Support for variable air density ( version 7.xx ) !/ ! 1. Purpose : ! @@ -335,7 +341,7 @@ USE W3GDATMD, ONLY: NGRIDS, IGRID, W3SETG, NSPEC, NSEA, NSEAL, GRIDS USE W3ODATMD, ONLY: NAPROC, IAPROC USE W3SERVMD, ONLY: EXTCDE - USE CONSTANTS, ONLY : LPDLIB + USE CONSTANTS, ONLY : LPDLIB, DAIR USE W3PARALL, ONLY: SET_UP_NSEAL_NSEALM !/PDLIB use yowNodepool, only: npa, np !/PDLIB use yowRankModule, only : rank @@ -470,6 +476,7 @@ ! ICE, ICEH, ICEF must be defined from 0:NSEA ALLOCATE ( WDATAS(IMOD)%WLV(NSEA), & WDATAS(IMOD)%ICE(0:NSEA), & + WDATAS(IMOD)%RHOAIR(NSEA), & !/SETUP WDATAS(IMOD)%ZETA_SETUP(NSEA), & WDATAS(IMOD)%BERG(NSEA), & WDATAS(IMOD)%ICEH(0:NSEA), & @@ -485,6 +492,7 @@ WDATAS(IMOD)%WLV (:) = 0. WDATAS(IMOD)%ICE (0:NSEA) = 0. + WDATAS(IMOD)%RHOAIR(:) = DAIR !/SETUP WDATAS(IMOD)%ZETA_SETUP(:) = 0. WDATAS(IMOD)%BERG (:) = 0. WDATAS(IMOD)%ICEH (0:NSEA) = GRIDS(IMOD)%IICEHINIT @@ -546,12 +554,13 @@ !/ | WAVEWATCH III NOAA/NCEP | !/ | H. L. Tolman | !/ | FORTRAN 90 | -!/ | Last update : 04-Oct-2006 ! +!/ | Last update : 22-Mar-2021 ! !/ +-----------------------------------+ !/ !/ 31-Mar-2004 : Origination. ( version 3.06 ) !/ 05-Jul-2006 : Consolidate stress vector. ( version 3.09 ) !/ 04-Oct-2006 : Add filter to array pointers. ( version 3.10 ) +!/ 22-Mar-2021 : Support for variable air density ( version 7.xx ) !/ ! 1. Purpose : ! @@ -640,6 +649,7 @@ !/OASIS TIMEEND => WDATAS(IMOD)%TIMEEND TLEV => WDATAS(IMOD)%TLEV TICE => WDATAS(IMOD)%TICE + TRHO => WDATAS(IMOD)%TRHO TIC1 => WDATAS(IMOD)%TIC1 TIC5 => WDATAS(IMOD)%TIC5 DINIT => WDATAS(IMOD)%DINIT @@ -656,6 +666,7 @@ END IF WLV => WDATAS(IMOD)%WLV ICE => WDATAS(IMOD)%ICE + RHOAIR => WDATAS(IMOD)%RHOAIR !/SETUP ZETA_SETUP => WDATAS(IMOD)%ZETA_SETUP !/SETUP FX_zs => WDATAS(IMOD)%FX_zs !/SETUP FY_zs => WDATAS(IMOD)%FY_zs diff --git a/model/ftn/wminitmd.ftn b/model/ftn/wminitmd.ftn index 39c946bcb..b29dedd84 100644 --- a/model/ftn/wminitmd.ftn +++ b/model/ftn/wminitmd.ftn @@ -6,7 +6,7 @@ !/ | WAVEWATCH III NOAA/NCEP | !/ | H. L. Tolman | !/ | FORTRAN 90 | -!/ | Last update : 15-May-2018 | +!/ | Last update : 22-Mar-2021 | !/ +-----------------------------------+ !/ !/ 13-Jun-2005 : Origination. ( version 3.07 ) @@ -43,6 +43,7 @@ !/ Add ESMF override for STIME & ETIME ( version 6.02 ) !/ (T. J. Campbell, NRL) !/ 15-May-2018 : Update namelist ( version 6.05 ) +!/ 22-Mar-2021 : Add momentum and air density input ( version 7.xx ) !/ !/ Copyright 2009-2014 National Weather Service (NWS), !/ National Oceanic and Atmospheric Administration. All rights @@ -96,7 +97,7 @@ !/ | WAVEWATCH III NOAA/NCEP | !/ | H. L. Tolman | !/ | FORTRAN 90 | -!/ | Last update : 20-Jan-2017 | +!/ | Last update : 22-Mar-2021 | !/ +-----------------------------------+ !/ !/ 13-Jun-2005 : Origination. ( version 3.07 ) @@ -138,6 +139,7 @@ !/ 20-Jan-2017 : Modify input forcing flags to support coupler input. !/ Add ESMF override for STIME & ETIME ( version 6.02 ) !/ (T. J. Campbell, NRL) +!/ 22-Mar-2021 : Add momentum and air density input ( version 7.xx ) !/ ! 1. Purpose : ! @@ -234,7 +236,7 @@ ! time by using /var/tmp/ for log files. ! See commented line at "OPEN (MDSO,FILE=..." ! -! - IDFLDS dimensioning is hardwired as IDFLDS(-7:7) where lowest possible +! - IDFLDS dimensioning is hardwired as IDFLDS(-7:9) where lowest possible ! value of JFIRST is JFIRST=-7 ! ! 8. Structure : @@ -416,18 +418,18 @@ !/MPRF REAL(KIND=8) :: get_memory REAL, ALLOCATABLE :: X(:), Y(:), AMOVE(:), DMOVE(:), & RP1(:), RPN(:) - LOGICAL :: FLT, TFLAGI, TFLAGS(-7:12), PSHARE + LOGICAL :: FLT, TFLAGI, TFLAGS(-7:14), PSHARE LOGICAL, ALLOCATABLE :: FLGRD(:,:,:), FLRBPI(:), BCDTMP(:), & USEINP(:), LPRT(:), FLGR2(:,:,:), & FLGD(:,:), FLG2(:,:), FLG2D(:,:), & FLG1D(:), CPLINP(:) CHARACTER(LEN=1) :: COMSTR - CHARACTER(LEN=3) :: IDSTR(7), IDTST + CHARACTER(LEN=3) :: IDSTR(9), IDTST CHARACTER(LEN=5) :: STOUT, OUTSTR(6) - CHARACTER(LEN=6) :: ACTION(9), YESXX, XXXNO + CHARACTER(LEN=6) :: ACTION(11), YESXX, XXXNO CHARACTER(LEN=8) :: LFILE, STTIME !/SHRD CHARACTER(LEN=9) :: TFILE - CHARACTER(LEN=13) :: STDATE, MN, TNAMES(7) + CHARACTER(LEN=13) :: STDATE, MN, TNAMES(9) CHARACTER(LEN=40) :: PN CHARACTER(LEN=13), & ALLOCATABLE :: INAMES(:,:), MNAMES(:) @@ -437,7 +439,7 @@ !/DIST CHARACTER(LEN=18) :: TFILE !/MPRF CHARACTER(LEN=18) :: PFILE - CHARACTER(LEN=13) :: IDFLDS(-7:7) + CHARACTER(LEN=13) :: IDFLDS(-7:9) CHARACTER(LEN=23) :: DTME21 CHARACTER(LEN=30) :: IDOTYP(8) CHARACTER(LEN=80) :: TNAME @@ -463,6 +465,7 @@ 'mud viscos. ' , & 'water levels ' , 'currents ' , & 'winds ' , 'ice fields ' , & + 'momentum ' , 'air density ' , & 'mean param. ' , '1D spectra ' , & '2D spectra ' / ! @@ -475,7 +478,8 @@ 'Fields for coupling ' , & 'Restart files second request '/ ! - DATA IDSTR / 'LEV', 'CUR', 'WND', 'ICE', 'DT0', 'DT1', 'DT2' / + DATA IDSTR / 'LEV', 'CUR', 'WND', 'ICE', 'TAU', 'RHO', & + 'DT0', 'DT1', 'DT2' / ! DATA YESXX / 'YES/--' / DATA XXXNO / '---/NO' / @@ -655,7 +659,7 @@ ! ALLOCATE ( MDS(13,NRGRD), NTRACE(2,NRGRD), ODAT(40,0:NRGRD), & FLGRD(NOGRP,NGRPP,NRGRD), OT2(0:NRGRD), FLGD(NOGRP,NRGRD), & - MDSF(-NRINP:NRGRD,JFIRST:7), IPRT(6,NRGRD), LPRT(NRGRD), & + MDSF(-NRINP:NRGRD,JFIRST:9), IPRT(6,NRGRD), LPRT(NRGRD), & FLGR2(NOGRP,NGRPP,NRGRD),FLG2D(NOGRP,NGRPP), FLG1D(NOGRP), & FLG2(NOGRP,NRGRD),OUTFF(7,0:NRGRD)) ! @@ -705,7 +709,7 @@ ! sources, and from communication rather than ! files. ! - ALLOCATE ( INAMES(2*NRGRD,JFIRST:7), MNAMES(-NRINP:2*NRGRD), & + ALLOCATE ( INAMES(2*NRGRD,JFIRST:9), MNAMES(-NRINP:2*NRGRD), & TMPRNK(2*NRGRD), TMPGRP(2*NRGRD), NINGRP(2*NRGRD), & RP1(2*NRGRD), RPN(2*NRGRD), BCDTMP(NRGRD+1:2*NRGRD) ) ALLOCATE ( GRANK(NRGRD), GRGRP(NRGRD), USEINP(NRINP) ) @@ -726,7 +730,7 @@ CALL NEXTLN ( COMSTR , MDSI , MDSE2 ) CALL W3SETI ( -I, MDSE, MDST ) INFLAGS1 = .FALSE. - READ (MDSI,*,END=2001,ERR=2002) MNAMES(-I), INFLAGS1(JFIRST:7) + READ (MDSI,*,END=2001,ERR=2002) MNAMES(-I), INFLAGS1(JFIRST:9) ! END DO ! @@ -773,8 +777,8 @@ I = I + 1 CALL W3SETI ( I, MDSE, MDST ) INFLAGS1 = .FALSE. -!/MGW INFLAGS1(8) = .TRUE. -!/MGP INFLAGS1(8) = .TRUE. +!/MGW INFLAGS1(10) = .TRUE. +!/MGP INFLAGS1(10) = .TRUE. INAMES(I,:)= INAMES(J,:) MNAMES(I) = MNAMES(J) TMPRNK(I) = TMPRNK(J) @@ -792,13 +796,13 @@ ! ! 3.a.5 Set input flags ! - ALLOCATE ( INPMAP(NRGRD,JFIRST:8), IDINP(-NRINP:NRGRD,JFIRST:8) ) + ALLOCATE ( INPMAP(NRGRD,JFIRST:10), IDINP(-NRINP:NRGRD,JFIRST:10) ) INPMAP = 0 IDINP = '---' ! DO I=1, NRGRD CALL W3SETI ( I, MDSE, MDST ) - DO J=JFIRST, 7 + DO J=JFIRST, 9 IF ( INAMES(I,J) .EQ. 'native' ) THEN ! *** forcing input from file & defined on the native grid *** INFLAGS1(J) = .TRUE. @@ -839,7 +843,7 @@ ! INFLAGS2 is initial value of INFLAGS1. Unlike INFLAGS1, ! it does not change during the simulation IF(.NOT. INFLAGS2(J)) INFLAGS2(J)=INFLAGS1(J) - END DO ! DO J=JFIRST, 7 + END DO ! DO J=JFIRST, 9 END DO ! DO I=1, NRGRD ! DO I=1, NRINP @@ -855,7 +859,7 @@ DO I=-NRINP, NRGRD IF ( I .EQ. 0 ) CYCLE CALL W3SETI ( I, MDSE, MDST ) - DO J=JFIRST, 7 + DO J=JFIRST, 9 IF ( I .GE. 1 ) THEN IF ( INPMAP(I,J) .LT. 0 ) CYCLE END IF @@ -871,7 +875,7 @@ !/T WRITE (MDST,9022) !/T DO I=-NRINP, NRGRD !/T IF ( I .EQ. 0 ) CYCLE -!/T WRITE (MDST,9021) I, MDSF(I,JFIRST:7) +!/T WRITE (MDST,9021) I, MDSF(I,JFIRST:9) !/T END DO ! ! 3.c Set rank and group data @@ -968,18 +972,18 @@ DO I=1, NRINP IF ( .NOT. USEINP(I) ) CYCLE CALL W3SETI ( -I, MDSE, MDST ) - ACTION(1:4) = '--- ' - DO J=JFIRST, 4 + ACTION(1:6) = '--- ' + DO J=JFIRST, 6 IF ( INFLAGS1(J) ) ACTION(J) = ' X ' END DO - ACTION(5:7) = '- ' - IF ( INFLAGS1(5) ) ACTION(5) = '1 ' - IF ( INFLAGS1(6) ) ACTION(6) = '2 ' - IF ( INFLAGS1(7) ) ACTION(7) = '3 ' + ACTION(7:9) = '- ' + IF ( INFLAGS1(7) ) ACTION(7) = '1 ' + IF ( INFLAGS1(8) ) ACTION(8) = '2 ' + IF ( INFLAGS1(9) ) ACTION(9) = '3 ' IF ( MDSS.NE.MDSO .AND. NMPSCR.EQ.IMPROC ) & - WRITE (MDSS,925) I, MNAMES(-I), ACTION(JFIRST:7) + WRITE (MDSS,925) I, MNAMES(-I), ACTION(JFIRST:9) IF ( NMPLOG .EQ. IMPROC ) & - WRITE (MDSO,925) I, MNAMES(-I), ACTION(JFIRST:7) + WRITE (MDSO,925) I, MNAMES(-I), ACTION(JFIRST:9) END DO IF ( MDSS.NE.MDSO .AND. NMPSCR.EQ.IMPROC ) WRITE (MDSS,926) IF ( NMPLOG .EQ. IMPROC ) WRITE (MDSO,926) @@ -1000,8 +1004,8 @@ IF ( NMPLOG .EQ. IMPROC ) WRITE (MDSO,930) DO I=1, NRGRD CALL W3SETI ( I, MDSE, MDST ) - ACTION(1:4) = '--- ' - DO J=JFIRST, 4 + ACTION(1:6) = '--- ' + DO J=JFIRST, 6 IF ( INFLAGS1(J) .AND. INPMAP(I,J) .EQ. 0 ) THEN ACTION(J) = 'native' ELSE IF ( INFLAGS1(J) .AND. INPMAP(I,J) .EQ. -999 ) THEN @@ -1012,22 +1016,22 @@ ACTION(J) = MNAMES( INPMAP(I,J)) END IF END DO - ACTION(5:9) = '- ' - IF ( INFLAGS1(5) ) ACTION(5) = '1 ' - IF ( INFLAGS1(6) ) ACTION(6) = '2 ' - IF ( INFLAGS1(7) ) ACTION(7) = '3 ' - IF ( INFLAGS1(8) ) THEN - ACTION(8) = 'yes ' + ACTION(7:11) = '- ' + IF ( INFLAGS1(7) ) ACTION(7) = '1 ' + IF ( INFLAGS1(8) ) ACTION(8) = '2 ' + IF ( INFLAGS1(9) ) ACTION(9) = '3 ' + IF ( INFLAGS1(10) ) THEN + ACTION(10) = 'yes ' ELSE - ACTION(8) = 'no ' + ACTION(10) = 'no ' END IF - IF ( BCDUMP(I) ) ACTION(9) = 'y ' + IF ( BCDUMP(I) ) ACTION(11) = 'y ' IF ( MDSS.NE.MDSO .AND. NMPSCR.EQ.IMPROC ) & - WRITE (MDSS,931) I, MNAMES(I), ACTION(1:8), GRANK(I), & - GRGRP(I), ACTION(9) + WRITE (MDSS,931) I, MNAMES(I), ACTION(1:10), GRANK(I), & + GRGRP(I), ACTION(11) IF ( NMPLOG .EQ. IMPROC ) & - WRITE (MDSO,931) I, MNAMES(I), ACTION(1:8), GRANK(I), & - GRGRP(I), ACTION(9) + WRITE (MDSO,931) I, MNAMES(I), ACTION(1:10), GRANK(I), & + GRGRP(I), ACTION(11) END DO IF ( MDSS.NE.MDSO .AND. NMPSCR.EQ.IMPROC ) WRITE (MDSS,932) IF ( NMPLOG .EQ. IMPROC ) WRITE (MDSO,932) @@ -1653,7 +1657,7 @@ ! the grids, because this is only intended for test cases. ! For true implementations, the jumping grid will be used. ! - IF ( INFLAGS1(8) ) THEN + IF ( INFLAGS1(10) ) THEN ! IF ( MDSS.NE.MDSO .AND. NMPSCR.EQ.IMPROC ) THEN WRITE (MDSS,965) @@ -2273,7 +2277,7 @@ ! ! ..... regular input files ! - DO J=JFIRST, 4 + DO J=JFIRST, 6 IF ( INFLAGS1(J) ) THEN IDINP(I,J) = IDSTR(J) IF ( INPMAP(I,J) .LT. 0 ) CYCLE @@ -2295,7 +2299,7 @@ ! ! ..... finalize file info data base ! - DO J=JFIRST, 7 + DO J=JFIRST, 9 IF ( MDSF(I,J) .NE. -1 ) CALL WMUINQ ( MDSE, MDST, MDSF(I,J) ) END DO ! @@ -2315,7 +2319,7 @@ TFLAGS = INFLAGS1 ! - DO J=JFIRST, 7 + DO J=JFIRST, 9 IF ( INPMAP(I,J) .NE. 0 ) THEN ! TFLAGS(J) = .TRUE. @@ -2335,9 +2339,14 @@ WADATS(I)%UDI(NSEA) , & WADATS(I)%AS0(NSEA) , & WADATS(I)%ASI(NSEA) ) +! + IF ( J.EQ.5 ) ALLOCATE ( WADATS(I)%MA0(NSEA) , & + WADATS(I)%MAI(NSEA) , & + WADATS(I)%MD0(NSEA) , & + WADATS(I)%MDI(NSEA) ) ! END IF ! IF ( INPMAP(I,J) .NE. 0 ) THEN - END DO ! DO J=JFIRST, 7 + END DO ! DO J=JFIRST, 9 ! INFLAGS1 = TFLAGS CALL W3SETI ( I, MDSE, MDST ) @@ -2520,7 +2529,7 @@ ! IF ( CPLINP(I) ) CYCLE ! - DO J=JFIRST, 4 + DO J=JFIRST, 6 IF ( INFLAGS1(J) ) THEN IDINP(-I,J) = IDSTR(J) CALL W3FLDO ('READ', IDINP(-I,J), MDSF(-I,J), MDST, & @@ -2537,7 +2546,7 @@ ! ! Skipping assimilation input files for now. ! - DO J=JFIRST, 7 + DO J=JFIRST, 9 IF ( MDSF(-I,J) .NE. -1 ) CALL WMUINQ & ( MDSE, MDST, MDSF(-I,J) ) END DO @@ -2545,7 +2554,7 @@ END DO ! DO I=1, NRGRD - DO J=JFIRST, 7 + DO J=JFIRST, 9 IF ( INPMAP(I,J).LT.0 .AND. INPMAP(I,J).NE.-999) IDINP(I,J) = IDINP( INPMAP(I,J),J) !IF ( INPMAP(I,J) .LT. 0 ) IDINP(I,J) = IDINP( INPMAP(I,J),J) IF ( INPMAP(I,J) .GT. 0 ) IDINP(I,J) = IDINP(-INPMAP(I,J),J) @@ -2946,10 +2955,13 @@ 3923 FORMAT ( ' Grids share output procs : ',A) ! 924 FORMAT (/' Input grid information : '/ & - ' nr extension lev. cur. wind ice data'/ & - ' -------------------------------------------------') - 925 FORMAT (1X,I3,1X,A10,4(1X,A6),3(1X,A1)) - 926 FORMAT ( ' -------------------------------------------------') + ' nr extension lev. cur. wind ice tau', & + ' rho data'/ & + ' ----------------------------------------------', & + '--------------') + 925 FORMAT (1X,I3,1X,A10,6(1X,A6),3(1X,A1)) + 926 FORMAT ( ' ----------------------------------------------', & + '--------------') ! 927 FORMAT (/' Grid for point output : '/ & ' nr extension '/ ' ---------------') @@ -2957,13 +2969,13 @@ 929 FORMAT ( ' ---------------') ! 930 FORMAT (/' Wave grid information : '/ & - ' nr extension lev. cur. wind ice data', & - ' move1 rnk grp dmp'/ & - ' -----------------------------------------------', & - '---------------------') - 931 FORMAT (1X,I3,1X,A10,4(1X,A6),3(1X,A1),2X,A4,2I4,3X,A1) + ' nr extension lev. cur. wind ice tau', & + ' rho data move1 rnk grp dmp'/ & + ' ----------------------------------------------', & + '-----------------------------------') + 931 FORMAT (1X,I3,1X,A10,6(1X,A6),3(1X,A1),2X,A4,2I4,3X,A1) 932 FORMAT ( ' -----------------------------------------------', & - '---------------------'/) + '-----------------------------------'/) 933 FORMAT ( ' ',A,' : '/ & ' nr grids (part of comm.)'/ & ' -----------------------------------------------', & @@ -3115,7 +3127,7 @@ !/T 15X,'GRID MDS(1-13)',43X,'NTRACE') !/T 9021 FORMAT (14X,16I4) !/T 9022 FORMAT ( ' TEST WMINIT : UNIT NUMBERS FOR INTPUT FILES'/ & -!/T 15X,'GRID MDSF(JFIRST-7)') +!/T 15X,'GRID MDSF(JFIRST-9)') !/T 9030 FORMAT ( ' TEST WMINIT : FILE EXTENSIONS, INPUT FLAGS,', & !/T ' RANK AND GROUP, PROC RANGE') !/T 9031 FORMAT ( ' ',I3,1X,A,20L2,2I4,2F6.2) @@ -3146,7 +3158,7 @@ !/T 9081 FORMAT ( ' MODEL AND TIME :',I4,I10.8,I8.6) !/T 9082 FORMAT ( ' STATUS AND TIMES :',I4,3(I10.8,I8.6)) !/T 9083 FORMAT ( ' TEST WMINIT : IDINP AFTER INITIALIZATION :') -!/T 9084 FORMAT ( ' ',I4,15(2X,A3)) +!/T 9084 FORMAT ( ' ',I4,17(2X,A3)) !/ !/ End of WMINIT ----------------------------------------------------- / !/ @@ -3165,7 +3177,7 @@ !/ | WAVEWATCH III NOAA/NCEP | !/ | H. L. Tolman | !/ | FORTRAN 90 | -!/ | Last update : 15-May-2018 | +!/ | Last update : 22-Mar-2021 | !/ +-----------------------------------+ !/ !/ 13-Jun-2005 : Origination. ( version 3.07 ) @@ -3209,6 +3221,7 @@ !/ Add ESMF override for STIME & ETIME ( version 6.02 ) !/ (T. J. Campbell, NRL) !/ 15-May-2018 : Update namelist ( version 6.05 ) +!/ 22-Mar-2021 : Add momentum and air density input ( version 7.xx ) !/ ! 1. Purpose : ! @@ -3304,7 +3317,7 @@ ! time by using /var/tmp/ for log files. ! See commented line at "OPEN (MDSO,FILE=..." ! -! - IDFLDS dimensioning is hardwired as IDFLDS(-7:7) where lowest possible +! - IDFLDS dimensioning is hardwired as IDFLDS(-7:9) where lowest possible ! value of JFIRST is JFIRST=-7 ! ! 8. Structure : @@ -3507,7 +3520,7 @@ REAL, ALLOCATABLE :: X(:), Y(:), AMOVE(:), DMOVE(:), & RP1(:), RPN(:) ! - LOGICAL :: FLT, TFLAGI, TFLAGS(-7:12), PSHARE + LOGICAL :: FLT, TFLAGI, TFLAGS(-7:14), PSHARE LOGICAL, ALLOCATABLE :: FLGRD(:,:,:), FLRBPI(:), BCDTMP(:), & USEINP(:), LPRT(:), FLGR2(:,:,:), & FLGD(:,:), FLG2(:,:), FLG2D(:,:), & @@ -3515,14 +3528,14 @@ ! CHARACTER(LEN=1) :: COMSTR CHARACTER(LEN=256) :: TMPLINE, TEST - CHARACTER(LEN=3) :: IDSTR(-7:7), IDTST + CHARACTER(LEN=3) :: IDSTR(-7:9), IDTST CHARACTER(LEN=5) :: STOUT, OUTSTR(6) CHARACTER(LEN=6) :: YESXX, XXXNO CHARACTER(LEN=6), & ALLOCATABLE :: ACTION(:) CHARACTER(LEN=8) :: LFILE, STTIME !/SHRD CHARACTER(LEN=9) :: TFILE - CHARACTER(LEN=13) :: STDATE, MN, TNAMES(7) + CHARACTER(LEN=13) :: STDATE, MN, TNAMES(9) CHARACTER(LEN=40) :: PN CHARACTER(LEN=13), & ALLOCATABLE :: INAMES(:,:), MNAMES(:) @@ -3531,7 +3544,7 @@ CHARACTER(LEN=12) :: FORMAT !/DIST CHARACTER(LEN=18) :: TFILE !/MPRF CHARACTER(LEN=18) :: PFILE - CHARACTER(LEN=13) :: IDFLDS(-7:7) + CHARACTER(LEN=13) :: IDFLDS(-7:9) CHARACTER(LEN=23) :: DTME21 CHARACTER(LEN=30) :: IDOTYP(8) CHARACTER(LEN=80) :: TNAME, LINE @@ -3549,6 +3562,7 @@ 'mud viscos. ' , & 'water levels ' , 'currents ' , & 'winds ' , 'ice fields ' , & + 'momentum ' , 'air density ' , & 'mean param. ' , '1D spectra ' , & '2D spectra ' / ! @@ -3563,7 +3577,8 @@ ! DATA IDSTR / 'IC1', 'IC2', 'IC3', 'IC4', 'IC5', & 'MDN', 'MTH', 'MVS', 'LEV', 'CUR', & - 'WND', 'ICE', 'DT0', 'DT1', 'DT2' / + 'WND', 'ICE', 'TAU', 'RHO', 'DT0', & + 'DT1', 'DT2' / ! DATA YESXX / 'YES/--' / DATA XXXNO / '---/NO' / @@ -3758,7 +3773,7 @@ ! ALLOCATE ( MDS(13,NRGRD), NTRACE(2,NRGRD), ODAT(40,0:NRGRD), & FLGRD(NOGRP,NGRPP,NRGRD), OT2(0:NRGRD), FLGD(NOGRP,NRGRD), & - MDSF(-NRINP:NRGRD,JFIRST:7), IPRT(6,NRGRD), LPRT(NRGRD), & + MDSF(-NRINP:NRGRD,JFIRST:9), IPRT(6,NRGRD), LPRT(NRGRD), & FLGR2(NOGRP,NGRPP,NRGRD),FLG2D(NOGRP,NGRPP), FLG1D(NOGRP), & FLG2(NOGRP,NRGRD) & ,OUTFF(7,0:NRGRD)) @@ -3807,7 +3822,7 @@ ! sources, and from communication rather than ! files. ! - ALLOCATE ( INAMES(2*NRGRD,-7:7), MNAMES(-NRINP:2*NRGRD), & + ALLOCATE ( INAMES(2*NRGRD,-7:9), MNAMES(-NRINP:2*NRGRD), & TMPRNK(2*NRGRD), TMPGRP(2*NRGRD), NINGRP(2*NRGRD), & RP1(2*NRGRD), RPN(2*NRGRD), BCDTMP(NRGRD+1:2*NRGRD)) ALLOCATE ( GRANK(NRGRD), GRGRP(NRGRD), USEINP(NRINP) ) @@ -3840,9 +3855,11 @@ INFLAGS1(2) = NML_INPUT_GRID(I)%FORCING%CURRENTS INFLAGS1(3) = NML_INPUT_GRID(I)%FORCING%WINDS INFLAGS1(4) = NML_INPUT_GRID(I)%FORCING%ICE_CONC - INFLAGS1(5) = NML_INPUT_GRID(I)%ASSIM%MEAN - INFLAGS1(6) = NML_INPUT_GRID(I)%ASSIM%SPEC1D - INFLAGS1(7) = NML_INPUT_GRID(I)%ASSIM%SPEC2D + INFLAGS1(5) = NML_INPUT_GRID(I)%FORCING%ATM_MOMENTUM + INFLAGS1(6) = NML_INPUT_GRID(I)%FORCING%AIR_DENSITY + INFLAGS1(7) = NML_INPUT_GRID(I)%ASSIM%MEAN + INFLAGS1(8) = NML_INPUT_GRID(I)%ASSIM%SPEC1D + INFLAGS1(9) = NML_INPUT_GRID(I)%ASSIM%SPEC2D END DO ! ! 3.a.2 Unified point output grid. @@ -3881,9 +3898,11 @@ INAMES(NRGRD+I,2) = NML_MODEL_GRID(I)%FORCING%CURRENTS INAMES(NRGRD+I,3) = NML_MODEL_GRID(I)%FORCING%WINDS INAMES(NRGRD+I,4) = NML_MODEL_GRID(I)%FORCING%ICE_CONC - INAMES(NRGRD+I,5) = NML_MODEL_GRID(I)%ASSIM%MEAN - INAMES(NRGRD+I,6) = NML_MODEL_GRID(I)%ASSIM%SPEC1D - INAMES(NRGRD+I,7) = NML_MODEL_GRID(I)%ASSIM%SPEC2D + INAMES(NRGRD+I,5) = NML_MODEL_GRID(I)%FORCING%ATM_MOMENTUM + INAMES(NRGRD+I,6) = NML_MODEL_GRID(I)%FORCING%AIR_DENSITY + INAMES(NRGRD+I,7) = NML_MODEL_GRID(I)%ASSIM%MEAN + INAMES(NRGRD+I,8) = NML_MODEL_GRID(I)%ASSIM%SPEC1D + INAMES(NRGRD+I,9) = NML_MODEL_GRID(I)%ASSIM%SPEC2D TMPRNK(NRGRD+I) = NML_MODEL_GRID(I)%RESOURCE%RANK_ID TMPGRP(NRGRD+I) = NML_MODEL_GRID(I)%RESOURCE%GROUP_ID RP1(NRGRD+I) = NML_MODEL_GRID(I)%RESOURCE%COMM_FRAC(1) @@ -3905,8 +3924,8 @@ I = I + 1 CALL W3SETI ( I, MDSE, MDST ) INFLAGS1 = .FALSE. -!/MGW INFLAGS1(8) = .TRUE. -!/MGP INFLAGS1(8) = .TRUE. +!/MGW INFLAGS1(10) = .TRUE. +!/MGP INFLAGS1(10) = .TRUE. INAMES(I,:)= INAMES(J,:) MNAMES(I) = MNAMES(J) TMPRNK(I) = TMPRNK(J) @@ -3924,13 +3943,13 @@ ! ! 3.a.5 Set input flags ! - ALLOCATE ( INPMAP(NRGRD,JFIRST:8), IDINP(-NRINP:NRGRD,JFIRST:8) ) + ALLOCATE ( INPMAP(NRGRD,JFIRST:10), IDINP(-NRINP:NRGRD,JFIRST:10) ) INPMAP = 0 IDINP = '---' ! DO I=1, NRGRD CALL W3SETI ( I, MDSE, MDST ) - DO J=JFIRST, 7 + DO J=JFIRST, 9 IF ( INAMES(I,J) .EQ. 'native' ) THEN ! *** forcing input from file & defined on the native grid *** INFLAGS1(J) = .TRUE. @@ -3971,7 +3990,7 @@ ! INFLAGS2 is initial value of INFLAGS1. Unlike INFLAGS1, ! it does not change during the simulation IF(.NOT. INFLAGS2(J)) INFLAGS2(J)=INFLAGS1(J) - END DO ! DO J=JFIRST, 7 + END DO ! DO J=JFIRST, 9 END DO ! DO I=1, NRGRD ! DO I=1, NRINP @@ -3987,7 +4006,7 @@ DO I=-NRINP, NRGRD IF ( I .EQ. 0 ) CYCLE CALL W3SETI ( I, MDSE, MDST ) - DO J=JFIRST, 7 + DO J=JFIRST, 9 IF ( I .GE. 1 ) THEN IF ( INPMAP(I,J) .LT. 0 ) CYCLE END IF @@ -4003,7 +4022,7 @@ !/T WRITE (MDST,9022) !/T DO I=-NRINP, NRGRD !/T IF ( I .EQ. 0 ) CYCLE -!/T WRITE (MDST,9021) I, MDSF(I,JFIRST:7) +!/T WRITE (MDST,9021) I, MDSF(I,JFIRST:9) !/T END DO ! ! 3.c Set rank and group data @@ -4101,18 +4120,18 @@ DO I=1, NRINP IF ( .NOT. USEINP(I) ) CYCLE CALL W3SETI ( -I, MDSE, MDST ) - ACTION(1:4) = '--- ' - DO J=JFIRST, 4 + ACTION(1:6) = '--- ' + DO J=JFIRST, 6 IF ( INFLAGS1(J) ) ACTION(J) = ' X ' END DO - ACTION(5:7) = '- ' - IF ( INFLAGS1(5) ) ACTION(5) = '1 ' - IF ( INFLAGS1(6) ) ACTION(6) = '2 ' - IF ( INFLAGS1(7) ) ACTION(7) = '3 ' + ACTION(7:9) = '- ' + IF ( INFLAGS1(7) ) ACTION(7) = '1 ' + IF ( INFLAGS1(8) ) ACTION(8) = '2 ' + IF ( INFLAGS1(9) ) ACTION(9) = '3 ' IF ( MDSS.NE.MDSO .AND. NMPSCR.EQ.IMPROC ) & - WRITE (MDSS,925) I, MNAMES(-I), ACTION(JFIRST:7) + WRITE (MDSS,925) I, MNAMES(-I), ACTION(JFIRST:9) IF ( NMPLOG .EQ. IMPROC ) & - WRITE (MDSO,925) I, MNAMES(-I), ACTION(JFIRST:7) + WRITE (MDSO,925) I, MNAMES(-I), ACTION(JFIRST:9) END DO IF ( MDSS.NE.MDSO .AND. NMPSCR.EQ.IMPROC ) WRITE (MDSS,926) IF ( NMPLOG .EQ. IMPROC ) WRITE (MDSO,926) @@ -4133,8 +4152,8 @@ IF ( NMPLOG .EQ. IMPROC ) WRITE (MDSO,930) DO I=1, NRGRD CALL W3SETI ( I, MDSE, MDST ) - ACTION(1:4) = '--- ' - DO J=JFIRST, 4 + ACTION(1:6) = '--- ' + DO J=JFIRST, 6 IF ( INFLAGS1(J) .AND. INPMAP(I,J) .EQ. 0 ) THEN ACTION(J) = 'native' ELSE IF ( INFLAGS1(J) .AND. INPMAP(I,J) .EQ. -999 ) THEN @@ -4145,22 +4164,22 @@ ACTION(J) = MNAMES( INPMAP(I,J)) END IF END DO - ACTION(5:9) = '- ' - IF ( INFLAGS1(5) ) ACTION(5) = '1 ' - IF ( INFLAGS1(6) ) ACTION(6) = '2 ' - IF ( INFLAGS1(7) ) ACTION(7) = '3 ' - IF ( INFLAGS1(8) ) THEN - ACTION(8) = 'yes ' + ACTION(7:11) = '- ' + IF ( INFLAGS1(7) ) ACTION(7) = '1 ' + IF ( INFLAGS1(8) ) ACTION(8) = '2 ' + IF ( INFLAGS1(9) ) ACTION(9) = '3 ' + IF ( INFLAGS1(10) ) THEN + ACTION(10) = 'yes ' ELSE - ACTION(8) = 'no ' + ACTION(10) = 'no ' END IF - IF ( BCDUMP(I) ) ACTION(9) = 'y ' + IF ( BCDUMP(I) ) ACTION(11) = 'y ' IF ( MDSS.NE.MDSO .AND. NMPSCR.EQ.IMPROC ) & - WRITE (MDSS,931) I, MNAMES(I), ACTION(1:8), GRANK(I), & - GRGRP(I), ACTION(9) + WRITE (MDSS,931) I, MNAMES(I), ACTION(1:10), GRANK(I), & + GRGRP(I), ACTION(11) IF ( NMPLOG .EQ. IMPROC ) & - WRITE (MDSO,931) I, MNAMES(I), ACTION(1:8), GRANK(I), & - GRGRP(I), ACTION(9) + WRITE (MDSO,931) I, MNAMES(I), ACTION(1:10), GRANK(I), & + GRGRP(I), ACTION(11) END DO IF ( MDSS.NE.MDSO .AND. NMPSCR.EQ.IMPROC ) WRITE (MDSS,932) IF ( NMPLOG .EQ. IMPROC ) WRITE (MDSO,932) @@ -4570,7 +4589,7 @@ ! the grids, because this is only intended for test cases. ! For true implementations, the jumping grid will be used. ! - IF ( INFLAGS1(8) ) THEN + IF ( INFLAGS1(10) ) THEN ! IF ( MDSS.NE.MDSO .AND. NMPSCR.EQ.IMPROC ) THEN WRITE (MDSS,965) @@ -5156,7 +5175,7 @@ ! ! ..... regular input files ! - DO J=JFIRST, 4 + DO J=JFIRST, 6 IF ( INFLAGS1(J) ) THEN IDINP(I,J) = IDSTR(J) IF ( INPMAP(I,J) .LT. 0 ) CYCLE @@ -5178,7 +5197,7 @@ ! ! ..... finalize file info data base ! - DO J=JFIRST, 7 + DO J=JFIRST, 9 IF ( MDSF(I,J) .NE. -1 ) CALL WMUINQ ( MDSE, MDST, MDSF(I,J) ) END DO ! @@ -5198,7 +5217,7 @@ TFLAGS = INFLAGS1 ! - DO J=JFIRST, 7 + DO J=JFIRST, 9 IF ( INPMAP(I,J) .NE. 0 ) THEN ! TFLAGS(J) = .TRUE. @@ -5218,6 +5237,11 @@ WADATS(I)%UDI(NSEA) , & WADATS(I)%AS0(NSEA) , & WADATS(I)%ASI(NSEA) ) +! + IF ( J.EQ.5 ) ALLOCATE ( WADATS(I)%MA0(NSEA) , & + WADATS(I)%MAI(NSEA) , & + WADATS(I)%MD0(NSEA) , & + WADATS(I)%MDI(NSEA) ) ! END IF END DO @@ -5410,7 +5434,7 @@ ! IF ( CPLINP(I) ) CYCLE ! - DO J=JFIRST, 4 + DO J=JFIRST, 6 IF ( INFLAGS1(J) ) THEN IDINP(-I,J) = IDSTR(J) CALL W3FLDO ('READ', IDINP(-I,J), MDSF(-I,J), MDST, & @@ -5427,7 +5451,7 @@ ! ! Skipping assimilation input files for now. ! - DO J=JFIRST, 7 + DO J=JFIRST, 9 IF ( MDSF(-I,J) .NE. -1 ) CALL WMUINQ & ( MDSE, MDST, MDSF(-I,J) ) END DO @@ -5435,7 +5459,7 @@ END DO ! DO I=1, NRGRD - DO J=JFIRST, 7 + DO J=JFIRST, 9 IF ( INPMAP(I,J) .LT. 0 ) IDINP(I,J) = IDINP( INPMAP(I,J),J) IF ( INPMAP(I,J) .GT. 0 ) IDINP(I,J) = IDINP(-INPMAP(I,J),J) END DO @@ -5847,10 +5871,13 @@ 3923 FORMAT ( ' Grids share output procs : ',A) ! 924 FORMAT (/' Input grid information : '/ & - ' nr extension lev. cur. wind ice data'/ & - ' -------------------------------------------------') - 925 FORMAT (1X,I3,1X,A10,4(1X,A6),3(1X,A1)) - 926 FORMAT ( ' -------------------------------------------------') + ' nr extension lev. cur. wind ice tau', & + ' rho data'/ & + ' ----------------------------------------------', & + '---------------') + 925 FORMAT (1X,I3,1X,A10,6(1X,A6),3(1X,A1)) + 926 FORMAT ( ' ----------------------------------------------', & + '---------------') ! 927 FORMAT (/' Grid for point output : '/ & ' nr extension '/ ' ---------------') @@ -5858,13 +5885,13 @@ 929 FORMAT ( ' ---------------') ! 930 FORMAT (/' Wave grid information : '/ & - ' nr extension lev. cur. wind ice data', & - ' move1 rnk grp dmp'/ & + ' nr extension lev. cur. wind ice tau', & + ' rho data move1 rnk grp dmp'/ & ' -----------------------------------------------', & - '---------------------') - 931 FORMAT (1X,I3,1X,A10,4(1X,A6),3(1X,A1),2X,A4,2I4,3X,A1) + '-----------------------------------') + 931 FORMAT (1X,I3,1X,A10,6(1X,A6),3(1X,A1),2X,A4,2I4,3X,A1) 932 FORMAT ( ' -----------------------------------------------', & - '---------------------'/) + '-----------------------------------'/) 933 FORMAT ( ' ',A,' : '/ & ' nr grids (part of comm.)'/ & ' -----------------------------------------------', & @@ -6022,7 +6049,7 @@ !/T 15X,'GRID MDS(1-13)',43X,'NTRACE') !/T 9021 FORMAT (14X,16I4) !/T 9022 FORMAT ( ' TEST WMINITNML : UNIT NUMBERS FOR INTPUT FILES'/ & -!/T 15X,'GRID MDSF(JFIRST-7)') +!/T 15X,'GRID MDSF(JFIRST-9)') !/T 9030 FORMAT ( ' TEST WMINITNML : FILE EXTENSIONS, INPUT FLAGS,', & !/T ' RANK AND GROUP, PROC RANGE') !/T 9031 FORMAT ( ' ',I3,1X,A,20L2,2I4,2F6.2) @@ -6051,7 +6078,7 @@ !/T 9081 FORMAT ( ' MODEL AND TIME :',I4,I10.8,I8.6) !/T 9082 FORMAT ( ' STATUS AND TIMES :',I4,3(I10.8,I8.6)) !/T 9083 FORMAT ( ' TEST WMINITNML : IDINP AFTER INITIALIZATION :') -!/T 9084 FORMAT ( ' ',I4,15(2X,A3)) +!/T 9084 FORMAT ( ' ',I4,17(2X,A3)) !/ !/ End of WMINITNML ----------------------------------------------------- / !/ diff --git a/model/ftn/wmmdatmd.ftn b/model/ftn/wmmdatmd.ftn index 0c9d9fc43..0d65e142a 100644 --- a/model/ftn/wmmdatmd.ftn +++ b/model/ftn/wmmdatmd.ftn @@ -7,7 +7,7 @@ !/ | WAVEWATCH III NOAA/NCEP | !/ | H. L. Tolman | !/ | FORTRAN 90 | -!/ | Last update : 06-Jun-2018 | +!/ | Last update : 22-Mar-2021 | !/ +-----------------------------------+ !/ !/ 13-Jun-2005 : Origination. ( version 3.07 ) @@ -31,6 +31,7 @@ !/ within allowed bounds. ( version 5.15 ) !/ 06-Jun-2018 : add subroutine INIT_GET_JSEA_ISPROC_GLOB/add PDLIB !/ ( version 6.04 ) +!/ 22-Mar-2021 : Support for air density input ( version 7.xx ) !/ !/ Copyright 2009-2012 National Weather Service (NWS), !/ National Oceanic and Atmospheric Administration. All rights @@ -121,6 +122,7 @@ ! and output for areas of grid overlap. ! IFLSTI L.A. Public FLags for last ice per grid. ! IFLSTL L.A. Public FLags for last level per grid. +! IFLSTR L.A. Public FLags for last air density per grid. ! ! MDATA TYPE Public Data structure for grid dependent data. ! MDATAS MDATA Public Array of data structures. @@ -154,6 +156,7 @@ ! Log. Public Flags for array initializations. ! FLLSTI Log. Public FLag for last ice per grid. ! FLLSTL Log. Public FLag for last level per grid. +! FLLSTR Log. Public FLag for last air density per grid. ! ! NMV Int. Public Number of moving grid data. ! TMV I.A. Public Moving grid times. @@ -316,7 +319,7 @@ REAL, ALLOCATABLE :: DTRES(:) LOGICAL :: FLGBDI=.FALSE., FLGHG1, FLGHG2 LOGICAL, ALLOCATABLE :: RESPEC(:,:), BCDUMP(:), & - IFLSTI(:), IFLSTL(:) + IFLSTI(:), IFLSTL(:), IFLSTR(:) CHARACTER(LEN=3), ALLOCATABLE :: IDINP(:,:) !/ !/ Data structures @@ -332,8 +335,8 @@ AMV(:,:), DMV(:,:) REAL, POINTER :: MAPBDI(:,:), MAPODI(:,:) !/PDLIB INTEGER, POINTER :: SEA_IPGL(:), SEA_IPGL_TO_PROC(:) - LOGICAL :: MINIT, MSKINI, FLLSTL, FLLSTI, & - FLDAT0, FLDAT1, FLDAT2 + LOGICAL :: MINIT, MSKINI, FLLSTL, FLLSTR, & + FLLSTI, FLDAT0, FLDAT1, FLDAT2 !/MPI LOGICAL :: FBCAST END TYPE MDATA ! @@ -386,7 +389,7 @@ AMV(:,:), DMV(:,:) REAL, POINTER :: MAPBDI(:,:), MAPODI(:,:) !/PDLIB INTEGER, POINTER :: SEA_IPGL(:), SEA_IPGL_TO_PROC(:) - LOGICAL, POINTER :: MINIT, FLLSTL, FLLSTI, & + LOGICAL, POINTER :: MINIT, FLLSTL, FLLSTR, FLLSTI, & FLDAT0, FLDAT1, FLDAT2 !/MPI LOGICAL, POINTER :: FBCAST !/ @@ -398,7 +401,7 @@ !/ | WAVEWATCH III NOAA/NCEP | !/ | H. L. Tolman | !/ | FORTRAN 90 | -!/ | Last update : 10-Dec-2014 ! +!/ | Last update : 22-Mar-2021 ! !/ +-----------------------------------+ !/ !/ 22-Feb-2005 : Origination. ( version 3.07 ) @@ -409,6 +412,7 @@ !/ 12-Jan-2007 : Add FLSTI and FLLSTL. ( version 3.10 ) !/ 22-Jan-2007 : Add NAVMAX. ( version 3.10 ) !/ 10-Dec-2014 : Add checks for allocate status ( version 5.04 ) +!/ 22-Mar-2021 : Support for air density input ( version 7.xx ) !/ ! 1. Purpose : ! @@ -483,7 +487,7 @@ ALLOCATE ( MDATAS(NGRIDS), BPSTGE(NGRIDS,NGRIDS), & HGSTGE(NGRIDS,NGRIDS), EQSTGE(NGRIDS,NGRIDS), & BCDUMP(NRGRD), IFLSTI(NRINP), IFLSTL(NRINP), & - STAT=ISTAT ) + IFLSTR(NRINP), STAT=ISTAT ) CHECK_ALLOC_STATUS ( ISTAT ) !/MPI ALLOCATE ( NBISTA(NGRIDS), HGHSTA(NGRIDS), EQLSTA(NGRIDS), & !/MPI STAT=ISTAT ) @@ -499,6 +503,7 @@ ! IFLSTI = .FALSE. IFLSTL = .FALSE. + IFLSTR = .FALSE. ! DO I=1, NGRIDS MDATAS(I)%MINIT = .FALSE. @@ -890,10 +895,11 @@ !/ | WAVEWATCH III NOAA/NCEP | !/ | H. L. Tolman | !/ | FORTRAN 90 | -!/ | Last update : 13-Jun-2005 ! +!/ | Last update : 22-Mar-2021 ! !/ +-----------------------------------+ !/ -!/ 13-Jun-2005 : Origination. ( version 3.07 ) +!/ 13-Jun-2005 : Origination. ( version 3.07 ) +!/ 22-Mar-2021 : Support for air density input ( version 7.xx ) !/ ! 1. Purpose : ! @@ -996,6 +1002,7 @@ MINIT => MDATAS(IMOD)%MINIT FLLSTL => MDATAS(IMOD)%FLLSTL FLLSTI => MDATAS(IMOD)%FLLSTI + FLLSTR => MDATAS(IMOD)%FLLSTR MAPBDI => MDATAS(IMOD)%MAPBDI MAPODI => MDATAS(IMOD)%MAPODI !/PDLIB SEA_IPGL => MDATAS(IMOD)%SEA_IPGL diff --git a/model/ftn/wmupdtmd.ftn b/model/ftn/wmupdtmd.ftn index e5c808682..fd09721e2 100644 --- a/model/ftn/wmupdtmd.ftn +++ b/model/ftn/wmupdtmd.ftn @@ -6,7 +6,7 @@ !/ | WAVEWATCH III NOAA/NCEP | !/ | H. L. Tolman | !/ | FORTRAN 90 | -!/ | Last update : 20-Jan-2017 | +!/ | Last update : 22-Mar-2021 | !/ +-----------------------------------+ !/ !/ 22-Feb-2005 : Origination. ( version 3.07 ) @@ -23,6 +23,7 @@ !/ (T. J. Campbell, NRL) !/ 01-Jul-2019 : Generalize output to curv grids ( version 7.XX ) !/ (R. Padilla-Hernandez, J.H. Alves, EMC/NOAA) +!/ 22-Mar-2021 : Add momentum and air density input ( version 7.xx ) !/ !/ Copyright 2009 National Weather Service (NWS), !/ National Oceanic and Atmospheric Administration. All rights @@ -82,7 +83,7 @@ !/ | WAVEWATCH III NOAA/NCEP | !/ | H. L. Tolman | !/ | FORTRAN 90 | -!/ | Last update : 20-Jan-2017 | +!/ | Last update : 22-Mar-2021 | !/ +-----------------------------------+ !/ !/ 22-Feb-2005 : Origination. ( version 3.07 ) @@ -90,6 +91,7 @@ !/ 12-Jan-2007 : General clean-up and bug fixes. ( version 3.10 ) !/ 20-Jan-2017 : Enable using input from coupler ( version 6.02 ) !/ (T. J. Campbell, NRL) +!/ 22-Mar-2021 : Add momentum and air density input ( version 7.xx ) !/ ! 1. Purpose : ! @@ -134,7 +136,7 @@ ! ! 7. Remarks : ! -! - IDFLDS dimensioning is hardwired as IDFLDS(-7:7) where +! - IDFLDS dimensioning is hardwired as IDFLDS(-7:9) where ! lowest possible value of JFIRST is JFIRST=-7 ! ! 8. Structure : @@ -161,13 +163,14 @@ USE W3GDATMD, ONLY: NX, NY, FILEXT USE W3WDATMD, ONLY: TIME - USE W3IDATMD, ONLY: INFLAGS1, TLN, TC0, TCN, TW0, TWN, TIN, T0N, & - T1N, T2N, TG0, TGN, TFN, TDN, TTN, TVN, & - TZN, TI1, TI2, TI3, TI4, TI5, JFIRST + USE W3IDATMD, ONLY: INFLAGS1, TLN, TC0, TCN, TW0, TWN, TU0, & + TUN, TIN, T0N, T1N, T2N, TG0, TGN, TFN, & + TDN, TTN, TVN, TZN, TI1, TI2, TI3, TI4, & + TI5, JFIRST USE WMMDATMD, ONLY: IMPROC, MDSO, MDSS, MDST, MDSE, NMPSCR, & - NMPERR, ETIME, FLLSTL, FLLSTI, INPMAP, & - IDINP, IFLSTI, IFLSTL + NMPERR, ETIME, FLLSTL, FLLSTR, FLLSTI, & + INPMAP, IDINP, IFLSTI, IFLSTL, IFLSTR !/ IMPLICIT NONE !/ @@ -184,7 +187,7 @@ !/S INTEGER, SAVE :: IENT = 0 REAL :: DTTST LOGICAL :: FIRST - CHARACTER(LEN=13) :: IDFLDS(-7:8) + CHARACTER(LEN=13) :: IDFLDS(-7:10) CHARACTER(LEN=23) :: DTME21 ! DATA IDFLDS / 'ice param. 1 ' , 'ice param. 2 ' , & @@ -194,6 +197,7 @@ 'mud viscos. ' , & 'water levels ' , 'currents ' , & 'winds ' , 'ice fields ' , & + 'momentum ' , 'air density ' , & 'mean param. ' , '1D spectra ' , & '2D spectra ' , 'grid speed ' / !/ @@ -219,6 +223,7 @@ ! FLLSTL = .FALSE. FLLSTI = .FALSE. + FLLSTR = .FALSE. IERR = 0 ! ! 0.c Output @@ -241,15 +246,17 @@ !/T WRITE (MDST,9003) 2, IDINP(IMOD,2), INFLAGS1(2), TC0, TCN !/T WRITE (MDST,9003) 3, IDINP(IMOD,3), INFLAGS1(3), TW0, TWN !/T WRITE (MDST,9002) 4, IDINP(IMOD,4), INFLAGS1(4), TIN -!/T WRITE (MDST,9002) 5, IDINP(IMOD,5), INFLAGS1(5), T0N -!/T WRITE (MDST,9002) 6, IDINP(IMOD,6), INFLAGS1(6), T1N -!/T WRITE (MDST,9002) 7, IDINP(IMOD,7), INFLAGS1(7), T2N -!/T WRITE (MDST,9003) 8, 'MOV' , INFLAGS1(8), TG0, TGN +!/T WRITE (MDST,9003) 5, IDINP(IMOD,5), INFLAGS1(5), TU0, TUN +!/T WRITE (MDST,9002) 6, IDINP(IMOD,6), INFLAGS1(6), TRN +!/T WRITE (MDST,9002) 7, IDINP(IMOD,7), INFLAGS1(7), T0N +!/T WRITE (MDST,9002) 8, IDINP(IMOD,8), INFLAGS1(8), T1N +!/T WRITE (MDST,9002) 9, IDINP(IMOD,9), INFLAGS1(9), T2N +!/T WRITE (MDST,9003) 10, 'MOV' , INFLAGS1(10), TG0, TGN !/T WRITE (MDST,9004) 'GRD', NX, NY ! ! 1. Loop over input types ------------------------------------------ / ! - DO J=JFIRST, 8 + DO J=JFIRST, 10 ! ! 1.a Check if update needed ! @@ -297,7 +304,8 @@ DTTST = 0. ELSE IF ( FIRST .OR. ( J.EQ.1 .AND. IFLSTL(-JJ) ) & - .OR. ( J.EQ.4 .AND. IFLSTI(-JJ) ) ) THEN + .OR. ( J.EQ.4 .AND. IFLSTI(-JJ) ) & + .OR. ( J.EQ.6 .AND. IFLSTR(-JJ) ) ) THEN DTTST = 1. ELSE DTTST = DSEC21 ( TIME , TFN(:,J) ) @@ -306,6 +314,7 @@ ! IF ( J .EQ. 1 ) FLLSTL = IFLSTL(-JJ) IF ( J .EQ. 4 ) FLLSTI = IFLSTI(-JJ) + IF ( J .EQ. 6 ) FLLSTR = IFLSTR(-JJ) ! !/T WRITE (MDST,9031) J, IDINP(JJ,J), DTTST, TFN(:,J) ! @@ -321,6 +330,7 @@ ! IF ( J .EQ. 1 ) IFLSTL(-JJ) = FLLSTL IF ( J .EQ. 4 ) IFLSTI(-JJ) = FLLSTI + IF ( J .EQ. 6 ) IFLSTR(-JJ) = FLLSTR ! END IF ! @@ -362,11 +372,12 @@ ! TDATA = ETIME ! - DO J=JFIRST, 8 + DO J=JFIRST, 10 IF ( .NOT. INFLAGS1(J) ) CYCLE DTTST = DSEC21 ( TFN(:,J) , TDATA ) IF ( DTTST.GT.0. .AND. .NOT. ( (FLLSTL .AND. J.EQ.1) .OR. & - (FLLSTI .AND. J.EQ.4) ) ) THEN + (FLLSTI .AND. J.EQ.4) .OR. & + (FLLSTR .AND. J.EQ.6) ) ) THEN TDATA = TFN(:,J) END IF END DO @@ -375,7 +386,7 @@ ! TDN = TDATA CALL TICK21 ( TDN, 1. ) - DO J=5, 7 + DO J=7, 9 IF ( INFLAGS1(J) ) THEN DTTST = DSEC21 ( TFN(:,J) , TDN ) IF ( DTTST.GT.0. ) TDN = TFN(:,J) @@ -397,10 +408,12 @@ !/T WRITE (MDST,9072) 2, IDINP(IMOD,2), INFLAGS1(2), TC0, TCN !/T WRITE (MDST,9072) 3, IDINP(IMOD,3), INFLAGS1(3), TW0, TWN !/T WRITE (MDST,9071) 4, IDINP(IMOD,4), INFLAGS1(4), TIN -!/T WRITE (MDST,9071) 5, IDINP(IMOD,5), INFLAGS1(5), T0N -!/T WRITE (MDST,9071) 6, IDINP(IMOD,6), INFLAGS1(6), T1N -!/T WRITE (MDST,9073) 7, IDINP(IMOD,7), INFLAGS1(7), T2N, TDN -!/T WRITE (MDST,9072) 8, 'MOV' , INFLAGS1(8), TG0, TGN +!/T WRITE (MDST,9072) 5, IDINP(IMOD,5), INFLAGS1(5), TU0, TUN +!/T WRITE (MDST,9071) 6, IDINP(IMOD,6), INFLAGS1(6), TRN +!/T WRITE (MDST,9071) 7, IDINP(IMOD,7), INFLAGS1(7), T0N +!/T WRITE (MDST,9071) 8, IDINP(IMOD,8), INFLAGS1(8), T1N +!/T WRITE (MDST,9073) 9, IDINP(IMOD,9), INFLAGS1(9), T2N, TDN +!/T WRITE (MDST,9072) 10, 'MOV' , INFLAGS1(10), TG0, TGN ! RETURN ! @@ -446,10 +459,11 @@ !/ | WAVEWATCH III NOAA/NCEP | !/ | H. L. Tolman | !/ | FORTRAN 90 | -!/ | Last update : 07-Oct-2006 | +!/ | Last update : 22-Mar-2021 | !/ +-----------------------------------+ !/ !/ 07-Oct-2006 : Origination. ( version 3.10 ) +!/ 22-Mar-2021 : Add momentum and air density input ( version 7.xx ) !/ ! 1. Purpose : ! @@ -513,15 +527,15 @@ USE W3GDATMD, ONLY: NX, NY USE W3WDATMD, ONLY: TIME USE W3IDATMD, ONLY: TLN, WLEV, TC0, TCN, CX0, CXN, CY0, CYN, & - TW0, TWN, WX0, WXN, WY0, WYN, DT0, DTN, & - TIN, ICEI, T0N, T1N, T2N, TDN, INFLAGS1, & - TG0, TGN, GA0, GD0, GAN, GDN, BERGI, & - TTN, MUDT, TVN, MUDV, TZN, MUDD, & - TI1, TI2, TI3, TI4, TI5, & - ICEP1, ICEP2,ICEP3, ICEP4, ICEP5 + TW0, TWN, TU0, TUN, WX0, WXN, WY0, WYN, & + DT0, DTN, TIN, TRN, ICEI, UX0, UXN, UY0, & + UYN, RAIR, T0N, T1N, T2N, TDN, INFLAGS1, & + TG0, TGN, GA0, GD0, GAN, GDN, BERGI, TTN, & + MUDT, TVN, MUDV, TZN, MUDD, TI1, TI2, TI3, & + TI4, TI5, ICEP1, ICEP2,ICEP3, ICEP4, ICEP5 USE WMMDATMD, ONLY: IMPROC, NMPERR, MDST, MDSE, MDSF, ETIME, & - FLLSTL, FLLSTI, RCLD, NDT, DATA0, DATA1, & - DATA2, NMV, NMVMAX, TMV, AMV, DMV + FLLSTL, FLLSTI, FLLSTR, RCLD, NDT, DATA0, & + DATA1, DATA2, NMV, NMVMAX, TMV, AMV, DMV !/ IMPLICIT NONE !/ @@ -642,9 +656,24 @@ XXX, XXX, XXX, TIN, XXX , BERGI, ICEI, IERR) IF ( IERR .LT. 0 ) FLLSTI = .TRUE. ! -! 5. Data type 0 ---------------------------------------------------- / +! 5. Momentum ------------------------------------------------------- / ! CASE (5) + CALL W3FLDG ('READ', IDSTR, MDSF(IMOD,J), MDST, MDSEN, & + NX, NY, NX, NY, TIME, ETIME, TU0, & + UX0, UY0, XXX, TUN, UXN, UYN, XXX, IERR) +! +! 6. Air density ---------------------------------------------------- / +! + CASE (6) + CALL W3FLDG ('READ', IDSTR, MDSF(IMOD,J), MDST, MDSEN, & + NX, NY, NX, NY, TIME, ETIME, DTIME, & + XXX, XXX, XXX, TRN, XXX, XXX, RAIR, IERR) + IF ( IERR .LT. 0 ) FLLSTR = .TRUE. +! +! 7. Data type 0 ---------------------------------------------------- / +! + CASE (7) CALL W3FLDD ('SIZE', IDSTR, MDSF(IMOD,J), MDST, MDSEN, & TIME, T0N, RCLD(1), NDT(1), NDTNEW, & DATA0, IERR ) @@ -661,9 +690,9 @@ NDTNEW, DATA0, IERR ) END IF ! -! 6. Data type 1 ---------------------------------------------------- / +! 8. Data type 1 ---------------------------------------------------- / ! - CASE ( 6 ) + CASE ( 8 ) CALL W3FLDD ('SIZE', IDSTR, MDSF(IMOD,J), MDST, MDSEN, & TIME, T1N, RCLD(2), NDT(2), NDTNEW, & DATA1, IERR ) @@ -680,9 +709,9 @@ NDTNEW, DATA1, IERR ) END IF ! -! 7. Data type 2 ---------------------------------------------------- / +! 9. Data type 2 ---------------------------------------------------- / ! - CASE ( 7 ) + CASE ( 9 ) CALL W3FLDD ('SIZE', IDSTR, MDSF(IMOD,J), MDST, MDSEN, & TIME, T2N, RCLD(3), NDT(3), NDTNEW, & DATA2, IERR ) @@ -699,15 +728,15 @@ NDTNEW, DATA2, IERR ) END IF ! -! 8. Moving grid data ----------------------------------------------- / +! 10. Moving grid data ---------------------------------------------- / ! - CASE ( 8 ) + CASE ( 10 ) ! notes: ! SUBROUTINE W3FLDM in w3fldsmd.ftn : -!< INTEGER, INTENT(INOUT) :: NH, THO(2,4,NHM), TF0(2), TFN(2) -!> INTEGER, INTENT(INOUT) :: NH, THO(2,-7:4,NHM), TF0(2), TFN(2) -!< REAL, INTENT(INOUT) :: HA(NHM,4), HD(NHM,4), A0, AN, D0, DN -!> REAL, INTENT(INOUT) :: HA(NHM,-7:4), HD(NHM,-7:4), A0, AN, D0, DN +!< INTEGER, INTENT(INOUT) :: NH, THO(2,6,NHM), TF0(2), TFN(2) +!> INTEGER, INTENT(INOUT) :: NH, THO(2,-7:6,NHM), TF0(2), TFN(2) +!< REAL, INTENT(INOUT) :: HA(NHM,6), HD(NHM,6), A0, AN, D0, DN +!> REAL, INTENT(INOUT) :: HA(NHM,-7:6), HD(NHM,-7:6), A0, AN, D0, DN ! Arguments # ! THO 8 ! HA 9 @@ -736,11 +765,12 @@ !/ | WAVEWATCH III NOAA/NCEP | !/ | H. L. Tolman | !/ | FORTRAN 90 | -!/ | Last update : 10-Dec-2006 | +!/ | Last update : 22-Mar-2021 | !/ +-----------------------------------+ !/ !/ 14-Oct-2006 : Origination. ( version 3.10 ) !/ 10-Dec-2006 : Bug fix WMUPD2 initial fields. ( version 3.10 ) +!/ 22-Mar-2021 : Add momentum and air density input ( version 7.xx ) !/ ! 1. Purpose : ! @@ -792,6 +822,8 @@ ! !/CRX2 Current exenrgy conservation. ! ! !/WNX0 Wind vector component conservation. +! !/WNX1 Wind speed conservation. +! !/WNX2 Wind exenrgy conservation. ! ! !/S Enable subroutine tracing. ! !/T Enable test output @@ -819,7 +851,7 @@ !/ ------------------------------------------------------------------- / !/ Local parameters !/ - INTEGER :: ICONSC, ICONSW + INTEGER :: ICONSC, ICONSW, ICONSU !/S INTEGER, SAVE :: IENT = 0 !/ !/ ------------------------------------------------------------------- / @@ -839,6 +871,9 @@ !/WNX0 ICONSW = 0 !/WNX1 ICONSW = 1 !/WNX2 ICONSW = 2 +!/WNX0 ICONSU = 0 +!/WNX1 ICONSU = 1 +!/WNX2 ICONSU = 2 ! ! 1. Shift fields ( currents and winds only ) ------------------------ / ! @@ -866,6 +901,18 @@ INPUTS(IMOD)%DT0 = INPUTS(IMOD)%DTN !/T WRITE (MDST,9010) J, INPUTS(IMOD)%TFN(:,J) !/T ELSE +!/T WRITE (MDST,9011) J + END IF +! +! 1.c Momentum +! + CASE (5) + IF ( INPUTS(IMOD)%TFN(1,J) .GT. 0 ) THEN + INPUTS(IMOD)%TU0(:) = INPUTS(IMOD)%TFN(:,J) + INPUTS(IMOD)%UX0 = INPUTS(IMOD)%UXN + INPUTS(IMOD)%UY0 = INPUTS(IMOD)%UYN +!/T WRITE (MDST,9010) J, INPUTS(IMOD)%TFN(:,J) +!/T ELSE !/T WRITE (MDST,9011) J END IF ! @@ -960,20 +1007,33 @@ ( IMOD, INPUTS(IMOD)%BERGI, & JMOD, INPUTS(JMOD)%BERGI, 0. ) ! -! 2.e Assimilation data 0 +! 2.e Momentum ! CASE (5) - GOTO 2999 + CALL WMUPDV ( IMOD, INPUTS(IMOD)%UXN, INPUTS(IMOD)%UYN, & + JMOD, INPUTS(JMOD)%UXN, INPUTS(JMOD)%UYN, & + 0., ICONSU ) ! -! 2.f Assimilation data 1 +! 2.f Air density ! CASE (6) - GOTO 2999 + CALL WMUPDS ( IMOD, INPUTS(IMOD)%RAIR, & + JMOD, INPUTS(JMOD)%RAIR, 0. ) ! -! 2.g Assimilation data 2 +! 2.g Assimilation data 0 ! CASE (7) GOTO 2999 +! +! 2.h Assimilation data 1 +! + CASE (8) + GOTO 2999 +! +! 2.i Assimilation data 2 +! + CASE (9) + GOTO 2999 ! END SELECT ! @@ -1011,6 +1071,20 @@ ( IMOD, INPUTS(IMOD)%DT0, & JMOD, INPUTS(JMOD)%DT0, 0. ) END IF +! +! 3.c Momentum +! + CASE (5) + IF ( INPUTS(IMOD)%TU0(1) .LT. 0 ) THEN + INPUTS(IMOD)%TU0(:) = INPUTS(JMOD)%TU0(:) +!/T WRITE (MDST,9030) J, INPUTS(IMOD)%TU0(:) +!/WNX0 ICONSU = 0 +!/WNX1 ICONSU = 1 +!/WNX2 ICONSU = 2 + CALL WMUPDV ( IMOD, INPUTS(IMOD)%UX0, INPUTS(IMOD)%UY0, & + JMOD, INPUTS(JMOD)%UX0, INPUTS(JMOD)%UY0, & + 0., ICONSU ) + END IF ! END SELECT ! diff --git a/model/ftn/wmwavemd.ftn b/model/ftn/wmwavemd.ftn index 3a5d5d8e4..87c68ea51 100644 --- a/model/ftn/wmwavemd.ftn +++ b/model/ftn/wmwavemd.ftn @@ -6,7 +6,7 @@ !/ | WAVEWATCH III NOAA/NCEP | !/ | H. L. Tolman | !/ | FORTRAN 90 | -!/ | Last update : 28-Jan-2014 | +!/ | Last update : 22-Mar-2021 | !/ +-----------------------------------+ !/ !/ 13-Jun-2005 : Origination. ( version 3.07 ) @@ -24,6 +24,7 @@ !/ 20-Aug-2010 : Fix MAPSTA/MAPST2 bug. ( version 3.14.6 ) !/ 12-Mar-2012 : Use MPI_COMM_NULL for checks. ( version 3.14 ) !/ 28-Jan-2014 : Add memory hwm to profiling. ( version 5.00 ) +!/ 22-Mar-2021 : Support for air density input ( version 7.xx ) !/ !/ Copyright 2009-2014 National Weather Service (NWS), !/ National Oceanic and Atmospheric Administration. All rights @@ -74,7 +75,7 @@ !/ | WAVEWATCH III NOAA/NCEP | !/ | H. L. Tolman | !/ | FORTRAN 90 | -!/ | Last update : 28-Jan-2014 | +!/ | Last update : 22-Mar-2021 | !/ +-----------------------------------+ !/ !/ 13-Jun-2005 : Origination. ( version 3.07 ) @@ -91,6 +92,7 @@ !/ 20-Aug-2010 : Fix MAPSTA/MAPST2 bug sec. 9.a. ( version 3.14.6 ) !/ 12-Mar-2012 : Use MPI_COMM_NULL for checks. ( version 3.14 ) !/ 28-Jan-2014 : Add memory hwm to profiling. ( version 5.00 ) +!/ 22-Mar-2021 : Support for air density input ( version 7.xx ) !/ ! 1. Purpose : ! @@ -215,8 +217,8 @@ STIME, ETIME, NMV, TMV, AMV, DMV, & NRGRD, NRGRP, GRANK, INGRP, GRDHGH, GRDEQL, & GRDLOW, TSYNC, TMAX, TOUTP, TDATA, GRSTAT, & - FLLSTL, FLLSTI, DTRES, FLGHG1, FLGHG2, & - MAPMSK + FLLSTL, FLLSTI, FLLSTR, DTRES, FLGHG1, & + FLGHG2, MAPMSK !/MPI USE WMMDATMD, ONLY: MPI_COMM_MWAVE, MPI_COMM_GRD, & !/MPI MPI_COMM_BCT, CROOT, FBCAST !/MPRF USE WMMDATMD, ONLY: MDSP @@ -757,6 +759,7 @@ CALL W3WAVE ( I, DUMMY2, TSYNC(:,I), .FALSE., .TRUE. ) IF ( FLLSTL ) INFLAGS1(1) = .FALSE. IF ( FLLSTI ) INFLAGS1(4) = .FALSE. + IF ( FLLSTR ) INFLAGS1(6) = .FALSE. ! ! 5.b Stage data for grids with equal rank ! @@ -1032,6 +1035,7 @@ ! IF ( FLLSTL ) INFLAGS1(1) = .FALSE. IF ( FLLSTI ) INFLAGS1(4) = .FALSE. + IF ( FLLSTR ) INFLAGS1(6) = .FALSE. ! ! 9.c Update TOUPT ! diff --git a/model/ftn/ww3_gint.ftn b/model/ftn/ww3_gint.ftn index 57c5862ac..ba5dc41bb 100644 --- a/model/ftn/ww3_gint.ftn +++ b/model/ftn/ww3_gint.ftn @@ -6,7 +6,7 @@ !/ | WAVEWATCH-III NOAA/NCEP | !/ | A. Chawla |SX !/ | FORTRAN 90 | -!/ | Last update : 31-Aug-2018 | +!/ | Last update : 22-Mar-2021 | !/ +-----------------------------------+ !/ !/ 15-Mar-2007 : Origination. ( version 3.13 ) @@ -20,6 +20,7 @@ !/ (F.Ardhuin, M.Accensi, J.H.Alves) ( version 6.05 ) !/ 31-Aug-2018 : Update groups 2,4,6,8 (S. Zieger) ( version 6.05 ) !/ 26-Jan-2021 : Added TP field (derived from FP) ( version 7.12 ) +!/ 22-Mar-2021 : New coupling fields output ( version 7.xx ) !/ ! 1. Purpose : ! @@ -95,7 +96,8 @@ USE W3ODATMD, ONLY : W3NOUT, W3SETO USE W3IDATMD USE W3WDATMD, ONLY : W3NDAT, W3DIMW, W3SETW - USE W3WDATMD, ONLY : WDATAS, TIME, WLV, ICE, ICEH, ICEF, UST, USTDIR, ASF + USE W3WDATMD, ONLY : WDATAS, TIME, WLV, ICE, ICEH, ICEF, & + UST, USTDIR, ASF, RHOAIR USE W3SERVMD, ONLY : ITRACE, NEXTLN, EXTCDE !/S USE W3SERVMD, ONLY : STRACE USE W3ARRYMD, ONLY : PRTBLK @@ -907,13 +909,14 @@ !/ | WAVEWATCH-III NOAA/NCEP | !/ | A. Chawla | !/ | FORTRAN 90 | -!/ | Last update : 27-Aug-2015 | +!/ | Last update : 22-Mar-2021 | !/ +-----------------------------------+ !/ !/ 09-Jul-2009 : Original code ( version 3.14 ) !/ 21-Feb-2013 : Modified to new output structure ( version 4.11 ) !/ 30-Apr-2014 : Add group 3 ( version 5.00 ) !/ 27-Aug-2015 : ice thick. and floe added as output ( version 5.10 ) +!/ 22-Mar-2021 : New coupling fields output ( version 7.xx ) !/ ! 1. Purpose : ! @@ -970,13 +973,14 @@ ! Local group 1 variables REAL :: DWAUX, CXAUX, CYAUX, UAAUX, UDAUX, ASAUX, & WLVAUX, ICEAUX, ICEHAUX, ICEFAUX, BERGAUX, & - SED_D50AUX, SUMWT1(NOGE(1)) + SED_D50AUX, RHOAIRAUX, TAUAAUX, TAUADIRAUX, & + SUMWT1(NOGE(1)) ! Local group 2 variables REAL :: HSAUX, WLMAUX, T02AUX, T0M1AUX, T01AUX, & FP0AUX, THMAUX1, THMAUX2, THSAUX, THP0AUX1, & THP0AUX2, HSIGAUX, STMAXEAUX,STMAXDAUX, & HMAXEAUX, HCMAXEAUX, HMAXDAUX, HCMAXDAUX, & - WBTAUX, SUMWT2(NOGE(2)) + WBTAUX, WNMEANAUX, SUMWT2(NOGE(2)) ! Local group 3 variables REAL :: EFAUX(E3DF(2,1):E3DF(3,1)), & TH1MAUX(E3DF(2,2):E3DF(3,2)), & @@ -1011,6 +1015,7 @@ BHDAUX, PHIOCAUX, TUSXAUX, TUSYAUX, USSXAUX, & USSYAUX, PRMSAUX, TPMSAUX, SUMWT6(NOGE(6)), & TAUICEAUX(2), PHICEAUX, & + TAUOCXAUX, TAUOCYAUX, & US3DAUX(2*NK), SUMWT68(2*NK), & P2SMSAUX(P2MSF(2):P2MSF(3)), & SUMWT69(P2MSF(2):P2MSF(3)), & @@ -1042,6 +1047,9 @@ WLV = UNDEF ICE = UNDEF BERG = UNDEF + RHOAIR = UNDEF + TAUA = UNDEF + TAUADIR = UNDEF !/BT4 SED_D50 = UNDEF !/IS2 ICEH = UNDEF !/IS2 ICEF = UNDEF @@ -1065,6 +1073,7 @@ HMAXD = UNDEF HCMAXD = UNDEF WBT = UNDEF + WNMEAN = UNDEF ! ! Group 3 variables ! @@ -1121,6 +1130,8 @@ TUSY = UNDEF USSX = UNDEF USSY = UNDEF + TAUOCX = UNDEF + TAUOCY = UNDEF PRMS = UNDEF TPMS = UNDEF IF ( US3DF(1).GT.0 ) THEN @@ -1273,6 +1284,9 @@ SED_D50AUX = UNDEF ICEHAUX = UNDEF ICEFAUX = UNDEF + RHOAIRAUX = UNDEF + TAUAAUX = UNDEF + TAUADIRAUX = UNDEF SUMWT1 = 0 ! ! Group 2 variables @@ -1296,6 +1310,7 @@ HMAXDAUX = UNDEF HCMAXDAUX = UNDEF WBTAUX = UNDEF + WNMEANAUX = UNDEF SUMWT2 = 0 ! ! Group 3 variables @@ -1363,6 +1378,8 @@ TUSYAUX = UNDEF USSXAUX = UNDEF USSYAUX = UNDEF + TAUOCXAUX = UNDEF + TAUOCYAUX = UNDEF PRMSAUX = UNDEF TPMSAUX = UNDEF P2SMSAUX = UNDEF @@ -1495,9 +1512,33 @@ END IF END IF ! -!/BT4 IF ( FLOGRD(1,8) ) THEN + IF ( FLOGRD(1,8) ) THEN + IF ( WADATS(IGRID)%TAUA(GSEA) .NE. UNDEF ) THEN + SUMWT1(8) = SUMWT1(8) + WT + IF ( TAUAAUX .EQ. UNDEF ) THEN + TAUAAUX = WADATS(IGRID)%TAUA(GSEA)*WT + TAUADIRAUX = WADATS(IGRID)%TAUADIR(GSEA)*WT + ELSE + TAUAAUX = TAUAAUX + WADATS(IGRID)%TAUA(GSEA)*WT + TAUADIRAUX = TAUADIRAUX + WADATS(IGRID)%TAUADIR(GSEA)*WT + END IF + END IF + END IF +! + IF ( FLOGRD(1,9) .AND. ACTIVE ) THEN + IF ( WDATAS(IGRID)%RHOAIR(GSEA) .NE. UNDEF ) THEN + SUMWT1(9) = SUMWT1(9) + WT + IF ( RHOAIRAUX .EQ. UNDEF ) THEN + RHOAIRAUX = WDATAS(IGRID)%RHOAIR(GSEA)*WT + ELSE + RHOAIRAUX = RHOAIRAUX + WDATAS(IGRID)%RHOAIR(GSEA)*WT + END IF + END IF + END IF +! +!/BT4 IF ( FLOGRD(1,10) ) THEN !/BT4 IF ( GRIDS(IGRID)%SED_D50(GSEA) .NE. UNDEF ) THEN -!/BT4 SUMWT1(8) = SUMWT1(8) + WT +!/BT4 SUMWT1(10) = SUMWT1(10) + WT !/BT4 IF ( SED_D50AUX .EQ. UNDEF ) THEN !/BT4 SED_D50AUX = GRIDS(IGRID)%SED_D50(GSEA)*WT !/BT4 ELSE @@ -1506,9 +1547,9 @@ !/BT4 END IF !/BT4 END IF ! -!/IS2 IF ( FLOGRD(1,9) ) THEN +!/IS2 IF ( FLOGRD(1,11) ) THEN !/IS2 IF ( WDATAS(IGRID)%ICEH(GSEA) .NE. UNDEF ) THEN -!/IS2 SUMWT1(9) = SUMWT1(9) + WT +!/IS2 SUMWT1(11) = SUMWT1(11) + WT !/IS2 IF (ICEHAUX .EQ. UNDEF) THEN !/IS2 ICEHAUX = WDATAS(IGRID)%ICEH(GSEA)*WT !/IS2 ELSE @@ -1517,9 +1558,9 @@ !/IS2 END IF !/IS2 END IF ! -!/IS2 IF ( FLOGRD(1,10) ) THEN +!/IS2 IF ( FLOGRD(1,12) ) THEN !/IS2 IF ( WDATAS(IGRID)%ICEF(GSEA) .NE. UNDEF ) THEN -!/IS2 SUMWT1(10) = SUMWT1(10) + WT +!/IS2 SUMWT1(12) = SUMWT1(12) + WT !/IS2 IF (ICEFAUX .EQ. UNDEF) THEN !/IS2 ICEFAUX = WDATAS(IGRID)%ICEF(GSEA)*WT !/IS2 ELSE @@ -1699,6 +1740,14 @@ WBTAUX = WBTAUX + WADATS(IGRID)%WBT(GSEA)*WT END IF END IF +! + IF ( FLOGRD(2,19) .AND. ACTIVE ) THEN + IF ( WADATS(IGRID)%WNMEAN(GSEA) .NE. UNDEF ) THEN + SUMWT2(19) = SUMWT2(19) + WT + IF ( WNMEANAUX .EQ. UNDEF ) WNMEANAUX = 0. + WNMEANAUX = WNMEANAUX + WADATS(IGRID)%WNMEAN(GSEA)*WT + END IF + END IF ! ! Group 3 variables ! @@ -2210,6 +2259,19 @@ END IF END DO END IF +! + IF ( FLOGRD(6,13) .AND. ACTIVE ) THEN + IF ( WADATS(IGRID)%TAUOCX(GSEA) .NE. UNDEF ) THEN + SUMWT6(13) = SUMWT6(13) + WT + IF ( TAUOCXAUX .EQ. UNDEF ) THEN + TAUOCXAUX = WADATS(IGRID)%TAUOCX(GSEA)*WT + TAUOCYAUX = WADATS(IGRID)%TAUOCY(GSEA)*WT + ELSE + TAUOCXAUX = TAUOCXAUX + WADATS(IGRID)%TAUOCX(GSEA)*WT + TAUOCYAUX = TAUOCYAUX + WADATS(IGRID)%TAUOCY(GSEA)*WT + END IF + END IF + END IF ! ! Group 7 variables ! @@ -2411,9 +2473,30 @@ BERG(ISEA) = BERG(ISEA) + BERGAUX / REAL( SUMGRD ) END IF END IF +! + IF ( TAUAAUX .NE. UNDEF ) THEN + TAUAAUX = TAUAAUX / SUMWT1(8) + TAUADIRAUX = TAUADIRAUX / SUMWT1(8) + IF ( TAUA(ISEA) .EQ. UNDEF ) THEN + TAUA(ISEA) = TAUAAUX / REAL( SUMGRD ) + TAUADIR(ISEA) = TAUADIRAUX / REAL( SUMGRD ) + ELSE + TAUA(ISEA) = TAUA(ISEA) + TAUAAUX / REAL( SUMGRD ) + TAUADIR(ISEA) = TAUADIR(ISEA) + TAUADIRAUX / REAL( SUMGRD ) + END IF + END IF +! + IF ( RHOAIRAUX .NE. UNDEF ) THEN + RHOAIRAUX = RHOAIRAUX / SUMWT1(9) + IF ( RHOAIR(ISEA) .EQ. UNDEF ) THEN + RHOAIR(ISEA) = RHOAIRAUX / REAL( SUMGRD ) + ELSE + RHOAIR(ISEA) = RHOAIR(ISEA) + RHOAIRAUX / REAL( SUMGRD ) + END IF + END IF ! !/BT4 IF ( SED_D50AUX .NE. UNDEF ) THEN -!/BT4 SED_D50AUX = SED_D50AUX / SUMWT1(8) +!/BT4 SED_D50AUX = SED_D50AUX / SUMWT1(10) !/BT4 IF ( SED_D50(ISEA) .EQ. UNDEF ) THEN !/BT4 SED_D50(ISEA) = SED_D50AUX / REAL( SUMGRD ) !/BT4 ELSE @@ -2422,7 +2505,7 @@ !/BT4 END IF ! !/IS2 IF ( ICEHAUX .NE. UNDEF ) THEN -!/IS2 ICEHAUX = ICEHAUX / SUMWT1(9) +!/IS2 ICEHAUX = ICEHAUX / SUMWT1(11) !/IS2 IF ( ICEH(ISEA) .EQ. UNDEF ) THEN !/IS2 ICEH(ISEA) = ICEHAUX / REAL( SUMGRD ) !/IS2 ELSE @@ -2431,7 +2514,7 @@ !/IS2 END IF ! !/IS2 IF ( ICEFAUX .NE. UNDEF ) THEN -!/IS2 ICEFAUX = ICEFAUX / SUMWT1(10) +!/IS2 ICEFAUX = ICEFAUX / SUMWT1(12) !/IS2 IF ( ICEF(ISEA) .EQ. UNDEF ) THEN !/IS2 ICEF(ISEA) = ICEFAUX / REAL( SUMGRD ) !/IS2 ELSE @@ -2579,6 +2662,12 @@ WBT(ISEA) = WBT(ISEA) + & WBTAUX / REAL( SUMWT2(17)+SUMGRD ) END IF +! + IF ( WNMEANAUX .NE. UNDEF ) THEN + IF ( WNMEAN(ISEA) .EQ. UNDEF ) WNMEAN(ISEA) = 0. + WNMEAN(ISEA) = WNMEAN(ISEA) + & + WNMEANAUX / REAL( SUMWT2(19)+SUMGRD ) + END IF ! ! Group 3 variables ! @@ -3033,6 +3122,18 @@ END IF END DO END IF +! + IF ( TAUOCXAUX .NE. UNDEF ) THEN + TAUOCXAUX = TAUOCXAUX / SUMWT6(13) + TAUOCYAUX = TAUOCYAUX / SUMWT6(13) + IF ( TAUOCX(ISEA) .EQ. UNDEF ) THEN + TAUOCX(ISEA) = TAUOCXAUX / REAL( SUMGRD ) + TAUOCY(ISEA) = TAUOCYAUX / REAL( SUMGRD ) + ELSE + TAUOCX(ISEA) = TAUOCX(ISEA) + TAUOCXAUX / REAL( SUMGRD ) + TAUOCY(ISEA) = TAUOCY(ISEA) + TAUOCYAUX / REAL( SUMGRD ) + END IF + END IF ! ! Group 7 variables ! diff --git a/model/ftn/ww3_grib.ftn b/model/ftn/ww3_grib.ftn index a4e88cceb..9d705e5b9 100644 --- a/model/ftn/ww3_grib.ftn +++ b/model/ftn/ww3_grib.ftn @@ -8,7 +8,7 @@ !/ | A. Chawla | !/ | J.-H. Alves | !/ | FORTRAN 90 | -!/ | Last update : 26-Jul-2018 | +!/ | Last update : 22-Mar-2021 | !/ +-----------------------------------+ !/ !/ 01-Nov-1999 : Final FORTRAN 77 ( version 1.18 + error fix ) @@ -35,6 +35,7 @@ !/ (J.H. Alves) !/ 26-Jul-2018 : Adding polar stereographic grid ( version 6.05 ) !/ (J.H. Alves) +!/ 22-Mar-2021 : New coupling fields output ( version 7.xx ) !/ !/ Copyright 2009 National Weather Service (NWS), !/ National Oceanic and Atmospheric Administration. All rights @@ -123,7 +124,7 @@ USE W3TIMEMD, ONLY: STME21, TICK21, DSEC21 ! USE W3GDATMD - USE W3WDATMD, ONLY: TIME, WLV, ICE, UST, USTDIR + USE W3WDATMD, ONLY: TIME, WLV, ICE, UST, USTDIR, RHOAIR USE W3ADATMD USE W3ODATMD, ONLY: NDSE, NDST, NDSO, NOGRP, NGRPP, IDOUT, UNDEF,& FLOGRD, FNMPRE, NOSWLL, NOGE, FLOGD @@ -891,7 +892,7 @@ !/ | H. L. Tolman | !/ | A. Chawla | !/ | FORTRAN 90 | -!/ | Last update : 16-Jul-2007 | +!/ | Last update : 22-Mar-2021 | !/ +-----------------------------------+ !/ !/ 10-Jun-1999 : Final FORTRAN 77 ( version 1.18 ) @@ -902,6 +903,7 @@ !/ 18-May-2007 : Update GRIB1 for partitioning. ( version 3.11 ) !/ 16-Jul-2007 : Adding GRIB2 capability ( version 3.11 ) !/ (A. Chawla) +!/ 22-Mar-2021 : New coupling fields output ( version 7.xx ) !/ ! 1. Purpose : ! @@ -1129,6 +1131,49 @@ !/NCEP2 KPDS(1) = 2 CALL W3S2XY ( NSEA, NSEA, NX, NY, ICE , MAPSF, X1 ) ! +! Atmospheric momentum +! + ELSE IF ( IFI .EQ. 1 .AND. IFJ .EQ. 8 ) THEN + FLTWO = .TRUE. +!/NCEP1 KPDS(5) = 032 +!/NCEP2 KPDS(2) = 1 +!/NCEP2 KPDS(1) = 2 +!/NCEP2 LISTSEC0(1) = 0 +!/RTD ! Rotate x,y vector back to standard pole +!/RTD IF ( FLAGUNR ) CALL W3XYRTN(NSEA, TAUA, TAUADIR, AnglD) + CALL W3S2XY ( NSEA, NSEA, NX, NY, TAUA(1:NSEA) & + , MAPSF, XX ) + CALL W3S2XY ( NSEA, NSEA, NX, NY, TAUADIR(1:NSEA) & + , MAPSF, XY ) + DO ISEA=1, NSEA + IF (TAUA(ISEA) .NE. UNDEF) THEN + UABS = SQRT(TAUA(ISEA)**2+TAUADIR(ISEA)**2) + IF ( UABS .GT. 0.001 ) THEN + TAUADIR(ISEA) = MOD ( 630. - & + RADE*ATAN2(TAUADIR(ISEA),TAUA(ISEA)) , 360. ) + ELSE + TAUADIR(ISEA) = 0. + END IF + ELSE + UABS = UNDEF + TAUADIR(ISEA) = UNDEF + END IF + TAUA(ISEA) = UABS + END DO + CALL W3S2XY ( NSEA, NSEA, NX, NY, TAUA(1:NSEA) & + , MAPSF, X1 ) + CALL W3S2XY ( NSEA, NSEA, NX, NY, TAUADIR(1:NSEA) & + , MAPSF, X2 ) +! +! Air density +! + ELSE IF ( IFI .EQ. 1 .AND. IFJ .EQ. 9 ) THEN + FLONE = .TRUE. +!/NCEP1 KPDS(5) = 091 +!/NCEP2 KPDS(2) = 0 +!/NCEP2 KPDS(1) = 2 + CALL W3S2XY ( NSEA, NSEA, NX, NY, RHOAIR, MAPSF, X1 ) +! ! Significant wave height ! ELSE IF ( IFI .EQ. 2 .AND. IFJ .EQ. 1 ) THEN @@ -1233,6 +1278,14 @@ END DO CALL W3S2XY ( NSEA, NSEA, NX, NY, THP0 , MAPSF, X1 ) ! +! Mean wave number +! + ELSE IF ( IFI .EQ. 2 .AND. IFJ .EQ. 19 ) THEN + FLONE = .TRUE. +!/NCEP1 KPDS(5) = -1 +!/NCEP2 KPDS(2) = 255 + CALL W3S2XY ( NSEA, NSEA, NX, NY, WNMEAN, MAPSF, X1 ) +! ! Partitioned wave height ! ELSE IF ( IFI .EQ. 4 .AND. IFJ .EQ. 1 ) THEN diff --git a/model/ftn/ww3_ounf.ftn b/model/ftn/ww3_ounf.ftn index 89ff19351..e4669e2da 100644 --- a/model/ftn/ww3_ounf.ftn +++ b/model/ftn/ww3_ounf.ftn @@ -8,7 +8,7 @@ !/ | F. Ardhuin | !/ | M. Accensi | !/ | FORTRAN 90 | -!/ | Last update : 26-Jan-2021 | +!/ | Last update : 22-Mar-2021 | !/ +-----------------------------------+ !/ !/ 17-Mar-2010 : Creation ( version 3.14_SHOM ) @@ -41,6 +41,7 @@ !/ 09-Dec-2020 : Set fixed values for VARID indices ( version 7.12 ) !/ 26-Jan-2021 : Added TP output (derived from fp) ( version 7.12 ) !/ and alternative dir/mag output. +!/ 22-Mar-2021 : New coupling fields output ( version 7.xx ) !/ !/ Copyright 2009-2013 National Weather Service (NWS), !/ National Oceanic and Atmospheric Administration. All rights @@ -146,24 +147,25 @@ !/DEBUG USE W3ODATMD, only : IAPROC !/ USE W3GDATMD - USE W3WDATMD, ONLY: TIME, WLV, ICE, ICEH, ICEF, BERG, UST, USTDIR + USE W3WDATMD, ONLY: TIME, WLV, ICE, ICEH, ICEF, BERG, & + UST, USTDIR, RHOAIR !/SETUP USE W3WDATMD, ONLY: ZETA_SETUP USE W3ADATMD, ONLY: DW, UA, UD, AS, CX, CY, HS, WLM, T0M1, THM, & THS, FP0, THP0, DTDYN, FCUT, & ABA, ABD, UBA, UBD, SXX, SYY, SXY, USERO, & PHS, PTP, PLP, PDIR, PSI, PWS, PWST, PNR, & - PTM1, PT1, PT2, PEP, & + PTM1, PT1, PT2, PEP, TAUOCX, TAUOCY, & PTHP0, PQP, PSW, PPE, PGW, QP, & TAUOX, TAUOY, TAUWIX, & TAUWIY, PHIAW, PHIOC, TUSX, TUSY, PRMS, TPMS,& USSX, USSY, MSSX, MSSY, MSSD, MSCX, MSCY, & - MSCD, CHARN, TWS, & + MSCD, CHARN, TWS, TAUA, TAUADIR, & TAUWNX, TAUWNY, BHD, T02, HSIG, CGE, & T01, BEDFORMS, WHITECAP, TAUBBL, PHIBBL, & CFLTHMAX, CFLXYMAX, CFLKMAX, TAUICE, PHICE, & STMAXE, STMAXD, HMAXE, HCMAXE, HMAXD, HCMAXD,& P2SMS, EF, US3D, TH1M, STH1M, TH2M, STH2M, & - WN, USSP, WBT + WN, USSP, WBT, WNMEAN USE W3ODATMD, ONLY: NDSO, NDSE, SCREEN, NOGRP, NGRPP, IDOUT, & UNDEF, FLOGRD, FNMPRE, NOSWLL, NOGE ! @@ -715,7 +717,7 @@ !/ | F. Ardhuin | !/ | M. Accensi | !/ | FORTRAN 90 | -!/ | Last update : 26-Jan-2021 | +!/ | Last update : 22-Mar-2021 | !/ +-----------------------------------+ !/ !/ 17-Mar-2010 : Creation ( version 3.14_SHOM ) @@ -730,6 +732,7 @@ !/ 09-Dec-2020 : Set fixed values for VARID indices ( version 7.12 ) !/ 26-Jan-2021 : Added TP output (derived from fp) ( version 7.12 ) !/ and alternative dir/mag output. +!/ 22-Mar-2021 : New coupling fields output ( version 7.xx ) !/ ! 1. Purpose : ! @@ -1024,7 +1027,7 @@ CALL W3S2XY ( NSEA, NSEA, NX+1, NY, DW(1:NSEA) & , MAPSF, X1 ) ENDIF - +! ! Surface current ELSE IF ( IFI .EQ. 1 .AND. IFJ .EQ. 2 ) THEN !! Note - CX and CY read in from .ww3 file are X-Y vectors @@ -1093,7 +1096,7 @@ ELSE CALL W3S2XY ( NSEA, NSEA, NX+1, NY, ICE(1:NSEA), MAPSF, X1 ) ENDIF - +! ! Icebergs_damping ELSE IF ( IFI .EQ. 1 .AND. IFJ .EQ. 7 ) THEN IF( SMCGRD ) THEN @@ -1102,20 +1105,45 @@ CALL W3S2XY ( NSEA, NSEA, NX+1, NY, BERG , MAPSF, X1 ) ENDIF WHERE ( X1.NE.UNDEF) X1 = X1*0.1 +! + ! Atmospheric momentum + ELSE IF ( IFI .EQ. 1 .AND. IFJ .EQ. 8 ) THEN + !! Note - TAUA and TAUADIR read in from .ww3 file are TAUAX,TAUAY +!/RTD ! Rotate x,y vector back to standard pole +!/RTD IF ( FLAGUNR ) CALL W3XYRTN(NSEA, TAUA(1:NSEA), TAUADIR(1:NSEA), AnglD) + + IF( SMCGRD ) THEN +!/SMC CALL W3S2XY_SMC( TAUA (1:NSEA), XX ) +!/SMC CALL W3S2XY_SMC( TAUADIR(1:NSEA), XY ) + ELSE ! IF(SMCGRD) + CALL W3S2XY ( NSEA, NSEA, NX+1, NY, TAUA(1:NSEA) & + , MAPSF, XX ) + CALL W3S2XY ( NSEA, NSEA, NX+1, NY, TAUADIR(1:NSEA) & + , MAPSF, XY ) + ENDIF + NFIELD=2 +! + ! Air density + ELSE IF ( IFI .EQ. 1 .AND. IFJ .EQ. 9 ) THEN + IF( SMCGRD ) THEN +!/SMC CALL W3S2XY_SMC(RHOAIR, X1) + ELSE + CALL W3S2XY ( NSEA, NSEA, NX+1, NY, RHOAIR, MAPSF, X1 ) + ENDIF ! !/BT4 ! Krumbein phi scale -!/BT4 ELSE IF ( IFI .EQ. 1 .AND. IFJ .EQ. 8 ) THEN +!/BT4 ELSE IF ( IFI .EQ. 1 .AND. IFJ .EQ. 10 ) THEN !/BT4 CALL W3S2XY ( NSEA, NSEA, NX+1, NY, SED_D50 , MAPSF, X1 ) !/BT4 WHERE ( X1.NE.UNDEF) X1 = -LOG(X1/0.001)/LOG2 !/BT4 NFIELD=1 ! !/IS2 ! Ice thickness -!/IS2 ELSE IF (IFI .EQ. 1 .AND. IFJ .EQ. 9 ) THEN +!/IS2 ELSE IF (IFI .EQ. 1 .AND. IFJ .EQ. 11 ) THEN !/IS2 CALL W3S2XY (NSEA, NSEA, NX+1, NY, ICEH(1:NSEA), MAPSF, X1 ) !/IS2 NFIELD=1 ! !/IS2 ! Maximum ice floe diameter -!/IS2 ELSE IF (IFI .EQ. 1 .AND. IFJ .EQ. 10 ) THEN +!/IS2 ELSE IF (IFI .EQ. 1 .AND. IFJ .EQ. 12 ) THEN !/IS2 CALL W3S2XY (NSEA, NSEA, NX+1, NY, ICEF(1:NSEA), MAPSF, X1 ) !/IS2 NFIELD=1 @@ -1284,6 +1312,14 @@ ELSE CALL W3S2XY ( NSEA, NSEA, NX+1, NY, AUX1, MAPSF, X1 ) ENDIF +! + ! Mean wave number + ELSE IF ( IFI .EQ. 2 .AND. IFJ .EQ. 19 ) THEN + IF( SMCGRD ) THEN +!/SMC CALL W3S2XY_SMC( WNMEAN, X1 ) + ELSE + CALL W3S2XY ( NSEA, NSEA, NX+1, NY, WNMEAN, MAPSF, X1 ) + END IF ! ! Wave elevation spectrum ELSE IF ( IFI .EQ. 3 .AND. IFJ .EQ. 1 ) THEN @@ -1917,6 +1953,21 @@ XXK(:,:,IK)=XX XYK(:,:,IK)=XY END DO +! + ! Total momentum to the ocean + ELSE IF ( IFI .EQ. 6 .AND. IFJ .EQ. 13 ) THEN +!/RTD ! Rotate x,y vector back to standard pole +!/RTD IF ( FLAGUNR ) CALL W3XYRTN(NSEA, TAUOCX(1:NSEA), TAUOCY(1:NSEA), AnglD) + IF( SMCGRD ) THEN +!/SMC CALL W3S2XY_SMC( TAUOCX(1:NSEA), XX ) +!/SMC CALL W3S2XY_SMC( TAUOCY(1:NSEA), XY ) + ELSE + CALL W3S2XY ( NSEA, NSEA, NX+1, NY, TAUOCX(1:NSEA) & + , MAPSF, XX ) + CALL W3S2XY ( NSEA, NSEA, NX+1, NY, TAUOCY(1:NSEA) & + , MAPSF, XY ) + ENDIF ! SMCGRD + NFIELD=2 ! ! RMS of bottom displacement amplitude ELSE IF ( IFI .EQ. 7 .AND. IFJ .EQ. 1 ) THEN diff --git a/model/ftn/ww3_outf.ftn b/model/ftn/ww3_outf.ftn index 6348987f6..a463cff19 100644 --- a/model/ftn/ww3_outf.ftn +++ b/model/ftn/ww3_outf.ftn @@ -6,7 +6,7 @@ !/ | WAVEWATCH III NOAA/NCEP | !/ | H. L. Tolman | !/ | FORTRAN 90 | -!/ | Last update : 26-Jan-2021 | +!/ | Last update : 22-Mar-2021 | !/ +-----------------------------------+ !/ !/ 19-Oct-1998 : Final FORTRAN 77 ( version 1.18 ) @@ -35,6 +35,7 @@ !/ 27-Aug-2015 : ICEH and ICEF added as output ( version 5.10 ) !/ 12-Sep-2018 : Added new partitioned output fields ( version 6.06 ) !/ 26-Jan-2021 : Added TP field (derived from FP0) ( version 7.12 ) +!/ 22-Mar-2021 : New coupling fields output ( version 7.xx ) !/ !/ Copyright 2009-2012 National Weather Service (NWS), !/ National Oceanic and Atmospheric Administration. All rights @@ -122,7 +123,7 @@ THS, FP0, THP0, FP1, THP1, DTDYN, FCUT, & ABA, ABD, UBA, UBD, SXX, SYY, SXY, USERO, & PHS, PTP, PLP, PDIR, PSI, PWS, PWST, PNR, & - PTM1, PT1, PT2, PEP, & + PTM1, PT1, PT2, PEP, TAUOCX, TAUOCY, & PTHP0, PQP, PSW, PPE, PGW, QP, & TAUOX, TAUOY, TAUWIX,BHD, & TAUWIY, PHIAW, PHIOC, TUSX, TUSY, PRMS, TPMS,& @@ -130,7 +131,8 @@ TAUWNX, TAUWNY, TAUBBL, PHIBBL, CFLXYMAX, & CFLTHMAX, CFLKMAX, BEDFORMS, WHITECAP, T02, & CGE, T01, HSIG, STMAXE, STMAXD, HMAXE, & - HCMAXE, HMAXD, HCMAXD, MSSD, MSCD, WBT + HCMAXE, HMAXD, HCMAXD, MSSD, MSCD, WBT, & + WNMEAN USE W3ODATMD, ONLY: NDSO, NDSE, NDST, NOGRP, NGRPP, IDOUT, & UNDEF, FLOGRD, FNMPRE, NOSWLL, NOGE ! @@ -494,7 +496,7 @@ !/ | WAVEWATCH III NOAA/NCEP | !/ | H. L. Tolman | !/ | FORTRAN 90 | -!/ | Last update : 26-Jan-2021 | +!/ | Last update : 22-Mar-2021 | !/ +-----------------------------------+ !/ !/ 26-Sep-1997 : Final FORTRAN 77 ( version 1.18 ) @@ -516,6 +518,7 @@ !/ 25-Dec-2012 : New structure of output fields. ( version 4.11 ) !/ 25-Jun-2013 : Add type 4 sea point text output. ( version 4.11 ) !/ 26-Jan-2021 : Added TP field (derived from FP0) ( version 7.12 ) +!/ 22-Mar-2021 : New coupling fields output ( version 7.xx ) !/ ! 1. Purpose : ! @@ -1100,6 +1103,17 @@ ELSE CALL W3S2XY ( NSEA, NSEA, NX+1, NY, AUX, MAPSF, X1) ENDIF +! + ELSE IF ( IFI .EQ. 2 .AND. IFJ .EQ. 19 ) THEN + FLONE = .TRUE. + FSC = 0.001 + UNITS = 'm-1' + ENAME = '.wnm' + IF ( ITYPE .EQ. 4 ) THEN + XS1 = WNMEAN + ELSE + CALL W3S2XY ( NSEA, NSEA, NX+1, NY, WNMEAN, MAPSF, X1) + ENDIF ! ELSE IF ( IFI .EQ. 4 .AND. IFJ .EQ. 1 ) THEN FLONE = .TRUE. @@ -1725,6 +1739,49 @@ CALL W3S2XY ( NSEA, NSEA, NX+1,NY,PRMS,MAPSF, X1 ) CALL W3S2XY ( NSEA, NSEA, NX+1,NY,TPMS,MAPSF, X2 ) ENDIF +! + ELSE IF ( IFI .EQ. 6 .AND. IFJ .EQ. 13 ) THEN + IF ( VECTOR ) THEN + FLTWO = .TRUE. + ELSE + FLDIR = .TRUE. + END IF + FSC = 1.E-6 + UNITS = 'm2 s-2' + ENAME = '.toc' +!/RTD ! Rotate x,y vector back to standard pole +!/RTD IF ( FLAGUNR ) CALL W3XYRTN(NSEA, TAUOCX, TAUOCY, AnglD) + IF ( ITYPE .EQ. 4 ) THEN + XS1 = TAUOCX(1:NSEA) + XS2 = TAUOCY(1:NSEA) + ELSE + CALL W3S2XY ( NSEA, NSEA, NX+1, NY, TAUOCX(1:NSEA) & + , MAPSF, XX ) + CALL W3S2XY ( NSEA, NSEA, NX+1, NY, TAUOCY(1:NSEA) & + , MAPSF, XY ) + ENDIF + DO ISEA=1, NSEA + UABS = SQRT(TAUOCX(ISEA)**2+TAUOCY(ISEA)**2) + IF ( TAUOCX(ISEA) .EQ. UNDEF ) THEN + TAUOCY(ISEA) = UNDEF + UABS = UNDEF + ELSE IF ( UABS .GT. 1.E-8 ) THEN + TAUOCY(ISEA) = MOD ( 630. - & + RADE*ATAN2(TAUOCY(ISEA),TAUOCX(ISEA)) , 360. ) + ELSE + TAUOCY(ISEA) = UNDEF + END IF + TAUOCX(ISEA) = UABS + END DO + IF ( ITYPE .EQ. 4 ) THEN + XS3 = TAUOCX(1:NSEA) + XS4 = TAUOCY(1:NSEA) + ELSE + CALL W3S2XY (NSEA,NSEA,NX+1,NY, TAUOCX(1:NSEA) & + , MAPSF, X1 ) + CALL W3S2XY (NSEA,NSEA,NX+1,NY, TAUOCY(1:NSEA) & + , MAPSF, X2 ) + ENDIF ! ELSE IF ( IFI .EQ. 7 .AND. IFJ .EQ. 1 ) THEN IF ( VECTOR ) THEN diff --git a/model/ftn/ww3_prep.ftn b/model/ftn/ww3_prep.ftn index 11e5221df..613b0ee4f 100644 --- a/model/ftn/ww3_prep.ftn +++ b/model/ftn/ww3_prep.ftn @@ -7,7 +7,7 @@ !/ | H. L. Tolman | !/ | A. Chawla | !/ | FORTRAN 90 | -!/ | Last update : 11-Nov-2013 | +!/ | Last update : 22-Mar-2021 | !/ +-----------------------------------+ !/ !/ 14-Jan-1999 : Final FORTRAN 77 ( version 1.18 ) @@ -39,6 +39,7 @@ !/ 11-Nov-2013 : Allows for input binary files to be of WAVEWATCH !/ type (i.e. accounts for the header) ( version 4.13 ) !/ 20-Jan-2017 : Update to new W3GSRUMD APIs ( version 6.02 ) +!/ 22-Mar-2021 : Add momentum and air density ( version 7.xx ) !/ !/ Copyright 2009-2012 National Weather Service (NWS), !/ National Oceanic and Atmospheric Administration. All rights @@ -47,9 +48,9 @@ !/ ! 1. Purpose : ! -! Pre-processing of the input water level, current, wind and ice -! fields as well as assimilation data for the generic shell W3SHEL -! (ww3_shel.ftn). +! Pre-processing of the input water level, current, wind, ice +! fields, momentum and air density, as well as assimilation data +! for the generic shell W3SHEL (ww3_shel.ftn). ! ! 2. Method : ! @@ -247,7 +248,7 @@ CHARACTER :: COMSTR*1, IDFLD*3, IDTYPE*2, & IDTIME*23, FROMLL*4, FORMLL*16, & NAMELL*65, FROMF*4, NAMEF*65 - CHARACTER(LEN=12) :: IDSTR1(-7:5) + CHARACTER(LEN=12) :: IDSTR1(-7:7) CHARACTER(LEN=15) :: IDSTR3(3) CHARACTER(LEN=32) :: FORMT(2), FORMF(2) CHARACTER(LEN=20) :: IDSTR2(5) @@ -267,7 +268,8 @@ 'mud thkness ' , 'mud viscos. ' , & 'ice ' , 'water levels' , & 'winds ' , 'currents ' , & - 'data ' / + 'data ' , 'momentum ' , & + 'air density ' / DATA IDSTR2 / 'pre-processed file ' , 'long.-lat. grid ' , & 'grid from file (1) ' , 'grid from file (2) ' , & 'data (assimilation) ' / @@ -375,6 +377,10 @@ IFLD = 4 ELSE IF ( IDFLD.EQ.'DAT' ) THEN IFLD = 5 + ELSE IF ( IDFLD.EQ.'TAU' ) THEN + IFLD = 6 + ELSE IF ( IDFLD.EQ.'RHO' ) THEN + IFLD = 7 ELSE WRITE (NDSE,1030) IDFLD CALL EXTCDE ( 1 ) @@ -406,6 +412,9 @@ !/WNT2 IF (IFLD.EQ.3) WRITE (NDSO,2930) !/CRT1 IF (IFLD.EQ.4) WRITE (NDSO,1930) !/CRT2 IF (IFLD.EQ.4) WRITE (NDSO,2930) +!/WNT0 IF (IFLD.EQ.6) WRITE (NDSO,1930) +!/WNT1 IF (IFLD.EQ.6) WRITE (NDSO,1930) +!/WNT2 IF (IFLD.EQ.6) WRITE (NDSO,2930) END IF IF ( FLBERG ) WRITE (NDSO,938) IF ( FLSTAB ) WRITE (NDSO,939) @@ -1252,6 +1261,27 @@ !/CRT2 END DO !/CRT2 END IF ! +! ... Momentum, correct for velocity or energy conservation +! +!/WNT1 IF (IFLD.EQ.6) THEN +!/WNT1 DO IY=1,NY +!/WNT1 DO IX=1,NX +!/WNT1 FACTOR = MIN ( 1.5 , A2(IX,IY)/A1(IX,IY) ) +!/WNT1 FX(IX,IY) = FACTOR * FX(IX,IY) +!/WNT1 FY(IX,IY) = FACTOR * FY(IX,IY) +!/WNT1 END DO +!/WNT1 END DO +!/WNT1 END IF +! +!/WNT2 IF (IFLD.EQ.6) THEN +!/WNT2 DO IY=1,NY +!/WNT2 DO IX=1,NX +!/WNT2 FACTOR = MIN ( 1.5 , A3(IX,IY)/A1(IX,IY) ) +!/WNT2 FX(IX,IY) = FACTOR * FX(IX,IY) +!/WNT2 FY(IX,IY) = FACTOR * FY(IX,IY) +!/WNT2 END DO +!/WNT2 END DO +!/WNT2 END IF END IF ! END IF diff --git a/model/ftn/ww3_prnc.ftn b/model/ftn/ww3_prnc.ftn index 53aa81379..ea3ca3620 100644 --- a/model/ftn/ww3_prnc.ftn +++ b/model/ftn/ww3_prnc.ftn @@ -7,7 +7,7 @@ !/ | M. Accensi | !/ | F. Ardhuin | !/ | FORTRAN 90 | -!/ | Last update : 21-Apr-2020 | +!/ | Last update : 22-Mar-2021 | !/ +-----------------------------------+ !/ !/ 01-Jan-2011 : Creation ( version 4.01 ) @@ -26,6 +26,7 @@ !/ 04-Jan-2018 : Add namelist feature ( version 6.04 ) !/ 21-Apr-2020 : Correction in MPI for tide ( version 7.XX ) !/ 21-Apr-2020 : Correction in scale factor ( version 7.XX ) +!/ 22-Mar-2021 : Add momentum and air density ( version 7.xx ) !/ !/ Copyright 2009 National Weather Service (NWS), !/ National Oceanic and Atmospheric Administration. All rights @@ -34,8 +35,9 @@ !/ ! 1. Purpose : ! -! Pre-processing of the input water level, current, wind and ice -! fields as well as assimilation data ... from NetCDF input +! Pre-processing of the input water level, current, wind, ice +! fields, momentum and air density, as well as assimilation data +! ... from NetCDF input ! ! 2. Method : ! @@ -265,7 +267,7 @@ CHARACTER :: COMSTR*1, IDFLD*3, IDTYPE*2, & IDTIME*23, FROMLL*4, FORMLL*16, & NAMELL*80, NAMEF*80, IDTIME2*23 - CHARACTER*14 :: IDSTR1(-7:5) + CHARACTER*14 :: IDSTR1(-7:7) CHARACTER*15 :: IDSTR3(3) CHARACTER*32 :: FORMT(2), FORMF(2) CHARACTER*20 :: IDSTR2(6) @@ -312,10 +314,11 @@ DATA IDSTR1 / 'ice thickness ' , 'ice viscosity' , & 'ice density ' , 'ice modulus ' , & 'ice flow diam.' , 'mud density ' , & - 'mud thickness ', 'mud viscosity ' , & + 'mud thickness ' , 'mud viscosity ', & 'ice conc. ' , 'water levels ' , & 'winds ' , 'currents ' , & - 'data ' / + 'data ' , 'momentum ' , & + 'air density ' / DATA IDSTR2 / 'pre-processed file ' , 'long.-lat. grid ' , & 'grid from file (1) ' , 'grid from file (2) ' , & 'data (assimilation) ' , 'pre-pro. file + tide' / @@ -472,6 +475,14 @@ IFLD = 5 ITYPE = 5 NFIELDS = 1 + ELSE IF (NML_FORCING%FIELD%ATM_MOMENTUM) THEN + IDFLD = 'TAU' + IFLD = 6 + NFIELDS = 2 + ELSE IF (NML_FORCING%FIELD%AIR_DENSITY) THEN + IDFLD = 'RHO' + IFLD = 7 + NFIELDS = 1 ELSE GOTO 810 END IF ! NML_FORCING @@ -568,6 +579,10 @@ IFLD = 4 ELSE IF ( IDFLD.EQ.'DAT' ) THEN IFLD = 5 + ELSE IF ( IDFLD.EQ.'TAU' ) THEN + IFLD = 6 + ELSE IF ( IDFLD.EQ.'RHO' ) THEN + IFLD = 7 ELSE WRITE (NDSE,1030) IDFLD CALL EXTCDE ( 30 ) @@ -652,6 +667,9 @@ !/WNT2 IF ( IAPROC .EQ. NAPOUT .AND.IFLD.EQ.3) WRITE (NDSO,2930) !/CRT1 IF ( IAPROC .EQ. NAPOUT .AND.IFLD.EQ.4) WRITE (NDSO,1930) !/CRT2 IF ( IAPROC .EQ. NAPOUT .AND.IFLD.EQ.4) WRITE (NDSO,2930) +!/WNT0 IF ( IAPROC .EQ. NAPOUT .AND.IFLD.EQ.6) WRITE (NDSO,1930) +!/WNT1 IF ( IAPROC .EQ. NAPOUT .AND.IFLD.EQ.6) WRITE (NDSO,1930) +!/WNT2 IF ( IAPROC .EQ. NAPOUT .AND.IFLD.EQ.6) WRITE (NDSO,2930) END IF IF (FLGNML) THEN IF(TIMESTART(1).NE.19000101 .OR. TIMESTART(2).NE.0) THEN @@ -1354,7 +1372,7 @@ IF (IRET .NE. 0) SCFAC(1) = 1.0 IRET = NF90_GET_ATT(NCID,VARIDF(1),'add_offset',ADDOFF(1)) IF (IRET .NE. 0) ADDOFF(1) = 0.0 - IF ( NFCOMP.EQ.2 .OR. IFLD.GE.3 .OR. FLBERG ) THEN + IF ( NFCOMP.EQ.2 .OR. (IFLD.GE.3 .AND. IFLD.NE.7) .OR. FLBERG ) THEN IRET = NF90_GET_ATT(NCID,VARIDF(2),'scale_factor',SCFAC(2)) IF (IRET .NE. 0) SCFAC(2) = 1.0 IRET = NF90_GET_ATT(NCID,VARIDF(2),'add_offset',ADDOFF(1)) @@ -1578,7 +1596,7 @@ IF (IRET.NE.0 ) XCFAC = 1.0 IRET = NF90_GET_ATT(NCID,VARIDF(1),'add_offset',XCOFF) IF (IRET.NE.0 ) XCOFF = 0.0 - IF ( NFCOMP.EQ.2 .OR. IFLD.GE.3 .OR. FLBERG ) THEN + IF ( NFCOMP.EQ.2 .OR. (IFLD.GE.3 .AND. IFLD.NE.7) .OR. FLBERG ) THEN IRET = NF90_GET_ATT(NCID,VARIDF(2),'scale_factor',YCFAC) IF (IRET.NE.0 ) YCFAC = 1.0 IRET = NF90_GET_ATT(NCID,VARIDF(2),'add_offset',YCOFF) @@ -1635,7 +1653,7 @@ ! ! ... Input ! - IF ( ITYPE .LE. 4 .OR. ITYPE.EQ.6) THEN + IF ( ITYPE .LE. 4 .OR. ITYPE.EQ.6 ) THEN IF (NDIMSGRID.EQ.1) THEN IRET=NF90_GET_VAR(NCID,VARIDF(1),XC(:,1),start=(/1,ITIME/),count=(/MXM,1/)) ELSE @@ -1665,7 +1683,7 @@ !/T2 END IF !/T2 END DO ! - IF (NFCOMP.EQ.2 .OR. IFLD.GE.3 .OR. FLBERG) THEN + IF (NFCOMP.EQ.2 .OR. (IFLD.GE.3 .AND. IFLD.NE.7) .OR. FLBERG) THEN ! This is a quick fix that works if the lon,lat,level,time dimensions are in that order ! otherwise, one should check the length of each dimension ... @@ -1777,7 +1795,7 @@ END DO END DO - IF (( IFLD.LE.2 ).AND.( .NOT. FLBERG )) THEN + IF (( IFLD.LE.2 .OR. IFLD.EQ.7 ).AND.( .NOT. FLBERG )) THEN DO IY=1, NY DO IX=1, NX FA(IX,IY) = XC(IX,IY) @@ -1798,7 +1816,7 @@ ! ... One-component fields ! !/O3 IF ( IAPROC .EQ. NAPOUT ) WRITE (NDSO,976) ' ' - IF (( IFLD.LE.2 ).AND.( .NOT. FLBERG )) THEN + IF (( IFLD.LE.2 .OR. IFLD.EQ.7 ).AND.( .NOT. FLBERG )) THEN ! CALL INTERP(MXM, MYM, XC, IX21, IX22, IY21, IY22, & RD11, RD12, RD21, RD22, FILLVALUE, FA) @@ -1882,6 +1900,28 @@ !/CRT2 END DO !/CRT2 END DO !/CRT2 END IF +! +! ... Momentum, correct for velocity or energy conservation +! +!/WNT1 IF (IFLD.EQ.6) THEN +!/WNT1 DO IY=1,NY +!/WNT1 DO IX=1,NX +!/WNT1 FACTOR = MIN ( 1.5 , A2(IX,IY)/A1(IX,IY) ) +!/WNT1 FX(IX,IY) = FACTOR * FX(IX,IY) +!/WNT1 FY(IX,IY) = FACTOR * FY(IX,IY) +!/WNT1 END DO +!/WNT1 END DO +!/WNT1 END IF +! +!/WNT2 IF (IFLD.EQ.6) THEN +!/WNT2 DO IY=1,NY +!/WNT2 DO IX=1,NX +!/WNT2 FACTOR = MIN ( 1.5 , A3(IX,IY)/A1(IX,IY) ) +!/WNT2 FX(IX,IY) = FACTOR * FX(IX,IY) +!/WNT2 FY(IX,IY) = FACTOR * FY(IX,IY) +!/WNT2 END DO +!/WNT2 END DO +!/WNT2 END IF ! END IF ! @@ -1908,6 +1948,9 @@ !/T3 ELSE IF (IFLD.EQ.2) THEN !/T3 CALL PRTBLK (NDSO, NX, NY, NX, FA, MAPOUT, 0, 0., & !/T3 IX0, IXN, 1, 1, NY, 1, 'Water level', 'm') +!/T3 ELSE IF (IFLD.EQ.7) THEN +!/T3 CALL PRTBLK (NDSO, NX, NY, NX, FA, MAPOUT, 0, 0., & +!/T3 IX0, IXN, 1, 1, NY, 1, 'Air density', 'kg/m3') !/T3 ELSE !/T3 CALL PRTBLK (NDSO, NX, NY, NX, FX, MAPOUT, 0, 0., & !/T3 IX0, IXN, 1, 1, NY, 1, 'Cart. X-comp', 'm/s') @@ -2220,7 +2263,7 @@ !/ | Last update : 23-Feb-2021 | !/ +-----------------------------------+ !/ -!/ 23-Feb-2021 : First version ( version 7.xx ) +!/ 23-Feb-2021 : First version ( version 7.12 ) !/ ! 1. Purpose : ! diff --git a/model/ftn/ww3_shel.ftn b/model/ftn/ww3_shel.ftn index 8d9aaf243..8dd6048ec 100644 --- a/model/ftn/ww3_shel.ftn +++ b/model/ftn/ww3_shel.ftn @@ -6,7 +6,7 @@ !/ | WAVEWATCH III NOAA/NCEP | !/ | H. L. Tolman | !/ | FORTRAN 90 | -!/ | Last update : 25-Sep-2020 | +!/ | Last update : 22-Mar-2021 | !/ +-----------------------------------+ !/ !/ 19-Jan-1999 : Final FORTRAN 77 ( version 1.18 ) @@ -55,6 +55,7 @@ !/ (Roberto Padilla-Hernandez) !/ 16-Jul-2020 : Variable coupling time step ( version 7.08 ) !/ 25-Sep-2020 : Oasis coupling at T+0 ( version 7.10 ) +!/ 22-Mar-2021 : Add new coupling fields ( version 7.xx ) !/ !/ Copyright 2009-2012 National Weather Service (NWS), !/ National Oceanic and Atmospheric Administration. All rights @@ -299,11 +300,11 @@ NDSEN, IERR, J, I, ILOOP, IPTS, NPTS, & NDTNEW, MPI_COMM = -99, & FLAGTIDE, COUPL_COMM, IH, N_TOT - INTEGER :: NDSF(-7:7), NDS(13), NTRACE(2), NDT(5:7), & + INTEGER :: NDSF(-7:9), NDS(13), NTRACE(2), NDT(7:9), & TIME0(2), TIMEN(2), TTIME(2), TTT(2), & - NH(-7:8), THO(2,-7:8,NHMAX), RCLD(5:7), & - NODATA(5:7), ODAT(40), IPRT(6) = 0, & - STARTDATE(8), STOPDATE(8), IHH(-7:8) + NH(-7:10), THO(2,-7:10,NHMAX), RCLD(7:9), & + NODATA(7:9), ODAT(40), IPRT(6) = 0, & + STARTDATE(8), STOPDATE(8), IHH(-7:10) ! !/OASIS INTEGER :: OASISED !/COU INTEGER :: OFL @@ -311,21 +312,21 @@ !/MPI INTEGER :: IERR_MPI ! REAL :: FACTOR, DTTST, XX, YY, & - HA(NHMAX,-7:8), HD(NHMAX,-7:8), & - HS(NHMAX,-7:8) + HA(NHMAX,-7:10), HD(NHMAX,-7:10), & + HS(NHMAX,-7:10) !/F90 REAL :: CLKFIN, CLKFEL REAL, ALLOCATABLE :: X(:), Y(:), XXX(:,:), DATA0(:,:), & DATA1(:,:), DATA2(:,:) ! DOUBLE PRECISION :: STARTJULDAY, STOPJULDAY ! - CHARACTER(LEN=1) :: COMSTR, FLAGTFC(-7:8) - CHARACTER(LEN=3) :: IDSTR(-7:8), IDTST + CHARACTER(LEN=1) :: COMSTR, FLAGTFC(-7:10) + CHARACTER(LEN=3) :: IDSTR(-7:10), IDTST CHARACTER(LEN=6) :: YESXNO CHARACTER(LEN=40) :: PN CHARACTER(LEN=40), & ALLOCATABLE :: PNAMES(:) - CHARACTER(LEN=13) :: IDFLDS(-7:8) + CHARACTER(LEN=13) :: IDFLDS(-7:10) CHARACTER(LEN=20) :: STRNG CHARACTER(LEN=23) :: DTME21 CHARACTER(LEN=30) :: IDOTYP(8) @@ -338,12 +339,12 @@ !/COU CHARACTER(LEN=30) :: OFILE ! - LOGICAL :: FLLSTL, FLLSTI, FLFLG, FLHOM, TFLAGI, & - PRTFRM, FLAGSCI, FLGNML + LOGICAL :: FLLSTL, FLLSTI, FLLSTR, FLFLG, FLHOM, & + TFLAGI, PRTFRM, FLAGSCI, FLGNML LOGICAL :: FLGRD(NOGRP,NGRPP), FLGD(NOGRP), & FLGR2(NOGRP,NGRPP), FLG2(NOGRP), & - FLAGSTIDE(4), FLH(-7:8), FLGDAS(3), & - FLLST_ALL(-7:8) + FLAGSTIDE(4), FLH(-7:10), FLGDAS(3), & + FLLST_ALL(-7:10) LOGICAL :: DEBUG_NCC = .FALSE. !/NCC LOGICAL :: CFLAG(10) !/MPI LOGICAL :: FLHYBR = .FALSE. @@ -360,6 +361,7 @@ 'mud viscos. ' , & 'water levels ' , 'currents ' , & 'winds ' , 'ice fields ' , & + 'momentum ' , 'air density ' , & 'mean param. ' , '1D spectra ' , & '2D spectra ' , 'moving grid ' / DATA IDOTYP / 'Fields of mean wave parameters' , & @@ -371,8 +373,8 @@ 'Fields for coupling ' , & 'Restart files second request '/ DATA IDSTR / 'IC1', 'IC2', 'IC3', 'IC4', 'IC5', 'MDN', 'MTH', & - 'MVS', 'LEV', 'CUR', 'WND', 'ICE', 'DT0', 'DT1', & - 'DT2', 'MOV' / + 'MVS', 'LEV', 'CUR', 'WND', 'ICE', 'TAU', 'RHO', & + 'DT0', 'DT1', 'DT2', 'MOV' / ! FLGR2 = .FALSE. FLAGSTIDE(:) = .FALSE. @@ -472,6 +474,8 @@ NDSF(5) = 15 NDSF(6) = 16 NDSF(7) = 17 + NDSF(8) = 18 + NDSF(9) = 19 !/DEBUGINIT WRITE(740+IAPROC,*) 'ww3_shel, step 2' !/DEBUGINIT FLUSH(740+IAPROC) ! @@ -490,6 +494,8 @@ !/NCO NDSF(5) = 16 !/NCO NDSF(6) = 17 !/NCO NDSF(7) = 18 +!/NCO NDSF(8) = 19 +!/NCO NDSF(9) = 20 ! NAPOUT = 1 NAPERR = 1 @@ -561,6 +567,7 @@ ! field has been read from a file. FLLSTL = .FALSE. ! This is associated with J.EQ.1 (wlev) FLLSTI = .FALSE. ! This is associated with J.EQ.4 (ice) + FLLSTR = .FALSE. ! This is associated with J.EQ.6 (rhoa) FLLST_ALL = .FALSE. ! For all !/DEBUGINIT WRITE(740+IAPROC,*) 'ww3_shel, step 3' !/DEBUGINIT FLUSH(740+IAPROC) @@ -603,7 +610,7 @@ ! 2.1 forcing flags - FLH(-7:8)=.FALSE. + FLH(-7:10)=.FALSE. FLAGTFC(-7)=TRIM(NML_INPUT%FORCING%ICE_PARAM1) FLAGTFC(-6)=TRIM(NML_INPUT%FORCING%ICE_PARAM2) FLAGTFC(-5)=TRIM(NML_INPUT%FORCING%ICE_PARAM3) @@ -616,9 +623,11 @@ FLAGTFC(2)=TRIM(NML_INPUT%FORCING%CURRENTS) FLAGTFC(3)=TRIM(NML_INPUT%FORCING%WINDS) FLAGTFC(4)=TRIM(NML_INPUT%FORCING%ICE_CONC) - FLAGTFC(5)=TRIM(NML_INPUT%ASSIM%MEAN) - FLAGTFC(6)=TRIM(NML_INPUT%ASSIM%SPEC1D) - FLAGTFC(7)=TRIM(NML_INPUT%ASSIM%SPEC2D) + FLAGTFC(5)=TRIM(NML_INPUT%FORCING%ATM_MOMENTUM) + FLAGTFC(6)=TRIM(NML_INPUT%FORCING%AIR_DENSITY) + FLAGTFC(7)=TRIM(NML_INPUT%ASSIM%MEAN) + FLAGTFC(8)=TRIM(NML_INPUT%ASSIM%SPEC1D) + FLAGTFC(9)=TRIM(NML_INPUT%ASSIM%SPEC2D) IF (TRIM(NML_INPUT%FORCING%ICE_PARAM1) .EQ. 'H') THEN FLAGTFC(-7)='T' @@ -668,37 +677,31 @@ FLAGTFC(4)='T' FLH(4)=.TRUE. END IF + IF (TRIM(NML_INPUT%FORCING%ATM_MOMENTUM) .EQ. 'H') THEN + FLAGTFC(5)='T' + FLH(5)=.TRUE. + END IF + IF (TRIM(NML_INPUT%FORCING%AIR_DENSITY) .EQ. 'H') THEN + FLAGTFC(6)='T' + FLH(6)=.TRUE. + END IF IF ( IAPROC .EQ. NAPOUT ) WRITE (NDSO,920) - DO J=JFIRST, 7 - IF ( J .LE. 4 ) THEN - IF (FLAGTFC(J).EQ.'T') THEN - INFLAGS1(J)=.TRUE. - FLAGSC(J)=.FALSE. - END IF - IF (FLAGTFC(J).EQ.'F') THEN - INFLAGS1(J)=.FALSE. - FLAGSC(J)=.FALSE. - END IF - IF (FLAGTFC(J).EQ.'C') THEN - INFLAGS1(J)=.TRUE. - FLAGSC(J)=.TRUE. - END IF + DO J=JFIRST, 9 + IF (FLAGTFC(J).EQ.'T') THEN + INFLAGS1(J)=.TRUE. + FLAGSC(J)=.FALSE. + END IF + IF (FLAGTFC(J).EQ.'F') THEN + INFLAGS1(J)=.FALSE. + FLAGSC(J)=.FALSE. + END IF + IF (FLAGTFC(J).EQ.'C') THEN + INFLAGS1(J)=.TRUE. + FLAGSC(J)=.TRUE. + END IF + IF ( J .LE. 6 ) THEN FLH(J) = FLH(J) .AND. INFLAGS1(J) - ELSE - FLH(J) = .FALSE. - IF (FLAGTFC(J).EQ.'T') THEN - INFLAGS1(J)=.TRUE. - FLAGSC(J)=.FALSE. - END IF - IF (FLAGTFC(J).EQ.'F') THEN - INFLAGS1(J)=.FALSE. - FLAGSC(J)=.FALSE. - END IF - IF (FLAGTFC(J).EQ.'C') THEN - INFLAGS1(J)=.TRUE. - FLAGSC(J)=.TRUE. - END IF END IF IF ( INFLAGS1(J) ) THEN YESXNO = 'YES/--' @@ -717,23 +720,24 @@ !/COU IF (FLAGSC(1) .AND. INFLAGS1(2) .AND. .NOT. FLAGSC(2)) GOTO 2102 !/COU IF (FLAGSC(2) .AND. INFLAGS1(1) .AND. .NOT. FLAGSC(1)) GOTO 2102 - INFLAGS1(8) = .FALSE. - FLH(8) = .FALSE. -!/MGW INFLAGS1(8) = .TRUE. -!/MGP INFLAGS1(8) = .TRUE. -!/MGW FLH(8) = .TRUE. -!/MGP FLH(8) = .TRUE. - IF ( INFLAGS1(8) .AND. IAPROC.EQ.NAPOUT ) & - WRITE (NDSO,921) IDFLDS(8), 'YES/--', ' ' + INFLAGS1(10) = .FALSE. +!/MGW INFLAGS1(10) = .TRUE. +!/MGP INFLAGS1(10) = .TRUE. +!/MGW FLH(10) = .TRUE. +!/MGP FLH(10) = .TRUE. + IF ( INFLAGS1(10) .AND. IAPROC.EQ.NAPOUT ) & + WRITE (NDSO,921) IDFLDS(10), 'YES/--', ' ' ! FLFLG = INFLAGS1(-7) .OR. INFLAGS1(-6) .OR. INFLAGS1(-5) .OR. INFLAGS1(-4) & .OR. INFLAGS1(-3) .OR. INFLAGS1(-2) .OR. INFLAGS1(-1) & .OR. INFLAGS1(0) .OR. INFLAGS1(1) .OR. INFLAGS1(2) & .OR. INFLAGS1(3) .OR. INFLAGS1(4) .OR. INFLAGS1(5) & - .OR. INFLAGS1(6) .OR. INFLAGS1(7) + .OR. INFLAGS1(6) .OR. INFLAGS1(7) .OR. INFLAGS1(8) & + .OR. INFLAGS1(9) FLHOM = FLH(-7) .OR. FLH(-6) .OR. FLH(-5) .OR. FLH(-4) & .OR. FLH(-3) .OR. FLH(-2) .OR. FLH(-1) .OR. FLH(0) & - .OR. FLH(1) .OR. FLH(2) .OR. FLH(3) .OR. FLH(4) .OR. FLH(8) + .OR. FLH(1) .OR. FLH(2) .OR. FLH(3) .OR. FLH(4) & + .OR. FLH(5) .OR. FLH(6) .OR. FLH(10) ! IF ( IAPROC .EQ. NAPOUT ) WRITE (NDSO,922) ! @@ -757,7 +761,7 @@ ! 2.3 Domain setup IOSTYP = NML_DOMAIN%IOSTYP - CALL W3IOGR ( 'GRID', NDSF(5) ) + CALL W3IOGR ( 'GRID', NDSF(7) ) IF ( FLAGLL ) THEN FACTOR = 1. ELSE @@ -973,11 +977,13 @@ NH(2) = NML_HOMOG_COUNT%N_CUR NH(3) = NML_HOMOG_COUNT%N_WND NH(4) = NML_HOMOG_COUNT%N_ICE - NH(8) = NML_HOMOG_COUNT%N_MOV + NH(5) = NML_HOMOG_COUNT%N_TAU + NH(6) = NML_HOMOG_COUNT%N_RHO + NH(10) = NML_HOMOG_COUNT%N_MOV ! N_TOT = NML_HOMOG_COUNT%N_TOT ! - DO J=JFIRST,8 + DO J=JFIRST,10 IF ( NH(J) .GT. NHMAX ) GOTO 2006 END DO @@ -1012,8 +1018,12 @@ J=3 CASE ('ICE') J=4 + CASE ('TAU') + J=5 + CASE ('RHO') + J=6 CASE ('MOV') - J=8 + J=10 CASE DEFAULT GOTO 2062 END SELECT @@ -1025,14 +1035,16 @@ END DO END IF -!/O7 DO J=JFIRST, 8 +!/O7 DO J=JFIRST, 10 !/O7 IF ( FLH(J) .AND. IAPROC.EQ.NAPOUT ) THEN !/O7 WRITE (NDSO,952) NH(J), IDFLDS(J) !/O7 DO I=1, NH(J) -!/O7 IF ( ( J .LE. 1 ) .OR. ( J .EQ. 4 ) ) THEN +!/O7 IF ( ( J .LE. 1 ) .OR. ( J .EQ. 4 ) .OR. & +!/O7 ( J .EQ. 6 ) ) THEN !/O7 WRITE (NDSO,953) I, THO(1,J,I), THO(2,J,I), & !/O7 HA(I,J) -!/O7 ELSE IF ( ( J .EQ. 2 ) .OR. (J .EQ. 8) ) THEN +!/O7 ELSE IF ( ( J .EQ. 2 ) .OR. ( J .EQ. 5 ) .OR. & +!/O7 ( J .EQ. 10 ) ) THEN !/O7 WRITE (NDSO,953) I, THO(1,J,I), THO(2,J,I), & !/O7 HA(I,J), HD(I,J) !/O7 ELSE IF ( J .EQ. 3 ) THEN @@ -1055,7 +1067,9 @@ ( FLH(2) .AND. (NH(2).EQ.0) ) .OR. & ( FLH(3) .AND. (NH(3).EQ.0) ) .OR. & ( FLH(4) .AND. (NH(4).EQ.0) ) .OR. & - ( FLH(8) .AND. (NH(8).EQ.0) ) ) GOTO 2007 + ( FLH(5) .AND. (NH(5).EQ.0) ) .OR. & + ( FLH(6) .AND. (NH(6).EQ.0) ) .OR. & + ( FLH(10) .AND. (NH(10).EQ.0) ) ) GOTO 2007 ! END IF ! FLHOM @@ -1085,9 +1099,10 @@ ! 2.1 forcing flags - DO J=JFIRST, 7 + FLH(-7:10) = .FALSE. + DO J=JFIRST, 9 CALL NEXTLN ( COMSTR , NDSI , NDSEN ) - IF ( J .LT. 4 ) THEN + IF ( J .LE. 6 ) THEN !/DEBUGINIT WRITE(740+IAPROC,*) 'Before read 2002, case 2' !/DEBUGINIT FLUSH(740+IAPROC) READ (NDSI,*) FLAGTFC(J), FLH(J) @@ -1101,40 +1116,25 @@ !/DEBUGINIT WRITE(740+IAPROC,*) ' J=', J, ' FLAGTFC=', FLAGTFC(J) !/DEBUGINIT WRITE(740+IAPROC,*) ' After read 2002, case 3' !/DEBUGINIT FLUSH(740+IAPROC) - FLH(J) = .FALSE. END IF END DO IF ( IAPROC .EQ. NAPOUT ) WRITE (NDSO,920) - DO J=JFIRST, 7 - IF ( J .LT. 4 ) THEN - IF (FLAGTFC(J).EQ.'T') THEN - INFLAGS1(J)=.TRUE. - FLAGSC(J)=.FALSE. - END IF - IF (FLAGTFC(J).EQ.'F') THEN - INFLAGS1(J)=.FALSE. - FLAGSC(J)=.FALSE. - END IF - IF (FLAGTFC(J).EQ.'C') THEN - INFLAGS1(J)=.TRUE. - FLAGSC(J)=.TRUE. - END IF + DO J=JFIRST, 9 + IF (FLAGTFC(J).EQ.'T') THEN + INFLAGS1(J)=.TRUE. + FLAGSC(J)=.FALSE. + END IF + IF (FLAGTFC(J).EQ.'F') THEN + INFLAGS1(J)=.FALSE. + FLAGSC(J)=.FALSE. + END IF + IF (FLAGTFC(J).EQ.'C') THEN + INFLAGS1(J)=.TRUE. + FLAGSC(J)=.TRUE. + END IF + IF ( J .LE. 6 ) THEN FLH(J) = FLH(J) .AND. INFLAGS1(J) - ELSE - FLH(J) = .FALSE. - IF (FLAGTFC(J).EQ.'T') THEN - INFLAGS1(J)=.TRUE. - FLAGSC(J)=.FALSE. - END IF - IF (FLAGTFC(J).EQ.'F') THEN - INFLAGS1(J)=.FALSE. - FLAGSC(J)=.FALSE. - END IF - IF (FLAGTFC(J).EQ.'C') THEN - INFLAGS1(J)=.TRUE. - FLAGSC(J)=.TRUE. - END IF END IF IF ( INFLAGS1(J) ) THEN YESXNO = 'YES/--' @@ -1160,23 +1160,24 @@ !/DEBUGINIT WRITE(740+IAPROC,*) 'ww3_shel, step 5' !/DEBUGINIT FLUSH(740+IAPROC) ! - INFLAGS1(8) = .FALSE. - FLH(8) = .FALSE. -!/MGW INFLAGS1(8) = .TRUE. -!/MGP INFLAGS1(8) = .TRUE. -!/MGW FLH(8) = .TRUE. -!/MGP FLH(8) = .TRUE. - IF ( INFLAGS1(8) .AND. IAPROC.EQ.NAPOUT ) & - WRITE (NDSO,921) IDFLDS(8), 'YES/--', ' ' + INFLAGS1(10) = .FALSE. +!/MGW INFLAGS1(10) = .TRUE. +!/MGP INFLAGS1(10) = .TRUE. +!/MGW FLH(10) = .TRUE. +!/MGP FLH(10) = .TRUE. + IF ( INFLAGS1(10) .AND. IAPROC.EQ.NAPOUT ) & + WRITE (NDSO,921) IDFLDS(10), 'YES/--', ' ' ! FLFLG = INFLAGS1(-7) .OR. INFLAGS1(-6) .OR. INFLAGS1(-5) .OR. INFLAGS1(-4) & .OR. INFLAGS1(-3) .OR. INFLAGS1(-2) .OR. INFLAGS1(-1) & .OR. INFLAGS1(0) .OR. INFLAGS1(1) .OR. INFLAGS1(2) & .OR. INFLAGS1(3) .OR. INFLAGS1(4) .OR. INFLAGS1(5) & - .OR. INFLAGS1(6) .OR. INFLAGS1(7) + .OR. INFLAGS1(6) .OR. INFLAGS1(7) .OR. INFLAGS1(8) & + .OR. INFLAGS1(9) FLHOM = FLH(-7) .OR. FLH(-6) .OR. FLH(-5) .OR. FLH(-4) & .OR. FLH(-3) .OR. FLH(-2) .OR. FLH(-1) .OR. FLH(0) & - .OR. FLH(1) .OR. FLH(2) .OR. FLH(3) .OR. FLH(4) .OR. FLH(8) + .OR. FLH(1) .OR. FLH(2) .OR. FLH(3) .OR. FLH(4) & + .OR. FLH(5) .OR. FLH(6) .OR. FLH(10) ! IF ( IAPROC .EQ. NAPOUT ) WRITE (NDSO,922) ! @@ -1219,7 +1220,7 @@ !/DEBUGINIT write(740+IAPROC,*), 'Before read 2002, case 6' READ (NDSI,*) IOSTYP !/DEBUGINIT write(740+IAPROC,*), ' After read 2002, case 6' - CALL W3IOGR ( 'GRID', NDSF(5) ) + CALL W3IOGR ( 'GRID', NDSF(7) ) IF ( FLAGLL ) THEN FACTOR = 1. ELSE @@ -1487,7 +1488,8 @@ IDTST.NE.IDSTR(-1) .AND. IDTST.NE.IDSTR(0) .AND. & IDTST.NE.IDSTR(1) .AND. IDTST.NE.IDSTR(2) .AND. & IDTST.NE.IDSTR(3) .AND. IDTST.NE.IDSTR(4) .AND. & - IDTST.NE.IDSTR(8) .AND. IDTST.NE.'STP' ) GOTO 2005 + IDTST.NE.IDSTR(5) .AND. IDTST.NE.IDSTR(6) .AND. & + IDTST.NE.IDSTR(10) .AND. IDTST.NE.'STP' ) GOTO 2005 ! Stop conditions IF ( IDTST .EQ. 'STP' ) THEN @@ -1497,7 +1499,7 @@ END IF ! Store data - DO J=LBOUND(IDSTR,1), 8 + DO J=LBOUND(IDSTR,1), 10 IF ( IDTST .EQ. IDSTR(J) ) THEN NH(J) = NH(J) + 1 IF ( NH(J) .GT. NHMAX ) GOTO 2006 @@ -1525,12 +1527,24 @@ THO(1,J,NH(J)), THO(2,J,NH(J)), & HA(NH(J),J) !/DEBUGINIT write(740+IAPROC,*), ' After read 2002, case 15' - ELSE IF ( J .EQ. 8 ) THEN ! mov: HA and HD + ELSE IF ( J .EQ. 5 ) THEN ! atmospheric momentum !/DEBUGINIT write(740+IAPROC,*), 'Before read 2002, case 16' READ (NDSI,*) IDTST, & THO(1,J,NH(J)), THO(2,J,NH(J)), & - HA(NH(J),J), HD(NH(J),J) + HA(NH(J),J), HD(NH(J),j) !/DEBUGINIT write(740+IAPROC,*), ' After read 2002, case 16' + ELSE IF ( J .EQ. 6 ) THEN ! air density +!/DEBUGINIT write(740+IAPROC,*), 'Before read 2002, case 17' + READ (NDSI,*) IDTST, & + THO(1,J,NH(J)), THO(2,J,NH(J)), & + HA(NH(J),J) +!/DEBUGINIT write(740+IAPROC,*), ' After read 2002, case 16' + ELSE IF ( J .EQ. 10 ) THEN ! mov: HA and HD +!/DEBUGINIT write(740+IAPROC,*), 'Before read 2002, case 18' + READ (NDSI,*) IDTST, & + THO(1,J,NH(J)), THO(2,J,NH(J)), & + HA(NH(J),J), HD(NH(J),J) +!/DEBUGINIT write(740+IAPROC,*), ' After read 2002, case 18' END IF END IF END DO @@ -1541,14 +1555,16 @@ !/MEMCHECK call printMallInfo(IAPROC,mallInfos) ! -!/O7 DO J=JFIRST, 8 +!/O7 DO J=JFIRST, 10 !/O7 IF ( FLH(J) .AND. IAPROC.EQ.NAPOUT ) THEN !/O7 WRITE (NDSO,952) NH(J), IDFLDS(J) !/O7 DO I=1, NH(J) -!/O7 IF ( ( J .LE. 1 ) .OR. ( J .EQ. 4 ) ) THEN +!/O7 IF ( ( J .LE. 1 ) .OR. ( J .EQ. 4 ) .OR. & +!/O7 ( J .EQ. 6 ) ) THEN !/O7 WRITE (NDSO,953) I, THO(1,J,I), THO(2,J,I), & !/O7 HA(I,J) -!/O7 ELSE IF ( ( J .EQ. 2 ) .OR. (J .EQ. 8) ) THEN +!/O7 ELSE IF ( ( J .EQ. 2 ) .OR. ( J .EQ. 5 ) .OR. & +!/O7 ( J .EQ. 10 ) ) THEN !/O7 WRITE (NDSO,953) I, THO(1,J,I), THO(2,J,I), & !/O7 HA(I,J), HD(I,J) !/O7 ELSE IF ( J .EQ. 3 ) THEN @@ -1572,7 +1588,9 @@ ( FLH(2) .AND. (NH(2).EQ.0) ) .OR. & ( FLH(3) .AND. (NH(3).EQ.0) ) .OR. & ( FLH(4) .AND. (NH(4).EQ.0) ) .OR. & - ( FLH(8) .AND. (NH(8).EQ.0) ) ) GOTO 2007 + ( FLH(5) .AND. (NH(5).EQ.0) ) .OR. & + ( FLH(6) .AND. (NH(6).EQ.0) ) .OR. & + ( FLH(10) .AND. (NH(10).EQ.0) ) ) GOTO 2007 ! END IF ! FLHOM @@ -1596,7 +1614,7 @@ 'Preparing input files ...' ! - DO J=JFIRST, 4 + DO J=JFIRST, 6 !/DEBUGINIT write(740+IAPROC,*), 'J=',J,'INFLAGS1(J)=',INFLAGS1(J), 'FLAGSC(J)=', FLAGSC(J) IF ( INFLAGS1(J) .AND. .NOT. FLAGSC(J)) THEN IF ( FLH(J) ) THEN @@ -1616,7 +1634,7 @@ END IF END DO ! - DO J=5, 7 + DO J=7, 9 IF ( INFLAGS1(J) .AND. .NOT. FLAGSC(J)) THEN CALL W3FLDO ('READ', IDSTR(J), NDSF(J), NDST, NDSEN, & RCLD(J), NY, NODATA(J), & @@ -1940,17 +1958,19 @@ !/T IDSTR(2), INFLAGS1(2), TC0, TCN, & !/T IDSTR(3), INFLAGS1(3), TW0, TWN, & !/T IDSTR(4), INFLAGS1(4), TIN, & -!/T IDSTR(5), INFLAGS1(5), T0N, & -!/T IDSTR(6), INFLAGS1(6), T1N, & -!/T IDSTR(7), INFLAGS1(7), T2N, & -!/T IDSTR(8), INFLAGS1(8), TG0, TGN +!/T IDSTR(5), INFLAGS1(5), TU0, TUN, & +!/T IDSTR(6), INFLAGS1(6), TRN, & +!/T IDSTR(7), INFLAGS1(7), T0N, & +!/T IDSTR(8), INFLAGS1(8), T1N, & +!/T IDSTR(9), INFLAGS1(9), T2N, & +!/T IDSTR(10), INFLAGS1(10), TG0, TGN ! !/MEMCHECK write(740+IAPROC,*) 'memcheck_____:', 'WW3_SHEL SECTION 7' !/MEMCHECK call getMallocInfo(mallinfos) !/MEMCHECK call printMallInfo(IAPROC,mallInfos) - DO J=JFIRST,8 + DO J=JFIRST,10 ! !/MEMCHECK write(740+IAPROC,*) 'memcheck_____:', 'WW3_SHEL UPDATE', J !/MEMCHECK call getMallocInfo(mallinfos) @@ -2209,7 +2229,7 @@ IF ( FLH(J) ) THEN CALL W3FLDH (J, NDST, NDSEN, NX, NY, NX, NY, & TIME0, TIMEN, NH(J), NHMAX, THO, HA, HD, HS,& - TW0, WX0, WY0, DT0, TWN, WXN, WYN, DTN, IERR) + TTT, XXX, XXX, XXX, TIN, XXX, BERGI, ICEI, IERR) ELSE !/OASIS COUPL_COMM = MPI_COMM !/OASICM IF (FLAGSC(J)) FLAGSCI = .TRUE. @@ -2232,8 +2252,51 @@ !/NCC WRITE(9752) TIN, ICEI END IF -! Assim data +! TAU : atmospheric momentum ELSE IF ( J .EQ. 5 ) THEN + IF ( FLH(J) ) THEN + CALL W3FLDH (J, NDST, NDSEN, NX, NY, NX, NY, & + TIME0, TIMEN, NH(J), NHMAX, THO, HA, HD, HS,& + TU0, UX0, UY0, XXX, TUN, UXN, UYN, XXX, IERR) +! +!/SMC !!Li Reshape the UX0/N UY0/N space for sea-point only current. +!/SMC !!Li JGLi26Jun2018. +!/SMC ELSE IF( FSWND ) THEN +!/SMC CALL W3FLDG ('READ', IDSTR(J), NDSF(J), NDST, & +!/SMC NDSEN, NSEA, 1, NSEA, 1, TIME0, TIMEN, TU0, & +!/SMC UX0, UY0, XXX, TUN, UXN, UYN, XXX, IERR) +!/SMC !!Li + ELSE +!/OASIS COUPL_COMM = MPI_COMM +!/OASACM IF (.NOT.FLAGSC(J)) ID_OASIS_TIME = -1 + CALL W3FLDG ('READ', IDSTR(J), NDSF(J), & + NDST, NDSEN, NX, NY, NX, NY, TIME0, TIMEN, & + TU0, UX0, UY0, XXX, TUN, UXN, UYN, XXX, & + IERR, FLAGSC(J) & +!/OASACM , COUPL_COMM & + ) + END IF + +! RHO : air density + ELSE IF ( J .EQ. 6 ) THEN + IF ( FLH(J) ) THEN + CALL W3FLDH (J, NDST, NDSEN, NX, NY, NX, NY, & + TIME0, TIMEN, NH(J), NHMAX, THO, HA, HD, HS,& + TTT, XXX, XXX, XXX, TRN, XXX, XXX, RAIR, IERR) + ELSE +!/OASIS COUPL_COMM = MPI_COMM +!/OASACM IF (.NOT.FLAGSC(J)) ID_OASIS_TIME = -1 + CALL W3FLDG ('READ', IDSTR(J), NDSF(J), & + NDST, NDSEN, NX, NY, NX, NY, TIME0, TIMEN, & + TTT, XXX, XXX, XXX, TRN, XXX, XXX, RAIR, & + IERR, FLAGSC(J) & +!/OASASCM , COUPL_COMM & + ) + IF ( IERR .LT. 0 ) FLLSTR = .TRUE. + END IF + +! Assim data + ELSE IF ( J .EQ. 7 ) THEN CALL W3FLDD ('SIZE', IDSTR(J), NDSF(J), NDST, & NDSEN, TIME0, T0N, RCLD(J), NDT(J), & NDTNEW, DATA0, IERR ) @@ -2250,7 +2313,7 @@ END IF ! Assim data - ELSE IF ( J .EQ. 6 ) THEN + ELSE IF ( J .EQ. 8 ) THEN CALL W3FLDD ('SIZE', IDSTR(J), NDSF(J), NDST, & NDSEN, TIME0, T1N, RCLD(J), NDT(J), & NDTNEW, DATA1, IERR ) @@ -2267,7 +2330,7 @@ END IF ! Assim data - ELSE IF ( J .EQ. 7 ) THEN + ELSE IF ( J .EQ. 9 ) THEN CALL W3FLDD ('SIZE', IDSTR(J), NDSF(J), NDST, & NDSEN, TIME0, T2N, RCLD(J), NDT(J), & NDTNEW, DATA2, IERR ) @@ -2284,7 +2347,7 @@ END IF ! Track - ELSE IF ( J .EQ. 8 ) THEN + ELSE IF ( J .EQ. 10 ) THEN CALL W3FLDM (4, NDST, NDSEN, TIME0, TIMEN, NH(4), & NHMAX, THO, HA, HD, TG0, GA0, GD0, & TGN, GAN, GDN, IERR) @@ -2311,7 +2374,8 @@ (FLLST_ALL(J) .AND. J.EQ.-2) .OR. & (FLLST_ALL(J) .AND. J.EQ.-1) .OR. & (FLLST_ALL(J) .AND. J.EQ.0 ) .OR. & - (FLLSTI .AND. J.EQ.4) ) ) THEN + (FLLSTI .AND. J.EQ.4) .OR. & + (FLLSTR .AND. J.EQ.6) ) ) THEN TTIME = TTT ! notes: if model has run out beyond field input, then this line should not ! be reached. @@ -2320,7 +2384,7 @@ ! END IF ! INFLAGSC1(J) ! - END DO ! J=JFIRST,8 + END DO ! J=JFIRST,10 ! ! update the next assimilation data time ! @@ -2331,7 +2395,7 @@ TDN = TTIME CALL TICK21 ( TDN, 1. ) - DO J=5, 7 + DO J=7, 9 IF ( INFLAGS1(J) ) THEN TTT = TFN(:,J) DTTST = DSEC21 ( TTT , TDN ) @@ -2352,10 +2416,12 @@ !/T IDSTR(2), INFLAGS1(2), TC0, TCN, & !/T IDSTR(3), INFLAGS1(3), TW0, TWN, & !/T IDSTR(4), INFLAGS1(4), TIN, & -!/T IDSTR(5), INFLAGS1(5), T0N, & -!/T IDSTR(6), INFLAGS1(6), T1N, & -!/T IDSTR(7), INFLAGS1(7), T2N, TDN, & -!/T IDSTR(8), INFLAGS1(8), TG0, TGN +!/T IDSTR(5), INFLAGS1(5), TU0, TUN, & +!/T IDSTR(6), INFLAGS1(6), TRN, & +!/T IDSTR(7), INFLAGS1(7), T0N, & +!/T IDSTR(8), INFLAGS1(8), T1N, & +!/T IDSTR(9), INFLAGS1(9), T2N, TDN, & +!/T IDSTR(10), INFLAGS1(10), TG0, TGN ! IF ( IAPROC .EQ. NAPOUT ) WRITE (NDSO,*) ' ' ! @@ -2375,8 +2441,10 @@ ! of the files. This feature existed in v3.14. ! "1" is for water levels ! "4" is for ice concentration: + ! "6" is for air density: IF ( FLLSTL ) INFLAGS1(1) = .FALSE. IF ( FLLSTI ) INFLAGS1(4) = .FALSE. + IF ( FLLSTR ) INFLAGS1(6) = .FALSE. ! We include something like this for mud and ice parameters also: DO J=-7,0 diff --git a/model/inp/ww3_multi.inp b/model/inp/ww3_multi.inp index 59a5fd454..fad6efc4d 100644 --- a/model/inp/ww3_multi.inp +++ b/model/inp/ww3_multi.inp @@ -25,10 +25,11 @@ $ If there are input data grids defined ( NRINP > 0 ), then these $ grids are defined first. These grids are defined as if they are wave $ model grids using the file mod_def.MODID. Each grid is defined on $ a separate input line with MODID, and eight input flags identifying -$ the presence of 1) water levels 2) currents 3) winds 4) ice and -$ 5-7) assimilation data as in the file ww3_shel.inp. +$ the presence of 1) water levels 2) currents 3) winds 4) ice +$ 5) momentum 6) air density and 7-9) assimilation data as in the +$ file ww3_shel.inp. $ - 'input' F F T F F F F + 'input' F F T F F F F F F $ $ In this example, we need the file mod_def.input to define the grid $ and the file wind.input to provide the corresponding wind data. @@ -51,8 +52,8 @@ $ Now each actual wave model grid is defined using 13 parameters to be $ read from a single line in the file. Each line contains the following $ parameters $ 1) Define the grid with the extension of the mod_def file. -$ 2-8) Define the inputs used by the grids with 8 keywords -$ corresponding to the 8 flags defining the input in the +$ 2-10) Define the inputs used by the grids with 10 keywords +$ corresponding to the 10 flags defining the input in the $ input files. Valid keywords are: $ 'no' : This input is not used. $ 'native' : This grid has its own input files, e.g. grid @@ -60,24 +61,24 @@ $ grdX (mod_def.grdX) uses ice.grdX. $ 'MODID' : Take input from the grid identified by $ MODID. In the example below, all grids get $ their wind from wind.input (mod_def.input). -$ 9) Rank number of grid (internally sorted and reassigned). -$ 10) Group number (internally reassigned so that different +$ 11) Rank number of grid (internally sorted and reassigned). +$ 12) Group number (internally reassigned so that different $ ranks result in different group numbers. -$ 11-12) Define fraction of communicator (processes) used for this +$ 13-14) Define fraction of communicator (processes) used for this $ grid. '0.00 1.00' is appropriate in many cases. Partial $ fractions, i.e. settings other than '0.00 1.00', are $ intended for equal rank grids, to improve scaling. The $ commented example provided here (partial fractions with $ non-equal rank) is not generally recommended. -$ 13) Flag identifying dumping of boundary data used by this +$ 15) Flag identifying dumping of boundary data used by this $ grid. If true, the file nest.MODID is generated. $ - 'grd1' 'no' 'no' 'input' 'no' 'no' 'no' 'no' 1 1 0.00 1.00 F - 'grd2' 'no' 'no' 'input' 'no' 'no' 'no' 'no' 2 1 0.00 1.00 F - 'grd3' 'no' 'no' 'input' 'no' 'no' 'no' 'no' 3 1 0.00 1.00 F -$ 'grd1' 'no' 'no' 'input' 'no' 'no' 'no' 'no' 1 1 0.00 0.50 F -$ 'grd2' 'no' 'no' 'input' 'no' 'no' 'no' 'no' 2 1 0.25 0.75 F -$ 'grd3' 'no' 'no' 'input' 'no' 'no' 'no' 'no' 3 1 0.50 1.00 F + 'grd1' 'no' 'no' 'input' 'no' 'no' 'no' 'no' 'no' 'no' 1 1 0.00 1.00 F + 'grd2' 'no' 'no' 'input' 'no' 'no' 'no' 'no' 'no' 'no' 2 1 0.00 1.00 F + 'grd3' 'no' 'no' 'input' 'no' 'no' 'no' 'no' 'no' 'no' 3 1 0.00 1.00 F +$ 'grd1' 'no' 'no' 'input' 'no' 'no' 'no' 'no' 'no' 'no' 1 1 0.00 0.50 F +$ 'grd2' 'no' 'no' 'input' 'no' 'no' 'no' 'no' 'no' 'no' 2 1 0.25 0.75 F +$ 'grd3' 'no' 'no' 'input' 'no' 'no' 'no' 'no' 'no' 'no' 3 1 0.50 1.00 F $ $ In this example three grids are used requiring the files $ mod_def.grdN. All files get their winds from the grid 'input' diff --git a/model/inp/ww3_ounf.inp b/model/inp/ww3_ounf.inp index 162a7d0ba..5c645d123 100644 --- a/model/inp/ww3_ounf.inp +++ b/model/inp/ww3_ounf.inp @@ -12,11 +12,11 @@ $ Output request flags identifying fields as in ww3_shel.inp. See that $ file for a full documentation of field output options. Namelist type $ selection is used here (for alternative F/T flags, see ww3_shel.inp). $ -$ DPT CUR WND AST WLV ICE IBG D50 IC1 IC5 HS LM T02 T0M1 T01 FP DIR SPR -$ DP HIG EF TH1M STH1M TH2M STH2M WN PHS PTP PLP PDIR PSPR PWS PDP +$ DPT CUR WND AST WLV ICE IBG TAU RHO D50 IC1 IC5 HS LM T02 T0M1 T01 FP +$ DIR SPR DP HIG EF TH1M STH1M TH2M STH2M WN PHS PTP PLP PDIR PSPR PWS PDP $ PQP PPE PGW PSW PTM10 PT01 PT02 PEP TWS PNR UST CHA CGE FAW TAW TWA WCC $ WCF WCH WCM SXY TWO BHD FOC TUS USS P2S USF P2L TWI FIC ABR UBR BED -$ FBB TBB MSS MSC DTD FC CFX CFD CFK U1 U2 +$ FBB TBB MSS MSC DTD FC CFX CFD CFK U1 U2 WNM TOC $ N DPT HS FP T01 diff --git a/model/inp/ww3_prep.inp b/model/inp/ww3_prep.inp index 40f134edf..f21394f53 100644 --- a/model/inp/ww3_prep.inp +++ b/model/inp/ww3_prep.inp @@ -11,6 +11,8 @@ $ WND Winds. $ WNS Winds (including air-sea temp. dif.) $ CUR Currents. $ DAT Data for assimilation. +$ TAU Atmospheric momentum +$ RHO Air density $ $ Format types : AI Transfer field 'as is'. $ LL Field defined on rectilinear grid (in same diff --git a/model/inp/ww3_prnc.inp b/model/inp/ww3_prnc.inp index 0523f68af..1cb95ac05 100644 --- a/model/inp/ww3_prnc.inp +++ b/model/inp/ww3_prnc.inp @@ -11,6 +11,8 @@ $ WND Winds. $ WNS Winds (including air-sea temp. dif.) $ CUR Currents. $ DAT Data for assimilation. +$ TAU Atmospheric momentum +$ RHO Air density $ $ Format types : AI Transfer field 'as is'. (ITYPE 1) $ LL Field defined on regular longitude-latitude diff --git a/model/inp/ww3_shel.inp b/model/inp/ww3_shel.inp index 38413c577..4d3d14893 100644 --- a/model/inp/ww3_shel.inp +++ b/model/inp/ww3_shel.inp @@ -16,7 +16,9 @@ $ Include ice and mud parameters only if IC1/2/3/4 used : F F Water levels F F Currents T T Winds - T Ice concentrations + T F Ice concentrations + F F Atmospheric momentum + F F Air density F Assimilation data : Mean parameters F Assimilation data : 1-D spectra F Assimilation data : 2-D spectra diff --git a/model/nml/ww3_multi.nml b/model/nml/ww3_multi.nml index ee1862e59..06b971332 100644 --- a/model/nml/ww3_multi.nml +++ b/model/nml/ww3_multi.nml @@ -50,6 +50,8 @@ ! INPUT(I)%FORCING%WATER_LEVELS = F ! INPUT(I)%FORCING%CURRENTS = F ! INPUT(I)%FORCING%WINDS = F +! INPUT(I)%FORCING%ATM_MOMENTUM = F +! INPUT(I)%FORCING%AIR_DENSITY = F ! INPUT(I)%FORCING%ICE_CONC = F ! INPUT(I)%FORCING%ICE_PARAM1 = F ! INPUT(I)%FORCING%ICE_PARAM2 = F diff --git a/model/nml/ww3_ounf.nml b/model/nml/ww3_ounf.nml index d1c3ff494..5340ffbbd 100644 --- a/model/nml/ww3_ounf.nml +++ b/model/nml/ww3_ounf.nml @@ -7,12 +7,12 @@ ! Define the output fields to postprocess via FIELD_NML namelist ! ! * the detailed list of field names FIELD%LIST is given in ww3_shel.nml -! DPT CUR WND AST WLV ICE IBG D50 IC1 IC5 -! HS LM T02 T0M1 T01 FP DIR SPR DP HIG +! DPT CUR WND AST WLV ICE TAU RHO IBG D50 IC1 IC5 +! HS LM T02 T0M1 T01 FP DIR SPR DP HIG WNM ! EF TH1M STH1M TH2M STH2M WN ! PHS PTP PLP PDIR PSPR PWS PDP PQP PPE PGW PSW PTM10 PT01 PT02 PEP TWS PNR ! UST CHA CGE FAW TAW TWA WCC WCF WCH WCM FWS -! SXY TWO BHD FOC TUS USS P2S USF P2L TWI FIC +! SXY TWO BHD FOC TUS USS P2S USF P2L TWI FIC TOC ! ABR UBR BED FBB TBB ! MSS MSC WL02 AXT AYT AXY ! DTD FC CFX CFD CFK diff --git a/model/nml/ww3_prnc.nml b/model/nml/ww3_prnc.nml index 3928ee95f..38d69c32d 100644 --- a/model/nml/ww3_prnc.nml +++ b/model/nml/ww3_prnc.nml @@ -27,6 +27,8 @@ ! FORCING%FIELD%CURRENTS = f ! Current (2-components) ! FORCING%FIELD%WINDS = f ! Wind (2-components) ! FORCING%FIELD%WIND_AST = f ! Wind and air-sea temp. dif. (3-components) +! INPUT%FORCING%ATM_MOMENTUM = f ! Atmospheric momentum (2-components) +! INPUT%FORCING%AIR_DENSITY = f ! Air density (1-component) ! FORCING%FIELD%ICE_CONC = f ! Ice concentration (1-component) ! FORCING%FIELD%ICE_BERG = f ! Icebergs and sea ice concentration (2-components) ! FORCING%FIELD%DATA_ASSIM = f ! Data for assimilation (1-component) diff --git a/model/nml/ww3_shel.nml b/model/nml/ww3_shel.nml index 9d96cd633..8339caa86 100644 --- a/model/nml/ww3_shel.nml +++ b/model/nml/ww3_shel.nml @@ -46,6 +46,8 @@ ! INPUT%FORCING%WATER_LEVELS = 'F' ! INPUT%FORCING%CURRENTS = 'F' ! INPUT%FORCING%WINDS = 'F' +! INPUT%FORCING%ATM_MOMENTUM = 'F' +! INPUT%FORCING%AIR_DENSITY = 'F' ! INPUT%FORCING%ICE_CONC = 'F' ! INPUT%FORCING%ICE_PARAM1 = 'F' ! INPUT%FORCING%ICE_PARAM2 = 'F' diff --git a/regtests/bin/matrix.base b/regtests/bin/matrix.base index ea67a7b51..6c9db2621 100755 --- a/regtests/bin/matrix.base +++ b/regtests/bin/matrix.base @@ -695,19 +695,33 @@ if [ "$prop2D" = 'y' ] then echo ' ' >> matrix.body - echo "$rtst -s PR3_UQ -w work_PR3_UQ $ww3 ww3_tp2.1" >> matrix.body - echo "$rtst -s PR3_UQ -w work_PR3_UQ $ww3 ww3_tp2.2" >> matrix.body - echo "$rtst -s PR3_UQ -w work_PR3_UQ $ww3 ww3_tp2.3" >> matrix.body - echo "$rtst -s PR3_UQ -w work_PR3_UQ $ww3 ww3_tp2.4" >> matrix.body - echo "$rtst -s PR3_UQ -w work_PR3_UQ_curv -g curv $ww3 ww3_tp2.4" >> matrix.body - echo "$rtst -s PR3_UQ -w work_PR3_UQ $ww3 ww3_tp2.5" >> matrix.body - echo "$rtst -s PR3_UQ -w work_PR3_UQ_a -g a $ww3 ww3_tp2.9" >> matrix.body - echo "$rtst -s PR3_UQ -w work_PR3_UQ_b -g b $ww3 ww3_tp2.9" >> matrix.body - echo "$rtst -w work_PR3_UQ -o netcdf $ww3 ww3_tp2.8" >> matrix.body - echo "$rtst -s PR3_UQ -w work_PR3_UQ $ww3 ww3_tp2.13" >> matrix.body - echo "$rtst -o netcdf -w work_PR3_UQ $ww3 ww3_tp2.15" >> matrix.body - echo "$rtst -o netcdf -w work_5km -g 5km $ww3 ww3_tp2.15" >> matrix.body - echo "$rtst -s TIDE -w work_TIDE -o netcdf $ww3 ww3_tp2.18" >> matrix.body + echo "$rtst -s PR3_UQ -w work_PR3_UQ $ww3 ww3_tp2.1" >> matrix.body + echo "$rtst -s PR3_UQ -w work_PR3_UQ $ww3 ww3_tp2.2" >> matrix.body + echo "$rtst -s PR3_UQ -w work_PR3_UQ $ww3 ww3_tp2.3" >> matrix.body + echo "$rtst -s PR3_UQ -w work_PR3_UQ $ww3 ww3_tp2.4" >> matrix.body + echo "$rtst -s PR3_UQ -w work_PR3_UQ_curv -g curv $ww3 ww3_tp2.4" >> matrix.body + echo "$rtst -s PR3_UQ -w work_PR3_UQ $ww3 ww3_tp2.5" >> matrix.body + echo "$rtst -s PR3_UQ -w work_PR3_UQ_a -g a $ww3 ww3_tp2.9" >> matrix.body + echo "$rtst -s PR3_UQ -w work_PR3_UQ_b -g b $ww3 ww3_tp2.9" >> matrix.body + echo "$rtst -o netcdf -w work_PR3_UQ $ww3 ww3_tp2.8" >> matrix.body + echo "$rtst -s PR3_UQ -w work_PR3_UQ $ww3 ww3_tp2.13" >> matrix.body + echo "$rtst -o netcdf -w work_PR3_UQ $ww3 ww3_tp2.15" >> matrix.body + echo "$rtst -o netcdf -w work_5km -g 5km $ww3 ww3_tp2.15" >> matrix.body + echo "$rtst -o netcdf -i input_rho -w work_PR3_UQ_RHO -r ww3_grid $ww3 ww3_tp2.15" >> matrix.body + echo "$rtst -o netcdf -i input_rho -w work_PR3_UQ_RHO -r ww3_strt $ww3 ww3_tp2.15" >> matrix.body + echo "cp ww3_tp2.15/input_rho/ww3_prnc_RHO.inp ww3_tp2.15/input_rho/ww3_prnc.inp" >> matrix.body + echo "$rtst -o netcdf -i input_rho -w work_PR3_UQ_RHO -r ww3_prnc $ww3 ww3_tp2.15" >> matrix.body + echo "mv ww3_tp2.15/work_PR3_UQ_RHO/ww3_prnc.out ww3_tp2.15/work_PR3_UQ_RHO/ww3_prnc_RHO.inp" >> matrix.body + echo "cp ww3_tp2.15/input_rho/ww3_prnc_TAU.inp ww3_tp2.15/input_rho/ww3_prnc.inp" >> matrix.body + echo "$rtst -o netcdf -i input_rho -w work_PR3_UQ_RHO -r ww3_prnc $ww3 ww3_tp2.15" >> matrix.body + echo "mv ww3_tp2.15/work_PR3_UQ_RHO/ww3_prnc.out ww3_tp2.15/work_PR3_UQ_RHO/ww3_prnc_TAU.inp" >> matrix.body + echo "cp ww3_tp2.15/input_rho/ww3_prnc_WND.inp ww3_tp2.15/input_rho/ww3_prnc.inp" >> matrix.body + echo "$rtst -o netcdf -i input_rho -w work_PR3_UQ_RHO -r ww3_prnc $ww3 ww3_tp2.15" >> matrix.body + echo "mv ww3_tp2.15/work_PR3_UQ_RHO/ww3_prnc.out ww3_tp2.15/work_PR3_UQ_RHO/ww3_prnc_WND.inp" >> matrix.body + echo "$rtst -o netcdf -i input_rho -w work_PR3_UQ_RHO -r ww3_shel $ww3 ww3_tp2.15" >> matrix.body + echo "$rtst -o netcdf -i input_rho -w work_PR3_UQ_RHO -r ww3_ounf $ww3 ww3_tp2.15" >> matrix.body + echo "$rtst -o netcdf -i input_rho -w work_PR3_UQ_RHO -r ww3_ounp $ww3 ww3_tp2.15" >> matrix.body + echo "$rtst -o netcdf -s TIDE -w work_TIDE $ww3 ww3_tp2.18" >> matrix.body fi if [ "$multi01" = 'y' ] @@ -785,19 +799,33 @@ if [ "$prop2D" = 'y' ] then echo ' ' >> matrix.body - echo "$rtst -s MPI -w work_PR3_UQ_MPI -f -p $mpi -n $np $ww3 ww3_tp1.9" >> matrix.body - echo "$rtst -s PR3_UQ_MPI -w work_PR3_UQ_MPI -f -p $mpi -n $np $ww3 ww3_tp2.1" >> matrix.body - echo "$rtst -s PR3_UQ_MPI -w work_PR3_UQ_MPI -f -p $mpi -n $np $ww3 ww3_tp2.2" >> matrix.body - echo "$rtst -s PR3_UQ_MPI -w work_PR3_UQ_MPI -f -p $mpi -n $np $ww3 ww3_tp2.3" >> matrix.body - echo "$rtst -s PR3_UQ_MPI -w work_PR3_UQ_MPI -f -p $mpi -n $np $ww3 ww3_tp2.4" >> matrix.body - echo "$rtst -s PR3_UQ_MPI -w work_PR3_UQ_curv_MPI -g curv -f -p $mpi -n $np $ww3 ww3_tp2.4" >> matrix.body - echo "$rtst -s PR3_UQ_MPI -w work_PR3_UQ_MPI -f -p $mpi -n $np $ww3 ww3_tp2.5" >> matrix.body - echo "$rtst -s PR3_UQ_MPI -w work_PR3_UQ_a_MPI -g a -f -p $mpi -n $np $ww3 ww3_tp2.9" >> matrix.body - echo "$rtst -s PR3_UQ_MPI -w work_PR3_UQ_b_MPI -g b -f -p $mpi -n $np $ww3 ww3_tp2.9" >> matrix.body - echo "$rtst -s PR3_UQ_MPI -w work_PR3_UQ_MPI -f -p $mpi -n $np $ww3 ww3_tp2.13" >> matrix.body - echo "$rtst -s MPI -w work_PR3_UQ_MPI -f -p $mpi -n $np $ww3 ww3_tp2.15" >> matrix.body - echo "$rtst -s MPI -w work_MPI_5km -g 5km -f -p $mpi -n $np $ww3 ww3_tp2.15" >> matrix.body - echo "$rtst -s TIDE_MPI -w work_TIDE_MPI -o netcdf -f -p $mpi -n $np $ww3 ww3_tp2.18" >> matrix.body + echo "$rtst -s MPI -w work_PR3_UQ_MPI -f -p $mpi -n $np $ww3 ww3_tp1.9" >> matrix.body + echo "$rtst -s PR3_UQ_MPI -w work_PR3_UQ_MPI -f -p $mpi -n $np $ww3 ww3_tp2.1" >> matrix.body + echo "$rtst -s PR3_UQ_MPI -w work_PR3_UQ_MPI -f -p $mpi -n $np $ww3 ww3_tp2.2" >> matrix.body + echo "$rtst -s PR3_UQ_MPI -w work_PR3_UQ_MPI -f -p $mpi -n $np $ww3 ww3_tp2.3" >> matrix.body + echo "$rtst -s PR3_UQ_MPI -w work_PR3_UQ_MPI -f -p $mpi -n $np $ww3 ww3_tp2.4" >> matrix.body + echo "$rtst -s PR3_UQ_MPI -w work_PR3_UQ_curv_MPI -g curv -f -p $mpi -n $np $ww3 ww3_tp2.4" >> matrix.body + echo "$rtst -s PR3_UQ_MPI -w work_PR3_UQ_MPI -f -p $mpi -n $np $ww3 ww3_tp2.5" >> matrix.body + echo "$rtst -s PR3_UQ_MPI -w work_PR3_UQ_a_MPI -g a -f -p $mpi -n $np $ww3 ww3_tp2.9" >> matrix.body + echo "$rtst -s PR3_UQ_MPI -w work_PR3_UQ_b_MPI -g b -f -p $mpi -n $np $ww3 ww3_tp2.9" >> matrix.body + echo "$rtst -s PR3_UQ_MPI -w work_PR3_UQ_MPI -f -p $mpi -n $np $ww3 ww3_tp2.13" >> matrix.body + echo "$rtst -s MPI -w work_PR3_UQ_MPI -f -p $mpi -n $np $ww3 ww3_tp2.15" >> matrix.body + echo "$rtst -s MPI -w work_MPI_5km -g 5km -f -p $mpi -n $np $ww3 ww3_tp2.15" >> matrix.body + echo "$rtst -s MPI -i input_rho -w work_PR3_UQ_RHO_MPI -r ww3_grid -f -p $mpi -n $np $ww3 ww3_tp2.15" >> matrix.body + echo "$rtst -s MPI -i input_rho -w work_PR3_UQ_RHO_MPI -r ww3_strt -f -p $mpi -n $np $ww3 ww3_tp2.15" >> matrix.body + echo "cp ww3_tp2.15/input_rho/ww3_prnc_RHO.inp ww3_tp2.15/input_rho/ww3_prnc.inp" >> matrix.body + echo "$rtst -s MPI -i input_rho -w work_PR3_UQ_RHO_MPI -r ww3_prnc -f -p $mpi -n $np $ww3 ww3_tp2.15" >> matrix.body + echo "mv ww3_tp2.15/work_PR3_UQ_RHO_MPI/ww3_prnc.out ww3_tp2.15/work_PR3_UQ_RHO_MPI/ww3_prnc_RHO.out" >> matrix.body + echo "cp ww3_tp2.15/input_rho/ww3_prnc_TAU.inp ww3_tp2.15/input_rho/ww3_prnc.inp" >> matrix.body + echo "$rtst -s MPI -i input_rho -w work_PR3_UQ_RHO_MPI -r ww3_prnc -f -p $mpi -n $np $ww3 ww3_tp2.15" >> matrix.body + echo "mv ww3_tp2.15/work_PR3_UQ_RHO_MPI/ww3_prnc.out ww3_tp2.15/work_PR3_UQ_RHO_MPI/ww3_prnc_TAU.out" >> matrix.body + echo "cp ww3_tp2.15/input_rho/ww3_prnc_WND.inp ww3_tp2.15/input_rho/ww3_prnc.inp" >> matrix.body + echo "$rtst -s MPI -i input_rho -w work_PR3_UQ_RHO_MPI -r ww3_prnc -f -p $mpi -n $np $ww3 ww3_tp2.15" >> matrix.body + echo "mv ww3_tp2.15/work_PR3_UQ_RHO_MPI/ww3_prnc.out ww3_tp2.15/work_PR3_UQ_RHO_MPI/ww3_prnc_WND.out" >> matrix.body + echo "$rtst -s MPI -i input_rho -w work_PR3_UQ_RHO_MPI -r ww3_shel -f -p $mpi -n $np $ww3 ww3_tp2.15" >> matrix.body + echo "$rtst -s MPI -i input_rho -w work_PR3_UQ_RHO_MPI -r ww3_ounf -f -p $mpi -n $np $ww3 ww3_tp2.15" >> matrix.body + echo "$rtst -s MPI -i input_rho -w work_PR3_UQ_RHO_MPI -r ww3_ounp -f -p $mpi -n $np $ww3 ww3_tp2.15" >> matrix.body + echo "$rtst -s TIDE_MPI -w work_TIDE_MPI -o netcdf -f -p $mpi -n $np $ww3 ww3_tp2.18" >> matrix.body fi if [ "$multi01" = 'y' ] diff --git a/regtests/bin/matrix_divider_p.sh b/regtests/bin/matrix_divider_p.sh index 67c4f0e24..8445d7808 100755 --- a/regtests/bin/matrix_divider_p.sh +++ b/regtests/bin/matrix_divider_p.sh @@ -30,8 +30,9 @@ maxlist2=92 #Put the job requirement/spec in "before" sed -e "/run_test/,\$d" matrix.tmp > before #Put the list of tests in "list" -command egrep 'ww3_tp2.14|ww3_tp2.17|ww3_tp2.21' matrix.tmp | cat >> list_heavy +command egrep 'ww3_tp2.14|ww3_tp2.15|ww3_tp2.17|ww3_tp2.21' matrix.tmp | cat >> list_heavy awk '!/ww3_tp2.14/' matrix.tmp > tmpfile && mv tmpfile matrix.tmp +awk '!/ww3_tp2.15/' matrix.tmp > tmpfile && mv tmpfile matrix.tmp awk '!/ww3_tp2.17/' matrix.tmp > tmpfile && mv tmpfile matrix.tmp awk '!/ww3_tp2.21/' matrix.tmp > tmpfile && mv tmpfile matrix.tmp command egrep 'mpirun|mpiexec|MPI_LAUNCH' matrix.tmp | cat >> list_mpi diff --git a/regtests/mww3_test_01/input/ww3_shel.inp b/regtests/mww3_test_01/input/ww3_shel.inp index 42c86e622..1585f747e 100644 --- a/regtests/mww3_test_01/input/ww3_shel.inp +++ b/regtests/mww3_test_01/input/ww3_shel.inp @@ -3,7 +3,9 @@ $ ------------------------------ T T F T F T - T + T F + F F + F F F F F diff --git a/regtests/mww3_test_02/input/ww3_multi_grdset_a.inp b/regtests/mww3_test_02/input/ww3_multi_grdset_a.inp index 8ba5030c5..aa881aab8 100644 --- a/regtests/mww3_test_02/input/ww3_multi_grdset_a.inp +++ b/regtests/mww3_test_02/input/ww3_multi_grdset_a.inp @@ -2,8 +2,8 @@ $ WAVEWATCH III multi-scale input file $ ------------------------------------ 2 0 F 1 F F $ - 'outer' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 1 1 0.00 1.00 F - 'coarse' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 2 1 0.00 1.00 F + 'outer' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 1 1 0.00 1.00 F + 'coarse' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 2 1 0.00 1.00 F $ 19680606 000000 19680608 000000 $ diff --git a/regtests/mww3_test_02/input/ww3_multi_grdset_b.inp b/regtests/mww3_test_02/input/ww3_multi_grdset_b.inp index 5792de20c..893a3b058 100644 --- a/regtests/mww3_test_02/input/ww3_multi_grdset_b.inp +++ b/regtests/mww3_test_02/input/ww3_multi_grdset_b.inp @@ -2,8 +2,8 @@ $ WAVEWATCH III multi-scale input file $ ------------------------------------ 2 0 F 1 F F $ - 'outer' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 1 1 0.00 1.00 F - 'fine' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 2 1 0.00 1.00 F + 'outer' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 1 1 0.00 1.00 F + 'fine' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 2 1 0.00 1.00 F $ 19680606 000000 19680608 000000 $ diff --git a/regtests/mww3_test_02/input/ww3_multi_grdset_c.inp b/regtests/mww3_test_02/input/ww3_multi_grdset_c.inp index 34185bb4c..627465a85 100644 --- a/regtests/mww3_test_02/input/ww3_multi_grdset_c.inp +++ b/regtests/mww3_test_02/input/ww3_multi_grdset_c.inp @@ -2,8 +2,8 @@ $ WAVEWATCH III multi-scale input file $ ------------------------------------ 2 0 F 1 F F $ - 'outer' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 1 1 0.00 1.00 F - 'tiny' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 2 1 0.00 1.00 F + 'outer' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 1 1 0.00 1.00 F + 'tiny' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 2 1 0.00 1.00 F $ 19680606 000000 19680608 000000 $ diff --git a/regtests/mww3_test_02/input/ww3_multi_grdset_d.inp b/regtests/mww3_test_02/input/ww3_multi_grdset_d.inp index 3e4aceb26..76c6f7bdd 100644 --- a/regtests/mww3_test_02/input/ww3_multi_grdset_d.inp +++ b/regtests/mww3_test_02/input/ww3_multi_grdset_d.inp @@ -2,8 +2,8 @@ $ WAVEWATCH III multi-scale input file $ ------------------------------------ 2 0 F 1 F F $ - 'outer' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 1 1 0.00 1.00 F - 'respec' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 2 1 0.00 1.00 F + 'outer' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 1 1 0.00 1.00 F + 'respec' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 2 1 0.00 1.00 F $ 19680606 000000 19680608 000000 $ diff --git a/regtests/mww3_test_03/input/ww3_multi_grdset_a.inp b/regtests/mww3_test_03/input/ww3_multi_grdset_a.inp index 5084449a7..204b72936 100644 --- a/regtests/mww3_test_03/input/ww3_multi_grdset_a.inp +++ b/regtests/mww3_test_03/input/ww3_multi_grdset_a.inp @@ -1,9 +1,9 @@ $ WAVEWATCH III multi-scale input file $ ------------------------------------ 3 0 F 1 F F - 'low1' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 1 1 0.00 1.00 F - 'low2' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 1 1 0.00 1.00 F - 'low3' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 1 1 0.00 1.00 F + 'low1' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 1 1 0.00 1.00 F + 'low2' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 1 1 0.00 1.00 F + 'low3' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 1 1 0.00 1.00 F $ 19680606 000000 19680606 120000 $ diff --git a/regtests/mww3_test_03/input/ww3_multi_grdset_b.inp b/regtests/mww3_test_03/input/ww3_multi_grdset_b.inp index 02cbe619f..fc44e7422 100644 --- a/regtests/mww3_test_03/input/ww3_multi_grdset_b.inp +++ b/regtests/mww3_test_03/input/ww3_multi_grdset_b.inp @@ -1,10 +1,10 @@ $ WAVEWATCH III multi-scale input file $ ------------------------------------ 4 0 F 1 F F - 'low0' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 1 1 0.00 1.00 F - 'hgh1' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 2 1 0.00 1.00 F - 'hgh2' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 2 1 0.00 1.00 F - 'hgh3' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 2 1 0.00 1.00 F + 'low0' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 1 1 0.00 1.00 F + 'hgh1' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 2 1 0.00 1.00 F + 'hgh2' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 2 1 0.00 1.00 F + 'hgh3' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 2 1 0.00 1.00 F $ 19680606 000000 19680606 120000 $ diff --git a/regtests/mww3_test_03/input/ww3_multi_grdset_c.inp b/regtests/mww3_test_03/input/ww3_multi_grdset_c.inp index 3db8ce6b6..a367f1558 100644 --- a/regtests/mww3_test_03/input/ww3_multi_grdset_c.inp +++ b/regtests/mww3_test_03/input/ww3_multi_grdset_c.inp @@ -1,10 +1,10 @@ $ WAVEWATCH III multi-scale input file $ ------------------------------------ 4 0 F 1 F F - 'low1' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 1 1 0.00 1.00 F - 'low2' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 1 1 0.00 1.00 F - 'low3' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 1 1 0.00 1.00 F - 'hgh0' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 2 1 0.00 1.00 F + 'low1' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 1 1 0.00 1.00 F + 'low2' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 1 1 0.00 1.00 F + 'low3' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 1 1 0.00 1.00 F + 'hgh0' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 2 1 0.00 1.00 F $ 19680606 000000 19680606 120000 $ diff --git a/regtests/mww3_test_03/input/ww3_multi_grdset_d.inp b/regtests/mww3_test_03/input/ww3_multi_grdset_d.inp index cc578cee3..007c3553d 100644 --- a/regtests/mww3_test_03/input/ww3_multi_grdset_d.inp +++ b/regtests/mww3_test_03/input/ww3_multi_grdset_d.inp @@ -1,12 +1,12 @@ $ WAVEWATCH III multi-scale input file $ ------------------------------------ 6 0 F 1 F F - 'low1' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 1 1 0.00 1.00 F - 'low2' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 1 1 0.00 1.00 F - 'low3' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 1 1 0.00 1.00 F - 'hgh1' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 2 1 0.00 1.00 F - 'hgh2' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 2 1 0.00 1.00 F - 'hgh3' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 2 1 0.00 1.00 F + 'low1' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 1 1 0.00 1.00 F + 'low2' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 1 1 0.00 1.00 F + 'low3' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 1 1 0.00 1.00 F + 'hgh1' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 2 1 0.00 1.00 F + 'hgh2' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 2 1 0.00 1.00 F + 'hgh3' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 2 1 0.00 1.00 F $ 19680606 000000 19680606 120000 $ diff --git a/regtests/mww3_test_03/input/ww3_multi_grdset_d2.inp b/regtests/mww3_test_03/input/ww3_multi_grdset_d2.inp index e83eff3c4..4b5a657fb 100644 --- a/regtests/mww3_test_03/input/ww3_multi_grdset_d2.inp +++ b/regtests/mww3_test_03/input/ww3_multi_grdset_d2.inp @@ -1,12 +1,12 @@ $ WAVEWATCH III multi-scale input file $ ------------------------------------ 6 0 F 1 F F - 'low1' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 1 1 0.00 0.33 F - 'low2' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 1 1 0.33 0.67 F - 'low3' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 1 1 0.67 1.00 F - 'hgh1' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 2 1 0.00 0.33 F - 'hgh2' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 2 1 0.33 0.67 F - 'hgh3' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 2 1 0.67 1.00 F + 'low1' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 1 1 0.00 0.33 F + 'low2' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 1 1 0.33 0.67 F + 'low3' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 1 1 0.67 1.00 F + 'hgh1' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 2 1 0.00 0.33 F + 'hgh2' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 2 1 0.33 0.67 F + 'hgh3' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 2 1 0.67 1.00 F $ 19680606 000000 19680606 120000 $ diff --git a/regtests/mww3_test_03/input/ww3_multi_grdset_e.inp b/regtests/mww3_test_03/input/ww3_multi_grdset_e.inp index daa54d535..b3cca1196 100644 --- a/regtests/mww3_test_03/input/ww3_multi_grdset_e.inp +++ b/regtests/mww3_test_03/input/ww3_multi_grdset_e.inp @@ -4,8 +4,8 @@ $ ------------------------------------ $ 'points' $ - 'low0' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 1 1 0.00 1.00 F - 'hgh0' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 2 1 0.00 1.00 F + 'low0' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 1 1 0.00 1.00 F + 'hgh0' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 2 1 0.00 1.00 F $ 19680606 000000 19680606 120000 $ diff --git a/regtests/mww3_test_04/input/ww3_multi_grdset_a.inp b/regtests/mww3_test_04/input/ww3_multi_grdset_a.inp index ce1c5b111..d4acddeac 100644 --- a/regtests/mww3_test_04/input/ww3_multi_grdset_a.inp +++ b/regtests/mww3_test_04/input/ww3_multi_grdset_a.inp @@ -2,9 +2,9 @@ $ WAVEWATCH III multi-scale input file $ ------------------------------------ 3 0 F 1 T T $ - 'bound' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 1 1 0.00 1.00 F - 'outer' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 2 1 0.00 1.00 F - 'inner' 'no' 'native' 'no' 'no' 'no' 'no' 'no' 3 1 0.00 1.00 F + 'bound' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 1 1 0.00 1.00 F + 'outer' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 2 1 0.00 1.00 F + 'inner' 'no' 'native' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 3 1 0.00 1.00 F $ 19680606 000000 19680607 120000 $ diff --git a/regtests/mww3_test_04/input/ww3_multi_grdset_b.inp b/regtests/mww3_test_04/input/ww3_multi_grdset_b.inp index 33c559f8c..6b652befc 100644 --- a/regtests/mww3_test_04/input/ww3_multi_grdset_b.inp +++ b/regtests/mww3_test_04/input/ww3_multi_grdset_b.inp @@ -4,9 +4,9 @@ $ ------------------------------------ $ 'points' $ - 'bound' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 1 1 0.00 1.00 F - 'outer' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 2 1 0.00 1.00 F - 'inner' 'no' 'native' 'no' 'no' 'no' 'no' 'no' 3 1 0.00 1.00 F + 'bound' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 1 1 0.00 1.00 F + 'outer' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 2 1 0.00 1.00 F + 'inner' 'no' 'native' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 3 1 0.00 1.00 F $ 19680606 000000 19680607 120000 $ diff --git a/regtests/mww3_test_04/input/ww3_multi_grdset_c.inp b/regtests/mww3_test_04/input/ww3_multi_grdset_c.inp index b196d307c..e466f700b 100644 --- a/regtests/mww3_test_04/input/ww3_multi_grdset_c.inp +++ b/regtests/mww3_test_04/input/ww3_multi_grdset_c.inp @@ -4,9 +4,9 @@ $ ------------------------------------ $ 'points' $ - 'bound' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 1 1 0.00 1.00 F - 'outer' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 2 1 0.00 1.00 F - 'inner' 'no' 'native' 'no' 'no' 'no' 'no' 'no' 3 1 0.00 1.00 F + 'bound' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 1 1 0.00 1.00 F + 'outer' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 2 1 0.00 1.00 F + 'inner' 'no' 'native' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 3 1 0.00 1.00 F $ 19680606 000000 19680607 120000 $ diff --git a/regtests/mww3_test_04/input/ww3_multi_grdset_d.inp b/regtests/mww3_test_04/input/ww3_multi_grdset_d.inp index 4be1543c8..1a0d33175 100644 --- a/regtests/mww3_test_04/input/ww3_multi_grdset_d.inp +++ b/regtests/mww3_test_04/input/ww3_multi_grdset_d.inp @@ -4,9 +4,9 @@ $ ------------------------------------ $ 'points' $ - 'bound' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 1 1 0.00 1.00 F - 'outer' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 2 1 0.00 1.00 F - 'inner' 'no' 'native' 'no' 'no' 'no' 'no' 'no' 3 1 0.00 1.00 F + 'bound' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 1 1 0.00 1.00 F + 'outer' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 2 1 0.00 1.00 F + 'inner' 'no' 'native' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 3 1 0.00 1.00 F $ 19680606 000000 19680607 120000 $ diff --git a/regtests/mww3_test_04/input/ww3_multi_grdset_e.inp b/regtests/mww3_test_04/input/ww3_multi_grdset_e.inp index 8e0aac107..9f47ff026 100644 --- a/regtests/mww3_test_04/input/ww3_multi_grdset_e.inp +++ b/regtests/mww3_test_04/input/ww3_multi_grdset_e.inp @@ -4,9 +4,9 @@ $ ------------------------------------ $ 'points' $ - 'bound' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 1 1 0.00 1.00 F - 'outer' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 2 1 0.00 1.00 F - 'inner' 'no' 'native' 'no' 'no' 'no' 'no' 'no' 3 1 0.00 1.00 F + 'bound' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 1 1 0.00 1.00 F + 'outer' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 2 1 0.00 1.00 F + 'inner' 'no' 'native' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 3 1 0.00 1.00 F $ 19680606 000000 19680607 120000 $ diff --git a/regtests/mww3_test_04/input/ww3_multi_grdset_f.inp b/regtests/mww3_test_04/input/ww3_multi_grdset_f.inp index 9351cdb48..40e6ee40e 100644 --- a/regtests/mww3_test_04/input/ww3_multi_grdset_f.inp +++ b/regtests/mww3_test_04/input/ww3_multi_grdset_f.inp @@ -4,9 +4,9 @@ $ ------------------------------------ $ 'points' $ - 'bound' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 1 1 0.00 1.00 F - 'outer' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 2 1 0.00 1.00 F - 'mount' 'no' 'native' 'no' 'no' 'no' 'no' 'no' 3 1 0.00 1.00 F + 'bound' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 1 1 0.00 1.00 F + 'outer' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 2 1 0.00 1.00 F + 'mount' 'no' 'native' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 3 1 0.00 1.00 F $ 19680606 000000 19680607 120000 $ diff --git a/regtests/mww3_test_04/input/ww3_multi_grdset_g.inp b/regtests/mww3_test_04/input/ww3_multi_grdset_g.inp index 387ef1289..633cc2d81 100644 --- a/regtests/mww3_test_04/input/ww3_multi_grdset_g.inp +++ b/regtests/mww3_test_04/input/ww3_multi_grdset_g.inp @@ -4,9 +4,9 @@ $ ------------------------------------ $ 'points' $ - 'bound' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 1 1 0.00 1.00 F - 'outer' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 2 1 0.00 1.00 F - 'mount' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 3 1 0.00 1.00 F + 'bound' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 1 1 0.00 1.00 F + 'outer' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 2 1 0.00 1.00 F + 'mount' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 3 1 0.00 1.00 F $ 19680606 000000 19680607 120000 $ diff --git a/regtests/mww3_test_05/input/ww3_multi_grdset_a.inp b/regtests/mww3_test_05/input/ww3_multi_grdset_a.inp index 63101f6c2..6c40b4c60 100644 --- a/regtests/mww3_test_05/input/ww3_multi_grdset_a.inp +++ b/regtests/mww3_test_05/input/ww3_multi_grdset_a.inp @@ -2,13 +2,13 @@ $ WAVEWATCH III multi-scale input file $ ------------------------------------ 3 1 T 1 T T $ - 'input' F F T F F F F + 'input' F F T F F F F F F $ 'points' $ - 'grd1' 'no' 'no' 'input' 'no' 'no' 'no' 'no' 1 1 0.00 1.00 F - 'grd2' 'no' 'no' 'input' 'no' 'no' 'no' 'no' 2 1 0.00 1.00 F - 'grd3' 'no' 'no' 'input' 'no' 'no' 'no' 'no' 3 1 0.00 1.00 F + 'grd1' 'no' 'no' 'input' 'no' 'no' 'no' 'no' 'no' 'no' 1 1 0.00 1.00 F + 'grd2' 'no' 'no' 'input' 'no' 'no' 'no' 'no' 'no' 'no' 2 1 0.00 1.00 F + 'grd3' 'no' 'no' 'input' 'no' 'no' 'no' 'no' 'no' 'no' 3 1 0.00 1.00 F $ 19680606 000000 19680606 060000 $ diff --git a/regtests/mww3_test_05/input/ww3_multi_grdset_b.inp b/regtests/mww3_test_05/input/ww3_multi_grdset_b.inp index 52eef62aa..e021cc85e 100644 --- a/regtests/mww3_test_05/input/ww3_multi_grdset_b.inp +++ b/regtests/mww3_test_05/input/ww3_multi_grdset_b.inp @@ -2,11 +2,11 @@ $ WAVEWATCH III multi-scale input file $ ------------------------------------ 1 1 T 1 T T $ - 'input' F F T F F F F + 'input' F F T F F F F F F $ 'points' $ - 'grd0' 'no' 'no' 'input' 'no' 'no' 'no' 'no' 1 1 0.00 1.00 F + 'grd0' 'no' 'no' 'input' 'no' 'no' 'no' 'no' 'no' 'no' 1 1 0.00 1.00 F $ 19680606 000000 19680606 003000 $ diff --git a/regtests/mww3_test_05/input/ww3_multi_grdset_c.inp b/regtests/mww3_test_05/input/ww3_multi_grdset_c.inp index 7d377829c..a8b013c94 100644 --- a/regtests/mww3_test_05/input/ww3_multi_grdset_c.inp +++ b/regtests/mww3_test_05/input/ww3_multi_grdset_c.inp @@ -6,7 +6,7 @@ $ $ 'points' $ - 'grd1' 'no' 'no' 'input' 'no' 'no' 'no' 'no' 1 1 0.00 1.00 F + 'grd1' 'no' 'no' 'input' 'no' 'no' 'no' 'no' 'no' 'no' 1 1 0.00 1.00 F $ 19680606 000000 19680606 060000 $ diff --git a/regtests/mww3_test_05/input/ww3_multi_grdset_d.inp b/regtests/mww3_test_05/input/ww3_multi_grdset_d.inp index 88916b050..d1f497093 100644 --- a/regtests/mww3_test_05/input/ww3_multi_grdset_d.inp +++ b/regtests/mww3_test_05/input/ww3_multi_grdset_d.inp @@ -6,7 +6,7 @@ $ $ 'points' $ - 'grd2' 'no' 'no' 'input' 'no' 'no' 'no' 'no' 1 1 0.00 1.00 F + 'grd2' 'no' 'no' 'input' 'no' 'no' 'no' 'no' 'no' 'no' 1 1 0.00 1.00 F $ 19680606 000000 19680606 060000 $ diff --git a/regtests/mww3_test_05/input/ww3_multi_grdset_e.inp b/regtests/mww3_test_05/input/ww3_multi_grdset_e.inp index 19f6025b3..6c7b5fe69 100644 --- a/regtests/mww3_test_05/input/ww3_multi_grdset_e.inp +++ b/regtests/mww3_test_05/input/ww3_multi_grdset_e.inp @@ -6,7 +6,7 @@ $ $ 'points' $ - 'grd3' 'no' 'no' 'input' 'no' 'no' 'no' 'no' 1 1 0.00 1.00 F + 'grd3' 'no' 'no' 'input' 'no' 'no' 'no' 'no' 'no' 'no' 1 1 0.00 1.00 F $ 19680606 000000 19680606 060000 $ diff --git a/regtests/mww3_test_06/input/ww3_multi_grdset_d.inp b/regtests/mww3_test_06/input/ww3_multi_grdset_d.inp index 3e9639df7..b515d5110 100644 --- a/regtests/mww3_test_06/input/ww3_multi_grdset_d.inp +++ b/regtests/mww3_test_06/input/ww3_multi_grdset_d.inp @@ -42,12 +42,12 @@ $ spectral output grid, and the point output will be written to the $ file out_pnt.points $ $ -------------------------------------------------------------------- $ -$ Now each actual wave model grid is defined using 13 parameters to be +$ Now each actual wave model grid is defined using 15 parameters to be $ read fom a single line in the file. Each line contains the following $ parameters $ 1) Define the grid with the extension of the mod_def file. -$ 2-8) Define the inputs used by the grids with 8 keywords -$ corresponding to the 8 flags defining the input in the +$ 2-10) Define the inputs used by the grids with 10 keywords +$ corresponding to the 10 flags defining the input in the $ input files. Valid keywords are: $ 'no' : This input is not used. $ 'native' : This grid has its own input files, e.g. grid @@ -55,21 +55,21 @@ $ grdX (mod_def.grdX) uses ice.grdX. $ 'MODID' : Take input from the grid identified by $ MODID. In the example below, all grids get $ their wind from wind.input (mod_def.input). -$ 9) Rank number of grid (internally sorted and reassigned). -$ 10) Group number (internally reassigned so that different +$ 11) Rank number of grid (internally sorted and reassigned). +$ 12) Group number (internally reassigned so that different $ ranks result in different group numbers. -$ 11-12) Define fraction of communicator (processes) used for this +$ 13-14) Define fraction of communicator (processes) used for this $ grid. -$ 13) Flag identifying dumping of boundary data used by this +$ 15) Flag identifying dumping of boundary data used by this $ grid. If true, the file nest.MODID is generated. $ -$ 'grd1' 'no' 'no' 'input' 'no' 'no' 'no' 'no' 1 1 0.00 1.00 F {example} -$ 'grd2' 'no' 'no' 'input' 'no' 'no' 'no' 'no' 2 1 0.00 1.00 F {example} -$ 'grd3' 'no' 'no' 'input' 'no' 'no' 'no' 'no' 3 1 0.00 1.00 F {example} +$ 'grd1' 'no' 'no' 'input' 'no' 'no' 'no' 'no' 'no' 'no' 1 1 0.00 1.00 F {example} +$ 'grd2' 'no' 'no' 'input' 'no' 'no' 'no' 'no' 'no' 'no' 2 1 0.00 1.00 F {example} +$ 'grd3' 'no' 'no' 'input' 'no' 'no' 'no' 'no' 'no' 'no' 3 1 0.00 1.00 F {example} $ 'gband' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 1 1 0.00 1.00 F -$ 'arcticreg' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 2 1 0.00 1.00 F - 'gbandd360' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 1 1 0.00 1.00 F - 'arcticsub' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 2 1 0.00 1.00 F +$ 'arcticreg' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 2 1 0.00 1.00 F + 'gbandd360' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 1 1 0.00 1.00 F + 'arcticsub' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 2 1 0.00 1.00 F $ $ $ In this example three grids are used requiring the files diff --git a/regtests/mww3_test_06/input/ww3_multi_grdset_d_h.inp b/regtests/mww3_test_06/input/ww3_multi_grdset_d_h.inp index a73f4874a..25f4cadac 100644 --- a/regtests/mww3_test_06/input/ww3_multi_grdset_d_h.inp +++ b/regtests/mww3_test_06/input/ww3_multi_grdset_d_h.inp @@ -42,12 +42,12 @@ $ spectral output grid, and the point output will be written to the $ file out_pnt.points $ $ -------------------------------------------------------------------- $ -$ Now each actual wave model grid is defined using 13 parameters to be +$ Now each actual wave model grid is defined using 15 parameters to be $ read fom a single line in the file. Each line contains the following $ parameters $ 1) Define the grid with the extension of the mod_def file. -$ 2-8) Define the inputs used by the grids with 8 keywords -$ corresponding to the 8 flags defining the input in the +$ 2-10) Define the inputs used by the grids with 10 keywords +$ corresponding to the 10 flags defining the input in the $ input files. Valid keywords are: $ 'no' : This input is not used. $ 'native' : This grid has its own input files, e.g. grid @@ -55,21 +55,21 @@ $ grdX (mod_def.grdX) uses ice.grdX. $ 'MODID' : Take input from the grid identified by $ MODID. In the example below, all grids get $ their wind from wind.input (mod_def.input). -$ 9) Rank number of grid (internally sorted and reassigned). -$ 10) Group number (internally reassigned so that different +$ 11) Rank number of grid (internally sorted and reassigned). +$ 12) Group number (internally reassigned so that different $ ranks result in different group numbers. -$ 11-12) Define fraction of communicator (processes) used for this +$ 13-14) Define fraction of communicator (processes) used for this $ grid. -$ 13) Flag identifying dumping of boundary data used by this +$ 15) Flag identifying dumping of boundary data used by this $ grid. If true, the file nest.MODID is generated. $ -$ 'grd1' 'no' 'no' 'input' 'no' 'no' 'no' 'no' 1 1 0.00 1.00 F {example} -$ 'grd2' 'no' 'no' 'input' 'no' 'no' 'no' 'no' 2 1 0.00 1.00 F {example} -$ 'grd3' 'no' 'no' 'input' 'no' 'no' 'no' 'no' 3 1 0.00 1.00 F {example} -$ 'gband' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 1 1 0.00 1.00 F -$ 'arcticreg' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 2 1 0.00 1.00 F - 'gbandd360' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 1 1 0.00 1.00 F - 'arcticsub' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 2 1 0.00 1.00 F +$ 'grd1' 'no' 'no' 'input' 'no' 'no' 'no' 'no' 'no' 'no' 1 1 0.00 1.00 F {example} +$ 'grd2' 'no' 'no' 'input' 'no' 'no' 'no' 'no' 'no' 'no' 2 1 0.00 1.00 F {example} +$ 'grd3' 'no' 'no' 'input' 'no' 'no' 'no' 'no' 'no' 'no' 3 1 0.00 1.00 F {example} +$ 'gband' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 1 1 0.00 1.00 F +$ 'arcticreg' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 2 1 0.00 1.00 F + 'gbandd360' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 1 1 0.00 1.00 F + 'arcticsub' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 2 1 0.00 1.00 F $ $ $ In this example three grids are used requiring the files diff --git a/regtests/mww3_test_06/input/ww3_multi_grdset_d_r.inp b/regtests/mww3_test_06/input/ww3_multi_grdset_d_r.inp index 5a7094f3a..cbbd52c91 100644 --- a/regtests/mww3_test_06/input/ww3_multi_grdset_d_r.inp +++ b/regtests/mww3_test_06/input/ww3_multi_grdset_d_r.inp @@ -42,12 +42,12 @@ $ spectral output grid, and the point output will be written to the $ file out_pnt.points $ $ -------------------------------------------------------------------- $ -$ Now each actual wave model grid is defined using 13 parameters to be +$ Now each actual wave model grid is defined using 15 parameters to be $ read fom a single line in the file. Each line contains the following $ parameters $ 1) Define the grid with the extension of the mod_def file. -$ 2-8) Define the inputs used by the grids with 8 keywords -$ corresponding to the 8 flags defining the input in the +$ 2-10) Define the inputs used by the grids with 10 keywords +$ corresponding to the 10 flags defining the input in the $ input files. Valid keywords are: $ 'no' : This input is not used. $ 'native' : This grid has its own input files, e.g. grid @@ -55,21 +55,21 @@ $ grdX (mod_def.grdX) uses ice.grdX. $ 'MODID' : Take input from the grid identified by $ MODID. In the example below, all grids get $ their wind from wind.input (mod_def.input). -$ 9) Rank number of grid (internally sorted and reassigned). -$ 10) Group number (internally reassigned so that different +$ 10) Rank number of grid (internally sorted and reassigned). +$ 12) Group number (internally reassigned so that different $ ranks result in different group numbers. -$ 11-12) Define fraction of communicator (processes) used for this +$ 13-14) Define fraction of communicator (processes) used for this $ grid. -$ 13) Flag identifying dumping of boundary data used by this +$ 15) Flag identifying dumping of boundary data used by this $ grid. If true, the file nest.MODID is generated. $ -$ 'grd1' 'no' 'no' 'input' 'no' 'no' 'no' 'no' 1 1 0.00 1.00 F {example} -$ 'grd2' 'no' 'no' 'input' 'no' 'no' 'no' 'no' 2 1 0.00 1.00 F {example} -$ 'grd3' 'no' 'no' 'input' 'no' 'no' 'no' 'no' 3 1 0.00 1.00 F {example} -$ 'gband' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 1 1 0.00 1.00 F -$ 'arcticreg' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 2 1 0.00 1.00 F - 'gbandd360' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 1 1 0.00 1.00 F - 'arcticsub' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 2 1 0.00 1.00 F +$ 'grd1' 'no' 'no' 'input' 'no' 'no' 'no' 'no' 'no' 'no' 1 1 0.00 1.00 F {example} +$ 'grd2' 'no' 'no' 'input' 'no' 'no' 'no' 'no' 'no' 'no' 2 1 0.00 1.00 F {example} +$ 'grd3' 'no' 'no' 'input' 'no' 'no' 'no' 'no' 'no' 'no' 3 1 0.00 1.00 F {example} +$ 'gband' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 1 1 0.00 1.00 F +$ 'arcticreg' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 2 1 0.00 1.00 F + 'gbandd360' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 1 1 0.00 1.00 F + 'arcticsub' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 2 1 0.00 1.00 F $ $ $ In this example three grids are used requiring the files diff --git a/regtests/mww3_test_06/input/ww3_outf_depth.inp b/regtests/mww3_test_06/input/ww3_outf_depth.inp index 986dce65d..008fa1903 100644 --- a/regtests/mww3_test_06/input/ww3_outf_depth.inp +++ b/regtests/mww3_test_06/input/ww3_outf_depth.inp @@ -10,8 +10,8 @@ $ Request flags identifying fields as in ww3_shel input and section 2.4 of the m $------------------------------------------------------------------------------------------------------------------- $ (1) Forcing Fields T -$ DPT CUR WND DT WLV ICE IBG D50 - T F F F F F F F +$ DPT CUR WND DT WLV ICE TAU RHO IBG D50 + T F F F F F F F F F $ (2) Standard mean wave Parameters F $ (3) Frequency-dependent parameters diff --git a/regtests/mww3_test_07/input/ww3_multi_grdset.inp b/regtests/mww3_test_07/input/ww3_multi_grdset.inp index 1aad96c86..9bb315518 100644 --- a/regtests/mww3_test_07/input/ww3_multi_grdset.inp +++ b/regtests/mww3_test_07/input/ww3_multi_grdset.inp @@ -5,8 +5,8 @@ $ $ 'wind_ncep' F F T F F F F $ 'ice_cep2b' F F F T F F F 'points' - 'rect1' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 1 1 0.00 1.00 T - 'refug' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 2 1 0.00 1.00 T + 'rect1' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 1 1 0.00 1.00 T + 'refug' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 2 1 0.00 1.00 T $ 20030101 000000 20030102 120000 $ diff --git a/regtests/mww3_test_08/i_highres_multi/ww3_multi_grdset_a.inp b/regtests/mww3_test_08/i_highres_multi/ww3_multi_grdset_a.inp index 4d19a9ba4..49b359d71 100644 --- a/regtests/mww3_test_08/i_highres_multi/ww3_multi_grdset_a.inp +++ b/regtests/mww3_test_08/i_highres_multi/ww3_multi_grdset_a.inp @@ -11,12 +11,12 @@ $ $ input data grids : NONE $ unified point output file : NONE $ -$ Now each actual wave model grid is defined using 13 parameters to be +$ Now each actual wave model grid is defined using 15 parameters to be $ read fom a single line in the file. Each line contains the following $ parameters $ 1) Define the grid with the extension of the mod_def file. -$ 2-8) Define the inputs used by the grids with 8 keywords -$ corresponding to the 8 flags defining the input in the +$ 2-10) Define the inputs used by the grids with 10 keywords +$ corresponding to the 10 flags defining the input in the $ input files. Valid keywords are: $ 'no' : This input is not used. $ 'native' : This grid has its own input files, e.g. grid @@ -24,15 +24,15 @@ $ grdX (mod_def.grdX) uses ice.grdX. $ 'MODID' : Take input from the grid identified by $ MODID. In the example below, all grids get $ their wind from wind.input (mod_def.input). -$ 9) Rank number of grid (internally sorted and reassigned). -$ 10) Group number (internally reassigned so that different +$ 11) Rank number of grid (internally sorted and reassigned). +$ 12) Group number (internally reassigned so that different $ ranks result in different group numbers. -$ 11-12) Define fraction of communicator (processes) used for this +$ 13-14) Define fraction of communicator (processes) used for this $ grid. -$ 13) Flag identifying dumping of boundary data used by this +$ 15) Flag identifying dumping of boundary data used by this $ grid. If true, the file nest.MODID is generated. $ - 'highres' 'no' 'no' 'native' 'native' 'no' 'no' 'no' 1 1 0.00 1.00 F + 'highres' 'no' 'no' 'native' 'native' 'no' 'no' 'no' 'no' 'no' 1 1 0.00 1.00 F $ $ Starting and ending times for the entire model run 20151025 000000 20151026 000000 diff --git a/regtests/mww3_test_08/i_highres_shel/ww3_shel.inp b/regtests/mww3_test_08/i_highres_shel/ww3_shel.inp index ff6d69378..0a3343dff 100644 --- a/regtests/mww3_test_08/i_highres_shel/ww3_shel.inp +++ b/regtests/mww3_test_08/i_highres_shel/ww3_shel.inp @@ -7,7 +7,9 @@ $ F F Water levels F F Currents T F Winds - T Ice concentrations + T F Ice concentrations + F F Atmospheric momentum + F F Air density F Assimilation data : Mean parameters F Assimilation data : 1-D spectra F Assimilation data : 2-D spectra. diff --git a/regtests/mww3_test_08/i_highres_shel_IC1/ww3_shel.inp b/regtests/mww3_test_08/i_highres_shel_IC1/ww3_shel.inp index 869a5a695..a240e3869 100644 --- a/regtests/mww3_test_08/i_highres_shel_IC1/ww3_shel.inp +++ b/regtests/mww3_test_08/i_highres_shel_IC1/ww3_shel.inp @@ -15,7 +15,9 @@ $ F F Water levels F F Currents T F Winds - T Ice concentrations + T F Ice concentrations + F F Atmospheric momentum + F F Air density F Assimilation data : Mean parameters F Assimilation data : 1-D spectra F Assimilation data : 2-D spectra. diff --git a/regtests/mww3_test_08/i_lowres_multi/ww3_multi_grdset_a.inp b/regtests/mww3_test_08/i_lowres_multi/ww3_multi_grdset_a.inp index 0292658cd..855ae2ad3 100644 --- a/regtests/mww3_test_08/i_lowres_multi/ww3_multi_grdset_a.inp +++ b/regtests/mww3_test_08/i_lowres_multi/ww3_multi_grdset_a.inp @@ -11,12 +11,12 @@ $ $ input data grids : NONE $ unified point output file : NONE $ -$ Now each actual wave model grid is defined using 13 parameters to be +$ Now each actual wave model grid is defined using 15 parameters to be $ read fom a single line in the file. Each line contains the following $ parameters $ 1) Define the grid with the extension of the mod_def file. -$ 2-8) Define the inputs used by the grids with 8 keywords -$ corresponding to the 8 flags defining the input in the +$ 2-10) Define the inputs used by the grids with 10 keywords +$ corresponding to the 10 flags defining the input in the $ input files. Valid keywords are: $ 'no' : This input is not used. $ 'native' : This grid has its own input files, e.g. grid @@ -24,15 +24,15 @@ $ grdX (mod_def.grdX) uses ice.grdX. $ 'MODID' : Take input from the grid identified by $ MODID. In the example below, all grids get $ their wind from wind.input (mod_def.input). -$ 9) Rank number of grid (internally sorted and reassigned). -$ 10) Group number (internally reassigned so that different +$ 11) Rank number of grid (internally sorted and reassigned). +$ 12) Group number (internally reassigned so that different $ ranks result in different group numbers. -$ 11-12) Define fraction of communicator (processes) used for this +$ 13-14) Define fraction of communicator (processes) used for this $ grid. -$ 13) Flag identifying dumping of boundary data used by this +$ 15) Flag identifying dumping of boundary data used by this $ grid. If true, the file nest.MODID is generated. $ - 'lowres' 'no' 'no' 'native' 'native' 'no' 'no' 'no' 1 1 0.00 1.00 F + 'lowres' 'no' 'no' 'native' 'native' 'no' 'no' 'no' 'no' 'no' 1 1 0.00 1.00 F $ $ Starting and ending times for the entire model run 20151025 000000 20151026 000000 diff --git a/regtests/mww3_test_08/i_lowres_shel/ww3_shel.inp b/regtests/mww3_test_08/i_lowres_shel/ww3_shel.inp index ff6d69378..0a3343dff 100644 --- a/regtests/mww3_test_08/i_lowres_shel/ww3_shel.inp +++ b/regtests/mww3_test_08/i_lowres_shel/ww3_shel.inp @@ -7,7 +7,9 @@ $ F F Water levels F F Currents T F Winds - T Ice concentrations + T F Ice concentrations + F F Atmospheric momentum + F F Air density F Assimilation data : Mean parameters F Assimilation data : 1-D spectra F Assimilation data : 2-D spectra. diff --git a/regtests/mww3_test_08/i_lowres_shel_IC1/ww3_shel.inp b/regtests/mww3_test_08/i_lowres_shel_IC1/ww3_shel.inp index 869a5a695..a240e3869 100644 --- a/regtests/mww3_test_08/i_lowres_shel_IC1/ww3_shel.inp +++ b/regtests/mww3_test_08/i_lowres_shel_IC1/ww3_shel.inp @@ -15,7 +15,9 @@ $ F F Water levels F F Currents T F Winds - T Ice concentrations + T F Ice concentrations + F F Atmospheric momentum + F F Air density F Assimilation data : Mean parameters F Assimilation data : 1-D spectra F Assimilation data : 2-D spectra. diff --git a/regtests/mww3_test_08/input/ww3_multi_grdset_a.inp b/regtests/mww3_test_08/input/ww3_multi_grdset_a.inp index b767f66cd..1b16b4b34 100644 --- a/regtests/mww3_test_08/input/ww3_multi_grdset_a.inp +++ b/regtests/mww3_test_08/input/ww3_multi_grdset_a.inp @@ -11,12 +11,12 @@ $ $ input data grids : NONE $ unified point output file : NONE $ -$ Now each actual wave model grid is defined using 13 parameters to be +$ Now each actual wave model grid is defined using 15 parameters to be $ read fom a single line in the file. Each line contains the following $ parameters $ 1) Define the grid with the extension of the mod_def file. -$ 2-8) Define the inputs used by the grids with 8 keywords -$ corresponding to the 8 flags defining the input in the +$ 2-10) Define the inputs used by the grids with 10 keywords +$ corresponding to the 10 flags defining the input in the $ input files. Valid keywords are: $ 'no' : This input is not used. $ 'native' : This grid has its own input files, e.g. grid @@ -24,16 +24,16 @@ $ grdX (mod_def.grdX) uses ice.grdX. $ 'MODID' : Take input from the grid identified by $ MODID. In the example below, all grids get $ their wind from wind.input (mod_def.input). -$ 9) Rank number of grid (internally sorted and reassigned). -$ 10) Group number (internally reassigned so that different +$ 11) Rank number of grid (internally sorted and reassigned). +$ 12) Group number (internally reassigned so that different $ ranks result in different group numbers. -$ 11-12) Define fraction of communicator (processes) used for this +$ 13-14) Define fraction of communicator (processes) used for this $ grid. -$ 13) Flag identifying dumping of boundary data used by this +$ 15) Flag identifying dumping of boundary data used by this $ grid. If true, the file nest.MODID is generated. $ - 'outer' 'no' 'no' 'native' 'native' 'no' 'no' 'no' 1 1 0.00 1.00 F - 'inner' 'no' 'no' 'native' 'native' 'no' 'no' 'no' 2 1 0.00 1.00 F + 'outer' 'no' 'no' 'native' 'native' 'no' 'no' 'no' 'no' 'no' 1 1 0.00 1.00 F + 'inner' 'no' 'no' 'native' 'native' 'no' 'no' 'no' 'no' 'no' 2 1 0.00 1.00 F $ $ Starting and ending times for the entire model run 20151025 000000 20151026 000000 diff --git a/regtests/ww3_ta1/input_UPD0F_O/ww3_shel.inp b/regtests/ww3_ta1/input_UPD0F_O/ww3_shel.inp index cb19025f8..d26fb87e5 100644 --- a/regtests/ww3_ta1/input_UPD0F_O/ww3_shel.inp +++ b/regtests/ww3_ta1/input_UPD0F_O/ww3_shel.inp @@ -3,7 +3,9 @@ $ ------------------------------ F T F T T T - F + F F + F F + F F F F F diff --git a/regtests/ww3_ta1/input_UPD0F_U/ww3_shel.inp b/regtests/ww3_ta1/input_UPD0F_U/ww3_shel.inp index cb19025f8..d26fb87e5 100644 --- a/regtests/ww3_ta1/input_UPD0F_U/ww3_shel.inp +++ b/regtests/ww3_ta1/input_UPD0F_U/ww3_shel.inp @@ -3,7 +3,9 @@ $ ------------------------------ F T F T T T - F + F F + F F + F F F F F diff --git a/regtests/ww3_ta1/input_UPD2_O/ww3_shel.inp b/regtests/ww3_ta1/input_UPD2_O/ww3_shel.inp index cb19025f8..d26fb87e5 100644 --- a/regtests/ww3_ta1/input_UPD2_O/ww3_shel.inp +++ b/regtests/ww3_ta1/input_UPD2_O/ww3_shel.inp @@ -3,7 +3,9 @@ $ ------------------------------ F T F T T T - F + F F + F F + F F F F F diff --git a/regtests/ww3_ta1/input_UPD2_U/ww3_shel.inp b/regtests/ww3_ta1/input_UPD2_U/ww3_shel.inp index cb19025f8..d26fb87e5 100644 --- a/regtests/ww3_ta1/input_UPD2_U/ww3_shel.inp +++ b/regtests/ww3_ta1/input_UPD2_U/ww3_shel.inp @@ -3,7 +3,9 @@ $ ------------------------------ F T F T T T - F + F F + F F + F F F F F diff --git a/regtests/ww3_ta1/input_UPD2_U_cap/ww3_shel.inp b/regtests/ww3_ta1/input_UPD2_U_cap/ww3_shel.inp index cb19025f8..d26fb87e5 100644 --- a/regtests/ww3_ta1/input_UPD2_U_cap/ww3_shel.inp +++ b/regtests/ww3_ta1/input_UPD2_U_cap/ww3_shel.inp @@ -3,7 +3,9 @@ $ ------------------------------ F T F T T T - F + F F + F F + F F F F F diff --git a/regtests/ww3_ta1/input_UPD3_O/ww3_shel.inp b/regtests/ww3_ta1/input_UPD3_O/ww3_shel.inp index cb19025f8..d26fb87e5 100644 --- a/regtests/ww3_ta1/input_UPD3_O/ww3_shel.inp +++ b/regtests/ww3_ta1/input_UPD3_O/ww3_shel.inp @@ -3,7 +3,9 @@ $ ------------------------------ F T F T T T - F + F F + F F + F F F F F diff --git a/regtests/ww3_ta1/input_UPD3_U/ww3_shel.inp b/regtests/ww3_ta1/input_UPD3_U/ww3_shel.inp index cb19025f8..d26fb87e5 100644 --- a/regtests/ww3_ta1/input_UPD3_U/ww3_shel.inp +++ b/regtests/ww3_ta1/input_UPD3_U/ww3_shel.inp @@ -3,7 +3,9 @@ $ ------------------------------ F T F T T T - F + F F + F F + F F F F F diff --git a/regtests/ww3_ta1/input_UPD3_U_cap/ww3_shel.inp b/regtests/ww3_ta1/input_UPD3_U_cap/ww3_shel.inp index cb19025f8..d26fb87e5 100644 --- a/regtests/ww3_ta1/input_UPD3_U_cap/ww3_shel.inp +++ b/regtests/ww3_ta1/input_UPD3_U_cap/ww3_shel.inp @@ -3,7 +3,9 @@ $ ------------------------------ F T F T T T - F + F F + F F + F F F F F diff --git a/regtests/ww3_ta1/input_UPD5_O/ww3_shel.inp b/regtests/ww3_ta1/input_UPD5_O/ww3_shel.inp index cb19025f8..d26fb87e5 100644 --- a/regtests/ww3_ta1/input_UPD5_O/ww3_shel.inp +++ b/regtests/ww3_ta1/input_UPD5_O/ww3_shel.inp @@ -3,7 +3,9 @@ $ ------------------------------ F T F T T T - F + F F + F F + F F F F F diff --git a/regtests/ww3_ta1/input_UPD5_U/ww3_shel.inp b/regtests/ww3_ta1/input_UPD5_U/ww3_shel.inp index cb19025f8..d26fb87e5 100644 --- a/regtests/ww3_ta1/input_UPD5_U/ww3_shel.inp +++ b/regtests/ww3_ta1/input_UPD5_U/ww3_shel.inp @@ -3,7 +3,9 @@ $ ------------------------------ F T F T T T - F + F F + F F + F F F F F diff --git a/regtests/ww3_ta1/input_UPD5_U_cap/ww3_shel.inp b/regtests/ww3_ta1/input_UPD5_U_cap/ww3_shel.inp index cb19025f8..d26fb87e5 100644 --- a/regtests/ww3_ta1/input_UPD5_U_cap/ww3_shel.inp +++ b/regtests/ww3_ta1/input_UPD5_U_cap/ww3_shel.inp @@ -3,7 +3,9 @@ $ ------------------------------ F T F T T T - F + F F + F F + F F F F F diff --git a/regtests/ww3_ta1/input_UPD6_O/ww3_shel.inp b/regtests/ww3_ta1/input_UPD6_O/ww3_shel.inp index cb19025f8..d26fb87e5 100644 --- a/regtests/ww3_ta1/input_UPD6_O/ww3_shel.inp +++ b/regtests/ww3_ta1/input_UPD6_O/ww3_shel.inp @@ -3,7 +3,9 @@ $ ------------------------------ F T F T T T - F + F F + F F + F F F F F diff --git a/regtests/ww3_ta1/input_UPD6_U/ww3_shel.inp b/regtests/ww3_ta1/input_UPD6_U/ww3_shel.inp index cb19025f8..d26fb87e5 100644 --- a/regtests/ww3_ta1/input_UPD6_U/ww3_shel.inp +++ b/regtests/ww3_ta1/input_UPD6_U/ww3_shel.inp @@ -3,7 +3,9 @@ $ ------------------------------ F T F T T T - F + F F + F F + F F F F F diff --git a/regtests/ww3_ta1/input_UPD6_U_cap/ww3_shel.inp b/regtests/ww3_ta1/input_UPD6_U_cap/ww3_shel.inp index cb19025f8..d26fb87e5 100644 --- a/regtests/ww3_ta1/input_UPD6_U_cap/ww3_shel.inp +++ b/regtests/ww3_ta1/input_UPD6_U_cap/ww3_shel.inp @@ -3,7 +3,9 @@ $ ------------------------------ F T F T T T - F + F F + F F + F F F F F diff --git a/regtests/ww3_tbt1.1/input/ww3_shel.inp b/regtests/ww3_tbt1.1/input/ww3_shel.inp index 392806a9e..2e8370901 100644 --- a/regtests/ww3_tbt1.1/input/ww3_shel.inp +++ b/regtests/ww3_tbt1.1/input/ww3_shel.inp @@ -11,7 +11,9 @@ $ ------------------------------ F F Water levels F F Currents F F Winds - F Ice concentrations + F F Ice concentrations + F F Atmospheric momentum + F F Air density F Assimilation data : Mean parameters F Assimilation data : 1-D spectra F Assimilation data : 2-D spectra. diff --git a/regtests/ww3_tbt2.1/input/ww3_shel.inp b/regtests/ww3_tbt2.1/input/ww3_shel.inp index 8aede4da7..611d2805d 100644 --- a/regtests/ww3_tbt2.1/input/ww3_shel.inp +++ b/regtests/ww3_tbt2.1/input/ww3_shel.inp @@ -14,7 +14,9 @@ $ F F Water levels F F Currents F F Winds - T Ice concentrations + T F Ice concentrations + F F Atmospheric momentum + F F Air density F Assimilation data : Mean parameters F Assimilation data : 1-D spectra F Assimilation data : 2-D spectra. diff --git a/regtests/ww3_tc1/input/ww3_shel.inp b/regtests/ww3_tc1/input/ww3_shel.inp index e361d8b89..cd9ff0b1a 100644 --- a/regtests/ww3_tc1/input/ww3_shel.inp +++ b/regtests/ww3_tc1/input/ww3_shel.inp @@ -3,7 +3,9 @@ $ ------------------------------ F T F T T T - F + F F + F F + F F F F F diff --git a/regtests/ww3_tic1.1/input_IC1/ww3_shel.inp b/regtests/ww3_tic1.1/input_IC1/ww3_shel.inp index 274b67dee..84c2eaecc 100644 --- a/regtests/ww3_tic1.1/input_IC1/ww3_shel.inp +++ b/regtests/ww3_tic1.1/input_IC1/ww3_shel.inp @@ -11,7 +11,9 @@ $ ------------------------------ T T Water levels F F Currents F F Winds - T Ice concentrations + T F Ice concentrations + F F Atmospheric momentum + F F Air density F Assimilation data : Mean parameters F Assimilation data : 1-D spectra F Assimilation data : 2-D spectra. diff --git a/regtests/ww3_tic1.1/input_IC1_156x3/ww3_shel.inp b/regtests/ww3_tic1.1/input_IC1_156x3/ww3_shel.inp index 274b67dee..84c2eaecc 100644 --- a/regtests/ww3_tic1.1/input_IC1_156x3/ww3_shel.inp +++ b/regtests/ww3_tic1.1/input_IC1_156x3/ww3_shel.inp @@ -11,7 +11,9 @@ $ ------------------------------ T T Water levels F F Currents F F Winds - T Ice concentrations + T F Ice concentrations + F F Atmospheric momentum + F F Air density F Assimilation data : Mean parameters F Assimilation data : 1-D spectra F Assimilation data : 2-D spectra. diff --git a/regtests/ww3_tic1.1/input_IC2_ifr/ww3_shel.inp b/regtests/ww3_tic1.1/input_IC2_ifr/ww3_shel.inp index 092872ad0..9d8c22654 100644 --- a/regtests/ww3_tic1.1/input_IC2_ifr/ww3_shel.inp +++ b/regtests/ww3_tic1.1/input_IC2_ifr/ww3_shel.inp @@ -11,7 +11,9 @@ $ ------------------------------ T T Water levels F F Currents F F Winds - T Ice concentrations + T F Ice concentrations + F F Atmospheric momentum + F F Air density F Assimilation data : Mean parameters F Assimilation data : 1-D spectra F Assimilation data : 2-D spectra. diff --git a/regtests/ww3_tic1.1/input_IC2_nondisp/ww3_shel.inp b/regtests/ww3_tic1.1/input_IC2_nondisp/ww3_shel.inp index 9591f0e79..579728b6f 100644 --- a/regtests/ww3_tic1.1/input_IC2_nondisp/ww3_shel.inp +++ b/regtests/ww3_tic1.1/input_IC2_nondisp/ww3_shel.inp @@ -11,7 +11,9 @@ $ ------------------------------ T T Water levels F F Currents F F Winds - T Ice concentrations + T F Ice concentrations + F F Atmospheric momentum + F F Air density F Assimilation data : Mean parameters F Assimilation data : 1-D spectra F Assimilation data : 2-D spectra. diff --git a/regtests/ww3_tic1.1/input_IC2_nrl/ww3_shel.inp b/regtests/ww3_tic1.1/input_IC2_nrl/ww3_shel.inp index f7d83b836..f99ec1b18 100644 --- a/regtests/ww3_tic1.1/input_IC2_nrl/ww3_shel.inp +++ b/regtests/ww3_tic1.1/input_IC2_nrl/ww3_shel.inp @@ -11,7 +11,9 @@ $ ------------------------------ T T Water levels F F Currents F F Winds - T Ice concentrations + T F Ice concentrations + F F Atmospheric momentum + F F Air density F Assimilation data : Mean parameters F Assimilation data : 1-D spectra F Assimilation data : 2-D spectra. diff --git a/regtests/ww3_tic1.1/input_IC3/ww3_shel.inp b/regtests/ww3_tic1.1/input_IC3/ww3_shel.inp index 29c67d960..683804c24 100644 --- a/regtests/ww3_tic1.1/input_IC3/ww3_shel.inp +++ b/regtests/ww3_tic1.1/input_IC3/ww3_shel.inp @@ -11,7 +11,9 @@ $ ------------------------------ F F Water levels F F Currents F F Winds - T Ice concentrations + T F Ice concentrations + F F Atmospheric momentum + F F Air density F Assimilation data : Mean parameters F Assimilation data : 1-D spectra F Assimilation data : 2-D spectra. diff --git a/regtests/ww3_tic1.1/input_IC3NL/ww3_shel.inp b/regtests/ww3_tic1.1/input_IC3NL/ww3_shel.inp index a0ddb3924..a046dbeb5 100644 --- a/regtests/ww3_tic1.1/input_IC3NL/ww3_shel.inp +++ b/regtests/ww3_tic1.1/input_IC3NL/ww3_shel.inp @@ -11,7 +11,9 @@ $ ------------------------------ F F Water levels F F Currents F F Winds - T Ice concentrations + T F Ice concentrations + F F Atmospheric momentum + F F Air density F Assimilation data : Mean parameters F Assimilation data : 1-D spectra F Assimilation data : 2-D spectra. diff --git a/regtests/ww3_tic1.1/input_IC3_nondisp/ww3_shel.inp b/regtests/ww3_tic1.1/input_IC3_nondisp/ww3_shel.inp index 91d11d7af..e89830ee5 100644 --- a/regtests/ww3_tic1.1/input_IC3_nondisp/ww3_shel.inp +++ b/regtests/ww3_tic1.1/input_IC3_nondisp/ww3_shel.inp @@ -11,7 +11,9 @@ $ ------------------------------ T T Water levels F F Currents F F Winds - T Ice concentrations + T F Ice concentrations + F F Atmospheric momentum + F F Air density F Assimilation data : Mean parameters F Assimilation data : 1-D spectra F Assimilation data : 2-D spectra. diff --git a/regtests/ww3_tic1.1/input_IC4_M1/ww3_shel.inp b/regtests/ww3_tic1.1/input_IC4_M1/ww3_shel.inp index d14b4de0c..85d6a4dd0 100644 --- a/regtests/ww3_tic1.1/input_IC4_M1/ww3_shel.inp +++ b/regtests/ww3_tic1.1/input_IC4_M1/ww3_shel.inp @@ -11,7 +11,9 @@ $ ------------------------------ T T Water levels F F Currents F F Winds - T Ice concentrations + T F Ice concentrations + F F Atmospheric momentum + F F Air density F Assimilation data : Mean parameters F Assimilation data : 1-D spectra F Assimilation data : 2-D spectra. diff --git a/regtests/ww3_tic1.1/input_IC4_M2/ww3_shel.inp b/regtests/ww3_tic1.1/input_IC4_M2/ww3_shel.inp index 1d53bb071..1b9f6b3a5 100644 --- a/regtests/ww3_tic1.1/input_IC4_M2/ww3_shel.inp +++ b/regtests/ww3_tic1.1/input_IC4_M2/ww3_shel.inp @@ -11,7 +11,9 @@ $ ------------------------------ T T Water levels F F Currents F F Winds - T Ice concentrations + T F Ice concentrations + F F Atmospheric momentum + F F Air density F Assimilation data : Mean parameters F Assimilation data : 1-D spectra F Assimilation data : 2-D spectra. diff --git a/regtests/ww3_tic1.1/input_IC4_M3/ww3_shel.inp b/regtests/ww3_tic1.1/input_IC4_M3/ww3_shel.inp index 5d2717ff5..835f66c48 100644 --- a/regtests/ww3_tic1.1/input_IC4_M3/ww3_shel.inp +++ b/regtests/ww3_tic1.1/input_IC4_M3/ww3_shel.inp @@ -11,7 +11,9 @@ $ ------------------------------ F F Water levels F F Currents F F Winds - T Ice concentrations + T F Ice concentrations + F F Atmospheric momentum + F F Air density F Assimilation data : Mean parameters F Assimilation data : 1-D spectra F Assimilation data : 2-D spectra. diff --git a/regtests/ww3_tic1.1/input_IC4_M4/ww3_shel.inp b/regtests/ww3_tic1.1/input_IC4_M4/ww3_shel.inp index 60b032531..a134096b5 100644 --- a/regtests/ww3_tic1.1/input_IC4_M4/ww3_shel.inp +++ b/regtests/ww3_tic1.1/input_IC4_M4/ww3_shel.inp @@ -11,7 +11,9 @@ $ ------------------------------ T T Water levels F F Currents F F Winds - T Ice concentrations + T F Ice concentrations + F F Atmospheric momentum + F F Air density F Assimilation data : Mean parameters F Assimilation data : 1-D spectra F Assimilation data : 2-D spectra. diff --git a/regtests/ww3_tic1.1/input_IC4_M5/ww3_shel.inp b/regtests/ww3_tic1.1/input_IC4_M5/ww3_shel.inp index 29fdbba08..21b5247ce 100644 --- a/regtests/ww3_tic1.1/input_IC4_M5/ww3_shel.inp +++ b/regtests/ww3_tic1.1/input_IC4_M5/ww3_shel.inp @@ -11,7 +11,9 @@ $ ------------------------------ F F Water levels F F Currents F F Winds - T Ice concentrations + T F Ice concentrations + F F Atmospheric momentum + F F Air density F Assimilation data : Mean parameters F Assimilation data : 1-D spectra F Assimilation data : 2-D spectra. diff --git a/regtests/ww3_tic1.1/input_IC4_M6/ww3_shel.inp b/regtests/ww3_tic1.1/input_IC4_M6/ww3_shel.inp index 42e486dc3..8fef2cf82 100644 --- a/regtests/ww3_tic1.1/input_IC4_M6/ww3_shel.inp +++ b/regtests/ww3_tic1.1/input_IC4_M6/ww3_shel.inp @@ -11,7 +11,9 @@ $ ------------------------------ F F Water levels F F Currents F F Winds - T Ice concentrations + T F Ice concentrations + F F Atmospheric momentum + F F Air density F Assimilation data : Mean parameters F Assimilation data : 1-D spectra F Assimilation data : 2-D spectra. diff --git a/regtests/ww3_tic1.1/input_IC4_M7/ww3_shel.inp b/regtests/ww3_tic1.1/input_IC4_M7/ww3_shel.inp index fb09a0f6c..c496220ff 100644 --- a/regtests/ww3_tic1.1/input_IC4_M7/ww3_shel.inp +++ b/regtests/ww3_tic1.1/input_IC4_M7/ww3_shel.inp @@ -11,7 +11,9 @@ $ ------------------------------ F F Water levels F F Currents F F Winds - T Ice concentrations + T F Ice concentrations + F F Atmospheric momentum + F F Air density F Assimilation data : Mean parameters F Assimilation data : 1-D spectra F Assimilation data : 2-D spectra. diff --git a/regtests/ww3_tic1.1/input_IC5/ww3_shel.inp b/regtests/ww3_tic1.1/input_IC5/ww3_shel.inp index 7552c8991..590150df7 100644 --- a/regtests/ww3_tic1.1/input_IC5/ww3_shel.inp +++ b/regtests/ww3_tic1.1/input_IC5/ww3_shel.inp @@ -11,7 +11,9 @@ $ ------------------------------ F F Water levels F F Currents F F Winds - T Ice concentrations + T F Ice concentrations + F F Atmospheric momentum + F F Air density F Assimilation data : Mean parameters F Assimilation data : 1-D spectra F Assimilation data : 2-D spectra. diff --git a/regtests/ww3_tic1.1/input_IS2/ww3_shel.inp b/regtests/ww3_tic1.1/input_IS2/ww3_shel.inp index 550b6525a..ae07f8af6 100644 --- a/regtests/ww3_tic1.1/input_IS2/ww3_shel.inp +++ b/regtests/ww3_tic1.1/input_IS2/ww3_shel.inp @@ -11,7 +11,9 @@ $ ------------------------------ T T Water levels F F Currents F F Winds - T Ice concentrations + T F Ice concentrations + F F Atmospheric momentum + F F Air density F Assimilation data : Mean parameters F Assimilation data : 1-D spectra F Assimilation data : 2-D spectra. diff --git a/regtests/ww3_tic1.2/input_IC3_A0.5k/ww3_shel.inp b/regtests/ww3_tic1.2/input_IC3_A0.5k/ww3_shel.inp index 6c74786b6..5581dc712 100644 --- a/regtests/ww3_tic1.2/input_IC3_A0.5k/ww3_shel.inp +++ b/regtests/ww3_tic1.2/input_IC3_A0.5k/ww3_shel.inp @@ -11,7 +11,9 @@ $ ------------------------------ T T Water levels F F Currents F F Winds - T Ice concentrations + T F Ice concentrations + F F Atmospheric momentum + F F Air density F Assimilation data : Mean parameters F Assimilation data : 1-D spectra F Assimilation data : 2-D spectra. diff --git a/regtests/ww3_tic1.2/input_IC3_A1.0k/ww3_shel.inp b/regtests/ww3_tic1.2/input_IC3_A1.0k/ww3_shel.inp index 6c74786b6..5581dc712 100644 --- a/regtests/ww3_tic1.2/input_IC3_A1.0k/ww3_shel.inp +++ b/regtests/ww3_tic1.2/input_IC3_A1.0k/ww3_shel.inp @@ -11,7 +11,9 @@ $ ------------------------------ T T Water levels F F Currents F F Winds - T Ice concentrations + T F Ice concentrations + F F Atmospheric momentum + F F Air density F Assimilation data : Mean parameters F Assimilation data : 1-D spectra F Assimilation data : 2-D spectra. diff --git a/regtests/ww3_tic1.2/input_IC3_A2.5k/ww3_shel.inp b/regtests/ww3_tic1.2/input_IC3_A2.5k/ww3_shel.inp index 6c74786b6..5581dc712 100644 --- a/regtests/ww3_tic1.2/input_IC3_A2.5k/ww3_shel.inp +++ b/regtests/ww3_tic1.2/input_IC3_A2.5k/ww3_shel.inp @@ -11,7 +11,9 @@ $ ------------------------------ T T Water levels F F Currents F F Winds - T Ice concentrations + T F Ice concentrations + F F Atmospheric momentum + F F Air density F Assimilation data : Mean parameters F Assimilation data : 1-D spectra F Assimilation data : 2-D spectra. diff --git a/regtests/ww3_tic1.2/input_IC3_B0.5k/ww3_shel.inp b/regtests/ww3_tic1.2/input_IC3_B0.5k/ww3_shel.inp index 6c74786b6..5581dc712 100644 --- a/regtests/ww3_tic1.2/input_IC3_B0.5k/ww3_shel.inp +++ b/regtests/ww3_tic1.2/input_IC3_B0.5k/ww3_shel.inp @@ -11,7 +11,9 @@ $ ------------------------------ T T Water levels F F Currents F F Winds - T Ice concentrations + T F Ice concentrations + F F Atmospheric momentum + F F Air density F Assimilation data : Mean parameters F Assimilation data : 1-D spectra F Assimilation data : 2-D spectra. diff --git a/regtests/ww3_tic1.2/input_IC3_B1.0k/ww3_shel.inp b/regtests/ww3_tic1.2/input_IC3_B1.0k/ww3_shel.inp index 6c74786b6..5581dc712 100644 --- a/regtests/ww3_tic1.2/input_IC3_B1.0k/ww3_shel.inp +++ b/regtests/ww3_tic1.2/input_IC3_B1.0k/ww3_shel.inp @@ -11,7 +11,9 @@ $ ------------------------------ T T Water levels F F Currents F F Winds - T Ice concentrations + T F Ice concentrations + F F Atmospheric momentum + F F Air density F Assimilation data : Mean parameters F Assimilation data : 1-D spectra F Assimilation data : 2-D spectra. diff --git a/regtests/ww3_tic1.2/input_IC3_B2.5k/ww3_shel.inp b/regtests/ww3_tic1.2/input_IC3_B2.5k/ww3_shel.inp index 6c74786b6..5581dc712 100644 --- a/regtests/ww3_tic1.2/input_IC3_B2.5k/ww3_shel.inp +++ b/regtests/ww3_tic1.2/input_IC3_B2.5k/ww3_shel.inp @@ -11,7 +11,9 @@ $ ------------------------------ T T Water levels F F Currents F F Winds - T Ice concentrations + T F Ice concentrations + F F Atmospheric momentum + F F Air density F Assimilation data : Mean parameters F Assimilation data : 1-D spectra F Assimilation data : 2-D spectra. diff --git a/regtests/ww3_tic1.2/input_IC3_CHENG/ww3_shel.inp b/regtests/ww3_tic1.2/input_IC3_CHENG/ww3_shel.inp index 27c2325da..42e25ee60 100644 --- a/regtests/ww3_tic1.2/input_IC3_CHENG/ww3_shel.inp +++ b/regtests/ww3_tic1.2/input_IC3_CHENG/ww3_shel.inp @@ -11,7 +11,9 @@ $ ------------------------------ T T Water levels F F Currents F F Winds - T Ice concentrations + T F Ice concentrations + F F Atmospheric momentum + F F Air density F Assimilation data : Mean parameters F Assimilation data : 1-D spectra F Assimilation data : 2-D spectra. diff --git a/regtests/ww3_tic1.2/input_IC3_V1_G/ww3_shel.inp b/regtests/ww3_tic1.2/input_IC3_V1_G/ww3_shel.inp index 0c5733fd0..a2ed017bd 100644 --- a/regtests/ww3_tic1.2/input_IC3_V1_G/ww3_shel.inp +++ b/regtests/ww3_tic1.2/input_IC3_V1_G/ww3_shel.inp @@ -11,7 +11,9 @@ $ ------------------------------ T T Water levels F F Currents F F Winds - T Ice concentrations + T F Ice concentrations + F F Atmospheric momentum + F F Air density F Assimilation data : Mean parameters F Assimilation data : 1-D spectra F Assimilation data : 2-D spectra. diff --git a/regtests/ww3_tic1.2/input_IC3_V1_h/ww3_shel.inp b/regtests/ww3_tic1.2/input_IC3_V1_h/ww3_shel.inp index 0c5733fd0..a2ed017bd 100644 --- a/regtests/ww3_tic1.2/input_IC3_V1_h/ww3_shel.inp +++ b/regtests/ww3_tic1.2/input_IC3_V1_h/ww3_shel.inp @@ -11,7 +11,9 @@ $ ------------------------------ T T Water levels F F Currents F F Winds - T Ice concentrations + T F Ice concentrations + F F Atmospheric momentum + F F Air density F Assimilation data : Mean parameters F Assimilation data : 1-D spectra F Assimilation data : 2-D spectra. diff --git a/regtests/ww3_tic1.3/input_IC3_0.5k/ww3_shel.inp b/regtests/ww3_tic1.3/input_IC3_0.5k/ww3_shel.inp index 6c74786b6..5581dc712 100644 --- a/regtests/ww3_tic1.3/input_IC3_0.5k/ww3_shel.inp +++ b/regtests/ww3_tic1.3/input_IC3_0.5k/ww3_shel.inp @@ -11,7 +11,9 @@ $ ------------------------------ T T Water levels F F Currents F F Winds - T Ice concentrations + T F Ice concentrations + F F Atmospheric momentum + F F Air density F Assimilation data : Mean parameters F Assimilation data : 1-D spectra F Assimilation data : 2-D spectra. diff --git a/regtests/ww3_tic1.3/input_IC3_2.5k/ww3_shel.inp b/regtests/ww3_tic1.3/input_IC3_2.5k/ww3_shel.inp index 6c74786b6..5581dc712 100644 --- a/regtests/ww3_tic1.3/input_IC3_2.5k/ww3_shel.inp +++ b/regtests/ww3_tic1.3/input_IC3_2.5k/ww3_shel.inp @@ -11,7 +11,9 @@ $ ------------------------------ T T Water levels F F Currents F F Winds - T Ice concentrations + T F Ice concentrations + F F Atmospheric momentum + F F Air density F Assimilation data : Mean parameters F Assimilation data : 1-D spectra F Assimilation data : 2-D spectra. diff --git a/regtests/ww3_tic1.3/input_IC3_CHENG/ww3_shel.inp b/regtests/ww3_tic1.3/input_IC3_CHENG/ww3_shel.inp index 030bc70a1..87c1268d0 100644 --- a/regtests/ww3_tic1.3/input_IC3_CHENG/ww3_shel.inp +++ b/regtests/ww3_tic1.3/input_IC3_CHENG/ww3_shel.inp @@ -11,7 +11,9 @@ $ ------------------------------ T T Water levels F F Currents F F Winds - T Ice concentrations + T F Ice concentrations + F F Atmospheric momentum + F F Air density F Assimilation data : Mean parameters F Assimilation data : 1-D spectra F Assimilation data : 2-D spectra. diff --git a/regtests/ww3_tic1.3/input_IC3_V1_G/ww3_shel.inp b/regtests/ww3_tic1.3/input_IC3_V1_G/ww3_shel.inp index 0c5733fd0..a2ed017bd 100644 --- a/regtests/ww3_tic1.3/input_IC3_V1_G/ww3_shel.inp +++ b/regtests/ww3_tic1.3/input_IC3_V1_G/ww3_shel.inp @@ -11,7 +11,9 @@ $ ------------------------------ T T Water levels F F Currents F F Winds - T Ice concentrations + T F Ice concentrations + F F Atmospheric momentum + F F Air density F Assimilation data : Mean parameters F Assimilation data : 1-D spectra F Assimilation data : 2-D spectra. diff --git a/regtests/ww3_tic1.3/input_IC3_V1_h/ww3_shel.inp b/regtests/ww3_tic1.3/input_IC3_V1_h/ww3_shel.inp index 0c5733fd0..a2ed017bd 100644 --- a/regtests/ww3_tic1.3/input_IC3_V1_h/ww3_shel.inp +++ b/regtests/ww3_tic1.3/input_IC3_V1_h/ww3_shel.inp @@ -11,7 +11,9 @@ $ ------------------------------ T T Water levels F F Currents F F Winds - T Ice concentrations + T F Ice concentrations + F F Atmospheric momentum + F F Air density F Assimilation data : Mean parameters F Assimilation data : 1-D spectra F Assimilation data : 2-D spectra. diff --git a/regtests/ww3_tic1.4/input/ww3_shel.inp b/regtests/ww3_tic1.4/input/ww3_shel.inp index 902d5432a..4e62a5da7 100755 --- a/regtests/ww3_tic1.4/input/ww3_shel.inp +++ b/regtests/ww3_tic1.4/input/ww3_shel.inp @@ -11,7 +11,9 @@ $ ------------------------------ T T Water levels F F Currents F F Winds - T Ice concentrations + T F Ice concentrations + F F Atmospheric momentum + F F Air density F Assimilation data : Mean parameters F Assimilation data : 1-D spectra F Assimilation data : 2-D spectra. diff --git a/regtests/ww3_tic2.1/input_IC1/ww3_shel.inp b/regtests/ww3_tic2.1/input_IC1/ww3_shel.inp index 74efaa658..647625c54 100644 --- a/regtests/ww3_tic2.1/input_IC1/ww3_shel.inp +++ b/regtests/ww3_tic2.1/input_IC1/ww3_shel.inp @@ -14,7 +14,9 @@ $ F F Water levels F F Currents F F Winds - T Ice concentrations + T F Ice concentrations + F F Atmospheric momentum + F F Air density F Assimilation data : Mean parameters F Assimilation data : 1-D spectra F Assimilation data : 2-D spectra. diff --git a/regtests/ww3_tic2.1/input_IC2IS2/ww3_shel.inp b/regtests/ww3_tic2.1/input_IC2IS2/ww3_shel.inp index 74efaa658..647625c54 100644 --- a/regtests/ww3_tic2.1/input_IC2IS2/ww3_shel.inp +++ b/regtests/ww3_tic2.1/input_IC2IS2/ww3_shel.inp @@ -14,7 +14,9 @@ $ F F Water levels F F Currents F F Winds - T Ice concentrations + T F Ice concentrations + F F Atmospheric momentum + F F Air density F Assimilation data : Mean parameters F Assimilation data : 1-D spectra F Assimilation data : 2-D spectra. diff --git a/regtests/ww3_tic2.1/input_IC4/ww3_shel.inp b/regtests/ww3_tic2.1/input_IC4/ww3_shel.inp index 4c18ce73b..df9b5fe75 100644 --- a/regtests/ww3_tic2.1/input_IC4/ww3_shel.inp +++ b/regtests/ww3_tic2.1/input_IC4/ww3_shel.inp @@ -14,7 +14,9 @@ $ F F Water levels F F Currents F F Winds - T Ice concentrations + T F Ice concentrations + F F Atmospheric momentum + F F Air density F Assimilation data : Mean parameters F Assimilation data : 1-D spectra F Assimilation data : 2-D spectra. diff --git a/regtests/ww3_tic2.2/input/ww3_shel.inp b/regtests/ww3_tic2.2/input/ww3_shel.inp index a68ef1eac..c8ee18f40 100644 --- a/regtests/ww3_tic2.2/input/ww3_shel.inp +++ b/regtests/ww3_tic2.2/input/ww3_shel.inp @@ -11,7 +11,9 @@ $ ------------------------------ F F F F F F - T + T F + F F + F F F F F diff --git a/regtests/ww3_tic2.2/input_IC2/ww3_shel.inp b/regtests/ww3_tic2.2/input_IC2/ww3_shel.inp index d1dc3531f..3ee395f0e 100644 --- a/regtests/ww3_tic2.2/input_IC2/ww3_shel.inp +++ b/regtests/ww3_tic2.2/input_IC2/ww3_shel.inp @@ -11,7 +11,9 @@ $ ------------------------------ F F F F F F - T + T F + F F + F F F F F diff --git a/regtests/ww3_tic2.3/input/ww3_shel.inp b/regtests/ww3_tic2.3/input/ww3_shel.inp index 98550ce8a..b11cee4a0 100755 --- a/regtests/ww3_tic2.3/input/ww3_shel.inp +++ b/regtests/ww3_tic2.3/input/ww3_shel.inp @@ -11,7 +11,9 @@ $ ------------------------------ F F F F F F - T + T F + F F + F F F F F diff --git a/regtests/ww3_tig1.1/input/ww3_shel.inp b/regtests/ww3_tig1.1/input/ww3_shel.inp index 9cb4d5a1a..57396fc89 100644 --- a/regtests/ww3_tig1.1/input/ww3_shel.inp +++ b/regtests/ww3_tig1.1/input/ww3_shel.inp @@ -3,7 +3,9 @@ $ ------------------------------ F T F T T T - F + F F + F F + F F F F F diff --git a/regtests/ww3_tnc1/input/ww3_shel.inp b/regtests/ww3_tnc1/input/ww3_shel.inp index 56261ed17..c3ba320f9 100644 --- a/regtests/ww3_tnc1/input/ww3_shel.inp +++ b/regtests/ww3_tnc1/input/ww3_shel.inp @@ -5,7 +5,9 @@ $ T/F flag for definition as a homogeneous field. F F Water levels F F Currents T T Winds - F Ice concentrations + F F Ice concentrations + F F Atmospheric momentum + F F Air density F Assimilation data : Mean parameters F Assimilation data : 1-D spectra F Assimilation data : 2-D spectra diff --git a/regtests/ww3_tp1.1/input/ww3_shel.inp b/regtests/ww3_tp1.1/input/ww3_shel.inp index 0f7f488b0..7ad98f8b8 100644 --- a/regtests/ww3_tp1.1/input/ww3_shel.inp +++ b/regtests/ww3_tp1.1/input/ww3_shel.inp @@ -3,7 +3,9 @@ $ ------------------------------ F T F T F T - F + F F + F F + F F F F F diff --git a/regtests/ww3_tp1.1/input2/ww3_shel.inp b/regtests/ww3_tp1.1/input2/ww3_shel.inp index 0f7f488b0..7ad98f8b8 100644 --- a/regtests/ww3_tp1.1/input2/ww3_shel.inp +++ b/regtests/ww3_tp1.1/input2/ww3_shel.inp @@ -3,7 +3,9 @@ $ ------------------------------ F T F T F T - F + F F + F F + F F F F F diff --git a/regtests/ww3_tp1.10/input/ww3_shel.inp b/regtests/ww3_tp1.10/input/ww3_shel.inp index 800f876af..1e792e90f 100644 --- a/regtests/ww3_tp1.10/input/ww3_shel.inp +++ b/regtests/ww3_tp1.10/input/ww3_shel.inp @@ -3,7 +3,9 @@ $ ------------------------------ F T F T F T - F + F F + F F + F F F F F diff --git a/regtests/ww3_tp1.2/input/ww3_shel.inp b/regtests/ww3_tp1.2/input/ww3_shel.inp index 8c956d5b8..c639ae4a7 100644 --- a/regtests/ww3_tp1.2/input/ww3_shel.inp +++ b/regtests/ww3_tp1.2/input/ww3_shel.inp @@ -3,7 +3,9 @@ $ ------------------------------ F T F T F T - F + F F + F F + F F F F F diff --git a/regtests/ww3_tp1.3/input/ww3_outf_whgt_end.inp b/regtests/ww3_tp1.3/input/ww3_outf_whgt_end.inp index 31c79769e..cdbdee4b5 100644 --- a/regtests/ww3_tp1.3/input/ww3_outf_whgt_end.inp +++ b/regtests/ww3_tp1.3/input/ww3_outf_whgt_end.inp @@ -4,8 +4,8 @@ $ ----------------------------------------- $ $ (1) Forcing Fields T -$ DPT CUR WND DT WLV ICE IBG D50 - T F F F F F F F +$ DPT CUR WND DT WLV ICE TAU RHO IBG D50 + T F F F F F F F F F $ (2) Standard mean wave Parameters T $ HS LM TZ TE T01 FP DIR SPR DP diff --git a/regtests/ww3_tp1.3/input/ww3_shel.inp b/regtests/ww3_tp1.3/input/ww3_shel.inp index b110f4942..d615b8a21 100644 --- a/regtests/ww3_tp1.3/input/ww3_shel.inp +++ b/regtests/ww3_tp1.3/input/ww3_shel.inp @@ -3,7 +3,9 @@ $ ------------------------------ F T F T F T - F + F F + F F + F F F F F diff --git a/regtests/ww3_tp1.4/input/ww3_shel.inp b/regtests/ww3_tp1.4/input/ww3_shel.inp index 035b5e658..845a67a4e 100644 --- a/regtests/ww3_tp1.4/input/ww3_shel.inp +++ b/regtests/ww3_tp1.4/input/ww3_shel.inp @@ -3,7 +3,9 @@ $ ------------------------------ F T F T F T - F + F F + F F + F F F F F diff --git a/regtests/ww3_tp1.5/input/ww3_shel.inp b/regtests/ww3_tp1.5/input/ww3_shel.inp index 2b6b53f62..197be1e73 100644 --- a/regtests/ww3_tp1.5/input/ww3_shel.inp +++ b/regtests/ww3_tp1.5/input/ww3_shel.inp @@ -3,7 +3,9 @@ $ ------------------------------ F T F T F T - F + F F + F F + F F F F F diff --git a/regtests/ww3_tp1.6/input/ww3_shel.inp b/regtests/ww3_tp1.6/input/ww3_shel.inp index 686bfa6e3..e1c7d503b 100644 --- a/regtests/ww3_tp1.6/input/ww3_shel.inp +++ b/regtests/ww3_tp1.6/input/ww3_shel.inp @@ -3,7 +3,9 @@ $ ------------------------------ F F T F F F - F + F F + F F + F F F F F diff --git a/regtests/ww3_tp1.6/input_moderate_current/ww3_shel.inp b/regtests/ww3_tp1.6/input_moderate_current/ww3_shel.inp index 686bfa6e3..e1c7d503b 100644 --- a/regtests/ww3_tp1.6/input_moderate_current/ww3_shel.inp +++ b/regtests/ww3_tp1.6/input_moderate_current/ww3_shel.inp @@ -3,7 +3,9 @@ $ ------------------------------ F F T F F F - F + F F + F F + F F F F F diff --git a/regtests/ww3_tp1.7/input/ww3_shel.inp b/regtests/ww3_tp1.7/input/ww3_shel.inp index a3328f4e9..466d063e0 100755 --- a/regtests/ww3_tp1.7/input/ww3_shel.inp +++ b/regtests/ww3_tp1.7/input/ww3_shel.inp @@ -7,7 +7,9 @@ $ F F Water levels F F Currents F F Winds - F Ice concentrations + F F Ice concentrations + F F Atmospheric momentum + F F Air density F Assimilation data : Mean parameters F Assimilation data : 1-D spectra F Assimilation data : 2-D spectra. diff --git a/regtests/ww3_tp1.7/input_OBST/ww3_shel.inp b/regtests/ww3_tp1.7/input_OBST/ww3_shel.inp index a3328f4e9..466d063e0 100755 --- a/regtests/ww3_tp1.7/input_OBST/ww3_shel.inp +++ b/regtests/ww3_tp1.7/input_OBST/ww3_shel.inp @@ -7,7 +7,9 @@ $ F F Water levels F F Currents F F Winds - F Ice concentrations + F F Ice concentrations + F F Atmospheric momentum + F F Air density F Assimilation data : Mean parameters F Assimilation data : 1-D spectra F Assimilation data : 2-D spectra. diff --git a/regtests/ww3_tp1.8/input/ww3_shel.inp b/regtests/ww3_tp1.8/input/ww3_shel.inp index 2b53da5c5..e3aef3b48 100644 --- a/regtests/ww3_tp1.8/input/ww3_shel.inp +++ b/regtests/ww3_tp1.8/input/ww3_shel.inp @@ -7,7 +7,9 @@ $ as a homogeneous field (first three only); eight input lines. -------$ F T Water levels F T Currents F T Winds - F Ice concentrations + F F Ice concentrations + F F Atmospheric momentum + F F Air density F Assimilation data : Mean parameters F Assimilation data : 1-D spectra F Assimilation data : 2-D spectra. diff --git a/regtests/ww3_tp1.8/input_BJ/ww3_shel.inp b/regtests/ww3_tp1.8/input_BJ/ww3_shel.inp index 37d0a7a5f..95ac16a35 100644 --- a/regtests/ww3_tp1.8/input_BJ/ww3_shel.inp +++ b/regtests/ww3_tp1.8/input_BJ/ww3_shel.inp @@ -7,7 +7,9 @@ $ as a homogeneous field (first three only); eight input lines. -------$ F T Water levels F T Currents F T Winds - F Ice concentrations + F F Ice concentrations + F F Atmospheric momentum + F F Air density F Assimilation data : Mean parameters F Assimilation data : 1-D spectra F Assimilation data : 2-D spectra. diff --git a/regtests/ww3_tp1.9/input/ww3_shel.inp b/regtests/ww3_tp1.9/input/ww3_shel.inp index 6d9b68367..3968df803 100644 --- a/regtests/ww3_tp1.9/input/ww3_shel.inp +++ b/regtests/ww3_tp1.9/input/ww3_shel.inp @@ -3,7 +3,9 @@ $ ------------------------------ F T F T F T - F + F F + F F + F F F F F diff --git a/regtests/ww3_tp2.1/input/ww3_multi.inp b/regtests/ww3_tp2.1/input/ww3_multi.inp index 29e2f0f12..6728d778f 100644 --- a/regtests/ww3_tp2.1/input/ww3_multi.inp +++ b/regtests/ww3_tp2.1/input/ww3_multi.inp @@ -2,7 +2,7 @@ $ WAVEWATCH III multi-scale input file $ ------------------------------ 1 0 F 1 F F $ - 'ww3' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 1 1 0.00 1.00 F + 'ww3' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 1 1 0.00 1.00 F $ 19680606 000000 19680606 044800 $ diff --git a/regtests/ww3_tp2.1/input/ww3_shel.inp b/regtests/ww3_tp2.1/input/ww3_shel.inp index 2df4dc1dc..fcdd46fc9 100644 --- a/regtests/ww3_tp2.1/input/ww3_shel.inp +++ b/regtests/ww3_tp2.1/input/ww3_shel.inp @@ -3,7 +3,9 @@ $ ------------------------------ F T F T F T - F + F F + F F + F F F F F diff --git a/regtests/ww3_tp2.10/input/ww3_outf.inp b/regtests/ww3_tp2.10/input/ww3_outf.inp index 01751647f..a8f3e2385 100644 --- a/regtests/ww3_tp2.10/input/ww3_outf.inp +++ b/regtests/ww3_tp2.10/input/ww3_outf.inp @@ -6,8 +6,8 @@ $ $ $ (1) Forcing Fields T -$ DPT CUR WND DT WLV ICE IBG D50 - F F T F F F F F +$ DPT CUR WND DT WLV ICE TAU RHO IBG D50 + F F T F F F F F F F $ (2) Standard mean wave Parameters T $ HS LM TZ TE T01 FP DIR SPR DP diff --git a/regtests/ww3_tp2.10/input/ww3_shel.inp b/regtests/ww3_tp2.10/input/ww3_shel.inp index 66fcb7c14..71a4632b2 100644 --- a/regtests/ww3_tp2.10/input/ww3_shel.inp +++ b/regtests/ww3_tp2.10/input/ww3_shel.inp @@ -5,7 +5,9 @@ $ F F Water levels F F Currents F F Winds - F Ice concentrations + F F Ice concentrations + F F Atmospheric momentum + F F Air density F Assimilation data : Mean parameters F Assimilation data : 1-D spectra F Assimilation data : 2-D spectra. diff --git a/regtests/ww3_tp2.11/input/ww3_shel.inp b/regtests/ww3_tp2.11/input/ww3_shel.inp index bc595300f..740c1a089 100644 --- a/regtests/ww3_tp2.11/input/ww3_shel.inp +++ b/regtests/ww3_tp2.11/input/ww3_shel.inp @@ -5,7 +5,9 @@ $ F F Water levels F F Currents F F Winds - F Ice concentrations + F F Ice concentrations + F F Atmospheric momentum + F F Air density F Assimilation data : Mean parameters F Assimilation data : 1-D spectra F Assimilation data : 2-D spectra. diff --git a/regtests/ww3_tp2.13/input/ww3_shel.inp b/regtests/ww3_tp2.13/input/ww3_shel.inp index f1a39d61b..82bf46056 100644 --- a/regtests/ww3_tp2.13/input/ww3_shel.inp +++ b/regtests/ww3_tp2.13/input/ww3_shel.inp @@ -11,7 +11,9 @@ $ F F F F F F - F + F F + F F + F F F Assimilation data : Mean parameters F Assimilation data : 1-D spectra F Assimilation data : 2-D spectra. diff --git a/regtests/ww3_tp2.14/input/ww3_shel_OASACM.inp b/regtests/ww3_tp2.14/input/ww3_shel_OASACM.inp index d3306bb7f..7e59dc0ab 100755 --- a/regtests/ww3_tp2.14/input/ww3_shel_OASACM.inp +++ b/regtests/ww3_tp2.14/input/ww3_shel_OASACM.inp @@ -16,7 +16,9 @@ $ Include ice and mud parameters only if IC1/2/3/4 used : F F Water levels F F Currents C F Winds - F Ice concentrations + F F Ice concentrations + F F Atmospheric momentum + F F Air density F Assimilation data : Mean parameters F Assimilation data : 1-D spectra F Assimilation data : 2-D spectra diff --git a/regtests/ww3_tp2.14/input/ww3_shel_OASACM2.inp b/regtests/ww3_tp2.14/input/ww3_shel_OASACM2.inp index df92bbb06..e39068587 100755 --- a/regtests/ww3_tp2.14/input/ww3_shel_OASACM2.inp +++ b/regtests/ww3_tp2.14/input/ww3_shel_OASACM2.inp @@ -16,7 +16,9 @@ $ Include ice and mud parameters only if IC1/2/3/4 used : F F Water levels F F Currents C F Winds - F Ice concentrations + F F Ice concentrations + F F Atmospheric momentum + F F Air density F Assimilation data : Mean parameters F Assimilation data : 1-D spectra F Assimilation data : 2-D spectra diff --git a/regtests/ww3_tp2.14/input/ww3_shel_OASACM3.inp b/regtests/ww3_tp2.14/input/ww3_shel_OASACM3.inp index 83ff190ce..b17d49337 100755 --- a/regtests/ww3_tp2.14/input/ww3_shel_OASACM3.inp +++ b/regtests/ww3_tp2.14/input/ww3_shel_OASACM3.inp @@ -16,7 +16,9 @@ $ Include ice and mud parameters only if IC1/2/3/4 used : F F Water levels F F Currents F F Winds - F Ice concentrations + F F Ice concentrations + F F Atmospheric momentum + F F Air density F Assimilation data : Mean parameters F Assimilation data : 1-D spectra F Assimilation data : 2-D spectra diff --git a/regtests/ww3_tp2.14/input/ww3_shel_OASACM4.inp b/regtests/ww3_tp2.14/input/ww3_shel_OASACM4.inp index 9d6dcd989..11873e6d4 100755 --- a/regtests/ww3_tp2.14/input/ww3_shel_OASACM4.inp +++ b/regtests/ww3_tp2.14/input/ww3_shel_OASACM4.inp @@ -16,7 +16,9 @@ $ Include ice and mud parameters only if IC1/2/3/4 used : F F Water levels F F Currents C F Winds - F Ice concentrations + F F Ice concentrations + F F Atmospheric momentum + F F Air density F Assimilation data : Mean parameters F Assimilation data : 1-D spectra F Assimilation data : 2-D spectra diff --git a/regtests/ww3_tp2.14/input/ww3_shel_OASACM5.inp b/regtests/ww3_tp2.14/input/ww3_shel_OASACM5.inp index b58a52a87..03bc85e9e 100755 --- a/regtests/ww3_tp2.14/input/ww3_shel_OASACM5.inp +++ b/regtests/ww3_tp2.14/input/ww3_shel_OASACM5.inp @@ -16,7 +16,9 @@ $ Include ice and mud parameters only if IC1/2/3/4 used : F F Water levels F F Currents C F Winds - F Ice concentrations + F F Ice concentrations + F F Atmospheric momentum + F F Air density F Assimilation data : Mean parameters F Assimilation data : 1-D spectra F Assimilation data : 2-D spectra diff --git a/regtests/ww3_tp2.14/input/ww3_shel_OASACM6.inp b/regtests/ww3_tp2.14/input/ww3_shel_OASACM6.inp index 23a141cf1..d003e89e3 100755 --- a/regtests/ww3_tp2.14/input/ww3_shel_OASACM6.inp +++ b/regtests/ww3_tp2.14/input/ww3_shel_OASACM6.inp @@ -16,7 +16,9 @@ $ Include ice and mud parameters only if IC1/2/3/4 used : F F Water levels F F Currents C F Winds - F Ice concentrations + F F Ice concentrations + F F Atmospheric momentum + F F Air density F Assimilation data : Mean parameters F Assimilation data : 1-D spectra F Assimilation data : 2-D spectra diff --git a/regtests/ww3_tp2.14/input/ww3_shel_OASICM.inp b/regtests/ww3_tp2.14/input/ww3_shel_OASICM.inp index 472a32db5..74f4b0028 100755 --- a/regtests/ww3_tp2.14/input/ww3_shel_OASICM.inp +++ b/regtests/ww3_tp2.14/input/ww3_shel_OASICM.inp @@ -16,7 +16,9 @@ $ Include ice and mud parameters only if IC1/2/3/4 used : F F Water levels F F Currents F F Winds - C Ice concentrations + C F Ice concentrations + F F Atmospheric momentum + F F Air density F Assimilation data : Mean parameters F Assimilation data : 1-D spectra F Assimilation data : 2-D spectra diff --git a/regtests/ww3_tp2.14/input/ww3_shel_OASOCM.inp b/regtests/ww3_tp2.14/input/ww3_shel_OASOCM.inp index 7d1b1578d..c3ff6de77 100755 --- a/regtests/ww3_tp2.14/input/ww3_shel_OASOCM.inp +++ b/regtests/ww3_tp2.14/input/ww3_shel_OASOCM.inp @@ -16,7 +16,9 @@ $ Include ice and mud parameters only if IC1/2/3/4 used : F F Water levels C F Currents F F Winds - F Ice concentrations + F F Ice concentrations + F F Atmospheric momentum + F F Air density F Assimilation data : Mean parameters F Assimilation data : 1-D spectra F Assimilation data : 2-D spectra diff --git a/regtests/ww3_tp2.15/info b/regtests/ww3_tp2.15/info index 6e75c6db0..56bb9d678 100644 --- a/regtests/ww3_tp2.15/info +++ b/regtests/ww3_tp2.15/info @@ -25,7 +25,14 @@ # Wind data for this test case was produced by the COSMO-ME model, and have # # been provided by CNMCA (National Meteorological Service, Rome, Italy). # # # -# Model results are presented here for the purpose of testingi # +# Additionally, a wind stress-driven test with variable air density field # +# is included. At the moment the test is still wind-driven as the stress- # +# driven case is not fully implemented, but it is included to check that # +# the stress is properly read, interpolated, and written to the output. # +# Wind stress and density data were provided by the Met Office by modifying # +# the wind data used to run the wind-driven test. # +# # +# Model results are presented here for the purpose of testing # # the formulations of space-time extreme parameters. This regression test # # oversimplifies real-case bathymetry and wind fields, thus comparison with # # measurements are merely qualitative. # @@ -50,7 +57,7 @@ # the script output. # # # # Francesco Barbariol, Jose-Henrique Alves, Sep 2016 # -# Last Mod : Jan 2018 # +# Last Mod : May 2021 # # # # Copyright 2009-2016 National Weather Service (NWS), # # National Oceanic and Atmospheric Administration. All rights # diff --git a/regtests/ww3_tp2.15/input/ww3_shel.inp b/regtests/ww3_tp2.15/input/ww3_shel.inp index 0e3d36d5f..7a4a5a3d1 100644 --- a/regtests/ww3_tp2.15/input/ww3_shel.inp +++ b/regtests/ww3_tp2.15/input/ww3_shel.inp @@ -5,7 +5,9 @@ $ F F Water levels F F Currents T F Winds - F Ice concentrations + F F Ice concentrations + F F Atmospheric momentum + F F Air density F Assimilation data : Mean parameters F Assimilation data : 1-D spectra F Assimilation data : 2-D spectra. diff --git a/regtests/ww3_tp2.15/input_rho/extract_AA_STE.m b/regtests/ww3_tp2.15/input_rho/extract_AA_STE.m new file mode 100644 index 000000000..06bebe0cf --- /dev/null +++ b/regtests/ww3_tp2.15/input_rho/extract_AA_STE.m @@ -0,0 +1,117 @@ +function extract_AA_STE +clc +clear +close all + +%% ######################################################################## +% +% extract_AA_STE.m +% +% Matlab function to extract STE outputs of WW3 regtest ww3_tp2.15 at the +% Acqua Alta (AA) tower location. +% Results simulate stereo observations during experiment on +% March 10th 2014 09:40UTC-10:10UTC, as described in References below. +% +% DISCLAIMER: Model results are presented here for the purpose of testing +% the formulations of space-time extreme parameters. This regression test +% oversimplifies real-case bathymetry and wind fields, thus comparison with +% measurements are merely qualitative. +% +% ------------------------------------------------------------------------- +% References: +% Barbariol et al. (2016), Numerical Modeling of Space-Time Wave Extremes +% using WAVEWATCH III, Ocean Dynamics, under review +% Benetazzo et al. (2015), Observation of extreme sea waves in a space-time +% ensemble. Journal of Physical Oceanography 45(9), 2261-2275 +% +% ######################################################################### + +%% INPUTs + +% Insert WW3 nc file (name and directory) +dir = input(' Enter path of directory with gridded netcdf output: ','s'); +fnc = input(' Enter file name with gridded netcdf data: ','s'); + +%% AA data + +% AA event time +AA.t_event = datenum(2014,03,10,09,40,00); + +% AA coordinates +AA.lon = 12.5088; % E +AA.lat = 45.3138; % N + + +% AA reference results (Hs, STE) from 5km run and 15km run (second column) + +AA.Hs = [1.4108 1.5155]; % m +AA.STMAXE = [1.8430 1.9672]; % m +AA.STMAXD = [0.1461 0.1585]; % m +AA.HCMAXE = [2.6217 2.8083]; % m +AA.HCMAXD = [0.1850 0.2013]; % m +AA.HMAXE = [2.8966 3.0959]; % m +AA.HMAXD = [0.2044 0.2219]; % m + +%% extract results from WW3 nc + +cd(dir) + +WW3.time = double(ncread(fnc,'time') + datenum(1990,01,01,00,00,00)); +evt = find(WW3.time >= AA.t_event-1/24 & WW3.time <= AA.t_event+1/24); % Indices within +-1h of measurements + +WW3.lon = double(ncread(fnc,'longitude')); +WW3.lat = double(ncread(fnc,'latitude')); + +HS = double(read_interp(fnc,'hs',WW3.lon,WW3.lat,AA.lon,AA.lat,2,2)); +WW3.Hs = mean(HS(evt)); + +% STE (Compute mean parameters from event times) +STMAXE = double(read_interp(fnc,'stmaxe',WW3.lon,WW3.lat,AA.lon,AA.lat,2,2)); +WW3.STMAXE = mean(STMAXE(evt)); % m +STMAXD = double(read_interp(fnc,'stmaxd',WW3.lon,WW3.lat,AA.lon,AA.lat,2,2)); +WW3.STMAXD = mean(STMAXD(evt)); % m +HMAXE = double(read_interp(fnc,'hmaxe',WW3.lon,WW3.lat,AA.lon,AA.lat,2,2)); +WW3.HMAXE = mean(HMAXE(evt)); % m +HMAXD = double(read_interp(fnc,'hmaxd',WW3.lon,WW3.lat,AA.lon,AA.lat,2,2)); +WW3.HMAXD = mean(HMAXD(evt)); % m +HCMAXE = double(read_interp(fnc,'hcmaxe',WW3.lon,WW3.lat,AA.lon,AA.lat,2,2)); +WW3.HCMAXE = mean(HCMAXE(evt)); % m +HCMAXD = double(read_interp(fnc,'hcmaxd',WW3.lon,WW3.lat,AA.lon,AA.lat,2,2)); +WW3.HCMAXD = mean(HCMAXD(evt)); % m + +disp(' ') +disp(' This Run | 5km Reference | 15km Reference') +disp(['Hs ',num2str(WW3.Hs,'%6.2f'),' | ',num2str(AA.Hs(1),'%6.2f'),' | ',num2str(AA.Hs(2),'%6.2f')]) +disp(['C_max/Hs ',num2str(WW3.STMAXE./WW3.Hs,'%6.2f'),' | ',num2str(AA.STMAXE(1)./AA.Hs(1),'%6.2f'),' | ',num2str(AA.STMAXE(2)./AA.Hs(2),'%6.2f')]) +disp(['C_std/Hs ',num2str(WW3.STMAXD./WW3.Hs,'%6.2f'),' | ',num2str(AA.STMAXD(1)./AA.Hs(1),'%6.2f'),' | ',num2str(AA.STMAXD(2)./AA.Hs(2),'%6.2f')]) +disp(['HC_max/Hs ',num2str(WW3.HCMAXE./WW3.Hs,'%6.2f'),' | ',num2str(AA.HCMAXE(1)./AA.Hs(1),'%6.2f'),' | ',num2str(AA.HCMAXE(2)./AA.Hs(2),'%6.2f')]) +disp(['HC_std/Hs ',num2str(WW3.HCMAXD./WW3.Hs,'%6.2f'),' | ',num2str(AA.HCMAXD(1)./AA.Hs(1),'%6.2f'),' | ',num2str(AA.HCMAXD(2)./AA.Hs(2),'%6.2f')]) +disp(['H_max/Hs ',num2str(WW3.HMAXE./WW3.Hs,'%6.2f'),' | ',num2str(AA.HMAXE(1)./AA.Hs(1),'%6.2f'),' | ',num2str(AA.HMAXE(2)./AA.Hs(2),'%6.2f')]) +disp(['C_std/Hs ',num2str(WW3.HMAXD./WW3.Hs,'%6.2f'),' | ',num2str(AA.HMAXD(1)./AA.Hs(1),'%6.2f'),' | ',num2str(AA.HMAXD(2)./AA.Hs(2),'%6.2f')]) +disp(' ') +disp(' Model resolution, domain extent and wind model skill ') +disp(' affect wave model results.') +disp(' ') +disp(' Reference values obtained in a Cray Compute Cluster using ') +disp(' both high (5km) and low (15km) resolution options.') +disp(' ') +disp(' For actual observations and field experiment description ') +disp(' see references in comment section of this script.') + + +function int_var = read_interp(fnc,var_name,lonM,latM,lon_obs,lat_obs,dx,dy) + +dd = double(sqrt((lon_obs-lonM).^2+(lat_obs-latM).^2)); +[yy,xx] = find(dd == min(dd(:))); + +var = double(ncread(fnc,var_name,[yy-dy/2,xx-dx/2,1],[dy+1 dx+1 Inf])); + +lon_mod = lonM(yy-dy/2:yy+dy/2,xx-dx/2:xx+dx/2); +lat_mod = latM(yy-dy/2:yy+dy/2,xx-dx/2:xx+dx/2); + +% Interpolate over space +for i = 1 : size(var,3) + var_i = squeeze(var(:,:,i)); + I = TriScatteredInterp(lon_mod(:), lat_mod(:), var_i(:),'nearest' ); + int_var(i) = I(lon_obs,lat_obs); +end diff --git a/regtests/ww3_tp2.15/input_rho/switch b/regtests/ww3_tp2.15/input_rho/switch new file mode 100644 index 000000000..a0e0977b9 --- /dev/null +++ b/regtests/ww3_tp2.15/input_rho/switch @@ -0,0 +1 @@ +F90 NOGRB NC4 SHRD PR3 UQ FLX0 LN1 ST4 NL1 BT1 DB1 TR0 BS0 IC0 IS0 REF0 XX0 WNT1 WNX1 CRT1 CRX1 O0 O1 O2 O3 O4 O5 O6 O7 O10 O11 diff --git a/regtests/ww3_tp2.15/input_rho/switch_MPI b/regtests/ww3_tp2.15/input_rho/switch_MPI new file mode 100644 index 000000000..9012f002f --- /dev/null +++ b/regtests/ww3_tp2.15/input_rho/switch_MPI @@ -0,0 +1 @@ +F90 NOGRB NC4 DIST MPI PR3 UQ FLX0 LN1 ST4 NL1 BT1 DB1 TR0 BS0 IC0 IS0 REF0 XX0 WNT1 WNX1 CRT1 CRX1 O0 O1 O2 O3 O4 O5 O6 O7 O10 O11 diff --git a/regtests/ww3_tp2.15/input_rho/ww3_grid.inp b/regtests/ww3_tp2.15/input_rho/ww3_grid.inp new file mode 100644 index 000000000..81d275963 --- /dev/null +++ b/regtests/ww3_tp2.15/input_rho/ww3_grid.inp @@ -0,0 +1,33 @@ +$ WAVEWATCH III Grid preprocessor input file +$ ------------------------------------------ + 'ADRIATIC SEA 15km LAMBERT CONFORMAL ' +$ + 1.1 0.05 40 36 .5 +$ + F T T T F T +$ + 900. 450. 450. 5. +$ + &SIN4 BETAMAX = 1.33, Z0MAX = 0.002 / + &SDS4 SDSBCHOICE = 1, FXFM3=2.5, SDSBR = 0.00085, SDSCUM = 0.0 / + &SNL1 NLPROP = 2.7E7 / + &MISC STDX = 11.2, STDY = 11.2, STDT = 1800., FLAGTR = 4 / +END OF NAMELISTS +$ + 'CURV' T 'NONE' + 43 42 +$ Longitudes for GLW CURV grid + 41 1. 0. 1 1 '(...)' 'NAME' '../input/lon_ste_adri_15km.dat' +$ Latitudes for GLW CURV grid + 42 1. 0. 1 1 '(...)' 'NAME' '../input/lat_ste_adri_15km.dat' +$ Bottom Bathymetry + -0.10 2.50 43 0.001000 1 1 '(....)' 'NAME' '../input/ste_adri_15km_etopo1.depth' +$ Sub-grid information + 44 0.010000 1 1 '(...)' 'NAME' '../input/ste_adri_15km_etopo1.obstr' +$ + 45 1 1 '(...)' 'NAME' '../input/ste_adri_15km_etopo1.mask' +$ + 0. 0. 0. 0. 0 +$ +$ End of input file + diff --git a/regtests/ww3_tp2.15/input_rho/ww3_grid.nml b/regtests/ww3_tp2.15/input_rho/ww3_grid.nml new file mode 100644 index 000000000..5c41d46ac --- /dev/null +++ b/regtests/ww3_tp2.15/input_rho/ww3_grid.nml @@ -0,0 +1,347 @@ +! -------------------------------------------------------------------- ! +! WAVEWATCH III - ww3_grid.nml - Grid pre-processing ! +! -------------------------------------------------------------------- ! + +! -------------------------------------------------------------------- ! +! Define the spectrum parameterization via SPECTRUM_NML namelist +! +! * namelist must be terminated with / +! * definitions & defaults: +! SPECTRUM%XFR = 0. ! frequency increment +! SPECTRUM%FREQ1 = 0. ! first frequency (Hz) +! SPECTRUM%NK = 0 ! number of frequencies (wavenumbers) +! SPECTRUM%NTH = 0 ! number of direction bins +! SPECTRUM%THOFF = 0. ! relative offset of first direction [-0.5,0.5] +! -------------------------------------------------------------------- ! +&SPECTRUM_NML + SPECTRUM%XFR = 1.1 + SPECTRUM%FREQ1 = 0.05 + SPECTRUM%NK = 40 + SPECTRUM%NTH = 36 + SPECTRUM%THOFF = .5 +/ + +! -------------------------------------------------------------------- ! +! Define the run parameterization via RUN_NML namelist +! +! * namelist must be terminated with / +! * definitions & defaults: +! RUN%FLDRY = F ! dry run (I/O only, no calculation) +! RUN%FLCX = F ! x-component of propagation +! RUN%FLCY = F ! y-component of propagation +! RUN%FLCTH = F ! direction shift +! RUN%FLCK = F ! wavenumber shift +! RUN%FLSOU = F ! source terms +! -------------------------------------------------------------------- ! +&RUN_NML + RUN%FLCX = T + RUN%FLCY = T + RUN%FLCTH = T + RUN%FLSOU = T +/ + +! -------------------------------------------------------------------- ! +! Define the timesteps parameterization via TIMESTEPS_NML namelist +! +! * It is highly recommended to set up time steps which are multiple +! between them. +! +! * The first time step to calculate is the maximum CFL time step +! which depend on the lowest frequency FREQ1 previously set up and the +! lowest spatial grid resolution in meters DXY. +! reminder : 1 degree=60minutes // 1minute=1mile // 1mile=1.852km +! The formula for the CFL time is : +! Tcfl = DXY / (G / (FREQ1*4*Pi) ) with the constants Pi=3,14 and G=9.8m/s²; +! DTXY ~= 90% Tcfl +! DTMAX ~= 3 * DTXY (maximum global time step limit) +! +! * The refraction time step depends on how strong can be the current velocities +! on your grid : +! DTKTH ~= DTMAX / 2 ! in case of no or light current velocities +! DTKTH ~= DTMAX / 10 ! in case of strong current velocities +! +! * The source terms time step is usually defined between 5s and 60s. +! A common value is 10s. +! DTMIN ~= 10 +! +! * namelist must be terminated with / +! * definitions & defaults: +! TIMESTEPS%DTMAX = 0. ! maximum global time step (s) +! TIMESTEPS%DTXY = 0. ! maximum CFL time step for x-y (s) +! TIMESTEPS%DTKTH = 0. ! maximum CFL time step for k-th (s) +! TIMESTEPS%DTMIN = 0. ! minimum source term time step (s) +! -------------------------------------------------------------------- ! +&TIMESTEPS_NML + TIMESTEPS%DTMAX = 900. + TIMESTEPS%DTXY = 450. + TIMESTEPS%DTKTH = 450. + TIMESTEPS%DTMIN = 5. +/ + +! -------------------------------------------------------------------- ! +! Define the grid to preprocess via GRID_NML namelist +! +! * the tunable parameters for source terms, propagation schemes, and +! numerics are read using namelists. +! * Any namelist found in the folowing sections is temporarily written +! to param.scratch, and read from there if necessary. +! * The order of the namelists is immaterial. +! * Namelists not needed for the given switch settings will be skipped +! automatically +! +! * grid type can be : +! 'RECT' : rectilinear +! 'CURV' : curvilinear +! 'UNST' : unstructured (triangle-based) +! +! * coordinate system can be : +! 'SPHE' : Spherical (degrees) +! 'CART' : Cartesian (meters) +! +! * grid closure can only be applied in spherical coordinates +! +! * grid closure can be : +! 'NONE' : No closure is applied +! 'SMPL' : Simple grid closure. Grid is periodic in the +! : i-index and wraps at i=NX+1. In other words, +! : (NX+1,J) => (1,J). A grid with simple closure +! : may be rectilinear or curvilinear. +! 'TRPL' : Tripole grid closure : Grid is periodic in the +! : i-index and wraps at i=NX+1 and has closure at +! : j=NY+1. In other words, (NX+1,J<=NY) => (1,J) +! : and (I,NY+1) => (NX-I+1,NY). Tripole +! : grid closure requires that NX be even. A grid +! : with tripole closure must be curvilinear. +! +! * The coastline limit depth is the value which distinguish the sea +! points to the land points. All the points with depth values (ZBIN) +! greater than this limit (ZLIM) will be considered as excluded points +! and will never be wet points, even if the water level grows over. +! It can only overwrite the status of a sea point to a land point. +! The value must have a negative value under the mean sea level +! +! * The minimum water depth allowed to compute the model is the absolute +! depth value (DMIN) used in the model if the input depth is lower to +! avoid the model to blow up. +! +! * namelist must be terminated with / +! * definitions & defaults: +! GRID%NAME = 'unset' ! grid name (30 char) +! GRID%NML = 'namelists.nml' ! namelists filename +! GRID%TYPE = 'unset' ! grid type +! GRID%COORD = 'unset' ! coordinate system +! GRID%CLOS = 'unset' ! grid closure +! +! GRID%ZLIM = 0. ! coastline limit depth (m) +! GRID%DMIN = 0. ! abs. minimum water depth (m) +! -------------------------------------------------------------------- ! +&GRID_NML + GRID%NAME = 'ADRIATIC SEA 15km LAMBERT CONFORMAL' + GRID%NML = '../input/namelists_ADRIATIC.nml' + GRID%TYPE = 'CURV' + GRID%COORD = 'SPHE' + GRID%CLOS = 'NONE' + GRID%ZLIM = -0.10 + GRID%DMIN = 2.50 +/ + +! -------------------------------------------------------------------- ! +! Define the curvilinear grid type via CURV_NML namelist +! - only for CURV grids - +! +! * The minimum grid size is 3x3. +! +! * If CSTRG='SMPL', then SX is forced to 360/NX. +! +! * value <= scale_fac * value_read + add_offset +! +! * IDLA : Layout indicator : +! 1 : Read line-by-line bottom to top. (default) +! 2 : Like 1, single read statement. +! 3 : Read line-by-line top to bottom. +! 4 : Like 3, single read statement. +! * IDFM : format indicator : +! 1 : Free format. (default) +! 2 : Fixed format. +! 3 : Unformatted. +! * FORMAT : element format to read : +! '(....)' : auto detected (default) +! '(f10.6)' : float type +! +! * Example : +! IDF SF OFF IDLA IDFM FORMAT FILENAME +! 21 0.25 -0.5 3 1 '(....)' 'x.inp' +! 22 0.25 0.5 3 1 '(....)' 'y.inp' +! +! * namelist must be terminated with / +! * definitions & defaults: +! CURV%NX = 0 ! number of points along x-axis +! CURV%NY = 0 ! number of points along y-axis +! +! CURV%XCOORD%SF = 1. ! x-coord scale factor +! CURV%XCOORD%OFF = 0. ! x-coord add offset +! CURV%XCOORD%FILENAME = 'unset' ! x-coord filename +! CURV%XCOORD%IDF = 21 ! x-coord file unit number +! CURV%XCOORD%IDLA = 1 ! x-coord layout indicator +! CURV%XCOORD%IDFM = 1 ! x-coord format indicator +! CURV%XCOORD%FORMAT = '(....)' ! x-coord formatted read format +! +! CURV%YCOORD%SF = 1. ! y-coord scale factor +! CURV%YCOORD%OFF = 0. ! y-coord add offset +! CURV%YCOORD%FILENAME = 'unset' ! y-coord filename +! CURV%YCOORD%IDF = 22 ! y-coord file unit number +! CURV%YCOORD%IDLA = 1 ! y-coord layout indicator +! CURV%YCOORD%IDFM = 1 ! y-coord format indicator +! CURV%YCOORD%FORMAT = '(....)' ! y-coord formatted read format +! -------------------------------------------------------------------- ! +&CURV_NML + CURV%NX = 43 + CURV%NY = 42 + CURV%XCOORD%FILENAME = '../input/lon_ste_adri_15km.dat' + CURV%XCOORD%FORMAT = '(...)' + CURV%YCOORD%FILENAME = '../input/lat_ste_adri_15km.dat' + CURV%YCOORD%FORMAT = '(...)' +/ + +! -------------------------------------------------------------------- ! +! Define the depth to preprocess via DEPTH_NML namelist +! - for RECT and CURV grids - +! +! * if no obstruction subgrid, need to set &MISC FLAGTR = 0 +! +! * The depth value must have negative values under the mean sea level +! +! * value <= value_read * scale_fac +! +! * IDLA : Layout indicator : +! 1 : Read line-by-line bottom to top. (default) +! 2 : Like 1, single read statement. +! 3 : Read line-by-line top to bottom. +! 4 : Like 3, single read statement. +! * IDFM : format indicator : +! 1 : Free format. (default) +! 2 : Fixed format. +! 3 : Unformatted. +! * FORMAT : element format to read : +! '(....)' : auto detected (default) +! '(f10.6)' : float type +! +! * Example : +! IDF SF IDLA IDFM FORMAT FILENAME +! 50 0.001 1 1 '(....)' 'GLOB-30M.bot' +! +! * namelist must be terminated with / +! * definitions & defaults: +! DEPTH%SF = 1. ! scale factor +! DEPTH%FILENAME = 'unset' ! filename +! DEPTH%IDF = 50 ! file unit number +! DEPTH%IDLA = 1 ! layout indicator +! DEPTH%IDFM = 1 ! format indicator +! DEPTH%FORMAT = '(....)' ! formatted read format +! -------------------------------------------------------------------- ! +&DEPTH_NML + DEPTH%SF = 0.001000 + DEPTH%FILENAME = '../input/ste_adri_15km_etopo1.depth' +/ + +! -------------------------------------------------------------------- ! +! Define the point status map via MASK_NML namelist +! - only for RECT and CURV grids - +! +! * If no mask defined, INBOUND can be used to set active boundaries +! +! * IDLA : Layout indicator : +! 1 : Read line-by-line bottom to top. (default) +! 2 : Like 1, single read statement. +! 3 : Read line-by-line top to bottom. +! 4 : Like 3, single read statement. +! * IDFM : format indicator : +! 1 : Free format. (default) +! 2 : Fixed format. +! 3 : Unformatted. +! * FORMAT : element format to read : +! '(....)' : auto detected (default) +! '(f10.6)' : float type +! +! * Example : +! IDF IDLA IDFM FORMAT FILENAME +! 60 1 1 '(....)' 'GLOB-30M.mask' +! +! * The legend for the input map is : +! -2 : Excluded boundary point (covered by ice) +! -1 : Excluded sea point (covered by ice) +! 0 : Excluded land point +! 1 : Sea point +! 2 : Active boundary point +! 3 : Excluded grid point +! 7 : Ice point +! +! * namelist must be terminated with / +! * definitions & defaults: +! MASK%FILENAME = 'unset' ! filename +! MASK%IDF = 60 ! file unit number +! MASK%IDLA = 1 ! layout indicator +! MASK%IDFM = 1 ! format indicator +! MASK%FORMAT = '(....)' ! formatted read format +! -------------------------------------------------------------------- ! +&MASK_NML + MASK%FILENAME = '../input/ste_adri_15km_etopo1.mask' + MASK%FORMAT = '(...)' +/ + +! -------------------------------------------------------------------- ! +! Define the obstruction map via OBST_NML namelist +! - only for RECT and CURV grids - +! +! * only used if &MISC FLAGTR = 1 in param.nml +! (transparencies at cell boundaries) +! or if &MISC FLAGTR = 2 in param.nml +! (transparencies at cell centers) +! or if &MISC FLAGTR = 3 in param.nml +! (transparencies at cell boundaries with cont. ice) +! or if &MISC FLAGTR = 4 in param.nml +! (transparencies at cell centers with cont. ice) +! +! * value <= value_read * scale_fac +! +! * IDLA : Layout indicator : +! 1 : Read line-by-line bottom to top. (default) +! 2 : Like 1, single read statement. +! 3 : Read line-by-line top to bottom. +! 4 : Like 3, single read statement. +! * IDFM : format indicator : +! 1 : Free format. (default) +! 2 : Fixed format. +! 3 : Unformatted. +! * FORMAT : element format to read : +! '(....)' : auto detected (default) +! '(f10.6)' : float type +! +! * Example : +! IDF SF IDLA IDFM FORMAT FILENAME +! 70 0.0001 1 1 '(....)' 'GLOB-30M.obst' +! +! * If the file unit number equals 10, then the data is read from this +! file. The data must follow the above record. No comment lines are +! allowed within the data input. +! +! * In the case of unstructured grids, no obstruction file can be added +! +! * namelist must be terminated with / +! * definitions & defaults: +! OBST%SF = 1. ! scale factor +! OBST%FILENAME = 'unset' ! filename +! OBST%IDF = 70 ! file unit number +! OBST%IDLA = 1 ! layout indicator +! OBST%IDFM = 1 ! format indicator +! OBST%FORMAT = '(....)' ! formatted read format +! -------------------------------------------------------------------- ! +&OBST_NML + OBST%SF = 0.010000 + OBST%FILENAME = '../input/ste_adri_15km_etopo1.obstr' + OBST%FORMAT = '(...)' +/ + +! -------------------------------------------------------------------- ! +! WAVEWATCH III - end of namelist ! +! -------------------------------------------------------------------- ! diff --git a/regtests/ww3_tp2.15/input_rho/ww3_ounf.inp b/regtests/ww3_tp2.15/input_rho/ww3_ounf.inp new file mode 100644 index 000000000..9e9b2c300 --- /dev/null +++ b/regtests/ww3_tp2.15/input_rho/ww3_ounf.inp @@ -0,0 +1,21 @@ +$ WAVEWATCH III Grid output post-processing +$ ----------------------------------------- + 20140309 000000 900. 9999 +$ +N +HS WND RHO TAU T02 DP DIR FP MXE MXES MXH MXHC SDMH SDMHC +$ +$ + 3 4 + 0 1 2 + T +$ +$ -------------------------------------------------------------------- $ +$ File prefix +$ number of characters in date [0(nodate),4(yearly),6(monthly),8(daily),10(hourly)] +$ IX and IY ranges [regular:IX NX IY NY, unstructured:IP NP 1 1] +$ + ww3. + 6 + 1 1000000 1 1000000 +$ diff --git a/regtests/ww3_tp2.15/input_rho/ww3_ounf.nml b/regtests/ww3_tp2.15/input_rho/ww3_ounf.nml new file mode 100644 index 000000000..a499bc3fd --- /dev/null +++ b/regtests/ww3_tp2.15/input_rho/ww3_ounf.nml @@ -0,0 +1,58 @@ +! -------------------------------------------------------------------- ! +! WAVEWATCH III ww3_ounf.nml - Grid output post-processing ! +! -------------------------------------------------------------------- ! + +! -------------------------------------------------------------------- ! +! Define the output fields to postprocess via FIELD_NML namelist +! +! * the detailed list of field names FIELD%LIST is given in ww3_shel.nml +! DPT CUR WND AST WLV ICE IBG D50 IC1 IC5 +! HS LM T02 T0M1 T01 FP DIR SPR DP HIG +! EF TH1M STH1M TH2M STH2M WN +! PHS PTP PLP PDIR PSPR PWS PDP PQP PPE PGW PSW PTM10 PT01 PT02 PEP TWS PNR +! UST CHA CGE FAW TAW TWA WCC WCF WCH WCM FWS +! SXY TWO BHD FOC TUS USS P2S USF P2L TWI FIC +! ABR UBR BED FBB TBB +! MSS MSC WL02 AXT AYT AXY +! DTD FC CFX CFD CFK +! U1 U2 +! +! * namelist must be terminated with / +! * definitions & defaults: +! FIELD%TIMESTART = '19000101 000000' ! Stop date for the output field +! FIELD%TIMESTRIDE = '0' ! Time stride for the output field +! FIELD%TIMESTOP = '29001231 000000' ! Stop date for the output field +! FIELD%TIMECOUNT = '1000000000' ! Number of time steps +! FIELD%TIMESPLIT = 6 ! [0(nodate),4(yearly),6(monthly),8(daily),10(hourly)] +! FIELD%LIST = 'unset' ! List of output fields +! FIELD%PARTITION = '0 1 2 3' ! List of wave partitions ['0 1 2 3 4 5'] +! FIELD%SAMEFILE = T ! All the variables in the same file [T|F] +! FIELD%TYPE = 3 ! [2 = SHORT, 3 = it depends , 4 = REAL] +! -------------------------------------------------------------------- ! +&FIELD_NML + FIELD%TIMESTART = '20140309 000000' + FIELD%TIMESTRIDE = '900.' + FIELD%TIMECOUNT = '9999' + FIELD%LIST = 'HS WND RHO TAU T02 DP DIR FP MXE MXES MXH MXHC SDMH SDMHC' + FIELD%PARTITION = '0 1 2' + FIELD%TYPE = 4 +/ + +! -------------------------------------------------------------------- ! +! Define the content of the output file via FILE_NML namelist +! +! * namelist must be terminated with / +! * definitions & defaults: +! FILE%PREFIX = 'ww3.' ! Prefix for output file name +! FILE%NETCDF = 3 ! Netcdf version [3|4] +! FILE%IX0 = 1 ! First X-axis or node index +! FILE%IXN = 1000000000 ! Last X-axis or node index +! FILE%IY0 = 1 ! First Y-axis index +! FILE%IYN = 1000000000 ! Last Y-axis index +! -------------------------------------------------------------------- ! +&FILE_NML +/ + +! -------------------------------------------------------------------- ! +! WAVEWATCH III - end of namelist ! +! -------------------------------------------------------------------- ! diff --git a/regtests/ww3_tp2.15/input_rho/ww3_ounp_par.inp b/regtests/ww3_tp2.15/input_rho/ww3_ounp_par.inp new file mode 100644 index 000000000..d0f34dba9 --- /dev/null +++ b/regtests/ww3_tp2.15/input_rho/ww3_ounp_par.inp @@ -0,0 +1,117 @@ +$ -------------------------------------------------------------------- $ +$ WAVEWATCH III NETCDF Point output post-processing $ +$--------------------------------------------------------------------- $ +$ First output time (yyyymmdd hhmmss), increment of output (s), +$ and number of output times. +$ + 20140309 000000 3600. 37 +$ +$ Points requested --------------------------------------------------- $ +$ +$ Define points index for which output is to be generated. +$ If no one defined, all points are selected +$ One index number per line, negative number identifies end of list. +$ 1 +$ 2 +$ mandatory end of list + -1 +$ +$--------------------------------------------------------------------- $ +$ file prefix +$ number of characters in date [4(yearly),6(monthly),8(daily),10(hourly)] +$ netCDF version [3,4] +$ points in same file [T] or not [F] +$ and max number of points to be processed in one pass +$ output type ITYPE [0,1,2,3] +$ flag for global attributes WW3 [0] or variable version [1-2-3-4] +$ flag for dimensions order time,station [T] or station,time [F] +$ + ww3. + 6 + 3 + T 150 + 2 + 0 + T +$ +$ -------------------------------------------------------------------- $ +$ ITYPE = 0, inventory of file. +$ No additional input, the above time range is ignored. +$ +$ -------------------------------------------------------------------- $ +$ ITYPE = 1, netCDF Spectra. +$ - Sub-type OTYPE : 1 : Print plots. +$ 2 : Table of 1-D spectra +$ 3 : Transfer file. +$ 4 : Spectral partitioning. +$ - Scaling factors for 1-D and 2-D spectra Negative factor +$ disables, output, factor = 0. gives normalized spectrum. +$ +$ 3 1 0 +$ +$ The transfer file contains records with the following contents. +$ +$ - File ID in quotes, number of frequencies, directions and points. +$ grid name in quotes (for unformatted file C*21,3I,C*30). +$ - Bin frequencies in Hz for all bins. +$ - Bin directions in radians for all bins (Oceanographic conv.). +$ -+ +$ - Time in yyyymmdd hhmmss format | loop +$ -+ | +$ - Point name (C*40), lat, lon, d, U10 and | loop | over +$ direction, current speed and direction | over | +$ - E(f,theta) | points | times +$ -+ -+ +$ +$ -------------------------------------------------------------------- $ +$ ITYPE = 2, netCDF Tables of (mean) parameter +$ - Sub-type OTYPE : 1 : Depth, current, wind +$ 2 : Mean wave pars. +$ 3 : Nondimensional pars. (U*) +$ 4 : Nondimensional pars. (U10) +$ 5 : 'Validation table' +$ 6 : WMO standard output + 2 +$ +$ -------------------------------------------------------------------- $ +$ ITYPE = 3, netCDF Source terms +$ - Sub-type OTYPE : 1 : Print plots. +$ 2 : Table of 1-D S(f). +$ 3 : Table of 1-D inverse time scales +$ (1/T = S/F). +$ 4 : Transfer file +$ - Scaling factors for 1-D and 2-D source terms. Negative +$ factor disables print plots, factor = 0. gives normalized +$ print plots. +$ - Flags for spectrum, input, interactions, dissipation, +$ bottom and total source term. +$ - scale ISCALE for OTYPE=2,3 +$ 0 : Dimensional. +$ 1 : Nondimensional in terms of U10 +$ 2 : Nondimensional in terms of U* +$ 3-5: like 0-2 with f normalized with fp. +$ +$ 4 0 0 T T T T T T 0 +$ +$ The transfer file contains records with the following contents. +$ +$ - File ID in quotes, nubmer of frequencies, directions and points, +$ flags for spectrum and source terms (C*21, 3I, 6L) +$ - Bin frequencies in Hz for all bins. +$ - Bin directions in radians for all bins (Oceanographic conv.). +$ -+ +$ - Time in yyyymmdd hhmmss format | loop +$ -+ | +$ - Point name (C*40), depth, wind speed and | loop | over +$ direction, current speed and direction | over | +$ - E(f,theta) if requested | points | times +$ - Sin(f,theta) if requested | | +$ - Snl(f,theta) if requested | | +$ - Sds(f,theta) if requested | | +$ - Sbt(f,theta) if requested | | +$ - Stot(f,theta) if requested | | +$ -+ -+ +$ +$ -------------------------------------------------------------------- $ +$ End of input file $ +$ -------------------------------------------------------------------- $ diff --git a/regtests/ww3_tp2.15/input_rho/ww3_ounp_par.nml b/regtests/ww3_tp2.15/input_rho/ww3_ounp_par.nml new file mode 100644 index 000000000..854f12d31 --- /dev/null +++ b/regtests/ww3_tp2.15/input_rho/ww3_ounp_par.nml @@ -0,0 +1,188 @@ +! -------------------------------------------------------------------- ! +! WAVEWATCH III ww3_ounp.nml - Point output post-processing ! +! -------------------------------------------------------------------- ! + +! -------------------------------------------------------------------- ! +! Define the output fields to postprocess via POINT_NML namelist +! +! +! * namelist must be terminated with / +! * definitions & defaults: +! POINT%TIMESTART = '19000101 000000' ! Stop date for the output field +! POINT%TIMESTRIDE = '0' ! Time stride for the output field +! POINT%TIMECOUNT = '1000000000' ! Number of time steps +! POINT%TIMESPLIT = 6 ! [4(yearly),6(monthly),8(daily),10(hourly)] +! POINT%LIST = 'all' ! List of points index ['all'|'1 2 3'] +! POINT%SAMEFILE = T ! All the points in the same file +! POINT%BUFFER = 150 ! Number of points to process per pass +! POINT%TYPE = 1 ! [0=inventory | 1=spectra | 2=mean param | 3=source terms] +! POINT%DIMORDER = T ! [time,station=T | station,time=F] +! -------------------------------------------------------------------- ! +&POINT_NML + POINT%TIMESTART = '20140309 000000' + POINT%TIMESTRIDE = '3600.' + POINT%TIMECOUNT = '37' + POINT%TYPE = 2 +/ + +! -------------------------------------------------------------------- ! +! Define the content of the output file via FILE_NML namelist +! +! * namelist must be terminated with / +! * definitions & defaults: +! FILE%PREFIX = 'ww3.' ! Prefix for output file name +! FILE%NETCDF = 3 ! Netcdf version [3|4] +! -------------------------------------------------------------------- ! +&FILE_NML +/ + +! -------------------------------------------------------------------- ! +! Define the type 0, inventory of file +! +! * namelist must be terminated with / +! * definitions & defaults: +! No additional input, the above time range is ignored. +! -------------------------------------------------------------------- ! + + +! -------------------------------------------------------------------- ! +! Define the type 1, spectra via SPECTRA_NML namelist +! +! Table of 1-D spectra content : +! - time, station id, station name, longitude, latitude +! - frequency : unit Hz, center band frequency - linear log scale (XFR factor) +! - ffp, f, th1m, sth1m, alpha : 1D spectral parameters +! - dpt, ust, wnd, wnddir : mean parameters +! +! Transfert file content : +! - time, station id, station name, longitude, latitude +! - frequency : unit Hz, center band frequency - linear log scale (XFR factor) +! - frequency1 : unit Hz, lower band frequency +! - frequency2 : unit Hz, upper band frequency +! - direction : unit degree, convention to, origin East, trigonometric order +! - efth(time,station,frequency,direction) : 2D spectral density +! - dpt, wnd, wnddir, cur, curdir : mean parameters +! +! Spectral partitioning content : +! - time, station id, station name, longitude, latitude +! - npart : number of partitions +! - hs, tp, lm, th1m, sth1m, ws, tm10, t01, t02 : partitioned parameters +! - dpt, wnd, wnddir, cur, curdir : mean parameters +! +! +! * namelist must be terminated with / +! * definitions & defaults: +! SPECTRA%OUTPUT = 3 ! 1: Print plots +! ! 2: Table of 1-D spectra +! ! 3: Transfer file +! ! 4: Spectral partitioning +! SPECTRA%SCALE_FAC = 1 ! Scale factor (-1=disabled) +! SPECTRA%OUTPUT_FAC = 0 ! Output factor (0=normalized) +! -------------------------------------------------------------------- ! +&SPECTRA_NML +/ + +! -------------------------------------------------------------------- ! +! Define the type 2, mean parameter via PARAM_NML namelist +! +! Forcing parameters content : +! - dpt, wnd, wnddir, cur, curdir +! +! Mean wave parameters content : +! - hs, lm, tr, th1p, sth1p, fp, th1m, sth1m +! +! Nondimensional parameters (U*) content : +! - ust, efst, fpst, cd, alpha +! +! Nondimensional parameters (U10) content : +! - wnd, efst, fpst, cd, alpha +! +! Validation table content : +! - wnd, wnddir, hs, hsst, cpu, cmu, ast +! +! WMO stantdard output content : +! - wnd, wnddir, hs, tp +! +! * namelist must be terminated with / +! * definitions & defaults: +! PARAM%OUTPUT = 4 ! 1: Forcing parameters +! ! 2: Mean wave parameters +! ! 3: Nondimensional pars. (U*) +! ! 4: Nondimensional pars. (U10) +! ! 5: Validation table +! ! 6: WMO standard output +! -------------------------------------------------------------------- ! +&PARAM_NML + PARAM%OUTPUT = 2 +/ + +! -------------------------------------------------------------------- ! +! Define the type 3, source terms via SOURCE_NML namelist +! +! Table of 1-D S(f) content : +! - time, station id, station name, longitude, latitude +! - frequency : unit Hz, center band frequency +! - ef(frequency) : 1D spectral density +! - Sin(frequency) : input source term +! - Snl(frequency) : non linear interactions source term +! - Sds(frequency) : dissipation source term +! - Sbt(frequency) : bottom source term +! - Sice(frequency) : ice source term +! - Stot(frequency) : total source term +! - dpt, ust, wnd : mean parameters +! +! Table of 1-D inverse time scales (1/T = S/F) content : +! - time, station id, station name, longitude, latitude +! - frequency : unit Hz, center band frequency +! - ef(frequency) : 1D spectral density +! - tini(frequency) : input inverse time scales source term +! - tnli(frequency) : non linear interactions inverse time scales source term +! - tdsi(frequency) : dissipation inverse time scales source term +! - tbti(frequency) : bottom inverse time scales source term +! - ticei(frequency) : ice inverse time scales source term +! - ttoti(frequency) : total inverse time scales source term +! - dpt, ust, wnd : mean parameters +! +! Transfert file content : +! - time, station id, station name, longitude, latitude +! - frequency : unit Hz, center band frequency - linear log scale (XFR factor) +! - frequency1 : unit Hz, lower band frequency +! - frequency2 : unit Hz, upper band frequency +! - direction : unit degree, convention to, origin East, trigonometric order +! - efth(frequency,direction) : 2D spectral density +! - Sin(frequency,direction) : input source term +! - Snl(frequency,direction) : non linear interactions source term +! - Sds(frequency,direction) : dissipation source term +! - Sbt(frequency,direction) : bottom source term +! - Sice(frequency,direction) : ice source term +! - Stot(frequency,direction) : total source term +! - dpt, wnd, wnddir, cur, curdir, ust : mean parameters +! +! +! * namelist must be terminated with / +! * definitions & defaults: +! SOURCE%OUTPUT = 4 ! 1: Print plots +! ! 2: Table of 1-D S(f) +! ! 3: Table of 1-D inverse time scales (1/T = S/F) +! ! 4: Transfer file +! SOURCE%SCALE_FAC = 0 ! Scale factor (-1=disabled) +! SOURCE%OUTPUT_FAC = 0 ! Output factor (0=normalized) +! SOURCE%TABLE_FAC = 0 ! Table factor +! 0 : Dimensional. +! 1 : Nondimensional in terms of U10 +! 2 : Nondimensional in terms of U* +! 3-5: like 0-2 with f normalized with fp. +! SOURCE%SPECTRUM = T ! [T|F] +! SOURCE%INPUT = T ! [T|F] +! SOURCE%INTERACTIONS = T ! [T|F] +! SOURCE%DISSIPATION = T ! [T|F] +! SOURCE%BOTTOM = T ! [T|F] +! SOURCE%ICE = T ! [T|F] +! SOURCE%TOTAL = T ! [T|F] +! -------------------------------------------------------------------- ! +&SOURCE_NML +/ + +! -------------------------------------------------------------------- ! +! WAVEWATCH III - end of namelist ! +! -------------------------------------------------------------------- ! diff --git a/regtests/ww3_tp2.15/input_rho/ww3_ounp_spec.inp b/regtests/ww3_tp2.15/input_rho/ww3_ounp_spec.inp new file mode 100644 index 000000000..5769526f8 --- /dev/null +++ b/regtests/ww3_tp2.15/input_rho/ww3_ounp_spec.inp @@ -0,0 +1,117 @@ +$ -------------------------------------------------------------------- $ +$ WAVEWATCH III NETCDF Point output post-processing $ +$--------------------------------------------------------------------- $ +$ First output time (yyyymmdd hhmmss), increment of output (s), +$ and number of output times. +$ + 20140309 000000 3600. 37 +$ +$ Points requested --------------------------------------------------- $ +$ +$ Define points index for which output is to be generated. +$ If no one defined, all points are selected +$ One index number per line, negative number identifies end of list. +$ 1 +$ 2 +$ mandatory end of list + -1 +$ +$--------------------------------------------------------------------- $ +$ file prefix +$ number of characters in date [4(yearly),6(monthly),8(daily),10(hourly)] +$ netCDF version [3,4] +$ points in same file [T] or not [F] +$ and max number of points to be processed in one pass +$ output type ITYPE [0,1,2,3] +$ flag for global attributes WW3 [0] or variable version [1-2-3-4] +$ flag for dimensions order time,station [T] or station,time [F] +$ + ww3. + 6 + 3 + T 150 + 1 + 0 + T +$ +$ -------------------------------------------------------------------- $ +$ ITYPE = 0, inventory of file. +$ No additional input, the above time range is ignored. +$ +$ -------------------------------------------------------------------- $ +$ ITYPE = 1, netCDF Spectra. +$ - Sub-type OTYPE : 1 : Print plots. +$ 2 : Table of 1-D spectra +$ 3 : Transfer file. +$ 4 : Spectral partitioning. +$ - Scaling factors for 1-D and 2-D spectra Negative factor +$ disables, output, factor = 0. gives normalized spectrum. +$ + 3 1 0 +$ +$ The transfer file contains records with the following contents. +$ +$ - File ID in quotes, number of frequencies, directions and points. +$ grid name in quotes (for unformatted file C*21,3I,C*30). +$ - Bin frequencies in Hz for all bins. +$ - Bin directions in radians for all bins (Oceanographic conv.). +$ -+ +$ - Time in yyyymmdd hhmmss format | loop +$ -+ | +$ - Point name (C*40), lat, lon, d, U10 and | loop | over +$ direction, current speed and direction | over | +$ - E(f,theta) | points | times +$ -+ -+ +$ +$ -------------------------------------------------------------------- $ +$ ITYPE = 2, netCDF Tables of (mean) parameter +$ - Sub-type OTYPE : 1 : Depth, current, wind +$ 2 : Mean wave pars. +$ 3 : Nondimensional pars. (U*) +$ 4 : Nondimensional pars. (U10) +$ 5 : 'Validation table' +$ 6 : WMO standard output +$ 2 +$ +$ -------------------------------------------------------------------- $ +$ ITYPE = 3, netCDF Source terms +$ - Sub-type OTYPE : 1 : Print plots. +$ 2 : Table of 1-D S(f). +$ 3 : Table of 1-D inverse time scales +$ (1/T = S/F). +$ 4 : Transfer file +$ - Scaling factors for 1-D and 2-D source terms. Negative +$ factor disables print plots, factor = 0. gives normalized +$ print plots. +$ - Flags for spectrum, input, interactions, dissipation, +$ bottom and total source term. +$ - scale ISCALE for OTYPE=2,3 +$ 0 : Dimensional. +$ 1 : Nondimensional in terms of U10 +$ 2 : Nondimensional in terms of U* +$ 3-5: like 0-2 with f normalized with fp. +$ +$ 4 0 0 T T T T T T 0 +$ +$ The transfer file contains records with the following contents. +$ +$ - File ID in quotes, nubmer of frequencies, directions and points, +$ flags for spectrum and source terms (C*21, 3I, 6L) +$ - Bin frequencies in Hz for all bins. +$ - Bin directions in radians for all bins (Oceanographic conv.). +$ -+ +$ - Time in yyyymmdd hhmmss format | loop +$ -+ | +$ - Point name (C*40), depth, wind speed and | loop | over +$ direction, current speed and direction | over | +$ - E(f,theta) if requested | points | times +$ - Sin(f,theta) if requested | | +$ - Snl(f,theta) if requested | | +$ - Sds(f,theta) if requested | | +$ - Sbt(f,theta) if requested | | +$ - Stot(f,theta) if requested | | +$ -+ -+ +$ +$ -------------------------------------------------------------------- $ +$ End of input file $ +$ -------------------------------------------------------------------- $ diff --git a/regtests/ww3_tp2.15/input_rho/ww3_ounp_spec.nml b/regtests/ww3_tp2.15/input_rho/ww3_ounp_spec.nml new file mode 100644 index 000000000..c7715d1ed --- /dev/null +++ b/regtests/ww3_tp2.15/input_rho/ww3_ounp_spec.nml @@ -0,0 +1,186 @@ +! -------------------------------------------------------------------- ! +! WAVEWATCH III ww3_ounp.nml - Point output post-processing ! +! -------------------------------------------------------------------- ! + +! -------------------------------------------------------------------- ! +! Define the output fields to postprocess via POINT_NML namelist +! +! +! * namelist must be terminated with / +! * definitions & defaults: +! POINT%TIMESTART = '19000101 000000' ! Stop date for the output field +! POINT%TIMESTRIDE = '0' ! Time stride for the output field +! POINT%TIMECOUNT = '1000000000' ! Number of time steps +! POINT%TIMESPLIT = 6 ! [4(yearly),6(monthly),8(daily),10(hourly)] +! POINT%LIST = 'all' ! List of points index ['all'|'1 2 3'] +! POINT%SAMEFILE = T ! All the points in the same file +! POINT%BUFFER = 150 ! Number of points to process per pass +! POINT%TYPE = 1 ! [0=inventory | 1=spectra | 2=mean param | 3=source terms] +! POINT%DIMORDER = T ! [time,station=T | station,time=F] +! -------------------------------------------------------------------- ! +&POINT_NML + POINT%TIMESTART = '20140309 000000' + POINT%TIMESTRIDE = '3600.' + POINT%TIMECOUNT = '37' +/ + +! -------------------------------------------------------------------- ! +! Define the content of the output file via FILE_NML namelist +! +! * namelist must be terminated with / +! * definitions & defaults: +! FILE%PREFIX = 'ww3.' ! Prefix for output file name +! FILE%NETCDF = 3 ! Netcdf version [3|4] +! -------------------------------------------------------------------- ! +&FILE_NML +/ + +! -------------------------------------------------------------------- ! +! Define the type 0, inventory of file +! +! * namelist must be terminated with / +! * definitions & defaults: +! No additional input, the above time range is ignored. +! -------------------------------------------------------------------- ! + + +! -------------------------------------------------------------------- ! +! Define the type 1, spectra via SPECTRA_NML namelist +! +! Table of 1-D spectra content : +! - time, station id, station name, longitude, latitude +! - frequency : unit Hz, center band frequency - linear log scale (XFR factor) +! - ffp, f, th1m, sth1m, alpha : 1D spectral parameters +! - dpt, ust, wnd, wnddir : mean parameters +! +! Transfert file content : +! - time, station id, station name, longitude, latitude +! - frequency : unit Hz, center band frequency - linear log scale (XFR factor) +! - frequency1 : unit Hz, lower band frequency +! - frequency2 : unit Hz, upper band frequency +! - direction : unit degree, convention to, origin East, trigonometric order +! - efth(time,station,frequency,direction) : 2D spectral density +! - dpt, wnd, wnddir, cur, curdir : mean parameters +! +! Spectral partitioning content : +! - time, station id, station name, longitude, latitude +! - npart : number of partitions +! - hs, tp, lm, th1m, sth1m, ws, tm10, t01, t02 : partitioned parameters +! - dpt, wnd, wnddir, cur, curdir : mean parameters +! +! +! * namelist must be terminated with / +! * definitions & defaults: +! SPECTRA%OUTPUT = 3 ! 1: Print plots +! ! 2: Table of 1-D spectra +! ! 3: Transfer file +! ! 4: Spectral partitioning +! SPECTRA%SCALE_FAC = 1 ! Scale factor (-1=disabled) +! SPECTRA%OUTPUT_FAC = 0 ! Output factor (0=normalized) +! -------------------------------------------------------------------- ! +&SPECTRA_NML +/ + +! -------------------------------------------------------------------- ! +! Define the type 2, mean parameter via PARAM_NML namelist +! +! Forcing parameters content : +! - dpt, wnd, wnddir, cur, curdir +! +! Mean wave parameters content : +! - hs, lm, tr, th1p, sth1p, fp, th1m, sth1m +! +! Nondimensional parameters (U*) content : +! - ust, efst, fpst, cd, alpha +! +! Nondimensional parameters (U10) content : +! - wnd, efst, fpst, cd, alpha +! +! Validation table content : +! - wnd, wnddir, hs, hsst, cpu, cmu, ast +! +! WMO stantdard output content : +! - wnd, wnddir, hs, tp +! +! * namelist must be terminated with / +! * definitions & defaults: +! PARAM%OUTPUT = 4 ! 1: Forcing parameters +! ! 2: Mean wave parameters +! ! 3: Nondimensional pars. (U*) +! ! 4: Nondimensional pars. (U10) +! ! 5: Validation table +! ! 6: WMO standard output +! -------------------------------------------------------------------- ! +&PARAM_NML +/ + +! -------------------------------------------------------------------- ! +! Define the type 3, source terms via SOURCE_NML namelist +! +! Table of 1-D S(f) content : +! - time, station id, station name, longitude, latitude +! - frequency : unit Hz, center band frequency +! - ef(frequency) : 1D spectral density +! - Sin(frequency) : input source term +! - Snl(frequency) : non linear interactions source term +! - Sds(frequency) : dissipation source term +! - Sbt(frequency) : bottom source term +! - Sice(frequency) : ice source term +! - Stot(frequency) : total source term +! - dpt, ust, wnd : mean parameters +! +! Table of 1-D inverse time scales (1/T = S/F) content : +! - time, station id, station name, longitude, latitude +! - frequency : unit Hz, center band frequency +! - ef(frequency) : 1D spectral density +! - tini(frequency) : input inverse time scales source term +! - tnli(frequency) : non linear interactions inverse time scales source term +! - tdsi(frequency) : dissipation inverse time scales source term +! - tbti(frequency) : bottom inverse time scales source term +! - ticei(frequency) : ice inverse time scales source term +! - ttoti(frequency) : total inverse time scales source term +! - dpt, ust, wnd : mean parameters +! +! Transfert file content : +! - time, station id, station name, longitude, latitude +! - frequency : unit Hz, center band frequency - linear log scale (XFR factor) +! - frequency1 : unit Hz, lower band frequency +! - frequency2 : unit Hz, upper band frequency +! - direction : unit degree, convention to, origin East, trigonometric order +! - efth(frequency,direction) : 2D spectral density +! - Sin(frequency,direction) : input source term +! - Snl(frequency,direction) : non linear interactions source term +! - Sds(frequency,direction) : dissipation source term +! - Sbt(frequency,direction) : bottom source term +! - Sice(frequency,direction) : ice source term +! - Stot(frequency,direction) : total source term +! - dpt, wnd, wnddir, cur, curdir, ust : mean parameters +! +! +! * namelist must be terminated with / +! * definitions & defaults: +! SOURCE%OUTPUT = 4 ! 1: Print plots +! ! 2: Table of 1-D S(f) +! ! 3: Table of 1-D inverse time scales (1/T = S/F) +! ! 4: Transfer file +! SOURCE%SCALE_FAC = 0 ! Scale factor (-1=disabled) +! SOURCE%OUTPUT_FAC = 0 ! Output factor (0=normalized) +! SOURCE%TABLE_FAC = 0 ! Table factor +! 0 : Dimensional. +! 1 : Nondimensional in terms of U10 +! 2 : Nondimensional in terms of U* +! 3-5: like 0-2 with f normalized with fp. +! SOURCE%SPECTRUM = T ! [T|F] +! SOURCE%INPUT = T ! [T|F] +! SOURCE%INTERACTIONS = T ! [T|F] +! SOURCE%DISSIPATION = T ! [T|F] +! SOURCE%BOTTOM = T ! [T|F] +! SOURCE%ICE = T ! [T|F] +! SOURCE%TOTAL = T ! [T|F] +! -------------------------------------------------------------------- ! +&SOURCE_NML +/ + +! -------------------------------------------------------------------- ! +! WAVEWATCH III - end of namelist ! +! -------------------------------------------------------------------- ! diff --git a/regtests/ww3_tp2.15/input_rho/ww3_outf.inp b/regtests/ww3_tp2.15/input_rho/ww3_outf.inp new file mode 100644 index 000000000..666f36966 --- /dev/null +++ b/regtests/ww3_tp2.15/input_rho/ww3_outf.inp @@ -0,0 +1,10 @@ +$ WAVEWATCH III Grid output post-processing +$ ----------------------------------------- + 20140309 000000 3600. 37 +$ +N +HS DIR DP T02 FP STMAXE STMAXD HMAXE HCMAXE HMAXD HCMAXD +$ + 3 0 + 1 43 1 42 1 1 +$ diff --git a/regtests/ww3_tp2.15/input_rho/ww3_prnc_RHO.inp b/regtests/ww3_tp2.15/input_rho/ww3_prnc_RHO.inp new file mode 100644 index 000000000..edabea5be --- /dev/null +++ b/regtests/ww3_tp2.15/input_rho/ww3_prnc_RHO.inp @@ -0,0 +1,50 @@ +$ -------------------------------------------------------------------- $ +$ WAVEWATCH III Field preprocessor input file $ +$ -------------------------------------------------------------------- $ +$ Mayor types of field and time flag +$ Field types : ICE Ice concentrations. +$ LEV Water levels. +$ WND Winds. +$ WNS Winds (including air-sea temp. dif.) +$ CUR Currents. +$ DAT Data for assimilation. +$ +$ Format types : AI Transfer field 'as is'. (ITYPE 1) +$ LL Field defined on regular longitude-latitude +$ or Cartesian grid. (ITYPE 2) +$ Format types : AT Transfer field 'as is', performs tidal +$ analysis on the time series (ITYPE 6) +$ When using AT, another line should be added +$ with the choice ot tidal constituents: +$ ALL or FAST or VFAST or a list: e.g. 'M2 S2' +$ +$ - Format type not used for field type 'DAT'. +$ +$ Time flag : If true, time is included in file. +$ Header flag : If true, header is added to file. +$ (necessary for reading, FALSE is used only for +$ incremental generation of a data file.) +$ + 'RHO' 'LL' T T +$ +$ Name of dimensions ------------------------------------------------- $ +$ + longitude latitude time +$ +$ Variables to use --------------------------------------------------- $ +$ + rho +$ +$ Additional time input ---------------------------------------------- $ +$ If time flag is .FALSE., give time of field in yyyymmdd hhmmss format. +$ +$ 19680606 053000 +$ +$ Define data files -------------------------------------------------- $ +$ The input line identifies the filename using for the forcing field. +$ + '../input_rho/density.nc' +$ +$ -------------------------------------------------------------------- $ +$ End of input file $ +$ -------------------------------------------------------------------- $ diff --git a/regtests/ww3_tp2.15/input_rho/ww3_prnc_RHO.nml b/regtests/ww3_tp2.15/input_rho/ww3_prnc_RHO.nml new file mode 100644 index 000000000..e5b8e0811 --- /dev/null +++ b/regtests/ww3_tp2.15/input_rho/ww3_prnc_RHO.nml @@ -0,0 +1,76 @@ +! -------------------------------------------------------------------- ! +! WAVEWATCH III ww3_prnc.nml - Field preprocessor ! +! -------------------------------------------------------------------- ! + + +! -------------------------------------------------------------------- ! +! Define the forcing fields to preprocess via FORCING_NML namelist +! +! * only one FORCING%FIELD can be set at true +! * only one FORCING%grid can be set at true +! * tidal constituents FORCING%tidal is only available on grid%asis with FIELD%level or FIELD%current +! +! * namelist must be terminated with / +! * definitions & defaults: +! FORCING%TIMESTART = '19000101 000000' ! Start date for the forcing field +! FORCING%TIMESTOP = '29001231 000000' ! Stop date for the forcing field +! +! FORCING%FIELD%ICE_PARAM1 = F ! Ice thickness (1-component) +! FORCING%FIELD%ICE_PARAM2 = F ! Ice viscosity (1-component) +! FORCING%FIELD%ICE_PARAM3 = F ! Ice density (1-component) +! FORCING%FIELD%ICE_PARAM4 = F ! Ice modulus (1-component) +! FORCING%FIELD%ICE_PARAM5 = F ! Ice floe mean diameter (1-component) +! FORCING%FIELD%MUD_DENSITY = F ! Mud density (1-component) +! FORCING%FIELD%MUD_THICKNESS = F ! Mud thickness (1-component) +! FORCING%FIELD%MUD_VISCOSITY = F ! Mud viscosity (1-component) +! FORCING%FIELD%WATER_LEVELS = F ! Level (1-component) +! FORCING%FIELD%CURRENTS = F ! Current (2-components) +! FORCING%FIELD%WINDS = F ! Wind (2-components) +! FORCING%FIELD%WIND_AST = F ! Wind and air-sea temp. dif. (3-components) +! FORCING%FIELD%ICE_CONC = F ! Ice concentration (1-component) +! FORCING%FIELD%ICE_BERG = F ! Icebergs and sea ice concentration (2-components) +! FORCING%FIELD%DATA_ASSIM = F ! Data for assimilation (1-component) +! +! FORCING%GRID%ASIS = F ! Transfert field 'as is' on the model grid +! FORCING%GRID%LATLON = F ! Define field on regular lat/lon or cartesian grid +! +! FORCING%TIDAL = 'unset' ! Set the tidal constituents [FAST | VFAST | 'M2 S2 N2'] +! -------------------------------------------------------------------- ! +&FORCING_NML + FORCING%FIELD%AIR_DENSITY = T + FORCING%GRID%LATLON = T +/ + +! -------------------------------------------------------------------- ! +! Define the content of the input file via FILE_NML namelist +! +! * input file must respect netCDF format and CF conventions +! * input file must contain : +! -dimension : time, name expected to be called time +! -dimension : longitude/latitude, names can defined in the namelist +! -variable : time defined along time dimension +! -attribute : time with attributes units written as ISO8601 convention +! -attribute : time with attributes calendar set to standard as CF convention +! -variable : longitude defined along longitude dimension +! -variable : latitude defined along latitude dimension +! -variable : field defined along time,latitude,longitude dimensions +! * FILE%VAR(I) must be set for each field component +! +! * namelist must be terminated with / +! * definitions & defaults: +! FILE%FILENAME = 'unset' ! relative path input file name +! FILE%LONGITUDE = 'unset' ! longitude/x dimension name +! FILE%LATITUDE = 'unset' ! latitude/y dimension name +! FILE%VAR(I) = 'unset' ! field component +! FILE%TIMESHIFT = '00000000 000000' ! shift the time value to 'YYYYMMDD HHMMSS' +! -------------------------------------------------------------------- ! +&FILE_NML + FILE%FILENAME = '../input_rho/density.nc' + FILE%LONGITUDE = 'longitude' + FILE%LATITUDE = 'latitude' + FILE%VAR(1) = 'rho' +/ + +! -------------------------------------------------------------------- ! +! WAVEWATCH III - end of namelist ! +! -------------------------------------------------------------------- ! diff --git a/regtests/ww3_tp2.15/input_rho/ww3_prnc_TAU.inp b/regtests/ww3_tp2.15/input_rho/ww3_prnc_TAU.inp new file mode 100644 index 000000000..938f4aeb6 --- /dev/null +++ b/regtests/ww3_tp2.15/input_rho/ww3_prnc_TAU.inp @@ -0,0 +1,50 @@ +$ -------------------------------------------------------------------- $ +$ WAVEWATCH III Field preprocessor input file $ +$ -------------------------------------------------------------------- $ +$ Mayor types of field and time flag +$ Field types : ICE Ice concentrations. +$ LEV Water levels. +$ WND Winds. +$ WNS Winds (including air-sea temp. dif.) +$ CUR Currents. +$ DAT Data for assimilation. +$ +$ Format types : AI Transfer field 'as is'. (ITYPE 1) +$ LL Field defined on regular longitude-latitude +$ or Cartesian grid. (ITYPE 2) +$ Format types : AT Transfer field 'as is', performs tidal +$ analysis on the time series (ITYPE 6) +$ When using AT, another line should be added +$ with the choice ot tidal constituents: +$ ALL or FAST or VFAST or a list: e.g. 'M2 S2' +$ +$ - Format type not used for field type 'DAT'. +$ +$ Time flag : If true, time is included in file. +$ Header flag : If true, header is added to file. +$ (necessary for reading, FALSE is used only for +$ incremental generation of a data file.) +$ + 'TAU' 'LL' T T +$ +$ Name of dimensions ------------------------------------------------- $ +$ + longitude latitude time +$ +$ Variables to use --------------------------------------------------- $ +$ + tauu tauv +$ +$ Additional time input ---------------------------------------------- $ +$ If time flag is .FALSE., give time of field in yyyymmdd hhmmss format. +$ +$ 19680606 053000 +$ +$ Define data files -------------------------------------------------- $ +$ The input line identifies the filename using for the forcing field. +$ + '../input_rho/momentum.nc' +$ +$ -------------------------------------------------------------------- $ +$ End of input file $ +$ -------------------------------------------------------------------- $ diff --git a/regtests/ww3_tp2.15/input_rho/ww3_prnc_TAU.nml b/regtests/ww3_tp2.15/input_rho/ww3_prnc_TAU.nml new file mode 100644 index 000000000..c515334f3 --- /dev/null +++ b/regtests/ww3_tp2.15/input_rho/ww3_prnc_TAU.nml @@ -0,0 +1,77 @@ +! -------------------------------------------------------------------- ! +! WAVEWATCH III ww3_prnc.nml - Field preprocessor ! +! -------------------------------------------------------------------- ! + + +! -------------------------------------------------------------------- ! +! Define the forcing fields to preprocess via FORCING_NML namelist +! +! * only one FORCING%FIELD can be set at true +! * only one FORCING%grid can be set at true +! * tidal constituents FORCING%tidal is only available on grid%asis with FIELD%level or FIELD%current +! +! * namelist must be terminated with / +! * definitions & defaults: +! FORCING%TIMESTART = '19000101 000000' ! Start date for the forcing field +! FORCING%TIMESTOP = '29001231 000000' ! Stop date for the forcing field +! +! FORCING%FIELD%ICE_PARAM1 = F ! Ice thickness (1-component) +! FORCING%FIELD%ICE_PARAM2 = F ! Ice viscosity (1-component) +! FORCING%FIELD%ICE_PARAM3 = F ! Ice density (1-component) +! FORCING%FIELD%ICE_PARAM4 = F ! Ice modulus (1-component) +! FORCING%FIELD%ICE_PARAM5 = F ! Ice floe mean diameter (1-component) +! FORCING%FIELD%MUD_DENSITY = F ! Mud density (1-component) +! FORCING%FIELD%MUD_THICKNESS = F ! Mud thickness (1-component) +! FORCING%FIELD%MUD_VISCOSITY = F ! Mud viscosity (1-component) +! FORCING%FIELD%WATER_LEVELS = F ! Level (1-component) +! FORCING%FIELD%CURRENTS = F ! Current (2-components) +! FORCING%FIELD%WINDS = F ! Wind (2-components) +! FORCING%FIELD%WIND_AST = F ! Wind and air-sea temp. dif. (3-components) +! FORCING%FIELD%ICE_CONC = F ! Ice concentration (1-component) +! FORCING%FIELD%ICE_BERG = F ! Icebergs and sea ice concentration (2-components) +! FORCING%FIELD%DATA_ASSIM = F ! Data for assimilation (1-component) +! +! FORCING%GRID%ASIS = F ! Transfert field 'as is' on the model grid +! FORCING%GRID%LATLON = F ! Define field on regular lat/lon or cartesian grid +! +! FORCING%TIDAL = 'unset' ! Set the tidal constituents [FAST | VFAST | 'M2 S2 N2'] +! -------------------------------------------------------------------- ! +&FORCING_NML + FORCING%FIELD%ATM_MOMENTUM = T + FORCING%GRID%LATLON = T +/ + +! -------------------------------------------------------------------- ! +! Define the content of the input file via FILE_NML namelist +! +! * input file must respect netCDF format and CF conventions +! * input file must contain : +! -dimension : time, name expected to be called time +! -dimension : longitude/latitude, names can defined in the namelist +! -variable : time defined along time dimension +! -attribute : time with attributes units written as ISO8601 convention +! -attribute : time with attributes calendar set to standard as CF convention +! -variable : longitude defined along longitude dimension +! -variable : latitude defined along latitude dimension +! -variable : field defined along time,latitude,longitude dimensions +! * FILE%VAR(I) must be set for each field component +! +! * namelist must be terminated with / +! * definitions & defaults: +! FILE%FILENAME = 'unset' ! relative path input file name +! FILE%LONGITUDE = 'unset' ! longitude/x dimension name +! FILE%LATITUDE = 'unset' ! latitude/y dimension name +! FILE%VAR(I) = 'unset' ! field component +! FILE%TIMESHIFT = '00000000 000000' ! shift the time value to 'YYYYMMDD HHMMSS' +! -------------------------------------------------------------------- ! +&FILE_NML + FILE%FILENAME = '../input_rho/momentum.nc' + FILE%LONGITUDE = 'longitude' + FILE%LATITUDE = 'latitude' + FILE%VAR(1) = 'U' + FILE%VAR(2) = 'V' +/ + +! -------------------------------------------------------------------- ! +! WAVEWATCH III - end of namelist ! +! -------------------------------------------------------------------- ! diff --git a/regtests/ww3_tp2.15/input_rho/ww3_prnc_WND.inp b/regtests/ww3_tp2.15/input_rho/ww3_prnc_WND.inp new file mode 100644 index 000000000..d78d35a83 --- /dev/null +++ b/regtests/ww3_tp2.15/input_rho/ww3_prnc_WND.inp @@ -0,0 +1,50 @@ +$ -------------------------------------------------------------------- $ +$ WAVEWATCH III Field preprocessor input file $ +$ -------------------------------------------------------------------- $ +$ Mayor types of field and time flag +$ Field types : ICE Ice concentrations. +$ LEV Water levels. +$ WND Winds. +$ WNS Winds (including air-sea temp. dif.) +$ CUR Currents. +$ DAT Data for assimilation. +$ +$ Format types : AI Transfer field 'as is'. (ITYPE 1) +$ LL Field defined on regular longitude-latitude +$ or Cartesian grid. (ITYPE 2) +$ Format types : AT Transfer field 'as is', performs tidal +$ analysis on the time series (ITYPE 6) +$ When using AT, another line should be added +$ with the choice ot tidal constituents: +$ ALL or FAST or VFAST or a list: e.g. 'M2 S2' +$ +$ - Format type not used for field type 'DAT'. +$ +$ Time flag : If true, time is included in file. +$ Header flag : If true, header is added to file. +$ (necessary for reading, FALSE is used only for +$ incremental generation of a data file.) +$ + 'WND' 'LL' T T +$ +$ Name of dimensions ------------------------------------------------- $ +$ + longitude latitude time +$ +$ Variables to use --------------------------------------------------- $ +$ + U V +$ +$ Additional time input ---------------------------------------------- $ +$ If time flag is .FALSE., give time of field in yyyymmdd hhmmss format. +$ +$ 19680606 053000 +$ +$ Define data files -------------------------------------------------- $ +$ The input line identifies the filename using for the forcing field. +$ + '../input_rho/wind.nc' +$ +$ -------------------------------------------------------------------- $ +$ End of input file $ +$ -------------------------------------------------------------------- $ diff --git a/regtests/ww3_tp2.15/input_rho/ww3_prnc_WND.nml b/regtests/ww3_tp2.15/input_rho/ww3_prnc_WND.nml new file mode 100644 index 000000000..d22fad9be --- /dev/null +++ b/regtests/ww3_tp2.15/input_rho/ww3_prnc_WND.nml @@ -0,0 +1,77 @@ +! -------------------------------------------------------------------- ! +! WAVEWATCH III ww3_prnc.nml - Field preprocessor ! +! -------------------------------------------------------------------- ! + + +! -------------------------------------------------------------------- ! +! Define the forcing fields to preprocess via FORCING_NML namelist +! +! * only one FORCING%FIELD can be set at true +! * only one FORCING%grid can be set at true +! * tidal constituents FORCING%tidal is only available on grid%asis with FIELD%level or FIELD%current +! +! * namelist must be terminated with / +! * definitions & defaults: +! FORCING%TIMESTART = '19000101 000000' ! Start date for the forcing field +! FORCING%TIMESTOP = '29001231 000000' ! Stop date for the forcing field +! +! FORCING%FIELD%ICE_PARAM1 = F ! Ice thickness (1-component) +! FORCING%FIELD%ICE_PARAM2 = F ! Ice viscosity (1-component) +! FORCING%FIELD%ICE_PARAM3 = F ! Ice density (1-component) +! FORCING%FIELD%ICE_PARAM4 = F ! Ice modulus (1-component) +! FORCING%FIELD%ICE_PARAM5 = F ! Ice floe mean diameter (1-component) +! FORCING%FIELD%MUD_DENSITY = F ! Mud density (1-component) +! FORCING%FIELD%MUD_THICKNESS = F ! Mud thickness (1-component) +! FORCING%FIELD%MUD_VISCOSITY = F ! Mud viscosity (1-component) +! FORCING%FIELD%WATER_LEVELS = F ! Level (1-component) +! FORCING%FIELD%CURRENTS = F ! Current (2-components) +! FORCING%FIELD%WINDS = F ! Wind (2-components) +! FORCING%FIELD%WIND_AST = F ! Wind and air-sea temp. dif. (3-components) +! FORCING%FIELD%ICE_CONC = F ! Ice concentration (1-component) +! FORCING%FIELD%ICE_BERG = F ! Icebergs and sea ice concentration (2-components) +! FORCING%FIELD%DATA_ASSIM = F ! Data for assimilation (1-component) +! +! FORCING%GRID%ASIS = F ! Transfert field 'as is' on the model grid +! FORCING%GRID%LATLON = F ! Define field on regular lat/lon or cartesian grid +! +! FORCING%TIDAL = 'unset' ! Set the tidal constituents [FAST | VFAST | 'M2 S2 N2'] +! -------------------------------------------------------------------- ! +&FORCING_NML + FORCING%FIELD%WINDS = T + FORCING%GRID%LATLON = T +/ + +! -------------------------------------------------------------------- ! +! Define the content of the input file via FILE_NML namelist +! +! * input file must respect netCDF format and CF conventions +! * input file must contain : +! -dimension : time, name expected to be called time +! -dimension : longitude/latitude, names can defined in the namelist +! -variable : time defined along time dimension +! -attribute : time with attributes units written as ISO8601 convention +! -attribute : time with attributes calendar set to standard as CF convention +! -variable : longitude defined along longitude dimension +! -variable : latitude defined along latitude dimension +! -variable : field defined along time,latitude,longitude dimensions +! * FILE%VAR(I) must be set for each field component +! +! * namelist must be terminated with / +! * definitions & defaults: +! FILE%FILENAME = 'unset' ! relative path input file name +! FILE%LONGITUDE = 'unset' ! longitude/x dimension name +! FILE%LATITUDE = 'unset' ! latitude/y dimension name +! FILE%VAR(I) = 'unset' ! field component +! FILE%TIMESHIFT = '00000000 000000' ! shift the time value to 'YYYYMMDD HHMMSS' +! -------------------------------------------------------------------- ! +&FILE_NML + FILE%FILENAME = '../input_rho/wind.nc' + FILE%LONGITUDE = 'longitude' + FILE%LATITUDE = 'latitude' + FILE%VAR(1) = 'U' + FILE%VAR(2) = 'V' +/ + +! -------------------------------------------------------------------- ! +! WAVEWATCH III - end of namelist ! +! -------------------------------------------------------------------- ! diff --git a/regtests/ww3_tp2.15/input_rho/ww3_shel.inp b/regtests/ww3_tp2.15/input_rho/ww3_shel.inp new file mode 100644 index 000000000..c436305e8 --- /dev/null +++ b/regtests/ww3_tp2.15/input_rho/ww3_shel.inp @@ -0,0 +1,48 @@ +$ -------------------------------------------------------------------- $ +$ WAVEWATCH III shell input file $ +$ -------------------------------------------------------------------- $ +$ + F F Water levels + F F Currents + T F Winds + F F Ice concentrations + T F Atmospheric momentum + T F Air density + F Assimilation data : Mean parameters + F Assimilation data : 1-D spectra + F Assimilation data : 2-D spectra. +$ + 20140310 000000 + 20140310 060000 +$ + 1 +$ + 20140310 000000 900 20140310 060000 +$ --------------------------------------------------------------- +$ D C W D W I H L T T T C F D S D P P P P P P W P D F C C U C +$ P U N T L C S 0 M G P I P P H T L T S W S N T C F F S H +$ T R D V E 2 1 E R R S P P H I S F R D X D T A +$ --------------------------------------------------------------- +$ T F T F T F T T T T T T T T T T T T T T T T T T T F F F F F +$ F F F F F F F F F F F F F F F F F F F F F F F +$ --------------------------------------------------------------- +$ F T T W W W W A U B F T S T J F T U M M P U U +$ A A W C C C C B B E B B X W O U S S S 2 S S +$ W W A C F H M R R D B B Y O C S S S C S 1 2 +$ --------------------------------------------------------------- + N + HS WND RHO TAU T02 DP DIR FP MXE MXES MXH MXHC SDMH SDMHC + 20140310 000000 3600 20140310 060000 + 12.5088 45.3138 'AA ' + 0.0 0.0 'STOPSTRING' + 20140310 000000 0 20140310 120000 + 20140310 000000 0 20140310 120000 + 20140310 000000 0 20140310 120000 + 20140310 000000 0 20140310 120000 + +$ + 'STP' +$ +$ -------------------------------------------------------------------- $ +$ End of input file $ +$ -------------------------------------------------------------------- $ diff --git a/regtests/ww3_tp2.15/input_rho/ww3_shel.nml b/regtests/ww3_tp2.15/input_rho/ww3_shel.nml new file mode 100644 index 000000000..9d4649afa --- /dev/null +++ b/regtests/ww3_tp2.15/input_rho/ww3_shel.nml @@ -0,0 +1,339 @@ +! -------------------------------------------------------------------- ! +! WAVEWATCH III ww3_shel.nml - single-grid model ! +! -------------------------------------------------------------------- ! + + +! -------------------------------------------------------------------- ! +! Define top-level model parameters via DOMAIN_NML namelist +! +! * IOSTYP defines the output server mode for parallel implementation. +! 0 : No data server processes, direct access output from +! each process (requires true parallel file system). +! 1 : No data server process. All output for each type +! performed by process that performs computations too. +! 2 : Last process is reserved for all output, and does no +! computing. +! 3 : Multiple dedicated output processes. +! +! * namelist must be terminated with / +! * definitions & defaults: +! DOMAIN%IOSTYP = 1 ! Output server type +! DOMAIN%START = '19680606 000000' ! Start date for the entire model +! DOMAIN%STOP = '19680607 000000' ! Stop date for the entire model +! -------------------------------------------------------------------- ! +&DOMAIN_NML + DOMAIN%START = '20140310 000000' + DOMAIN%STOP = '20140310 060000' +/ + +! -------------------------------------------------------------------- ! +! Define each forcing via the INPUT_NML namelist +! +! * The FORCING flag can be : 'F' for "no forcing" +! 'T' for "external forcing file" +! 'H' for "homogeneous forcing input" +! 'C' for "coupled forcing field" +! +! * homogeneous forcing is not available for ICE_CONC +! +! * The ASSIM flag can : 'F' for "no forcing" +! 'T' for "external forcing file" +! +! * namelist must be terminated with / +! * definitions & defaults: +! INPUT%FORCING%WATER_LEVELS = 'F' +! INPUT%FORCING%CURRENTS = 'F' +! INPUT%FORCING%WINDS = 'F' +! INPUT%FORCING%ICE_CONC = 'F' +! INPUT%FORCING%ICE_PARAM1 = 'F' +! INPUT%FORCING%ICE_PARAM2 = 'F' +! INPUT%FORCING%ICE_PARAM3 = 'F' +! INPUT%FORCING%ICE_PARAM4 = 'F' +! INPUT%FORCING%ICE_PARAM5 = 'F' +! INPUT%FORCING%MUD_DENSITY = 'F' +! INPUT%FORCING%MUD_THICKNESS = 'F' +! INPUT%FORCING%MUD_VISCOSITY = 'F' +! INPUT%ASSIM%MEAN = 'F' +! INPUT%ASSIM%SPEC1D = 'F' +! INPUT%ASSIM%SPEC2D = 'F' +! -------------------------------------------------------------------- ! +&INPUT_NML + INPUT%FORCING%WINDS = 'T' + INPUT%FORCING%ATM_MOMENTUM = 'T' + INPUT%FORCING%AIR_DENSITY = 'T' +/ + +! -------------------------------------------------------------------- ! +! Define the output types point parameters via OUTPUT_TYPE_NML namelist +! +! * the point file is a space separated values per line : +! longitude latitude 'name' (C*40) +! +! * the full list of field names is : +! All parameters listed below are available in output file of the types +! ASCII and NetCDF. If selected output file types are grads or grib, +! some parameters may not be available. The first two columns in the +! table below identify such cases by flags, cols 1 (GRB) and 2 (GXO) +! refer to grib (ww3_grib) and grads (gx_outf), respectively. +! +! Columns 3 and 4 provide group and parameter numbers per group. +! Columns 5, 6 and 7 provide: +! 5 - code name (internal) +! 6 - output tags (names used is ASCII file extensions, NetCDF +! variable names and namelist-based selection +! 7 - Long parameter name/definition +! +! G G +! R X Grp Param Code Output Parameter/Group +! B O Numb Numbr Name Tag Definition +! -------------------------------------------------- +! 1 Forcing Fields +! ------------------------------------------------- +! T T 1 1 DW DPT Water depth. +! T T 1 2 C[X,Y] CUR Current velocity. +! T T 1 3 UA WND Wind speed. +! T T 1 4 AS AST Air-sea temperature difference. +! T T 1 5 WLV WLV Water levels. +! T T 1 6 ICE ICE Ice concentration. +! T T 1 7 IBG IBG Iceberg-induced damping. +! T T 1 8 D50 D50 Median sediment grain size. +! T T 1 9 IC1 IC1 Ice thickness. +! T T 1 10 IC5 IC5 Ice flow diameter. +! ------------------------------------------------- +! 2 Standard mean wave Parameters +! ------------------------------------------------- +! T T 2 1 HS HS Wave height. +! T T 2 2 WLM LM Mean wave length. +! T T 2 3 T02 T02 Mean wave period (Tm0,2). +! T T 2 4 TM10 TM10 Mean wave period (Tm-1,0). +! T T 2 5 T01 T01 Mean wave period (Tm0,1). +! T T 2 6 FP0 FP Peak frequency. +! T T 2 7 THM DIR Mean wave direction. +! T T 2 8 THS SPR Mean directional spread. +! T T 2 9 THP0 DP Peak direction. +! T T 2 10 HIG HIG Infragravity height +! T T 2 11 STMAXE MXE Max surface elev (STE) +! T T 2 12 STMAXD MXES St Dev of max surface elev (STE) +! T T 2 13 HMAXE MXH Max wave height (STE) +! T T 2 14 HCMAXE MXHC Max wave height from crest (STE) +! T T 2 15 HMAXD SDMH St Dev of MXC (STE) +! T T 2 16 HCMAXD SDMHC St Dev of MXHC (STE) +! F T 2 17 WBT WBT Domiant wave breaking probability bT +! ------------------------------------------------- +! 3 Spectral Parameters (first 5) +! ------------------------------------------------- +! F F 3 1 EF EF Wave frequency spectrum +! F F 3 2 TH1M TH1M Mean wave direction from a1,b2 +! F F 3 3 STH1M STH1M Directional spreading from a1,b2 +! F F 3 4 TH2M TH2M Mean wave direction from a2,b2 +! F F 3 5 STH2M STH2M Directional spreading from a2,b2 +! F F 3 6 WN WN Wavenumber array +! ------------------------------------------------- +! 4 Spectral Partition Parameters +! ------------------------------------------------- +! T T 4 1 PHS PHS Partitioned wave heights. +! T T 4 2 PTP PTP Partitioned peak period. +! T T 4 3 PLP PLP Partitioned peak wave length. +! T T 4 4 PDIR PDIR Partitioned mean direction. +! T T 4 5 PSI PSPR Partitioned mean directional spread. +! T T 4 6 PWS PWS Partitioned wind sea fraction. +! T T 4 7 PTHP0 PDP Peak wave direction of partition. +! T T 4 8 PQP PQP Goda peakdedness parameter of partition. +! T T 4 9 PPE PPE JONSWAP peak enhancement factor of partition. +! T T 4 10 PGW PGW Gaussian frequency width of partition. +! T T 4 11 PSW PSW Spectral width of partition. +! T T 4 12 PTM1 PTM10 Mean wave period (Tm-1,0) of partition. +! T T 4 13 PT1 PT01 Mean wave period (Tm0,1) of partition. +! T T 4 14 PT2 PT02 Mean wave period (Tm0,2) of partition. +! T T 4 15 PEP PEP Peak spectral density of partition. +! T T 4 16 PWST TWS Total wind sea fraction. +! T T 4 17 PNR PNR Number of partitions. +! ------------------------------------------------- +! 5 Atmosphere-waves layer +! ------------------------------------------------- +! T T 5 1 UST UST Friction velocity. +! F T 5 2 CHARN CHA Charnock parameter +! F T 5 3 CGE CGE Energy flux +! F T 5 4 PHIAW FAW Air-sea energy flux +! F T 5 5 TAUWI[X,Y] TAW Net wave-supported stress +! F T 5 6 TAUWN[X,Y] TWA Negative part of the wave-supported stress +! F F 5 7 WHITECAP WCC Whitecap coverage +! F F 5 8 WHITECAP WCF Whitecap thickness +! F F 5 9 WHITECAP WCH Mean breaking height +! F F 5 10 WHITECAP WCM Whitecap moment +! F F 5 11 FWS FWS Wind sea mean period +! ------------------------------------------------- +! 6 Wave-ocean layer +! ------------------------------------------------- +! F F 6 1 S[XX,YY,XY] SXY Radiation stresses. +! F F 6 2 TAUO[X,Y] TWO Wave to ocean momentum flux +! F F 6 3 BHD BHD Bernoulli head (J term) +! F F 6 4 PHIOC FOC Wave to ocean energy flux +! F F 6 5 TUS[X,Y] TUS Stokes transport +! F F 6 6 USS[X,Y] USS Surface Stokes drift +! F F 6 7 [PR,TP]MS P2S Second-order sum pressure +! F F 6 8 US3D USF Spectrum of surface Stokes drift +! F F 6 9 P2SMS P2L Micro seism source term +! F F 6 10 TAUICE TWI Wave to sea ice stress +! F F 6 11 PHICE FIC Wave to sea ice energy flux +! ------------------------------------------------- +! 7 Wave-bottom layer +! ------------------------------------------------- +! F F 7 1 ABA ABR Near bottom rms amplitides. +! F F 7 2 UBA UBR Near bottom rms velocities. +! F F 7 3 BEDFORMS BED Bedforms +! F F 7 4 PHIBBL FBB Energy flux due to bottom friction +! F F 7 5 TAUBBL TBB Momentum flux due to bottom friction +! ------------------------------------------------- +! 8 Spectrum parameters +! ------------------------------------------------- +! F F 8 1 MSS[X,Y] MSS Mean square slopes +! F F 8 2 MSC[X,Y] MSC Spectral level at high frequency tail +! F F 8 3 WL02[X,Y] WL02 East/X North/Y mean wavelength compon +! F F 8 4 ALPXT AXT Correl sea surface gradients (x,t) +! F F 8 5 ALPYT AYT Correl sea surface gradients (y,t) +! F F 8 6 ALPXY AXY Correl sea surface gradients (x,y) +! ------------------------------------------------- +! 9 Numerical diagnostics +! ------------------------------------------------- +! T T 9 1 DTDYN DTD Average time step in integration. +! T T 9 2 FCUT FC Cut-off frequency. +! T T 9 3 CFLXYMAX CFX Max. CFL number for spatial advection. +! T T 9 4 CFLTHMAX CFD Max. CFL number for theta-advection. +! F F 9 5 CFLKMAX CFK Max. CFL number for k-advection. +! ------------------------------------------------- +! 10 User defined +! ------------------------------------------------- +! F F 10 1 U1 User defined #1. (requires coding ...) +! F F 10 2 U2 User defined #1. (requires coding ...) +! ------------------------------------------------- +! +! Section 4 consist of a set of fields, index 0 = wind sea, index +! 1:NOSWLL are first NOSWLL swell fields. +! +! +! * output track file formatted (T) or unformated (F) +! +! * coupling fields exchanged list is : +! - Sent fields by ww3: +! - Ocean model : T0M1 OCHA OHS DIR BHD TWO UBR FOC TAW TUS USS LM DRY +! - Atmospheric model : ACHA AHS TP (or FP) FWS +! - Ice model : IC5 TWI +! - Received fields by ww3: +! - Ocean model : SSH CUR +! - Atmospheric model : WND +! - Ice model : ICE IC1 IC5 +! +! * namelist must be terminated with / +! * definitions & defaults: +! TYPE%FIELD%LIST = 'unset' +! TYPE%POINT%FILE = 'points.list' +! TYPE%TRACK%FORMAT = T +! TYPE%PARTITION%X0 = 0 +! TYPE%PARTITION%XN = 0 +! TYPE%PARTITION%NX = 0 +! TYPE%PARTITION%Y0 = 0 +! TYPE%PARTITION%YN = 0 +! TYPE%PARTITION%NY = 0 +! TYPE%PARTITION%FORMAT = T +! TYPE%COUPLING%SENT = 'unset' +! TYPE%COUPLING%RECEIVED = 'unset' +! +! -------------------------------------------------------------------- ! +&OUTPUT_TYPE_NML + TYPE%FIELD%LIST = 'HS WND RHO TAU T02 DP DIR FP MXE MXES MXH MXHC SDMH SDMHC' + TYPE%POINT%FILE = '../input/points.list' +/ + +! -------------------------------------------------------------------- ! +! Define output dates via OUTPUT_DATE_NML namelist +! +! * start and stop times are with format 'yyyymmdd hhmmss' +! * if time stride is equal '0', then output is disabled +! * time stride is given in seconds +! +! * namelist must be terminated with / +! * definitions & defaults: +! DATE%FIELD%START = '19680606 000000' +! DATE%FIELD%STRIDE = '0' +! DATE%FIELD%STOP = '19680607 000000' +! DATE%POINT%START = '19680606 000000' +! DATE%POINT%STRIDE = '0' +! DATE%POINT%STOP = '19680607 000000' +! DATE%TRACK%START = '19680606 000000' +! DATE%TRACK%STRIDE = '0' +! DATE%TRACK%STOP = '19680607 000000' +! DATE%RESTART%START = '19680606 000000' +! DATE%RESTART%STRIDE = '0' +! DATE%RESTART%STOP = '19680607 000000' +! DATE%BOUNDARY%START = '19680606 000000' +! DATE%BOUNDARY%STRIDE = '0' +! DATE%BOUNDARY%STOP = '19680607 000000' +! DATE%PARTITION%START = '19680606 000000' +! DATE%PARTITION%STRIDE = '0' +! DATE%PARTITION%STOP = '19680607 000000' +! DATE%COUPLING%START = '19680606 000000' +! DATE%COUPLING%STRIDE = '0' +! DATE%COUPLING%STOP = '19680607 000000' +! +! DATE%RESTART = '19680606 000000' '0' '19680607 000000' +! -------------------------------------------------------------------- ! +&OUTPUT_DATE_NML + DATE%FIELD = '20140310 000000' '900' '20140310 060000' + DATE%POINT = '20140310 000000' '3600' '20140310 060000' +/ + +! -------------------------------------------------------------------- ! +! Define homogeneous input via HOMOG_COUNT_NML and HOMOG_INPUT_NML namelist +! +! * the number of each homogeneous input is defined by HOMOG_COUNT +! * the total number of homogeneous input is automatically calculated +! * the homogeneous input must start from index 1 to N +! * if VALUE1 is equal 0, then the homogeneous input is desactivated +! * NAME can be IC1, IC2, IC3, IC4, IC5, MDN, MTH, MVS, LEV, CUR, WND, ICE, MOV +! * each homogeneous input is defined over a maximum of 3 values detailled below : +! - IC1 is defined by thickness +! - IC2 is defined by viscosity +! - IC3 is defined by density +! - IC4 is defined by modulus +! - IC5 is defined by floe diameter +! - MDN is defined by density +! - MTH is defined by thickness +! - MVS is defined by viscosity +! - LEV is defined by height +! - CUR is defined by speed and direction +! - WND is defined by speed, direction and airseatemp +! - ICE is defined by concentration +! - MOV is defined by speed and direction +! +! * namelist must be terminated with / +! * definitions & defaults: +! HOMOG_COUNT%N_IC1 = 0 +! HOMOG_COUNT%N_IC2 = 0 +! HOMOG_COUNT%N_IC3 = 0 +! HOMOG_COUNT%N_IC4 = 0 +! HOMOG_COUNT%N_IC5 = 0 +! HOMOG_COUNT%N_MDN = 0 +! HOMOG_COUNT%N_MTH = 0 +! HOMOG_COUNT%N_MVS = 0 +! HOMOG_COUNT%N_LEV = 0 +! HOMOG_COUNT%N_CUR = 0 +! HOMOG_COUNT%N_WND = 0 +! HOMOG_COUNT%N_ICE = 0 +! HOMOG_COUNT%N_MOV = 0 +! +! HOMOG_INPUT(I)%NAME = 'unset' +! HOMOG_INPUT(I)%DATE = '19680606 000000' +! HOMOG_INPUT(I)%VALUE1 = 0 +! HOMOG_INPUT(I)%VALUE2 = 0 +! HOMOG_INPUT(I)%VALUE3 = 0 +! -------------------------------------------------------------------- ! +&HOMOG_COUNT_NML +/ + +&HOMOG_INPUT_NML +/ + +! -------------------------------------------------------------------- ! +! WAVEWATCH III - end of namelist ! +! -------------------------------------------------------------------- ! diff --git a/regtests/ww3_tp2.15/input_rho/ww3_strt.inp b/regtests/ww3_tp2.15/input_rho/ww3_strt.inp new file mode 100644 index 000000000..a20af3062 --- /dev/null +++ b/regtests/ww3_tp2.15/input_rho/ww3_strt.inp @@ -0,0 +1,7 @@ +$ -------------------------------------------------------------------- $ +$ WAVEWATCH III Initial conditions input file $ +$--------------------------------------------------------------------- $ + 3 +$ -------------------------------------------------------------------- $ +$ End of input file $ +$ -------------------------------------------------------------------- $ diff --git a/regtests/ww3_tp2.16/input/ww3_shel.inp b/regtests/ww3_tp2.16/input/ww3_shel.inp index 356242f2a..bb9be284e 100644 --- a/regtests/ww3_tp2.16/input/ww3_shel.inp +++ b/regtests/ww3_tp2.16/input/ww3_shel.inp @@ -16,7 +16,9 @@ $ F F Mud parameter 3 F F Water levels F F Currents F F Winds - F Ice concentrations + F F Ice concentrations + F F Atmospheric momentum + F F Air density F Assimilation data : Mean parameters F Assimilation data : 1-D spectra F Assimilation data : 2-D spectra. diff --git a/regtests/ww3_tp2.17/input/ww3_multi_grdset_a.inp b/regtests/ww3_tp2.17/input/ww3_multi_grdset_a.inp index 6151cc181..8ce752618 100755 --- a/regtests/ww3_tp2.17/input/ww3_multi_grdset_a.inp +++ b/regtests/ww3_tp2.17/input/ww3_multi_grdset_a.inp @@ -6,7 +6,7 @@ $ $'points' $ $ - 'inla' 'native' 'native' 'native' 'no' 'no' 'no' 'no' 1 1 0.00 1.00 F + 'inla' 'native' 'native' 'native' 'no' 'no' 'no' 'no' 'no' 'no' 1 1 0.00 1.00 F $ 20151214 000000 20151214 040000 $ diff --git a/regtests/ww3_tp2.17/input/ww3_multi_grdset_b.inp b/regtests/ww3_tp2.17/input/ww3_multi_grdset_b.inp index c08749f4b..11305463a 100755 --- a/regtests/ww3_tp2.17/input/ww3_multi_grdset_b.inp +++ b/regtests/ww3_tp2.17/input/ww3_multi_grdset_b.inp @@ -6,7 +6,7 @@ $ $'points' $ $ - 'inlb' 'native' 'native' 'native' 'no' 'no' 'no' 'no' 1 1 0.00 1.00 F + 'inlb' 'native' 'native' 'native' 'no' 'no' 'no' 'no' 'no' 'no' 1 1 0.00 1.00 F $ 20151214 000000 20151214 040000 $ diff --git a/regtests/ww3_tp2.17/input/ww3_multi_grdset_c.inp b/regtests/ww3_tp2.17/input/ww3_multi_grdset_c.inp index e62a4025f..7aaa675d8 100755 --- a/regtests/ww3_tp2.17/input/ww3_multi_grdset_c.inp +++ b/regtests/ww3_tp2.17/input/ww3_multi_grdset_c.inp @@ -6,7 +6,7 @@ $ $'points' $ $ - 'inlc' 'native' 'native' 'native' 'no' 'no' 'no' 'no' 1 1 0.00 1.00 F + 'inlc' 'native' 'native' 'native' 'no' 'no' 'no' 'no' 'no' 'no' 1 1 0.00 1.00 F $ 20151214 000000 20151214 040000 $ diff --git a/regtests/ww3_tp2.17/input/ww3_shel.inp b/regtests/ww3_tp2.17/input/ww3_shel.inp index ee35b90e7..2aacc2fb1 100755 --- a/regtests/ww3_tp2.17/input/ww3_shel.inp +++ b/regtests/ww3_tp2.17/input/ww3_shel.inp @@ -7,7 +7,9 @@ $ T F Water levels T F Currents T F Winds - F Ice concentrations + F F Ice concentrations + F F Atmospheric momentum + F F Air density F Assimilation data : Mean parameters F Assimilation data : 1-D spectra F Assimilation data : 2-D spectra. diff --git a/regtests/ww3_tp2.18/input/ww3_shel.inp b/regtests/ww3_tp2.18/input/ww3_shel.inp index 9c3154545..55da540df 100644 --- a/regtests/ww3_tp2.18/input/ww3_shel.inp +++ b/regtests/ww3_tp2.18/input/ww3_shel.inp @@ -8,6 +8,8 @@ $ T F Currents F F Winds F F Ice concentrations + F F Atmospheric momentum + F F Air density F Assimilation data : Mean parameters F Assimilation data : 1-D spectra F Assimilation data : 2-D spectra diff --git a/regtests/ww3_tp2.2/input/ww3_multi.inp b/regtests/ww3_tp2.2/input/ww3_multi.inp index dd381d3fc..4d5d699e6 100644 --- a/regtests/ww3_tp2.2/input/ww3_multi.inp +++ b/regtests/ww3_tp2.2/input/ww3_multi.inp @@ -2,7 +2,7 @@ $ WAVEWATCH III multi-scale input file $ ------------------------------ 1 0 F 1 F F $ - 'ww3' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 1 1 0.00 1.00 F + 'ww3' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 'no' 1 1 0.00 1.00 F $ 19680606 000000 19680618 000000 $ diff --git a/regtests/ww3_tp2.2/input/ww3_shel.inp b/regtests/ww3_tp2.2/input/ww3_shel.inp index b9a089139..aba7af3e4 100644 --- a/regtests/ww3_tp2.2/input/ww3_shel.inp +++ b/regtests/ww3_tp2.2/input/ww3_shel.inp @@ -3,7 +3,9 @@ $ ------------------------------ F T T T T T - F + F F + F F + F F F F F diff --git a/regtests/ww3_tp2.21/input/ww3_shel.inp b/regtests/ww3_tp2.21/input/ww3_shel.inp index b6f101309..caa4c845f 100644 --- a/regtests/ww3_tp2.21/input/ww3_shel.inp +++ b/regtests/ww3_tp2.21/input/ww3_shel.inp @@ -4,13 +4,15 @@ $ -------------------------------------------------------------------- $ $ $ Define input to be used ---------------------------------------------$ $ - F F - F F - T F - F - F - F - F + F F Water levels + F F Currents + T F Winds + F F Ice concentrations + F F Atmospheric momentum + F F Air density + F Assimilation data : Mean parameters + F Assimilation data : 1-D spectra + F Assimilation data : 2-D spectra. $ $ Time frame of calculations ------------------------------------------$ $ @@ -437,7 +439,8 @@ $ Homogenous field data ----------------------------------------------$ $ $ 'WND' 20051001 000000 20. 145. 2.0 $ 'WND' 20051002 000000 20. 245. 2.0 - 'STP' + 'the_end' 0 + 'STP' $ -------------------------------------------------------------------- $ $ End of input file $ $ -------------------------------------------------------------------- $ diff --git a/regtests/ww3_tp2.3/input/ww3_shel.inp b/regtests/ww3_tp2.3/input/ww3_shel.inp index 92a2dcf93..2d69bd5e4 100644 --- a/regtests/ww3_tp2.3/input/ww3_shel.inp +++ b/regtests/ww3_tp2.3/input/ww3_shel.inp @@ -3,7 +3,9 @@ $ ------------------------------ F T F T F T - F + F F + F F + F F F F F diff --git a/regtests/ww3_tp2.4/input/ww3_outf_depth.inp b/regtests/ww3_tp2.4/input/ww3_outf_depth.inp index 40f40b32b..5166e05fb 100644 --- a/regtests/ww3_tp2.4/input/ww3_outf_depth.inp +++ b/regtests/ww3_tp2.4/input/ww3_outf_depth.inp @@ -13,8 +13,8 @@ $ $ Request flags identifying fields as in ww3_shel input and section 2.4 of the manual. $ (1) Forcing Fields T -$ DPT CUR WND DT WLV ICE IBG D50 - T F F F F F F F +$ DPT CUR WND DT WLV ICE TAU RHO IBG D50 + T F F F F F F F F F $ (2) Standard mean wave Parameters F $ (3) Frequency-dependent parameters diff --git a/regtests/ww3_tp2.4/input/ww3_shel.inp b/regtests/ww3_tp2.4/input/ww3_shel.inp index bb1183690..debb221b3 100644 --- a/regtests/ww3_tp2.4/input/ww3_shel.inp +++ b/regtests/ww3_tp2.4/input/ww3_shel.inp @@ -11,7 +11,9 @@ $ F F F F F F - F + F F + F F + F F F Assimilation data : Mean parameters F Assimilation data : 1-D spectra F Assimilation data : 2-D spectra. diff --git a/regtests/ww3_tp2.5/input/ww3_shel.inp b/regtests/ww3_tp2.5/input/ww3_shel.inp index edf156ea4..bf6f91368 100644 --- a/regtests/ww3_tp2.5/input/ww3_shel.inp +++ b/regtests/ww3_tp2.5/input/ww3_shel.inp @@ -11,7 +11,9 @@ $ F F F F F F - F + F F + F F + F F F Assimilation data : Mean parameters F Assimilation data : 1-D spectra F Assimilation data : 2-D spectra. diff --git a/regtests/ww3_tp2.5/input_REF/ww3_shel.inp b/regtests/ww3_tp2.5/input_REF/ww3_shel.inp index f37fe7b48..00affe10b 100644 --- a/regtests/ww3_tp2.5/input_REF/ww3_shel.inp +++ b/regtests/ww3_tp2.5/input_REF/ww3_shel.inp @@ -11,7 +11,9 @@ $ F F F F F F - F + F F + F F + F F F Assimilation data : Mean parameters F Assimilation data : 1-D spectra F Assimilation data : 2-D spectra. diff --git a/regtests/ww3_tp2.6/input/ww3_shel.inp b/regtests/ww3_tp2.6/input/ww3_shel.inp index dedc5a40a..684b14fe0 100644 --- a/regtests/ww3_tp2.6/input/ww3_shel.inp +++ b/regtests/ww3_tp2.6/input/ww3_shel.inp @@ -7,7 +7,9 @@ $ F F Water levels F F Currents T T Winds - F Ice concentrations + F F Ice concentrations + F F Atmospheric momentum + F F Air density F Assimilation data : Mean parameters F Assimilation data : 1-D spectra F Assimilation data : 2-D spectra. diff --git a/regtests/ww3_tp2.7/input/ww3_shel.inp b/regtests/ww3_tp2.7/input/ww3_shel.inp index cef53d6e0..b841a569f 100644 --- a/regtests/ww3_tp2.7/input/ww3_shel.inp +++ b/regtests/ww3_tp2.7/input/ww3_shel.inp @@ -7,7 +7,9 @@ $ F F Water levels F F Currents T T Winds - F Ice concentrations + F F Ice concentrations + F F Atmospheric momentum + F F Air density F Assimilation data : Mean parameters F Assimilation data : 1-D spectra F Assimilation data : 2-D spectra. diff --git a/regtests/ww3_tp2.8/input/ww3_shel.inp b/regtests/ww3_tp2.8/input/ww3_shel.inp index 67b304731..712bc0f0c 100755 --- a/regtests/ww3_tp2.8/input/ww3_shel.inp +++ b/regtests/ww3_tp2.8/input/ww3_shel.inp @@ -6,12 +6,16 @@ $ as a homogeneous field; four input lines. $ 1) Water levels $ 2) Currents $ 3) Winds -$ 4) Ice concentrations (cannot be homogeneous). +$ 4) Ice concentrations +$ 5) Atmospheric momentum +$ 6) Air density $ F F T F T T - F + F F + F F + F F F Assimilation data : Mean parameters F Assimilation data : 1-D spectra F Assimilation data : 2-D spectra. diff --git a/regtests/ww3_tp2.9/input/ww3_shel.inp b/regtests/ww3_tp2.9/input/ww3_shel.inp index c0294b0bb..627d31900 100644 --- a/regtests/ww3_tp2.9/input/ww3_shel.inp +++ b/regtests/ww3_tp2.9/input/ww3_shel.inp @@ -3,7 +3,9 @@ $ ------------------------------ F F F F F F - F + F F + F F + F F F F F diff --git a/regtests/ww3_tr1/input/ww3_shel.inp b/regtests/ww3_tr1/input/ww3_shel.inp index a98f2b49c..df2e2d7ae 100644 --- a/regtests/ww3_tr1/input/ww3_shel.inp +++ b/regtests/ww3_tr1/input/ww3_shel.inp @@ -2,7 +2,9 @@ $ F F Water levels F F Currents T T Winds - F Ice concentrations + F F Ice concentrations + F F Atmospheric momentum + F F Air density F Assimilation data : Mean parameters F Assimilation data : 1-D spectra F Assimilation data : 2-D spectra diff --git a/regtests/ww3_tr1/input_bndin/ww3_shel.inp b/regtests/ww3_tr1/input_bndin/ww3_shel.inp index 422ea7f88..0eb78e60b 100644 --- a/regtests/ww3_tr1/input_bndin/ww3_shel.inp +++ b/regtests/ww3_tr1/input_bndin/ww3_shel.inp @@ -2,7 +2,9 @@ $ F F Water levels F F Currents F F Winds - F Ice concentrations + F F Ice concentrations + F F Atmospheric momentum + F F Air density F Assimilation data : Mean parameters F Assimilation data : 1-D spectra F Assimilation data : 2-D spectra diff --git a/regtests/ww3_tr1/input_std/ww3_shel.inp b/regtests/ww3_tr1/input_std/ww3_shel.inp index d44be3011..841b886f3 100644 --- a/regtests/ww3_tr1/input_std/ww3_shel.inp +++ b/regtests/ww3_tr1/input_std/ww3_shel.inp @@ -2,7 +2,9 @@ $ F F Water levels F F Currents T T Winds - F Ice concentrations + F F Ice concentrations + F F Atmospheric momentum + F F Air density F Assimilation data : Mean parameters F Assimilation data : 1-D spectra F Assimilation data : 2-D spectra diff --git a/regtests/ww3_ts1/input/ww3_shel.inp b/regtests/ww3_ts1/input/ww3_shel.inp index ca6ed61e6..fca96fb7e 100644 --- a/regtests/ww3_ts1/input/ww3_shel.inp +++ b/regtests/ww3_ts1/input/ww3_shel.inp @@ -3,7 +3,9 @@ $ ------------------------------ F T F T T T - F + F F + F F + F F F F F diff --git a/regtests/ww3_ts1/input_fld/ww3_shel.inp b/regtests/ww3_ts1/input_fld/ww3_shel.inp index 74ff86d0c..5c520c139 100644 --- a/regtests/ww3_ts1/input_fld/ww3_shel.inp +++ b/regtests/ww3_ts1/input_fld/ww3_shel.inp @@ -3,7 +3,9 @@ $ ------------------------------ F T F T T T - F + F F + F F + F F F F F diff --git a/regtests/ww3_ts1/input_icesct_IC0/ww3_shel.inp b/regtests/ww3_ts1/input_icesct_IC0/ww3_shel.inp index f8eb4c255..7a0f76160 100644 --- a/regtests/ww3_ts1/input_icesct_IC0/ww3_shel.inp +++ b/regtests/ww3_ts1/input_icesct_IC0/ww3_shel.inp @@ -3,7 +3,9 @@ $ ------------------------------ F T F T T T - T + T F + F F + F F F F F diff --git a/regtests/ww3_ts1/input_icesct_IC1/ww3_shel.inp b/regtests/ww3_ts1/input_icesct_IC1/ww3_shel.inp index 45cf9d8c4..a0b747379 100644 --- a/regtests/ww3_ts1/input_icesct_IC1/ww3_shel.inp +++ b/regtests/ww3_ts1/input_icesct_IC1/ww3_shel.inp @@ -15,7 +15,9 @@ $ Include ice and mud parameters only if IC1/2/3/4 used : F F Water levels F F Currents T T Winds - T Ice concentrations + T F Ice concentrations + F F Atmospheric momentum + F F Air density F Assimilation data : Mean parameters F Assimilation data : 1-D spectra F Assimilation data : 2-D spectra. diff --git a/regtests/ww3_ts1/input_icesct_IC2/ww3_shel.inp b/regtests/ww3_ts1/input_icesct_IC2/ww3_shel.inp index 8b07fd5c4..a378813d0 100644 --- a/regtests/ww3_ts1/input_icesct_IC2/ww3_shel.inp +++ b/regtests/ww3_ts1/input_icesct_IC2/ww3_shel.inp @@ -15,7 +15,9 @@ $ Include ice and mud parameters only if IC1/2/3/4 used : F F Water levels F F Currents T T Winds - T Ice concentrations + T F Ice concentrations + F F Atmospheric momentum + F F Air density F Assimilation data : Mean parameters F Assimilation data : 1-D spectra F Assimilation data : 2-D spectra. diff --git a/regtests/ww3_ts1/input_icesct_IC3/ww3_shel.inp b/regtests/ww3_ts1/input_icesct_IC3/ww3_shel.inp index 36c009f7b..9dd5cd4b7 100644 --- a/regtests/ww3_ts1/input_icesct_IC3/ww3_shel.inp +++ b/regtests/ww3_ts1/input_icesct_IC3/ww3_shel.inp @@ -15,7 +15,9 @@ $ Include ice and mud parameters only if IC1/2/3/4 used : F F Water levels F F Currents T T Winds - T Ice concentrations + T F Ice concentrations + F F Atmospheric momentum + F F Air density F Assimilation data : Mean parameters F Assimilation data : 1-D spectra F Assimilation data : 2-D spectra. diff --git a/regtests/ww3_ts1/input_icesct_IC4/ww3_shel.inp b/regtests/ww3_ts1/input_icesct_IC4/ww3_shel.inp index 859a75fde..a0606150e 100644 --- a/regtests/ww3_ts1/input_icesct_IC4/ww3_shel.inp +++ b/regtests/ww3_ts1/input_icesct_IC4/ww3_shel.inp @@ -15,7 +15,9 @@ $ Include ice and mud parameters only if IC1/2/3/4 used : F F Water levels F F Currents T T Winds - T Ice concentrations + T F Ice concentrations + F F Atmospheric momentum + F F Air density F Assimilation data : Mean parameters F Assimilation data : 1-D spectra F Assimilation data : 2-D spectra. diff --git a/regtests/ww3_ts2/input/ww3_shel.inp b/regtests/ww3_ts2/input/ww3_shel.inp index 8d93c5e0d..802ba99cb 100644 --- a/regtests/ww3_ts2/input/ww3_shel.inp +++ b/regtests/ww3_ts2/input/ww3_shel.inp @@ -3,7 +3,9 @@ $ ------------------------------ F T F T T T - F + F F + F F + F F F F F diff --git a/regtests/ww3_ts3/input/ww3_shel.inp b/regtests/ww3_ts3/input/ww3_shel.inp index 34c3e4b85..53091e79e 100644 --- a/regtests/ww3_ts3/input/ww3_shel.inp +++ b/regtests/ww3_ts3/input/ww3_shel.inp @@ -1,9 +1,11 @@ $ WAVEWATCH III shell input file $ ------------------------------ - F T - F T + F F + T T T F - F + F F + F F + F F F F F diff --git a/regtests/ww3_ts4/input_rg_multi/ww3_multi_grdset.inp b/regtests/ww3_ts4/input_rg_multi/ww3_multi_grdset.inp index 7ba825d07..838307f41 100644 --- a/regtests/ww3_ts4/input_rg_multi/ww3_multi_grdset.inp +++ b/regtests/ww3_ts4/input_rg_multi/ww3_multi_grdset.inp @@ -2,10 +2,10 @@ $ WAVEWATCH III multi-scale input file $ ------------------------------------ 2 1 F 1 F T $ - 'wind' F F T F F F F + 'wind' F F T F F F F F F $ - 'large' 'no' 'no' 'wind' 'no' 'no' 'no' 'no' 1 1 0.00 1.00 F - 'nest' 'no' 'no' 'wind' 'no' 'no' 'no' 'no' 2 1 0.00 1.00 F + 'large' 'no' 'no' 'wind' 'no' 'no' 'no' 'no' 'no' 'no' 1 1 0.00 1.00 F + 'nest' 'no' 'no' 'wind' 'no' 'no' 'no' 'no' 'no' 'no' 2 1 0.00 1.00 F $ 20000101 000000 20000103 000000 $ diff --git a/regtests/ww3_ts4/input_rg_shel/ww3_shel.inp b/regtests/ww3_ts4/input_rg_shel/ww3_shel.inp index 8a4a5f5fb..f1db6e300 100644 --- a/regtests/ww3_ts4/input_rg_shel/ww3_shel.inp +++ b/regtests/ww3_ts4/input_rg_shel/ww3_shel.inp @@ -15,7 +15,9 @@ $ F F Water levels F F Currents F F Winds - F Ice concentrations + F F Ice concentrations + F F Atmospheric momentum + F F Air density F Assimilation data : Mean parameters F Assimilation data : 1-D spectra F Assimilation data : 2-D spectra. diff --git a/regtests/ww3_ts4/input_ug/ww3_shel.inp b/regtests/ww3_ts4/input_ug/ww3_shel.inp index 8a4a5f5fb..f1db6e300 100644 --- a/regtests/ww3_ts4/input_ug/ww3_shel.inp +++ b/regtests/ww3_ts4/input_ug/ww3_shel.inp @@ -15,7 +15,9 @@ $ F F Water levels F F Currents F F Winds - F Ice concentrations + F F Ice concentrations + F F Atmospheric momentum + F F Air density F Assimilation data : Mean parameters F Assimilation data : 1-D spectra F Assimilation data : 2-D spectra.