GithubHelp home page GithubHelp logo

swanlab / swan Goto Github PK

View Code? Open in Web Editor NEW
113.0 9.0 23.0 4.86 GB

Topology Optimization Laboratory

MATLAB 99.44% Objective-C 0.01% M 0.05% Tcl 0.06% Limbo 0.01% TeX 0.04% Fortran 0.24% C 0.12% Shell 0.01% Batchfile 0.01% GLSL 0.01% FreeBasic 0.03%
matlab fem optimization topology-optimization shape-optimization design-patterns object-oriented-programming

swan's Introduction

Swan - Topology Optimization Laboratory

drawing

Badge Website

Swan is a topology optimization software developed in Matlab. It supports the resolution of 2D and 3D topology optimization problems with density or level-set as design variables. This toolbox can be used for structural optimization, material design, and multi-scale problems.

Below are some examples of simulations run using Swan. Feel free to check our website for additional features, tutorials, and results.

Solution Solution Solution

  1. Minimization of compliance subject to volume for a 3D cantilever beam, using Level Set methods.
  2. Optimization of a 2D cantilever beam with an anisotropy constraint.
  3. Design of a gripping mechanism using Level Set methods.

Contact

For any inquiries, please contact us by opening an issue.

swan's People

Contributors

aitzibermaneru avatar alexferrerferre avatar antonioartz avatar ariadnasb01 avatar arnaupena avatar atrrs avatar ferrerferrealex avatar gervilquin avatar joelcarrasc0 avatar joeli20 avatar jof-syntax avatar jose-antonio-torres avatar marcnunezc avatar nachoiz avatar raulrubioserrano avatar tarrut avatar tcreusc avatar trujillo94 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

swan's Issues

new fem workflow

  • Related files: newfemworkflow.m, idealWorld.m///
  • Tasks:
    • Easy meshes
      • UnitTriangleMesh, UnitQuadMesh, UnitTetraMesh
    • Boundary conditions
      • ConstrainedOpt branch
      • PauTarres branch
    • Materials

FEATURE / Micro 3D

Steps:

  • test FEM micro 3D: periodic BC. (Micro full, Chomog = C)

  • Solve Chomog_AlphaBeta with alpha = [1 0 0 0 0 0] (from sphere to laminates)

  • Negative Poisson 3D.

Introducing Total & Relativa Perimeter

  • Turn Dirichlet into Robin in
  • Update tests with Robin BC filter.
  • Refactor ShFunc_Perimeter into total (robin)
  • Create SHFunc_Perimeter relative (Neumann)
  • Create test for relative shapeFunc.
  • Merge ShFunc_Perimeter: Factory -> Total / Relative
  • Remove conditional statement (addingRbinTerm & bcType) from DiffReacProb --> using default FemSettigns
  • Remove preProcess from Filters

Anisotropy cleanup

  • Adding scale factor with tan(u),1/tan(u) + rotation from settings. (costsettings property from TopOpt_Computer)
  • UML new proposal of filters and LHS if needed.
  • Checkout of non-modified files.
  • Change newfilter to filter names.
  • Pass all tests.
  • Check all defined properties are used in new classes.
  • Check coverage files with run and time.
  • Pull request.

Postprocess for perimeter shape functional

The code does not print results for minimization problems considering the perimeter shape functional.
In order to correct this issue, the following tasks will be done:

  • Correcting the ShFunc_Perimeter class.
  • Check that simulations are working for both density and levelset.
  • Create new postproc tests where perimeter appears in the cost function.

Release 1.0 - Features

Structure Optimization (Macro) and Material Design (Micro) problems resulting from the following functions:

  • Compliance
  • Volume
  • Perimeter
  • Non-self adjoint compliance 2D
  • Non-self adjoint compliance 3D
  • Constitutive matrix design 2D
  • Constitutive matrix design 3D (specific C / maximize C components)
  • Stress

Design Variables

  • Level Set
  • Density
  • Micro parameters

Optimizers

  • Density / Vademecum: Projected Gradient, MMA, IPOPT and FISTA.
  • Level-set: SLERP, Projected SLERP and Hamilton-Jacobi.

Material Interpolation

  • SIMP 2D / 3D
  • SIMPALL 2D
  • SIMPALL 3D

Utilities

  • Import problems from GiD.
  • Export results to GiD.
  • GUI for benchmark case creation.
  • Export results to ParaView.
  • Export results to CAD format files (STEP, STL, etc.)
  • Publish results to database in the cloud
  • Monitoring density for all design variables
  • Deshomogenization
  • Marching Cubes

