Advertisement
Guest User

Untitled

a guest
Oct 19th, 2019
95
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.94 KB | None | 0 0
  1. [GlobalParams]
  2. displacements = 'disp_x disp_y'
  3. []
  4.  
  5. [Problem]
  6. type = ReferenceResidualProblem
  7. solution_variables = 'disp_x disp_y frictionless_lambda'
  8. extra_tag_vectors = 'ref'
  9. reference_vector = 'ref'
  10. []
  11.  
  12. [Mesh]
  13. [./simple_mesh]
  14. type = FileMeshGenerator
  15. file = mesh.e
  16. [../]
  17. [./master]
  18. type = LowerDBlockFromSidesetGenerator
  19. input = simple_mesh
  20. sidesets = '2'
  21. new_block_id = '3'
  22. [../]
  23. [./slave]
  24. type = LowerDBlockFromSidesetGenerator
  25. input = master
  26. sidesets = '1'
  27. new_block_id = '4'
  28. [../]
  29. []
  30.  
  31. [Constraints]
  32. [./lm]
  33. type = NormalNodalLMMechanicalContact
  34. slave = 1
  35. master = 2
  36. variable = frictionless_lambda
  37. master_variable = disp_x
  38. disp_y = disp_y
  39. extra_vector_tags = 'ref'
  40. [../]
  41. [x]
  42. type = NormalMortarMechanicalContact
  43. master_boundary = '2'
  44. slave_boundary = '1'
  45. master_subdomain = '3'
  46. slave_subdomain = '4'
  47. variable = frictionless_lambda
  48. slave_variable = disp_x
  49. component = x
  50. use_displaced_mesh = true
  51. compute_lm_residuals = false
  52. []
  53. [y]
  54. type = NormalMortarMechanicalContact
  55. master_boundary = '2'
  56. slave_boundary = '1'
  57. master_subdomain = '3'
  58. slave_subdomain = '4'
  59. variable = frictionless_lambda
  60. slave_variable = disp_y
  61. component = y
  62. use_displaced_mesh = true
  63. compute_lm_residuals = false
  64. []
  65. []
  66.  
  67. [Variables]
  68. [./disp_x]
  69. block = '1 2'
  70. [../]
  71. [./disp_y]
  72. block = '1 2'
  73. [../]
  74. [./frictionless_lambda]
  75. block = 4
  76. [../]
  77. []
  78.  
  79. [BCs]
  80. [./left_x]
  81. type = PenaltyDirichletBC
  82. variable = disp_x
  83. boundary = 'outside_left'
  84. value = 0.0
  85. penalty = 1e3
  86. extra_vector_tags = 'ref'
  87. [../]
  88. [./left_y]
  89. type = PenaltyDirichletBC
  90. variable = disp_y
  91. boundary = 'outside_left'
  92. value = 0.0
  93. penalty = 1e3
  94. extra_vector_tags = 'ref'
  95. [../]
  96. [./right_x]
  97. type = FunctionPenaltyDirichletBC
  98. variable = disp_x
  99. boundary = 'outside_right'
  100. function = '-5e-3 * t'
  101. penalty = 1e3
  102. extra_vector_tags = 'ref'
  103. [../]
  104. [./right_y]
  105. type = FunctionPenaltyDirichletBC
  106. variable = disp_y
  107. boundary = 'outside_right'
  108. function = '-5e-5 * t'
  109. penalty = 1e3
  110. extra_vector_tags = 'ref'
  111. [../]
  112. []
  113.  
  114. [Kernels]
  115. [disp_x]
  116. type = Diffusion
  117. variable = disp_x
  118. block = '1 2'
  119. []
  120. [disp_y]
  121. type = Diffusion
  122. variable = disp_y
  123. block = '1 2'
  124. []
  125. []
  126.  
  127. [Debug]
  128. show_var_residual_norms = 1
  129. []
  130.  
  131. [Preconditioning]
  132. [./smp]
  133. type = SMP
  134. full = true
  135. [../]
  136. []
  137.  
  138. [Executioner]
  139. solve_type = PJFNK
  140. type = Transient
  141. num_steps = 10
  142. dt = 1
  143. dtmin = 1
  144. nl_abs_tol = 1e-15
  145. petsc_options_iname = '-pc_type -snes_linesearch_type -pc_factor_shift_type -pc_factor_shift_amount'
  146. petsc_options_value = 'lu basic NONZERO 1e-15'
  147. []
  148.  
  149. [Outputs]
  150. exodus = true
  151. []
  152.  
  153. [Postprocessors]
  154. [contact]
  155. type = ContactDOFSetSize
  156. variable = frictionless_lambda
  157. subdomain = '4'
  158. execute_on = 'nonlinear timestep_end'
  159. []
  160. []
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement