Advertisement
Guest User

Untitled

a guest
Apr 25th, 2018
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.53 KB | None | 0 0
  1. import numpy
  2. import math
  3.  
  4. from pylmgc90.pre import *
  5.  
  6. dim = 2
  7.  
  8. bodies = avatars()
  9. mat = material(name='PLEXx',materialType='RIGID',density=2000.)
  10. mod = model(name='rigid', physics='MECAx', element='Rxx2D', dimension=dim)
  11.  
  12. # bricks, half-brick, linteau and opening definition
  13. brick = brick2D('brick', 1.e-1, 5.e-2)
  14. half_brick = brick2D('half-brick', 5.e-2, 5.e-2)
  15. linteau = brick2D('linteau', 3.e-1, 5.e-2)
  16. ghost = brick2D('ghost', 2.e-1, 5.e-2)
  17.  
  18.  
  19. # joint thickness
  20. horizontal_joint_thickness = 0.001
  21. vertical_joint_thickness = 0.001
  22.  
  23. # rows definitions
  24. even_row = [half_brick, brick, brick, brick, brick, half_brick]
  25. odd_row = [brick, brick, brick, brick, brick]
  26. even_window_row = [half_brick, brick, ghost, brick, half_brick]
  27. odd_window_row = [brick, half_brick, ghost, half_brick, brick]
  28. linteau_row = [brick, linteau, brick]
  29.  
  30. # wall as a list of rows
  31. wall = [even_row,
  32. odd_row ,
  33. even_row,
  34. odd_row ,
  35. even_window_row,
  36. odd_window_row ,
  37. even_window_row,
  38. linteau_row ,
  39. even_row ]
  40.  
  41.  
  42. # wall building :
  43. nb_bricks=0
  44. x=0.
  45. y=0.
  46. for j in range(0, len(wall), 1):
  47. row = wall[j]
  48. if j % 2 == 0:
  49. color='BLUEx'
  50. else:
  51. color='REDxx'
  52.  
  53. x=0.
  54. for i in range(0, len(row), 1):
  55. nb_bricks += 1
  56. brick = row[i]
  57. if i == 0:
  58. y += 0.5*brick.ly
  59.  
  60. x += 0.5*brick.lx
  61. if brick.name != 'ghost':
  62. bodies += brick.rigidBrick(center=[x, y], model=mod, material=mat, color=color)
  63.  
  64. x += 0.5*brick.lx + vertical_joint_thickness
  65.  
  66. y += 0.5*brick.ly + horizontal_joint_thickness
  67.  
  68. ## wall done... everything else (floor and other container)
  69.  
  70. mats = materials()
  71. svs = see_tables()
  72. tacts = tact_behavs()
  73.  
  74. mut = material(name='TDURx',materialType='RIGID',density=2500.)
  75. mats.addMaterial(mat,mut)
  76.  
  77. floor = rigidJonc(axe1=3.e-1, axe2=2.5e-2, center=[2.5e-1, -2.5e-2],
  78. model=mod, material=mut, color='WALLx')
  79. floor.imposeDrivenDof(component=[1, 2, 3],dofty='vlocy')
  80.  
  81. bodies += floor
  82.  
  83. try:
  84. visuAvatars(bodies)
  85. except:
  86. pass
  87.  
  88. # interactions management :
  89. lplpl=tact_behav(name='iqsc0',law='IQS_CLB',fric=0.3)
  90. tacts+=lplpl
  91. lpljc=tact_behav(name='iqsc1',law='IQS_CLB',fric=0.5)
  92. tacts+=lpljc
  93. svbbbb = see_table(CorpsCandidat='RBDY2',candidat='POLYG', colorCandidat='BLEUx',behav=lplpl,
  94. CorpsAntagoniste='RBDY2', antagoniste='POLYG',colorAntagoniste='BLEUx',alert=5.e-3)
  95. svs+=svbbbb
  96. svbrbr = see_table(CorpsCandidat='RBDY2',candidat='POLYG', colorCandidat='REDxx',behav=lplpl,
  97. CorpsAntagoniste='RBDY2', antagoniste='POLYG',colorAntagoniste='REDxx',alert=5.e-3)
  98. svs+=svbrbr
  99. svbbbr = see_table(CorpsCandidat='RBDY2',candidat='POLYG', colorCandidat='BLEUx',behav=lplpl,
  100. CorpsAntagoniste='RBDY2', antagoniste='POLYG',colorAntagoniste='REDxx',alert=5.e-3)
  101. svs+=svbbbr
  102. svpljc = see_table(CorpsCandidat='RBDY2',candidat='POLYG', colorCandidat='BLEUx',behav=lpljc,
  103. CorpsAntagoniste='RBDY2', antagoniste='JONCx',colorAntagoniste='WALLx',alert=5.e-3)
  104. svs+=svpljc
  105.  
  106. # file writing
  107. if not os.path.isdir('./DATBOX'):
  108. os.mkdir('./DATBOX')
  109.  
  110. writeBodies(bodies,chemin='DATBOX/')
  111. writeBulkBehav(mats,chemin='DATBOX/')
  112. writeTactBehav(tacts,svs,chemin='DATBOX/')
  113. writeDrvDof(bodies,chemin='DATBOX/')
  114. writeDofIni(bodies,chemin='DATBOX/')
  115. writeVlocRlocIni(chemin='DATBOX/')
  116.  
  117. post = postpro_commands()
  118. writePostpro(commands=post, parts=bodies, path='DATBOX/')
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement