Welcome to the Virtual Ecosystem
This repository is the home for the development of the Virtual Ecosystem. The Virtual Ecosystem is a project to develop a simulation of all of the major processes involved in a real ecosystem including the:
growth and demographic processes of the primary producers within the forest,
microclimatic processes within and around the ecosystem,
hydrological processes within the canopy, soil and drainage networks,
biotic and abiotic processes within the soil, and the
growth and demography of heterotrophs.
Project details
This project is funded by a 2021 Distinguished Scientist award from the NOMIS Foundation to Professor Robert Ewers:
The research is based at Imperial College London:
Project Team
Professor Robert Ewers
Olivia Daniel
Dr. Jaideep Joshi
Dr. David Orme
Dr. Vivienne Groner
Dr. Jacob Cook
Dr. Taran Rallings
The research team are supported by the Imperial College London Research Software Engineering team.
- The Virtual Ecosystem models
- Basic Virtual Ecosystem model usage
- Virtual Ecosystem example data
- Virtual Ecosystem simulation flow
- Virtual Ecosystem parameterisation
- Further details of soil module
- The
core.grid
module - Adding and using data with the Virtual Ecosystem
- Core axes
- The configuration module
- Main
- Example data
- Core Overview
- Configuration
Config
Config.build_config()
Config.build_schema()
Config.cfg_paths
Config.cfg_strings
Config.collect_config_paths()
Config.config_errors
Config.export_config()
Config.from_cfg_strings
Config.load_config_toml()
Config.load_config_toml_string()
Config.merge_conflicts
Config.merged_schema
Config.model_classes
Config.override_config()
Config.resolve_config_file_paths()
Config.toml_contents
Config.toml_files
Config.validate_config()
Config.validated
config_merge()
- Logger
- Grid
GRID_REGISTRY
GRID_STRUCTURE_SIG
Grid
Grid.__repr__()
Grid.bounds
Grid.cell_area
Grid.cell_id
Grid.cell_nx
Grid.cell_ny
Grid.centroids
Grid.dump()
Grid.dumps()
Grid.from_config()
Grid.get_distances()
Grid.grid_type
Grid.map_xy_to_cell_id()
Grid.map_xy_to_cell_indexing()
Grid.ncells
Grid.neighbours
Grid.polygons
Grid.populate_distances()
Grid.set_neighbours()
Grid.xoff
Grid.yoff
make_hex_grid()
make_square_grid()
register_grid()
- Data
- File readers
- Core axes
- Base Model
- Declaring new subclasses
- Model checking
- The
BaseModel.__init__
method - The
from_config
factory method - Model registration
BaseModel
BaseModel.__init__()
BaseModel.__init_subclass__()
BaseModel.__repr__()
BaseModel.__str__()
BaseModel._check_model_name()
BaseModel._check_model_update_bounds()
BaseModel._check_required_init_vars()
BaseModel._check_vars_updated()
BaseModel.check_init_data()
BaseModel.cleanup()
BaseModel.core_constants
BaseModel.data
BaseModel.from_config()
BaseModel.layer_structure
BaseModel.model_name
BaseModel.model_timing
BaseModel.model_update_bounds
BaseModel.required_init_vars
BaseModel.setup()
BaseModel.spinup()
BaseModel.update()
BaseModel.vars_updated
- Core Components
- Core Constants
CoreConsts
CoreConsts.characteristic_dimension_leaf
CoreConsts.depth_of_active_soil_layer
CoreConsts.gas_constant_water_vapour
CoreConsts.gravity
CoreConsts.meters_to_mm
CoreConsts.molar_heat_capacity_air
CoreConsts.molecular_weight_air
CoreConsts.placeholder
CoreConsts.seconds_to_day
CoreConsts.standard_mole
CoreConsts.standard_pressure
CoreConsts.stefan_boltzmann_constant
CoreConsts.von_karmans_constant
CoreConsts.zero_Celsius
- Constants Classes
- Constants Loader
- Schema
- Module Registry
- Utility functions
- Custom exceptions
- Soil Overview
- Soil Model
IntegrationError
SoilModel
SoilModel.cleanup()
SoilModel.core_constants
SoilModel.data
SoilModel.from_config()
SoilModel.integrate()
SoilModel.layer_structure
SoilModel.model_constants
SoilModel.model_timing
SoilModel.model_update_bounds
SoilModel.required_init_vars
SoilModel.setup()
SoilModel.spinup()
SoilModel.top_soil_layer_index
SoilModel.update()
SoilModel.vars_updated
construct_full_soil_model()
make_slices()
- Soil Carbon
- Soil Environmental Factors
- Soil Constants
SoilConsts
SoilConsts.activation_energy_labile_C_saturation
SoilConsts.activation_energy_maom_decomp_rate
SoilConsts.activation_energy_maom_decomp_saturation
SoilConsts.activation_energy_microbial_turnover
SoilConsts.activation_energy_microbial_uptake
SoilConsts.activation_energy_pom_decomp_rate
SoilConsts.activation_energy_pom_decomp_saturation
SoilConsts.arrhenius_reference_temp
SoilConsts.base_soil_protection
SoilConsts.clay_necromass_decay_exponent
SoilConsts.cue_reference_temp
SoilConsts.cue_with_temperature
SoilConsts.half_sat_labile_C_uptake
SoilConsts.half_sat_maom_decomposition
SoilConsts.half_sat_pom_decomposition
SoilConsts.highest_optimal_pH_microbes
SoilConsts.lowest_optimal_pH_microbes
SoilConsts.maintenance_maom_enzyme
SoilConsts.maintenance_pom_enzyme
SoilConsts.maom_enzyme_turnover_rate
SoilConsts.max_decomp_rate_maom
SoilConsts.max_decomp_rate_pom
SoilConsts.max_pH_microbes
SoilConsts.max_uptake_rate_labile_C
SoilConsts.microbial_turnover_rate
SoilConsts.microbial_water_response_curvature
SoilConsts.min_pH_microbes
SoilConsts.necromass_to_lmwc
SoilConsts.pom_decomposition_fraction_lmwc
SoilConsts.pom_enzyme_turnover_rate
SoilConsts.reference_cue
SoilConsts.soil_microbe_water_potential_halt
SoilConsts.soil_microbe_water_potential_optimum
SoilConsts.soil_protection_with_clay
SoilConsts.solubility_coefficient_lmwc
- Abiotic Simple Overview
- Abiotic Simple Model
- The
AbioticSimpleModel
classAbioticSimpleModel
AbioticSimpleModel.bounds
AbioticSimpleModel.cleanup()
AbioticSimpleModel.core_constants
AbioticSimpleModel.data
AbioticSimpleModel.from_config()
AbioticSimpleModel.layer_structure
AbioticSimpleModel.model_constants
AbioticSimpleModel.model_timing
AbioticSimpleModel.model_update_bounds
AbioticSimpleModel.required_init_vars
AbioticSimpleModel.setup()
AbioticSimpleModel.spinup()
AbioticSimpleModel.update()
AbioticSimpleModel.vars_updated
- The
- Abiotic Simple Microclimate
- Abiotic Simple Constants
- Abiotic Mechanistic Overview
- Abiotic Mechanistic Model
- The
AbioticModel
classAbioticModel
AbioticModel.cleanup()
AbioticModel.core_constants
AbioticModel.data
AbioticModel.from_config()
AbioticModel.layer_structure
AbioticModel.model_constants
AbioticModel.model_timing
AbioticModel.model_update_bounds
AbioticModel.required_init_vars
AbioticModel.setup()
AbioticModel.spinup()
AbioticModel.update()
AbioticModel.vars_updated
- The
- Abiotic Mechanistic Constants
AbioticConsts
AbioticConsts.__init__()
AbioticConsts.bottom_leaf_air_conductivity
AbioticConsts.bottom_leaf_vapour_conductivity
AbioticConsts.canopy_temperature_ini_factor
AbioticConsts.diabatic_correction_factor_below
AbioticConsts.diabatic_heat_momentum_ratio
AbioticConsts.drag_coefficient
AbioticConsts.forced_conductance_parameter
AbioticConsts.gas_constant_water_vapour
AbioticConsts.grashof_parameter
AbioticConsts.initial_air_conductivity
AbioticConsts.kinematic_viscosity_parameters
AbioticConsts.latent_heat_vap_equ_factors
AbioticConsts.leaf_emissivity
AbioticConsts.leaf_heat_transfer_coefficient
AbioticConsts.light_extinction_coefficient
AbioticConsts.max_ratio_wind_to_friction_velocity
AbioticConsts.max_relative_turbulence_intensity
AbioticConsts.min_relative_turbulence_intensity
AbioticConsts.min_roughness_length
AbioticConsts.min_wind_speed_above_canopy
AbioticConsts.min_windspeed_below_canopy
AbioticConsts.mixing_length_factor
AbioticConsts.negative_free_conductance_parameter
AbioticConsts.positive_free_conductance_parameter
AbioticConsts.relative_turbulence_intensity
AbioticConsts.roughness_element_drag_coefficient
AbioticConsts.roughness_sublayer_depth_parameter
AbioticConsts.soil_emissivity
AbioticConsts.soil_thermal_conductivity
AbioticConsts.specific_heat_capacity_leaf
AbioticConsts.specific_heat_capacity_soil
AbioticConsts.specific_heat_equ_factors
AbioticConsts.stomatal_resistance
AbioticConsts.substrate_surface_drag_coefficient
AbioticConsts.surface_albedo
AbioticConsts.surface_layer_depth
AbioticConsts.thermal_diffusivity_parameters
AbioticConsts.top_leaf_air_conductivity
AbioticConsts.top_leaf_vapour_conductivity
AbioticConsts.turbulence_sign
AbioticConsts.volume_to_weight_conversion
AbioticConsts.yasuda_stability_parameters
AbioticConsts.zero_plane_scaling_parameter
- Abiotic Mechanistic Tools
- Abiotic Mechanistic Wind
calculate_diabatic_correction_above()
calculate_friction_velocity()
calculate_mean_mixing_length()
calculate_roughness_length_momentum()
calculate_wind_above_canopy()
calculate_wind_attenuation_coefficient()
calculate_wind_canopy()
calculate_wind_profile()
calculate_zero_plane_displacement()
generate_relative_turbulence_intensity()
wind_log_profile()
- Abiotic Mechanistic Energy Balance
calculate_delta_canopy_temperature()
calculate_leaf_and_air_temperature()
calculate_longwave_emission()
calculate_slope_of_saturated_pressure_curve()
initialise_absorbed_radiation()
initialise_canopy_and_soil_fluxes()
initialise_canopy_temperature()
latent_heat_flux_linearisation()
leaf_and_air_temperature_linearisation()
longwave_radiation_flux_linearisation()
vapour_pressure_linearisation()
- Abiotic Mechanistic Soil Energy Balance
- Abiotic Mechanistic Conductivities
- Hydrology Overview
- Hydrology Model
HydrologyModel
HydrologyModel.cleanup()
HydrologyModel.core_constants
HydrologyModel.data
HydrologyModel.drainage_map
HydrologyModel.from_config()
HydrologyModel.initial_groundwater_saturation
HydrologyModel.initial_soil_moisture
HydrologyModel.layer_structure
HydrologyModel.model_constants
HydrologyModel.model_timing
HydrologyModel.model_update_bounds
HydrologyModel.required_init_vars
HydrologyModel.setup()
HydrologyModel.spinup()
HydrologyModel.update()
HydrologyModel.vars_updated
calculate_layer_thickness()
setup_hydrology_input_current_timestep()
- Hydrology Above-ground
- Hydrology Below-ground
- Hydrology Constants
HydroConsts
HydroConsts.__init__()
HydroConsts.air_entry_water_potential
HydroConsts.extinction_coefficient_global_radiation
HydroConsts.groundwater_capacity
HydroConsts.groundwater_loss
HydroConsts.hydraulic_conductivity
HydroConsts.hydraulic_gradient
HydroConsts.infiltration_shape_parameter
HydroConsts.intercept_parameters
HydroConsts.max_percolation_rate_uzlz
HydroConsts.nonlinearily_parameter
HydroConsts.reservoir_const_lower_groundwater
HydroConsts.reservoir_const_upper_groundwater
HydroConsts.soil_moisture_capacity
HydroConsts.soil_moisture_residual
HydroConsts.soil_surface_heat_transfer_coefficient
HydroConsts.stream_flow_capacity
HydroConsts.veg_density_param
HydroConsts.water_retention_curvature
- Animal Overview
- Animal Model
AnimalModel
AnimalModel.calculate_density_for_cohort()
AnimalModel.calculate_litter_additions()
AnimalModel.cleanup()
AnimalModel.communities
AnimalModel.core_constants
AnimalModel.data
AnimalModel.from_config()
AnimalModel.functional_groups
AnimalModel.get_community_by_key()
AnimalModel.layer_structure
AnimalModel.model_constants
AnimalModel.model_timing
AnimalModel.model_update_bounds
AnimalModel.required_init_vars
AnimalModel.setup()
AnimalModel.spinup()
AnimalModel.update()
AnimalModel.update_interval_timedelta
AnimalModel.update_population_densities()
AnimalModel.vars_updated
- Animal Communities
AnimalCommunity
AnimalCommunity.all_animal_cohorts
AnimalCommunity.animal_cohorts
AnimalCommunity.birth()
AnimalCommunity.birth_community()
AnimalCommunity.carcass_pool
AnimalCommunity.collect_prey()
AnimalCommunity.community_key
AnimalCommunity.constants
AnimalCommunity.data
AnimalCommunity.excrement_pool
AnimalCommunity.forage_community()
AnimalCommunity.functional_groups
AnimalCommunity.get_destination
AnimalCommunity.increase_age_community()
AnimalCommunity.inflict_natural_mortality_community()
AnimalCommunity.metabolize_community()
AnimalCommunity.migrate()
AnimalCommunity.migrate_community()
AnimalCommunity.neighbouring_keys
AnimalCommunity.populate_community()
AnimalCommunity.remove_dead_cohort()
AnimalCommunity.remove_dead_cohort_community()
- Animal Protocols
- Animal Cohorts
AnimalCohort
AnimalCohort.F_i_j_individual()
AnimalCohort.F_i_k()
AnimalCohort.adult_natural_mortality_prob
AnimalCohort.age
AnimalCohort.calculate_alpha()
AnimalCohort.calculate_consumed_mass_herbivory()
AnimalCohort.calculate_consumed_mass_predation()
AnimalCohort.calculate_potential_consumed_biomass()
AnimalCohort.calculate_potential_prey_consumed()
AnimalCohort.calculate_predation_search_rate()
AnimalCohort.calculate_predation_success_probability()
AnimalCohort.calculate_theta_opt_i()
AnimalCohort.calculate_total_handling_time_for_herbivory()
AnimalCohort.calculate_total_handling_time_for_predation()
AnimalCohort.constants
AnimalCohort.damuth_density
AnimalCohort.decay_fraction_carcasses
AnimalCohort.decay_fraction_excrement
AnimalCohort.delta_mass_herbivory()
AnimalCohort.delta_mass_predation()
AnimalCohort.die_individual()
AnimalCohort.eat()
AnimalCohort.excrete()
AnimalCohort.forage_cohort()
AnimalCohort.functional_group
AnimalCohort.get_eaten()
AnimalCohort.increase_age()
AnimalCohort.individuals
AnimalCohort.inflict_natural_mortality()
AnimalCohort.intake_rate
AnimalCohort.is_alive
AnimalCohort.is_below_mass_threshold()
AnimalCohort.mass_current
AnimalCohort.metabolize()
AnimalCohort.name
AnimalCohort.prey_groups
AnimalCohort.reproductive_mass
AnimalCohort.theta_i_j()
AnimalCohort.update_carcass_pool()
- Animal Functional Groups
FunctionalGroup
FunctionalGroup.adult_mass
FunctionalGroup.birth_mass
FunctionalGroup.constants
FunctionalGroup.conversion_efficiency
FunctionalGroup.damuths_law_terms
FunctionalGroup.diet
FunctionalGroup.fat_mass_terms
FunctionalGroup.intake_rate_terms
FunctionalGroup.longevity_scaling
FunctionalGroup.mechanical_efficiency
FunctionalGroup.metabolic_rate_terms
FunctionalGroup.metabolic_type
FunctionalGroup.muscle_mass_terms
FunctionalGroup.name
FunctionalGroup.prey_scaling
FunctionalGroup.taxa
import_functional_groups()
- Animal Traits
- Animal Scaling Functions
- Animal Constants
AnimalConsts
AnimalConsts.M_herb_0
AnimalConsts.M_herb_ref
AnimalConsts.M_pred_ref
AnimalConsts.N_sigma_opt_pred_prey
AnimalConsts.alpha_0_herb
AnimalConsts.alpha_0_pred
AnimalConsts.b_herb
AnimalConsts.b_pred
AnimalConsts.c_tol
AnimalConsts.c_tsm
AnimalConsts.h_herb_0
AnimalConsts.h_pred_0
AnimalConsts.m_tol
AnimalConsts.m_tsm
AnimalConsts.phi_herb_t
AnimalConsts.sigma_f_t
AnimalConsts.sigma_opt_f
AnimalConsts.sigma_opt_pred_prey
AnimalConsts.tau_f
AnimalConsts.theta_opt_f
AnimalConsts.theta_opt_min_f
DECAY_FRACTION_CARCASSES
DECAY_FRACTION_EXCREMENT
- Animal Decay
- Animal Plant Resources
- Litter Overview
- Litter Model
LitterModel
LitterModel.cleanup()
LitterModel.core_constants
LitterModel.data
LitterModel.from_config()
LitterModel.layer_structure
LitterModel.model_constants
LitterModel.model_timing
LitterModel.model_update_bounds
LitterModel.required_init_vars
LitterModel.setup()
LitterModel.spinup()
LitterModel.surface_layer_index
LitterModel.top_soil_layer_index
LitterModel.update()
LitterModel.vars_updated
- Litter Pools
calculate_carbon_mineralised()
calculate_change_in_lignin()
calculate_change_in_litter_variables()
calculate_decay_rates()
calculate_environmental_factors()
calculate_lignin_updates()
calculate_litter_chemistry_factor()
calculate_litter_decay_metabolic_above()
calculate_litter_decay_metabolic_below()
calculate_litter_decay_structural_above()
calculate_litter_decay_structural_below()
calculate_litter_decay_woody()
calculate_moisture_effect_on_litter_decomp()
calculate_temperature_effect_on_litter_decomp()
calculate_total_C_mineralised()
calculate_updated_pools()
- Litter Constants
LitterConsts
LitterConsts.cue_metabolic
LitterConsts.cue_structural_above_ground
LitterConsts.cue_structural_below_ground
LitterConsts.cue_woody
LitterConsts.lignin_inhibition_factor
LitterConsts.lignin_proportion_above_structural_input
LitterConsts.lignin_proportion_below_structural_input
LitterConsts.lignin_proportion_wood_input
LitterConsts.litter_decay_constant_metabolic_above
LitterConsts.litter_decay_constant_metabolic_below
LitterConsts.litter_decay_constant_structural_above
LitterConsts.litter_decay_constant_structural_below
LitterConsts.litter_decay_constant_woody
LitterConsts.litter_decay_water_potential_halt
LitterConsts.litter_decay_water_potential_optimum
LitterConsts.litter_decomp_offset_temp
LitterConsts.litter_decomp_reference_temp
LitterConsts.litter_decomp_temp_response
LitterConsts.litter_input_to_metabolic_above
LitterConsts.litter_input_to_metabolic_below
LitterConsts.litter_input_to_structural_above
LitterConsts.litter_input_to_structural_below
LitterConsts.litter_input_to_woody
LitterConsts.moisture_response_curvature
- Plants Model
- The
plants_model
modulePlantsModel
PlantsModel.allocate_gpp()
PlantsModel.cleanup()
PlantsModel.communities
PlantsModel.core_constants
PlantsModel.data
PlantsModel.estimate_gpp()
PlantsModel.flora
PlantsModel.from_config()
PlantsModel.layer_structure
PlantsModel.model_constants
PlantsModel.model_timing
PlantsModel.model_update_bounds
PlantsModel.required_init_vars
PlantsModel.set_absorbed_irradiance()
PlantsModel.setup()
PlantsModel.spinup()
PlantsModel.update()
PlantsModel.update_canopy_layers()
PlantsModel.vars_updated
- The plants
constants
module
- The
- Plants Structures
- Strategy
- Developer Setup
- Documentation Overview
- Jupyter Notebooks
- Docstring Style
- API Generation
- Core Design
- Adding New Models
- Package Releases