# Exact solution specification for error calculations #----------------------------------------------------------------------------- octree.KnownSolution = 'NoKnownSolution' #----------------------------------------------------------------------------- # Set solver parameters #----------------------------------------------------------------------------- octree.Solver = 'Richards' octree.Solver.MaxIter = 5 octree.Solver.Nonlinear.MaxIter = 10 octree.Solver.Nonlinear.ResidualTol = 1e-9 octree.Solver.Nonlinear.EtaChoice = 'EtaConstant' octree.Solver.Nonlinear.EtaValue = 1e-5 octree.Solver.Nonlinear.UseJacobian = True octree.Solver.Nonlinear.DerivativeEpsilon = 1e-2 octree.Solver.Linear.KrylovDimension = 10 octree.Solver.Linear.Preconditioner = 'PFMG' #----------------------------------------------------------------------------- # Run and Unload the ParFlow output files #----------------------------------------------------------------------------- dir_name = get_absolute_path('test_output/octree') mkdir(dir_name) octree.run(working_directory=dir_name)
#----------------------------------------------------------------------------- # this runs CLM test case #----------------------------------------------------------------------------- from parflow import Run from parflow.tools.fs import mkdir, cp, get_absolute_path clm = Run("clm", __file__) #----------------------------------------------------------------------------- # Making output directories and copying input files #----------------------------------------------------------------------------- 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)
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') # creating directory checkKO('test_directory') mkdir('test_directory') checkOK('test_directory') # creating same directory - you should get a message that this directory already exists. mkdir('test_directory') mkdir('test_directory/test1/test2/') checkOK('test_directory/test1/test2') # removing directory rm('test_directory') rm('test_directory') checkKO('test_directory')
# R. Maxwell, originally developed in 2009, updated PF Short Course 2019, updated to Python and Streamlit 2021 # [email protected] from parflow import Run import streamlit as st from parflow.tools.fs import get_absolute_path, cp, rm, mkdir, exists from parflowio.pyParflowio import PFData import matplotlib.pyplot as plt import numpy as np import plotly.graph_objects as go from plotly.subplots import make_subplots import plotly.io as pio base_dir = get_absolute_path(".") Dunne = Run("Dunne") mkdir('dunne_over') Dunne.FileVersion = 4 Dunne.Process.Topology.P = 1 Dunne.Process.Topology.Q = 1 Dunne.Process.Topology.R = 1 #--------------------------------------------------------- # Computational Grid #--------------------------------------------------------- Dunne.ComputationalGrid.Lower.X = 0.0 Dunne.ComputationalGrid.Lower.Y = 0.0 Dunne.ComputationalGrid.Lower.Z = 0.0 Dunne.ComputationalGrid.NX = 20 Dunne.ComputationalGrid.NY = 1
# also veg_map.pfb must be provided. # This tests 1D forcing of vegetation: a single time series is applied at each cell based on the cell's vegetation type (IGBP) # These time series are stored as columns (as many columns as IGBP vegetation classes -18) in input files. #----------------------------------------------------------------------------- from parflow import Run from parflow.tools.fs import mkdir, cp, chdir, get_absolute_path clm_veg = Run("clm_forfc_veg", __file__) #----------------------------------------------------------------------------- # Making output directories and copying input files #----------------------------------------------------------------------------- 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')