<p><b>qchen3@fsu.edu</b> 2010-10-27 20:11:18 -0600 (Wed, 27 Oct 2010)</p><p>BRANCH COMMIT<br>
<br>
In compute_scalar_tend, replaced some long derive type expressions with pointers. <br>
</p><hr noshade><pre><font color="gray">Modified: branches/swmodel_del4/src/core_sw/module_time_integration.F
===================================================================
--- branches/swmodel_del4/src/core_sw/module_time_integration.F        2010-10-27 21:11:07 UTC (rev 583)
+++ branches/swmodel_del4/src/core_sw/module_time_integration.F        2010-10-28 02:11:18 UTC (rev 584)
@@ -547,7 +547,7 @@
tracers => s % tracers % array
cellsOnEdge => grid % cellsOnEdge % array
boundaryCell=> grid % boundaryCell % array
- boundaryEdge => grid % boundaryEdge % array
+ boundaryEdge=> grid % boundaryEdge % array
areaCell => grid % areaCell % array
tracer_tend => tend % tracers % array
@@ -698,23 +698,21 @@
where(boundaryEdge.eq.1) boundaryMask=0.0
do iEdge=1,grid % nEdges
- cell1 = grid % cellsOnEdge % array(1,iEdge)
- cell2 = grid % cellsOnEdge % array(2,iEdge)
- invAreaCell1 = 1.0/grid % areaCell % array(cell1)
- invAreaCell2 = 1.0/grid % areaCell % array(cell2)
+ cell1 = cellsOnEdge(1,iEdge)
+ cell2 = cellsOnEdge(2,iEdge)
+ invAreaCell1 = 1.0/areaCell(cell1)
+ invAreaCell2 = 1.0/areaCell(cell2)
do k=1,grid % nVertLevels
do iTracer=1, grid % nTracers
! \kappa_2 </font>
<font color="red">abla \phi on edge
tracer_turb_flux = h_tracer_eddy_diff2 &
- *( s % tracers % array(iTracer,k,cell2) &
- - s % tracers % array(iTracer,k,cell1))/grid % dcEdge % array(iEdge)
+ *( tracers(iTracer,k,cell2) - tracers(iTracer,k,cell1)) / dcEdge(iEdge)
! div(h \kappa_2 </font>
<font color="gray">abla \phi) at cell center
- flux = grid % dvEdge % array(iEdge) * s % h_edge % array(k,iEdge) &
- * tracer_turb_flux * boundaryMask(k, iEdge)
- tend % tracers % array(iTracer,k,cell1) = tend % tracers % array(iTracer,k,cell1) + flux * invAreaCell1
- tend % tracers % array(iTracer,k,cell2) = tend % tracers % array(iTracer,k,cell2) - flux * invAreaCell2
+ flux = dvEdge(iEdge) * h_edge(k,iEdge) * tracer_turb_flux * boundaryMask(k, iEdge)
+ tracer_tend(iTracer,k,cell1) = tracer_tend(iTracer,k,cell1) + flux * invAreaCell1
+ tracer_tend(iTracer,k,cell2) = tracer_tend(iTracer,k,cell2) - flux * invAreaCell2
end do
end do
@@ -743,19 +741,15 @@
! first del2: div(h </font>
<font color="gray">abla \phi) at cell center
do iEdge=1,grid % nEdges
- cell1 = grid % cellsOnEdge % array(1,iEdge)
- cell2 = grid % cellsOnEdge % array(2,iEdge)
+ cell1 = cellsOnEdge(1,iEdge)
+ cell2 = cellsOnEdge(2,iEdge)
do k=1,grid % nVertLevels
do iTracer=1, grid % nTracers
delsq_tracer(iTracer,k,cell1) = delsq_tracer(iTracer,k,cell1) &
- + grid % dvEdge % array(iEdge) * s % h_edge % array(k,iEdge) &
- *(s % tracers % array(iTracer,k,cell2) - s % tracers % array(iTracer,k,cell1)) &
- /grid % dcEdge % array(iEdge) * boundaryMask(k,iEdge)
+ + dvEdge(iEdge) * h_edge(k,iEdge) * (tracers(iTracer,k,cell2) - tracers(iTracer,k,cell1)) / dcEdge(iEdge) * boundaryMask(k,iEdge)
delsq_tracer(iTracer,k,cell2) = delsq_tracer(iTracer,k,cell2) &
- - grid % dvEdge % array(iEdge)*s % h_edge % array(k,iEdge) &
- *(s % tracers % array(iTracer,k,cell2) - s % tracers % array(iTracer,k,cell1)) &
- /grid % dcEdge % array(iEdge) * boundaryMask(k,iEdge)
+ - dvEdge(iEdge) * h_edge(k,iEdge) * (tracers(iTracer,k,cell2) - tracers(iTracer,k,cell1)) / dcEdge(iEdge) * boundaryMask(k,iEdge)
end do
end do
@@ -779,16 +773,10 @@
do k=1,grid % nVertLevels
do iTracer=1,grid % nTracers
- tracer_turb_flux = h_tracer_eddy_diff4 &
- *( delsq_tracer(iTracer,k,cell2) &
- - delsq_tracer(iTracer,k,cell1))/grid % dcEdge % array(iEdge)
- flux = grid % dvEdge %array(iEdge) * tracer_turb_flux
-
- tend % tracers % array(iTracer,k,cell1) = tend % tracers % array(iTracer,k,cell1) &
- - flux * invAreaCell1 * boundaryMask(k,iEdge)
- tend % tracers % array(iTracer,k,cell2) = tend % tracers % array(iTracer,k,cell2) &
- + flux * invAreaCell2 * boundaryMask(k,iEdge)
-
+ tracer_turb_flux = h_tracer_eddy_diff4 * (delsq_tracer(iTracer,k,cell2) - delsq_tracer(iTracer,k,cell1)) / dcEdge(iEdge)
+ flux = dvEdge(iEdge) * tracer_turb_flux
+ tracer_tend(iTracer,k,cell1) = tracer_tend(iTracer,k,cell1) - flux * invAreaCell1 * boundaryMask(k,iEdge)
+ tracer_tend(iTracer,k,cell2) = tracer_tend(iTracer,k,cell2) + flux * invAreaCell2 * boundaryMask(k,iEdge)
end do
enddo
</font>
</pre>