1

(2 replies, posted in Developers Discussion)

nitramkaroh wrote:

coordinate system

Thanks.

2

(2 replies, posted in Developers Discussion)

Dear all,

I have a very simple question, in the following phase, what dose c.s. mean?

     * Computes transformation matrix from global c.s. to DOF-manager specific c.s; @f$ u_g = Q\cdot u_l @f$.

Thanks.

Thank for the answers of both of you. To check the result directly, I have export the data and do some post processes using matlab directly.

Thank you.

Dear all,

I think the LSPrimaryVariableMapper :: mapPrimaryVariables function calculate the displacement field for crack problems using XFEM module .

But I can NOT understand the logic for the function.

Is any body can give me some help?

Thanks very much.
Zhang Ji
2016-05-28

Hi all,

I'm interested in problems include cracks using XFEM module. I have implied high-order terms of crack tip enrichment into the OOFEM code. The code is been tested and give correct solutions for different orders of XFEM. Now I want to calculate the crack open displacement, but face problem when I use high order formulation.

The additional terms for crack tip are:
first order:      { r^0.5*sin(θ/2), r^0.5*cos(θ/2), r^0.5*sin(θ/2)*sin(θ), r^0.5*cos(θ/2)*sin(θ) }
second order:  { r^1*sin(θ),       r^1*cos(θ) }
third order:     { r^1.5*sin(θ/2), r^1.5*cos(θ/2), r^1.5*sin(θ/2)*sin(θ), r^1.5*cos(θ/2)*sin(θ) }
forth order:     { r^2,                 r^2*cos(2θ),     r^2*sin(2θ) }

After the deformation for the body, the crack might open. Assuming the displacement is u1(r, +π) above the crack, which is u2(r, +π) below the crack. And then I want to know the open displacement of the crack Δu = u1 - u2.

Since the crack tip enrichments of first order XFEM are continuities except the r^0.5*sin(θ/2) item, the crack open displacement (assuming very close to the crack tip and have no heaviside enrichment) is:
    Δu = sum( N_i(r)*r^0.5*(sin(θ/2)-sin(θ/2))*c_i ) = 2*sum( N_i(r)*r^0.5*c_i ).
Here N_i(r) is the shape function, and c_i is the associated degree of freedom. This part of code I have tested and work well.

The formulation of crack open displacement for second order XFEM is the same as what for the first order XFEM because the second order enrichments have no significant. Similarly, formulations of crack open displacement for third and forth order XFEM are same because significant terms are  r^0.5*sin(θ/2) and r^1.5*sin(θ/2). They are:
    Δu = sum( N_i(r)*r^0.5*(sin(θ/2)-sin(θ/2))*c_i ) + sum( N_i(r)*r^1.5*(sin(θ/2)-sin(θ/2))*d_i ).
         = 2*sum( N_i(r)*r^0.5*c_i ) + 2*sum( N_i(r)*r^1.5*d_i ).
Here c_i and d_i are associated degrees of freedom. But the answer is wrong, even through the hole displacement field in the VTK file is correct.

Could any one give me some suggestion?

Thanks
Zhang Ji
20160-05-28

Mikael Öhman wrote:

The crack needs 5 additional XFEM dofs. I don't recall what they represent.

Thank you very much for your reply.

Hi all,

I have a question. In the function:

int Crack :: giveDofPoolSize() const
{
    return this->giveEnrichesDofsWithIdArray()->giveSize() * this->giveNumberOfEnrDofs() + 5;
}

what is the meaning of 5, why add 5 here?

Thanks.

Mikael Öhman wrote:

Well, the Y-problem is to compute the stress intensity factor.

So I need to know crack open displacement.

But this leaves me confused. Why would you need to know the displacements? Wouldn't you need to only know the crack geometry, and the stresses?

It seems to me, that one would access the
EnrichmentItem :: giveEnrichmentFrontStart()
and
EnrichmentItem :: giveEnrichmentFrontEnd()
and from the EnrichmentFront's use
EnrichmentFront :: giveTipInfo()
The TipInfo contains the tangent line.
So, as far as I can see, you already have access to the tips without changing the code.

Then, the next step would be to obtain the stresses at the crack tip by some means (not sure what the best option is here, but it is solveable).

Hello Mikael,

As far as I know, the methods for calculation stress intensity factors including several formulations: nodal force, J-integral and its derived M-integral, Griffith energy, the stiffness derivative technique, crack closure integral, and stress method. In addition, a range of methods based on the interpretation of the displacement fields close to the crack tip is available, called displacement method. One of the most important advantages of displacement method is the briefness of its formulation compared with other methods, especially those who need integration.

So I select the displacement correlation method to solve the SIFs. Thus, I need to know crack open displacement. The numerical experiment indicates this method gives a stable result of SIFs when higher-order items of Williams solution are considered.

