def call(self, verbose=False, ret_all=None): """ Call the homogenization engine and compute the homogenized coefficients. Parameters ---------- verbose : bool If True, print the computed coefficients. ret_all : bool or None If not None, it can be used to override the 'return_all' option. If True, also the dependencies are returned. Returns ------- coefs : Coefficients instance The homogenized coefficients. dependencies : dict The dependencies, if `ret_all` is True. """ opts = self.app_options ret_all = get_default(ret_all, opts.return_all) volume = get_volume_from_options(opts, self.problem) for vk, vv in volume.iteritems(): output('volume: %s = %.2f' % (vk, vv)) he = HomogenizationEngine( self.problem, self.options, volume = volume ) aux = he( ret_all = ret_all) if ret_all: coefs, dependencies = aux else: coefs = aux coefs = Coefficients( **coefs.to_dict() ) coefs.volume = volume if verbose: prec = nm.get_printoptions()[ 'precision'] if hasattr(opts, 'print_digits'): nm.set_printoptions(precision=opts.print_digits) print coefs nm.set_printoptions(precision=prec) coef_save_name = op.join( opts.output_dir, opts.coefs_filename ) coefs.to_file_hdf5( coef_save_name + '.h5' ) coefs.to_file_txt( coef_save_name + '.txt', opts.tex_names, opts.float_format ) if ret_all: return coefs, dependencies else: return coefs
def call(self, ret_all=False, verbose=False): opts = self.app_options volume = {} if opts.volumes is not None: for vk, vv in opts.volumes.iteritems(): if 'value' in vv: volume[vk] = nm.float64(vv['value']) else: volume[vk] = Volume('volume', self.problem, vv)() else: if opts.volume is not None: if 'value' in opts.volume: vol = nm.float64(opts.volume['value']) else: vol = Volume('volume', self.problem, opts.volume)() volume['total'] = vol for vk, vv in volume.iteritems(): output('volume: %s = %.2f' % (vk, vv)) if hasattr(opts, 'return_all'): ret_all = opts.return_all he = HomogenizationEngine( self.problem, self.options, volume = volume ) aux = he( ret_all = ret_all) if ret_all: coefs, dependencies = aux else: coefs = aux coefs = Coefficients( **coefs.to_dict() ) coefs.volume = volume if verbose: prec = nm.get_printoptions()[ 'precision'] if hasattr(opts, 'print_digits'): nm.set_printoptions(precision=opts.print_digits) print coefs nm.set_printoptions(precision=prec) coef_save_name = op.join( opts.output_dir, opts.coefs_filename ) coefs.to_file_hdf5( coef_save_name + '.h5' ) coefs.to_file_txt( coef_save_name + '.txt', opts.tex_names, opts.float_format ) if ret_all: return coefs, dependencies else: return coefs
def call( self, ret_all = False ): opts = self.app_options if 'value' in opts.volume: volume = nm.float64( opts.options.volume['value'] ) else: volume = Volume( 'volume', self.problem, opts.volume )() output( 'volume: %.2f' % volume ) if hasattr(opts.options, 'return_all'): ret_all = opts.options.return_all he = HomogenizationEngine( self.problem, self.options, volume = volume ) aux = he( ret_all = ret_all) if ret_all: coefs, dependencies = aux else: coefs = aux coefs = Coefficients( **coefs.to_dict() ) coefs.volume = volume prec = nm.get_printoptions()[ 'precision'] if hasattr( opts, 'print_digits' ): nm.set_printoptions( precision = opts.print_digits ) print coefs nm.set_printoptions( precision = prec ) ## pause() coef_save_name = op.join( opts.output_dir, opts.coef_save_name ) coefs.to_file_hdf5( coef_save_name + '.h5' ) coefs.to_file_txt( coef_save_name + '.txt', opts.tex_names, opts.float_format ) if ret_all: return coefs, dependencies else: return coefs
def call(self, ret_all=False, verbose=False): opts = self.app_options volume = get_volume_from_options(opts, self.problem) for vk, vv in volume.iteritems(): output('volume: %s = %.2f' % (vk, vv)) he = HomogenizationEngine( self.problem, self.options, volume = volume ) aux = he( ret_all = ret_all) if ret_all: coefs, dependencies = aux else: coefs = aux coefs = Coefficients( **coefs.to_dict() ) coefs.volume = volume if verbose: prec = nm.get_printoptions()[ 'precision'] if hasattr(opts, 'print_digits'): nm.set_printoptions(precision=opts.print_digits) print coefs nm.set_printoptions(precision=prec) coef_save_name = op.join( opts.output_dir, opts.coefs_filename ) coefs.to_file_hdf5( coef_save_name + '.h5' ) coefs.to_file_txt( coef_save_name + '.txt', opts.tex_names, opts.float_format ) if ret_all: return coefs, dependencies else: return coefs
def call(self, verbose=False, ret_all=None, itime=None, iiter=None): """ Call the homogenization engine and compute the homogenized coefficients. Parameters ---------- verbose : bool If True, print the computed coefficients. ret_all : bool or None If not None, it can be used to override the 'return_all' option. If True, also the dependencies are returned. time_tag: str The time tag used in file names. Returns ------- coefs : Coefficients instance The homogenized coefficients. dependencies : dict The dependencies, if `ret_all` is True. """ opts = self.app_options ret_all = get_default(ret_all, opts.return_all) if not hasattr(self, 'he'): volumes = {} if hasattr(opts, 'volumes') and (opts.volumes is not None): volumes.update(opts.volumes) elif hasattr(opts, 'volume') and (opts.volume is not None): volumes['total'] = opts.volume else: volumes['total'] = 1.0 self.he = HomogenizationEngine(self.problem, self.options, volumes=volumes) if self.micro_coors is not None: self.he.set_micro_coors(self.update_micro_coors(ret_val=True)) multiproc_mode = None if opts.multiprocessing and multi.use_multiprocessing: multiproc, multiproc_mode = multi.get_multiproc(mpi=opts.use_mpi) if multiproc_mode is not None: upd_var = self.app_options.mesh_update_variable if upd_var is not None: uvar = self.problem.create_variables([upd_var])[upd_var] uvar.field.mappings0 = multiproc.get_dict('mappings0', soft_set=True) per.periodic_cache = multiproc.get_dict('periodic_cache', soft_set=True) time_tag = ('' if itime is None else '_t%03d' % itime)\ + ('' if iiter is None else '_i%03d' % iiter) aux = self.he(ret_all=ret_all, time_tag=time_tag) if ret_all: coefs, dependencies = aux # store correctors for coors update if opts.mesh_update_corrector is not None: self.updating_corrs =\ dependencies[opts.mesh_update_corrector] else: coefs = aux if coefs is not None: coefs = Coefficients(**coefs.to_dict()) if verbose: prec = nm.get_printoptions()['precision'] if hasattr(opts, 'print_digits'): nm.set_printoptions(precision=opts.print_digits) print(coefs) nm.set_printoptions(precision=prec) ms_cache = self.micro_state_cache for ii in self.app_options.store_micro_idxs: key = self.get_micro_cache_key('coors', ii, itime) ms_cache[key] = self.micro_coors[ii, ...] coef_save_name = op.join(opts.output_dir, opts.coefs_filename) coefs.to_file_hdf5(coef_save_name + '%s.h5' % time_tag) coefs.to_file_txt(coef_save_name + '%s.txt' % time_tag, opts.tex_names, opts.float_format) if ret_all: return coefs, dependencies else: return coefs