weave.inline(wrapping_code, ['Z_CFIE_J', 'Z_CFIE_M', 'CFIE', 'signSurfObs', 'signSurfSrc', 'N_RWG_test', 'N_RWG_src', 'localTestRWGNumber_CFIE_OK', 'localSrcRWGNumber_M_CURRENT_OK', 'localTestSrcRWGNumber_signedTriangles', 'localTestSrcRWGNumber_nodes', 'nodesCoord', 'w', 'eps_r', 'mu_r', 'TDS_APPROX', 'Z_s', 'MOM_FULL_PRECISION'], type_converters = converters.blitz, include_dirs = ['./code/MoM/'], library_dirs = ['./code/MoM/'], libraries = ['MoM','pthread'], headers = ['<iostream>','<complex>','"Z_EJ_Z_HJ.h"'], compiler = 'gcc', extra_compile_args = ['-O3', '-pthread', '-w']) return Z_CFIE_J if __name__=="__main__": path = './geo' targetName = 'sphere' f = 2.12e9 write_geo(path, targetName, 'lc', c/f/9.1) write_geo(path, targetName, 'lx', 0.1) write_geo(path, targetName, 'ly', 0.1) write_geo(path, targetName, 'lz', 0.1) executeGmsh(path, targetName, 0) z_offset = 0.0 targetDimensions_scaling_factor = 1.0 languageForMeshConstruction = "Python" meshFormat = 'GMSH' meshFileTermination = '.msh' target_mesh = MeshClass(path, targetName, targetDimensions_scaling_factor, z_offset, languageForMeshConstruction, meshFormat, meshFileTermination) target_mesh.constructFromGmshFile() N_RWG = target_mesh.N_RWG w = 2. * pi * f eps_r = 1.
N_RWG = readIntFromDisk(saveDir + "N_RWG.txt") RWGNumber_signedTriangles = readBlitzArrayFromDisk(saveDir + "RWGNumber_signedTriangles.txt", N_RWG, 2, 'i') RWGNumber_edgeVertexes = readBlitzArrayFromDisk(saveDir + "RWGNumber_edgeVertexes.txt", N_RWG, 2, 'i') RWGNumber_oppVertexes = readBlitzArrayFromDisk(saveDir + "RWGNumber_oppVertexes.txt", N_RWG, 2, 'i') is_closed_surface = readASCIIBlitzIntArray1DFromDisk(saveDir + "is_closed_surface.txt") triangles_surfaces = readASCIIBlitzIntArray1DFromDisk(saveDir + "triangles_surfaces.txt") print(" edgeNumber_triangles construction cumulated time = " + str(time.clock() - t10)) saveDir = saveDir[:-1] return triangles_surfaces, is_closed_surface, RWGNumber_signedTriangles, RWGNumber_edgeVertexes, RWGNumber_oppVertexes if __name__=="__main__": path = './geo' targetName = 'strip' f = 2.12e9 write_geo(path, targetName, 'lc', c/f/10.0) write_geo(path, targetName, 'lx', 0.07) write_geo(path, targetName, 'ly', 0.07) write_geo(path, targetName, 'lz', 0.02) write_geo(path, targetName, 'w', 0.02) executeGmsh(path, targetName, 0) targetDimensions_scaling_factor = 1.0 z_offset = 0.0 t0 = time.clock() #vertexes_coord, triangle_vertexes, triangles_physicalSurface = read_mesh_GMSH_1(os.path.join(path, targetName + '.msh'), targetDimensions_scaling_factor, z_offset) vertexes_coord, triangle_vertexes, triangles_physicalSurface = read_mesh_GMSH_2(os.path.join(path, targetName + '.msh'), targetDimensions_scaling_factor, z_offset) print("reading mesh time = " + str(time.clock() - t0) + " seconds") triangles_surfaces_C, is_closed_surface_C, RWGNumber_signedTriangles_C, RWGNumber_edgeVertexes_C, RWGNumber_oppVertexes_C = edges_computation_C(triangle_vertexes, vertexes_coord) print(" Number of RWG = " + str(RWGNumber_oppVertexes_C.shape[0]))
if 'geo' not in os.listdir(simuDirName): os.mkdir(os.path.join(simuDirName, 'geo')) geoDirName = os.path.join(simuDirName, 'geo') sys.path.append(os.path.abspath(inputDirName)) exec('from ' + simuParams + ' import *') # JPA : si l'utilisateur n'a pas donne de chemin vers la geometrie, on cherche dans le repertoire de donnees if params_simu.pathToTarget == "": params_simu.pathToTarget = inputDirName filename = 'GMSHcommand.sh' if params_simu.meshToMake: os.system("cp " + os.path.join(params_simu.pathToTarget, params_simu.targetName + '.geo') + ' ' + geoDirName) write_geo(geoDirName, params_simu.targetName, 'lc', c / params_simu.f * params_simu.lc_factor) write_geo(geoDirName, params_simu.targetName, 'lx', params_simu.lx) write_geo(geoDirName, params_simu.targetName, 'ly', params_simu.ly) write_geo(geoDirName, params_simu.targetName, 'lz', params_simu.lz) isGeoFileThere(geoDirName, params_simu.targetName) f = open(filename, 'w') GMSH_command = 'rm -f ' + os.path.join( geoDirName, params_simu.targetName) + '.msh* \n' GMSH_command += 'gmsh -2 -algo del2d -rand 1e-06 ' + os.path.join( geoDirName, params_simu.targetName ) + '.geo' + ' -string "General.ExpertMode=1;"\n' f.write(GMSH_command) f.write("exit 0" + "\n") else: f = open(filename, 'w') f.write("exit 0" + "\n")
nodesIndexes = (triangle_vertexes[index] + 1) stringToWrite = stringRightJustifiedScalarInFixedSpace( int(nodesIndexes[0]), 10) stringToWrite += stringRightJustifiedScalarInFixedSpace( int(nodesIndexes[1]), 10) stringToWrite += stringRightJustifiedScalarInFixedSpace( int(nodesIndexes[2]), 10) + '\n' f.write(stringToWrite) f.write(stringRightJustifiedScalarInFixedSpace(-1, 6) + '\n') if __name__ == "__main__": path = './geo' targetName = 'cubi' f = 2.12e9 write_geo(path, targetName, 'lc', c / f / 10) write_geo(path, targetName, 'lx', .1) write_geo(path, targetName, 'ly', .1) write_geo(path, targetName, 'lz', .1) executeGmsh(path, targetName, 0) z_offset = 0.0 vertexes_coord, triangle_vertexes = read_mesh( os.path.join(path, targetName + '.msh'), z_offset) triangle_edgesNumbers, edgeNumber_vertexes, edgeNumber_triangles, triangle_adjacentTriangles, is_triangle_adjacentTriangles_via_junction = edges_computation( triangle_vertexes, vertexes_coord) T = len(triangle_adjacentTriangles) print "number of triangles T =", T print " reordering triangles for normals coherency...", t0 = time.clock() triangles_surfaces = reorder_triangle_vertexes(
global count count = count + 1 if __name__ == "__main__": path = './geo' targetName = 'sphere2' # first resonances for the sphere: f = c * Z/(2*pi*a), where Z is a zero of J Bessel function # Z = 4.493409375, 5.763459195, 6.987932, 8.18256145, 9.35581211, 10.5128354 # respectively for orders 0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5 # Frob-EFIE convergence is difficult or impossible at the corresponding frequencies, # especially for order 5.5, a = 0.3, for which f = 1487993627.3926289, tol = 1e-3 # However, Frob-CFIE convergence is more than OK: it is guaranteed f = 0.3e9 fileName = targetName write_geo(path, fileName, 'lc', c / f / 9.5) write_geo(path, fileName, 'lx', 1.0) write_geo(path, fileName, 'ly', 0.07) write_geo(path, fileName, 'lz', 0.07) executeGmsh(path, targetName, 0) z_offset = 0.0 targetDimensions_scaling_factor = 1.0 languageForMeshConstruction = "C++" meshFormat = 'GMSH' meshFileTermination = '.msh' target_mesh = MeshClass(path, targetName, targetDimensions_scaling_factor, z_offset, languageForMeshConstruction, meshFormat, meshFileTermination) target_mesh.constructFromGmshFile() N_RWG = target_mesh.N_RWG
# compiler = 'gcc', # extra_compile_args = ['-O3', '-pthread', '-w']) # encountered_vertexes = compress(encountered_vertexesTmp>-1, encountered_vertexesTmp, axis=0) # del encountered_vertexesTmp # oldVertex_to_newVertex = zeros(max_encountered_vertexes+1, 'i') # oldVertex_to_newVertex[encountered_vertexes] = range(len(encountered_vertexes)) # triangles_vertexes = take(oldVertex_to_newVertex, triangles_vertexes, axis=0) # vertexes_coord = take(vertexes_coord, encountered_vertexes, axis=0) return vertexes_coord.astype('d'), triangles_vertexes.astype( 'i'), triangles_physicalSurface.astype('i') if __name__ == "__main__": path = './geo' targetName = 'sphere' write_geo(path, targetName, 'lc', 0.05) write_geo(path, targetName, 'lx', 0.051) write_geo(path, targetName, 'ly', 0.1) write_geo(path, targetName, 'lz', 0.2) write_geo(path, targetName, 'frill_width', 0.02) executeGmsh(path, targetName, 0) z_offset = 0.0 targetDimensions_scaling_factor = 1.0 t0 = time.time() vertexes_coord_1, triangles_vertexes_1, triangles_physicalSurface_1 = read_mesh_GMSH_1( os.path.join(path, targetName) + '.msh', targetDimensions_scaling_factor, z_offset) print("time for classical *.msh file reading = " + str(time.time() - t0)) t0 = time.time() vertexes_coord_2, triangles_vertexes_2, triangles_physicalSurface_2 = read_mesh_GMSH_2( os.path.join(path, targetName) + '.msh',
####################################################################### # initialization ####################################################################### os.system("rm -rf tmp*") # now we load the parameters of the simulation filename = "./parameters/parameters.ini" params_simu = loadParamsSimu(filename) # and now the scaling tests parameter_values = [0.1, 0.11, 0.12] #parameter_values = [0.3, 0.4, 0.5, 0.75, 1.0, 1.25, 1.5, 1.75, 2.2] res = resClass(parameter_values) for index in range(len(res.parameter_values)): fileName = os.path.join(params_simu.pathToTarget, params_simu.targetName) write_geo(params_simu.pathToTarget, params_simu.targetName, 'lc', c / params_simu.f / 10.) write_geo(params_simu.pathToTarget, params_simu.targetName, 'lx', res.parameter_values[index]) write_geo(params_simu.pathToTarget, params_simu.targetName, 'ly', res.parameter_values[index]) write_geo(params_simu.pathToTarget, params_simu.targetName, 'lz', res.parameter_values[index]) executeGmsh(params_simu.pathToTarget, params_simu.targetName, 0) targetDimensions_scaling_factor = 1.0 target_mesh = MeshClass(params_simu.pathToTarget, params_simu.targetName, targetDimensions_scaling_factor, params_simu.z_offset, params_simu.languageForMeshConstruction) N_RWG = target_mesh.E
global count count = count + 1 if __name__ == "__main__": path = './geo' targetName = 'sphere2' # first resonances for the sphere: f = c * Z/(2*pi*a), where Z is a zero of J Bessel function # Z = 4.493409375, 5.763459195, 6.987932, 8.18256145, 9.35581211, 10.5128354 # respectively for orders 0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5 # Frob-EFIE convergence is difficult or impossible at the corresponding frequencies, # especially for order 5.5, a = 0.3, for which f = 1487993627.3926289, tol = 1e-3 # However, Frob-CFIE convergence is more than OK: it is guaranteed f = .5e9 fileName = targetName write_geo(path, fileName, 'lc', c / f / 10.) write_geo(path, fileName, 'lx', 0.1) write_geo(path, fileName, 'ly', 0.1) write_geo(path, fileName, 'lz', 0.1) executeGmsh(path, targetName, 0) z_offset = 0.0 targetDimensions_scaling_factor = 1.0 languageForMeshConstruction = "C++" meshFormat = 'GMSH' meshFileTermination = '.msh' target_mesh = MeshClass(path, targetName, targetDimensions_scaling_factor, z_offset, languageForMeshConstruction, meshFormat, meshFileTermination) target_mesh.constructFromGmshFile() N_RWG = target_mesh.N_RWG print("average RWG length = " + str(target_mesh.average_RWG_length) +