Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

CICE Grid Areas #116

Open
anton-seaice opened this issue Mar 8, 2024 · 2 comments
Open

CICE Grid Areas #116

anton-seaice opened this issue Mar 8, 2024 · 2 comments
Assignees
Labels
cice6 Related to CICE6 in progress

Comments

@anton-seaice
Copy link
Contributor

Following on from #101, we found that tarea, uarea, tlat, tlon and anglet are not being loaded from the grid file, and are instead computed internally in cice.

There is this message in ice.log:

(popgrid_nc) CICE will calculate angleT, TLON and TLAT

The code and output for these look ok at first check.

For the areas, the areas internally calculated by cice (based on htn and hte fields) are saved in the history output. Comparing these to the input grid, shows noteable differences probably due to CICE calculating them internally based on the assumption the grid cells are rectangular:

Screenshot 2024-03-08 at 1 04 33 pm

In OM2, code was added to load the areas from the grid file.

#ifdef AusCOM
! we also let cice read in the following fields to avoid possible mismatch
! between cice and mom4.
! ( 8) TLAT
! ( 9) TLON
! (10) TAREA
! (11) UAREA
! (12) ANGLET
! the following fields are also available in grid.nc but not read in 'cos they
! are not critical 
!  LONT_BONDS
!  LATT_BONDS
!  LONU_BONDS
!  LATU_BONDS
#endif

There appears to be an option to do something similar in the cmeps driver for CICE:

 ! Initialize the cice mesh and the cice mask
       if (trim(grid_format) == 'meshnc') then
          ! In this case cap code determines the mask file
          call ice_mesh_setmask_from_maskfile(ice_maskfile, ice_mesh, rc=rc)
          if (ChkErr(rc,__LINE__,u_FILE_u)) return
          call ice_mesh_init_tlon_tlat_area_hm()
          if (ChkErr(rc,__LINE__,u_FILE_u)) return
       else
          ! In this case init_grid2 will initialize tlon, tlat, area and hm
          call init_grid2()
          call ice_mesh_check(gcomp,ice_mesh, rc=rc)
          if (ChkErr(rc,__LINE__,u_FILE_u)) return
       end if

Which looks like it will get the area from the mesh file. grid_format = meshnc is an undocumented option only in the driver, but might be a reasonable enough approach for us.

@anton-seaice anton-seaice self-assigned this Mar 8, 2024
@anton-seaice anton-seaice added the cice6 Related to CICE6 label Mar 8, 2024
@anton-seaice anton-seaice moved this to Todo in CMIP7 Mar 8, 2024
@anton-seaice
Copy link
Contributor Author

anton-seaice commented Apr 22, 2024

To address this warning:

(popgrid_nc) CICE will calculate angleT, TLON and TLAT

we just need to rename angleT to anglet in our grid file

The cice subroutine popgrid_nc, doesn't read TAREA and UAREA. So we would also need to add those to the cice6 code.

There may also be an issue with the dxU, dxT, dxN, dxE and dyU, dyT, dyN, dyE fields as they are estimated from the side length of each cell and most will require averaging of the length in two neighboring cells. I am not sure if this introduces significant error, but does make loading this information from the mom supergrid (or similar) an appealing option!

      fieldname='htn'
      call ice_read_global_nc(fid_grid,1,fieldname,work_g1,diag) ! HTN
      call primary_grid_lengths_HTN(work_g1)                  ! dxU, dxT, dxN, dxE
      fieldname='hte'
      call ice_read_global_nc(fid_grid,1,fieldname,work_g1,diag) ! HTE
      call primary_grid_lengths_HTE(work_g1)                  ! dyU, dyT, dyN, dyE

Edit: And similar concerns about narea and earea, i.e. if we read tarea and uarea from a file, we need some way to get narea and earea which is internally consistent.

@anton-seaice
Copy link
Contributor Author

anton-seaice commented May 2, 2024

Tangentially related, it looks like MOM doesn't actually use angle_dx from the supergrid, so it would be good to check if the MOM diagnostic output of this angle (possibly this would be the cos_rot, sin_rot fields?) match angle_dx.

i.e. its possible we shouldn't be using those fields for the cice grid, and should be calculating it in the same way MOM does.

@chrisb13 chrisb13 moved this to In Progress in ACCESS-OM3 025 Dec 4, 2024
@anton-seaice anton-seaice moved this from In Progress to Blocked in ACCESS-OM3 025 Dec 4, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
cice6 Related to CICE6 in progress
Projects
Status: Todo
Development

No branches or pull requests

2 participants