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
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
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
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']
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
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', }
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', }