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.

kernel

The 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.

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.

static

The data directory containing input static NetCDF 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.

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.

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.

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.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_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.

create_STATIC

The 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_METEO

The directory containing the create meteo utility program.

create_meteo_netcdf.py

The utility program that creates input meteo files.

create_ILLUMINATION

The 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.