quadwire-elastic-v2
Science Score: 44.0%
This score indicates how likely this project is to be science-related based on various indicators:
-
✓CITATION.cff file
Found CITATION.cff file -
✓codemeta.json file
Found codemeta.json file -
○.zenodo.json file
-
✓DOI references
Found 3 DOI reference(s) in README -
○Academic publication links
-
○Academic email domains
-
○Institutional organization owner
-
○JOSS paper metadata
-
○Scientific vocabulary similarity
Low similarity (10.4%) to scientific vocabulary
Repository
Basic Info
- Host: GitHub
- Owner: laurane-preumont
- Language: Python
- Default Branch: main
- Size: 4.19 MB
Statistics
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
- Releases: 0
Metadata Files
readme.md
QuadWire
QuadWire is a Python-based finite element modeling framework for simulating and optimizing additive manufacturing processes. It implements a specialized approach for analyzing the mechanical behavior of additively manufactured structures, with a particular focus on mechanical interactions during the printing process.
The codebase also includes shape optimization capabilities using gradient descent with adjoint methods, featuring bead offset manipulation to minimize two different cost functions regarding final displacements (minimum displacement and counter-deformation).
Code Structure
The project is organized into several modules: ``` ├── qwstructure.py # Complete structure loading simulation ├── qwadditive.py # Element-wise additive loading simulation ├── qwadditivemixte.py # Layer-wise + element additive simulation
├── modules/ # Computation modules │ ├── fem.py # FEM for Lagrangian elements │ ├── mesh.py # 3D mesh generation │ ├── behavior.py # Material behavior │ ├── forces.py # QuadWire forces │ ├── weld.py # Welding conditions │ ├── thermaldata.py # Thermal analysis │ ├── generate_thermal.py# generate analytical thermal data to run test simulations │ ├── plot.py # all display functions │ ├── solver3D.py # 3D fem framework (Cauchy3DTM)
├── shape/ # Shape optimization │ ├── shapeOffset.py # Stacking offset │ ├── derivateOffset.py # Sensitivity analysis │ ├── splitBeads.py # Overhang bead kinematics │ ├── shapeOptim_module.py # Gradient-based optimization
└── tests/ # draft files ├── ... # test files are used to check computations ```
1. Main Files
Simulation Engines
qw_structure.py: Simulates mechanical loading on the full structure in a single step.qw_additive.py: Simulates layer-by-layer additive manufacturing with element-by-element activation.qw_additive_mixte.py: Experimental mixed simulation combining layer birth and element activation. (Work in progress — debugging layer birth load continuity)
Main features: - Mesh and material initialization - FEM mesh generation and welding conditions - Thermal loading (weak coupling) - Iterative solving for additive simulations - Post-processing and visualization
⚠️
qw_structure.pyapplies static load on the final geometry;qw_additive.pyactivates elements progressively;qw_additive_mixte.pyhandles dynamic mesh growth per layer but requires debugging to ensure continuity of loads and constraints.
2. Modules (modules/)
Finite Element Analysis
fem.py: Core FEM functions- Shape functions, derivatives
- Quadrature and integration matrices
- Local/global transformations
- Shape functions, derivatives
mesh.py: Mesh generator- Supports 3D geometries
- Adaptive refinement
- Node utilities
- Supports 3D geometries
Material Physics
behavior.py: Material laws- Thermal strain
- Energy density
- Plasticity criteria
- Multi-scale homogenization
- Thermal strain
forces.py: compute QuadWire forces- Internal forces
- Draft delamination models
- Internal forces
Manufacturing Process
weld.py: Welding logic- Connection matrices
- Kinematic constraints
- Connection matrices
thermaldata.py: Temperature effects- Weak thermal coupling
- Glass transition handling
- Weak thermal coupling
3. Shape Optimization (shape/)
shapeOffset.py: Manages bead deposition offsetderivateOffset.py: Computes shape sensitivityshapeOptim_module.py: Gradient-based optimizer using adjoint methodssplitBeads.py: Models overhangs and enriched bead division
Bead offset optimization requires extended kinematic handling to ensure proper welding between adjacent and overhang beads.
Simulation Approaches
Structure-Based Simulation
qw_structure.py: Simulates full structure loading in one step.
- Efficient for final static analyses
- Acts as a baseline for comparison
Additive Simulation
qw_additive.py: Activates elements incrementally to simulate layer-by-layer deposition.
- Captures the printing sequence
- Models internal stress evolution
Mixed Additive Simulation (Experimental)
qw_additive_mixte.py: Combines layer birth and element activation.
- Dynamic layer growth with nested activation
- Optimized mesh scaling
- Currently needs to be debugged
Shape Optimization
Bead Offset Optimization
Optimizes deposition path offsets to enhance mechanical performance:
- Handles complex interactions between beads
- Supports modeling of overhang behaviors
Gradient Descent Optimization
Implements optimization using adjoint methods:
- Two customizable cost functions
- Efficient gradient computation
- Iterative convergence with stopping criteria
Testing Framework
Located in the tests/ directory.
- Draft test cases for some features
- Can be used as minimal working examples
Dependencies
Make sure to install:
NumPy: Numerical operationsSciPy: Sparse matrices, optimization routinesMatplotlib: Visualization
Credits
This code is a working version forked from QuadWire-Elastic initial version published along the seminal paper and first QuadWire article ``QuadWire: an extended one dimensional model for efficient mechanical simulations of bead-based additive manufacturing processes'' (hal-04609753)(https://doi.org/10.1016/j.cma.2024.117010)
published on Zenodo as 10.5281/zenodo.10822308 from rafaelviano/QuadWire-Elastic
This new v2 version includes analytical thermal generation,
mesh improvements (massive 3D geometries (instead of carpets and thinwalls), zigzag trajectories),
bead offset control and extended kinematic conditions (straddle beads and overhang beads),
shape optimization capabilities (shape/shapeOptim_module and test/optim-test).
Owner
- Name: Laurane Preumont
- Login: laurane-preumont
- Kind: user
- Repositories: 1
- Profile: https://github.com/laurane-preumont
Citation (CITATION.cff)
cff-version: 1.2.0
authors:
- family-names: Preumont
given-names: Laurane
orcid: 0009-0008-1281-7153
- family-names: Viano
given-names: Rafael
orcid: 0000-0002-1537-2443
- family-names: Margerit
given-names: Pierre
orcid: 0000-0003-4922-9837
- family-names: Weisz-Patrault
given-names: Daniel
orcid: 0000-0002-0523-6368
title: "QuadWire"
url: https://github.com/laurane-preumont/QuadWire-Elastic-v2
doi: 10.5281/zenodo.15167044
initial version :
url: https://github.com/rafaelviano/QuadWire-Elastic
doi: 10.5281/zenodo.10822308
GitHub Events
Total
- Release event: 2
- Push event: 6
- Create event: 4
Last Year
- Release event: 2
- Push event: 6
- Create event: 4