User login

You are here

Revision of Open Source Software from Tue, 2007-05-15 21:20

  • RSS feed for comments on this page: crss/node/1394
  • This page was started following discussions initiated by Mogadalai Gururajan.

Finite element methods

Open Source CFD and Coupled Codes

Microstructural evolution

Biomolecules

Molecules

Visualization

Linear/Nonlinear Algebraic Solvers 

Ordinary Differential Equation Solvers 

Partial Differential Equation Solvers 

Others

  • Codes for miscellaneous applications -- for rotations, Mohr's circles, visualization, elastic constants calculation etc; via .
  • Some pointers to fast solvers
  • GNU Scientific library -- A collection of C/C++ library for a range of numerical tasks, and is a must-visit site for anybody who is even remotely interested in using computers for scientific calculations
  • UbuntuScience -- A comprehensive collection of software that can be run on Linux
  • NIST software page -- Among other things, the software listed include those for the study of multizone airflow, structure and properties of cement based materials, scientific visualization, statistical analysis, non-linear modelling, a guide to the available mathematical software (cross-indexed),  and smoke plume modelling.
  • FFTW   -- a C subroutine library for  discrete Fast Fourier Transforms (FFT); benchmarked and portable, a choice program for FFTs

Here are some links to open source codes/software available on the net; all this information is collected from different posts at iMechanica. It is quite possible that we missed some, and some that are listed are not open source. If so, please feel free to edit the post or leave a comment with relevant links so that we can edit the post.

If you write a post or comment about some codes/software or if you notice one while you are reading the posts at iMechanica, please leave a note in the comments or include the information in the listing below.

If you have some code you would like to share with mechanicians, write a post in your blog and leave a comment here, so that we can update the repository database. 

We believe, over a period, we might be able to build a very authorotative and useful repository of codes here, so that this post becomes a one-stop shop for any of your code needs.

Zhigang Suo's picture

Here is an old thread on open source finite element codes:  What is status of open source finite element code?

Easy and fast visualization of results is an important requirement in scientific computing. We use a set of cuting edge visualization tools from the SCI Institute at Utah on a daily basis. The tool of choice for moderate sized data sets is SCIRun. The SCIRun/BioPSE software is opensource and the latest release can be downloaded from the SCIRun download page. The code is relatively well documented and easy to use and the interface is similar to the now defunct IBM DataExplorer. Use can also explore and download a range of tools from the SCI institute at http://software.sci.utah.edu/ including our code Uintah. You can browse our subversion repository here. Downloading the software requires that you be registered at the SCI institute site. You can contact me if you are interested in the Uintah side of things.
You a watch a video generated in SCIRun below.

Arun K. Subramaniyan's picture

I think the present form of listing codes may soon become unmanageable and too difficult to search. Is there a way in which we can categorize codes (for example like SourceForge) here? It would also help a lot if we can give a brief description of the codes. The description can be easily added once the technique for categorizing is implemented.

Roozbeh Sanaei's picture

If you are searching for a really developable code I advise use of Mathematica packages such as IMTEK and ACEFEM because their codes are greatly more readable.  Another way is the use of opensource libraries instead of open source applications.  For finite elements DEAL.II 5.2.0 has vast documentation.

 

Dear Roozbeh,

I have taken the liberty to make your post more viewer friendly.  Please try to avoid too much capitalization within a sentence.  Also life becomes easier for the reader when sentences start with capital letters and each sentence is separated from the next by two spaces.

Mathematica may be useful for certain small applications.  However, there are two problems that come to mind:

1) Mathematica is not available for free.

2) It is hard to run big problems with Mathematica based packages and a nightmare to parallelize.

Biswajit 

Zhigang Suo's picture

Dear Guru, Biswajit, Arun:

Thank you very much for getting this page started.  I took liberty to modify the title of the page to "Open source software".  (see this screen shot)  This title was suggetsed by Arun, and looks more explicit than "Open source review" as a button in "Quick guide" on the right side of iMechanica.

Following the suggestion of Arun, I've broken Guru's initial draft into categories.  Please feel free to amodify.  I think that it is fine for one piece of software to appear under two categories.  It might be a good idea to add one sentence to each software to say what it is about.  If a thread of discussion on a piece of software appears in iMechanica or elsewhere, we can also add a link of "user forum".

I have also set up Biswajit as a moderator, so that he, too, can edit pages.

If three of you subscribe to the RSS feed of the comments on this pape, when other users give tips on other open source codes or a review of a code, you will be alerted and can update the page.

Everyone:  Please help Guru, Arun and Biswajit by adding comments. 

Zhigang Suo's picture

I've just added a new channel "software" in the header of iMechanica, and relocated a few old posts into this channel.  See a screen shot to learn how to post an entry to a channel.

Tahoe is a nonlinear finite element code developed at the Sandia National Laboratories.  The code contains a large range of tools for the analysis of solids at various length scales.   Features include a number of material models, cohesive zone modeling, transferring data to and from a number of formats, etc. 

In my opinion, the input format is a bit dated though it conforms to a number of standards.  Also, a separate mesh generation tool is needed.  The code is reasonably easy to understand but can be a bit difficult to modify without some hand holding.

You can see some of the models that have been implemented in Tahoe at its Doxygen documentation page

