Giter Site home page Giter Site logo

msolve's People

Contributors

goatofrafin avatar

Stargazers

 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  avatar  avatar  avatar  avatar  avatar  avatar

msolve's Issues

Materials should probably not be a part of FEM project

@GoatOfRafin @dimtsap @SerafeimBakalakos
The materials classes should probably not be part of the FEM project, since all they should get as input/output are strains/stresses, which are independent of the finite element method. Therefore, they could be reused by all formulations solving problems pertaining to material stresses/strains (as opposed to for example thermal state), and could be used by isogeometric or meshless or xfem formulations.

[NL] Co-rotational 2D Beam Element

@isaar/nl
Addition of co-rotational (non linear) beam element based on Crisfield's formulation

References:

  • Non-linear Finite Element Analysis of Solids and Structureg - M. A. Crisfield, R. De Borst, J. Remmers
  • 2D Corotational Beam Formulation - L. L. Yaw
  • Co-rotational beam elements in instability problems - J.M. Battini

xUnit integration

Incorporate xUnit for the introduction of benchmark examples for testing the code

[Core] Error estimator

There should be implemented a number of different error estimators (priori or posteriori).

Also in the same category, a solution comparision:
Error of a solution compared to another solution regarded as an exact (same problem different mesh).
A special case of the above, comparison of a solution when the exact solution is given as a function.
(example given: L2 norm)

The estimator should give estimations of the error locally, which would be necessary for any implementation of adaptive refinement.

Questions with respect to stochastic materials

@GoatOfRafin @odyred

  • Hexa8u8pWithStochasticMaterial accepts as input an instance of IStochasticFiniteElementMaterial, but immediately downcasts it to IFiniteElementMaterial3D (it stores the material in the parent class Hexa8u8p, which is not related to stochasticity). Therefore all the extra information pertaining to stochasticity is lost when the material is stored, and when it is used in the child class it needs to be explicitly cast back to IStochasticFiniteElementMaterial.

  • Class StochasticElasticMaterial3D implements both IStochasticFiniteElementMaterial and IFiniteElementMaterial3D. IStochasticFiniteElementMaterial implements IFiniteElementMaterial3D, therefore I think implementing both interfaces may be redundant.

Architecture and terminology

  1. Architectural changes with respect to stochastic providers and analyzers
  2. More friendly and scientific consistent terminology

[IGA] Refinement

Refinement types

  • Knot Insertion (h-Refinement)
  • Degree Elevation (p-Refinement)
  • k-Refinement
  • Error-estimators

FEM and IGA projects can be refactored into a more general discretization code

During the porting of my code from Java to C# and MSolve specifically, I have noted that many parts of the Preprocessors apart from Elements are almost identical and thus can probably be refactored. These similar code parts can be split into the following categories:

Need abstraction

In this category belong the Entities folder of the two methods. The first reason why an abstraction is needed is that UQ/Optimization/Logging projects need to reference and alter the Model of each method. In the existing implementation, only FEM are supported while minimal changes are needed to extend the functionality. A comparison is given below:

FEM IGA
Model Model
Subdomain Patch
Element Element
Cluster Cluster
Node Control Point
NodalLoad Control Point Load

Actually, isogeometric entities can be considered as an extension of the FEM ones in most cases.
In a similar fashion Faces and Edge, where Loads and Boundary Condition are applied coexist as a concept in both cases but are applied in Elements in FEM while Patches in IGA.

Identical parts after the above refactoring

Provided that Nodes - Control Points, Elements and Subdomain-Patches can be handled in a similar fashion then the following parts of code become identical and thus much code rewriting can be spared. For example interfaces and simple classes can be unified:

FEM IGA
IFiniteElementDOFEnumerator IIsogeometricDOFEnumerator
IFiniteElement IIsogeometricElement
IStructuralFiniteElement IStructuralIsogeometricElement
GenericDOFEnumerator GenericDOFEnumerator
GlobalMatrixAssemblerSkyline GlobalMatrixAssemblerSkyline

Already refactored

  • Materials
  • Problems-Providers

In this category, we had identical code such as the Materials(2D-3D etc) which had no difference between the two methods.

Displacement control method

Displacement control method for the solution of nonlinear systems of equations for multi-point constraints.

[IGA] Loads

Apply and Calculate Loads

Possible types of Loads

  • Concentrated
  • Distributed
  • Gravity Load

Additional Needed Implementation

  • Connection CAD Software to apply Loads on geometry

Stochastic fem/analysis

Implementation and benchmarking
1.Spectral representation
2.Karhunen Loeve
3.Polynomial chaos
4.VRF MonteCarlo

