Skip to content


Summary¤

f3dasm introduces a general and user-friendly data-driven Python package for researchers and practitioners working on design and analysis of materials and structures.


Quick Example¤

from f3dasm.design import Domain
from f3dasm import (
    ExperimentData,
    create_sampler,
    create_datagenerator,
    create_optimizer,
)

# Define a 2D parameter space
domain = Domain()
domain.add_float(name='x0', low=-1.0, high=1.0)
domain.add_float(name='x1', low=-1.0, high=1.0)
domain.add_output('y')

# Sample, evaluate and optimize
data = ExperimentData(domain=domain)
data = create_sampler('random', seed=42).call(data=data, n_samples=20)

evaluator = create_datagenerator('sphere', output_names='y')
evaluator.arm(data=data)
data = evaluator.call(data=data)

# create_optimizer returns an update-step Block for ask/tell optimizers;
# chain it with the evaluator and wrap in a LoopBlock for the iterations.
step = (create_optimizer('tpesampler', output_name='y') >> evaluator).loop(50)
step.arm(data=data)
data = step.call(data=data)

Key Features¤

  • Modular design — Flexible interfaces to easily integrate your own models and algorithms. Learn more
  • Automatic data management — The framework handles all I/O processes for you. Learn more
  • Easy parallelization — Run experiments in parallel on local machines or HPC clusters. Learn more
  • Built-in defaults — Comes with benchmark functions, optimizers, and samplers out of the box.
  • Hydra integration — Manage experiment configurations with Hydra. Learn more

Getting started¤

The best way to get started is to:

  • Read the overview section, containing a brief introduction to the framework and a statement of need.
  • Understand the core concepts behind the framework.
  • Follow the installation instructions to get going!
  • Check out the tutorials section, containing a collection of examples to get you familiar with the framework.

Authorship & Citation¤

f3dasm is created and maintained by Martin van der Schelling1.

Note:
If you use f3dasm in your research or in a scientific publication, it is appreciated that you cite the paper below:

Journal of Open Source Software (paper link):

@article{vanderSchelling2024,
  title = {f3dasm: Framework for Data-Driven Design and Analysis of Structures and Materials},
  author = {M. P. van der Schelling and B. P. Ferreira and M. A. Bessa},
  doi = {10.21105/joss.06912},
  url = {https://doi.org/10.21105/joss.06912},
  year = {2024},
  publisher = {The Open Journal},
  volume = {9},
  number = {100},
  pages = {6912},
  journal = {Journal of Open Source Software}
}

  1. PhD Candidate, Delft University of Technology.
    Website | GitHub