44 lines
1.3 KiB
Julia
Executable File
44 lines
1.3 KiB
Julia
Executable File
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")
|