domain = FEGrid( coord_max = (length,height,0.), shape = shape, fets_eval = fets_eval, geo_transform = arch_2d ) # #right_dofs, right_dof_r = domain.get_right_dofs() #right_dof = right_dofs[0,0] #print 'right_dof',right_dof top_middle_dofs, top_middle_dof_r = domain.get_top_middle_dofs() # dof in global y-direction top_middle_dof = top_middle_dofs[0,1] print 'top_middle_dofs',top_middle_dofs print 'top_middle_dof' ,top_middle_dof top_dofs, top_dof_r = domain.get_top_dofs() # dof in global y-direction print 'fets_eval.n_e_dofs' , fets_eval.n_e_dofs if fets_eval.n_e_dofs == 8: top_left_middle_dofs = top_dofs[shape[0]/4, :] elif fets_eval.n_e_dofs == 18: top_left_middle_dofs = top_dofs[shape[0]/2, :] print 'top_left_middle_dofs' , top_left_middle_dofs beta = 100.18 * pi/180 alpha = (pi - beta )/2 phi_left_middle = alpha + beta/4 tstepper = TS(
top_middle_dof = top_middle_dofs[0,1] # boundary condition for symmetric loading case: BCDOF_list = [ BCDofGroup( var='u', value = -1., dims = [1], get_dof_method = domain.get_top_middle_dofs )] # rtrace for symmetric loading case: var_y_ = 'F_int' idx_y_ = top_middle_dofs[0,1] var_x_ = 'U_k' idx_x_ = top_middle_dofs[0,1] # --- (single displacement at the left side at L/4) elif loading_type == 'asymmetric': # get dofs corresponding to the loading case: top_dofs, top_dof_points = domain.get_top_dofs() # dof in global y-direction: if fets_eval.n_e_dofs == 8: top_left_middle_dofs = top_dofs[shape[0]/4, :] elif fets_eval.n_e_dofs == 18: top_left_middle_dofs = top_dofs[shape[0]/2, :] # loading angle for radial (asymmetric) loading: beta = beta_degree * pi/180 alpha = (pi - beta )/2 phi_left_middle = alpha + beta/4 # boundary condition for asymmetric loading case # BCDOF_x = BCDof( var='u', value = cos(phi_left_middle), dof = top_left_middle_dofs[0] ) # BCDOF_y = BCDof( var='u', value = -sin(phi_left_middle), dof = top_left_middle_dofs[1] )