Skip to content

Commit

Permalink
Added OBC for flow parallel to boundary.
Browse files Browse the repository at this point in the history
  • Loading branch information
kshedstrom committed Jun 21, 2016
1 parent 8e10ec5 commit 5f222f0
Show file tree
Hide file tree
Showing 3 changed files with 34 additions and 6 deletions.
4 changes: 2 additions & 2 deletions src/core/MOM_continuity.F90
Original file line number Diff line number Diff line change
Expand Up @@ -79,8 +79,8 @@ subroutine continuity(u, v, hin, h, uh, vh, dt, G, GV, CS, uhbt, vhbt, OBC, &
uhbt_aux, vhbt_aux, u_cor_aux, v_cor_aux, BT_cont)
type(ocean_grid_type), intent(inout) :: G
type(verticalGrid_type), intent(in) :: GV
real, dimension(SZIB_(G),SZJ_(G),SZK_(G)), intent(in) :: u
real, dimension(SZI_(G),SZJB_(G),SZK_(G)), intent(in) :: v
real, dimension(SZIB_(G),SZJ_(G),SZK_(G)), intent(inout) :: u
real, dimension(SZI_(G),SZJB_(G),SZK_(G)), intent(inout) :: v
real, dimension(SZI_(G),SZJ_(G),SZK_(G)), intent(in) :: hin
real, dimension(SZI_(G),SZJ_(G),SZK_(G)), intent(inout) :: h
real, dimension(SZIB_(G),SZJ_(G),SZK_(G)), intent(out) :: uh
Expand Down
32 changes: 30 additions & 2 deletions src/core/MOM_continuity_PPM.F90
Original file line number Diff line number Diff line change
Expand Up @@ -110,8 +110,8 @@ subroutine continuity_PPM(u, v, hin, h, uh, vh, dt, G, GV, CS, uhbt, vhbt, OBC,
uhbt_aux, vhbt_aux, u_cor_aux, v_cor_aux, BT_cont)
type(ocean_grid_type), intent(inout) :: G
type(continuity_PPM_CS), pointer :: CS
real, dimension(SZIB_(G),SZJ_(G),SZK_(G)), intent(in) :: u
real, dimension(SZI_(G),SZJB_(G),SZK_(G)), intent(in) :: v
real, dimension(SZIB_(G),SZJ_(G),SZK_(G)), intent(inout) :: u
real, dimension(SZI_(G),SZJB_(G),SZK_(G)), intent(inout) :: v
real, dimension(SZI_(G),SZJ_(G),SZK_(G)), intent(in) :: hin
real, dimension(SZI_(G),SZJ_(G),SZK_(G)), intent(inout) :: h
real, dimension(SZIB_(G),SZJ_(G),SZK_(G)), intent(out) :: uh
Expand Down Expand Up @@ -236,6 +236,14 @@ subroutine continuity_PPM(u, v, hin, h, uh, vh, dt, G, GV, CS, uhbt, vhbt, OBC,
if (OBC%OBC_kind_u(I,j) == OBC_FLATHER .and. (OBC%OBC_direction_u(I,j) == OBC_DIRECTION_W)) &
h(i,j,k) = h_input(i+1,j,k)
enddo
enddo
do J=LB%jsh-1,LB%jeh
do i=LB%ish-1,LB%ieh+1
if (OBC%OBC_kind_v(i,J) == OBC_FLATHER .and. (OBC%OBC_direction_v(i,J) == OBC_DIRECTION_E)) &
v(i,J,k) = v(i-1,J,k)
if (OBC%OBC_kind_v(i,J) == OBC_FLATHER .and. (OBC%OBC_direction_v(i,J) == OBC_DIRECTION_W)) &
v(i,J,k) = v(i+1,J,k)
enddo
enddo ; enddo
endif
LB%ish = G%isc ; LB%ieh = G%iec ; LB%jsh = G%jsc ; LB%jeh = G%jec
Expand Down Expand Up @@ -264,6 +272,12 @@ subroutine continuity_PPM(u, v, hin, h, uh, vh, dt, G, GV, CS, uhbt, vhbt, OBC,
if (OBC%OBC_kind_v(i,J) == OBC_FLATHER .and. (OBC%OBC_direction_v(i,J) == OBC_DIRECTION_S)) &
h(i,j,k) = h_input(i,j+1,k)
enddo ; enddo
do j=LB%jsh-1,LB%jeh+1 ; do I=LB%ish-1,LB%ieh
if (OBC%OBC_kind_u(I,j) == OBC_FLATHER .and. (OBC%OBC_direction_u(I,j) == OBC_DIRECTION_N)) &
u(I,j,k) = u(I,j-1,k)
if (OBC%OBC_kind_u(I,j) == OBC_FLATHER .and. (OBC%OBC_direction_u(I,j) == OBC_DIRECTION_S)) &
u(I,j,k) = u(I,j+1,k)
enddo ; enddo
enddo
endif
else ! .not. x_first
Expand Down Expand Up @@ -291,6 +305,12 @@ subroutine continuity_PPM(u, v, hin, h, uh, vh, dt, G, GV, CS, uhbt, vhbt, OBC,
if (OBC%OBC_kind_v(i,J) == OBC_FLATHER .and. (OBC%OBC_direction_v(i,J) == OBC_DIRECTION_S)) &
h(i,j,k) = h_input(i,j+1,k)
enddo ; enddo
do j=LB%jsh-1,LB%jeh+1 ; do I=LB%ish-1,LB%ieh
if (OBC%OBC_kind_u(I,j) == OBC_FLATHER .and. (OBC%OBC_direction_u(I,j) == OBC_DIRECTION_N)) &
u(I,j,k) = u(I,j-1,k)
if (OBC%OBC_kind_u(I,j) == OBC_FLATHER .and. (OBC%OBC_direction_u(I,j) == OBC_DIRECTION_S)) &
u(I,j,k) = u(I,j+1,k)
enddo ; enddo
enddo
endif

Expand Down Expand Up @@ -319,6 +339,14 @@ subroutine continuity_PPM(u, v, hin, h, uh, vh, dt, G, GV, CS, uhbt, vhbt, OBC,
if (OBC%OBC_kind_u(I,j) == OBC_FLATHER .and. (OBC%OBC_direction_u(I,j) == OBC_DIRECTION_W)) &
h(i,j,k) = h_input(i+1,j,k)
enddo
enddo
do J=LB%jsh-1,LB%jeh
do i=LB%ish-1,LB%ieh+1
if (OBC%OBC_kind_v(i,J) == OBC_FLATHER .and. (OBC%OBC_direction_v(i,J) == OBC_DIRECTION_E)) &
v(i,J,k) = v(i-1,J,k)
if (OBC%OBC_kind_v(i,J) == OBC_FLATHER .and. (OBC%OBC_direction_v(i,J) == OBC_DIRECTION_W)) &
v(i,J,k) = v(i+1,J,k)
enddo
enddo ; enddo
endif
endif
Expand Down
4 changes: 2 additions & 2 deletions src/core/MOM_dynamics_legacy_split.F90
Original file line number Diff line number Diff line change
Expand Up @@ -1052,8 +1052,8 @@ end subroutine step_MOM_dyn_legacy_split
subroutine adjustments_dyn_legacy_split(u, v, h, dt, G, GV, CS)
type(ocean_grid_type), intent(inout) :: G
type(verticalGrid_type), intent(in) :: GV
real, dimension(SZIB_(G),SZJ_(G),SZK_(G)), intent(in) :: u
real, dimension(SZI_(G),SZJB_(G),SZK_(G)), intent(in) :: v
real, dimension(SZIB_(G),SZJ_(G),SZK_(G)), intent(inout) :: u
real, dimension(SZI_(G),SZJB_(G),SZK_(G)), intent(inout) :: v
real, dimension(SZI_(G),SZJ_(G),SZK_(G)), intent(in) :: h
real, intent(in) :: dt
type(MOM_dyn_legacy_split_CS), pointer :: CS
Expand Down

0 comments on commit 5f222f0

Please sign in to comment.