<p><b>mpetersen@lanl.gov</b> 2011-07-12 10:24:08 -0600 (Tue, 12 Jul 2011)</p><p>Update basin code so to remove defunct nTracers dimension and tracer array. Now only temperature, salinity, and tracer1 arrays are written to the initial condition file. I added notes on the two lines to comment out, in case the user does not want tracer1 saved.<br>
</p><hr noshade><pre><font color="gray">Modified: branches/ocean_projects/basin/src/basin.F
===================================================================
--- branches/ocean_projects/basin/src/basin.F        2011-07-12 05:46:28 UTC (rev 916)
+++ branches/ocean_projects/basin/src/basin.F        2011-07-12 16:24:08 UTC (rev 917)
@@ -16,7 +16,7 @@
! Change a spherical grid into a Limited area spherical grid.
!
! How to use:
-! Step 1: Set the number of Vertical levels, and Tracers
+! Step 1: Set the number of Vertical levels
! Step 2: Set if the grid is on a sphere or not, and it's radius
! Step 3: Specify some Parameters
! Step 4: Check the Initial conditions routine get_init_conditions
@@ -31,7 +31,7 @@
! original grid variables
integer :: time, nCells, nEdges, nVertices
-integer :: maxEdges, maxEdges2, TWO, vertexDegree, nVertLevels, nTracers
+integer :: maxEdges, maxEdges2, TWO, vertexDegree, nVertLevels
integer, allocatable, dimension(:) :: indexToCellID, indexToEdgeID, indexToVertexID
real, allocatable, dimension(:) :: xCell, yCell, zCell, latCell, lonCell
real, allocatable, dimension(:) :: xEdge, yEdge, zEdge, latEdge, lonEdge
@@ -47,7 +47,6 @@
real, allocatable, dimension(:,:) :: u_src
real, allocatable, dimension(:,:,:) :: u, v, h
real, allocatable, dimension(:,:,:) :: rho
-real, allocatable, dimension(:,:,:,:) :: tracers
integer nlon, nlat, ndepth
real(kind=4), allocatable, dimension(:) :: t_lon, t_lat, depth_t
@@ -57,9 +56,8 @@
real, dimension(40) :: dz
-! Step 1: Set the number of Vertical levels, and Tracers
+! Step 1: Set the number of Vertical levels
integer, parameter :: nVertLevelsMOD = 40
-integer, parameter :: nTracersMod = 2
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
! basin-mod
@@ -100,7 +98,7 @@
! new grid variables
integer :: nCellsNew, nEdgesNew, nVerticesNew
-integer :: maxEdgesNew, maxEdges2New, TWONew, vertexDegreeNew, nVertLevelsNew, nTracersNew
+integer :: maxEdgesNew, maxEdges2New, TWONew, vertexDegreeNew, nVertLevelsNew
integer, allocatable, dimension(:) :: indexToCellIDNew, indexToEdgeIDNew, indexToVertexIDNew
real, allocatable, dimension(:) :: xCellNew, yCellNew, zCellNew, latCellNew, lonCellNew
real, allocatable, dimension(:) :: xEdgeNew, yEdgeNew, zEdgeNew, latEdgeNew, lonEdgeNew
@@ -116,9 +114,8 @@
real, allocatable, dimension(:) :: fEdgeNew, fVertexNew, h_sNew
real, allocatable, dimension(:,:) :: u_srcNew
real, allocatable, dimension(:,:,:) :: uNew, vNew, hNew
-real, allocatable, dimension(:,:,:) :: rhoNew, temperatureNew, salinityNew
+real, allocatable, dimension(:,:,:) :: rhoNew, temperatureNew, salinityNew, tracer1New
real, allocatable, dimension(:) :: temperatureRestoreNew, salinityRestoreNew
-real, allocatable, dimension(:,:,:,:) :: tracersNew
! mapping variables
integer, allocatable, dimension(:) :: kmt, maxLevelCellNew
@@ -293,9 +290,9 @@
dtr = pi/180.0
hNew = 100.0
-tracersNew = 1.0
temperatureNew = 1.0
salinityNew = 1.0
+tracer1New = 1.0
uNew = 0
vNew = 0
@@ -308,7 +305,6 @@
h_sNew(:) = 0.0
uNew(:,:,:) = 0.0
vNew(:,:,:) = 0.0
- tracersNew(:,:,:,:) = 0.0
! basin-mod
! setting for three levels - Set h values for isopycnal system
@@ -528,7 +524,6 @@
!set tracers at a first guess
-tracersNew = 0.0
temperatureNew = -99.0
salinityNew = -99.0
do iCell=1,nCellsNew
@@ -780,7 +775,6 @@
TWONew = TWO
vertexDegreeNew = vertexDegree
nVertLevelsNew = nVertLevelsMod
-nTracersNew = nTracersMod
write(6,*)
write(6,*) ' new dimensions '
@@ -789,7 +783,6 @@
write(6,*) ' TWONew : ', TWONew
write(6,*) ' vertexDegreeNew : ', vertexDegreeNew
write(6,*) ' nVertLevelsNew : ', nVertLevelsNew
-write(6,*) ' nTracersNew : ', nTracersNew
end subroutine copy_dimensions
@@ -799,7 +792,7 @@
implicit none
call read_netcdf_init(nCells, nEdges, nVertices, maxEdges,maxEdges2,&
- nVertLevels,TWO,vertexDegree,nTracers)
+ nVertLevels,TWO,vertexDegree)
write(6,*) ' init from grid '
write(6,*) 'nCells :', nCells
@@ -809,7 +802,6 @@
write(6,*) 'maxEdges2 :', maxEdges2
write(6,*) 'nVertLevels :', nVertLevels
write(6,*) 'vertexDegree :', vertexDegree
-write(6,*) 'nTracers :', nTracers
write(6,*) 'TWO :', TWO
allocate(xCell(nCells))
@@ -860,7 +852,6 @@
allocate(v(1,nVertLevels,nEdges))
allocate(h(1,nVertLevels,nCells))
allocate(rho(1,nVertLevels,nCells))
-allocate(tracers(1,nTracers,nVertLevels,nCells))
xCell=0; yCell=0; zCell=0; latCell=0; lonCell=0
xEdge=0; yEdge=0; zEdge=0; latEdge=0; lonEdge=0
@@ -875,7 +866,6 @@
fEdge=0; fVertex=0; h_s=0; u_src=0; work1=0
u=0; v=0; h=0; rho=0
-tracers=0
call read_netcdf_fields( &
@@ -920,8 +910,7 @@
h_s, &
u, &
v, &
- h, &
- tracers &
+ h &
)
write(6,*) ' values from read grid, min/max'
@@ -966,7 +955,6 @@
write(6,*) ' u : ', minval(u), maxval(u)
write(6,*) ' v : ', minval(v), maxval(v)
write(6,*) ' h : ', minval(h), maxval(h)
-write(6,*) ' tracers : ', minval(tracers), maxval(tracers)
end subroutine read_grid
@@ -997,7 +985,6 @@
nVerticesNew, &
maxEdgesNew, &
nVertLevelsNew, &
- nTracersNew, &
vertexDegreeNew, &
sphere_radius, &
on_a_sphere &
@@ -1051,9 +1038,9 @@
vNew, &
hNew, &
rhoNew, &
- tracersNew, &
temperatureNew, &
salinityNew, &
+ tracer1New, &
temperatureRestoreNew, &
salinityRestoreNew &
)
@@ -1316,9 +1303,9 @@
allocate(vNew(1,nVertLevelsNew,nEdgesNew))
allocate(hNew(1,nVertLevelsNew,nCellsNew))
allocate(rhoNew(1,nVertLevelsNew,nCellsNew))
-allocate(tracersNew(1,nTracersNew,nVertLevelsNew,nCellsNew))
allocate(temperatureNew(1,nVertLevelsNew,nCellsNew))
allocate(salinityNew(1,nVertLevelsNew,nCellsNew))
+allocate(tracer1New(1,nVertLevelsNew,nCellsNew))
allocate(temperatureRestoreNew(nCellsNew))
allocate(salinityRestoreNew(nCellsNew))
@@ -1329,7 +1316,7 @@
fEdgeNew=0; fVertexNew=0; h_sNew=0; u_srcNew=0
uNew=0; vNew=0; hNew=0; rhoNew=0
-tracersNew=0; temperatureNew=0; salinityNew=0
+temperatureNew=0; salinityNew=0; tracer1New=0;
temperatureRestoreNew = 0.0
salinityRestoreNew = 0.0
Modified: branches/ocean_projects/basin/src/module_read_netcdf.F
===================================================================
--- branches/ocean_projects/basin/src/module_read_netcdf.F        2011-07-12 05:46:28 UTC (rev 916)
+++ branches/ocean_projects/basin/src/module_read_netcdf.F        2011-07-12 16:24:08 UTC (rev 917)
@@ -8,7 +8,6 @@
integer :: rdDimIDmaxEdges
integer :: rdDimIDmaxEdges2
integer :: rdDimIDnVertLevels
- integer :: rdDimIDnTracers
integer :: rdDimIDTWO
integer :: rdDimIDvertexDegree
integer :: rdVarIDlatCell
@@ -52,7 +51,6 @@
integer :: rdVarIDu
integer :: rdVarIDv
integer :: rdVarIDh
- integer :: rdVarIDtracers
integer :: rdLocalnCells
integer :: rdLocalnEdges
@@ -60,7 +58,6 @@
integer :: rdLocalmaxEdges
integer :: rdLocalmaxEdges2
integer :: rdLocalnVertLevels
- integer :: rdLocalnTracers
integer :: rdLocalTWO
integer :: rdLocalvertexDegree
@@ -74,8 +71,7 @@
maxEdges2, &
nVertLevels, &
TWO, &
- vertexDegree, &
- nTracers &
+ vertexDegree &
)
implicit none
@@ -89,7 +85,6 @@
integer, intent(out) :: maxEdges2
integer, intent(out) :: nVertLevels
integer, intent(out) :: TWO
- integer, intent(out) :: nTracers
integer, intent(out) :: vertexDegree
integer :: nferr
@@ -113,8 +108,6 @@
nferr = nf_inq_dimlen(rd_ncid, rdDimIDmaxEdges2, rdLocalmaxEdges2)
nferr = nf_inq_dimid(rd_ncid, 'nVertLevels', rdDimIDnVertLevels)
nferr = nf_inq_dimlen(rd_ncid, rdDimIDnVertLevels, rdLocalnVertLevels)
- nferr = nf_inq_dimid(rd_ncid, 'nTracers', rdDimIDnTracers)
- nferr = nf_inq_dimlen(rd_ncid, rdDimIDnTracers, rdLocalnTracers)
nferr = nf_inq_dimid(rd_ncid, 'vertexDegree', rdDimIDvertexDegree)
nferr = nf_inq_dimlen(rd_ncid, rdDimIDvertexDegree, rdLocalvertexDegree)
nferr = nf_inq_dimid(rd_ncid, 'TWO', rdDimIDTWO)
@@ -127,7 +120,6 @@
maxEdges = rdLocalmaxEdges
maxEdges2 = rdLocalmaxEdges2
nVertLevels = rdLocalnVertLevels
- nTracers = rdLocalnTracers
vertexDegree = rdLocalvertexDegree
TWO = rdLocalTWO
@@ -175,7 +167,6 @@
nferr = nf_inq_varid(rd_ncid, 'u', rdVarIDu)
nferr = nf_inq_varid(rd_ncid, 'v', rdVarIDv)
nferr = nf_inq_varid(rd_ncid, 'h', rdVarIDh)
- nferr = nf_inq_varid(rd_ncid, 'tracers', rdVarIDtracers)
end subroutine read_netcdf_init
@@ -222,8 +213,7 @@
h_s, &
u, &
v, &
- h, &
- tracers &
+ h &
)
implicit none
@@ -272,7 +262,6 @@
real (kind=8), dimension(:,:,:), intent(out) :: u
real (kind=8), dimension(:,:,:), intent(out) :: v
real (kind=8), dimension(:,:,:), intent(out) :: h
- real (kind=8), dimension(:,:,:,:), intent(out) :: tracers
integer :: nferr
integer, dimension(1) :: start1, count1
@@ -497,14 +486,6 @@
count3( 3) = 1
nferr = nf_get_vara_double(rd_ncid, rdVarIDh, start3, count3, h)
- start4(4) = time
- count4( 1) = rdLocalnTracers
- count4( 2) = rdLocalnVertLevels
- count4( 3) = rdLocalnCells
- count4( 4) = 1
- nferr = nf_get_vara_double(rd_ncid, rdVarIDtracers, start4, count4, tracers)
-
-
end subroutine read_netcdf_fields
Modified: branches/ocean_projects/basin/src/module_write_netcdf.F
===================================================================
--- branches/ocean_projects/basin/src/module_write_netcdf.F        2011-07-12 05:46:28 UTC (rev 916)
+++ branches/ocean_projects/basin/src/module_write_netcdf.F        2011-07-12 16:24:08 UTC (rev 917)
@@ -10,7 +10,6 @@
integer :: wrDimIDTWO
integer :: wrDimIDvertexDegree
integer :: wrDimIDnVertLevels
- integer :: wrDimIDnTracers
integer :: wrVarIDlatCell
integer :: wrVarIDlonCell
integer :: wrVarIDxCell
@@ -57,9 +56,9 @@
integer :: wrVarIDv
integer :: wrVarIDh
integer :: wrVarIDrho
- integer :: wrVarIDtracers
integer :: wrVarIDtemperature
integer :: wrVarIDsalinity
+ integer :: wrVarIDtracer1
integer :: wrVarIDtemperatureRestore
integer :: wrVarIDsalinityRestore
@@ -68,7 +67,6 @@
integer :: wrLocalnVertices
integer :: wrLocalmaxEdges
integer :: wrLocalnVertLevels
- integer :: wrLocalnTracers
integer :: wrLocalvertexDegree
contains
@@ -79,7 +77,6 @@
nVertices, &
maxEdges, &
nVertLevels, &
- nTracers, &
vertexDegree, &
sphere_radius, &
on_a_sphere &
@@ -94,7 +91,6 @@
integer, intent(in) :: nVertices
integer, intent(in) :: maxEdges
integer, intent(in) :: nVertLevels
- integer, intent(in) :: nTracers
integer, intent(in) :: vertexDegree
character (len=16) :: on_a_sphere
double precision :: sphere_radius
@@ -109,7 +105,6 @@
wrLocalnVertices = nVertices
wrLocalmaxEdges = maxEdges
wrLocalnVertLevels = nVertLevels
- wrLocalnTracers = nTracers
wrLocalvertexDegree = vertexDegree
nferr = nf_create('ocean.nc', IOR(NF_CLOBBER,NF_64BIT_OFFSET), wr_ncid)
@@ -125,7 +120,6 @@
nferr = nf_def_dim(wr_ncid, 'TWO', 2, wrDimIDTWO)
nferr = nf_def_dim(wr_ncid, 'vertexDegree', vertexDegree, wrDimIDvertexDegree)
nferr = nf_def_dim(wr_ncid, 'nVertLevels', nVertLevels, wrDimIDnVertLevels)
- nferr = nf_def_dim(wr_ncid, 'nTracers', nTracers, wrDimIDnTracers)
nferr = nf_def_dim(wr_ncid, 'Time', NF_UNLIMITED, wrDimIDTime)
!
@@ -248,11 +242,6 @@
dimlist( 2) = wrDimIDnCells
dimlist( 3) = wrDimIDTime
nferr = nf_def_var(wr_ncid, 'rho', NF_DOUBLE, 3, dimlist, wrVarIDrho)
- dimlist( 1) = wrDimIDnTracers
- dimlist( 2) = wrDimIDnVertLevels
- dimlist( 3) = wrDimIDnCells
- dimlist( 4) = wrDimIDTime
- nferr = nf_def_var(wr_ncid, 'tracers', NF_DOUBLE, 4, dimlist, wrVarIDtracers)
dimlist( 1) = wrDimIDnVertLevels
dimlist( 2) = wrDimIDnCells
dimlist( 3) = wrDimIDTime
@@ -261,6 +250,11 @@
dimlist( 2) = wrDimIDnCells
dimlist( 3) = wrDimIDTime
nferr = nf_def_var(wr_ncid, 'salinity', NF_DOUBLE, 3, dimlist, wrVarIDsalinity)
+ dimlist( 1) = wrDimIDnVertLevels
+ dimlist( 2) = wrDimIDnCells
+ dimlist( 3) = wrDimIDTime
+ ! If you do not want tracer1 in your input file, simply comment out these two lines (one of two)
+ nferr = nf_def_var(wr_ncid, 'tracer1', NF_DOUBLE, 3, dimlist, wrVarIDtracer1)
nferr = nf_put_att_text(wr_ncid, NF_GLOBAL, 'on_a_sphere', 16, on_a_sphere)
@@ -319,9 +313,9 @@
v, &
h, &
rho, &
- tracers, &
temperature, &
salinity, &
+ tracer1, &
temperatureRestore, &
salinityRestore &
)
@@ -377,9 +371,9 @@
real (kind=8), dimension(:,:,:), intent(in) :: v
real (kind=8), dimension(:,:,:), intent(in) :: h
real (kind=8), dimension(:,:,:), intent(in) :: rho
- real (kind=8), dimension(:,:,:,:), intent(in) :: tracers
real (kind=8), dimension(:,:,:), intent(in) :: temperature
real (kind=8), dimension(:,:,:), intent(in) :: salinity
+ real (kind=8), dimension(:,:,:), intent(in) :: tracer1
real (kind=8), dimension(:), intent(in) :: temperatureRestore
real (kind=8), dimension(:), intent(in) :: salinityRestore
@@ -617,13 +611,6 @@
count3( 3) = 1
nferr = nf_put_vara_double(wr_ncid, wrVarIDrho, start3, count3, rho)
- start4(4) = time
- count4( 1) = wrLocalnTracers
- count4( 2) = wrLocalnVertLevels
- count4( 3) = wrLocalnCells
- count4( 4) = 1
- nferr = nf_put_vara_double(wr_ncid, wrVarIDtracers, start4, count4, tracers)
-
start3(3) = time
count3( 1) = wrLocalnVertLevels
count3( 2) = wrLocalnCells
@@ -636,6 +623,13 @@
count3( 3) = 1
nferr = nf_put_vara_double(wr_ncid, wrVarIDsalinity, start3, count3, salinity)
+ start3(3) = time
+ count3( 1) = wrLocalnVertLevels
+ count3( 2) = wrLocalnCells
+ count3( 3) = 1
+ ! If you do not want tracer1 in your input file, simply comment out these two lines (two of two)
+ nferr = nf_put_vara_double(wr_ncid, wrVarIDtracer1, start3, count3, tracer1)
+
end subroutine write_netcdf_fields
</font>
</pre>