Giter VIP home page Giter VIP logo

xcfem / xc Goto Github PK

View Code? Open in Web Editor NEW
244.0 30.0 52.0 85.15 MB

finite element analysis package for civil engineering structures.

Home Page: http://www.xcengineering.xyz/html_files/software.html

License: GNU General Public License v3.0

CMake 0.53% Shell 0.56% Python 28.05% PostScript 0.02% XC 0.04% Gnuplot 0.01% TeX 2.15% Perl 0.01% C++ 61.76% C 3.08% Fortran 3.79% POV-Ray SDL 0.01% MAXScript 0.01% HTML 0.01%
finite-element-analysis open-source libgmp structural-engineering xcfea-package finite-elements opensees reinforced-concrete prestressed-concrete structural-analysis

xc's Introduction

XC

Open source finite element analysis program.

Purpose

The purpose of XC is simple: master the analysis software instead of being mastered by the analysis software.

Overview

You can see some screenshots here.

The objective is to develop a robust structural analysis tool, which is owned by the community, and allows the users to improve and adapt it for their own needs. Open-source software (or, even better, free software) is the natural evolution of the tools structural engineers have been using forever.

It's all about developing tools that allow us to keep going forward (much in the sense of designing for strength, economy and beauty) instead of repeating the same old solutions but in a faster way.

Features

The main capabilities of the program:

  • Geometry modeling and mesh generation tools.
  • OD, 1D, 2D and 3D elements.
  • Linear and non-linear analysis, static and dynamic.
  • Fiber section models (modelization of RC members,...).
  • Activation an deactivation of elements (construction phases,...).
  • Tools for implementing structural codes (in progress):
    • Reinforced concrete structures: Eurocode 2, ACI 318, EHE, SIA 262
    • Steel structures: Eurocode 3, AISC 360, EAE, SIA 263
    • Wood structures and masonry structures (in progress...).
  • Interface with Industry Foundation Classes through IFC++ (in progress...).
  • Interface with SCIA Engineering (in progress...).
  • Component-based finite element method (CBFEM) for analysis and design of steel conections (in progress...).

CBFEM: connection capacity factor

Installation

See install

You can also find Docker images created by Anton Surviyanto. The source code of the Dockerfile is here

Dependencies

Don't worry, if you have a decent *nix system the installation is straightforward. You can take a look to the list of dependencies here.

Where to start

The programs lacks of a user manual (would you help us with that?). Anyway you can start with some simple examples you'll find here. You can also take a look here

Links

You can take a look to the project home, to the Python documentation or the C++ API documentation or to our XC page in the company site. (all of them are work in progress ;-).

xc's People

Contributors

anaiortega avatar berndhahnebach avatar dratsiox avatar ebrahimraeyat avatar lcpt avatar luzpaz 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  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

xc's Issues

set distro name changes source

set distro name changes source code even if we gone make an out of source build. This is cumbersome if someone works with git and a distro diffrent than ubuntu. In orginal source the name is set to ubuntu and for every cmake run it is changed to debian for me. I need to git checkout the old file with ubuntu than to not change the code for a PR. But than on my machine there is a ubuntu but I'm on debian.

Do we really write the distro name in a file inside the sources? See https://github.com/lcpt/xc/blob/master/CMake/distro_name.txt and https://github.com/lcpt/xc/blob/master/CMake/get_distro_name.sh Is this used somewhere?

cheers bernd

compile XC on Debian Buster

Hi Luis,

I tried to compile XC on Debian Buster, but xc_utils fails on cmake because of missing mysql dev packages. The problem is on Debian Buster is package libmysql++-dev not available. See https://packages.debian.org/search?searchon=names&keywords=libmysql%2B%2B-dev Do you have an idea how to fix this?

Ahh just realized the following ... but open the ticket anyway to not forget about ...
I may try to install the sid or stretch package. It is not smart, but it could work because all of them are 3.2.2+pristine-2

I will report back.

cheers bernd

BTW: XC compile script's still run flawless on Debian Stretch and Ubuntu Bionic Beaver :-)

xc and opensees

Ĥi Luis
Hi Ana,

just some basic question. Is XC a fork of opensees or is it based on opensees and the opensees code in XC will be updated from time to time when opensees will be released in a new version?

cheers bernd

Export data out of XC

Is one of the following possible and if yes how? workingModel of ana is agreat example to play with ...

  • export geometry entries to step, dxf, txt or any other format?
  • export fem-mesh to vtk, unv, stl or any other format?
  • export results to vtk?

