# 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] #-----------------------------------------------------------------------------
#-------------------------------------------------------------- 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
# 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
def copy_driver_files(): for name, file_name in default_driver_file_names.items(): path = default_driver_file_paths[name] cp(path, file_name)
# 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')
#----------------------------------------------------------------------------- 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
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
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
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
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')
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)
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
# 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