Giter Club home page Giter Club logo

febio's People

Contributors

alexandraallan23 avatar chunkeey avatar gateshian avatar jjs2215 avatar luzpaz avatar michaelrossherron avatar spesle avatar spietz avatar stevemaas1978 avatar stevenlabelle avatar tundranerd 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

febio's Issues

Bug restarting using mapped materials

FEBio v3.6 restarting simulation with mapped material parameter does not work.

Here is a simple example

febio3 -i mapped_material.feb -dump -break 0.1

then quit and restart:

febio3 -r mapped_material.dmp

If the material parameter is not mapped, restarting the example works fine.

Representing growth using the prestrain gradient?

Hi,

From the docs it appears to me that the prestrain gradient (for incompressible materials) should have determinant 1. Is this correct?

When this is not the case, I frequently encounter negative Jacobian. I'm trying to represent a time-dependent growth process in an incompressible material. Is this possible to do via the prestrain gradient with determinant < 1?

Parameter Optimization Updates

The documentation for parameter optimization is out of date with the current version of FEBio.
The documentation in the FEBio manual is for version 2.0.

Other useful features:

  1. the print output format is "data point id,current value, required value, difference". It would be helpful if the simulation time was included in the output to more easily plot the data. Adding a log_level tag for only saving the final iteration to the log would also be helpful.
  2. Data points are all weighted equally. It would be useful to include an option for weighting each data point within the point tag. Currently the user can effectively do this by repeating data points but a weight option would make it easier.

"Fibers" documentation does not belong under "Continuous Fiber Distribution" in UM

The "Fibers" section of the User's Manual (currently 4.2.5) describes fiber constitutive models. It is currently contained in the subsection 4.2, "Continuous Fiber Distribution". This is confusing because it implies that the fiber models can only be used with a continuous fiber distribution. The documentation itself does not provide further clarification. I think the Fibers subsection should be moved under subsection 4.1, Elastic Solids, and the documentation needs to be updated to clarify that the fiber models can be used without a distribution (but should be used with a matrix term).

material mapping

Hello,
I would like to use FEBio as the main solver for bone mechanics and damage, which requires mapping the scalar field of bone density obtained from CT onto FE space (discontinuous Galerkin). Is similar functionality available in FEBio solver?

febio

I would like to ask if FEBio can define the femur as the movement in global coordinates and the tibia as the movement in the coordinate system (local coordinate system) with reference to the femur.

Yeoh Model

Would it be possible to implement the Yeoh model in FEBio?

Using `auto-07p` to continue along instabilities?

This is a very general question, but I was wondering if the solver developers had considered auto-07p for bifurcation analysis (for example in the 1D case, link), and if it can be used at all in the 3D case. As I understand, currently solutions cannot be continued in FEBio when they become multivalued. This would be highly useful when it is not known a priori how to break symmetries in the system to favor one solution or another at unknown elastic instabilities.

Add log data option for surface data

Currently, only node, element, rigid body and connector data can be stored to the log file.
Need to add option for storing surface data, for instance, for exporting contact pressures etc.

Export logfile data for specific analysis step

Make it possible to specify log output for specific analysis steps. E.g.

<logfile>
<node_data data="vx;z;y" node_set="Nodeset01" delim=", " file="node_data.txt"/> (only want this for analysis step 2)
<element_data data="x;y;sz;syz;Ez;Eyz" elem_set="Elements01" delim=", " file="element_data.txt"/> (only want this for analysis step 1)
</logfile>

From forum post.

Datastructure for FEMesh

Hey so I'm currently working on a FEBio Plugin which exchanges Mesh data with another simulation and I'm wondering if I understood the data structure correct. I drew my self this image to understand the relationship between the Mesh, Element and nodes.
Mesh contains nodes and elements. n Nodes form an element. An element contains the integration points/material points, that store the actual simulation data values.
So first question would be is that correct or did I miss something?
and my second question is, if I'm trying to access/manipulate the data values in the FEBio simulation, should I access the material points directly or is there a better way?
febio_mesh_objects

