@@ -49,6 +49,8 @@ module dglc_datamode_noevolve_mod
49
49
! type(icesheet_ptr_t), allocatable :: So_t(:)
50
50
! type(icesheet_ptr_t), allocatable :: So_q(:)
51
51
52
+ real (r8 ), allocatable :: usrf(:) ! upper surface elevation (m) on ice grid
53
+
52
54
! Export Field names
53
55
character (len=* ), parameter :: field_out_area = ' Sg_area'
54
56
character (len=* ), parameter :: field_out_topo = ' Sg_topo'
@@ -238,8 +240,7 @@ subroutine dglc_datamode_noevolve_advance(pio_subsystem, io_type, io_format, &
238
240
real (r8 ) :: rhoi ! density of ice ~ kg/m^3
239
241
real (r8 ) :: rhoo ! density of sea water ~ kg/m^3
240
242
real (r8 ) :: eus ! eustatic sea level
241
- real (r8 ), allocatable :: lsrf(:)
242
- real (r8 ), allocatable :: usrf(:)
243
+ real (r8 ), allocatable :: lsrf(:) ! lower surface elevation (m) on ice grid
243
244
character (len=* ), parameter :: subname= ' (dglc_datamode_noevolve_advance): '
244
245
!- ------------------------------------------------------------------------------
245
246
@@ -316,8 +317,8 @@ subroutine dglc_datamode_noevolve_advance(pio_subsystem, io_type, io_format, &
316
317
rcode = pio_inq_varid(pioid, ' thk' , varid)
317
318
call pio_read_darray(pioid, varid, pio_iodesc, thck, rcode)
318
319
319
- allocate (lsrf(lsize))
320
320
allocate (usrf(lsize))
321
+ allocate (lsrf(lsize))
321
322
322
323
rhoi = SHR_CONST_RHOICE ! 0.917e3
323
324
rhoo = SHR_CONST_RHOSW ! 1.026e3
@@ -360,7 +361,6 @@ subroutine dglc_datamode_noevolve_advance(pio_subsystem, io_type, io_format, &
360
361
end do
361
362
362
363
deallocate (lsrf)
363
- deallocate (usrf)
364
364
365
365
call pio_closefile(pioid)
366
366
call pio_freedecomp(pio_subsystem, pio_iodesc)
@@ -372,8 +372,13 @@ subroutine dglc_datamode_noevolve_advance(pio_subsystem, io_type, io_format, &
372
372
if (initialized_noevolve) then
373
373
! Compute Fgrg_rofi
374
374
do ns = 1 ,num_icesheets
375
- do ng = 1 ,size (Fgrg_rofi(ns)% ptr)
376
- Fgrg_rofi(ns)% ptr(ng) = Flgl_qice(ns)% ptr(ng)
375
+ lsize = size (Fgrg_rofi(ns)% ptr)
376
+ do ng = 1 ,lsize
377
+ if (is_in_active_grid(usrf(ng))) then
378
+ Fgrg_rofi(ns)% ptr(ng) = Flgl_qice(ns)% ptr(ng)
379
+ else
380
+ Fgrg_rofi(ns)% ptr(ng) = 0._r8
381
+ end if
377
382
end do
378
383
end do
379
384
end if
0 commit comments