Cheers bernd

Add an interface with IFC structural analysis model.

The IfcStructuralAnalysisModel is used to assemble all information needed to represent a structural analysis model. It encompasses certain general properties (such as analysis type), references to all contained structural members, structural supports or connecting members, the connection properties, as well as loads and the respective load results.

For a general description of BIM implications in structural analysis see: http://projekter.aau.dk/projekter/files/32688467/structural-modelling-and-analysis-using-bim-tools.pdf

Form a description of the IFC structural analysis model see: http://www.buildingsmart-tech.org/ifc/IFC2x3/TC1/html/ifcstructuralanalysisdomain/lexical/ifcstructuralanalysismodel.htm

stress-strain diagram for concrete materials

Script for plotting the concrete stress-strain diagram:
xc/python_modules/materials/plotParabDiagram.py
Incorporate the script into the routines that write the section reports in latex.

readme.md and readme.txt

Just some minor thing which confuses new user and it is cumbersome for us to maintain two files.

Do we need a readme.txt and readme.md ? The readme.md could be read with an editor or formated on github. This is a main advantage of markup languarge.

How about checking if everything from readme.txt is in readme.md and just delete the readme.txt .

If you are ok with this I would do that.

cheers bernd

cmake/ petsc compile error

Hello,

could anyone provide some assistance with the following error? it occurs when I try to compile xc, with
'cmake ../xc/src'.

I understand there is an issue with cmake identifying petsc, and that the xcfem code includes the script FindPETSc.cmake.

I have PETSc 3.7 installed, and I am using Ubuntu 16. The XC package was downloaded on 28/12/18.

CMake Error at /home/chris/build_xc/xc/CMake/FindPetsc.cmake:32 (MESSAGE):
No se encontró petsc.h
Call Stack (most recent call first):
/home/chris/build_xc/xc/CMake/find_packages.cmake:36 (find_package)
CMakeLists.txt:62 (INCLUDE)

Set up an github organization xcfem

Hi ana, hi luis,
I quit often have a look at the issues and other stuff even when I'm on the way and it is quit cumbersome to keep the names of ana and your github. Furthermore for new user it is cumbersome to have different github to get xc repos. Furthermore on your github are repos not related to xc.

How about making an github organization xcfem and move all xc repos there. This will be the base and all other are forks including your own ones. Furthermore your own delopment or test or play branches will be in your github and not in the main repos. It is eay

does this software depend on metis or parmetis?

Hi, I would be thankful if you answer my question. It may be a little bit novice but anyway I ask it.

Does this software depend on metis (free software) or parmetis (non-free software)?

Because in the CMake directory, this file tries to find metis while this file says that metis and parmetis both are the dependencies.

I asked this question because I couldn't find a file where parmetis.h is included.

@berndhahnebach

Minor changes to result-file generation

Whilst writing code related to verifications for steel beams, two minor changes would be convenient:

  • As used different check routines for reinforced concrete than for steel elements, in order to generate a unique file of results we should add an 'append' parameter to the function that writes that file (it can default to "N").
  • On another hand, the usual way of checking the results is by displaying them. We systematically generate a resultFile.py (used by display) and a resultFile.tex (listing). Perhaps it's a better idea to create the listing file only if asked by the user.

Do you see any problem if I make those changes?

Tons of documentation questions

issues are not the best way to ask all the question I have ATM, but we do not have any better ATM, do we? There is neither a forum or a mailing list?

Bernd

porting to python3

Is there any plan to work with python3? for installation it's give me print error frequently, because my default python evnironment is python3. thanks.

Write code to detect ill-conditioning in the FE model.

Sometimes is not trivial to detect where is the problem that causes the solver to crash or, for example, when performing geometrically non linear analysis with loose cables we can find nodes that are almost free.

That will be useful to write the routines to detect this problem based on something like this: http://eprints.ma.man.ac.uk/1997/1/covered/MIMS_ep2013_35.pdf

(Detecting the Causes of Ill-Conditioning in Structural Finite Element Models) by Kannan, Ramaseshan and Hendry, Stephen and Higham, Nicholas J. and Tisseur, Francoise

compiling on manjaro linux

Hello. Very thanks to your very usefull software. I try to install xc on manjaro linux with .sh installation file, but for xc_basic it gives me this boos error:

-- Could NOT find Boost
Unable to find the Boost header files. Please set BOOST_ROOT to the root directory containing Boost or BOOST_INCLUDEDIR to the directory containing Boost's headers.

