示例#1
0
# with different timesteps and reuse values set to match.   E.G. 1s = reuse 1, 0.1s = reuse 10.
#-----------------------------------------------------------------------------

from parflow import Run
from parflow.tools.fs import cp, mkdir, get_absolute_path

clm = Run("clm_reuse", __file__)

#-----------------------------------------------------------------------------
# Copying input files
#-----------------------------------------------------------------------------

dir_name = get_absolute_path('test_output/clm_reuse')
mkdir(dir_name)

cp('$PF_SRC/test/tcl/clm/clm-reuse/drv_clmin.dat', dir_name)
cp('$PF_SRC/test/tcl/clm/clm-reuse/drv_vegm.dat', dir_name)
cp('$PF_SRC/test/tcl/clm/clm-reuse/drv_vegp.dat', dir_name)
cp('$PF_SRC/test/tcl/clm/clm-reuse/forcing_1.txt', dir_name)

#-----------------------------------------------------------------------------
# Setting test variables
#-----------------------------------------------------------------------------

# Total runtime of simulation
stopt = 100

# Reuse values to run with
reuseValues = [1, 4]

#-----------------------------------------------------------------------------
示例#2
0
#--------------------------------------------------------------

from parflow import Run
from parflow.tools.fs import cp, mkdir, chdir, get_absolute_path

LWvdz = Run("LWvdz", __file__)

#---------------------------------------------------------
# Copying slope files
#---------------------------------------------------------

dir_name = get_absolute_path('test_output/LWvdz')
mkdir(dir_name)
chdir(dir_name)

cp('$PF_SRC/test/input/lw.1km.slope_x.10x.pfb')
cp('$PF_SRC/test/input/lw.1km.slope_y.10x.pfb')

#---------------------------------------------------------

LWvdz.FileVersion = 4

LWvdz.Process.Topology.P = 1
LWvdz.Process.Topology.Q = 1
LWvdz.Process.Topology.R = 1

#---------------------------------------------------------
# Computational Grid
#---------------------------------------------------------

LWvdz.ComputationalGrid.Lower.X = 0.0
示例#3
0
#  This is a 2D crater problem w/ time varying input and topography
#-----------------------------------------------------------------------------

from parflow import Run
from parflow.tools.fs import cp, mkdir, get_absolute_path

crater = Run("crater", __file__)

# ---------------------------------------------------------
# Copy testing data in test directory
# ---------------------------------------------------------

dir_name = get_absolute_path('test_output/crater')
mkdir(dir_name)

cp('$PF_SRC/test/input/crater2D.pfsol', dir_name)

# ---------------------------------------------------------

crater.FileVersion = 4

crater.Process.Topology.P = 1
crater.Process.Topology.Q = 1
crater.Process.Topology.R = 1

#---------------------------------------------------------
# Computational Grid
#---------------------------------------------------------

crater.ComputationalGrid.Lower.X = 0.0
crater.ComputationalGrid.Lower.Y = 0.0
示例#4
0
def copy_driver_files():
    for name, file_name in default_driver_file_names.items():
        path = default_driver_file_paths[name]
        cp(path, file_name)
示例#5
0
# Update the working directory via the __file__ arg
os_fxn = Run("os_fxn", __file__)


def checkOK(file_path):
    if not exists(file_path):
        sys.exit(1)


def checkKO(file_path):
    if exists(file_path):
        sys.exit(1)


# copying file from adjacent directory
cp('$PF_SRC/test/input/BasicSettings.yaml')
checkOK('BasicSettings.yaml')

cp('$PF_SRC/test/input/BasicSettings.yaml', 'TestCopyFile.yaml')
checkOK('TestCopyFile.yaml')

# copying file from adjacent directory with environment variable
cp('$PF_SRC/README.md')
checkOK('README.md')

# removing files
rm('BasicSettings.yaml')
checkKO('BasicSettings.yaml')
rm('README.md')
checkKO('README.md')
示例#6
0
#-----------------------------------------------------------------------------

dir_name = get_absolute_path('test_output/clm')
mkdir(dir_name)

directories = [
    'qflx_evap_grnd', 'eflx_lh_tot', 'qflx_evap_tot', 'qflx_tran_veg',
    'correct_output', 'qflx_infl', 'swe_out', 'eflx_lwrad_out', 't_grnd',
    'diag_out', 'qflx_evap_soi', 'eflx_soil_grnd', 'eflx_sh_tot',
    'qflx_evap_veg', 'qflx_top_soil'
]

