def reset_geom_params(self): """ Reset the necessary parameters to create a new geometry. Returns: """ # Reset the mesh object. self.my_mesh = Mesh() # Initialize physical groups and geometry parameters. self.p_dict = dict( ) # Create a dictionary containing all the points of the geometry. self.interface_points = dict( ) # Dictionary that will isolate the points conforming the interface. self.list_points_interface = list() self.refinement_points_tip = None # List containing the refinement points of the tip. self.refinement_points_knee = None # List containing the refinement points of the knee. self.point_num = 1 # Number of points counter. self.key = '' # Variable creating the dicts of the self.p_dict variable. self.interface_end_point = None # Locator of the last point defining the interface self.interface_end_point_z = None # Locator of the z coordinate of the last point defining the interface self.inlet = Entity.PhysicalGroup(name='Inlet', mesh=self.my_mesh) self.twr = Entity.PhysicalGroup(name='Tube_Wall_R', mesh=self.my_mesh) self.twl = Entity.PhysicalGroup(name='Tube_Wall_L', mesh=self.my_mesh) self.bw = Entity.PhysicalGroup(name='Bottom_Wall', mesh=self.my_mesh) self.lwr = Entity.PhysicalGroup(name='Lateral_Wall_R', mesh=self.my_mesh) self.tw = Entity.PhysicalGroup(name='Top_Wall', mesh=self.my_mesh) self.lwl = Entity.PhysicalGroup(name='Lateral_Wall_L', mesh=self.my_mesh) self.interface = Entity.PhysicalGroup(name='Interface', mesh=self.my_mesh) self.vacuum = Entity.PhysicalGroup(name='Vacuum', mesh=self.my_mesh) self.liquid = Entity.PhysicalGroup(name='Liquid', mesh=self.my_mesh)
def __init__(self): self.geoPath = '' # Initialize the path where the .geo file will be stored. self.filename = '' # Initialize the name of the .geo file. self.refinement = '' # This string will be later modified by the user to indicate the refinement of mesh. self.msh_filename = '' self.geo_filename = '' self.mesh_filename = '' self.app = None # Variable containing all the mesh details specified by the user. # Define the geometry and mesh object, as well as some of its properties. self.my_mesh = Mesh() self.max_element_size = None self.min_element_size = None self.length_from_curvature = None self.length_extend = None # Define auxiliary variables. self.interface_fun = '' self.interface_fun_r = '' self.interface_fun_z = '' # Initialize physical groups and geometry parameters. self.p_dict = dict( ) # Create a dictionary containing all the points of the geometry. self.interface_points = dict( ) # Dictionary that will isolate the points conforming the interface. self.list_points_interface = list() self.refinement_points_tip = None # List containing the refinement points of the tip. self.refinement_points_knee = None # List containing the refinement points of the knee. self.point_num = 1 # Number of points counter. self.key = '' # Variable creating the dicts of the self.p_dict variable. self.interface_end_point = None # Locator of the last point defining the interface self.interface_end_point_z = None # Locator of the z coordinate of the last point defining the interface self.inlet = Entity.PhysicalGroup(name='Inlet', mesh=self.my_mesh) self.twr = Entity.PhysicalGroup(name='Tube_Wall_R', mesh=self.my_mesh) self.twl = Entity.PhysicalGroup(name='Tube_Wall_L', mesh=self.my_mesh) self.bw = Entity.PhysicalGroup(name='Bottom_Wall', mesh=self.my_mesh) self.lwr = Entity.PhysicalGroup(name='Lateral_Wall_R', mesh=self.my_mesh) self.tw = Entity.PhysicalGroup(name='Top_Wall', mesh=self.my_mesh) self.lwl = Entity.PhysicalGroup(name='Lateral_Wall_L', mesh=self.my_mesh) self.interface = Entity.PhysicalGroup(name='Interface', mesh=self.my_mesh) self.vacuum = Entity.PhysicalGroup(name='Vacuum', mesh=self.my_mesh) self.liquid = Entity.PhysicalGroup(name='Liquid', mesh=self.my_mesh)
def objective(x, sign=-1.0): my_mesh = Mesh() d = x[0] a = x[1] L = x[2] if volume(x) > 10 * V_sk: d1 = 0.05 elif volume(x) > 2 * V_sk: d1 = 0.005 else: d1 = 0.0005 filename = 'my_mesh' # create points p1 = Entity.Point([0., 0., 0., d1]) #fyrsti punktur neðri vinstri # add point to mesh my_mesh.addEntity(p1) #create more points p2 = Entity.Point([0., a / 2, 0., d1]) #2. punktur efri vinstri my_mesh.addEntity(p2) p3 = Entity.Point([t_veggur, a / 2, 0., d1]) #3. punktur efri hægri my_mesh.addEntity(p3) p4 = Entity.Point([t_veggur, (a - d) / 2 + d - a / 2, 0., d1]) #4. punktur niður frá efri hægri my_mesh.addEntity(p4) p5 = Entity.Point([t_veggur + L, (a - d) / 2 + d - a / 2, 0., d1]) #5.punktur endi á ribbu efri my_mesh.addEntity(p5) p6 = Entity.Point([t_veggur + L, 0., 0., d1]) #6. punktur endi á ribbu neðri my_mesh.addEntity(p6) # create curves l1 = Entity.Curve([p1, p2]) #innri bein lína upp l2 = Entity.Curve([p2, p3]) # efri hlið einangrun l3 = Entity.Curve([p3, p4]) # ytri bein lína upp l4 = Entity.Curve([p4, p5]) #ribba bein lína upp l5 = Entity.Curve([p5, p6]) #ribba endi l6 = Entity.Curve([p6, p1]) #ribba bein lína niðri my_mesh.addEntities([l1, l2, l3, l4, l5, l6]) ll1 = Entity.CurveLoop([l1, l2, l3, l4, l5, l6], mesh=my_mesh) s1 = Entity.PlaneSurface([ll1], mesh=my_mesh) g1 = Entity.PhysicalGroup(name='innri') g2 = Entity.PhysicalGroup(name='ytri') g3 = Entity.PhysicalGroup(name='ribba') g4 = Entity.PhysicalGroup(name='einangrun') my_mesh.addEntities([g1, g2, g3, g4]) g1.addEntities([l1]) g2.addEntities([l3, l4, l5, l6]) g4.addEntities([l2]) g3.addEntities([s1]) # set max element size #my_mesh.Options.Mesh.CharacteristicLengthMax = 0.1 # adding Coherence option my_mesh.Coherence = True # write the geofile #os.system('rm .geo') try: my_mesh.writeGeo('{}.geo'.format(filename)) os.system('gmsh {}.geo -2 -o {}.msh'.format(filename, filename)) except: return -0.1 #os.system('gmsh my_mesh.geo') try: xu, y, tri, T, V, q = axifem.axiHeatCond('{}.msh'.format(filename), \ {'ribba':k}, {'ytri':(h_utan,-h_utan*T_inf_utan),'innri':(h_innan,-h_innan*T_inf_innan),'einangrun':(0,0)}) print(sign * q['ytri'][1]) except: return -0.1 return sign * q['ytri'][1]
p4 = Entity.Point([t_veggur, 0., 0., d1]) #4. punktur niður frá efri hægri my_mesh.addEntity(p4) # create curves l1 = Entity.Curve([p1, p2]) #innri bein lína upp l2 = Entity.Curve([p2, p3]) # efri hlið einangrun l3 = Entity.Curve([p3, p4]) # ytri bein lína upp l4 = Entity.Curve([p4, p1]) #neðri lína my_mesh.addEntities([l1, l2, l3, l4]) ll1 = Entity.CurveLoop([l1, l2, l3, l4], mesh=my_mesh) s1 = Entity.PlaneSurface([ll1], mesh=my_mesh) g1 = Entity.PhysicalGroup(name='innri') g2 = Entity.PhysicalGroup(name='ytri') g3 = Entity.PhysicalGroup(name='ribba') g4 = Entity.PhysicalGroup(name='einangrun') my_mesh.addEntities([g1, g2, g3, g4]) g1.addEntities([l1]) g2.addEntities([l3, l4]) g4.addEntities([l2]) g3.addEntities([s1]) # set max element size #my_mesh.Options.Mesh.CharacteristicLengthMax = 0.1 # adding Coherence option my_mesh.Coherence = True # write the geofile my_mesh.writeGeo('my_mesh.geo')
def objective(x, sign=-1.0): print(x) my_mesh = Mesh() filename = 'my_mesh' a = x[1] L = x[2] s = x[3:] # create points p1 = Entity.Point([0., -a / 2, 0., d1]) #fyrsti punktur neðri vinstri p2 = Entity.Point([0., a - a / 2, 0., d1]) #2. punktur efri vinstri p3 = Entity.Point([t_veggur, a - a / 2, 0., d1]) #3. punktur efri hægri pe = [] pn = [] my_mesh.addEntities([p1, p2, p3]) for j in range(0, len(s)): pe.append( Entity.Point( [t_veggur + L / (len(s) - 1) * j, a - s[j] - a / 2, 0., d1])) pn.append( Entity.Point([ t_veggur + L / (len(s) - 1) * (len(s) - j - 1), s[len(s) - 1 - j] - a / 2, 0., d1 ])) my_mesh.addEntities(pe) my_mesh.addEntities(pn) p10 = Entity.Point([t_veggur, 0. - a / 2, 0., d1]) #síðasti punktur neðri hægri my_mesh.addEntities([p10]) # create curves l1 = Entity.Curve([p1, p2]) #innri bein lína upp l2 = Entity.Curve([p2, p3]) # efri hlið einangrun l3 = Entity.Curve([p3, pe[0]]) # ytri bein lína upp le = [] ln = [] my_mesh.addEntities([l1, l2, l3]) for i in range(0, len(pe) - 1): le.append(Entity.Curve([pe[i], pe[i + 1]])) ln.append(Entity.Curve([pe[-1], pn[0]])) for i in range(0, len(pn) - 1): ln.append(Entity.Curve([pn[i], pn[i + 1]])) l9 = Entity.Curve([pn[-1], p10]) l10 = Entity.Curve([p10, p1]) #einangrun neðri my_mesh.addEntities(le) my_mesh.addEntities(ln) my_mesh.addEntities([l9]) my_mesh.addEntities([l10]) lines = [] lines.append(l1) lines.append(l2) lines.append(l3) for line in le: lines.append(line) for line in ln: lines.append(line) lines.append(l9) lines.append(l10) ll1 = Entity.CurveLoop(lines, mesh=my_mesh) s1 = Entity.PlaneSurface([ll1], mesh=my_mesh) g1 = Entity.PhysicalGroup(name='innri') g2 = Entity.PhysicalGroup(name='ytri') g3 = Entity.PhysicalGroup(name='ribba') g4 = Entity.PhysicalGroup(name='einangrun') my_mesh.addEntities([g1, g2, g3, g4]) g1.addEntities([l1]) g2.addEntities([l3]) g2.addEntities(le) g2.addEntities(ln) g2.addEntities([l9]) g4.addEntities([l2, l10]) g3.addEntities([s1]) # set max element size #my_mesh.Options.Mesh.CharacteristicLengthMax = 0.1 # adding Coherence option my_mesh.Coherence = True # write the geofile #os.system('rm .geo') try: my_mesh.writeGeo('{}.geo'.format(filename)) os.system('gmsh {}.geo -2 -o {}.msh'.format(filename, filename)) except: return -0.5 #os.system('gmsh my_mesh.geo') try: xu, y, tri, T, V, q = axifem.axiHeatCond('{}.msh'.format(filename), \ {'ribba':k}, {'ytri':(h_utan,-h_utan*T_inf_utan),'innri':(h_innan,-h_innan*T_inf_innan),'einangrun':(0,0)}) print(sign * q['ytri'][1]) except: return -0.5 return sign * q['ytri'][1]
def objective(x, sign=-1.0): #x = [d,a,L,n,t,r] my_mesh = Mesh() filename = 'my_mesh' d = x[0] a = x[1] L = x[2] n = int(x[3]) t = x[4] r = x[5] dx = x[6] if volume(x) > 10 * V_sk: d1 = 0.05 elif volume(x) > 2 * V_sk: d1 = 0.005 else: d1 = 0.0005 # create points p1 = Entity.Point([0., 0., 0., d1]) #fyrsti punktur neðri vinstri p2 = Entity.Point([0., a / 2, 0., d1]) #2. punktur efri vinstri p3 = Entity.Point([t_veggur, a / 2, 0., d1]) #3. punktur efri hægri pe = [] my_mesh.addEntities([p1, p2, p3]) pe.append(Entity.Point([t_veggur, d / 2, 0., d1])) #fyrsti punktur á ribbu for i in range(0, n): delta_x = dx + i * (dx + t) pe.append(Entity.Point([t_veggur + delta_x, d / 2, 0., d1])) pe.append(Entity.Point([t_veggur + delta_x, r / 2, 0., d1])) pe.append(Entity.Point([t_veggur + delta_x + t, r / 2, 0., d1])) pe.append(Entity.Point([t_veggur + delta_x + t, d / 2, 0., d1])) my_mesh.addEntities(pe) p10 = Entity.Point([t_veggur + dx * n + t * n, 0., 0., d1]) #síðasti punktur neðri hægri my_mesh.addEntities([p10]) # create curves l1 = Entity.Curve([p1, p2]) #innri bein lína upp l2 = Entity.Curve([p2, p3]) # efri hlið einangrun l3 = Entity.Curve([p3, pe[0]]) # ytri bein lína upp le = [] my_mesh.addEntities([l1, l2, l3]) for i in range(0, len(pe) - 1): le.append(Entity.Curve([pe[i], pe[i + 1]])) le.append(Entity.Curve([pe[-1], p10])) #klára ferð niður l9 = Entity.Curve([p10, p1]) #lína niðri my_mesh.addEntities(le) my_mesh.addEntities([l9]) lines = [] lines.append(l1) lines.append(l2) lines.append(l3) for line in le: lines.append(line) lines.append(l9) ll1 = Entity.CurveLoop(lines, mesh=my_mesh) s1 = Entity.PlaneSurface([ll1], mesh=my_mesh) g1 = Entity.PhysicalGroup(name='innri') g2 = Entity.PhysicalGroup(name='ytri') g3 = Entity.PhysicalGroup(name='ribba') g4 = Entity.PhysicalGroup(name='einangrun') my_mesh.addEntities([g1, g2, g3, g4]) g1.addEntities([l1]) g4.addEntities([l2]) g2.addEntities([l3]) for line in le: g2.addEntities([line]) g3.addEntities([s1]) # set max element size #my_mesh.Options.Mesh.CharacteristicLengthMax = 0.1 # adding Coherence option my_mesh.Coherence = True # write the geofile #os.system('rm .geo') try: my_mesh.writeGeo('{}.geo'.format(filename)) os.system('gmsh {}.geo -2 -o {}.msh'.format(filename, filename)) except: return min(-0.5 * (dx + t) * n, -0.5 * random()) #os.system('gmsh my_mesh.geo') try: xu, y, tri, T, V, q = axifem.axiHeatCond('{}.msh'.format(filename), \ {'ribba':k}, {'ytri':(h_utan,-h_utan*T_inf_utan),'innri':(h_innan,-h_innan*T_inf_innan),'einangrun':(0,0)}) print(sign * q['ytri'][1]) if sign * q['ytri'][1] != sign * q['ytri'][1]: return min(-0.5 * (dx + t) * n, -0.5 * random()) except: return min(-0.5 * (dx + t) * n, -0.5 * random()) return sign * q['ytri'][1]
def objective(x, sign=-1.0): time.sleep(0.1) my_mesh = Mesh() filename = 'my_mesh' d = x[0] a = x[1] L = x[2] s1 = x[3] s2 = x[4] s3 = x[5] # create points p1 = Entity.Point([0., -a / 2, 0., d1]) #fyrsti punktur neðri vinstri p2 = Entity.Point([0., a - a / 2, 0., d1]) #2. punktur efri vinstri p3 = Entity.Point([t_veggur, a - a / 2, 0., d1]) #3. punktur efri hægri p4 = Entity.Point([t_veggur, a - s1 - a / 2, 0., d1]) #fyrsti ribbup ef p5 = Entity.Point([t_veggur + L / 2, a - s2 - a / 2, 0., d1]) # 2 ribbup ef p6 = Entity.Point([t_veggur + L, s3 - a / 2, 0., d1]) #síðast ribbup ef p7 = Entity.Point([t_veggur + L, s3 - a / 2, 0., d1]) #síðast ribbup ne p8 = Entity.Point([t_veggur + L / 2, s2 - a / 2, 0, d1]) #2. ribbup ne p9 = Entity.Point([t_veggur, s1 - a / 2, 0., d1]) #1. ribbup ef p10 = Entity.Point([t_veggur, 0. - a / 2, 0., d1]) #síðasti punktur neðri hægri my_mesh.addEntities([p1, p2, p3, p4, p5, p6, p7, p8, p9, p10]) # create curves l1 = Entity.Curve([p1, p2]) #innri bein lína upp l2 = Entity.Curve([p2, p3]) # efri hlið einangrun l3 = Entity.Curve([p3, p4]) # ytri bein lína upp l4 = Entity.Curve([p4, p5]) #ribba 1. 2. p e l5 = Entity.Curve([p5, p6]) #ribba 2. 3. p e l6 = Entity.Curve([p6, p7]) #ribba endi l7 = Entity.Curve([p7, p8]) #ribba 3. 2. n l8 = Entity.Curve([p8, p9]) #ribba 2. 1. n l9 = Entity.Curve([p9, p10]) #neðri bein lína upp l10 = Entity.Curve([p10, p1]) #einangrun neðri my_mesh.addEntities([l1, l2, l3, l4, l5, l6, l7, l8, l9, l10]) ll1 = Entity.CurveLoop([l1, l2, l3, l4, l5, l6, l7, l8, l9, l10], mesh=my_mesh) s1 = Entity.PlaneSurface([ll1], mesh=my_mesh) g1 = Entity.PhysicalGroup(name='innri') g2 = Entity.PhysicalGroup(name='ytri') g3 = Entity.PhysicalGroup(name='ribba') g4 = Entity.PhysicalGroup(name='einangrun') my_mesh.addEntities([g1, g2, g3, g4]) g1.addEntities([l1]) g2.addEntities([l3, l4, l5, l6, l7, l8, l9]) g4.addEntities([l2, l10]) g3.addEntities([s1]) # set max element size #my_mesh.Options.Mesh.CharacteristicLengthMax = 0.1 # adding Coherence option my_mesh.Coherence = True # write the geofile #os.system('rm .geo') my_mesh.writeGeo('{}.geo'.format(filename)) os.system('gmsh {}.geo -2 -o {}.msh'.format(filename, filename)) #os.system('gmsh my_mesh.geo') try: xu, y, tri, T, V, q = axifem.axiHeatCond('{}.msh'.format(filename), \ {'ribba':k}, {'ytri':(h_utan,-h_utan*T_inf_utan),'innri':(h_innan,-h_innan*T_inf_innan),'einangrun':(0,0)}) print(sign * q['ytri'][1]) except: return 0 return sign * q['ytri'][1]