<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.
 /
+&amp;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           =&gt; s % u % array
       h           =&gt; s % h % array
       boundaryCell=&gt; grid % boundaryCell % array
@@ -842,6 +845,13 @@
 
       deriv_two   =&gt; grid % deriv_two % array
 
+      if(config_restoreTS) then
+        index_temperature = s % index_temperature
+        index_salinity = s % index_salinity
+        temperatureRestore =&gt; grid % temperatureRestore % array
+        salinityRestore =&gt; 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)  &amp;
+                - h(k,iCell)*(tracers(index_temperature, k, iCell) - temperatureRestore(iCell)) &amp;
+                / (config_restoreT_timescale * 86400.0)
+
+           tend_tr(index_salinity, k, iCell) = tend_tr(index_salinity, k, iCell)  &amp;
+                - h(k,iCell)*(tracers(index_salinity, k, iCell) - salinityRestore(iCell)) &amp;
+                / (config_restoreS_timescale * 86400.0)
+
+   !       write(6,10) iCell, tracers(index_temperature, k, iCell), &amp;
+   !              temperatureRestore(iCell), tracers(index_temperature, k, iCell), &amp;
+   !             (tracers(index_temperature, k, iCell) - temperatureRestore(iCell)) &amp;
+   !             / (config_restoreT_timescale * 86400.0)
+
+         enddo
+
+      endif
+ 10   format(2i8,10e20.10)
+
+
           ! print some diagnostics - for debugging
 !         print *, 'after vertical mixing',&amp;
 ! 'iTracer,k, minval(tend_tr(itracer,k,:)), maxval(tend_tr(itracer,k,:))'

</font>
</pre>