for directory in directories:
    mkdir(dir_name + '/' + directory)

cp('$PF_SRC/test/tcl/clm/drv_clmin.dat', dir_name)
cp('$PF_SRC/test/tcl/clm/drv_vegm.dat', dir_name)
cp('$PF_SRC/test/tcl/clm/drv_vegp.dat', dir_name)
cp('$PF_SRC/test/tcl/clm/narr_1hr.sc3.txt.0', dir_name)

#-----------------------------------------------------------------------------
# File input version number
#-----------------------------------------------------------------------------

clm.FileVersion = 4

#-----------------------------------------------------------------------------
# Process Topology
#-----------------------------------------------------------------------------

clm.Process.Topology.P = 1
示例#7
0
hflow.Geom.lower_aquifer.Lower.X = 0.0
hflow.Geom.lower_aquifer.Lower.Y = 0.0
hflow.Geom.lower_aquifer.Lower.Z = 0.0

hflow.Geom.lower_aquifer.Upper.X = 17.0
hflow.Geom.lower_aquifer.Upper.Y = 10.2
hflow.Geom.lower_aquifer.Upper.Z = 1.5

#-----------------------------------------------------------------------------
# Perm
#-----------------------------------------------------------------------------

hflow.Geom.Perm.Names = 'upper_aquifer lower_aquifer'

# we open a file, in this case from PEST to set upper and lower kg and sigma
cp('$PF_SRC/test/input/stats4.txt')
chdir('.')

file = open('stats4.txt', 'r')
lines = file.readlines()
kgu = float(lines[0])
varu = float(lines[1])
kgl = float(lines[2])
varl = float(lines[3])

## we use the parallel turning bands formulation in ParFlow to simulate
## GRF for upper and lower aquifer

hflow.Geom.upper_aquifer.Perm.Type = 'TurnBands'
hflow.Geom.upper_aquifer.Perm.LambdaX = 3.60
hflow.Geom.upper_aquifer.Perm.LambdaY = 3.60
示例#8
0
from parflow import Run
from parflow.tools.fs import cp, mkdir, chdir, get_absolute_path
from parflow.tools import settings

forsyth2 = Run("forsyth2", __file__)

#---------------------------------------------------------
# Copy solid file
#---------------------------------------------------------

dir_name = get_absolute_path('test_output/forsyth2')
mkdir(dir_name)
chdir(dir_name)
settings.set_working_directory()

cp('$PF_SRC/test/input/fors2_hf.pfsol')

#---------------------------------------------------------

forsyth2.FileVersion = 4

forsyth2.Process.Topology.P = 1
forsyth2.Process.Topology.Q = 1
forsyth2.Process.Topology.R = 1

#---------------------------------------------------------
# Computational Grid
#---------------------------------------------------------

forsyth2.ComputationalGrid.Lower.X = 0.0
forsyth2.ComputationalGrid.Lower.Y = 0.0
示例#9
0
import sys
from parflow import Run
from parflow.tools.fs import cp, mkdir, chdir, get_absolute_path

ifield = Run("indicator_field", __file__)

#---------------------------------------------------------
# Copying files
#---------------------------------------------------------

dir_name = get_absolute_path('test_output/ifield')
mkdir(dir_name)
chdir(dir_name)

cp('$PF_SRC/test/input/small_domain.pfsol')
cp('$PF_SRC/test/input/small_domain_indicator_field.pfb')

#---------------------------------------------------------

ifield.FileVersion = 4

# Control use of indicator field:
# 0 = use domain
# 1 = use indicator field
useIndicatorField = 1

ifield.Process.Topology.P = 1
ifield.Process.Topology.Q = 1
ifield.Process.Topology.R = 1
示例#10
0
from parflow.tools.builders import CLMImporter


washita = Run('washita', __file__)

#-----------------------------------------------------------------------------
# Import the driver files, and remove them.
#-----------------------------------------------------------------------------

# Set up the computational grid
washita.ComputationalGrid.NX = 41
washita.ComputationalGrid.NY = 41
washita.ComputationalGrid.NZ = 50

