Skip to content

Commit

Permalink
Making barotropic fix look symmetric.
Browse files Browse the repository at this point in the history
  • Loading branch information
kshedstrom committed Jan 25, 2025
1 parent 56dc95e commit ec17094
Show file tree
Hide file tree
Showing 2 changed files with 45 additions and 2 deletions.
3 changes: 1 addition & 2 deletions src/core/MOM.F90
Original file line number Diff line number Diff line change
Expand Up @@ -113,8 +113,7 @@ module MOM
use MOM_open_boundary, only : ocean_OBC_type, OBC_registry_type
use MOM_open_boundary, only : register_temp_salt_segments, update_segment_tracer_reservoirs
use MOM_open_boundary, only : open_boundary_register_restarts, remap_OBC_fields
use MOM_open_boundary, only : open_boundary_setup_vert, update_OBC_segment_data
use MOM_open_boundary, only : initialize_segment_data
use MOM_open_boundary, only : open_boundary_setup_vert
use MOM_open_boundary, only : rotate_OBC_config, rotate_OBC_init
use MOM_porous_barriers, only : porous_widths_layer, porous_widths_interface, porous_barriers_init
use MOM_porous_barriers, only : porous_barrier_CS
Expand Down
44 changes: 44 additions & 0 deletions src/core/MOM_open_boundary.F90
Original file line number Diff line number Diff line change
Expand Up @@ -6189,6 +6189,50 @@ subroutine rotate_OBC_segment_data(segment_in, segment, turns)
call rotate_array(segment_in%nudged_tangential_vel, turns, segment%nudged_tangential_vel)
if (allocated(segment_in%nudged_tangential_grad)) &
call rotate_array(segment_in%nudged_tangential_grad, turns, segment%nudged_tangential_grad)
if (associated(segment_in%tr_Reg)) then
do n = 1, segment_in%tr_Reg%ntseg
call rotate_array(segment_in%tr_Reg%tr(n)%tres, turns, segment%tr_Reg%tr(n)%tres)
! Testing this to see if it works for contant tres values. Probably wrong otherwise.
segment%tr_Reg%Tr(n)%is_initialized=.true.
enddo
endif

! Only doing this here for 1 turns, get flow directed in the opposite direction.
! Currents that are now E_W were N_S and the turns should change their sign.
if (turns == 1 .and. segment%is_E_or_W) then
if (allocated(segment_in%normal_vel)) &
segment%normal_vel(:,:,:) = - segment%normal_vel(:,:,:)
if (allocated(segment_in%normal_trans)) &
segment%normal_trans(:,:,:) = - segment%normal_trans(:,:,:)
if (allocated(segment_in%normal_vel_bt)) &
segment%normal_vel_bt(:,:) = - segment%normal_vel_bt(:,:)
if (allocated(segment_in%tangential_vel)) &
segment%tangential_vel(:,:,:) = - segment%tangential_vel(:,:,:)
if (allocated(segment_in%tangential_grad)) &
segment%tangential_grad(:,:,:) = - segment%tangential_grad(:,:,:)
if (allocated(segment_in%grad_normal)) &
segment%grad_normal(:,:,:) = - segment%grad_normal(:,:,:)
if (allocated(segment_in%grad_tan)) &
segment%grad_tan(:,:,:) = - segment%grad_tan(:,:,:)
if (allocated(segment_in%grad_gradient)) &
segment%grad_gradient(:,:,:) = - segment%grad_gradient(:,:,:)
if (allocated(segment%rx_norm_rad)) &
segment%rx_norm_rad(:,:,:) = - segment%rx_norm_rad(:,:,:)
if (allocated(segment%ry_norm_rad)) &
segment%ry_norm_rad(:,:,:) = - segment%ry_norm_rad(:,:,:)
if (allocated(segment%rx_norm_obl)) &
segment%rx_norm_obl(:,:,:) = - segment%rx_norm_obl(:,:,:)
if (allocated(segment%ry_norm_obl)) &
segment%ry_norm_obl(:,:,:) = - segment%ry_norm_obl(:,:,:)
if (allocated(segment_in%cff_normal)) &
segment%cff_normal(:,:,:) = - segment%cff_normal(:,:,:)
if (allocated(segment_in%nudged_normal_vel)) &
segment%nudged_normal_vel(:,:,:) = - segment%nudged_normal_vel(:,:,:)
if (allocated(segment_in%nudged_tangential_vel)) &
segment%nudged_tangential_vel(:,:,:) = - segment%nudged_tangential_vel(:,:,:)
if (allocated(segment_in%nudged_tangential_grad)) &
segment%nudged_tangential_grad(:,:,:) = - segment%nudged_tangential_grad(:,:,:)
endif

segment%temp_segment_data_exists = segment_in%temp_segment_data_exists
segment%salt_segment_data_exists = segment_in%salt_segment_data_exists
Expand Down

0 comments on commit ec17094

Please sign in to comment.