[Update: I have added some more links from http://imechanica.org/node/938.] 

Roozbeh Sanaei's picture

  • Public Domain FE Programs
  • Mesh Generators
  • FE Visualisation
  • Public Domain Mathematical Software and Miscellaneous Items
  • Roozbeh Sanaei's picture

    Useful Links:
    http://homepage.usask.ca/~ijm451/finite/fe_resources/node15.html
    http://www.tecgraf.puc-rio.br/~amiranda/MEF/MEF.html
    http://www.scicomp.uni-erlangen.de/archives/SW/diffequ.html http://www.sai.msu.su/sal/B/2/
    http://web.ift.uib.no/~jankoc/hfag/femres.txt
    http://www.ann.jussieu.fr/free.htm http://www.dmoz.org/Science/Technology/Software_for_Engineering/Finite_Element_Analysis http://www.indiana.edu/~statmath/bysubject/numerics.html#diffeq http://gid.cimne.upc.es/links/index.html

    Useful Forums in this regard:
    http://imechanica.org/node/470

    **Tahoe (Open Source) :
    http://tahoe.ca.sandia.gov/
    AZTEC: (Open Source):
    http://www.cs.sandia.gov/CRF/aztec1.html
    AMIGOS: http://www.iue.tuwien.ac.at/phd/radi/node31.html
    BROOK: http://frontier.ams.sunysb.edu/frontiercalc2/PDE_Solver/
    CEMTool: http://www.cemtool.com/
    COMSOL:http://www.comsol.com/
    COOLFLUID: http://coolfluidsrv.vki.ac.be/coolfluid/
    DOPDEES: http://www.ee.washington.edu/faculty/dunham/
    ELLPACK: http://www.cs.purdue.edu/research/cse/pellpack/pellpack.html
    ESYS.ESCIPT: (Open Source): http://iservo.edu.au/esys/
    FETK: http://www.fetk.org/
    FIPY: (open source): http://www.ctcms.nist.gov/fipy/
    FLEXPDE: http://www.pdesolutions.com/
    GETDP: http://www.geuz.org/getdp/
    HAMLAB: http://sts.bwk.tue.nl/hamlab/
    HEDRA: http://smirnov.mae.wvu.edu/hedra/index.html
    JSIM: http://www.physiome.org/jsim/
    MATLAB PDE SOLVER: http://www.mathworks.com/
    NUMERICA: http://www.numeritek.com/
    PDE2D:(Open Source): http://www.pde2d.com/
    PDESOL: http://www.pdesol.com/
    PETSC: http://www-unix.mcs.anl.gov/petsc/petsc-as/
    PSIDE: http://www.cwi.nl/archive/projects/PSIDE
    MANPACK: http://www.scicomp.uni-erlangen.de/archives/SW/SYISDA.html PDEASEDOMAIN: http://www.scientek.com/macsyma/pdmain.htm
    PDESOL: http://www.wias-berlin.de/software/pdelib/
    OPENFEM: http://www-rocq.inria.fr/OpenFEM/

    Roozbeh Sanaei's picture

  • CAMP Open Software project (CAMPOS)
    Type: Molecular Dynamics/Force Fields
    License: GPL
    Description: The CAMPOS project consists of several atomistic simulation tools and an environment for setting up atomistic calculations and visualizations, written in Python. Currently the atomistic simulation tools include dacapo, a density functional program, Asap, a set of python classes, that can be used for doing atomistic simulations of systems containing up to millions of atoms and a linear muffin-tin orbital (LMTO) program. Asap is a tool for classical molecular dynamics simulations. The current version supports parallel simulations on e.g. clusters of workstations. It scales well up to at least a few hundred workstations even with 100MB/s ethernet communication. The interatomic forces are described in the Effective Medium Theory (EMT). The modular structure allows for easy implementation of other interatomic potentials, without having to worry about the subtleties of parallel programming. Asap includes modules for quasicontinuum (QC) simulations. In regions of space where stress and strain fields are slowly varying, the atoms are replaced with a mesh of representative atoms, leading to a dramatical reduction in the number of degrees of freedom, while maintaining atomic-scale resolutions where that is required. The QC part of Asap is not yet running on parallel computers.
     
  • GROMACS
    Type: Molecular Dynamics/Force Fields
    License: GPL
    Description: GROMACS is a versatile package to perform molecular dynamics, i.e. simulate the Newtonian equations of motion for systems with hundreds to millions of particles. It is primarily designed for biochemical molecules like proteins and lipids that have a lot of complicated bonded interactions, but since GROMACS is extremely fast at calculating the nonbonded interactions (that usually dominate simulations) many groups are also using it for research on non-biological systems, e.g. polymers.
     
  • Lennard
    Type: Molecular Dynamics/Force Fields
    License: GPL
    Description: Noble Gas Simulator.
     
  • Molecular Modelling ToolKit
    Type: Molecular Dynamics/Force Fields
    License: GPL
    Description: The Molecular Modelling Toolkit (MMTK) is an Open Source program library for molecular simulation applications. In addition to providing ready-to-use implementations of standard algorithms, MMTK serves as a code basis that can be easily extended and modified to deal with standard and non-standard problems in molecular simulations.
     
  • MOSCITO
    Type: Molecular Dynamics/Force Fields
    License: GPL
    Description: MOSCITO is designed for molecular dynamics simulations of condensed phase systems defined by classical molecular mechanics force-fields such as AMBER, OPLS, CHARMM and GROMOS.
     
  • ORAC
    Type: Molecular Dynamics/Force Fields
    License: GPL
    Description: ORAC is a program for running classical simulations of biomolecules. Simulations can be carried out in the NVE, NPT, NHP, and NVT thermodynamic ensembles.
     
  • CP2K
    Type: Molecular Dynamics/Force Fields
    License: Freeware
    Description: A program package to do atomistic and molecular simulations of solid state, liquid, molecular and biological systems. The methods included range from first principles ab initio density functional methods to parametrised, classical pair- and many-body potentials.
     
  • AMBER
    Type: Molecular Dynamics/Force Fields
    License: Proprietary
    Description: No description
     
  • CHARMM
    Type: Molecular Dynamics/Force Fields
    License: Proprietary
    Description: No description
     
  • GROMOS
    Type: Molecular Dynamics/Force Fields
    License: Proprietary
    Description: No description
  • Roozbeh Sanaei's picture

  • Yaehmop
    Type: Tight binding
    License: GPL
    Description: Yet Another extended Huckel Molecular Orbital Package (YAeHMOP) was developed by Greg Landrum whilest a graduate student in the research group of Professor Roald Hoffmann at Cornell University. YAeHMOP is intended to be an easy to use, transparent, extended Huckel calculation and visualization package which can perform calculations on both molecular and extended materials in 1,2, or 3 dimensions.
     
  • DensEl
    Type: Tight binding
    License: Proprietary
    Description:
     
  • ParaDens
    Type: Tight binding
    License: Proprietary
    Description:
     
  • Roozbeh Sanaei's picture

    • 2D-Numerical
      Type:
      Quantum Chemistry: Hartree Fock/MP/CC/CI
      License:
      GPL
      Description: A numerical Hartree-Fock program for diatomic
      molecules.
       
    • Ghemical
      Type:
      Quantum Chemistry: Hartree Fock/MP/CC/CI
      License:
      GPL
      Description: A molecular modelling software package with nice
      3D-visualization tools.
       
    • MPQC
      Type:
      Quantum Chemistry: Hartree Fock/MP/CC/CI
      License:
      GPL
      Description: MPQC is the Massively Parallel Quantum Chemistry
      Program.
       
    • PyQuante
      Type:
      Quantum Chemistry: Hartree Fock/MP/CC/CI
      License:
      GPL
      Description: PyQuante is a suite of programs for writing quantum
      chemistry software. The program is written in the Python programming language,
      but has many "rate-determining" modules also written in C for speed. The
      resulting code is not nearly as fast as Jaguar, Gaussian, or GAMESS, but the
      resulting code is much easier to understand and modify.
       
    • GAMESS
      Type:
      Quantum Chemistry: Hartree Fock/MP/CC/CI
      License:
      Proprietary
      Description:
       
    • GAMESS-UK
      Type:
      Quantum Chemistry: Hartree Fock/MP/CC/CI
      License:
      Proprietary
      Description:
       
    • GAUSSIAN
      Type: Quantum
      Chemistry: Hartree Fock/MP/CC/CI
      License:
      Proprietary
      Description:
       
    • JAGUAR
      Type:
      Quantum Chemistry: Hartree Fock/MP/CC/CI
      License:
      Proprietary
      Description:
       
    • MOPAC
      Type:
      Quantum Chemistry: Hartree Fock/MP/CC/CI
      License:
      Proprietary
      Description:
    Roozbeh Sanaei's picture

    • ABINIT
      Type: Density
      Functional
      License: GPL
      Description:
       
    • CAMP Open Software project
      (CAMPOS)

      Type: Density Functional
      License:
      GPL
      Description:
       
    • octopus
      Type:
      Density Functional
      License: GPL
      Description: Octopus is
      a program aimed at the ab initio virtual experimentation on a hopefully ever
      increasing range of systems types. Its main characteristics are:
      • Electrons are describe quantum-mechanically within the Density-Functional
        Theory (DFT), in its time-dependent form (TDDFT) when doing simulations in time.
        Nuclei are described classically as point particles.
      • Electron-nucleus interaction is described within the Pseudopotential
        approximation.

       

    • PWSCF
      Type: Density
      Functional
      License: GPL
      Description:
       
    • SPINOR
      Type:
      Density Functional
      License: GPL
      Description: The ab
      initio Spinor Project is a scientific code project based on density functional
      theory (DFT) within the ab initio pseudopotential frame work. The code
      implements the fundamental Kohn-Sham functions in form of two-component
      spinors.
       
    • CARPAR
      Type:
      Density Functional
      License: Freeware
      Description: The
      tutorial version of a Car-Parrinello code
       
    • CP2K
      Type:
      Density Functional
      License: Freeware
      Description:

       
    • DoD-Planewave
      Type:
      Density Functional
      License: Freeware
      Description: A
      General Scalable Density Functional Code
       
    • FHI96MD
      Type:
      Density Functional
      License: Freeware
      Description: The
      FHI96MD program is an efficient code to perform molecular dynamics simulations
      and total-energy calculations for molecules, perfect crystals, defects,
      surfaces, interfaces and dislocations in crystals for materials as different as
      semiconductors, simple and transition metals, insulators, etc. The program
      employs density-functional theory, first-principles pseudopotentials, and a
      plane-wave basis set.
       
    • PWPAW
      Type:
      Density Functional
      License: Freeware
      Description: A
      Projector Augmented Wave (PAW) code for electronic structure calculations.
      PartII: pwpaw for periodic solids in a plane wave basis. Computer Physics
      Communications 135, 348-376 (2001)
       
    Roozbeh Sanaei's picture

    • Vanderbilt Ultra-Soft
      Pseudopotential

      Type: Pseudopotential/Pseudoprojector
      generators
      License: GPL
      Description: The 'UltraSoft
      PseudoPotential' (USPP) generation code from the group of David Vanderbilt at
      Rutgers University.
       
    • AtomPAW
      Type:
      Pseudopotential/Pseudoprojector generators
      License:
      Freeware
      Description: A Projector Augmented Wave (PAW) code for
      electronic structure calculations.
      Part I: atompaw for generating
      atom-centered functions Computer Physics Communications 135, 329-347
      (2001)
       
    • FHI98PP
      Type:
      Pseudopotential/Pseudoprojector generators
      License:
      Freeware
      Description: The package fhi98PP allows one to
      • Generate norm-conserving pseudopotentials of the Hammann and
        Troullier-Martins types, employing common parameterizations of the local-density
        approximation and the generalized gradient approximation for exchange and
        correlation.
      • Check the transferability of one's pseudopotentials, in particular to search
        for unphysical ghost states of their fully separable (Kleinman-Bylander)
        representation.

       

    • Jose-Luis Martin's
      pseudopotential code

      Type: Pseudopotential/Pseudoprojector
      generators
      License: Freeware
      Description: No
      description
       
    Roozbeh Sanaei's picture

    Working with an open source program takes a lot time.  Choosing a nice open source program is really important.  But i did'nt find any reliable ranking for open source programs.  According to citation and availability I have found general purpose programs DEAL.II, ALBERT, GROMACS, and PETSC better than others.  But for a special purpose it is evident that one program can be great. 

    For example Sandia's TAHOE  as mentioned in the above have great tools for non-linear models and atomistic-continuum bridging.  But it is not good choice for example in electromagnetism! And OPENFOAM was great for modelling supercavitation. Is there any one who has any information about QM/MM simulating using GROMACS?

     

    Roozbeh,

    I've edited out some of the capitalization from your comment.  Please try to avoid that in the future because that too many capital letters make the comment hard to read. 

    Your lists of software are impressive.  The ranking of a particular software depends on the particular use it is intended for.  General purpose software is useful for a larger group of people than very specialized software.  I would rank those higher.  Ease of use and modification should also play a role in the ranking of software.

    One way you could help at this stage is to give some details of the softwares that you have listed.  You can restrict yourself to those that you have actually used and know the strengths and weaknesses of.   You could also rank these yourself and then we can list these on the main page.

    Biswajit 

     

    Zhigang Suo's picture

    The large number of open-source software listed by Roozbeh seems to raise a question:  Should iMechanica regularly review software? 

    One possible mode of operation can be similar to the jClub.  A few enthusiastic users form a council, which then invites other individuals to review software.  Each month, say, an individual selects one theme, or just a piece of software, writes what he knows about the software.  What does the software do?  Which other software are competitors?  Who are the developers?  The software can be either open-source or closed-source, so long as it is likely to be useful to mechanicians.  The review may be placed as the top post in the Channel "software" for the month, or may be even placed on the top of the front page for the first week. 

    Other experienced users can add their experiences with the software, or ask questions.  Individual software may have its own web site and online community.  What iMechanica may offer is a pointer to that community, as well as a comparision of various similar software packages.

    Is this a useful thing to do for iMechanica?

    Mogadalai Gururajan's picture

    Dear prof. Suo,

    I think it is a great idea--for several reasons.

    1. First is the value addition--there are so many codes that the end user would really like to have an idea as to which one she wants to use, without proceeding by trial and error;
    2. Second is the fact that an experienced user, with a short example, can make the process of using the software easier--for example, a sample code as to how FFTW can be used and/or optimised for solving PDEs would make it much easier for beginners--I learnt by looking at such template code, and modifying it for my purposes. It works great!; and,
    3. Third (even though not the primary benefit), such reviews, if use example problems from different areas of research might also serve the users to have hands on experience--thus, iMechanica will be serving as a forum for teaching each other some part of mechanics using the software as a tool.

    I can also see that in some cases it might lead to collaborations, and/or improvement of the existing software--at the minimum, it will at least make the users aware of any problems or grey areas that mihgt be lurking behind the black box. Hence, I guess an nClub (for numerical Club) would be very welcome!  

     

    Arun K. Subramaniyan's picture

    Dear Prof. Suo,

    I also think that reviewing software in a forum similar to JClub is a very good idea. It is certainly a very unique addition to iMechanica. I like Guru's suggestion for an apt title (nClub) as well.  

    Zhigang,

    As someone whose primary interest is computational mechanics and who
    works in the commercial software industry, I would welcome more
    discussions of software. I'm not exactly sure what form this should take or
    how to encourage it, though.

    As you can imagine, it is extremely difficult to write a broad "review" of
    a general purpose analysis package. It becomes even more difficult if
    more than one code is involved; the author has to be something of an
    expert in all packages. These kind of reviews typically degenerate into
    a Consumer Report -style checkbox format that I don't think is
    particularly useful.

    What seems more useful to me would be articles that focus on a user's
    experience with a particular problem or small class of problems.
    One source of these might be student projects
    from an advanced FEA or applied mechanics class. Could be
    an opportunity for the students to share some useful insights with a larger
    audience. These users may not, in general, be "experts" with the software
    but, by the time they finish the project, they may have become experts
    in a specific area of the software.

    I haven't followed the jClub procedure that carefully but I can imagine
    something like that would work here. Perhaps interested authors could
    submit abstracts, one of which would be selected each month for the
    feature article. I think some sort of editorial control might be necessary
    to keep commercial developers (like me Smile ) from turning these articles into
    thinly-veiled advertisements.
     

    Bill 

    I have added the possibility of having links to expert opinions and ratings in the open source software page.  Please add comments rating the software that you have used.  For now the maximum number of allowable smileys is five.  I'll average your ratings and post a rounded number of smileys in the main page.

    Roozbeh Sanaei's picture

     i think most information and details about a software may be find in it's
    web page.

    of course, an experienced user, with a short example or short comment can
    make the process of using the software more easier. but i think one of primary
    difficulties for researchers is to find a suitable software for special purpose.
    For example, What is the main advantage and disadvatages of DEAL.II on ALBERT.
    both of them are developed for solve PDE's using Adaptive Finite Element method.
    but which of them is better for a special work. Sometimes, Using a suitable
    software to do a specific task make it more simpler. it think categorization of
    existent softwares is a really good manner to help investiagtors to do so. in
    addition, in the case of giving infomation about a software it must be done in a
    categorized way.  questions and answers about open source softwares are found in
    the internet very much but finding a specific answer for a special questions
    some times is harder than try and error. because this information are unsorted.
    this problem may be handled by sort answers and questions of users. overally i
    think it is very good idea. but categorization of information is very very
    important too.

    Zhigang asked me to comment on the software review club idea a couple of weeks ago.  Most of the ground that I'd have liked to cover has already been discussed by Zhigang, Guru, and Bill.  The idea is great and can be implemented quite easily.  Bill had misgivings about the forum turning into advertisement space.  I feel that since this is a two-way forum and more than one person may comment about their experience with a particular software the effect of such misuse will be small.  After all we would all like to advertise something that we like - which is the point of the forum. I  suggest that Guru/Arun/Bill/Rozzbeh decide on the first instalment of the software club with Guru acting as the moderator in charge (the idea evolved out of his initiative after all).  Rather than discuss all aspects of the software in one post we should follow Bill's suggestion about a special topic at a time.

    Personally, I'm more interested in seeing open source software take over the role that commercial software (such as Abaqus) plays today.  That will need a significant amount of commitment from a few key developers who can take the ball and run with it.  These developers will have to be graduate students under the guidance of an expert lead.  Professors and other senior researchers probably have too many other fishes to fry to be able to put in the required time.  However, they can provide the expertise via a frum such as iMechanica.

    I see Tahoe as a software that can become the open source replacement for commercial FE codes.  However, I'm not sure about the details of the licensing model that they follow and what needs to be done to make it GPL compliant. I would like to see more discussion on iMechanica on what can be done to reach the open source goal.

    Biswajit 

    Biswajit,

    Like you, I have wanted for a long time to see a more active open source mechanics software community. If iMechanica can help make this happen, it would be great.

    I'd like to hear more about your experiences with Tahoe. After first becoming aware of it from an earlier post, I went to their web site to find out more. I started out looking for a FAQ; couldn't find anything like that.  The Tahoe Users Guide is four years old. I assume the Doxygen-generated documentation is up-to-date but this sure isn't the most straightforward way to get started with new software. I did finally manage to download the code but didn't find any kind of introduction there.

    Do you have any suggestions for getting started with this package?

    Do you have more information on the organization of this project? Is it still actively supported by Sandia/DOE?

    Thanks.

     

    Bill 

    Hi Bill, 

    I'm one of the adminstrator of Tahoe at Sandia.  The code does not have a user guide or a comprehensive FAQ and that is a large impediment for people who want to get started on the code.  Tahoe is not an official Sandia/DOE code in that there are no funds devoted to its maintainance or development.  It was a labor of love of Patric Klein, a former Sandian, that many people like myself have adopted for their research. A few of us and Patrick still maintains it in our spare time and develop on it for our work.  To get started, I suggest you download the open source version from sourceforge and download an xml reader such as Xample.   The user guide, though four years old, is also helpful in that it gives you an idea of the avaiable elements, materials, and solvers available in the open source version.  The format of the input file has changed radically, but there are updated benchmarks in the benchmark directory that can help get you started.  The xml input file is self-explanatory in terms of the choices of parameters.  If you have further questions, you can e-mail tahoe-help@sandia.gov or post on the Tahoe forum.  Thanks.

     

    Vicky Nguyen 

    Vicky,

     Thanks so much for your reply. It is great to have a Tahoe developer here on iMechanica.

      I followed your suggestions about downloading the code and perusing the manual. I've spent a bit of time looking through the code but have been unable to answer a fairly fundamental question. I'm hoping you might point me in the right direction. I would post the question to the Tahoe forum but I think other iMechanicians may also be interested in knowing the answer.

      Here is the question. It appears from the manual and code that Tahoe supports both solid and heat transfer problems. But it isn't clear to me how easily it can support more general nodal degrees-of-freedom. Suppose for example that I would like to add an element for coupled elastic, thermal, and electrical behavior (i.e. displacments, temperatures, and electrical potential at the nodes). Is this possible? Can you give me a brief idea of the steps? I found this method: BasicFieldT::Initialize() and it appears to be related to this question but can't find where the method is called.

      A related question has to do with rotation degrees-of-freedom. Does Tahoe support these? I didn't see any beam or plate elements when I looked through the Elements directory. Basically I'm wondering how hard it would be to add these types of elements.

     Thanks again for the help.

    Bill 

    Hi Bill,

     Tahoe does support general degrees of freedom for coupled problems, and there are some examples of this in the developer's version not in the open source version available on sourceforge.  Do you want to implement a fully coupled problem i.e. thermal-elastic, where you have a monolithic solution phase with a big stiffness matrix or do you want to implement a weakly coupled system with a staggered solution scheme?  The implementation would be very different for either cases.  Assuming that you'd like the do the former fully coupled case Tahoe allows you to specify an arbitrary number of nodal degrees of freedom in the  the .xml input file under the "nodes" tag.  The class FieldT manages initial conditions and nodal boundary conditions (i.e. displacements, nodal forces) for your defined nodal dofs and handles the interface between the element class and the solver class (i.e. integrators). It stores as member data, arrays of the nodal values and its first and second derivatives for the current and previous time step.  The continuum element classes are all derived from  ContinuumElementT which handles the mapping from the global ordering to the local element ordering of the nodal dofs (SetLocalArrays) as well as the initialization of the shape functions (SetGlobalShape).  The element classes passes interpolated integration point values of the nodal dofs to the material class so that you can calculate your constitutive relations such as stresss or heat flux.  

     I hope this helps. 

    Vicky

     

    Roozbeh Sanaei's picture

    deal.II is a C++ program library targeted at adaptive finite
    elements and error estimation. It uses state-of-the-art programming techniques
    of the C++ programming language to offer you a modern interface to the complex
    data structures and algorithms required for adaptivity and enables you to use a
    variety of finite elements in one, two, and three space dimensions, as well as
    time-dependent problems.

    The main aim of deal.II is to enable development of modern
    finite element algorithms, using among other aspects sophisticated error
    estimators and adaptive meshes. Writing such programs is a non-trivial task, and
    successful programs tend to become very large and complex. We therefore believe
    that this is best done using a program library that frees the application
    programmer from aspects like grid handling and refinement, handling of degrees
    of freedom, input of meshes and output of results in graphics formats, and the
    like. Also, support for several space dimensions at once is included in a way
    such that programs can be written independent of the space dimension without
    unreasonable penalties on run-time and memory consumption.

    Hi,

    I think that two tests could be performed to ensure a library is generic enough:

    1) code partition of unity enrichmen, XFEM, GFEM, PUM, PUFEM...

    2) code meshfree methods

    Any comments as to the possibilities of these codes for such endeavours?  By experience, this is not trivial, with any library.

    Dr Stephane Bordas

    http://people.civil.gla.ac.uk/~bordas

    biplab's picture

    Couple of months back I had the same question regarding the available FEM libraries. I had a quick glance through the Deal-II feature set. It appeared no-one has used Deal-II so far for XFEM. (Please correct me if I'm wrong).

    You may find a comparison of what Deal-II can't do from the following link.

    http://home.gna.org/getfem/getfem_faq.html 

    I don't have any test results to prove their claims. But for sure, one can write a XFEM program with GetFem++ (Though I posted some negative opinion about them). They do provide a sample code to analyse a XFEM problem, too.

    The same is true for meshfree methods, too.Smile

    Roozbeh Sanaei's picture

    ALBERTA is an
    Adaptive multiLevel finite element toolbox using
    Bisectioning refinement and Error control by Residual
    Techniques for scientific Applications. Its design is based on
    appropriate data structures holding geometrical, finite element, and algebraic
    information. Using such data structures, abstract adaptive methods for
    stationary and time dependent problems, assembly tools for discrete systems, and
    dimension dependent tasks like mesh modifications can be provided in a library.
    This allows dimension-independent development and programming of a general class
    of applications. In ALBERTA, hierarchical 2d and 3d meshes are
    stored in binary trees. Several sets of finite elements can be used on the same
    mesh, either using predefined ones, or by adding new sets for special
    applications. Depending on the currently used finite element spaces, all degrees
    of freedom are automatically managed during mesh modifications.

    Roozbeh Sanaei's picture

    I Have Some problems for install xample on my computer. How can i install it. on FEDORA 6.0!?

    Unfortunately open source FE codes cannot most of the time be compared to commercial ones in terms of functionnality and maintenance. Reasons are easy to understand: these projects involve in general only a few persons and when they move to other business interests, the project stalls. There are however a few exception: OpenFOAM seems to be one for CFD modelling (I don't have experience with this code) and Code_Aster for Solid Mechanics. Code_Aster is being developed by EDF, a large french electricity company. They use Code_Aster for their internal needs in terms of thermo-mechanical modelling. Considering their rather large community of users (more than 100 FE users only for EDF) and the resource they use to this project (probably a few dozens of developers working at least regularly on it), it is no surprise that CODE_ASTER has become a very powerfull tool. Capabilities are very large (thermal analysis, mechanical analysis, dynamic analysis, fracture mechanics,...). Code can import meshes from SALOME, I-DEAS and GMSH. Results can be saved in the same formats. I have 10-year experience with structural mechanics, mostly with ABAQUS but I have used as well NASTRAN, RADIOSS and SAMCEF.  I have used CODE_ASTER for substructuring (Super elements) and thermal simulation of welding. In my opinion, there is no real difference between CODE_ASTER and ABAQUS. ABAQUS seems to be better suited for non linear anlyses (contact) but CODE_ASTER has its adavantage (substructuring is far better than in ABAQUS). I would thus recommend CODE_ASTER for people wanting a free, capable, reliable FE software able to perform industrial-like simulations. Documentation is very good, unfortunately in french (but an english translation seems to have begun).

    Rating: SmileSmileSmileSmileSmile

    I have been working with/on CalculiX for a few years now and am
    responsible for the Windows port.  Since I have this bias, I will not
    include a rating and taint your polling results. 

    The reasons I chose to get involved with CalculiX are that the solver and associated
    tools are under active development, are fully documented (in English) and there is a forum
    for support.  It also has a umat interface and an input deck format that will be familiar to any Abaqus users.

    Primary website: http://www.calculix.de

    Windows port: http://bConverged.com/calculix

    Forum: http://groups.yahoo.com/group/calculix

    FYI: CalculiX probably ought to be categorized
    as a nonlinear finite element application. 

    I am just wondering whether there is any 3D finite element program for coupled displacement-pore water pressure analysis for consolidation process, the solid phase  could be linear or nonliear and the fluid could be linear or nonlinear...
    Thanks a lot!

    Seungtae Choi's picture

     

    You can use COMSOL (http://www.comsol.com/) to simulate fluid-structure interaction. I have used COMSOL software to analyze a microfluidic pump operated by solid actuator. There is also another software, CFD-ACE. But, my colleagues prefer COMSOL. I hope this information is useful for you.

     Seungtae

     

    Tochnog program (from sourceforege) is especially suited for consolidation and geotech work. It is kinda old and is not supported anymore, Still  compiles ok. The author has chosen to support it commercially. 

    HTH

    -osman 

    Roozbeh Sanaei's picture

    Most of FEM Packages either Opensource or not which i have seen ever are based on phsycial aspect of finite element method. Interpreting Materials as their Stress- strain relation. i think in practice mathematical point of view in finite element iss more interesting. because its generality in defining elements depend on PDE which we want to solve it. and its clearity in defining ERROR and Refining the mesh. and its comparablity to other mathematical methods. I have not ever seen commerical finite element package which based on the MATHEMATICAL view. OF course COMSOL and FEMLAB could be such examples but their general PDE  is very limited. DEAL.II and ALBERT of examples of opensource programs in this aspect. as their citation shows many users have used them by now and their bugs may be few. some examples of their usage which must of them are mechanical exists in their site and shows their applicablity in our way. its not bad to take a glance at them and use them in finite element projects. their expansion would result to more general finite element package we need in future.

    biplab's picture

    The mathematical point of view is a good aspect as you've explained. But some of these Open-source packages are so cryptic, it raises a question about their goal.

    My research area is in xFEM. For the past couple of months I was suffering with one such package. I started with GetFem++. Here is the horrible experience that I faced.

    1) Initially it's sample were exporting garbage vtk output files (which were not recognised by MayaVi or VisIt). Later I found that I should export the VTK files in ASCII text.

    2) The documentation is insufficient. I should say it's bare minimum.

    3) The GetFem++ library uses horrible naming scheme. E.g., to specify boundary conditions, the class names starts with mdbrick_.

    4) The source code has very little comments. On top of that it uses a large number of templates. This make the code quite unreadable.

    E.g., the following code can be compiled. But if such code is present in over 100s of files, it's really difficult to understand what's going on.

    #include<iostream>

    using namespace std;int main(){cout<<"Hello World"<<endl;return 0;} 

     

    I have fair knowledge of programming. But till date I couldn't figure out how to write a basic xfem analysis program with it.

    An open-source source without proper documenation is as good as an closed one. So even if an average user, like me, wishes to use their goodness and contribute by extending it, there are still large number of hurdles to cross.

    In my honest opinion, if these packages sacrifice a little bit of Software Engineering and be more user-friendly, we may see some good packages coming up. Otherwise they will remain as isolated packages as they are right now.

    N. Sukumar's picture

    Yes, I can empathize with you. With C++, one can get carried away with too much ``templatizing'' and/or making it very general (differential forms for constitutive  laws and for bilinear forms, etc.).  Such a need might not be necessary, even though it is mathematically aesthetic and elegant. Often, if the package is focused on just a few specific goals, then it is easier to meet the demands of readability, speed, and user-friendliness. That said, if a library does provide X and Y functionalities, then it might not meet the needs and/or expectations of those who also wan't Z_1, Z_2, . . , Z_n. Overall, linear solvers are a good open-source library example that are mature and used by many; the service they provide is just one (solving Ax = b for different forms of A).  To expect such from open-source fem codes is a tad unreasonable. For the purpose of learning, understanding (pros and cons), and appreciating the subtleties of any computational model, there is no substitute to coding the key ingredients of the same by oneself.

    biplab's picture

    Thank you for your reply.

    I agree with you completely that there is no substitute of coding these things by myself. I intend to do the same after I familiarise with the xfem analysis procedures.

    At the moment I'm using a xfem code published by Dr. Stéphane BORDAS (http://www.civil.gla.ac.uk/~bordas/codes/xfemMatlab/xfemMatlabCode.rar). This one has given me a good insight on how to proceed.

    But I have few queries related to the input / output format that I should use while writing my own program.

    1) Which input format do you suggest me to use in my program so that I can extract the mesh & other related informations from a commercial FEA package? I have access to ANSYS and ABAQUS.

    2) Which output format do you recommend? During the testing of GetFem++ sample programs I encounterd files with VTK and OpenDX format. I came to know that VTK file formats doesn't support multiple meshes in a single file. OpenDX file can solve this. Kindly post if you know any alternative file formats that can be used.

    Thanks in advance.

    Biplab 

    Hi!

    Thanks for using our code. Nguyen Vinh Phu is the author of this matlab code. We also developed an open source XFEM code for any problem, and we are planning to introduce it into OOFEM, but we need people to help us with this. If anyone is interested, it would be a pleasure to introduce OpenXFEM++ into OOFEM with them, I think that this will be a nice step for the community.

     I advise the use of gmsh for pre and post-pro, it is a really nice tool.

    All the best form Glasgow,

    Stephane

    PS: I have three Ph.D. theses available in fracture mechanics. 

    Dr Stephane Bordas

    http://people.civil.gla.ac.uk/~bordas

    biplab's picture

    Thank you very much for your reply and your suggestion. Smile

    I went through the documentation of OpenXFEM++ and also it's code embedded in it. The code is quite readable and thanks for making it that way.

    But is there any plan to release it through some open source software publishing platform?? I mean to say like using SourceForge.Net or Berlios (This is based in Germany). That would help other members to contribute code to the project.

    Though I have some complaints against Berlios. I'm an active developer of Code::Blocks (An Open-source Cross-Platform IDE). We use Berlios as our code publishing platform. It often remains inaccessible to Non-EU developers (like me).

    I wish I could contribute to your project. Definitely if I use OpenXFEM++ in my future development, I'll post improvements, if any. Smile

    Thanks,

    Biplab

    http://biplab.in

    Hi Biplab,

    It is great to see your interest. OpenXFEM++ is not yet released on an open source term, but this was our next step. We are also trying to couple it with OOFEM, and then, perhaps it can be released that way. My trouble was that I did not know how many people would be interested in contributing, and thought it would not make much sense for such a "simple" code to be released this way. However, I do not know if this is true or not. I could use a lot of help to further develop the code (for instance, make it more efficient and parallel).

    Thank you for your suggestions, let's keep this flowing stephane . bordas @ gmail . com 

    Dr Stephane Bordas

    http://people.civil.gla.ac.uk/~bordas

    Dan Cojocaru's picture

    :-) People working for open source projects are usually really passionate about their work but
    ... programmers/developers don't like to write code documentation if they do not have to.

    I think it is rather the rule that open source codes come at best with automatically generated documentation.

    biplab's picture

    Thank you for your reply. Smile

    I do agree with you with this trend among Open-Source developers. I do not blame them as most of them often develop it at their free time and it's the code that matters to most of them. But most of them follow certain rules while naming the variables and different classes so that the other members are able to decipher the code.

    I gave one example of an unusual GetFem++ class name. Honestly I appreciate their hard work. But I'd request them to make the code more readable.

    PS: I do actively contribute in Open-Source Development. I'm an active developer of an Open-Source Cross-Platform IDE (Code::Blocks, http://forums.codeblocks.org/index.php/board,20.0.html)

    Hi All,

    I would like to suggest Blender as a drawing tool, TetGen as a mesh generator, and ParaView as a visualization tool. After the geometry is defined with Blender, someone may use a Python script: tetgen_export.py to generate the input files of TetGen. Additionally, for C++ developers, someone may use the libraries available in MechSys in order to, or write his/her own FE program or use a 3D soil-water unsaturated coupled FE program also availabe in that site.

    Regards.

    I saw on this page some discussion of Matlab versus FORTRAN versus C++.  Perhaps you'll pardon my plug for my open-source Matlab finite element toolkit, SOFEA. I hope you'll check it out (http://hogwarts.ucsd.edu/~pkrysl/sofea).

     Cheers,

     Petr

    Subscribe to Comments for "Open Source Software"

    Recent comments

    More comments

    Syndicate

    Subscribe to Syndicate