# Create 2D slice then translate to add each on Y axis # get point distribution from original hex mesh top read avs hex_top.inp mo cmo printatt mo -xyz- minmax # EXTRACT TRI SURFACE extract surfmesh 1,0,0 mos mo cmo select mos settets normal dump gmv hex_top_surf.gmv mos cmo select mos eltset ebot itetclr eq 1 eltset eleft itetclr eq 5 eltset ekeep union ebot eleft eltset eduds not ekeep rmpoint element eltset,get,eduds rmpoint compress dump gmv tmp_ex_tri.gmv mos # EXTRACT LINE # reduce to a single set of points along x and z cmo setatt mos itetclr 1 resetpts itp extract surfmesh 1,0,0 mol mos cmo delete mos sort/mol/line_graph/ascending/ikey/ reorder/mol/ikey dump gmv tmp_ex_line1.gmv mol pset/pyout/attribute yic/1,0,0/ ne 0. pset/pxout/attribute xic/1,0,0/ gt 700. pset/pout/ union pyout pxout rmpoint pset,get,pout rmpoint compress sort/mol/line_graph/ascending/ikey2/ nodes reorder/mol/ikey2 dump gmv tmp_poly.gmv mol ### NOTE HARDWIRE REMOVAL OF EXTRA BITS ### cmo setatt mol itetclr/ 4,5,1 / 2 rmmat 2 rmpoint compress dump gmv top_poly.gmv mol dump avs2 top_poly_pts.inp mol 1 0 0 0 cmo delete mos cmo delete mol cmo delete mo # Done with poly points for top triangle ############################################## # # cmo create motri///triplane read avs top_poly_pts.inp motri # transpose y and z axis # since triangulate will not work in xz orientation cmo copyatt motri motri yic zic cmo setatt motri zic 0. resetpts itp triangulate / counterclockwise cmo / setatt / motri / imt / 1 cmo / setatt / motri / itetclr / 1 resetpts itp dump / gmv / tmpxy_tri0.gmv / motri cmo copyatt motri motri zic yic cmo setatt motri yic 0. resetpts itp dump / gmv / tmpxz_tri0.gmv / motri massage / 150. / 1.e-5 / 1.e-5 / 1,0,0/ strictmergelength smooth / position / esug / 1,0,0; recon 0; smooth / position / esug / 1,0,0; recon 0; smooth / position / esug / 1,0,0; recon 0; dump gmv tmp_tri01.gmv motri massage / 100. / 1.e-5 / 1.e-5 / 1,0,0/ strictmergelength smooth / position / esug / 1,0,0; recon 0; smooth / position / esug / 1,0,0; recon 0; smooth / position / esug / 1,0,0; recon 0; dump gmv tmp_tri02.gmv motri massage / 50. / 1.e-5 / 1.e-5 / 1,0,0/ strictmergelength smooth / position / esug / 1,0,0; recon 0; smooth / position / esug / 1,0,0; recon 0; smooth / position / esug / 1,0,0; recon 0; dump gmv tmp_tri03.gmv motri massage / 25. / 12. / 1.e-5 / 1,0,0/ strictmergelength smooth / position / esug / 1,0,0; recon 0; smooth / position / esug / 1,0,0; recon 0; smooth / position / esug / 1,0,0; recon 0; dump gmv tmp_tri04.gmv motri # exclude join sides from node movements cmo addatt motri pmass VINT scalar nnodes infile mass_psave.mlgi dump gmv tmp_pstay.gmv motri cmo setatt motri itetclr 1 cmo setatt motri imt 1 resetpts itp massage/ 25. 25. .1 / pset,get,pmove / strictmergelength smooth / position / esug / 1,0,0; recon 0; smooth / position / esug / 1,0,0; recon 0; smooth / position / esug / 1,0,0; recon 0; dump gmv tmp_tri05.gmv motri # Note the narrow tip with 25 edge length has neg ccoefs # that can not be resolved without adding nodes. # Fix this after joining with octree base mesh dump gmv top_tri_smooth.gmv motri dump avs top_tri_smooth.inp motri # this adds points where we do not want them recon 1 cmo setatt motri itetclr 1 cmo setatt motri imt 1 dump gmv top_tri_recon.gmv motri dump avs top_tri_recon.inp motri finish