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
Last synced: 10 months ago · JSON representation ·

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
Created about 1 year ago · Last pushed about 1 year ago
Metadata Files
Readme Citation

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.py applies static load on the final geometry; qw_additive.py activates elements progressively; qw_additive_mixte.py handles 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
  • mesh.py: Mesh generator

    • Supports 3D geometries
    • Adaptive refinement
    • Node utilities

Material Physics

  • behavior.py: Material laws

    • Thermal strain
    • Energy density
    • Plasticity criteria
    • Multi-scale homogenization
  • forces.py: compute QuadWire forces

    • Internal forces
    • Draft delamination models

Manufacturing Process

  • weld.py: Welding logic

    • Connection matrices
    • Kinematic constraints
  • thermaldata.py: Temperature effects

    • Weak thermal coupling
    • Glass transition handling

3. Shape Optimization (shape/)

  • shapeOffset.py: Manages bead deposition offset
  • derivateOffset.py: Computes shape sensitivity
  • shapeOptim_module.py: Gradient-based optimizer using adjoint methods
  • splitBeads.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 operations
  • SciPy: Sparse matrices, optimization routines
  • Matplotlib: 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

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