Skip to content

Commit

Permalink
ice shelf dHdt and optimization
Browse files Browse the repository at this point in the history
-fixed a bug in change_thickness_using_precip (was missing a division by ice density)
-optimized ice shelf pass_var calls with optional complete arguments
-corrected the grid area to multiply with ice shelf driving stress before its post_data call
-changed some order of operations by adding parentheses, with the hope that it would improve symmetry of the ice shelf solution during MISMIP+. There was no effect, but this version of the code was used for MISMIP+ and MISOMIP.
  • Loading branch information
alex-huth committed Oct 23, 2023
1 parent ac66061 commit 60bf649
Show file tree
Hide file tree
Showing 2 changed files with 83 additions and 83 deletions.
24 changes: 12 additions & 12 deletions src/ice_shelf/MOM_ice_shelf.F90
Original file line number Diff line number Diff line change
Expand Up @@ -858,9 +858,9 @@ subroutine change_thickness_using_melt(ISS, G, US, time_step, fluxes, density_ic
endif
enddo ; enddo

call pass_var(ISS%area_shelf_h, G%domain)
call pass_var(ISS%h_shelf, G%domain)
call pass_var(ISS%hmask, G%domain)
call pass_var(ISS%area_shelf_h, G%domain, complete=.false.)
call pass_var(ISS%h_shelf, G%domain, complete=.false.)
call pass_var(ISS%hmask, G%domain, complete=.false.)
call pass_var(ISS%mass_shelf, G%domain)

end subroutine change_thickness_using_melt
Expand Down Expand Up @@ -1753,10 +1753,10 @@ subroutine initialize_ice_shelf(param_file, ocn_grid, Time, CS, diag, forces_in,
id_clock_pass = cpu_clock_id(' Ice shelf halo updates', grain=CLOCK_ROUTINE)

call cpu_clock_begin(id_clock_pass)
call pass_var(ISS%area_shelf_h, G%domain)
call pass_var(ISS%h_shelf, G%domain)
call pass_var(ISS%mass_shelf, G%domain)
call pass_var(ISS%hmask, G%domain)
call pass_var(ISS%area_shelf_h, G%domain, complete=.false.)
call pass_var(ISS%h_shelf, G%domain, complete=.false.)
call pass_var(ISS%mass_shelf, G%domain, complete=.false.)
call pass_var(ISS%hmask, G%domain, complete=.false.)
call pass_var(G%bathyT, G%domain)
call cpu_clock_end(id_clock_pass)

Expand Down Expand Up @@ -2032,7 +2032,7 @@ subroutine change_thickness_using_precip(CS, ISS, G, US, fluxes, time_step, Time
do j=G%jsc,G%jec ; do i=G%isc,G%iec
if ((ISS%hmask(i,j) == 1) .or. (ISS%hmask(i,j) == 2)) then

if (-fluxes%shelf_sfc_mass_flux(i,j) * time_step < ISS%h_shelf(i,j)) then
if (-fluxes%shelf_sfc_mass_flux(i,j) * time_step * I_rho_ice < ISS%h_shelf(i,j)) then
ISS%h_shelf(i,j) = ISS%h_shelf(i,j) + fluxes%shelf_sfc_mass_flux(i,j) * time_step * I_rho_ice
else
! the ice is about to ablate, so set thickness, area, and mask to zero
Expand Down Expand Up @@ -2101,10 +2101,10 @@ subroutine update_shelf_mass(G, US, CS, ISS, Time)
CS%min_thickness_simple_calve, halo=0)
endif

call pass_var(ISS%area_shelf_h, G%domain)
call pass_var(ISS%h_shelf, G%domain)
call pass_var(ISS%hmask, G%domain)
call pass_var(ISS%mass_shelf, G%domain)
call pass_var(ISS%area_shelf_h, G%domain, complete=.false.)
call pass_var(ISS%h_shelf, G%domain, complete=.false.)
call pass_var(ISS%hmask, G%domain, complete=.false.)
call pass_var(ISS%mass_shelf, G%domain, complete=.true.)

end subroutine update_shelf_mass

Expand Down
142 changes: 71 additions & 71 deletions src/ice_shelf/MOM_ice_shelf_dynamics.F90
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ module MOM_ice_shelf_dynamics
use MOM_unit_scaling, only : unit_scale_type, unit_scaling_init
!MJH use MOM_ice_shelf_initialize, only : initialize_ice_shelf_boundary
use MOM_ice_shelf_state, only : ice_shelf_state
use MOM_coms, only : reproducing_sum, sum_across_PEs, max_across_PEs, min_across_PEs
use MOM_coms, only : reproducing_sum, max_across_PEs, min_across_PEs
use MOM_checksums, only : hchksum, qchksum
use MOM_ice_shelf_initialize, only : initialize_ice_shelf_boundary_channel,initialize_ice_flow_from_file
use MOM_ice_shelf_initialize, only : initialize_ice_shelf_boundary_from_file,initialize_ice_C_basal_friction
Expand Down Expand Up @@ -551,20 +551,20 @@ subroutine initialize_ice_shelf_dyn(param_file, Time, ISS, CS, G, US, diag, new_
enddo ; enddo
endif

call pass_var(CS%OD_av,G%domain)
call pass_var(CS%ground_frac,G%domain)
call pass_var(CS%ice_visc,G%domain)
call pass_var(CS%basal_traction, G%domain)
call pass_var(CS%AGlen_visc, G%domain)
call pass_var(CS%bed_elev, G%domain)
call pass_var(CS%C_basal_friction, G%domain)
call pass_var(CS%h_bdry_val, G%domain)
call pass_var(CS%thickness_bdry_val, G%domain)
call pass_var(CS%OD_av,G%domain, complete=.false.)
call pass_var(CS%ground_frac,G%domain, complete=.false.)
call pass_var(CS%ice_visc,G%domain, complete=.false.)
call pass_var(CS%basal_traction, G%domain, complete=.false.)
call pass_var(CS%AGlen_visc, G%domain, complete=.false.)
call pass_var(CS%bed_elev, G%domain, complete=.false.)
call pass_var(CS%C_basal_friction, G%domain, complete=.false.)
call pass_var(CS%h_bdry_val, G%domain, complete=.false.)
call pass_var(CS%thickness_bdry_val, G%domain, complete=.true.)
if (trim(CS%ice_viscosity_compute) == "MODEL_QUADRATURE") call pass_var(CS%Ee,G%domain)

call pass_vector(CS%u_shelf, CS%v_shelf, G%domain, TO_ALL, BGRID_NE)
call pass_vector(CS%u_bdry_val, CS%v_bdry_val, G%domain, TO_ALL, BGRID_NE)
call pass_vector(CS%u_face_mask_bdry, CS%v_face_mask_bdry, G%domain, TO_ALL, BGRID_NE)
call pass_vector(CS%u_shelf, CS%v_shelf, G%domain, TO_ALL, BGRID_NE, complete=.false.)
call pass_vector(CS%u_bdry_val, CS%v_bdry_val, G%domain, TO_ALL, BGRID_NE, complete=.false.)
call pass_vector(CS%u_face_mask_bdry, CS%v_face_mask_bdry, G%domain, TO_ALL, BGRID_NE, complete=.true.)
call update_velocity_masks(CS, G, ISS%hmask, CS%umask, CS%vmask, CS%u_face_mask, CS%v_face_mask)
endif

Expand Down Expand Up @@ -597,28 +597,28 @@ subroutine initialize_ice_shelf_dyn(param_file, Time, ISS, CS, G, US, diag, new_
! initialize basal friction coefficients
if (new_sim) then
call initialize_ice_C_basal_friction(CS%C_basal_friction, G, US, param_file)
call pass_var(CS%C_basal_friction, G%domain)
call pass_var(CS%C_basal_friction, G%domain, complete=.false.)

! initialize ice-stiffness AGlen
call initialize_ice_AGlen(CS%AGlen_visc, G, US, param_file)
call pass_var(CS%AGlen_visc, G%domain)
call pass_var(CS%AGlen_visc, G%domain, complete=.false.)

!initialize boundary conditions
call initialize_ice_shelf_boundary_from_file(CS%u_face_mask_bdry, CS%v_face_mask_bdry, &
CS%u_bdry_val, CS%v_bdry_val, CS%umask, CS%vmask, CS%h_bdry_val, &
CS%thickness_bdry_val, ISS%hmask, ISS%h_shelf, G, US, param_file )
call pass_var(ISS%hmask, G%domain)
call pass_var(CS%h_bdry_val, G%domain)
call pass_var(CS%thickness_bdry_val, G%domain)
call pass_vector(CS%u_bdry_val, CS%v_bdry_val, G%domain, TO_ALL, BGRID_NE)
call pass_vector(CS%u_face_mask_bdry, CS%v_face_mask_bdry, G%domain, TO_ALL, BGRID_NE)
call pass_var(ISS%hmask, G%domain, complete=.false.)
call pass_var(CS%h_bdry_val, G%domain, complete=.false.)
call pass_var(CS%thickness_bdry_val, G%domain, complete=.true.)
call pass_vector(CS%u_bdry_val, CS%v_bdry_val, G%domain, TO_ALL, BGRID_NE, complete=.false.)
call pass_vector(CS%u_face_mask_bdry, CS%v_face_mask_bdry, G%domain, TO_ALL, BGRID_NE, complete=.false.)

!initialize ice flow characteristic (velocities, bed elevation under the grounded part, etc) from file
call initialize_ice_flow_from_file(CS%bed_elev,CS%u_shelf, CS%v_shelf, CS%ground_frac, &
G, US, param_file)
call pass_vector(CS%u_shelf, CS%v_shelf, G%domain, TO_ALL, BGRID_NE)
call pass_var(CS%ground_frac, G%domain)
call pass_var(CS%bed_elev, G%domain)
call pass_vector(CS%u_shelf, CS%v_shelf, G%domain, TO_ALL, BGRID_NE, complete=.true.)
call pass_var(CS%ground_frac, G%domain, complete=.false.)
call pass_var(CS%bed_elev, G%domain, complete=.true.)
call update_velocity_masks(CS, G, ISS%hmask, CS%umask, CS%vmask, CS%u_face_mask, CS%v_face_mask)
endif
! Register diagnostics.
Expand Down Expand Up @@ -775,11 +775,11 @@ subroutine update_ice_shelf(CS, ISS, G, US, time_step, Time, ocean_mass, coupled
if (CS%id_v_shelf > 0) call post_data(CS%id_v_shelf, CS%v_shelf, CS%diag)
! if (CS%id_t_shelf > 0) call post_data(CS%id_t_shelf, CS%t_shelf, CS%diag)
if (CS%id_taudx_shelf > 0) then
taud_x(:,:) = CS%taudx_shelf(:,:)*G%IareaT(:,:)
taud_x(:,:) = CS%taudx_shelf(:,:)*G%IareaBu(:,:)
call post_data(CS%id_taudx_shelf, taud_x, CS%diag)
endif
if (CS%id_taudy_shelf > 0) then
taud_y(:,:) = CS%taudy_shelf(:,:)*G%IareaT(:,:)
taud_y(:,:) = CS%taudy_shelf(:,:)*G%IareaBu(:,:)
call post_data(CS%id_taudy_shelf, taud_y, CS%diag)
endif
if (CS%id_ground_frac > 0) call post_data(CS%id_ground_frac, CS%ground_frac, CS%diag)
Expand Down Expand Up @@ -990,7 +990,7 @@ subroutine ice_shelf_solve_outer(CS, ISS, G, US, u_shlf, v_shlf, taudx, taudy, i
endif
enddo ; enddo

call pass_var(float_cond, G%Domain)
call pass_var(float_cond, G%Domain, complete=.false.)

call bilinear_shape_functions_subgrid(Phisub, nsub)

Expand All @@ -1004,9 +1004,9 @@ subroutine ice_shelf_solve_outer(CS, ISS, G, US, u_shlf, v_shlf, taudx, taudy, i
enddo ; enddo

call calc_shelf_visc(CS, ISS, G, US, u_shlf, v_shlf)
call pass_var(CS%ice_visc, G%domain)
call pass_var(CS%ice_visc, G%domain, complete=.false.)
call calc_shelf_taub(CS, ISS, G, US, u_shlf, v_shlf)
call pass_var(CS%basal_traction, G%domain)
call pass_var(CS%basal_traction, G%domain, complete=.true.)
if (trim(CS%ice_viscosity_compute) == "MODEL_QUADRATURE") call pass_var(CS%Ee,G%domain)

! This makes sure basal stress is only applied when it is supposed to be
Expand Down Expand Up @@ -1079,9 +1079,9 @@ subroutine ice_shelf_solve_outer(CS, ISS, G, US, u_shlf, v_shlf, taudx, taudy, i
call MOM_mesg(mesg, 5)

call calc_shelf_visc(CS, ISS, G, US, u_shlf, v_shlf)
call pass_var(CS%ice_visc, G%domain)
call pass_var(CS%ice_visc, G%domain, complete=.false.)
call calc_shelf_taub(CS, ISS, G, US, u_shlf, v_shlf)
call pass_var(CS%basal_traction, G%domain)
call pass_var(CS%basal_traction, G%domain, complete=.true.)
if (trim(CS%ice_viscosity_compute) == "MODEL_QUADRATURE") call pass_var(CS%Ee,G%domain)

! makes sure basal stress is only applied when it is supposed to be
Expand Down Expand Up @@ -1272,18 +1272,18 @@ subroutine ice_shelf_solve_inner(CS, ISS, G, US, u_shlf, v_shlf, taudx, taudy, H
RHSu(:,:) = taudx(:,:) !- ubd(:,:)
RHSv(:,:) = taudy(:,:) !- vbd(:,:)

call pass_vector(RHSu, RHSv, G%domain, TO_ALL, BGRID_NE)
call pass_vector(RHSu, RHSv, G%domain, TO_ALL, BGRID_NE, complete=.false.)

call matrix_diagonal(CS, G, US, float_cond, H_node, CS%ice_visc, CS%basal_traction, &
hmask, rhoi_rhow, Phisub, DIAGu, DIAGv)

call pass_vector(DIAGu, DIAGv, G%domain, TO_ALL, BGRID_NE)
call pass_vector(DIAGu, DIAGv, G%domain, TO_ALL, BGRID_NE, complete=.false.)

call CG_action(CS, Au, Av, u_shlf, v_shlf, Phi, Phisub, CS%umask, CS%vmask, hmask, &
H_node, CS%ice_visc, float_cond, CS%bed_elev, CS%basal_traction, &
G, US, isc-1, iec+1, jsc-1, jec+1, rhoi_rhow)

call pass_vector(Au, Av, G%domain, TO_ALL, BGRID_NE)
call pass_vector(Au, Av, G%domain, TO_ALL, BGRID_NE, complete=.true.)

Ru(:,:) = (RHSu(:,:) - Au(:,:))
Rv(:,:) = (RHSv(:,:) - Av(:,:))
Expand Down Expand Up @@ -1345,12 +1345,12 @@ subroutine ice_shelf_solve_inner(CS, ISS, G, US, u_shlf, v_shlf, taudx, taudy, H

do j=jscq,jecq ; do i=iscq,iecq
if (CS%umask(I,J) == 1) then
sum_vec(I,J) = resid_scale * Zu(I,J) * Ru(I,J)
sum_vec_2(I,J) = resid_scale * Du(I,J) * Au(I,J)
sum_vec(I,J) = resid_scale * (Zu(I,J) * Ru(I,J))
sum_vec_2(I,J) = resid_scale * (Du(I,J) * Au(I,J))
endif
if (CS%vmask(I,J) == 1) then
sum_vec(I,J) = sum_vec(I,J) + resid_scale * Zv(I,J) * Rv(I,J)
sum_vec_2(I,J) = sum_vec_2(I,J) + resid_scale * Dv(I,J) * Av(I,J)
sum_vec(I,J) = sum_vec(I,J) + resid_scale * (Zv(I,J) * Rv(I,J))
sum_vec_2(I,J) = sum_vec_2(I,J) + resid_scale * (Dv(I,J) * Av(I,J))
endif
enddo ; enddo

Expand Down Expand Up @@ -1400,12 +1400,12 @@ subroutine ice_shelf_solve_inner(CS, ISS, G, US, u_shlf, v_shlf, taudx, taudy, H

do j=jscq,jecq ; do i=iscq,iecq
if (CS%umask(I,J) == 1) then
sum_vec(I,J) = resid_scale * Zu(I,J) * Ru(I,J)
sum_vec_2(I,J) = resid_scale * Zu_old(I,J) * Ru_old(I,J)
sum_vec(I,J) = resid_scale * (Zu(I,J) * Ru(I,J))
sum_vec_2(I,J) = resid_scale * (Zu_old(I,J) * Ru_old(I,J))
endif
if (CS%vmask(I,J) == 1) then
sum_vec(I,J) = sum_vec(I,J) + resid_scale * Zv(I,J) * Rv(I,J)
sum_vec_2(I,J) = sum_vec_2(I,J) + resid_scale * Zv_old(I,J) * Rv_old(I,J)
sum_vec(I,J) = sum_vec(I,J) + resid_scale * (Zv(I,J) * Rv(I,J))
sum_vec_2(I,J) = sum_vec_2(I,J) + resid_scale * (Zv_old(I,J) * Rv_old(I,J))
endif
enddo ; enddo

Expand Down Expand Up @@ -1443,9 +1443,9 @@ subroutine ice_shelf_solve_inner(CS, ISS, G, US, u_shlf, v_shlf, taudx, taudy, H

if (cg_halo == 0) then
! pass vectors
call pass_vector(Du, Dv, G%domain, TO_ALL, BGRID_NE)
call pass_vector(u_shlf, v_shlf, G%domain, TO_ALL, BGRID_NE)
call pass_vector(Ru, Rv, G%domain, TO_ALL, BGRID_NE)
call pass_vector(Du, Dv, G%domain, TO_ALL, BGRID_NE, complete=.false.)
call pass_vector(u_shlf, v_shlf, G%domain, TO_ALL, BGRID_NE, complete=.false.)
call pass_vector(Ru, Rv, G%domain, TO_ALL, BGRID_NE, complete=.true.)
cg_halo = 3
endif

Expand Down Expand Up @@ -2262,15 +2262,15 @@ subroutine CG_action(CS, uret, vret, u_shlf, v_shlf, Phi, Phisub, umask, vmask,

do iq=1,2 ; do jq=1,2

uq = u_shlf(I-1,J-1) * xquad(3-iq) * xquad(3-jq) + &
u_shlf(I,J-1) * xquad(iq) * xquad(3-jq) + &
u_shlf(I-1,J) * xquad(3-iq) * xquad(jq) + &
u_shlf(I,J) * xquad(iq) * xquad(jq)
uq = u_shlf(I-1,J-1) * (xquad(3-iq) * xquad(3-jq)) + &
u_shlf(I,J-1) * (xquad(iq) * xquad(3-jq)) + &
u_shlf(I-1,J) * (xquad(3-iq) * xquad(jq)) + &
u_shlf(I,J) * (xquad(iq) * xquad(jq))

vq = v_shlf(I-1,J-1) * xquad(3-iq) * xquad(3-jq) + &
v_shlf(I,J-1) * xquad(iq) * xquad(3-jq) + &
v_shlf(I-1,J) * xquad(3-iq) * xquad(jq) + &
v_shlf(I,J) * xquad(iq) * xquad(jq)
vq = v_shlf(I-1,J-1) * (xquad(3-iq) * xquad(3-jq)) + &
v_shlf(I,J-1) * (xquad(iq) * xquad(3-jq)) + &
v_shlf(I-1,J) * (xquad(3-iq) * xquad(jq)) + &
v_shlf(I,J) * (xquad(iq) * xquad(jq))

ux = u_shlf(I-1,J-1) * Phi(1,2*(jq-1)+iq,i,j) + &
u_shlf(I,J-1) * Phi(3,2*(jq-1)+iq,i,j) + &
Expand All @@ -2287,7 +2287,7 @@ subroutine CG_action(CS, uret, vret, u_shlf, v_shlf, Phi, Phisub, umask, vmask,
u_shlf(I-1,J) * Phi(6,2*(jq-1)+iq,i,j) + &
u_shlf(I,J) * Phi(8,2*(jq-1)+iq,i,j)

vy = v_shlf(I-1,j-1) * Phi(2,2*(jq-1)+iq,i,j) + &
vy = v_shlf(I-1,J-1) * Phi(2,2*(jq-1)+iq,i,j) + &
v_shlf(I,J-1) * Phi(4,2*(jq-1)+iq,i,j) + &
v_shlf(I-1,J) * Phi(6,2*(jq-1)+iq,i,j) + &
v_shlf(I,J) * Phi(8,2*(jq-1)+iq,i,j)
Expand All @@ -2306,9 +2306,9 @@ subroutine CG_action(CS, uret, vret, u_shlf, v_shlf, Phi, Phisub, umask, vmask,
ilq = 1 ; if (iq == iphi) ilq = 2
jlq = 1 ; if (jq == jphi) jlq = 2
if (umask(Itgt,Jtgt) == 1) uret(Itgt,Jtgt) = uret(Itgt,Jtgt) + &
0.25 * basal_trac(i,j) * uq * xquad(ilq) * xquad(jlq)
0.25 * basal_trac(i,j) * uq * (xquad(ilq) * xquad(jlq))
if (vmask(Itgt,Jtgt) == 1) vret(Itgt,Jtgt) = vret(Itgt,Jtgt) + &
0.25 * basal_trac(i,j) * vq * xquad(ilq) * xquad(jlq)
0.25 * basal_trac(i,j) * vq * (xquad(ilq) * xquad(jlq))
endif
enddo ; enddo
enddo ; enddo
Expand Down Expand Up @@ -2600,15 +2600,15 @@ subroutine apply_boundary_values(CS, ISS, G, US, time, Phisub, H_node, ice_visc,

do iq=1,2 ; do jq=1,2

uq = CS%u_bdry_val(I-1,J-1) * xquad(3-iq) * xquad(3-jq) + &
CS%u_bdry_val(I,J-1) * xquad(iq) * xquad(3-jq) + &
CS%u_bdry_val(I-1,J) * xquad(3-iq) * xquad(jq) + &
CS%u_bdry_val(I,J) * xquad(iq) * xquad(jq)
uq = CS%u_bdry_val(I-1,J-1) * (xquad(3-iq) * xquad(3-jq)) + &
CS%u_bdry_val(I,J-1) * (xquad(iq) * xquad(3-jq)) + &
CS%u_bdry_val(I-1,J) * (xquad(3-iq) * xquad(jq)) + &
CS%u_bdry_val(I,J) * (xquad(iq) * xquad(jq))

vq = CS%v_bdry_val(I-1,J-1) * xquad(3-iq) * xquad(3-jq) + &
CS%v_bdry_val(I,J-1) * xquad(iq) * xquad(3-jq) + &
CS%v_bdry_val(I-1,J) * xquad(3-iq) * xquad(jq) + &
CS%v_bdry_val(I,J) * xquad(iq) * xquad(jq)
vq = CS%v_bdry_val(I-1,J-1) * (xquad(3-iq) * xquad(3-jq)) + &
CS%v_bdry_val(I,J-1) * (xquad(iq) * xquad(3-jq)) + &
CS%v_bdry_val(I-1,J) * (xquad(3-iq) * xquad(jq)) + &
CS%v_bdry_val(I,J) * (xquad(iq) * xquad(jq))

ux = CS%u_bdry_val(I-1,J-1) * Phi(1,2*(jq-1)+iq) + &
CS%u_bdry_val(I,J-1) * Phi(3,2*(jq-1)+iq) + &
Expand Down Expand Up @@ -2643,7 +2643,7 @@ subroutine apply_boundary_values(CS, ISS, G, US, time, Phisub, H_node, ice_visc,

if (float_cond(i,j) == 0) then
u_bdry_contr(Itgt,Jtgt) = u_bdry_contr(Itgt,Jtgt) + &
0.25 * basal_trac(i,j) * uq * xquad(ilq) * xquad(jlq)
0.25 * basal_trac(i,j) * uq * (xquad(ilq) * xquad(jlq))
endif
endif

Expand All @@ -2654,7 +2654,7 @@ subroutine apply_boundary_values(CS, ISS, G, US, time, Phisub, H_node, ice_visc,

if (float_cond(i,j) == 0) then
v_bdry_contr(Itgt,Jtgt) = v_bdry_contr(Itgt,Jtgt) + &
0.25 * basal_trac(i,j) * vq * xquad(ilq) * xquad(jlq)
0.25 * basal_trac(i,j) * vq * (xquad(ilq) * xquad(jlq))
endif
endif
enddo ; enddo
Expand Down Expand Up @@ -2916,8 +2916,8 @@ subroutine update_OD_ffrac(CS, G, US, ocean_mass, find_avg)
CS%OD_rt(i,j) = 0.0 ; CS%ground_frac_rt(i,j) = 0.0
enddo ; enddo

call pass_var(CS%ground_frac, G%domain)
call pass_var(CS%OD_av, G%domain)
call pass_var(CS%ground_frac, G%domain, complete=.false.)
call pass_var(CS%OD_av, G%domain, complete=.true.)
endif

end subroutine update_OD_ffrac
Expand Down Expand Up @@ -2989,8 +2989,8 @@ subroutine bilinear_shape_functions (X, Y, Phi, area)

a = -X(1)*(1-yquad(qpoint)) + X(2)*(1-yquad(qpoint)) - X(3)*yquad(qpoint) + X(4)*yquad(qpoint) ! d(x)/d(x*)
b = -Y(1)*(1-yquad(qpoint)) + Y(2)*(1-yquad(qpoint)) - Y(3)*yquad(qpoint) + Y(4)*yquad(qpoint) ! d(y)/d(x*)
c = -X(1)*(1-xquad(qpoint)) - X(2)*(xquad(qpoint)) + X(3)*(1-xquad(qpoint)) + X(4)*(xquad(qpoint)) ! d(x)/d(y*)
d = -Y(1)*(1-xquad(qpoint)) - Y(2)*(xquad(qpoint)) + Y(3)*(1-xquad(qpoint)) + Y(4)*(xquad(qpoint)) ! d(y)/d(y*)
c = -X(1)*(1-xquad(qpoint)) - X(2)*xquad(qpoint) + X(3)*(1-xquad(qpoint)) + X(4)*xquad(qpoint) ! d(x)/d(y*)
d = -Y(1)*(1-xquad(qpoint)) - Y(2)*xquad(qpoint) + Y(3)*(1-xquad(qpoint)) + Y(4)*xquad(qpoint) ! d(y)/d(y*)

do node=1,4

Expand Down Expand Up @@ -3480,8 +3480,8 @@ subroutine ice_shelf_temp(CS, ISS, G, US, time_step, melt_rate, Time)
endif
enddo ; enddo

call pass_var(CS%t_shelf, G%domain)
call pass_var(CS%tmask, G%domain)
call pass_var(CS%t_shelf, G%domain, complete=.false.)
call pass_var(CS%tmask, G%domain, complete=.true.)

if (CS%debug) then
call hchksum(CS%t_shelf, "temp after front", G%HI, haloshift=3, scale=US%C_to_degC)
Expand Down

0 comments on commit 60bf649

Please sign in to comment.