O.engines는 List type 컨테이너 이다.
예를 들어,
O.engines = [
ForceResetter(),
InsertionSortCollider([Bo1_Sphere_Aabb(), Bo1_Facet_Aabb()]),
InteractionLoop(
[Ig2_Sphere_Sphere_ScGeom(), Ig2_Facet_Sphere_ScGeom()], # collision geometry
[Ip2_FrictMat_FrictMat_FrictPhys()], # collision "physics"
[Law2_ScGeom_FrictPhys_CundallStrack()] # contact law -- apply forces
),
NewtonIntegrator(gravity=(0, 0, -9.81), damping=0.02),
PyRunner(command='addData()', iterPeriod=100),
PyRunner(command='addPlotData()', iterPeriod=100),
ServoPIDController(axis=(0,0,1), ids=top_caps, target=servo_targetForce, kD=5.0, kI=5.0, kP=5.0, maxVelocity=-0.01, iterPeriod=100, label='servo_1'),
DomainLimiter(lo=(-width,-width,-height+2*dz), hi=(width,width,2*height), iterPeriod = 100, label = 'Domain') # destroy balls outside domain in every 100 steps
]
이 경우, O.engines는 다음과 같이 나타난다.
[<ForceResetter instance at 0x5581dbcadcb0>,
<InsertionSortCollider instance at 0x5581dbd89780>,
<InteractionLoop instance at 0x5581dbe664e0>,
<NewtonIntegrator instance at 0x5581dbd86c80>,
<PyRunner instance at 0x5581db9fdfe0>,
<PyRunner instance at 0x5581db8fdde0>,
<ServoPIDController instance at 0x5581dbc4d5c0>,
<DomainLimiter instance at 0x5581dbbfbc20>]
5번째 엔진을 확인하면
In[2]: O.engines[5]
Out[2]: <PyRunner instance at 0x5581db8fdde0>
In [3]: O.engines[5].command
Out[3]: 'addPlotData()'
이걸 삭제하려면,
In [8]: O.engines = O.engines[:5] + O.engines[6:]
In [9]: O.engines
Out[9]:
[<ForceResetter instance at 0x5581dbcadcb0>,
<InsertionSortCollider instance at 0x5581dbd89780>,
<InteractionLoop instance at 0x5581dbe664e0>,
<NewtonIntegrator instance at 0x5581dbd86c80>,
<PyRunner instance at 0x5581db9fdfe0>,
<ServoPIDController instance at 0x5581dbc4d5c0>,
<DomainLimiter instance at 0x5581dbbfbc20>]
In [10]: O.engines[4].command
Out[10]: 'addData()'
어예..
'YADE' 카테고리의 다른 글
Body의 종류 확인방법 (0) | 2023.01.11 |
---|---|
Body의 상태 확인방법 (0) | 2023.01.07 |
YADE의 좌표표시 (0) | 2022.12.22 |
Body의 이해 (0) | 2022.12.22 |
Class, wrapper 확인 (1) | 2022.12.16 |