Coverage analysis

  • Analyze the coverage of the code
  • Add new tests to cover useful parts of the code

NullSpace cleanup

  • Ensure that all tests pass
  • Create new tests to guarantee coverage

Simplify LevelSet tutorial

Could we delete the construction of boundaryMesh and just call mesh.createBoundaryMesh() in LevelSet tutorial?

Hello

Dear developers
Thank you very much for providing all of these very useful tools for topology optimization.
Would you mind to guide me for a tutorial about this package?
Thank you in advance
Sincerely
Rut

Mesh refactoring

Phase 1: Mesh
Status: @tcreusc to start working in it
Tasks

  • Check if STL stuff still works #291
  • Move: Geometry directly to Mesh #308
  • Remove: createFromFile, setCoord, setConnec, coordElem #292 #293
  • Generalize: computeMinCellSize, computeMeanCellSize #294
  • Refactor: plot, LineMesh, SurfaceMesh, VolumeMesh #295

Notes

  • kFace!! changes Geometry calculations
  • Normals only when kFace = -1
  • Can xFE become a P1Function instead of a P1Discontinuous?

Phase 2: SubMesh
Status: @FerrerFerreAlex to further investigate on it
Notes

  • Create Submesh < Mesh, with
  • P1Functions locally, LHS/RHS should be able to manage local to global. LHS should still be able to assemble locally.
  • If test and trial belong to the same space, local. If test and trial do not, globally.
  • innerMesh, innerCut, boundaryCut, ... are instances of Submesh
  • P1Function can be created with a Submesh, when creating connec there could be two options (local/global)

Test cleanup

  • Check which input files are used
  • Check physical meaning of tests
  • Delete useless stuff

What features are supported? License file?

Hi!

I am compiling a list of open source topology optimization software and the features they support. Swan's documentation doesn't seem to explain the supported features and there is a lack of examples. From a quick look at the code, I see that SIMP is implemented for volume constrained compliance minimization with unstructured ground meshes. I also see some homgenization and level set methods but it is unclear what problem types they support. May you give me a summary of the features available in Swan? Thank you! Also, I can't find a license file, is this intentional?

Monitoring

I belive we could add colour to monitoring plots. For example:

  • cost: blue
  • constraint: black
  • Lambda: green
    Addittionally, I think we should plot always the volume of the structure

NatureMaterials summary

  • First iteration: summary of the article. Tool: GoConqr.
  • Second iteration: revisit referenced papers and expand the summary (as scheme).
  • Third iteration: analyzing papers from WOS. (Excel file with columns qualifying papers)

Swan Style Guide

Rules of thumb

  1. General
    1.1 All names should be pronounceable
    1.2 Spaces between methods and properties: See example below
  2. Variables
    2.1 The more concrete the shorter and viceversa
    2.2 Defined as nouns
  3. Functions
    3.1 The more concrete the longer and viceversa
    3.2 Defined as verbs

Entities naming

property -> obj.thisIsMyProperty;
variable -> thisIsMyVariable; *exception: matrices inside methods
class -> classdef ThisIsMyClass
childclass -> classdef ThisIsParent_ThisIsChild
instance -> thisIsMyInstance = ThisIsMyClass();
methods -> obj.thisIsMyMethod();
parent_method -> obj._thisIsMyParentsMethod();

Examples

Filter_P1()

classdef Filter_P1 < Filter
    % SPACE
    properties
        property1
        property2
    end
    % SPACE
    methods
    % SPACE
        function computeCh(obj)
            Ch=zeros();
            obj.homogTensor = Ch;
        end
    % SPACE
        function thisIsMyVeryConcreteFunction()
            myVar = 12;
        end
    % SPACE
    end
    % SPACE
end

Settings refactoring

In some point, we should need an easy and intuitive way to introduce new settings to any kind of problem.

Refactoring MeshUnfitted

  • Integrator can integrate non unfitted meshes.
  • Robin mesh no longer Unfitted.
  • DesignVar's mesh --> composite.
  • DiffReact using Integrator for M & K.
  • Remove globalConnectivities from Mesh_Unfitted_Composite.
  • Group Integration Params.
  • Mesh_Unfitted_Single main props (when Interior): meshCut, meshFull = meshBackground(fullCells), meshBackground. + coord & connec (being arrays of cut and full's coords & connecs, or unified if feasible).
  • Mesh_Unfitted_Single main props (when Boundary): similar but without meshFull.

Website

Create a GitHub Page for Swan with sample cases

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.