I work with python and i don't underestand what this mean? thanks

convergence problem

Hi,
I have a problem with a steel bar defined by two lines. when using the points for line generation at coordinates [0, 2.5, 5] the calculation of internal forces works fine, but if you move slightly the middle point and use coordinates [0, 2.5006250000000003, 5], an error is displayed:

XC::BandSPDLinLapackSolver::solve; WARNING - the LAPACK routines returned 161
XC::Linear::resuelve; WARNING the XC::BandSPDLinSOE failed in solve()
XC::StaticAnalysis::solve_current_step; the Algorithm failed at step: 0 with domain at load factor 1

Any idea of what is happening?

Fiber section neutral axis depth: different results (about 10%) on different machines.

Results in the computation of neutral axis depth (see test_fiber_section_prop.py) are different in different machines (difference about 10%). This is an error that we must catch but it will be necessary to have some way to transfer partial results between machines quickly and accurately. This way we can
compare results step by step to find the problem. A possible solution is to use 'pickle' with XC classes: https://www.boost.org/doc/libs/1_46_1/libs/python/doc/v2/pickle.html

Write methods to aggregate load patterns.

Write methods to make possible to aggregate many load patterns into one:

G= selfWeight + deadLoadA + deadLoadB + earthPressure

This way it's easier to write combinations:

ELU1= 1.35*G+...

instead of:

ELU1= 1.35_selfWeight+1.35_deadLoadA+1.35_deadLoadB+1.35_earthPressure.

To do that:

  • Make its own classes for the containers of the nodal loads, elemental loads and single point constraints (see LoadPattern.h). Maybe its useful to guarantee the uniqueness of the tags (see issue https://github.com/lcpt/xc/issues/1
  • Write the methods to aggregate these objects (with loads multiplied by the corresponding factor).
  • Write the method to aggregate the load pattern.
  • Export that to Python.

Problem imposing reduction of prestressing in a beam

Hi,

I have a problem with a test I'm performing to check deflections in prestressed beams. The question is, at some point, I must impose a reduction of prestressing in a beam (from 6800 to 4500 kN/m2). I've tried two methods: 1) change the prestress in the material of each element of the cable, 2) impose an equivalent strain in the elements.

In repository work_in_progress there are three simple models to reproduce the issue:

test_deflection_prestressed_beam_01.- The initial stress in prestressing steel is set to 4500 kN/m2 -> The model outputs the right results (uz=40 mm & N=4500 kN) that match those from a direct calculation, but only because the final tension is directly assigned to the material in its definition statement.

test_deflection_prestressed_beam_02.- I set initial stress in prestressing steel = 6800 kN/m2.
Before calculating I set a prestress of 4500 kN/m2 to the material of
each element (lines 157-158).
Results: uz=60.5 mm (as if prestress = 6800 kN/m2), N=4500 kN

test_deflection_prestressed_beam_03.- I set initial stress in prestressing steel = 6800 kN/m2.
Before calculating I try to impose a strain in order to reduce the stress
from 6800 kN/m2 to 4500 kN/m2 (lines 157-162)
results: idem to case 1. The following error arises: ElementBodyLoad::applyLoad; el number of pointers no coincide con el de identifiers.

Any idea how to tackle it?

compile XC on debian stretch

gave it a try on debian stretch on comit 0597827

Here is what I did: https://gist.github.com/berndhahnebach/7d39889916cb36ea7e6ed6c0d758f9f6

On cmake I run into some trouble ...

$ cd /home/vagrant/Documents/build_xc/build  &&  sudo rm -rf *  &&  sudo cmake ../xc/src
CMake Warning (dev) at CMakeLists.txt:76:
  Syntax Warning in cmake code at column 35

  Argument not separated from preceding token by whitespace.
This warning is for project developers.  Use -Wno-dev to suppress it.

CMake version is greater than 2.8.4
-- The C compiler identification is GNU 6.3.0
-- The CXX compiler identification is GNU 6.3.0
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
CMake Error at CMakeLists.txt:19 (INCLUDE):
  include could not find load file:

    /root/.xc_build/basica_dirs.cmake


-- basica project dir: /..
-- basica include dir: 
-- basica lib dir: 
CMake Error at CMakeLists.txt:31 (INCLUDE):
  include could not find load file:

    /root/.xc_build/lcmd_dirs.cmake


