Hi again, everyone!
On another model, we have been facing difficulties getting a functional mesh: during meshing, some contacts “disappear”.
We had to do some trial-and-error to get a mesh with the full contact set and a small step aside brings those “lost” contacts after meshing.
The model is quite simple: 1 main contact and 2 contacts stopping on the first one.
Changing the mesh size or the tolerances (atol, btol, ctol…) did not affect this issue.
However, those aspects did:
- moving one of the secondary faults a bit (option
shift_fz3=truein script below) - making one or both of the secondary faults persistent (options
persistent_fz2=trueand/orpersistent_fz2=truein script below)
Would you have any advice to avoid this bias?
Thank you!
Cheers
Theophile
Test script
model new
def testing_options
; true -> meshing ok
global shift_fz3 = false
; true -> meshing ok
global persistent_fz2 = false
; true -> meshing ok
global persistent_fz3 = false
end
[testing_options]
block create prism &
face-1 &
(7069.758733347873, 9148.399873964489, -4000.0) &
(7069.758733347873, -6531.6001260355115, -4000.0) &
(-9300.241266652127, -6531.6001260355115, -4000.0) &
(-9300.241266652127, 9148.399873964489, -4000.0)) &
face-2 &
(7069.758733347873, 9148.399873964489, -150.0) &
(7069.758733347873, -6531.6001260355115, -150.0) &
(-9300.241266652127, -6531.6001260355115, -150.0) &
(-9300.241266652127, 9148.399873964489, -150.0)
def set_fz_params
local shift = vector(0,0,0)
if shift_fz3
shift = vector(1000,0,0)
end_if
global fz_params = map()
fz_params('fz1') = map('origin', vector(0.0, 0.0, -1581.554472958834), 'dip', 80., 'dip-direction', 200.)
fz_params('fz2') = map('origin', vector(1059.344431650592, 3186.130495247431, -2101.024712960352), 'dip', 31.242008374994324, 'dip-direction', 128.59707580316046)
fz_params('fz3') = map('origin', vector(-1471.5217985903146, -1418.440081932582, -1450.0)+shift, 'dip', 29.906306040857892, 'dip-direction', 117.13464181198472)
end
[set_fz_params]
; Main contact
block cut joint-set &
origin [fz_params('fz1')('origin')->x],[fz_params('fz1')('origin')->y],[fz_params('fz1')('origin')->z] &
dip [fz_params('fz1')('dip')] &
dip-direction [fz_params('fz1')('dip-direction')]
; Tag sides
block group "fz1=above" range plane &
origin [fz_params('fz1')('origin')->x],[fz_params('fz1')('origin')->y],[fz_params('fz1')('origin')->z] &
dip [fz_params('fz1')('dip')] &
dip-direction [fz_params('fz1')('dip-direction')] &
above
block group "fz1=below" range group "fz1=above" not
; Secondary contacts
def hide_fz1_above
if persistent_fz2==false
command
block hide range group "fz1=above"
end_command
end_if
end
[hide_fz1_above]
block cut joint-set &
origin [fz_params('fz2')('origin')->x],[fz_params('fz2')('origin')->y],[fz_params('fz2')('origin')->z] &
dip [fz_params('fz2')('dip')] &
dip-direction [fz_params('fz2')('dip-direction')]
block hide off
def hide_fz1_below
if persistent_fz3==false
command
block hide range group "fz1=below"
end_command
end_if
end
[hide_fz1_below]
block cut joint-set &
origin [fz_params('fz3')('origin')->x],[fz_params('fz3')('origin')->y],[fz_params('fz3')('origin')->z] &
dip [fz_params('fz3')('dip')] &
dip-direction [fz_params('fz3')('dip-direction')]
block hide off
block zone generate edge 1000

