Ejemplo n.º 1
0
def _build( optimize=None ):
    """
    Build code
    """
    import cst
    cf = cst.conf.configure()[0]
    if not optimize:
        optimize = cf.optimize
    mode = cf.mode
    if not mode:
        mode = 'm'
    source = 'signal.f90', 'ker_utils.f90', 'cpt_ker.f90'
    new = False
    cwd = os.getcwd()
    bld = os.path.join( os.path.dirname( path ), 'build' ) + os.sep
    os.chdir( path )
    if not os.path.isdir( bld ):
        os.mkdir( bld )
    if 'm' in mode and cf.fortran_mpi:
        for opt in optimize:
            object_ = bld + 'cpt_ker-m' + opt
            compiler = (
                [cf.fortran_mpi] +
                shlex.split( cf.fortran_flags['f'] ) +
                shlex.split( cf.fortran_flags[opt] ) +
                ['-o']
            )
            new |= cst.conf.make( compiler, object_, source )
    if new:
        cst._archive()
    os.chdir( cwd )
    return
Ejemplo n.º 2
0
def _build(optimize=None):
    """
    Build code
    """
    import cst
    cf = cst.conf.configure()[0]
    if not optimize:
        optimize = cf.optimize
    mode = cf.mode
    if not mode:
        mode = 'm'
    source = 'signal.f90', 'ker_utils.f90', 'cpt_ker.f90'
    new = False
    cwd = os.getcwd()
    bld = os.path.join(os.path.dirname(path), 'build') + os.sep
    os.chdir(path)
    if not os.path.isdir(bld):
        os.mkdir(bld)
    if 'm' in mode and cf.fortran_mpi:
        for opt in optimize:
            object_ = bld + 'cpt_ker-m' + opt
            compiler = ([cf.fortran_mpi] + shlex.split(cf.fortran_flags['f']) +
                        shlex.split(cf.fortran_flags[opt]) + ['-o'])
            new |= cst.conf.make(compiler, object_, source)
    if new:
        cst._archive()
    os.chdir(cwd)
    return
Ejemplo n.º 3
0
def _build( mode=None, optimize=None, dtype=None ):
    """
    Build SORD code.
    """
    import cst
    cf = cst.conf.configure()[0]
    if not optimize:
        optimize = cf.optimize
    if not mode:
        mode = cf.mode
    if not mode:
        mode = 'sm'
    if not dtype:
        dtype = cf.dtype
    base = [
        'globals.f90',
        'diffcn.f90',
        'diffnc.f90',
        'hourglass.f90',
        'bc.f90',
        'surfnormals.f90',
        'util.f90',
        'fio.f90',
    ]
    common = [
        'arrays.f90',
        'fieldio.f90',
        'stats.f90',
        'parameters.f90',
        'setup.f90',
        'gridgen.f90',
        'material.f90',
        'source.f90',
        'rupture.f90',
        'resample.f90',
        'checkpoint.f90',
        'timestep.f90',
        'stress.f90',
        'acceleration.f90',
        'sord.f90',
    ]
    dtype = np.dtype( dtype ).str
    dsize = dtype[-1]
    new = False
    cwd = os.getcwd()
    src = os.path.join( path, 'src' )
    bld = os.path.join( os.path.dirname( path ), 'build' ) + os.sep
    os.chdir( src )
    if not os.path.isdir( bld ):
        os.mkdir( bld )
    if 's' in mode:
        source = base + ['serial.f90'] + common
        for opt in optimize:
            object_ = bld + 'sord-s' + opt + dsize
            cmd = (
                [cf.fortran_serial] +
                shlex.split( cf.fortran_flags['f'] ) +
                shlex.split( cf.fortran_flags[opt] )
            )
            if dtype != cf.dtype_f:
                cmd += shlex.split( cf.fortran_flags[dsize] )
            new |= cst.conf.make( cmd + ['-o'], object_, source )
    if 'm' in mode and cf.fortran_mpi:
        source = base + ['mpi.f90'] + common
        for opt in optimize:
            object_ = bld + 'sord-m' + opt + dsize
            cmd = (
                [cf.fortran_mpi] +
                shlex.split( cf.fortran_flags['f'] ) +
                shlex.split( cf.fortran_flags[opt] )
            )
            if dtype != cf.dtype_f:
                cmd += shlex.split( cf.fortran_flags[dsize] )
            new |= cst.conf.make( cmd + ['-o'], object_, source )
    if new:
        cst._archive()
    os.chdir( cwd )
    return