-- lcmd project dir: /..
-- lcmd include dir: 
-- lcmd lib dir: 
-- xc project dir: /home/vagrant/Documents/build_xc/xc/
-- xc include dir: /home/vagrant/Documents/build_xc/xc/src/
-- xc lib dir: /home/vagrant/Documents/build_xc/xc/lib
-- The Fortran compiler identification is GNU 6.3.0
-- Check for working Fortran compiler: /usr/bin/gfortran
-- Check for working Fortran compiler: /usr/bin/gfortran  -- works
-- Detecting Fortran compiler ABI info
-- Detecting Fortran compiler ABI info - done
-- Checking whether /usr/bin/gfortran supports Fortran 90
-- Checking whether /usr/bin/gfortran supports Fortran 90 -- yes
-- Looking for XOpenDisplay in /usr/lib/x86_64-linux-gnu/libX11.so;/usr/lib/x86_64-linux-gnu/libXext.so
-- Looking for XOpenDisplay in /usr/lib/x86_64-linux-gnu/libX11.so;/usr/lib/x86_64-linux-gnu/libXext.so - found
-- Looking for gethostbyname
-- Looking for gethostbyname - found
-- Looking for connect
-- Looking for connect - found
-- Looking for remove
-- Looking for remove - found
-- Looking for shmat
-- Looking for shmat - found
-- Looking for IceConnectionNumber in ICE
-- Looking for IceConnectionNumber in ICE - found
-- Found X11: /usr/lib/x86_64-linux-gnu/libX11.so
-- Found OpenGL: /usr/lib/x86_64-linux-gnu/libGL.so  
-- The imported target "vtkRenderingPythonTkWidgets" references the file
   "/usr/lib/x86_64-linux-gnu/libvtkRenderingPythonTkWidgets.so"
but this file does not exist.  Possible reasons include:
* The file was deleted, renamed, or moved to another location.
* An install or uninstall procedure did not complete successfully.
* The installation package was faulty and contained
   "/usr/lib/cmake/vtk-6.3/VTKTargets.cmake"
but not all the files it references.

-- The imported target "vtk" references the file
   "/usr/bin/vtk"
but this file does not exist.  Possible reasons include:
* The file was deleted, renamed, or moved to another location.
* An install or uninstall procedure did not complete successfully.
* The installation package was faulty and contained
   "/usr/lib/cmake/vtk-6.3/VTKTargets.cmake"
but not all the files it references.

-- Found GTK2_GTK: /usr/lib/x86_64-linux-gnu/libgtk-x11-2.0.so  
CMake Error at /home/vagrant/Documents/build_xc/xc/CMake/find_packages.cmake:6 (find_package):
  By not providing "FindGNUGTS.cmake" in CMAKE_MODULE_PATH this project has
  asked CMake to find a package configuration file provided by "GNUGTS", but
  CMake did not find one.

  Could not find a package configuration file provided by "GNUGTS" with any
  of the following names:

    GNUGTSConfig.cmake
    gnugts-config.cmake

  Add the installation prefix of "GNUGTS" to CMAKE_PREFIX_PATH or set
  "GNUGTS_DIR" to a directory containing one of the above files.  If "GNUGTS"
  provides a separate development package or SDK, be sure it has been
  installed.
Call Stack (most recent call first):
  CMakeLists.txt:75 (INCLUDE)


-- Configuring incomplete, errors occurred!
See also "/home/vagrant/Documents/build_xc/build/CMakeFiles/CMakeOutput.log".
vagrant@stretch:~/Documents/build_xc/build$ 

migration to python3

If you consider moving to Python 3 before Python 2's End-of-Life which is January 1, 2020. I would be more than happy to give a hand and help about it.

Ill-conditioned problem?

Hi,
I'm trying to make a test on long-term prestress losses over a single section (see test_long_term_restress_loss.py in work-in-progress repository), but in the first stage (prestress transfer) it returns already a 2% error. It seems that the problem is ill-conditioned (the displacement in the element axis and rotation in its strong axis are free in one of its nodes). The message that pops up is:

XC::Node::checkReactionForce; the node: 2 has not constraints on DOF: 0 and, however, it has a reaction with value: 4385.68 on this degree of freedom, it seems that the solution method and/or tolerances are not well suited to the problem. (tol= 19.2473
XC::Node::checkReactionForce; the node: 2 has not constraints on DOF: 4 and, however, it has a reaction with value: 114.361 on this degree of freedom, it seems that the solution method and/or tolerances are not well suited to the problem. (tol= 19.2473

Does it ring any bells?

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.