Changes between Initial Version and Version 1 of Ticket #938


Ignore:
Timestamp:
06/17/23 17:32:11 (13 months ago)
Author:
arango
Comment:

Legend:

Unmodified
Added
Removed
Modified
  • Ticket #938

    • Property ResolutionFixed
    • Property Status newclosed
    • Property Summary VERY IMPORTANT: Consolidation and refactoring of ROMS repositories to GitHubVERY IMPORTANT: Update CMake and corrected bug
    • Property Type upgradebug
  • Ticket #938 – Description

    initial v1  
    1 We started the process of consolidating and refactoring **ROMS** repositories into **!GitHub**. Several research repositories are private for ongoing updates and additions, and we would like to give access to selected superusers and beta testers. It also facilitates the integration of **ROMS** into modern community frameworks based on principles of Object Oriented Programming (**OOP)**.
     1* Updated CMake flags for GNU (**Compilers/compiler_flags_GNU_Fortran.cmake**) and Intel (**Compilers/compiler_flags_Intel_Fortran.cmake**) compilers.
    22
    3 The new **!GitHub** repository has the following branches:
     3* Update the information in **Compilers/roms_compiler_flags.cmake** to **ROMS BUILD TYPE**, **ROMS COMPILER FLAGS**, and internal macro **my_fflags**.
    44
    5 * [[span(style=color: #FF0000, **master**)]]: Tagged versions and latest stable version of **ROMS**
    6 * [[span(style=color: #FF0000, **develop**)]]: Not for public consumption but passes the internal tests
    7 * [[span(style=color: #FF0000, **feature branches**)]]: Research and new development branches with access to beta testers 
    8  * [[span(style=color: #0000FF, **feature/kernels**)]]:  Major update to **ROMS** numerical kernels (**omega.F** and **step2d.F**)
    9  * [[span(style=color: #0000FF, **feature/seaice**)]]: Native **sea-ice model** refactoring and development
    10  * [[span(style=color: #0000FF, **feature/wec**)]]: Wave Effects on Currents algorithms adopted from COAWST
    11 
    12 ----
    13 
    14 === __Consolidation Steps:__ ===
    15 
    16 We need to consolidate the changes to **ROMS** due to the refactoring and development of the sea-ice model. Originally written by Paul Budgell (2005), maintained by Kate Hedstrom, and updated by Scott Durski (Durski and Kurapov, 2019, 2020). It is primarily based on Mellor and Kantha (1989) and Parkinson and Washington (1979).
    17 
    18 The sea-ice model has been cleaned, documented, and redesigned to facilitate adjoint-based applications in the future. It has only two state variables, **Fi** and **Si**, that can be expanded. The original code has at least **39** arrays.
    19 
     5* Corrected bug **ESM/coupling_esmf.yaml**, **ESM/coupling_esmf_coamps.yaml**, and **ESM/coupling_esmf_wrf.yaml**. We need the **extrapolation_method** to have a value of **nearest** instead of **none**. By default, the **ESMF/NUOPC** library needs the specification of the **regrid** and extrapolation methods in all the import and export fields:
    206{{{
    21 ! Define derived-type structure ice model state and internal arrays.
    22  
    23      TYPE T_ICE
    24         real(r8), pointer :: Fi(:,:,:)               ! [i,j,1:nIceF]
    25         real(r8), pointer :: Si(:,:,:,:)             ! [i,j,1:2,1:nIceS]
    26       END TYPE T_ICENgrids
    27       TYPE (T_ICE), allocatable :: ICE(:)            ! [Ngrids]
    28 
    29 ! Ice model state prognostic variables indices.
    30 
    31       integer, parameter :: nIceS = 15  ! number of ice state variables
    32       integer :: iSice(nIceS)           ! state I/O indices
    33       integer, parameter :: isAice =  1 ! ice concentration
    34       integer, parameter :: isHice =  2 ! ice thickness
    35       integer, parameter :: isHmel =  3 ! melt water thickness on ice
    36       integer, parameter :: isHsno =  4 ! snow thickness
    37       integer, parameter :: isIage =  5 ! ice age
    38       integer, parameter :: isISxx =  6 ! internal ice xx-stress
    39       integer, parameter :: isISxy =  7 ! internal ice xy-stress
    40       integer, parameter :: isISyy =  8 ! internal ice yy-stress
    41       integer, parameter :: isTice =  9 ! ice interior temperature
    42       integer, parameter :: isUice = 10 ! ice U-velocity
    43       integer, parameter :: isVice = 11 ! ice V-velocity
    44       integer, parameter :: isEnth = 12 ! ice/brine enthalpy
    45       integer, parameter :: isHage = 13 ! thickness linked with ice age
    46       integer, parameter :: isUevp = 14 ! EVP ice U-velocity
    47       integer, parameter :: isVevp = 15 ! EVP ice V-velocity
    48 
    49 ! Ice model internal variables indices.
    50 
    51       integer, parameter :: nIceF = 24  ! number of ice field variables
    52       integer :: iFice(nIceF)           ! internal fields I/O indices
    53       integer, parameter :: icAIus =  1 ! surface Air-Ice U-stress
    54       integer, parameter :: icAIvs =  2 ! surface Air-Ice V-stress
    55       integer, parameter :: icBvis =  3 ! ice bulk viscosity
    56       integer, parameter :: icHsse =  4 ! sea surface elevation
    57       integer, parameter :: icIOfv =  5 ! Ice-Ocean friction velocity
    58       integer, parameter :: icIOmf =  6 ! Ice-Ocean mass flux
    59       integer, parameter :: icIOmt =  7 ! Ice-Ocean momentum transfer
    60       integer, parameter :: icIOvs =  8 ! Ice-Ocean velocity shear
    61       integer, parameter :: icIsst =  9 ! ice/snow surface temperature
    62       integer, parameter :: icPgrd = 10 ! gridded ice strength
    63       integer, parameter :: icPice = 11 ! ice pressure or strength
    64       integer, parameter :: icQcon = 12 ! ice/snow heat conductivity
    65       integer, parameter :: icQrhs = 13 ! RHS heat flux over ice/snow
    66       integer, parameter :: icSvis = 14 ! ice shear viscosity
    67       integer, parameter :: icS0mk = 15 ! molecular sublayer salinity
    68       integer, parameter :: icT0mk = 16 ! molecular sublayer temperature
    69       integer, parameter :: icUavg = 17 ! average mixed-layer U-velocity
    70       integer, parameter :: icVavg = 18 ! average mixed-layer V-velocity
    71       integer, parameter :: icWdiv = 19 ! ice divergence rate
    72       integer, parameter :: icW_ai = 20 ! melt/freeze rate at Air/Ice
    73       integer, parameter :: icW_ao = 21 ! melt/freeze rate at Air/Ocean
    74       integer, parameter :: icW_fr = 22 ! ice accretion rate by frazil
    75       integer, parameter :: icW_io = 23 ! melt/freeze rate at Ice/Ocean
    76       integer, parameter :: icW_ro = 24 ! melt/freeze rate runoff
     7 - standard_name:       downward_shortwave_flux_at_sea_water_surface
     8    long_name:           surface downward shortwave radiation flux
     9    short_name:          dSWrad
     10    data_variables:      [dswrad, time]
     11    source_units:        W m-2
     12    destination_units:   W m-2
     13    source_grid:         cell_center
     14    destination_grid:    cell_center
     15    add_offset:          0.0d0
     16    scale:               1.0d0
     17    debug_write:         false
     18    connected_to:        *ATM                                   # swdown
     19    regrid_method:       bilinear
     20    extrapolate_method:  nearest
    7721}}}
    78 
    79 The sea-ice model kernel is located in the **ROMS/Nonlinear/SeaIce** subdirectory and can only be found in the [[span(style=color: #0000FF, **feature/seaice**)]] branch. It needs testing. We hope the beta testers with some expertise in sea-ice modeling help us with testing and further development. The data input data management is still missing but can easily be added in **get_data.F** and **set_data.F**. It was postponed until we worked on the required atmospheric fields for coupling using the **ESMF/NUOPC** infrastructure.
     22 Many thanks to Fernando Pareja for bringing this to my attention.