From ec17094794ffbdc8de0e2036f6e1dcf76e39d83f Mon Sep 17 00:00:00 2001 From: Kate Hedstrom Date: Wed, 4 Dec 2024 12:37:57 -0900 Subject: [PATCH] Making barotropic fix look symmetric. --- src/core/MOM.F90 | 3 +-- src/core/MOM_open_boundary.F90 | 44 ++++++++++++++++++++++++++++++++++ 2 files changed, 45 insertions(+), 2 deletions(-) diff --git a/src/core/MOM.F90 b/src/core/MOM.F90 index 9f6745583e..3ab558361f 100644 --- a/src/core/MOM.F90 +++ b/src/core/MOM.F90 @@ -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 diff --git a/src/core/MOM_open_boundary.F90 b/src/core/MOM_open_boundary.F90 index ad9ad04280..c485a37da6 100644 --- a/src/core/MOM_open_boundary.F90 +++ b/src/core/MOM_open_boundary.F90 @@ -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