← Back to team overview

yade-users team mailing list archive

Re: [Question #697379]: Optimise material parameter

 

Question #697379 on Yade changed:
https://answers.launchpad.net/yade/+question/697379

    Status: Answered => Open

Mithushan Soundaranathan is still having a problem:
Hi Jan,

Thank you very much. 
I can not open it, I am getting message: "script.py" is not responding and need Force Quit. 
I am not sure if the code is wrong, or is due the capacity of my computer. Could you please have quick look and see if the code looks right.

#!/usr/bin/env python
#encoding: ascii

# Testing of the Deformation Enginge with Luding Contact Law
# Modified Oedometric Test
# The reference paper [Haustein2017]


from __future__ import print_function
from yade import utils, plot, timing
from yade import pack
import pandas as pd
import numpy as np
from PIL import Image
from yade import pack, export
from scipy.interpolate import interp1d 


o = Omega()

# Physical parameters
fr        = 0.54
rho       = 1550
Diameter  = 0.0012
D=Diameter
r1        = Diameter/2
#r2        = Diameter/2
k1        = 100000
kp        = 2.0*k1
kc        = k1 * 0.1
ks        = k1 * 0.1
DeltaPMax = Diameter/3.0
Chi1      = 0.34

o.dt = 1.0e-7
particleMass = 4.0/3.0*math.pi*r1*r1*r1*rho

Vi1 = math.sqrt(k1/particleMass)*DeltaPMax*Chi1
PhiF1=0.999
#PhiF1 = DeltaPMax*(kp-k1)*(r1+r2)/(kp*2*r1*r2)

Tab_rad=0.005
Cyl_height=0.045
cross_area=math.pi*(Tab_rad**2)

Comp_press= 1e8
Comp_force=Comp_press*cross_area

n_iter=10
RMSE_save=[]
#*************************************
for i in range (3,n_iter,1):
    o.reset()
    # Add material
    mat1 = O.materials.append(LudingMat(frictionAngle=fr, density=rho, k1=k1, kp=kp, ks=ks, kc=kc, PhiF=PhiF1, G0 = 0.0))

    # Spheres for compression

    sp=pack.SpherePack()
    sp.makeCloud((-3.0*Diameter,-3.0*Diameter,-18*Diameter),(3.0*Diameter,3.0*Diameter,18.0*Diameter), rMean=Diameter/2.0,rRelFuzz=0.18,num=527)
    sp.toSimulation(material=mat1)
    walls=O.bodies.append(yade.geom.facetCylinder((0,0,0),radius=Tab_rad,height=Cyl_height,segmentsNumber=20,wallMask=6,material=mat1))


    # Add engines
    o.engines = [
    ForceResetter(),
    InsertionSortCollider([Bo1_Sphere_Aabb(aabbEnlargeFactor=1.05),
                            Bo1_Wall_Aabb(),
                            Bo1_Facet_Aabb()
                            ]),
    InteractionLoop(
        [Ig2_Sphere_Sphere_ScGeom(interactionDetectionFactor=1.05),
        Ig2_Facet_Sphere_ScGeom(),
        Ig2_Wall_Sphere_ScGeom()],
        [Ip2_LudingMat_LudingMat_LudingPhys()],
        [Law2_ScGeom_LudingPhys_Basic()]
    ),
    NewtonIntegrator(damping=0.1, gravity=[0, 0, -9.81]),
    PyRunner(command='checkForce()', realPeriod=1, label="fCheck"),
    #DeformControl(label="DefControl")
    ]
    

    def checkForce():
        if O.iter < 10000:
            return
        highSphere = 0.0
        for b in O.bodies:
            if highSphere < b.state.pos[2] and isinstance(b.shape, Sphere):
                highSphere = b.state.pos[2]
            else:
                pass

        O.bodies.append(wall(highSphere+0.5*Diameter, axis=2, sense=-1, material=mat1))
        global plate
        plate = O.bodies[-1] 
        plate.state.vel = (0, 0, -10)
        #O.engines = O.engines + [PyRunner(command='checkdata()', iterPeriod=1500)]
        fCheck.command = 'unloadPlate()'


    def unloadPlate():
        if abs(O.forces.f(plate.id)[2]) > Comp_force:
            plate.state.vel *= -1
            fCheck.command = 'stopUnloading()'


    def stopUnloading():
        if abs(O.forces.f(plate.id)[2]) == 0:
            o.pause() 
            global k1
            global kp
            RMSE_data=[i,k1,kp]
            RMSE_save.append(RMSE_data)
            k1=k1+5000
            kp=i*k1
            kc=0.1*k1
            ks=0.1*k1
    O.run()
    O.wait()

-- 
You received this question notification because your team yade-users is
an answer contact for Yade.