본문 바로가기

전체 글

YADE의 Material YADE는 기본적으로 Defaul Material이 지정되어 있다. 그래서, YADE를 실행 후 확인을 해 보면, In [2]: len(O.materials) Out[2]: 0 material container가 비어있다. 오잉? 그렇다면 body를 만들어 보자 O.bodies.append(utils.facet(vertices=[(0,0,0),(0,1,0),(1,1,1)], wire=True, highlight=False)) Facet을 하나 만들어다. 이제 다시 확인해 보면 In [7]: len(O.materials) Out[7]: 1 material container가 채워졌다. 이때 채워지는 것은 Default값으로 들어가는데, 확인해 보면 In [8]: O.materials[0].dict() Ou.. 더보기
우분투 듀얼부팅시 시간세팅 문제 윈도우-우분투 듀얼부팅시, OS에서 시간을 결정하는 방법이 달라 두개의 운영체계를 넘나들때 시간 오류가 발생한다. 확인은 우분투에서 아래의 명령어를 사용 timedatectl UTC는 그리니티 천문대 표준시이고, RTC는 Bios의 시간이다. 그런데, 윈도우즈에서는 RTC를 Local Time으로 해석하고 우분투는 UTC로 해석하여 시간의 차이가 발생하게된다. 이럴 경우 우분투에서 RTC를 윈도우와 동일하게 UTC로 해석하도록 강제하는 방법을 사용한다. timedatectl set-local-rtc 1 경고문이 나타나게 되나, 감수하도록 한다. 인터넷 뒤져보면 레지스트리를 건드려 윈도우쪽을 변경하는 방법도 있다. 더보기
Interaction 확인방법 YADE에서 Body간의 interaction은 O.interaction에 존재 한다. In [41]: type(O.interactions) Out[41]: yade.wrapper.InteractionContainer InteractionContainer 클래스로 분류된다. 컨테이너 내의 내용을 보려면, In [38]: InteractionContainer.withBody(O.interactions,100) Out[38]: [, , ] 100번째 Body의 interaction은 3개이고, 각각의 인스턴스 주소를 확인할 수 있다. 100번째 interaction을 구성하고 있는 첫번째 body의 id는 53이다. In [8]: InteractionContainer.nth(O.interactions,100.. 더보기
Body의 종류 확인방법 In [75]: isinstance(O.bodies[1].shape,Facet) Out[75]: True In [76]: isinstance(O.bodies[1].shape,Sphere) Out[76]: False 더 쉬운방법은 In [10]: O.bodies[10].dict() Out[10]: {'id': 10, 'groupMask': 1, 'flags': 1, 'subdomain': 4, 'material': , 'state': , 'shape': , 'bound': , 'clumpId': -1, 'chain': -1, 'iterBorn': 0, 'timeBorn': 0.0} 더보기
Body의 Position확인 방법 YADE에서 Body의 Reference Position은 생성될때 결정된다. (Centroid) 이후 확인하는 displacement, rotation등은 Reference Position으로 부터 게산된다. 만약, Reference Position을 새로 설정하고 싶으면, O.bodies.state.refPos(=Vector3r::Zero()) 더보기
Body의 상태 확인방법 YADE에서 Bodies (Sphere, Facet 등)의 현재 상태(State : 속도, 변위, 방향 등)을 알기위한 방법 In [8]: O.bodies[4].state.vel Out[8]: Vector3(0,0,0) 종종 Method 형태로 곤란하게 만드는 경우가 있다. 예를 들어 In [23]: O.bodies[12623].state.displ Out[23]: 이지랄을 할 때가 있는데, 이럴 때는 Method로 확인하자 In [24]: O.bodies[12623].state.displ() Out[24]: Vector3(0,0.0006749257958451500283,-0.005600050000161033159) 한방에 보시려면, In [25]: O.bodies[12623].state.dict() O.. 더보기
O.engines 내용 확인방법 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), d.. 더보기
외부 모듈 변경사항 반영방법 Python에서 Global변수를 외부 모듈을 이용하여 별도의 파일로 관리할 필요가 있다. 이런 경우, 다른 파일에서 글로벌 변수가 변경되었을때 이를 반영시킬 필요가 있다. 이때 사용되는 라이브러리는 importlib이다. 더보기