<p><b>ringler@lanl.gov</b> 2011-05-05 10:12:29 -0600 (Thu, 05 May 2011)</p><p>add option to restore to user-specified T and S profiles in top level<br>
default of config_restoreTS = .false.<br>
default restoring times are 90 days for T and S<br>
</p><hr noshade><pre><font color="gray">Modified: branches/ocean_projects/imp_vert_mix_mrp/namelist.input.ocean
===================================================================
--- branches/ocean_projects/imp_vert_mix_mrp/namelist.input.ocean        2011-05-03 21:22:00 UTC (rev 813)
+++ branches/ocean_projects/imp_vert_mix_mrp/namelist.input.ocean        2011-05-05 16:12:29 UTC (rev 814)
@@ -64,3 +64,8 @@
config_positive_definite = .false.
config_monotonic = .false.
/
+&restore
+config_restoreTS = .false.
+config_restoreT_timescale = 90.0
+config_restoreS_timescale = 90.0
+/
Modified: branches/ocean_projects/imp_vert_mix_mrp/src/core_ocean/Registry
===================================================================
--- branches/ocean_projects/imp_vert_mix_mrp/src/core_ocean/Registry        2011-05-03 21:22:00 UTC (rev 813)
+++ branches/ocean_projects/imp_vert_mix_mrp/src/core_ocean/Registry        2011-05-05 16:12:29 UTC (rev 814)
@@ -44,6 +44,9 @@
namelist integer advection config_thickness_adv_order 2
namelist logical advection config_positive_definite false
namelist logical advection config_monotonic false
+namelist logical restore config_restoreTS false
+namelist real restore config_restoreT_timescale 90.0
+namelist real restore config_restoreS_timescale 90.0
#
# dim type name_in_file name_in_code
@@ -146,6 +149,8 @@
var persistent integer boundaryVertex ( nVertLevels nVertices ) 0 iro boundaryVertex mesh - -
var persistent integer boundaryCell ( nVertLevels nCells ) 0 iro boundaryCell mesh - -
var persistent real u_src ( nVertLevels nEdges ) 0 iro u_src mesh - -
+var persistent real temperatureRestore ( nCells ) 0 iro temperatureRestore mesh - -
+var persistent real salinityRestore ( nCells ) 0 iro salinityRestore mesh - -
# Prognostic variables: read from input, saved in restart, and written to output
var persistent real u ( nVertLevels nEdges Time ) 2 iro u state - -
Modified: branches/ocean_projects/imp_vert_mix_mrp/src/core_ocean/module_time_integration.F
===================================================================
--- branches/ocean_projects/imp_vert_mix_mrp/src/core_ocean/module_time_integration.F        2011-05-03 21:22:00 UTC (rev 813)
+++ branches/ocean_projects/imp_vert_mix_mrp/src/core_ocean/module_time_integration.F        2011-05-05 16:12:29 UTC (rev 814)
@@ -811,6 +811,9 @@
real (kind=RKIND), dimension(:,:,:), pointer :: deriv_two
real (kind=RKIND) :: coef_3rd_order, flux3Coef, cSignWTop
+ integer :: index_temperature, index_salinity, rrr
+ real (kind=RKIND), dimension(:), pointer :: temperatureRestore, salinityRestore
+
u => s % u % array
h => s % h % array
boundaryCell=> grid % boundaryCell % array
@@ -842,6 +845,13 @@
deriv_two => grid % deriv_two % array
+ if(config_restoreTS) then
+ index_temperature = s % index_temperature
+ index_salinity = s % index_salinity
+ temperatureRestore => grid % temperatureRestore % array
+ salinityRestore => grid % salinityRestore % array
+ endif
+
!
! initialize tracer tendency (RHS of tracer equation) to zero.
!
@@ -1298,6 +1308,32 @@
deallocate(fluxVertTop)
endif
+ !
+ ! add restoring to T and S in top model layer
+ !
+ if(config_restoreTS) then
+ k = 1 ! restoring only in top layer
+ do iCell=1,nCellsSolve
+
+ tend_tr(index_temperature, k, iCell) = tend_tr(index_temperature, k, iCell) &
+ - h(k,iCell)*(tracers(index_temperature, k, iCell) - temperatureRestore(iCell)) &
+ / (config_restoreT_timescale * 86400.0)
+
+ tend_tr(index_salinity, k, iCell) = tend_tr(index_salinity, k, iCell) &
+ - h(k,iCell)*(tracers(index_salinity, k, iCell) - salinityRestore(iCell)) &
+ / (config_restoreS_timescale * 86400.0)
+
+ ! write(6,10) iCell, tracers(index_temperature, k, iCell), &
+ ! temperatureRestore(iCell), tracers(index_temperature, k, iCell), &
+ ! (tracers(index_temperature, k, iCell) - temperatureRestore(iCell)) &
+ ! / (config_restoreT_timescale * 86400.0)
+
+ enddo
+
+ endif
+ 10 format(2i8,10e20.10)
+
+
! print some diagnostics - for debugging
! print *, 'after vertical mixing',&
! 'iTracer,k, minval(tend_tr(itracer,k,:)), maxval(tend_tr(itracer,k,:))'
</font>
</pre>