Ejemplo n.º 1
0
    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.
Ejemplo n.º 2
0
    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]))
Ejemplo n.º 3
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")
Ejemplo n.º 4
0
        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(
Ejemplo n.º 5
0
    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
Ejemplo n.º 6
0
    #                 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',
Ejemplo n.º 7
0
    #######################################################################
    # 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
Ejemplo n.º 8
0
    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) +