higher order pyramid elements

I was wondering if it would please consider adding support for higher order pyramid elements? These elements are quite handy in making unstructured tet-based meshes, but for the nearly-incompressible models the linear elements are no good.
image

-nan or -1.#IND for principal component logfile output

@SteveMaas1978

In one of my GIBBON demos I output principal Cauchy stresses, for a selection of solid elements (tet4), to a log file, i.e. s1;s2;s3.

Usually the output is in the following form:
430,4.84829e-05,4.72102e-05,4.31673e-05
Where the first number, 430 is the element id and the other 3 numbers would be s1, s2, and s3.

For some elements however I get the following output for Linux:
430,-nan,-nan,-nan
and the following for Windows:
430,-1.#IND,-1.#IND,-1.#IND

I suspect this is this because no reliable eigenvalues are found for that tensor or the outcome is complex? Perhaps you should detect the zero/complex case and replace it by all zeros? Would it make more sense to have 0 instead of -nan or -1.#IND? If you do want to export something other than 0, perhaps you can make it consistent across systems e.g. use nan throughout (handling NaN is easier/standard and -1.#IND throws an error or requires special treatment)

Thanks. I attach the .feb file (had to rename it to txt for GitHub) here if you want to run it yourself.

tempModel.txt

Prescribed displacement with specific vectors

Hi,
I am looking to add a prescribed displacement on the edges of my cylindrical mesh. I would like to a specific displacement vector for each node at every time step and I am unsure how it should be done.

Any guidance would be greatly appreciated. Thanks,
Pete

Logfile output initial states are zero for stretches

@SteveMaas1978 The initial state for stretch type data should be 1. However the log files exported by FEBio currently export a 0.

For instance, using:

        <logfile file="tempModel.txt">          
            <element_data data="U1;U2;U3" delim="," file="tempModel_stretch_prin_out.txt"/>
        </logfile>

Leads to a log file containing:

*Step  = 0
*Time  = 0
*Data  = U1;U2;U3
1,0,0,0
2,0,0,0
3,0,0,0
...

I would check this for other stretch type data exports too if possible.

Add a roadmap

@SteveMaas1978