More, I also added higher-order items in the shape functions of XFEM. I will submit these codes after a careful check.

Zhang Ji.

Hello all,

I have some questions about the input and output streams:

  1. how to save a floatmatrix in the hard disk?

  2. how to add an optional parameter? For example, EnrFrontLinearBranchFuncRadius radius 2 order 4, where order is a optional parameter implied the order considered in the shape function.

  3. how to use "gnuplot" to export results?

Thanks.

Zhang Ji

Mikael Öhman wrote:

Well, the Y-problem is to compute the stress intensity factor.

So I need to know crack open displacement.

But this leaves me confused. Why would you need to know the displacements? Wouldn't you need to only know the crack geometry, and the stresses?

It seems to me, that one would access the
EnrichmentItem :: giveEnrichmentFrontStart()
and
EnrichmentItem :: giveEnrichmentFrontEnd()
and from the EnrichmentFront's use
EnrichmentFront :: giveTipInfo()
The TipInfo contains the tangent line.
So, as far as I can see, you already have access to the tips without changing the code.

Then, the next step would be to obtain the stresses at the crack tip by some means (not sure what the best option is here, but it is solveable).

Hello Mikael,

As far as I know, the methods for calculation stress intensity factors including several formulation: nodal force, J-integral and its derived M-integral, Griffith energy, the stiffness derivative technique, crack clo

Mikael Öhman wrote:

Dear Zhang Ji,

As Erik is on parental leave, I will try my best to help

The XFEM enrichments start with what we call an "enrichmentitem", which is the key components describing the enrichments.
For cracks, the enrichment is called "Crack" and is located in crack.C

The geometry associated with an XFEM enrichment is described by a "BasicGeometry" ( obtained through GeometryBasedEI::giveGeometry() ).
In case of cracks, most likely one wants to use the polygon line.
There are several input files in the test suite that uses the polygon line, just have a look at those (documentation is still sparse, sorry)


As for the second question:
What are you trying to achieve here? Are you making some crack propagation condition? Where do you want to obtain and use this internal crack direction, and for what do you want to use it?

I've said so earlier to another user today, but it might be a case of a XY-problem http://www.perlmonks.org/?node=XY+Problem .'
"You want to do X, and you think Y is the best way of doing so. Instead of asking about X, you ask about Y. "

Dear Mikael,

I deeply thought about your question (and also suggestion) about XY-problem. I think your are right. To accomplish the aim I have changed many codes:
I add a public int named number in the class TipeInfo, and give it value in:

void GrometryBasedEI :: updateNodeEnrMarker(XfemManager &ixFemMan)
.....
tipInfoStart.number = number;
tipInfoEnd.number  = number;
.....

here number is the index of the additional component (e.g. a crack line). Thus, once I get this number, I can get the geometry and then know the internal lines.

The above description is my basic idea. I think it might exist that a more simple way to realize this function.

Zhang Ji

Mikael Öhman wrote:

Dear Zhang Ji,

As Erik is on parental leave, I will try my best to help

The XFEM enrichments start with what we call an "enrichmentitem", which is the key components describing the enrichments.
For cracks, the enrichment is called "Crack" and is located in crack.C

The geometry associated with an XFEM enrichment is described by a "BasicGeometry" ( obtained through GeometryBasedEI::giveGeometry() ).
In case of cracks, most likely one wants to use the polygon line.
There are several input files in the test suite that uses the polygon line, just have a look at those (documentation is still sparse, sorry)


As for the second question:
What are you trying to achieve here? Are you making some crack propagation condition? Where do you want to obtain and use this internal crack direction, and for what do you want to use it?

I've said so earlier to another user today, but it might be a case of a XY-problem http://www.perlmonks.org/?node=XY+Problem .'
"You want to do X, and you think Y is the best way of doing so. Instead of asking about X, you ask about Y. "

Hello,

First, congratulate Erik on becoming father! And thanks very much for your answer.

My aim is to calculate the SIF (stress intensity factor). So I need to know crack open displacement.

Now I finished this job by reading the codes carefully, and add a new property into the class TipInfo that is int type and correspond to the relevant component number.

Thank you very much.

Zhang Ji

Hi all,

Does any one know how to get specific element type form abstract class element. For example,

Element *el = localizer->giveElementContainingPoint(mTipInfo.mGlobalCoord);

how can I know the element type, PlaneStress2dXfem, Qtrplanestress2dxfem, or else.

Thanks!

Hello all,

I would like to know how to discribe cracks in OOFEM. Which class holds the infomation about crack geomatry?

Moreover, how to get the internal line object that close to the crack tip.

Thanks!

15

(5 replies, posted in General Help)

Mikael Öhman wrote:

