<p><b>mhoffman@lanl.gov</b> 2012-04-18 15:38:59 -0600 (Wed, 18 Apr 2012)</p><p>BRANCH COMMIT<br>
Modified file names to meet MPAS convention of lower case module names.<br>
</p><hr noshade><pre><font color="gray">Modified: branches/land_ice_projects/implement_core/src/core_land_ice/Makefile
===================================================================
--- branches/land_ice_projects/implement_core/src/core_land_ice/Makefile        2012-04-18 21:32:11 UTC (rev 1794)
+++ branches/land_ice_projects/implement_core/src/core_land_ice/Makefile        2012-04-18 21:38:59 UTC (rev 1795)
@@ -3,7 +3,7 @@
OBJS =         mpas_land_ice_mpas_core.o \
        mpas_land_ice_tendency.o \
        mpas_land_ice_time_integration.o \
-        mpas_land_ice_time_integration_ForwardEuler.o \
+        mpas_land_ice_time_integration_forwardeuler.o \
        mpas_land_ice_vel.o \
        mpas_land_ice_lifev.o \
        mpas_land_ice_sia.o \
@@ -14,9 +14,9 @@
core_land_ice: $(OBJS)
        ar -ru libdycore.a $(OBJS)
-mpas_land_ice_time_integration.o: mpas_land_ice_time_integration_ForwardEuler.o
+mpas_land_ice_time_integration.o: mpas_land_ice_time_integration_forwardeuler.o
-mpas_land_ice_time_integration_ForwardEuler.o: mpas_land_ice_vel.o mpas_land_ice_tendency.o
+mpas_land_ice_time_integration_forwardeuler.o: mpas_land_ice_vel.o mpas_land_ice_tendency.o
mpas_land_ice_vel.o: mpas_land_ice_lifev.o mpas_land_ice_sia.o
Deleted: branches/land_ice_projects/implement_core/src/core_land_ice/mpas_land_ice_time_integration_ForwardEuler.F
===================================================================
--- branches/land_ice_projects/implement_core/src/core_land_ice/mpas_land_ice_time_integration_ForwardEuler.F        2012-04-18 21:32:11 UTC (rev 1794)
+++ branches/land_ice_projects/implement_core/src/core_land_ice/mpas_land_ice_time_integration_ForwardEuler.F        2012-04-18 21:38:59 UTC (rev 1795)
@@ -1,168 +0,0 @@
-!|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-!
-! land_ice_time_integration_forwardeuler
-!
-!> \brief MPAS land ice Forward Euler time integration schem
-!> \author Matt Hoffman
-!> \date 17 April 2011
-!> \version SVN:$Id:$
-!> \details
-!> This module contains the Forware Euler time integration scheme
-!
-!-----------------------------------------------------------------------
-
-
-module land_ice_time_integration_forwardeuler
-
- use mpas_vector_reconstruction
- use mpas_grid_types
- use mpas_configure
- use mpas_constants
- use mpas_dmpar
- use land_ice_vel, only: land_ice_vel_solve
- use land_ice_tendency
-
- contains
-
- subroutine land_ice_time_integrator_forwardeuler(domain, dt)
- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
- ! Advance model state forward in time by the specified time step using
- ! Forward Euler method
- !
- ! Input: domain - current model state in time level 1 (e.g., time_levs(1)state%h(:,:))
- ! plus grid meta-data
- ! Output: domain - upon exit, time level 2 (e.g., time_levs(2)%state%h(:,:)) contains
- ! model state advanced forward in time by dt seconds
- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-
- implicit none
-
- type (domain_type), intent(inout) :: domain
- real (kind=RKIND), intent(in) :: dt
-
- type (block_type), pointer :: block
- type (state_type), pointer :: stateOld, stateNew
- type (mesh_type), pointer :: mesh
-
- real (kind=RKIND), dimension(:), pointer :: thicknessOld, thicknessNew, thickness_tend, layerThicknessFractions
- real (kind=RKIND), dimension(:,:), pointer :: normalVelocityOld, normalVelocityNew, layerThicknessOld, layerThicknessNew !, layerThickness_tend
- real (kind=RKIND), dimension(:,:), pointer :: uReconstructX, uReconstructY, uReconstructZ, &
- uReconstructZonal, uReconstructMeridional
-
- integer, dimension(:), allocatable :: mask
-
- integer :: nVertLevels, k
-
- integer :: err
-
- ! During integration, time level 1 stores the model state at the beginning of the
- ! time step, and time level 2 stores the state advanced dt in time by timestep(...)
- ! (time level 1 should not be modified.)
-
- block => domain % blocklist
- do while (associated(block))
-! === Initialize pointers ========================
- ! Mesh information
- mesh => block % mesh
- nVertLevels = mesh % nVertLevels
- layerThicknessFractions => mesh % layerThicknessFractions % array
-
- ! State at time n
- stateOld => block % state % time_levs(1) % state
- thicknessOld => stateOld % thickness % array
- layerThicknessOld => stateOld % layerThickness % array
- normalVelocityOld => stateOld % normalVelocity % array
-
- ! State at time n+1 (advanced by dt by Forward Euler)
- stateNew => block % state % time_levs(2) % state
- thicknessNew => stateNew % thickness % array
- layerThicknessNew => stateNew % layerThickness % array
- normalVelocityNew => stateNew % normalVelocity % array
- uReconstructX => stateNew % uReconstructX % array
- uReconstructY => stateNew % uReconstructY % array
- uReconstructZ => stateNew % uReconstructZ % array
- uReconstructZonal => stateNew % uReconstructZonal % array
- uReconstructMeridional => stateNew % uReconstructMeridional % array
-
- ! Tendencies
- !layerThickness_tend => block % tend % layerThickness % array
- thickness_tend => block % tend % thickness % array
-
-
- allocate(mask(mesh%nCells + 1))
-
-
-! === Calculate Tendencies ========================
- ! Calculate thickness tendency using state at time n
- call lice_tend_h(mesh, normalVelocityOld, layerThicknessOld, thicknessOld, thickness_tend, dt, err)
-
- ! update halos on thickness tend
- !call ()
-
- ! (Calculate tracer tendencies)
- !call ()
-
-
- ! Commented lines below calculate the thickness tendency per layer instead of for the whole column (last 2 lines should be moved to following 'section' of code)
- !call lice_tend_h_layers(mesh, normalVelocity, layerThickness, layerThickness_tend, dt, err)
- !layerThickness = layerThickness + layerThickness_tend * dt / SecondsInYear
- !thickness = sum(layerThickness, 1)
-
-
-! === Compute new state for prognostic variables ==================================
-
- ! Update thickness (and tracers eventually)
- thicknessNew = thicknessOld + thickness_tend * dt / SecondsInYear
-
- !Optionally print some information about the new state
- print *, 'thickness maxval:', maxval(thicknessNew)
- mask = 0
- where (thicknessNew .lt. 0.0)
- mask = 1
- thicknessNew = 0.0
- end where
- if (sum(mask) .gt. 0) then
- print *,'Cells with negative thickness (set to 0):',sum(mask)
- endif
-
- mask = 0
- where (thicknessNew .gt. 0.0)
- mask = 1
- end where
- print *,'Cells with nonzero thickness:', sum(mask)
-
- ! Solve the velocity (using old state)
- call land_ice_vel_solve(mesh, stateOld, normalVelocityNew, err)
- ! update halos on velocity
- ! call ()
-
-! === Calculate diagnostic variables for new state =====================
- ! Remap layer thicknesses (could be moved to diagnostic solve)
- do k = 1, nVertLevels
- layerThicknessNew(k, :) = thicknessNew * layerThicknessFractions(k)
- end do
-
- ! call land_ice_diagnostic_solve()
-
- ! Reconstruct velocities for this time step (could be moved to diagnostic solve)
- call mpas_reconstruct(mesh, normalVelocityNew, &
- uReconstructX, uReconstructY, uReconstructZ, &
- uReconstructZonal, uReconstructMeridional)
-
-! === Cleanup & Misc. =============================
-
-
-! ================================
-
- block => block % next
- end do
-
- deallocate(mask)
-
- end subroutine land_ice_time_integrator_ForwardEuler
-
-
-
-end module land_ice_time_integration_forwardeuler
-
-
Added: branches/land_ice_projects/implement_core/src/core_land_ice/mpas_land_ice_time_integration_forwardeuler.F
===================================================================
--- branches/land_ice_projects/implement_core/src/core_land_ice/mpas_land_ice_time_integration_forwardeuler.F         (rev 0)
+++ branches/land_ice_projects/implement_core/src/core_land_ice/mpas_land_ice_time_integration_forwardeuler.F        2012-04-18 21:38:59 UTC (rev 1795)
@@ -0,0 +1,168 @@
+!|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
+!
+! land_ice_time_integration_forwardeuler
+!
+!> \brief MPAS land ice Forward Euler time integration schem
+!> \author Matt Hoffman
+!> \date 17 April 2011
+!> \version SVN:$Id:$
+!> \details
+!> This module contains the Forware Euler time integration scheme
+!
+!-----------------------------------------------------------------------
+
+
+module land_ice_time_integration_forwardeuler
+
+ use mpas_vector_reconstruction
+ use mpas_grid_types
+ use mpas_configure
+ use mpas_constants
+ use mpas_dmpar
+ use land_ice_vel, only: land_ice_vel_solve
+ use land_ice_tendency
+
+ contains
+
+ subroutine land_ice_time_integrator_forwardeuler(domain, dt)
+ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+ ! Advance model state forward in time by the specified time step using
+ ! Forward Euler method
+ !
+ ! Input: domain - current model state in time level 1 (e.g., time_levs(1)state%h(:,:))
+ ! plus grid meta-data
+ ! Output: domain - upon exit, time level 2 (e.g., time_levs(2)%state%h(:,:)) contains
+ ! model state advanced forward in time by dt seconds
+ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+
+ implicit none
+
+ type (domain_type), intent(inout) :: domain
+ real (kind=RKIND), intent(in) :: dt
+
+ type (block_type), pointer :: block
+ type (state_type), pointer :: stateOld, stateNew
+ type (mesh_type), pointer :: mesh
+
+ real (kind=RKIND), dimension(:), pointer :: thicknessOld, thicknessNew, thickness_tend, layerThicknessFractions
+ real (kind=RKIND), dimension(:,:), pointer :: normalVelocityOld, normalVelocityNew, layerThicknessOld, layerThicknessNew !, layerThickness_tend
+ real (kind=RKIND), dimension(:,:), pointer :: uReconstructX, uReconstructY, uReconstructZ, &
+ uReconstructZonal, uReconstructMeridional
+
+ integer, dimension(:), allocatable :: mask
+
+ integer :: nVertLevels, k
+
+ integer :: err
+
+ ! During integration, time level 1 stores the model state at the beginning of the
+ ! time step, and time level 2 stores the state advanced dt in time by timestep(...)
+ ! (time level 1 should not be modified.)
+
+ block => domain % blocklist
+ do while (associated(block))
+! === Initialize pointers ========================
+ ! Mesh information
+ mesh => block % mesh
+ nVertLevels = mesh % nVertLevels
+ layerThicknessFractions => mesh % layerThicknessFractions % array
+
+ ! State at time n
+ stateOld => block % state % time_levs(1) % state
+ thicknessOld => stateOld % thickness % array
+ layerThicknessOld => stateOld % layerThickness % array
+ normalVelocityOld => stateOld % normalVelocity % array
+
+ ! State at time n+1 (advanced by dt by Forward Euler)
+ stateNew => block % state % time_levs(2) % state
+ thicknessNew => stateNew % thickness % array
+ layerThicknessNew => stateNew % layerThickness % array
+ normalVelocityNew => stateNew % normalVelocity % array
+ uReconstructX => stateNew % uReconstructX % array
+ uReconstructY => stateNew % uReconstructY % array
+ uReconstructZ => stateNew % uReconstructZ % array
+ uReconstructZonal => stateNew % uReconstructZonal % array
+ uReconstructMeridional => stateNew % uReconstructMeridional % array
+
+ ! Tendencies
+ !layerThickness_tend => block % tend % layerThickness % array
+ thickness_tend => block % tend % thickness % array
+
+
+ allocate(mask(mesh%nCells + 1))
+
+
+! === Calculate Tendencies ========================
+ ! Calculate thickness tendency using state at time n
+ call lice_tend_h(mesh, normalVelocityOld, layerThicknessOld, thicknessOld, thickness_tend, dt, err)
+
+ ! update halos on thickness tend
+ !call ()
+
+ ! (Calculate tracer tendencies)
+ !call ()
+
+
+ ! Commented lines below calculate the thickness tendency per layer instead of for the whole column (last 2 lines should be moved to following 'section' of code)
+ !call lice_tend_h_layers(mesh, normalVelocity, layerThickness, layerThickness_tend, dt, err)
+ !layerThickness = layerThickness + layerThickness_tend * dt / SecondsInYear
+ !thickness = sum(layerThickness, 1)
+
+
+! === Compute new state for prognostic variables ==================================
+
+ ! Update thickness (and tracers eventually)
+ thicknessNew = thicknessOld + thickness_tend * dt / SecondsInYear
+
+ !Optionally print some information about the new state
+ print *, 'thickness maxval:', maxval(thicknessNew)
+ mask = 0
+ where (thicknessNew .lt. 0.0)
+ mask = 1
+ thicknessNew = 0.0
+ end where
+ if (sum(mask) .gt. 0) then
+ print *,'Cells with negative thickness (set to 0):',sum(mask)
+ endif
+
+ mask = 0
+ where (thicknessNew .gt. 0.0)
+ mask = 1
+ end where
+ print *,'Cells with nonzero thickness:', sum(mask)
+
+ ! Solve the velocity (using old state)
+ call land_ice_vel_solve(mesh, stateOld, normalVelocityNew, err)
+ ! update halos on velocity
+ ! call ()
+
+! === Calculate diagnostic variables for new state =====================
+ ! Remap layer thicknesses (could be moved to diagnostic solve)
+ do k = 1, nVertLevels
+ layerThicknessNew(k, :) = thicknessNew * layerThicknessFractions(k)
+ end do
+
+ ! call land_ice_diagnostic_solve()
+
+ ! Reconstruct velocities for this time step (could be moved to diagnostic solve)
+ call mpas_reconstruct(mesh, normalVelocityNew, &
+ uReconstructX, uReconstructY, uReconstructZ, &
+ uReconstructZonal, uReconstructMeridional)
+
+! === Cleanup & Misc. =============================
+
+
+! ================================
+
+ block => block % next
+ end do
+
+ deallocate(mask)
+
+ end subroutine land_ice_time_integrator_ForwardEuler
+
+
+
+end module land_ice_time_integration_forwardeuler
+
+
</font>
</pre>