@@ -6079,6 +6079,7 @@ subroutine rotate_OBC_init(OBC_in, G, GV, US, param_file, tv, restart_CS, OBC)
6079
6079
call rotate_OBC_segment_data(OBC_in% segment(l), OBC% segment(l), G% HI% turns)
6080
6080
enddo
6081
6081
6082
+ call setup_OBC_tracer_reservoirs(G, GV, OBC)
6082
6083
call open_boundary_init(G, GV, US, param_file, OBC, restart_CS)
6083
6084
end subroutine rotate_OBC_init
6084
6085
@@ -6119,7 +6120,6 @@ subroutine rotate_OBC_segment_data(segment_in, segment, turns)
6119
6120
segment% field(n)% name = ' Vphase'
6120
6121
case (' V' )
6121
6122
segment% field(n)% name = ' U'
6122
- segment% field(n)% buffer_dst(:,:,:) = - segment% field(n)% buffer_dst(:,:,:)
6123
6123
case (' Vamp' )
6124
6124
segment% field(n)% name = ' Uamp'
6125
6125
case (' Vphase' )
@@ -6211,12 +6211,47 @@ subroutine rotate_OBC_segment_data(segment_in, segment, turns)
6211
6211
call rotate_array(segment_in% nudged_tangential_grad, turns, segment% nudged_tangential_grad)
6212
6212
if (associated (segment_in% tr_Reg)) then
6213
6213
do n = 1 , segment_in% tr_Reg% ntseg
6214
+ call rotate_array(segment_in% tr_Reg% tr(n)% t, turns, segment% tr_Reg% tr(n)% t)
6214
6215
call rotate_array(segment_in% tr_Reg% tr(n)% tres, turns, segment% tr_Reg% tr(n)% tres)
6215
6216
! Testing this to see if it works for contant tres values. Probably wrong otherwise.
6216
6217
segment% tr_Reg% Tr(n)% is_initialized= .true.
6217
6218
enddo
6218
6219
endif
6219
6220
6221
+ do n = 1 , num_fields
6222
+ if ((segment% field(n)% name == ' U' .or. segment% field(n)% name == ' Uamp' ) .and. &
6223
+ modulo (turns, 2 ) /= 0 ) then
6224
+ segment% field(n)% buffer_dst(:,:,:) = - segment% field(n)% buffer_dst(:,:,:)
6225
+ if (segment% is_E_or_W) then
6226
+ segment% normal_trans(:,:,:) = - segment% normal_trans(:,:,:)
6227
+ segment% normal_vel(:,:,:) = - segment% normal_vel(:,:,:)
6228
+ segment% normal_vel_bt(:,:) = - segment% normal_vel_bt(:,:)
6229
+ if (allocated (segment% nudged_normal_vel)) &
6230
+ segment% nudged_normal_vel(:,:,:) = - segment% nudged_normal_vel(:,:,:)
6231
+ else
6232
+ if (allocated (segment% tangential_vel)) &
6233
+ segment% tangential_vel(:,:,:) = - segment% tangential_vel(:,:,:)
6234
+ if (allocated (segment% nudged_tangential_vel)) &
6235
+ segment% nudged_tangential_vel(:,:,:) = - segment% nudged_tangential_vel(:,:,:)
6236
+ endif
6237
+ elseif ((segment% field(n)% name == ' V' .or. segment% field(n)% name == ' Vamp' ) .and. &
6238
+ modulo (turns, 4 ) == 3 ) then
6239
+ segment% field(n)% buffer_dst(:,:,:) = - segment% field(n)% buffer_dst(:,:,:)
6240
+ if (segment% is_N_or_S) then
6241
+ segment% normal_trans(:,:,:) = - segment% normal_trans(:,:,:)
6242
+ segment% normal_vel(:,:,:) = - segment% normal_vel(:,:,:)
6243
+ segment% normal_vel_bt(:,:) = - segment% normal_vel_bt(:,:)
6244
+ if (allocated (segment% nudged_normal_vel)) &
6245
+ segment% nudged_normal_vel(:,:,:) = - segment% nudged_normal_vel(:,:,:)
6246
+ else
6247
+ if (allocated (segment% tangential_vel)) &
6248
+ segment% tangential_vel(:,:,:) = - segment% tangential_vel(:,:,:)
6249
+ if (allocated (segment% nudged_tangential_vel)) &
6250
+ segment% nudged_tangential_vel(:,:,:) = - segment% nudged_tangential_vel(:,:,:)
6251
+ endif
6252
+ endif
6253
+ enddo
6254
+
6220
6255
segment% temp_segment_data_exists = segment_in% temp_segment_data_exists
6221
6256
segment% salt_segment_data_exists = segment_in% salt_segment_data_exists
6222
6257
end subroutine rotate_OBC_segment_data
0 commit comments