I fixed the error on my github account, but trying out one of Eriks examples, the cracks never propagate. I'm not sure why, and it could be so simple that Erik hasn't merged in the relevant changes to my github account yet. I don't have time to investigate right now.

Eriks version should work, and the bug with the areas you can fix easily by adding fabs() in the this function

double
Domain :: giveArea()
{
    double area = 0.0;
    for ( auto &element: this->elementList ) {
        area += fabs(element->computeArea());
    }

    return area;
}

for now

Hello,

Thanks for your answer.
Now I wrote a new pre-script using matlab, to prevent the unfit.

Thanks!

16

(5 replies, posted in General Help)

Mikael Öhman wrote:

Hi.

The problem here is that you ahven't added "nxfemman 1" in the domain record.
Currently, the file stops reading efter your functions are defined, so anything you write after that is just ignored.
This is also why it doesn't complain about "XfemStructureManager", since it's actaully called just "XfemManager"

I do consider the fact that the user is not warned about this as a bug, and I will be adding a warning for these cases in the future.

Hello Mikael,

Thanks for your answer. However, I still could not create a input file.

Based on your suggestion, I tried to write input files. But I still face some troubles. I can not visulize the crack in paraview. The test example is in the attachment. The genetated output files include ccomponents such as 'CrackLengthGnuplotEI1Time1.dat', so I assume the Xfemmanager works during the simulation. But the simulated result is wrong. I don't know how to fix it. Can you help me?

The input file is very similar to which you given as an example in github, 'crackPropHoopStress'. The only change is the geometry and corresponding nodes and elements.

17

(5 replies, posted in General Help)

Hello,

I try to write a .in file to test the XFEM, but it dose not work. I add a XfemStructureManager in the .in file, but acquire a same result with the case without crack. The crack declaration do not work in the case.

I do not know what is wrong. Can any one help me?

Thanks.

erik.svenning wrote:

I have added two examples that can be downloaded from https://github.com/erisve/OOFEM_Cases.git

The folder crackPropHoopStress contains an example of crack propagation based on the maximum hoop stress criterion.
The folder crackPropMaterialForce contains the same example, but with crack propagation based on the concept of material forces.

The case setup is adopted from:  Khoei, Azadi and Moslemi:  "Modeling of crack propagation via an automatic adaptive mesh refinement based on modified superconvergent patch recovery technique", Engineering Fracture Mechanics, pp. 2921--2945, vol 75, (2008).

Hi erik,

I will read them first.

Thanks.

Hello all,

I found two models in OOFEM which are relate to the crack propagation, these are: 'propagationlawhoopstresscirc' and 'propagationlawmaterialforce'. But I cannot find any thing (e.g., examples, manual, topic on the forum) to teach me how to use them.

Can any one give me some examples or tell me how to use them?

Wish the reply.

Mikael Öhman wrote:

That's most certainly just because there is a missing
#include "dof.h"
somewhere in the code (for example, the IML solver), which I haven't discovered in the builds I typically do.
It should be a trivial fix.

Hi,

Thank you very much for your reply. Moreover, I think, instead of use too much time to build OOFEM, I should do some thing useful.

Now I begin to read the codes. But I found that one latest feature of OOFEM for crack propagation has no example or any manual to illustrate how to employ it. I have post a new topic in the forum. If it is pleasure, could you check it?

Thank you very much, again. I can do noting using OOFEM without your help.

erik.svenning wrote:

Hi,
when running the XFEM module, it is possible to get a visualization of the crack path (i.e. a polygon line in the undeformed configuration) by adding  "debugvtk 1"  to the XFEMManager input record. You will then get files called "crack*Step*.vtk" showing different cracks at different time steps. (You will also get some other debug vtk files that are perhaps not so interesting, e.g. locations of Gauss points in cut elements.)
It is also possible to visualize the level set field associated with the crack and the set of enriched nodes by enabling the vtk export in the XFEMManager input.

Example:
XfemManager 1 numberofenrichmentitems 1 numberofgppertri 3 debugvtk 1 vtkexport 1 exportfields 1 4

I have implemented crack propagation based on the maximum hoop stress criterion, but I have not prepared a test case for it yet. However, I can send you an example input file if you are interested.

I updated the (debug) crack visualization recently, so download the latest version from Micke's repo ( https://github.com/micket/oofem )

Regards,
Erik

Hi Erik,

Could you give me a cope of imput file which implemented the crack progration low?
I'm interesting in it.

Thanks.

Mikael Öhman wrote:

That should be enough to find the headers.

All my advice is alwayds for the latest version from git. I cant keep track of what has changed (OOFEM is quite actively developed). I don't ever run the stable releases unless there are some user who submits a bug report.

In git, the CMakelist.txt contains this section on SLEPC