Arc Length method

Arc length method for the solution of nonlinear systems of equations according to Crisfield theory.

[IGA] Boundary Conditions

Apply and Calculate BC

Possible types of BC

  • Dirichlet (Displacement BC)
  • Neumann (Force normal to surface)

Additional Needed Implementation

  • Connection CAD Software to apply BC on geometry

Introduction of RVE with graphene

A series of RVEs with 1k, 10K, 100K, and 1M dof to be introduced with 2 sheets of graphene, subject to linear and non-linear anlyses with standard and domain decomposition solvers.

[Core] Enrich Vector with new methods

Methods to be added that support the following:

  • Remove duplicate values from an array
  • Find multiplicity of duplicate values
  • Find intersection of arrays
  • Find union of arrays
  • Ascending sort of array values

MonteCarloAnalyzerWithStochasticMaterial bug

There is a bug concerning I/O streams with respect to
using (sw = File.CreateText(fileNameTimes))

System.IO.IOException
HResult=0x800704C8
Message=The requested operation cannot be performed on a file with a user-mapped section open

[Core] Modify Materials classes and relevant interfaces

@isaar/core
Modify ElasticMaterial class:
1.rename IFiniteElementMaterial to IIsotropicMaterial to reflect that it refers to the isotropic material case
2.rename IFiniteElementMaterial3D to IStructuralMaterial3D
3.modify IIsotropicMaterial to implement IStructuralMaterial (and not the other way around), move properties pertaining to the material in general from IIsotropicMaterial to IStructuralMaterial
4.make IStructuralMaterial and IIsotropicMaterial immutable (remove the setters from the properties)
5.check if material argument in different element types corresponds to the correct updated interfaces (e.g. beam elements should contain an instance of an IIsotropicMaterial object and continuum elements should contain an instance of an IStructuralMaterial object)

[MS] FE2

The FE2 method needs to be implemented (@isaar/multiscale)

[IGA] Preprocessor extension to support Isogeometric AnaLysis

Extension to implement:

Entities

  • Control Points (Parametric/Cartesian)
  • Knots
  • NURBS Elements
  • Bezier Elements

Model for IGA

  • Subdomains extended to include Patches
  • Element -> Supportive -> Gauss Quadrature for more than 3 points
  • Readers -> Implement Reader for IGA

Problem

  • Isogeometric

[Core] Unit Testing

Each of the C# files we develop should be verified with Unit Testing before before a pull request or even merge with the main code:
Summarizing some of the basic of unit testing techniques as described in Pragmatic Unit Testing by A. Hunt , D. Thomas the code should be validated for the following:

  1. Are the results right.?
  2. Are all the boundary conditions CORRECT .?
    • Conformance -> Does the value conform to an expected format.?
    • Ordering -> Is the set of values ordered or unordered as appropriate.?
    • Range -> Is the value within reasonable minimum or maximum values.?
    • Reference -> Does the code reference anything external that isn't under the direct control code of the code itself
    • Existence -> Does the value exist.?
    • Cardinality -> Are there exactly enough values.?
    • Time -> Is everything happening in order ? At the right time.? In time.?
  3. Can you check inverse relationships.?
  4. Can you cross-check results using other means.?
  5. Can you force error conditions to happen.?
  6. Are performance characteristics between bounds.?

For a more info on how to implement tests check:
https://msdn.microsoft.com/en-us/library/ms182532.aspx

[Core] Connection with simple input/output text file

Connection with simple input file is needed in order to easily assign problem geometry and various properties. Write to output file is needed for reviewing the results and possible connection with other post processing programs.

[Opti] Gradient

A gradient-based algorithm for optimization needs to be implemented (@isaar/opti)

PowerSpectrumTargetEvaluator issue

The way this class is designed does not facilitate spectral representation methodology/Brute Force Monte Carlo, which is a basis for stochastic benchmarking. Should I modify the class which in turn will effect its functionality with respect to other stochastic anlyzers (ie VRFMonteCarloAnalyzer) or create a new one?

[Stoch] VRFMonteCarloAnalyzer and PowerSpectrumEvaluator issues

VRFMonteCarloAnalyzerwithStochasticMaterial

  1. no need of Initialize(), randomNumbers etc
    2.vrfs wrong term used etc
  2. expansionOrder redundant
  3. logFactory() for the analyzer

PowerSpectrumTargetEvaluator
1.line 105
2. it should be in the providers file preprocessor namespace not the analyzers namespace

More examples are needed

The ISAAR.MSolve.SamplesConsole project needs to be extended with more examples which will feature all of the available functionalities that MSolve provides. (@isaar/core)

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.