# Copy over the driver files
cp('$PF_SRC/test/tcl/washita/clm_input/drv_clmin.dat')
cp('$PF_SRC/test/tcl/washita/clm_input/drv_vegm.alluv.dat')
cp('$PF_SRC/test/tcl/washita/clm_input/drv_vegp.dat')

# Import the driver files
CLMImporter(washita) \
    .set_default_land_names() \
    .input_file() \
    .parameters_file() \
    .map_file('drv_vegm.alluv.dat')

# Write out the yaml file
washita.write('washita', file_format='yaml')

# Remove the driver files
rm('drv_clmin.dat')
示例#11
0
washita = Run('washita_clm_keys', __file__)

#-----------------------------------------------------------------------------
# Import the driver files, and remove them.
#-----------------------------------------------------------------------------

# Set up the computational grid
washita.ComputationalGrid.NX = 41
washita.ComputationalGrid.NY = 41
washita.ComputationalGrid.NZ = 50

#-----------------------------------------------------------------------------
# Copy input files
#-----------------------------------------------------------------------------

cp('$PF_SRC/test/tcl/washita/parflow_input/LW.slopex.pfb')
cp('$PF_SRC/test/tcl/washita/parflow_input/LW.slopey.pfb')
cp('$PF_SRC/test/tcl/washita/parflow_input/IndicatorFile_Gleeson.50z.pfb')
cp('$PF_SRC/test/tcl/washita/parflow_input/press.init.pfb')

nldas_files = [
    'NLDAS.DSWR.000001_to_000024.pfb', 'NLDAS.DLWR.000001_to_000024.pfb',
    'NLDAS.APCP.000001_to_000024.pfb', 'NLDAS.Temp.000001_to_000024.pfb',
    'NLDAS.UGRD.000001_to_000024.pfb', 'NLDAS.VGRD.000001_to_000024.pfb',
    'NLDAS.Press.000001_to_000024.pfb', 'NLDAS.SPFH.000001_to_000024.pfb'
]

for file in nldas_files:
    cp('$PF_SRC/test/tcl/washita/NLDAS/' + file)
    washita.dist(file, R=24)
示例#12
0
dir_name = get_absolute_path('test_output/clm_veg')
mkdir(dir_name)
chdir(dir_name)

directories = [
    'qflx_evap_grnd', 'eflx_lh_tot', 'qflx_evap_tot', 'qflx_tran_veg',
    'correct_output', 'qflx_infl', 'swe_out', 'eflx_lwrad_out', 't_grnd',
    'diag_out', 'qflx_evap_soi', 'eflx_soil_grnd', 'eflx_sh_tot',
    'qflx_evap_veg', 'qflx_top_soil'
]

for directory in directories:
    mkdir(directory)

cp('$PF_SRC/test/tcl/clm/drv_clmin.dat')
cp('$PF_SRC/test/tcl/clm/drv_vegm.dat')
cp('$PF_SRC/test/tcl/clm/drv_vegp.dat')
cp('$PF_SRC/test/tcl/clm/lai.dat')
cp('$PF_SRC/test/tcl/clm/sai.dat')
cp('$PF_SRC/test/tcl/clm/z0m.dat')
cp('$PF_SRC/test/tcl/clm/displa.dat')
cp('$PF_SRC/test/tcl/clm/narr_1hr.sc3.txt.0')
cp('$PF_SRC/test/tcl/clm/veg_map.cpfb', 'veg_map.pfb')

#-----------------------------------------------------------------------------
# File input version number
#-----------------------------------------------------------------------------

clm_veg.FileVersion = 4
示例#13
0
#  it is used as a test of active/inactive efficiency
#------------------------------------------------------------------

from parflow import Run
from parflow.tools.fs import cp, mkdir, get_absolute_path

small_domain = Run("small_domain", __file__)

#---------------------------------------------------------
# Copying solid file
#---------------------------------------------------------

dir_name = get_absolute_path('test_output/small_domain')
mkdir(dir_name)

cp('$PF_SRC/test/input/small_domain.pfsol', dir_name)

#---------------------------------------------------------
# Setting size for domain
#---------------------------------------------------------

size = 1

#---------------------------------------------------------

small_domain.FileVersion = 4

small_domain.Process.Topology.P = 1
small_domain.Process.Topology.Q = 1
small_domain.Process.Topology.R = 1