could you add a basic ROADMAP.md (example here: https://github.com/gibbonCode/GIBBON/blob/master/ROADMAP.md)

In it you could highlight some short and long term goals and milestones for FEBio. It would be nice to also include a view to adding the discussed topology optimization functionality to FEBio in the roadmap.

Using the roadmap users wanting to contribute gain an understanding in terms of what the grand plan is and where they might be able to help.

You can link to the roadmap in your readme and also the contributing guidelines.

Max traction parameter for tensional component of sliding elastic with tension.

Hi,

This suggestion is further to a discussion on the FEBio forums (https://forums.febio.org/forum/febio-studio-forum/users-forum-ad/18941-method-to-implement-a-sticky-sliding-contact).

Currently there is no easy way to model just one half of a fracture problem (with respect to a central single plane fracture line). A breakable tension option for the sliding elastic contact would allow one to model one half of a symmetrical deformable body up against a meshed rigid wall and use this proposed version of the contact to model the problem.

Kind Regards,

Matt

FEBio Studio 1.9 does not recognize .feb input files in the repository

I am trying to do some multiphasic benchmark test using .feb input files from Repository/Test Suite. However, it tells me "Invalid version for febio_spec" when I open every .feb file in Repository/Test Suite/Multiphasic. Could you advise on how to run the benchmark files in the repository?

Fiber Generator Tool Crash

In the latest release of Studio (1.7.1), the fiber generator tool causes the program to crash when applying a value to a node.

Node-to-node discrete dampers

As mentioned in a couple of past threads in the Users Forum, it would be convenient to have node-to-node discrete dampers, like the node-to-node discrete springs. This would avoid the complications involved in having to use rigid bodies to define dampers.

Sudden crash when modeling in FEBio Studio 2.1.1 (with FEBio 4.1)

FEBio Studio 2.1.1 (with FEBio 4.1) suddenly crashed when I am trying to model multi-phasic contact, as guided by the FEBio Studio Webinar Biphasic Materials Part 2. The following steps are my operations:

Step 1: start a new multiphasic analysis model;
Step 2: create a slice at position (0,0,0) with parameters Radius=1.5, Height=1, Angle=180;
Step 3: in the mesh option, set the Mesh Parameters as Slices=16, Segments=8, Stacks=8, Z-bias=1, R-bias=1, then click "Apply";
Step 4: Click "Convert" and then change the mesh to "Editable mesh";
Step 5: Click "Boundary Layer" and set Bias=2, Segments=5, select the outer surface and click "Apply" - then the following dialog box appears and then FEBio Studio automatically closed.
未命名1681218728

All the operations are the same as guided in Webinar, except I use the Multiphasic Analysis. The same operations in Biphasic Analysis are fine, but it failed in Multiphasic Analysis.

Moreover, the same operations work well in FEBio Studio 1.9 (with FEBio 3.8).

Could you help to solve this issue?

Inconsistent use of loadcurve for dtmax parameter

Summary: Usually for time varying parameters controlled by a loadcurve, the value used for a particular time is the result of multiplying the value set by the current loadcurve amplitude. It seems that for the dtmax parameter the value set is ingnored and the value is instead always solely based on the loadcurve amplitude.

When so-called "must-points" are needed the dtmax parameter can be specified with a load_controller / loadcurve. Below I assign the value 0.01 i.e. a constant dtmax, but by using the loadcurve I enforce must-points:

Time stepper parts of the control section:

        <time_stepper>
            <dtmin>1.0000000e-04</dtmin>
            <max_retries>5</max_retries>
            <opt_iter>12</opt_iter>
            <dtmax lc="1">1</dtmax>
        </time_stepper>

The load curve specification:

        <load_controller id="1" type="loadcurve">
            <interpolate>STEP</interpolate>
            <points>
                    <point>0.0000000e+00, 1.0000000e-02</point>
                    <point>2.5000000e-01, 1.0000000e-02</point>
                    <point>5.0000000e-01, 1.0000000e-02</point>
                    <point>7.5000000e-01, 1.0000000e-02</point>
                    <point>1.0000000e+00, 1.0000000e-02</point>
            </points>
        </load_controller>

The above works fine. However if I switch to the below the dtmax parameter appears to be 1 (the loadcurve amplitude), rather than 0.01 * the loadcurve amplitude.

Time stepper parts of the control section:

        <time_stepper>
            <dtmin>1.0000000e-04</dtmin>
            <max_retries>5</max_retries>
            <opt_iter>12</opt_iter>
            <dtmax lc="1">1.0000000e-02</dtmax>
        </time_stepper>

The load curve specification:

        <load_controller id="1" type="loadcurve">
            <interpolate>STEP</interpolate>
            <points>
                    <point>0.0000000e+00, 1.0000000e+00</point>
                    <point>2.5000000e-01, 1.0000000e+00</point>
                    <point>5.0000000e-01, 1.0000000e+00</point>
                    <point>7.5000000e-01, 1.0000000e+00</point>
                    <point>1.0000000e+00, 1.0000000e+00</point>
            </points>
        </load_controller>

Save Contact Surfaces

When adding or deleting parts to a model (or any mechanism that adds or deletes elements), contact surfaces are lost as the mesh gets renumbered.

It would be a great feature to have the ability to retain contact surfaces, as long as the contact surfaces themselves aren't changing.

This could take the form of having the ability to "disable" parts during export, so the parts don't actually have to be deleted.

Mapping parameters not working for Ogden materials

@SteveMaas1978 I have a model where this runs fine:

        <material id="1" name="Material1" type="neo-Hookean">
            <E type="map">MaterialParameterMap1</E>
            <v>4.0000000e-01</v>
        </material>

But the following fails with an FEBio error saying tag "c1" (line 46) : invalid attribute "type" :

        <material id="1" name="Material1" type="Ogden unconstrained">
            <c1 type="map">MaterialParameterMap1</c1>
            <m1>2</m1>
            <cp>5.0050000e+01</cp>
        </material>

Is the material parameter mapping not implemented for all materials? I also tried the Ogden form but got the same issue.

type=”math” attribute to the parameter’s definition

Hello,

The type=”math” attribute works for E but it makes an error for phi0 (in biphasic). I am wondering to know what's the reason for that since they are both model parameter.

Please see the attached zip file.

Case_A.feb which is type=”math” for E. It works properly.
Case_B.feb which is type=”math” for phi0. I had an error.

tag "phi0" (line 35) : invalid attribute "type"

Thanks!

files.zip

Output face quantities to logfile

It would be convenient if there was an option in febio3 to output face quantities such as contact pressure/traction to a logfile (like you can for nodal and element quantities).

I am aware that it may be done using Postview e.g. as mentioned in the thread https://forums.febio.org/showthread....ntact+pressure, but I would like to automate this as I use my model with Monte Carlo sampling and run it many times.

Compression FEBio Binary Database Specification

I am working on a python parser for the plot file (.xplt) and it is working correctly for non-compressed files. I have a large dataset that contains compressed plot files and I need to be able to read them and extract all state data. Where can I find the documentation for compressed plot formats?

Thanks.

Incompatibility between FEBio2 and FEBio3: Elements in an ElementSet must belong to the same part.

The attached file runs fine in FEBio2 but produces the following error in FEBio3:


  •                            ERROR                                  *
    
  •                                                                   *
    
  • Elements in an ElementSet must belong to the same part. *
  •                                                                   *
    

The issue arises because an object consists of two parts with hex8 and penta6 elements, and boundary conditions are being applied on a face that includes quad4 and tri3 elements. Backward compatibility needs to be enforced for this very basic type of situation.

temp.feb.zip

Beam elements in FEBio?

It would be very beneficial for some applications to have an option to use beam elements. The beam profile could just be circular, as that would probably account for most applications (surfaces can already be used for rectangular profiles). Is this somewhere on the roadmap by any chance?

Assigning element data to prestrain gradient doesn't work

Users cannot map element data to the F0 parameter of the prestrain gradient.

This is due to the changes in FEBio3 related to defining heterogenous parameters. The prestrain material has not been updated to make use of this new framework.

Compilation error

I'm trying to install FEBio 3.8 from source and get:

[ 54%] Building CXX object CMakeFiles/febiomix.dir/FEBioMix/FESBMPointSource.cpp.o
/home/thor/software/FEBio-3.8/FEBioMix/FESBMPointSource.cpp: In member function ‘void FESBMPointSource::FindNodesInRadius(std::vector<FEMaterialPoint*>&, double&)’:
/home/thor/software/FEBio-3.8/FEBioMix/FESBMPointSource.cpp:360:53: error: ‘numeric_limits’ is not a member of ‘std’
  360 |                                 double min_d = std::numeric_limits<double>::max();
      |                                                     ^~~~~~~~~~~~~~
/home/thor/software/FEBio-3.8/FEBioMix/FESBMPointSource.cpp:360:68: error: expected primary-expression before ‘double’
  360 |                                 double min_d = std::numeric_limits<double>::max();
      |                                                                    ^~~~~~
make[2]: *** [CMakeFiles/febiomix.dir/build.make:972: CMakeFiles/febiomix.dir/FEBioMix/FESBMPointSource.cpp.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:185: CMakeFiles/febiomix.dir/all] Error 2
make: *** [Makefile:91: all] Error 2

System is Pop-OS (Ubuntu 22.04 LTS based), gcc 11.3.

I have installed LEVMAR, MKL, and MMG.

Define motion in both global and local coordinates

I would like to know if FEBio can define the femur as the movement in global coordinates and the tibia as the movement in the coordinate system (local coordinate system) with reference to the femur? If so, how should I set it?

FEBio 3 does not recognize FEBio input spec 2.5 node-varying boundary conditions

FEBio 3.1.0 (the Nov 23 release from https://febio.org/downloads/) does not recognize prescribed node-varying boundary conditions in an XML file that conforms to FEBio input specification 2.5. According to the FEBio 3.0 manual, FEBio 3.0 is still supposed to support FEBio input specification 2.5 ("This format is still supported but considered obsolete.").

For example, a file with an <febio_spec version="2.5"> declaration that contains

<Boundary>
      <prescribe bc="z" node_set="node_set_bc_x3">
        <scale lc="2">1.0</scale>
        <value node_data="node_data_bc_x3"/>  <!-- this is the line 703 referred to in the subsequent error -->
        <relative>0</relative>
      </prescribe>
    </Boundary>

when run in FEBio 3.1.0 produces the error tag "value" (line 703) : unrecognized tag.

Based on Issue #18, I gather that lack of support for input specification 2.5 might be considered normal for FEBio 3. If so, please consider this issue as a request to revise the manual to reflect that FEBio 3 only runs input specification 3.0, or otherwise clarify what the limits of backwards compatibility are for FEBio 3.

I have no objection to a clean break in compatibility if that makes development easier. Mostly I just need to know whether I can drop support for input specification 2.5 in my own work. If FEBio 3 can't read it, it's functionally dead, as FEBio 3 has critical bug fixes vs. FEBio 2.

FEBio prints when -silent option is used

When run FEBio 3.1.0 with the -silent flag in Mac it prints:

Default linear solver: pardiso

and in Windows it prints

Default linear solver: pardiso

Success loading plugin FEBioChem.dll (version 0.0.0)

Is there another way to suppress them?

Add 13-node pyramid elements

13-node pyramid elements would be extremely useful, especially for individual-specific modeling. The ability to transition between 10-node tetrahedral elements and 20-node brick elements without using tied constraints would be great.

With prescribed node displacement, (non-rigid) node reaction forces are zero

Given a prescribed displacement boundary condition applied to nodes and "reaction forces" specified as a plotfile variable, FEBio ≥ 3.4 output zero for all 3 reaction force components for all nodes, whereas FEBio ≤ 3.3 output nonzero nodal reaction forces. The FEBio 3.4 release was also when rigid body reaction forces were moved from node state data to object state data, but this issue is not about rigid body forces, just regular node reaction forces. No rigid bodies are involved.

To reproduce, run the attached .feb file (which has been given the .txt extension so Github accepts it as an attachment) with various FEBio versions and check the reaction force output in FEBio Studio, or your tool of choice. The file is a toy example of confined compression.

Expected: All boundary nodes subject to confinement (prescribed displacement = 0) should have nonzero reaction force associated with this constraint.

Actual: All nodes have zero reaction force.

FEBio Non-rigid node reaction forces
3.2.0 Nonzero
3.3.3 Nonzero
3.4.0 Zero
3.5.1 Zero
3.6.0 Zero

The practical impact of this is that it is difficult to measure the confinement force in a confined compression simulation. It is often worthwhile to check these reaction forces to see if the simulated confinement switches from compression to tension.

node_reaction_force_check.feb.txt

add Functionality for plugins to define parameters in input file

I think it would be useful to define parameters for a callbackplugin in an inputfile like:

'
BEGIN_FECORE_CLASS(MyCallback, FECallBack);
ADD_PARAMETER(m_test, FE_RANGE_GREATER(0.0), "test");
END_FECORE_CLASS();
'
One way could be to add the virtual functions

'
void theClass::BuildParamList()
'
to the FECallBack class but i am not really sure about this.
If there is already way to use this functionality in FEBio, please let me know.

best regards

Steffen

Segmentation fault when using more than 2 rigid connectors

Using more than 2 rigid connectors in a structural analysis gives a segmentation fault at the beginning of 2nd time step (I have tried both "rigid spring" and "rigid damper").
The error may be reproduced by running the small input file oscillator.feb.txt , which solves in febio2.9 but in febio3 it fails unless I remove 1 or 2 springs (~line 82).

VTK output option

Is it possible to create an option to create output files in vtk format?

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.