warning when runnig model: error in linear solver

Asked by Mahdeyeh on 2019-10-07

Hi everyone
I am running a model with polyhedra particles. The following line is displayed continuously with running:

WARN /build/yade-fDuCoe/yade-2018.02b/pkg/dem/Polyhedra_support.cpp:370 SolveLinSys3x3: error in linear solver

The running will not stop and continue, but the warning will still be displayed.
what is this? and why it is displayed in each line?

Thanks a lot

this is my script:

import numpy as np
from numpy import *

RawVer=np.genfromtxt('polyline.txt',names=True,dtype=None)
# ListVer is list of all the vertices of all the polygons
Ver=()
ListVer=[]
for b in RawVer:
    if b[0]=='*LWPOLYLINE':
        ListVer.append(Ver)
        Ver=()
        continue
    Cordn=b[0]
    Cordn=np.fromstring(Cordn, sep=',')
    Cordn=tuple(Cordn.tolist())
    Cordn1=Cordn+(0.1,) # add z vertex to coordinates
    Cordn2=Cordn+(0.2,) # add z vertex to coordinates
    if not Cordn1 in Ver:
        Ver=Ver+(Cordn1,Cordn2)
ListVer.append(Ver)

from yade import plot, polyhedra_utils

Dolomite = PolyhedraMat()
Dolomite.density = 2870 #kg/m^3
Dolomite.young = 24.36e9 #Pa
Dolomite.poisson = 0.2
Dolomite.frictionAngle = radians(55.12) #rad

for ii in ListVer:
    O.bodies.append(polyhedra_utils.polyhedra(Dolomite,v=ii,fixed=True, color=(1,0.5,1), mask=3))

# block z translation and block x, y, z rotations
for b in O.bodies:
    b.state.blockedDOFs='zXYZ'

# returns a value that can be useful for evaluating the stability of the packing. It is defined as (mean force on particles)/(mean contact force), so that it tends to 0 in a stable packing.
def checkUnbalancedI():
    print "iter %d, time elapsed %f, time step %.6e, unbalanced forces = %.5f"%(O.iter, O.realtime, O.dt, utils.unbalancedForce()) # %[(keyname)][flags][width][.precision]typecode : String Formatting

O.engines=[
   ForceResetter(),
   InsertionSortCollider([Bo1_Polyhedra_Aabb(),]),
   InteractionLoop(
      [Ig2_Polyhedra_Polyhedra_PolyhedraGeom(),],
      [Ip2_PolyhedraMat_PolyhedraMat_PolyhedraPhys()], # collision "physics"
      [Law2_PolyhedraGeom_PolyhedraPhys_Volumetric()] # contact law -- apply forces
   ),
   NewtonIntegrator(damping=0.2,gravity=(0,-9.81,0)),
   PyRunner(command='checkUnbalancedI()',realPeriod=5,label='checker') # call our function defined above every 5 second
]

O.engines=O.engines+[PyRunner(iterPeriod=20,command='calm()',label="calmRunner")] # because we need to calm only on the first few steps in our model.

O.dt=10e-6

# With this command, model runs until 50000 cycles also together the running we can see bodies position
iii=0
while iii<50:
    O.run(1000,True)
    for b in O.bodies:
        x,y,z=b.state.pos[0],b.state.pos[1],b.state.pos[2]
        print x,y,z
    iii+=1

And this is part of my polyline.txt file:

