Thanks for the info. I was a little confused about the designation. In the Material Library Manual, the syntax for the input record is shown to use the "OrthoLE" designation.

I need to use an OrthoLE material in the general anisotropic form where the 21 entries of the stiffness matrix are specified directly with a "stiff" entry. Does this material model expect values for for the strain components 4-6 (shear) as engineering strain (tau)? In other words, whould D66 for an isotropic material be E/2/(1+v) or E/(1+v)?

Bailey

After building OOFEM properly on linux, I made the change as you described and the StaggeredProblem works as expected.

Bailey

So, I have managed to build OOFEM on Windows (MinGW) from the git repository, but I've run into an unusual issue. I can run the program directly by executing it from the command line, but it won't run when started as a subprocess from my python code, which is never a problem I have had with the binaries downloaded from the website. I use the python "call" function to run OOFEM. When I attempt to run the locally-compiled version, the exit value is -1073741515. I'm still looking for potential causes, but could this be a problem with how OOFEM was built?

Bailey

Thank you. I will setup a git clone and try it with this change.

Bailey

In the test files homog01.in, homog02.in, and homog03.in, the line for the homogenization module reads so:

hom tstep_all ists 2 4 1

What is the meaning of the "ists" entry? The section on "hom" in the documentation doesn't mention this.

The focus of many of my simulations is determining the thermal stress in parts exposed to high heat fluxes. I tried to build a simple StaggeredProblem to test using the temperature distribution from a StationaryProblem heat transfer simulation as an input to a LinearStatic structural simulation, but, everytime I try to run the staggered simulation, OOFEM freezes without an error message after the solver for the thermal problem converges. The individual TM and SM simulation files work as expected on their own, but do not work together for some reason. Any explanation of why this might not be working would be appreciated.

Input files:

thermal_test1_tmsm_0.oofem

thermal_test1_tmsm_0.out
A simple test of 2D heat transfer and thermal expansion
StaggeredProblem nsteps 1 timedefinedbyprob 1 prob1 "thermal_test1_ht_0.oofem" prob2 "thermal_test1_sta_0.oofem"

thermal_test1_ht_0.oofem

thermal_test1_ht_0.out
A simple test of 2D heat transfer and thermal expansion
StationaryProblem nsteps 1 exportfields 1 5
domain HeatTransfer
OutputManager tstep_all dofman_all element_all
ndofman 6 nelem 2 ncrosssect 1 nmat 1 nbc 2 nic 1 nltf 1 nset 3
node 1 coords 2 0.0 0.0
node 2 coords 2 2.0 0.0
node 3 coords 2 4.0 0.0
node 4 coords 2 0.0 4.0
node 5 coords 2 2.0 4.0
node 6 coords 2 4.0 4.0
Quad1ht 1 nodes 4 1 2 5 4 NIP 4
Quad1ht 2 nodes 4 2 3 6 5 NIP 4
SimpleTransportCS 1 thickness 2.000 mat 1 set 3
IsoHeat 1 d 1.000e+00 k 1.000e+00 c 1.000e+00
BoundaryCondition 1 loadTimeFunction 1 dofs 1 10 values 1 20.0 set 1
BoundaryCondition 2 loadTimeFunction 1 dofs 1 10 values 1 50.0 set 2
InitialCondition 1 Conditions 1 u 20 dofs 1 10 set 3
ConstantFunction 1 f(t) 1.0
Set 1 nodes 2 1 4
Set 2 nodes 2 3 6
Set 3 elementranges {(1 2)}

thermal_test1_sta_0.oofem

thermal_test1_sta_0.out
A simple test of 2D heat transfer and thermal expansion
LinearStatic nsteps 1
domain 2dPlaneStress
OutputManager tstep_all dofman_all element_all
ndofman 6 nelem 2 ncrosssect 1 nmat 1 nbc 2 nic 0 nltf 1 nset 3
node 1 coords 2 0.0 0.0
node 2 coords 2 2.0 0.0
node 3 coords 2 4.0 0.0
node 4 coords 2 0.0 4.0
node 5 coords 2 2.0 4.0
node 6 coords 2 4.0 4.0
PlaneStress2d 1 nodes 4 1 2 5 4 NIP 4
PlaneStress2d 2 nodes 4 2 3 6 5 NIP 4
SimpleCS 1 thick 2.000 material 1 set 3
IsoLE 1 d 1.000e-09 E 1.0000e+05 n 0.300 talpha 1.0000e-05
BoundaryCondition 1 loadTimeFunction 1 dofs 1 1 values 1 0.0000e+00 set 1
BoundaryCondition 2 loadTimeFunction 1 dofs 1 2 values 1 0.0000e+00 set 2
ConstantFunction 1 f(t) 1.0
Set 1 nodes 2 1 4
Set 2 nodes 1 1
Set 3 elementranges {(1 2)}

