This is the python/rust flavor of NREL's FASTSimTM, which is based on the original Excel implementation. Effort will be made to keep the core methodology between this software and the Excel flavor in line with one another.
All classes and methods are self-documented.
Set up and activate a python environment (compatible with Python 3.8 - 3.10; we recommend Python 3.10) with the following steps.
- Create:
conda create -n fastsim python=3.10
- Activate:
conda activate fastsim
There is some variation based on your Operating System:
-
PowerShell (windows):
- Create:
python -m venv fastsim-venv
-- name is user decision - Activate:
fastsim-venv/Scripts/Activate.ps1
- Create:
-
Bash (i.e. unix/linux/mac):
- Create:
python -m venv fastsim-venv
-- name is user decision - Activate:
source fastsim-venv/bin/activate
- Create:
-
Command Prompt (windows):
- Create:
python -m venv fastsim-venv
-- name is user decision - Activate:
fastsim-venv/Scripts/activate.bat
- Create:
In an active Python environment created above, run pip install fastsim
.
Developers might want to install the code in place so that FASTSim files can be editable (the -e
flag for pip provides this behavior). This option can be handy since FASTSim will be installed in place from the installation location and any updates will be propagated each time FASTSim is freshly imported. To do this, you'll need to have the Rust toolchain installed.
- Option 1: run
sh build_and_test.sh
in root folder. - Option 2:
- Run
pip install -e ".[dev]"
Optional testing steps: - Run
cd rust/ && cargo test
- Run
pytest -v python/fastsim/tests/
- Run
To see and run examples, download the FASTSim demo files using the following code (with your Python environment activated and FASTSim installed):
from fastsim import utils
utils.copy_demo_files()
This code downloads demo files into a specified local directory (if no directory is specified, it will create a \demos
folder in the current working directory). WARNING: If you download the demo files to a location where files of the same name already exist, the original files will be overwritten.
Add this line:
fastsim-core = { git = "https://github.com/NREL/fastsim/", branch = "fastsim-2" }
to your Cargo.toml file, modifying the branch
key as appropriate.
FASTSim is available as a Rust crate, which can be added to your dependencies via the following command:
cargo add fastsim-core
cur = current time step
prev = previous time step
cyc = drive cycle
secs = seconds
mps = meters per second
mph = miles per hour
kw = kilowatts, unit of power
kwh = kilowatt-hour, unit of energy
kg = kilograms, unit of mass
max = maximum
min = minimum
avg = average
fs = fuel storage (eg. gasoline/diesel tank, pressurized hydrogen tank)
fc = fuel converter (eg. internal combustion engine, fuel cell)
mc = electric motor/generator and controller
ess = energy storage system (eg. high voltage traction battery)
chg = charging of a component
dis = discharging of a component
lim = limit of a component
regen = associated with regenerative braking
des = desired value
ach = achieved value
in = component input
out = component output
Chad Baker -- Chad.Baker@nrel.gov
Aaron Brooker -- Aaron.Brooker@nrel.gov
Kyle Carow -- Kyle.Carow@nrel.gov
Robin Steuteville -- Robin.Steuteville@nrel.gov
Jeffrey Gonder -- Jeff.Gonder@nrel.gov
Jacob Holden -- Jacob.Holden@nrel.gov
Jinghu Hu -- Jinghu.Hu@nrel.gov
Jason Lustbader -- Jason.Lustbader@nrel.gov
Sean Lopp -- sean@rstudio.com
Matthew Moniot -- Matthew.Moniot@nrel.gov
Grant Payne -- Grant.Payne@nrel.gov
Laurie Ramroth -- lramroth@ford.com
Eric Wood -- Eric.Wood@nrel.gov