i.geom.penetrationDepth = nan value when saving ViscElCap interactions
Hello, I need to save then reload simulation with ViscElCap interaction inside but when I reload it the penetration Depth of ViscElCap interaction is equal to nan. This nan value contaminates position and velocity values making disappear particles.
I softly fix that by erasing and recreate each ViscElCap interaction, but obviously it didn't conserve friction history which is important to me.
Maybe someone know why and how to fix this ?
I'm using yade 2022.01a
You can test that with :
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
#++++++
# import
#++++++
import sys
import numpy as np
from yade import plot, qt
#++++++
#DEF
#++++++
s_name = sys.argv[0] [0:-3]
#sim param -------
p_speed = 0.01
tc_frac = 0.0002
#Mechanics -------
#Value in order :
#mean radius
R1 = 19 * 1e-6
R2 = 27.5 * 1e-6 #35 #32.5 #27.5
#radius = 2 * R1 * R2 /(R1 + R2)
radius = 0.0002 #0.002381 #2e-4
#Law {NoCoh,LiCoh,SoCoh}
Law = 'ViscElCap' #CohFrictMat
#particles
p_density = 2650 #2650
f_density = 1000
#Modulus
E_p = 1e8 #1e8
#poisson
P_p = 0.2
#friction angle
fa_p = 0.5
#restit
rcn_p = 0.7
rct_p = 0.7
#cohesion -------
#contact time
tc = 0.001
#surface tension
Gamma = 72.8 * 1e-3 #27 #24 # 28
#Wetting angle [°]
Theta = 10 #0
#Liquid bridge volume def
#[%] of the Void volume filled with water
water_content = 0.1 #from [0.0001 ; 0.1]
Nl = 5.00481359595265 #6 #to precise
#VB = 36 * 1e-19 #2 #12 #36
#VB = 2 * water_content * Vviod / Nl
VB = water_content * np.pi * p_density * radius**3 / ( 3 * Nl * f_density )
#seed type=int (no seed = -1)
seed_gen = 1
#Liquid Coh
CapModel = ['Willett_numeric',
SolidModel = ['']
#++++++
#Pre compute
#++++++
#create result folder if no existing
#print
print()
print('Radius : ' + str(radius) )
print('Bridge volume : ' + str(VB) )
print('
#r.seed(1)
#++++++
#Material def
#++++++
#------
#Cohesive (Liquid)
#------
for i in range(len(
O.materials
nbCm = len(CapModel)
Models = CapModel
#++++++
#Engine def
#++++++
#Engine def -------
O.engines = [ForceResetter(),
]
#++++++
#Cohesion law test
#++++++
#Init scene -------
sep_exp = 3 * radius
x_og_pos = 2 * radius
y_exp_pos = 0
fp_id = []
mp_id = []
for cm in range(nbCm) :
#add particles
#1
fp_id.append( O.bodies.
#2
mp_id.append( O.bodies.
O.bodies[
y_exp_pos += sep_exp
#Define Time-step
O.dt = tc_frac * tc
#Energy tracking
O.trackEnergy = True
#Init Var -------
ntt_iter = 0
last_time = 0
time = np.full([1],0)
#O.run(1,True)
first = True
#open graphique ctrl
yade.qt.
qt.View()
plot.plots = {'Displacement' : ( Models[0], Models[1], Models[2], Models[3], Models[4], Models[5] )}
# show the plot on the screen, and update while the simulation runs
plot.plot()
#######
#######
#######
O.run(1000, True)
#save and reload
O.save('./test')
O.load('./test')
print(O.
Question information
- Language:
- English Edit question
- Status:
- Expired
- For:
- Yade Edit question
- Assignee:
- No assignee Edit question
- Last query:
- Last reply: