コード例 #1
0
def get_homog(coors, mode, pb, micro_filename, **kwargs):
    if not (mode == 'qp'):
        return
    nqp = coors.shape[0]
    coefs_filename = 'coefs_micro'
    coefs_filename = osp.join(pb.conf.options.get('output_dir', '.'),
                              coefs_filename) + '.h5'
    coefs = get_homog_coefs_linear(0,
                                   0,
                                   None,
                                   micro_filename=micro_filename,
                                   coefs_filename=coefs_filename)
    coefs['B'] = coefs['B'][:, nm.newaxis]
    for k in coefs.keys():
        v = coefs[k]
        if type(v) is nm.ndarray:
            if len(v.shape) == 0:
                coefs[k] = v.reshape((1, 1))
            elif len(v.shape) == 1:
                coefs[k] = v[:, nm.newaxis]
        elif isinstance(v, float):
            coefs[k] = nm.array([[v]])

    out = coefs2qp(coefs, nqp)

    return out
コード例 #2
0
def get_homog(coors, mode, pb, micro_filename, **kwargs):
    if not (mode == 'qp'):
        return

    nqp = coors.shape[0]
    coefs_filename = osp.join(pb.conf.options.get('output_dir', '.'),
                              'coefs_piezo.h5')

    def_args = {
        'eps0': pb.conf.eps0,
        'filename_mesh': pb.conf.filename_mesh_micro,
    }

    coefs = get_homog_coefs_linear(0, 0, None,
                                   micro_filename=micro_filename,
                                   coefs_filename=coefs_filename,
                                   define_args=def_args)

    Vf = coefs['V0'] * pb.conf.phi[0] + coefs['V1'] * pb.conf.phi[1]

    out = {
        'A': nm.tile(coefs['A'], (nqp, 1, 1)),
        'Vf': nm.tile(Vf[:, nm.newaxis], (nqp, 1, 1)),
    }

    return out
コード例 #3
0
ファイル: linear_elastic_mM.py プロジェクト: clazaro/sfepy
def get_homog(ts, coors, mode=None, **kwargs):
    global regenerate

    out = get_homog_coefs_linear(ts, coors, mode, regenerate=regenerate,
                                 micro_filename=options['micro_filename'])
    regenerate = False

    return out
コード例 #4
0
def get_homog(ts, coors, mode=None, **kwargs):
    global regenerate

    out = get_homog_coefs_linear(ts,
                                 coors,
                                 mode,
                                 regenerate=regenerate,
                                 micro_filename=options['micro_filename'])
    regenerate = False

    return out
コード例 #5
0
def get_raw_coefs(problem):
    if 'raw_coefs' not in material_cache:
        micro_filename = material_cache['meso_filename']
        coefs_filename = 'coefs_meso'
        coefs_filename = osp.join(problem.conf.options.get('output_dir', '.'),
                                  coefs_filename) + '.h5'
        coefs = get_homog_coefs_linear(0,
                                       0,
                                       None,
                                       micro_filename=micro_filename,
                                       coefs_filename=coefs_filename)
        coefs['B'] = coefs['B'][:, nm.newaxis]
        material_cache['raw_coefs'] = coefs
    return material_cache['raw_coefs']
コード例 #6
0
def get_homog(coors, mode, pb, micro_filename, **kwargs):
    if not (mode == 'qp'):
        return

    nqp = coors.shape[0]
    coefs_filename = 'coefs_poropiezo_%d' % pb.conf.grid0
    coefs_filename = osp.join(pb.conf.options.get('output_dir', '.'),
                              coefs_filename) + '.h5'

    def_args = {
        'grid0': pb.conf.grid0,
        'filename_mesh': pb.conf.filename_mesh_micro,
    }
    coefs = get_homog_coefs_linear(0,
                                   0,
                                   None,
                                   micro_filename=micro_filename,
                                   coefs_filename=coefs_filename,
                                   define_args=def_args)

    for k in coefs.keys():
        v = coefs[k]
        if type(v) is nm.ndarray:
            if len(v.shape) == 0:
                coefs[k] = v.reshape((1, 1))
            elif len(v.shape) == 1:
                coefs[k] = v[:, nm.newaxis]
        elif isinstance(v, float):
            coefs[k] = nm.array([[v]])

    out = coefs2qp(coefs, nqp)

    phi = pb.conf.phi
    Hf, Zf = 0, 0
    for ii in range(2):
        Hf += out['H%d' % ii] * phi[ii]
        Zf += out['Z%d' % ii] * phi[ii]

    out['Hf'] = Hf
    out['Zf'] = Zf

    return out
コード例 #7
0
ファイル: linear_elastic_mM.py プロジェクト: marcinch18/sfepy
            rstrain = pb.evaluate('ev_cauchy_strain.i.%s( u )' % rname,
                                  mode='el_avg')

            recover_micro_hook( pb.conf.options.micro_filename,
                                region, {'strain' : rstrain} )

    return out

def get_elements(coors, domain=None):
    return nm.arange(50, domain.shape.n_el, 100)

functions = {
    'get_elements' : (get_elements,),
    'get_homog' : (lambda ts, coors, mode=None, **kwargs:
                   get_homog_coefs_linear(ts, coors, mode,
                                          micro_filename=options['micro_filename']),)
}

filename_mesh = data_dir + '/meshes/3d/cylinder.mesh'

regions = {
    'Omega' : 'all',
    'Left' : ('vertices in (x < 0.001)', 'facet'),
    'Right' : ('vertices in (x > 0.099)', 'facet'),
    'Recovery' : 'cells by get_elements',
}

materials = {
    'solid' : 'get_homog',
}
コード例 #8
0
ファイル: linear_elastic_mM.py プロジェクト: uberstig/sfepy
                                  mode='el_avg')

            recover_micro_hook(pb.conf.options.micro_filename, region,
                               {'strain': rstrain})

    return out


def get_elements(coors, domain=None):
    return nm.arange(50, domain.shape.n_el, 100)


functions = {
    'get_elements': (get_elements, ),
    'get_homog':
    (lambda ts, coors, mode=None, **kwargs: get_homog_coefs_linear(
        ts, coors, mode, micro_filename=options['micro_filename']),
     )
}

filename_mesh = data_dir + '/meshes/3d/cylinder.mesh'

regions = {
    'Omega': 'all',
    'Left': ('vertices in (x < 0.001)', 'facet'),
    'Right': ('vertices in (x > 0.099)', 'facet'),
    'Recovery': 'cells by get_elements',
}

materials = {
    'solid': 'get_homog',
}