What computer hardware works best with 3DEC?

3DEC is multi-threaded but the efficiency drops when you use more that about 8 processors. This is due to memory access and the processors having to wait for memory. For best results, choose faster processors over more processors.

What properties should I use for my joints?

This depends on what you are trying to model and what data you have.  Ideally you would like to have laboratory shear test data to give you the joint stiffness and strength.  This is rarely available, so stiffness and strength values must be estimated based on the condition of the joint.  Altered or clay-filled joints will likely be softer and weaker than tight, clean joints. Guidelines for choosing joint properties are provided in Section 3.8.2: Joint Properties in the 3DEC User's Guide.

When I plot Boundary Conditions I don’t see anything.

When you plot Boundary ConditionsSummary, you will see in the attributes that there is a drop-down menu for components (x, y or z).  Make sure that you have selected the correct component.

When I run my model I get an error that there is a zone with negative volume, and 3DEC stops running.

Very small or narrow zones can collapse during large-strain analyses. 3DEC can sometimes delete these zones automatically, but it is not always possible. We are working on procedures to fix this problem, but for now you must go back to the previous save state and either (a) delete the block, (b) make the zone very stiff, or (c) run the model in small strain (SET small on). Alternatively you can re-do your cutting and zoning to prevent the creation of small, narrow zones.

What is atol and what value should I use?

The atol parameter is a general tolerance for 3DEC. This determines the smallest possible distance between two nodes and is therefore used to determine if a cut is successful or not. It is also used in zoning. 3DEC calculates a default value of atol that is good in most cases, but sometimes the default value is too large, especially when importing blocks from Griddle, KUBRIX, or other external programs. Indications that atol is too large include:

  • Cuts are rejected
  • ‘Bad face normal’ errors occur (see next FAQ)
  • Holes appear in plots of joints (where the corners of blocks have not been cut)
  • There are a large number of null contacts

In general it is best to err on the side of a value for atol that is too small, rather than too large. The only downside to an atol that is too small is the possible creation of very small blocks or zones which may slow down your calculation.

What is the does the error ‘bad face normal’ mean and what can I do about it?

A ‘bad face normal’ error sometime occurs during cutting of complex geometries (e.g. Discrete Fracture Networks).  This is caused by 3 or more points on a face being almost collinear (the angle between the edges of the face is close to 180°).  This can usually be solved by setting a lower value for atol prior to cutting.

How can I plot the joints that are part of my Discrete Fracture Network?

Most of the ranges in 3DEC act on contacts, but with DFNs, it is possible that for a given contact, some of the subcontacts belong to the DFN and some do not. To plot only the subcontacts that are part of the DFN, view the Range elements and choose DFN Distance.  Enter a small distance (e.g. 0.01) and check the box for your fracture network.

What damping should I use?

The default damping scheme (auto damping) attempts to quickly bring the entire model to equilibrium. This is useful if you are trying to obtain initial conditions. However, this damping scheme is not accurate if you expect some movement in your model (e.g. sliding on a joint or slope failure). In this case, you should change the damping scheme to local damping (damp local).

Can I create Voronoi blocks in 3DEC like I do in UDEC?

At this time, it is not possible to directly create Voronoi blocks in 3DEC. However there are various open-source programs that will generate 3D Voronoi assemblies (e.g. Neper). You would then need to convert the output from these programs into a series of poly face commands for 3DEC

Sometimes when I join blocks, some of the contacts do not become joined. The location of the unjoined sections seems to be completely random.

The joining logic requires a closed loop of joined blocks. For complicated geometries, this closed loop cannot be created without leaving one or two contacts unjoined. In this case you should set these unjoined sections to be elastic (change jcons 7) and give them a fairly high stiffness so they have little effect on the stresses and displacements in your model. 

When I excavate material with the EXCAVATE command, I get an error “density, bulk and shear modulus must be defined for excavated blocks”.

In 3DEC, properties must be assigned to excavated material. By default, the excavated material uses the properties associated with block material 1. If you have not set any properties for material 1, you will get an error. This is easily fixed by adding a command ‘PROP mat 1 dens 2000 bulk 1e9 shear 0.6e9’ or similar. The actual property values are not really important – as long as they are the same order of magnitude as the surrounding material.

I'm getting an 'out of memory' error, but my computer has lots of memory

in 3DEC you must specify the amount of memory you intend to use in advance.  You can do in one of two ways:

  1. Go to Tools - Options - Configuration and set the Main Array Size in MB
  2. If you have a 3DEC shortcut, right click on the shortcut, select properties, and then in the Target field, add the command 'memory 8000' (without quotes) at the end.  This will start 3DEC with a memory of 8 GB

Please note that this is only the memory used by the engine.  The plotting logic uses extra memory on top of this, so do not set a value for memory that is close to the total memory in your computer.


Is the normal stress on the joint the total stress or effective stress?

The normal stress shown in plots and histories is the effective normal stress (total stress - pore pressure).  If you calculate the normal stress in FISH using cx_nforce(cx) / cx_area(cx), this will also give the effective stress.  This is true if 'config fluid' is on or off.