using PyCall @pyimport pylagrit @pyimport numpy as np # User parameters ####################### # Discretization nx = 61; ny = 61 # Polygon delineation filename polygon_file = "2d_mesh.avs" # User parameters ####################### l = pylagrit.PyLaGriT() # Read in polygon delineation mesh mopoly = l[:read](polygon_file) # Create quad using polygon min and max coordinates xs = linspace(mopoly[:xmin],mopoly[:xmax],nx) ys = linspace(mopoly[:ymin],mopoly[:ymax],ny) #xs = np.linspace(mopoly.xmin,mopoly.xmax,nx) #ys = np.linspace(mopoly.ymin,mopoly.ymax,ny) moquad = l[:gridder](xs,ys,elem_type="quad",connect=true) mopoly[:setatt]("itetclr",1) # Create extruded quad to tet and center at z=0 moprism = mopoly[:extrude](1.0) moprism[:trans]((0.,0.,0.),(0.,0.,0.5)) motet = moprism[:grid2grid_prismtotet3]() # Clean up a little mopoly[:delete]() moprism[:delete]() # Add attribute to moquad to store if in polygon or not moquad[:addatt]("if_in_poly",vtype="vint") moquad[:setatt]("if_in_poly", 0) # Make sure attr starts as zero # Interpolate motet's itetclr into moquad's if_in_poly moquad[:interpolate_map]("if_in_poly",motet,"itetclr") moquad[:intersect_elements](motet,attr_name="if_inter") # Write out file, mapping is stored as cell attribute in if_inter moquad[:dump]("polygon_map_julia.inp")