if (USE_SLEPC)
    if (SLEPC_DIR)
        find_library (SLEPC_LIBS slepc PATH "${SLEPC_DIR}/lib")
        include_directories ("${SLEPC_DIR}/include")
    else ()
        find_library (SLEPC_LIBS slepc)
    endif ()
    if (${SLEPC_LIBS} STREQUAL "SLEPC_LIBS-NOTFOUND")
        message (FATAL_ERROR "SLEPc library not found")
    endif ()
    list (APPEND EXT_LIBS ${SLEPC_LIBS})
    list (APPEND MODULE_LIST "slepc")
    set (USE_PETSC ON)
    add_definitions (-D__SLEPC_MODULE)
endif ()

where, if a directory is specified, the path to "${SLEPC_DIR}/include" is used.


Hello,

Previously, I was forked erisve in the github. Now I change into Micket version (is it your version?). But I still cannot build it with slepc.

Further more, after I tried these days, I found oofem do not work with VTK-6.2.0 currently. I also tried VTK5.10.1 but did not work.

Now I configure OOFEM with following options:
USE_DSS USE_FM USE_IML USE_LAPACK USE_PETSC USE_OPENMP USE_SHARED_LIB USE_SM USE_TM

So can you tell me which version do you select. And could you tell me how to build with slepc?

Thank you.

Mikael Öhman wrote:

SLEPC_LIBS is the generated value. SLEPC_DIR is the one you should enter if you have a local installation. It should be the folder that contains the "lib" and "include" subfolders of your SLEPC installation.

SLEPC depends on PETSc, so you probably need to specify the paths to that installation as well. I know most system installations of PETSc skips out on including the PKGCONFIG-file, which we use to find the dependencies when compiling OOFEM.

* CKIT, X11, are for OOFEG
* LAPACK is for lapack/blas support in FloatMatrix/FLoatArray (i.e. OOFEM becomes slightly faster).
* VTK is for *binary* VTU files (saves space for large outputs.
* METIS & PARMETIS is for the load balancing (distributed memory parallelism).

Hello Mikael,

Thank you very much for your reply.

Could I understand it as there is no need to install the METIS and PSRMETIS in a single machine?

When I was configured the OOFEM under cmake,  with:
SLEPC_DIR=/home/mrcandle/OOFEM/relatedcode/slepc-3.5.1/arch-linux2-c-debug.
And, automatically, it generates:
SLEPC_LIB=/home/mrcandle/OOFEM/relatedcode/slepc-3.5.1/arch-linux2-c-debug/lib/libslepc.so.
However, when I build it, it failure with the message:
/home/mrcandle/OOFEM/oofem/src/oofemlib/slepcsolver.h|42|fatal error: slepceps.h: No such file or directory.
The file named slepceps.h can be find from the path:
/home/mrcandle/OOFEM/relatedcode/slepc-3.5.1/include.

A list of slepc folder in a tree-like format can be find in the attachment.

I also googled information about PKGCONFIG-file, but I still donnot know how to build OOFEM with slepc.

Can you give me more help?
Thanks very much.

Hello all,

I'm try to install OOFEM in ubuntu 14.04. I can successfully build it with petsc. But I don't know how to build it with slepc. slepc is succefully build in my desktop now, and pass the default test. I DONOT know what should write after SLEPC_DIR and SLEPC_LIBS. Can any one help me?

I have one more question. I found other libraries might be used in oofem (i.e. ckit (CKIT_DIR), dl (DL_DIR), lapack (LAPACK_DIR), metis (METIS_DIR), parmetis (PARMETIS_DIR), x11 (X11_DIR), and vtk (VTK_DIR)). What are they? Do they necessary? When should I use them? Can any one give me a suggestion which of them I'd better install?

Thanks!

25

(16 replies, posted in General Help)

erik.svenning wrote:
Mikael Öhman wrote:

Erik, I believe Zhang is asking about the crack tip enrichments not showing

Zhang:
Due to limitations of VTU-files, the only option is to export a local triangulation of the elements. Currently we use the same triangulation that is used to set up the integration points in the XFEM elements.
This will guarantee that the we properly show the outline of the crack, but isn't perfect if you really want to visualize the stress field near the crack tip, as this is almost the coarsest triangulation possible.

I think we should consider refining the triangulation used for exporting the elements when crack tip enrichments are present. Just one level of refinement should give nice results.

Hi!

I have now improved the stress visualization close to crack tips by refining the triangulation. Have a look at the example "stressInTipEl" available here: https://github.com/erisve/OOFEM_Cases.git

The number of refinements is controlled by the option "numberoftrirefs" for the XfemManager.

/Erik


Hi Erik,

I will download it tomorrow, Thank you very much. If there is any question, I will need your help.

Thank you!

Zhang Ji