*LWPOLYLINE
5.65925646218601,4.55181270691314
5.73126722138072,4.58605245783479
5.77867987874417,4.54814659932002
5.72613545317617,4.45313786655761
5.67735927237957,4.46914368762000
5.65925646218601,4.55181270691314
*LWPOLYLINE
5.77867987874417,4.54814659932002
5.85335478175727,4.48555609218365
5.85260679568780,4.56828407216204
5.77867987874417,4.54814659932002
*LWPOLYLINE
5.73126722138072,4.58605245783479
5.77867987874417,4.54814659932002
5.81450882721560,4.55780853991437
5.79764491294791,4.62869652636552
5.73126722138072,4.58605245783479
*LWPOLYLINE
5.58764749445495,4.58500232889874
5.62217282697479,4.53418014134792
5.73126722138072,4.58605245783479
5.73126722138072,4.63745946951823
5.68912951908611,4.66403774981748
5.62824026119494,4.66403774981748
5.58834735363834,4.61927433599938
5.58764749445495,4.58500232889874
*LWPOLYLINE
5.95173608530622,4.82137216180112
5.97070111950995,4.74674500619493
6.02759629397529,4.78820451330232
6.04182010555516,4.87704637031124
6.01692847121745,4.90429121169332
5.96477451937599,4.89363019456064
5.95173608530622,4.82137216180112
5.97070111950995,4.74674500619493
*LWPOLYLINE
6.22515191067526,4.78844429158166
6.26883211191276,4.86556328135477
6.31760829270935,4.84955746029238
6.35032945839741,4.77159311041367
6.27619963174108,4.67665041426685
6.22515191067526,4.78844429158166
*LWPOLYLINE
6.40808285853895,4.80123465328169
6.42234644235425,4.77280528615367
6.47683116141809,4.77280528615367
6.51713191299161,4.82137216180112
6.37015271827735,4.94456619305478
6.40808285853895,4.80123465328169
*LWPOLYLINE
6.37015271827735,4.94456619305478
6.44482762129045,4.88197568591842
6.44482762129045,4.96470366589681
6.37015271827735,4.94456619305478
*LWPOLYLINE
6.32274006091390,4.98247205156955
6.37015271827735,4.94456619305478
6.40598166674878,4.95422813364914
6.38911775248110,5.02511612010029
6.32274006091390,4.98247205156955
*LWPOLYLINE
6.38911775248110,5.02511612010029
6.40598166674878,4.95422813364914
6.44482762129045,4.96470366589681
6.42012466819553,5.05252790576424
6.38911775248110,5.02511612010029
*LWPOLYLINE
6.42012466819553,5.05252790576424
6.45786612721434,5.07012931147771
6.44482762129045,4.96470366589681
6.42012466819553,5.05252790576424
*LWPOLYLINE
6.45326510925139,5.10587564233483
6.49403328212203,5.10587564233483
6.53771348335952,5.18299463210794
6.53885126152741,5.25247386809142
6.48252703795474,5.24803108583586
6.46693240291886,5.21068054623424
6.45326510925139,5.10587564233483
*LWPOLYLINE
5.97134674358307,5.05339071345722
5.99016022120936,5.10576304428322
6.08093430834130,5.05339071345722
6.00660967790017,5.05339071345722
5.97134674358307,5.05339071345722
*LWPOLYLINE
6.23051437931302,5.06201148728341
6.21471870315994,5.02748524294697
6.22751534955774,5.02599321358958
6.26228896948066,5.07012931147771
6.23051437931302,5.06201148728341
6.21471870315994,5.02748524294697
*LWPOLYLINE
6.32729589989373,5.06180723410142
6.36430446570333,5.00917492846134
6.38911775248110,5.02511612010029
6.42012466819553,5.05252790576424
6.45202489454788,5.10587564233483
6.39360744151574,5.10478317391581
6.32727815152830,5.06183247521448
*LWPOLYLINE
5.64714334084488,7.71915051590296
5.71459899791562,7.43559857009836
5.86998281608232,7.47750069908904
5.71667269853598,7.79181258666165
5.64714334084488,7.71915051590296
*LWPOLYLINE
6.52427757392303,7.35904484217392
6.51248045688279,7.56867373571984
6.46738232760356,7.48223894478241
6.52427757392303,7.35904484217392
*LWPOLYLINE
6.69620101649248,4.64788958244237
6.76991849865781,4.61967014120481
6.76991849865781,4.80787153148550
6.72545807637715,4.92428939992006
6.70559723678950,4.80123465328169
6.69620101649248,4.64788958244237
*LWPOLYLINE
5.53265194204618,8.65397535859585
5.72300376507628,8.02838747873631
5.62909308898407,7.95071803887945
5.58550715931802,7.91467001022423
5.51280998416007,7.91467001022423
5.53265194204618,8.65397535859585

Question information

Language:
English Edit question
Status:
Solved
For:
Yade Edit question
Assignee:
No assignee Edit question
Solved by:
Jan Stránský
Solved:
2019-10-16
Last query:
2019-10-16
Last reply:
2019-10-07
Best Jan Stránský (honzik) said : #1

Hello,

> I am running a model with polyhedra particles.

would it be possible to create a MWE [1] reproducing the problem?

> what is this?

the only way to find the problem is to have a look at the code..
The source of the problem is in [2], solution of 3x3 system of linear equation. The error is because the determinant is 0.
The solution is used at [3] to test for edge / face intersection (?).

> and why it is displayed in each line?

what does "each line" mean? many times? If yes, it is because the error is encountered many times..

cheers
Jan

[1] https://www.yade-dem.org/wiki/Howtoask
[2] https://gitlab.com/yade-dev/trunk/blob/master/pkg/dem/Polyhedra_support.cpp#L371
[3] https://gitlab.com/yade-dev/trunk/blob/master/pkg/dem/Polyhedra_support.cpp#L650

Robert Caulk (rcaulk) said : #2

Hello,

During the polyhedron intersection check, it finds a determinant = 0 [1]. My guess is that you have a flat tetrahedron or something similar leading to two rows or columns of that particular system being equivalent. Of course, an MWE is necessary to know exactly what is happening.

Cheers,

Robert

[1] https://gitlab.com/yade-dev/trunk/blob/master/pkg/dem/Polyhedra_support.cpp#L371

Mahdeyeh (mahdiye.sky) said : #3

Thank you Jan and Robert.

I added my codes.

I think both of your reply are my answer and will solve my problem, but unfortunately I don`t understand what is explained in your links, maybe because I am really an amateur at YADE. So please let me read a bit about determinant, 3x3 system of linear equation and intersection and then close this question.

Best regards,
Mahdeyeh

Mahdeyeh (mahdiye.sky) said : #4

Thanks Jan Stránský, that solved my question.