Start with the scientific process you need, then choose a model and inspect its requirements. PlantSimEngine can list models from packages already loaded in your Julia session. It does not search all installed or available packages.
| You want to… | Start here |
|---|---|
| Learn the interface with small examples | PlantSimEngine.Examples and one-object simulation |
| Work on leaf gas exchange or energy balance | PlantBiophysics.jl and its model documentation |
| Write a new equation | New process or new model? |
| Compare two implementations | Model compatibility and replacement |
The Toy... models in these tutorials are teaching examples. Their presence in a catalog does not establish scientific validation.
After loading a package, list its process types with Authoring.available_processes(). For a known process, request its models:
using PlantSimEngine, DataFrames
using PlantSimEngine.Examples
Authoring.available_models(AbstractGrowthModel)In your own session, load the relevant scientific package first. The table on this website reflects the documentation build's session only.
Construct a real model with explicit parameters. This avoids guessing the defaults of a type that requires arguments.
candidate = ToyRUEGrowthModel(0.2)
description = Authoring.describe_model(candidate)
(
model=description.model_type,
process=description.process,
parameters=description.parameters,
inputs=inputs(candidate),
outputs=outputs(candidate),
)Read the package documentation to understand the equations, parameter units, assumptions, and conditions where the model has been tested. The report only shows the information its author has supplied.
variable_contracts(candidate) shows the units and physical meaning recorded for each variable. These declarations are called variable contracts. If one side of a connection has a contract, the other side must have the same one. Ask the model author to add missing declarations. If the quantities differ, for example a value per plant and a value per ground area, use a separate model to perform the conversion.
Confirm that its inputs can come from your data, environment, or other models.
Check that connected values have the same units, refer to the same area or object, and describe the same time period. Check whether each is a total, an average, or a rate.
Use Authoring.compare_models(current, candidate) when replacing a model.
Validate the assembled scenario with Authoring.validate_scenario, then check a small run against an expected result.
See Coupling models for connection choices and Model compatibility and replacement for a complete comparison.
The following table is generated from the loaded modules. complete=false means a type could not provide a complete description, for example because it needs parameter values before it can be created. Create a model with those parameters and inspect it before choosing it. The provenance column records where the description came from: the author's declarations or information found by examining the code. Detailed reports give this source for each field.
catalog| Row | process | model | package | complete | provenance |
|---|---|---|---|---|---|
| Symbol | String | String | Bool | Symbol | |
| 1 | light_interception | Beer | PlantSimEngine | false | best_effort |
| 2 | process1 | Process1Model | PlantSimEngine | false | best_effort |
| 3 | process2 | Process2Model | PlantSimEngine | true | best_effort |
| 4 | process3 | Process3Model | PlantSimEngine | true | best_effort |
| 5 | process4 | Process4Model | PlantSimEngine | true | best_effort |
| 6 | process5 | Process5Model | PlantSimEngine | true | best_effort |
| 7 | process6 | Process6Model | PlantSimEngine | true | best_effort |
| 8 | process7 | Process7Model | PlantSimEngine | true | best_effort |
| 9 | growth | ToyAssimGrowthModel{Float64} | PlantSimEngine | true | best_effort |
| 10 | carbon_assimilation | ToyAssimModel{Float64} | PlantSimEngine | true | best_effort |
| 11 | carbon_allocation | ToyCAllocationModel | PlantSimEngine | true | best_effort |
| 12 | carbon_biomass | ToyCBiomassModel | PlantSimEngine | false | best_effort |
| 13 | carbon_demand | ToyCDemandModel | PlantSimEngine | false | best_effort |
| 14 | toy_daily_development | ToyDailyDevelopmentModel | PlantSimEngine | false | best_effort |
| 15 | Degreedays | ToyDegreeDaysCumulModel{Float64} | PlantSimEngine | true | best_effort |
| 16 | toy_development | ToyDevelopmentModel | PlantSimEngine | false | best_effort |
| 17 | toy_environment_controller | ToyEnvironmentControllerModel | PlantSimEngine | false | best_effort |
| 18 | toy_environment_reader | ToyEnvironmentReaderModel | PlantSimEngine | true | best_effort |
| 19 | LAI_Dynamic | ToyLAIModel{Float64} | PlantSimEngine | true | best_effort |
| 20 | LAI_Dynamic | ToyLAIfromLeafAreaModel | PlantSimEngine | false | best_effort |
| 21 | leaf_surface | ToyLeafSurfaceModel | PlantSimEngine | false | best_effort |
| 22 | light_partitioning | ToyLightPartitioningModel | PlantSimEngine | true | best_effort |
| 23 | maintenance_respiration | ToyMaintenanceRespirationModel | PlantSimEngine | false | best_effort |
| 24 | leaf_surface | ToyPlantLeafSurfaceModel | PlantSimEngine | true | best_effort |
| 25 | maintenance_respiration | ToyPlantRmModel | PlantSimEngine | true | best_effort |
| 26 | growth | ToyRUEGrowthModel | PlantSimEngine | false | best_effort |
| 27 | toy_selective_call_controller | ToySelectiveCallControllerModel | PlantSimEngine | false | best_effort |
| 28 | soil_water | ToySoilWaterModel{Vector{Float64}} | PlantSimEngine | true | best_effort |
| 29 | toy_stock_writer | ToyStockWriterModel | PlantSimEngine | false | best_effort |
To reproduce this discovery yourself, loop over Authoring.available_processes() and call Authoring.available_models(process_type) for each process. Pass a concrete model, such as ToyRUEGrowthModel(0.2), to Authoring.describe_model for its parameters, variables, physical meanings, and any problems found.