This is being run on Windows. This is the only output that is printed before OOFEM stops responding:

____________________________________________________
           OOFEM - Finite Element Solver
        Copyright (C) 1994-2014 Borek Patzak
____________________________________________________
Total number of solution steps     1
Total number of solution steps     1
Total number of solution steps     1
Solving [step number     1, time 1.000000e+00]
Assembling external forces
Solving ...
NRSolver: Iteration ForceError
----------------------------------------------------------------------------
NRSolver: 0      T_f:  9.191e-01
NRSolver: 1      T_f:  1.675e-16

At the moment, I have a solution where I simply solve another system where each load case prescribes fixed displacements to all of the nodes corresponding to an eigenmode. It obviously takes more computational time, but the development was a lot quicker for me than spending the time to understand the structure of the OOFEM source. I may look into making changes to EigenValueDynamic in order to speed things up when I start doing 3D optimizations with denser meshes.

Edge loads are specified with units of force/length. If you want a force of 100N, and the contact length on the top edge is 25mm for example, you would specify 4 (N/mm) or 4000 (N/m) depending on your unit system.

Thanks, I'd appreciate it.

- Bailey C

So, I didn't find any indication in the documentation or code that exporting additional information from EigenValueDynamic simulations would be possible. I wrote a routine in my own code to run another simulation to get the information I need, but if anyone has ideas for how it might be possible to get elastic energy for an eigenmode without running an additional simulation, I'd appreciate it.

With the elastic energy and eigenfrequencies as well as some searching through the code, I was able to figure out that 1) eigenvectors are not normalized individually after solution with subspace iteration, and 2) they are normalized with the mass matrix for inverse iteration. In the end, I figured things out, but that would be valuable information to include in the documentation. Also, I think normalizing eigenvectors after subspace iteration to be consistent with the inverse iteration solver would be a helpful improvement. I'm only really concerned with the first eigenmode for my application, but others might want consistently normalized eigenvectors without sacrificing the better efficiency of the subspace algorithm.

As I mentioned in my previous post, I am building topology optimization simulations with PlaneStress2d and LSpace. One of the optimization criteria is maximizing the first eigenfrequency, so I have some questions specific to EigenValueDynamic.

1) What scaling factor is used to normalize the eigenvectors (ex. L2 norm, mass norm)?

2) What information, if any, besides the eigenfrequency and corresponding eigenvector does the analysis produce? The optimization sensitivities require calculating relative elastic and inertial energy, so ideally I would like to be able to calculate stress/strain with the eigenvector effectively acting as a static displacement without having to formulate the stiffness and mass matrices myself post-simulation.

- Bailey C

Hi there,

I started using OOFEM recently for my Master's thesis, and I have a few technical questions I haven't been able to resolve with the documentation. This is the first of a few questions I'll post.

I am performing topology optimization simulations using rectilinear meshes composed of PlaneStress2d and LSpace elements. I use a unique IsoLE material and cross-section for each density value, so the density and Young's modulus is in general different for each element. For 2D problems, I wrote a function in my own code to visualize the resulting density field, but I am using ParaView for 3D meshes. I haven't had any success exporting any material properties with the vtkxml module that I can use to directly visualize the resulting topology.

When using IST_Density, with either "vars" or "cellvars", the exported values are exactly 0 everywhere in the mesh. The only export values that include Young's modulus do not appear relevant for IsoLE materials and also produce 0 values everywhere. Other exported quantities like the displacement vector, stress, and strain work without problem.

An example "vtkxml" line from the input file:

vtkxml 1 tstep_all domain_all vars 2 1 4 primvars 1 1 cellvars 1 44

Has VTK export for IsoLE material properties been implemented?


- Bailey C