<p><b>dwj07@fsu.edu</b> 2011-09-15 08:58:23 -0600 (Thu, 15 Sep 2011)</p><p><br>
        --Branch commit--<br>
<br>
        Merging changes from timesplitting branch.<br>
        Contains a name change from higdon_split to split_explicit.<br>
</p><hr noshade><pre><font color="gray">
Property changes on: branches/ocean_projects/performance
___________________________________________________________________
Modified: svn:mergeinfo
- /branches/ocean_projects/imp_vert_mix_mrp:827-986
/branches/ocean_projects/timesplitting_mrp:990-993
/branches/ocean_projects/vert_adv_mrp:704-745
/branches/time_manager:924-962
/trunk/mpas:828-989
+ /branches/ocean_projects/imp_vert_mix_mrp:827-986
/branches/ocean_projects/timesplitting_mrp:990-998
/branches/ocean_projects/vert_adv_mrp:704-745
/branches/time_manager:924-962
/trunk/mpas:828-989
Modified: branches/ocean_projects/performance/Makefile
===================================================================
--- branches/ocean_projects/performance/Makefile        2011-09-14 22:15:46 UTC (rev 998)
+++ branches/ocean_projects/performance/Makefile        2011-09-15 14:58:23 UTC (rev 999)
@@ -1,3 +1,4 @@
+CORE=ocean
#MODEL_FORMULATION = -DNCAR_FORMULATION
MODEL_FORMULATION = -DLANL_FORMULATION
@@ -82,7 +83,7 @@
ifort:
        ( make all \
-        "FC = mpif90" \
+        "FC = ifort" \
        "CC = gcc" \
        "SFC = ifort" \
        "SCC = gcc" \
@@ -90,7 +91,7 @@
        "CFLAGS = -O3 -m64" \
        "LDFLAGS = -O3" \
        "CORE = $(CORE)" \
-        "CPPFLAGS = -DRKIND=8 $(MODEL_FORMULATION) -D_MPI -DUNDERSCORE -m64 $(FILE_OFFSET) $(ZOLTAN_DEFINE)" )
+        "CPPFLAGS = -DRKIND=8 $(MODEL_FORMULATION) -DUNDERSCORE -m64 $(FILE_OFFSET) $(ZOLTAN_DEFINE)" )
gfortran:
        ( make all \
Modified: branches/ocean_projects/performance/namelist.input
===================================================================
--- branches/ocean_projects/performance/namelist.input        2011-09-14 22:15:46 UTC (rev 998)
+++ branches/ocean_projects/performance/namelist.input        2011-09-15 14:58:23 UTC (rev 999)
@@ -1 +1 @@
-link namelist.input.sw
\ No newline at end of file
+link namelist.input.ocean
\ No newline at end of file
Modified: branches/ocean_projects/performance/namelist.input.ocean
===================================================================
--- branches/ocean_projects/performance/namelist.input.ocean        2011-09-14 22:15:46 UTC (rev 998)
+++ branches/ocean_projects/performance/namelist.input.ocean        2011-09-15 14:58:23 UTC (rev 999)
@@ -1,6 +1,6 @@
&sw_model
config_test_case = 0
- config_time_integration = 'higdon_unsplit'
+ config_time_integration = 'split_explicit'
config_rk_filter_btr_mode = .false.
config_dt = 10.0
config_start_time = '0000-01-01_00:00:00'
@@ -22,7 +22,7 @@
config_vert_grid_type = 'zlevel'
config_rho0 = 1000
/
-&timestep_higdon
+&split_explicit_ts
config_n_ts_iter = 2
config_n_bcl_iter_beg = 1
config_n_bcl_iter_mid = 2
Modified: branches/ocean_projects/performance/src/core_ocean/Registry
===================================================================
--- branches/ocean_projects/performance/src/core_ocean/Registry        2011-09-14 22:15:46 UTC (rev 998)
+++ branches/ocean_projects/performance/src/core_ocean/Registry        2011-09-15 14:58:23 UTC (rev 999)
@@ -20,22 +20,22 @@
namelist character restart config_restart_interval none
namelist character grid config_vert_grid_type isopycnal
namelist real grid config_rho0 1028
-namelist integer timestep_higdon config_n_ts_iter 2
-namelist integer timestep_higdon config_n_bcl_iter_beg 4
-namelist integer timestep_higdon config_n_bcl_iter_mid 4
-namelist integer timestep_higdon config_n_bcl_iter_end 4
-namelist integer timestep_higdon config_n_btr_subcycles 10
-namelist integer timestep_higdon config_n_btr_cor_iter 1
-namelist logical timestep_higdon config_compute_tr_midstage true
-namelist logical timestep_higdon config_u_correction true
-namelist logical timestep_higdon config_filter_btr_mode false
-namelist logical timestep_higdon config_btr_mom_decay false
-namelist real timestep_higdon config_btr_mom_decay_time 3600.0
-namelist real timestep_higdon config_btr_flux_coef 1.0
-namelist real timestep_higdon config_btr_mom_eddy_visc2 0.0
-namelist integer timestep_higdon config_btr_subcycle_loop_factor 2
-namelist character timestep_higdon config_SSH_from avg_flux
-namelist character timestep_higdon config_new_btr_variables_from btr_avg
+namelist integer split_explicit_ts config_n_ts_iter 2
+namelist integer split_explicit_ts config_n_bcl_iter_beg 4
+namelist integer split_explicit_ts config_n_bcl_iter_mid 4
+namelist integer split_explicit_ts config_n_bcl_iter_end 4
+namelist integer split_explicit_ts config_n_btr_subcycles 10
+namelist integer split_explicit_ts config_n_btr_cor_iter 1
+namelist logical split_explicit_ts config_compute_tr_midstage true
+namelist logical split_explicit_ts config_u_correction true
+namelist logical split_explicit_ts config_filter_btr_mode false
+namelist logical split_explicit_ts config_btr_mom_decay false
+namelist real split_explicit_ts config_btr_mom_decay_time 3600.0
+namelist real split_explicit_ts config_btr_flux_coef 1.0
+namelist real split_explicit_ts config_btr_mom_eddy_visc2 0.0
+namelist integer split_explicit_ts config_btr_subcycle_loop_factor 2
+namelist character split_explicit_ts config_SSH_from avg_flux
+namelist character split_explicit_ts config_new_btr_variables_from btr_avg
namelist logical sw_model config_h_ScaleWithMesh false
namelist real hmix config_h_mom_eddy_visc2 0.0
namelist real hmix config_h_mom_eddy_visc4 0.0
@@ -199,7 +199,7 @@
var persistent real tend_tracer1 ( nVertLevels nCells Time ) 1 - tracer1 tend tracers testing
var persistent real tend_tracer2 ( nVertLevels nCells Time ) 1 - tracer2 tend tracers testing
-# state variables for Higdon timesplitting
+# state variables for Split Explicit timesplitting
var persistent real uBtr ( nEdges Time ) 2 - uBtr state - -
var persistent real ssh ( nCells Time ) 2 o ssh state - -
var persistent real uBtrSubcycle ( nEdges Time ) 2 - uBtrSubcycle state - -
Modified: branches/ocean_projects/performance/src/core_ocean/module_mpas_core.F
===================================================================
--- branches/ocean_projects/performance/src/core_ocean/module_mpas_core.F        2011-09-14 22:15:46 UTC (rev 998)
+++ branches/ocean_projects/performance/src/core_ocean/module_mpas_core.F        2011-09-15 14:58:23 UTC (rev 999)
@@ -47,6 +47,14 @@
call dmpar_abort(dminfo)
endif
+ if (trim(config_new_btr_variables_from) == 'btr_avg' &
+ .and.trim(config_time_integration) == 'unsplit_explicit') then
+ print *, ' unsplit_explicit option must use',&
+ ' config_new_btr_variables_from==last_subcycle'
+ call dmpar_abort(dminfo)
+ endif
+
+
!
! Initialize core
!
@@ -191,7 +199,7 @@
if (.not. config_do_restart) then
-! mrp 110808 add, so that variables are copied to * variables for Higdon
+! mrp 110808 add, so that variables are copied to * variables for split explicit
do i=2,nTimeLevs
call copy_state(block % state % time_levs(i) % state, &
block % state % time_levs(1) % state)
@@ -465,13 +473,13 @@
! Compute barotropic velocity at first timestep
! This is only done upon start-up.
- if (trim(config_time_integration) == 'higdon_unsplit') then
+ if (trim(config_time_integration) == 'unsplit_explicit') then
block % state % time_levs(1) % state % uBtr % array(:) = 0.0
block % state % time_levs(1) % state % uBcl % array(:,:) &
= block % state % time_levs(1) % state % u % array(:,:)
- elseif (trim(config_time_integration) == 'higdon_split') then
+ elseif (trim(config_time_integration) == 'split_explicit') then
if (config_filter_btr_mode) then
do iCell=1,block % mesh % nCells
Modified: branches/ocean_projects/performance/src/core_ocean/module_time_integration.F
===================================================================
--- branches/ocean_projects/performance/src/core_ocean/module_time_integration.F        2011-09-14 22:15:46 UTC (rev 998)
+++ branches/ocean_projects/performance/src/core_ocean/module_time_integration.F        2011-09-15 14:58:23 UTC (rev 999)
@@ -31,14 +31,14 @@
if (trim(config_time_integration) == 'RK4') then
call rk4(domain, dt)
- elseif (trim(config_time_integration) == 'higdon_split' &
- .or.trim(config_time_integration) == 'higdon_unsplit') then
- call higdon_timestep(domain, dt)
+ elseif (trim(config_time_integration) == 'split_explicit' &
+ .or.trim(config_time_integration) == 'unsplit_explicit') then
+ call split_explicit_timestep(domain, dt)
else
write(0,*) 'Abort: Unknown time integration option '&
//trim(config_time_integration)
- write(0,*) 'Currently, only RK4, hidgdon_split and '// &
- 'higdon_unsplit are supported.'
+ write(0,*) 'Currently, only RK4, split_explicit and '// &
+ 'unsplit_explicit are supported.'
call dmpar_abort(dminfo)
end if
@@ -411,10 +411,10 @@
end subroutine rk4!}}}
- subroutine higdon_timestep(domain, dt)!{{{
+subroutine split_explicit_timestep(domain, dt)!{{{
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
! Advance model state forward in time by the specified time step using
- ! Higdon timestepping scheme
+ ! Split_Explicit timestepping scheme
!
! Input: domain - current model state in time level 1 (e.g., time_levs(1)state%h(:,:))
! plus grid meta-data
@@ -428,7 +428,7 @@
real (kind=RKIND), intent(in) :: dt
type (dm_info) :: dminfo
- integer :: iCell, i,k,j, iEdge, cell1, cell2, higdon_step, split, &
+ integer :: iCell, i,k,j, iEdge, cell1, cell2, split_explicit_step, split, &
eoe, oldBtrSubcycleTime, newBtrSubcycleTime, uPerpTime, BtrCorIter, &
n_bcl_iter(config_n_ts_iter), &
vertex1, vertex2, iVertex
@@ -447,13 +447,13 @@
real (kind=RKIND), dimension(:), allocatable:: A,C,uTemp, hNew
real (kind=RKIND), dimension(:,:), allocatable:: tracersTemp
+ call timer_start("split_explicit_timestep")
+
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!
! Prep variables before first iteration
!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-
- call timer_start("higdon_timestep")
block => domain % blocklist
do while (associated(block))
@@ -502,7 +502,7 @@
n_bcl_iter(1) = config_n_bcl_iter_beg
n_bcl_iter(config_n_ts_iter) = config_n_bcl_iter_end
- do higdon_step = 1, config_n_ts_iter
+ do split_explicit_step = 1, config_n_ts_iter
! --- update halos for diagnostic variables
block => domain % blocklist
@@ -545,12 +545,12 @@
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
! BEGIN baroclinic iterations on linear Coriolis term
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
- do j=1,n_bcl_iter(higdon_step)
+ do j=1,n_bcl_iter(split_explicit_step)
! Use this G coefficient to avoid an if statement within the iEdge loop.
- if (trim(config_time_integration) == 'higdon_unsplit') then
+ if (trim(config_time_integration) == 'unsplit_explicit') then
split = 0
- elseif (trim(config_time_integration) == 'higdon_split') then
+ elseif (trim(config_time_integration) == 'split_explicit') then
split = 1
endif
@@ -637,12 +637,12 @@
oldBtrSubcycleTime = 1
newBtrSubcycleTime = 2
- if (trim(config_time_integration) == 'higdon_unsplit') then
+ if (trim(config_time_integration) == 'unsplit_explicit') then
block => domain % blocklist
do while (associated(block))
- ! For Higdon unsplit, simply set uBtrNew=0, uBtrSubcycle=0, and uNew=uBclNew
+ ! For Split_Explicit unsplit, simply set uBtrNew=0, uBtrSubcycle=0, and uNew=uBclNew
block % state % time_levs(2) % state % uBtr % array(:) = 0.0
block % state % time_levs(newBtrSubcycleTime) % state % uBtrSubcycle % array(:) = 0.0
@@ -653,7 +653,7 @@
block => block % next
end do ! block
- elseif (trim(config_time_integration) == 'higdon_split') then
+ elseif (trim(config_time_integration) == 'split_explicit') then
! Initialize variables for barotropic subcycling
block => domain % blocklist
@@ -1200,7 +1200,7 @@
end do ! block
- endif ! higdon_split
+ endif ! split_explicit
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!
@@ -1213,7 +1213,7 @@
call compute_wTop(block % state % time_levs(2) % state, block % mesh)
- if (trim(config_time_integration) == 'higdon_unsplit') then
+ if (trim(config_time_integration) == 'unsplit_explicit') then
call compute_tend_h(block % tend, block % state % time_levs(2) % state , block % diagnostics, block % mesh)
endif
@@ -1248,7 +1248,7 @@
sshNew => block % state % time_levs(2) % state % ssh % array
endif
- if (trim(config_time_integration) == 'higdon_unsplit') then
+ if (trim(config_time_integration) == 'unsplit_explicit') then
do iCell=1,block % mesh % nCells
! this is h_{n+1}
@@ -1257,17 +1257,17 @@
+ dt* block % tend % h % array(:,iCell)
! this is only for the hNew computation below, so there is the correct
- ! value in the ssh variable for higdon_unsplit case.
+ ! value in the ssh variable for unsplit_explicit case.
block % state % time_levs(oldBtrSubcycleTime) % state % sshSubcycle % array(iCell) &
= block % state % time_levs(2) % state % h % array(1,iCell) &
- block % mesh % hZLevel % array(1)
end do ! iCell
- endif ! higdon_unsplit
+ endif ! unsplit_explicit
! Only need T & S for earlier iterations,
! then all the tracers needed the last time through.
- if (higdon_step < config_n_ts_iter) then
+ if (split_explicit_step < config_n_ts_iter) then
hNew(:) = block % mesh % hZLevel % array(:)
do iCell=1,block % mesh % nCells
@@ -1292,7 +1292,7 @@
end do ! iCell
- if (trim(config_time_integration) == 'higdon_unsplit') then
+ if (trim(config_time_integration) == 'unsplit_explicit') then
! compute h*, which is h at n+1/2 and put into array hNew
! on last iteration, hNew remains at n+1
@@ -1303,7 +1303,7 @@
+ block % state % time_levs(1) % state % h % array(1,iCell) )
end do ! iCell
- endif ! higdon_unsplit
+ endif ! unsplit_explicit
! compute u*, the velocity for tendency terms. Put in uNew.
! uBclNew is at time n+1/2 here.
@@ -1320,7 +1320,7 @@
call compute_solve_diagnostics(dt, block % state % time_levs(2) % state, block % mesh)
- elseif (higdon_step == config_n_ts_iter) then
+ elseif (split_explicit_step == config_n_ts_iter) then
hNew(:) = block % mesh % hZLevel % array(:)
do iCell=1,block % mesh % nCells
@@ -1339,13 +1339,13 @@
end do
end do
- endif ! higdon_step
+ endif ! split_explicit_step
deallocate(hNew)
block => block % next
end do
- end do ! higdon_step = 1, config_n_ts_iter
+ end do ! split_explicit_step = 1, config_n_ts_iter
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
! END large iteration loop
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
@@ -1396,7 +1396,7 @@
enddo ! iEdges
- if (trim(config_time_integration) == 'higdon_split') then
+ if (trim(config_time_integration) == 'split_explicit') then
if (trim(config_new_btr_variables_from) == 'last_subcycle') then
do iCell=1,block % mesh % nCells
@@ -1422,7 +1422,7 @@
= block % mesh % hZLevel % array(k)
end do
end do ! iCell
- end if ! higdon_split
+ end if ! split_explicit
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!
@@ -1543,9 +1543,9 @@
block => block % next
end do
- call timer_stop("higdon_timestep")
+ call timer_stop("split_explicit_timestep")
- end subroutine higdon_timestep!}}}
+ end subroutine split_explicit_timestep!}}}
subroutine compute_tend_h(tend, s, d, grid)!{{{
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
@@ -3416,9 +3416,9 @@
if (trim(config_time_integration) == 'RK4') then
! for RK4, PV is really PV = (eta+f)/h
fCoef = 1
- elseif (trim(config_time_integration) == 'higdon_split' &
- .or.trim(config_time_integration) == 'higdon_unsplit') then
- ! for higdon, PV is eta/h because f is added separately to the momentum forcing.
+ elseif (trim(config_time_integration) == 'split_explicit' &
+ .or.trim(config_time_integration) == 'unsplit_explicit') then
+ ! for split explicit, PV is eta/h because f is added separately to the momentum forcing.
! mrp temp, new should be:
fCoef = 0
! old, for testing:
</font>
</pre>