Model Structure
The following interactive diagram shows the structure of the FRICOSIPY, allowing new users to familiarise themselves with the model. Unless the user intents to adapt the model, it is only necessary to interact with the main Python scipts in the root directory to run a FRICOSIPY simulation.
main
The main model directory containing the principal model source code.
main
The main model directory containing the principal model source code.
kernelThe directory containing the core scripts of the FRICOSIPY model.
kernelThe directory containing the core scripts of the FRICOSIPY model.
fricosipy_core.py
The core script of the FRICOSIPY model that runs the simulation for a single spatial node and executes the main temporal loop.
io.py
The input/output (io) file that reads the input model datasets (static, meteo & illumination) and writes the output dataset.
grid.py
The grid Python class file that controls the numerical mesh of the subsurface layers.
node.py
The node Python class file that maintains the state variables for a single layer (node) of the subsurface grid.
init.py
The initialisation (init) file that establishes the subsurface grid according to the user-specified initial conditions in the parameters file.
modules
The directory containing the physical processes of the model.
modules
The directory containing the physical processes of the model.shortwave_radiation.py
The shortwave radiation module calculates the incident shortwave radiation based on Iqbal (1983) and Klok & Oerlemans (2002).
albedo.py
The albedo modules calculates the temporal decay of the surface albedo since the last significant snowfall event using the parameterisations of either Oerlemans & Knap (1998) or Bougamont et al. (2005).
penetrating_radiation.py
The penetrating radiation module apportions part of the incident shortwave radiation to penetrate the subsurface and, if there is sufficient energy, simulates subsurface melting. It is parameterised using the approach of Bintanja & van den Broeke (1995).
surface_roughness.py
The surface roughness module calculates the linear increase of the surface roughness since the last significant snowfall event using the parameterisation of Molg et al. (2012).
surface_temperature.py
The surface temperature module evaluates the surface energy fluxes in order to determine the surface temperature using a Newton-Raphson or SLSQP algorithm.
darcy_fluxes.py
The darcy fluxes module calculates the instanteous water fluxes between subsurface layers based on the Dary-Buckingham law using simplified numerical approach of Hirashima et al. (2010).
percolation_refreezing.py
The percolation-refreezing module percolates water between the subsurface layers, and if there is sufficient cold content, simulates refreezing.
thermal_diffusion.py
The thermal diffusion module resolves the Fourier heat equation using using an explicit, second-order central difference scheme.
snow_metamorphism.py
The snow metamorphism module calculates the increase in snow grain size using the parameterisation of Katsushima et al. (2009).
densification.py
The densification modules calculates the increase in the density of subsurface layers using the parameterisations of either Anderson (1976) or Ligtenberg et al. (2011).
data
The data directory containing all the model input and output files.
data
The data directory containing all the model input and output files.
static
The data directory containing input static NetCDF files.
static
The data directory containing input static NetCDF files.
CSV
The data directory containing CSV data to create input static files.
CSV
The data directory containing CSV data to create input static files.static_data.csv
An exemplar CSV data file containing topographic information to create an input static NetCDF file.
GeoTIFF
The data directory containing GeoTIFFs to create input static files.
GeoTIFF
The data directory containing GeoTIFFs to create input static files.DEM.tif
An exemplar GeoTIFF data file (Digital Elevation Model) containing topographic information to create an input static NetCDF file.
SHP
The data directory containing shapefiles that define the glacier mask.
SHP
The data directory containing shapefiles that define the glacier mask.mask.shp
An exemplar shapefile demarcating the boundary of the glacier and determining which spatial nodes are simulated.
static.nc
An exemplar input static NetCDF file that contains topographic information that varies across the spatial domain \((x,y)\).
meteo
The data directory containing input meteo NetCDF files.
meteo
The data directory containing input meteo NetCDF files.
CSV
The data directory containing CSV data to create input meteo files.
CSV
The data directory containing CSV data to create input meteo files.meteo_data.csv
An exemplar CSV data file containing meteorological information to create an input meteo NetCDF file.
meteo.nc
An exemplar input meteo NetCDF file that contains meteorological data varying through time \((t)\).
illumination
The data directory containing input illumination NetCDF files.
illumination
The data directory containing input illumination NetCDF files.illumination.nc
An exemplar input illumination NetCDF file that determines whether grid nodes across the spatial domain \((x,y)\) are illuminated by the sun for any given timestep \((t)\) in a standard calendar and leap year.
output
The data directory containing output NetCDF files.
output
The data directory containing output NetCDF files.
output_timestamps
The data directory containing CSV data to define output timestamps.
output_timestamps
The data directory containing CSV data to define output timestamps.output_timestamps.csv
An exemplar CSV data file containing specific timestamps in datetime format [yyyy-mm-dd hh:mm] to reduce the size of the output dataset.
output.nc
An exemplar output NetCDF file containing the results of the FRICOSIPY simulation \((x,y,z,t)\).
utilities
The utilities directory containing auxillary scripts to create the model input files.
utilities
The utilities directory containing auxillary scripts to create the model input files.
create_STATICThe directory containing the create static utility programs.
create_STATICThe directory containing the create static utility programs.
create_static_netcdf_from_csv.py
The utility program that creates input static files from CSVs.
create_static_netcdf_from_GeoTIFF.py
The utility program that creates input static files from GeoTIFFs.

create_METEOThe directory containing the create meteo utility program.
create_METEOThe directory containing the create meteo utility program.
create_meteo_netcdf.py
The utility program that creates input meteo files.

create_ILLUMINATIONThe directory containing the create illumination utility program.
create_ILLUMINATIONThe directory containing the create illumination utility program.
create_illumination_netcdf.py
The utility program that creates input illumination files.
docs
The documentation directory containing the scripts for this Read the Docs website.
FRICOSIPY.py
The main executable file of the FRICOSIPY model.
config.py
The configuration file that allows the user to configure the setup for the current FRICOSIPY simulation.
parameters.py
The parameters file that allows the user to specify the parameterisations and set the parameter values used in the simulation.
constants.py
The constants file that contains fixed physical constants used in the model calculations that should not be modified.
result_viewer.ipynb
The Jupyter Notebook containing various plotting functions to help visualise the results.
requirements.txt
The requirements file containing a list of packages required in the model Conda environment.