def test_get_solution( self ): from sfepy.applications import solve_pde from sfepy.base.base import IndexedStruct import os.path as op ok = True self.solutions = [] for ii, approx_order in enumerate(all_your_bases): fname = filename_meshes[ii] self.conf.filename_mesh = fname fields = {'field_1' : { 'name' : '3_displacement', 'dtype' : 'real', 'shape' : (3,), 'region' : 'Omega', 'approx_order' : approx_order, } } self.conf.edit('fields', fields) self.report('mesh: %s, base: %s' % (fname, approx_order)) status = IndexedStruct() self.report('getpars') self.conf.equations = self.conf.equations_getpars problem, state1 = solve_pde(self.conf, nls_status=status, save_results=False) converged = status.condition == 0 ok = ok and converged self.report('converged: %s' % converged) self.report('matcoefs') self.conf.equations = self.conf.equations_matcoefs problem, state2 = solve_pde(self.conf, nls_status=status, save_results=False) converged = status.condition == 0 ok = ok and converged self.report('converged: %s' % converged) self.report('iso') self.conf.equations = self.conf.equations_iso problem, state3 = solve_pde(self.conf, nls_status=status, save_results=False) converged = status.condition == 0 ok = ok and converged self.report('converged: %s' % converged) self.solutions.append((state1(), state2(), state3())) name = op.join(self.options.out_dir, '_'.join(('test_elasticity_small_strain', op.splitext(op.basename(fname))[0], '%d' % approx_order)) + '.vtk') problem.save_state(name, state1) return ok
def from_conf(conf, options): from sfepy.applications import solve_pde problem, state = solve_pde(conf, output_dir=options.out_dir) test = Test(problem=problem, state=state, conf=conf, options=options) return test
def from_conf(conf, options): from sfepy.applications import solve_pde problem, state = solve_pde(conf, save_results=False) test = Test(problem=problem, state=state, conf=conf, options=options) return test
def from_conf( conf, options ): from sfepy.applications import solve_pde problem, state = solve_pde(conf, save_results=False) test = Test(problem=problem, state=state, conf=conf, options=options) return test
def test_linear_rigid_body_bc(self): import scipy if scipy.version.version == "0.6.0": # This test uses a functionality implemented in scipy svn, which is # missing in scipy 0.6.0 return True from sfepy.base.base import Struct from sfepy.applications import solve_pde from sfepy.base.base import IndexedStruct status = IndexedStruct() problem, state = solve_pde(self.conf, nls_status=status, save_results=False) ok = status.condition == 0 self.report('converged: %s' % ok) out = state.create_output_dict() strain = problem.evaluate('ev_cauchy_strain.i.Y( u )', mode='el_avg') out['strain'] = Struct(name='output_data', mode='cell', data=strain, dofs=None) name = op.join(self.options.out_dir, op.split(self.conf.output_name)[1]) problem.domain.mesh.write(name, io='auto', out=out) ## # Check if rigid body displacements are really rigid should go here. return ok
def test_linear_rigid_body_bc(self): import scipy if scipy.version.version == "0.6.0": # This test uses a functionality implemented in scipy svn, which is # missing in scipy 0.6.0 return True from sfepy.base.base import Struct from sfepy.applications import solve_pde from sfepy.base.base import IndexedStruct status = IndexedStruct() problem, state = solve_pde(self.conf, status=status, save_results=False) ok = status.nls_status.condition == 0 self.report('converged: %s' % ok) out = state.create_output_dict() strain = problem.evaluate('ev_cauchy_strain.i.Y( u )', mode='el_avg') out['strain'] = Struct(name='output_data', mode='cell', data=strain, dofs=None) name = op.join(self.options.out_dir, op.split(self.conf.output_name)[1]) problem.domain.mesh.write(name, io='auto', out=out) ## # Check if rigid body displacements are really rigid should go here. return ok
def test_solution(self): from sfepy.base.base import Struct from sfepy.base.conf import ProblemConf, get_standard_keywords from sfepy.applications import solve_pde, assign_standard_hooks import numpy as nm import os.path as op solutions = {} ok = True for hp, pb_filename in input_names.iteritems(): required, other = get_standard_keywords() input_name = op.join(op.dirname(__file__), pb_filename) test_conf = ProblemConf.from_file(input_name, required, other) name = output_name_trunk + hp solver_options = Struct(output_filename_trunk=name, output_format='vtk', save_ebc=False, save_ebc_nodes=False, save_regions=False, save_regions_as_groups=False, save_field_meshes=False, solve_not=False) assign_standard_hooks(self, test_conf.options.get, test_conf) self.report( 'hyperelastic formulation: %s' % (hp, ) ) status = NLSStatus(conditions=[]) pb, state = solve_pde(test_conf, solver_options, nls_status=status, output_dir=self.options.out_dir, step_hook=self.step_hook, post_process_hook=self.post_process_hook, post_process_hook_final=self.post_process_hook_final) converged = status.condition == 0 ok = ok and converged solutions[hp] = state.get_parts()['u'] self.report('%s solved' % input_name) rerr = 1.0e-3 aerr = nm.linalg.norm(solutions['TL'], ord=None) * rerr self.report('allowed error: rel = %e, abs = %e' % (rerr, aerr)) ok = ok and self.compare_vectors(solutions['TL'], solutions['UL'], label1='TLF', label2='ULF', allowed_error=rerr) ok = ok and self.compare_vectors(solutions['UL'], solutions['ULM'], label1='ULF', label2='ULF_mixed', allowed_error=rerr) return ok
def test_solution(self): from sfepy.base.base import Struct from sfepy.base.conf import ProblemConf, get_standard_keywords from sfepy.applications import solve_pde, assign_standard_hooks import numpy as nm import os.path as op solutions = {} ok = True for hp, pb_filename in six.iteritems(input_names): required, other = get_standard_keywords() input_name = op.join(op.dirname(__file__), pb_filename) test_conf = ProblemConf.from_file(input_name, required, other) name = output_name_trunk + hp solver_options = Struct(output_filename_trunk=name, output_format='vtk', save_ebc=False, save_ebc_nodes=False, save_regions=False, save_regions_as_groups=False, save_field_meshes=False, solve_not=False) assign_standard_hooks(self, test_conf.options.get, test_conf) self.report( 'hyperelastic formulation: %s' % (hp, ) ) status = NLSStatus(conditions=[]) pb, state = solve_pde(test_conf, solver_options, status=status, output_dir=self.options.out_dir, step_hook=self.step_hook, post_process_hook=self.post_process_hook, post_process_hook_final=self.post_process_hook_final) converged = status.nls_status.condition == 0 ok = ok and converged solutions[hp] = state.get_parts()['u'] self.report('%s solved' % input_name) rerr = 1.0e-3 aerr = nm.linalg.norm(solutions['TL'], ord=None) * rerr self.report('allowed error: rel = %e, abs = %e' % (rerr, aerr)) ok = ok and self.compare_vectors(solutions['TL'], solutions['UL'], label1='TLF', label2='ULF', allowed_error=rerr) ok = ok and self.compare_vectors(solutions['UL'], solutions['ULM'], label1='ULF', label2='ULF_mixed', allowed_error=rerr) return ok
def test_input(self): import numpy as nm from sfepy.applications import solve_pde self.report('solving %s...' % self.conf.input_name) status = NLSStatus(conditions=[]) solve_pde(self.test_conf, self.solver_options, nls_status=status, output_dir=self.options.out_dir, step_hook=self.step_hook, post_process_hook=self.post_process_hook, post_process_hook_final=self.post_process_hook_final) self.report('%s solved' % self.conf.input_name) ok = self.check_conditions(nm.array(status.conditions)) return ok
def test_input(self): import numpy as nm from sfepy.applications import solve_pde self.report('solving %s...' % self.conf.input_name) status = IndexedStruct(nls_status=NLSStatus(conditions=[])) solve_pde(self.test_conf, self.solver_options, status=status, output_dir=self.options.out_dir, step_hook=self.step_hook, post_process_hook=self.post_process_hook, post_process_hook_final=self.post_process_hook_final) self.report('%s solved' % self.conf.input_name) ok = self.check_conditions(nm.array(status.nls_status.conditions)) return ok
def generate_images(images_dir, examples_dir): """ Generate images from results of running examples found in `examples_dir` directory. The generated images are stored to `images_dir`, """ from sfepy.applications import solve_pde from sfepy.postprocess.viewer import Viewer from sfepy.postprocess.utils import mlab prefix = output.prefix output_dir = tempfile.mkdtemp() trunk = os.path.join(output_dir, 'result') options = Struct(output_filename_trunk=trunk, output_format='vtk', save_ebc=False, save_ebc_nodes=False, save_regions=False, save_field_meshes=False, save_regions_as_groups=False, solve_not=False) default_views = {'' : {}} ensure_path(images_dir + os.path.sep) view = Viewer('', offscreen=False) for ex_filename in locate_files('*.py', examples_dir): if _omit(ex_filename): continue output.level = 0 output.prefix = prefix ebase = ex_filename.replace(examples_dir, '')[1:] output('trying "%s"...' % ebase) try: problem, state = solve_pde(ex_filename, options=options) except KeyboardInterrupt: raise except: problem = None output('***** failed! *****') if problem is not None: if ebase in custom: views = custom[ebase] else: views = default_views tsolver = problem.get_time_solver() if tsolver.ts is None: suffix = None else: suffix = tsolver.ts.suffix % (tsolver.ts.n_step - 1) filename = problem.get_output_name(suffix=suffix) for suffix, kwargs in views.iteritems(): fig_filename = _get_fig_filename(ebase, images_dir, suffix) fname = edit_filename(filename, suffix=suffix) output('displaying results from "%s"' % fname) disp_name = fig_filename.replace(sfepy.data_dir, '') output('to "%s"...' % disp_name.lstrip(os.path.sep)) view.filename = fname view(scene=view.scene, show=False, is_scalar_bar=True, **kwargs) view.save_image(fig_filename) mlab.clf() output('...done') remove_files(output_dir) output('...done')
def generate_images(images_dir, examples_dir): """ Generate images from results of running examples found in `examples_dir` directory. The generated images are stored to `images_dir`, """ from sfepy.applications import solve_pde from sfepy.postprocess import Viewer from sfepy.postprocess.utils import mlab prefix = output.prefix output_dir = tempfile.mkdtemp() trunk = os.path.join(output_dir, 'result') options = Struct(output_filename_trunk=trunk, output_format='vtk', save_ebc=False, save_ebc_nodes=False, save_regions=False, save_field_meshes=False, save_regions_as_groups=False, solve_not=False) default_views = {'' : {}} ensure_path(images_dir + os.path.sep) view = Viewer('', offscreen=False) for ex_filename in locate_files('*.py', examples_dir): if _omit(ex_filename): continue output.level = 0 output.prefix = prefix ebase = ex_filename.replace(examples_dir, '')[1:] output('trying "%s"...' % ebase) try: problem, state = solve_pde(ex_filename, options=options) except KeyboardInterrupt: raise except: problem = None output('***** failed! *****') if problem is not None: if ebase in custom: views = custom[ebase] else: views = default_views tsolver = problem.get_time_solver() if tsolver.ts is None: suffix = None else: suffix = tsolver.ts.suffix % (tsolver.ts.n_step - 1) filename = problem.get_output_name(suffix=suffix) for suffix, kwargs in views.iteritems(): fig_filename = _get_fig_filename(ebase, images_dir, suffix) fname = edit_filename(filename, suffix=suffix) output('displaying results from "%s"' % fname) disp_name = fig_filename.replace(sfepy.data_dir, '') output('to "%s"...' % disp_name.lstrip(os.path.sep)) view.filename = fname view(scene=view.scene, show=False, is_scalar_bar=True, fig_filename=fig_filename, **kwargs) mlab.clf() output('...done') remove_files(output_dir) output('...done')
def generate_images(images_dir, examples_dir): """ Generate images from results of running examples found in `examples_dir` directory. The generated images are stored to `images_dir`, """ from sfepy.applications import solve_pde from sfepy.postprocess import Viewer from sfepy.postprocess.utils import mlab prefix = output.prefix output_dir = tempfile.mkdtemp() trunk = os.path.join(output_dir, "result") options = Struct( output_filename_trunk=trunk, output_format="vtk", save_ebc=False, save_regions=False, save_field_meshes=False, save_regions_as_groups=False, solve_not=False, ) ensure_path(images_dir + os.path.sep) view = Viewer("", output_dir=output_dir, offscreen=False) for ex_filename in locate_files("*.py", examples_dir): if _omit(ex_filename): continue output.level = 0 output.prefix = prefix ebase = ex_filename.replace(examples_dir, "")[1:] output('trying "%s"...' % ebase) try: problem, state = solve_pde(ex_filename, options=options) except KeyboardInterrupt: raise except: problem = None output("***** failed! *****") if problem is not None: fig_filename = _get_fig_filename(ebase, images_dir)[1] if problem.ts_conf is None: filename = trunk + ".vtk" else: suffix = problem.ts.suffix % problem.ts.step filename = problem.get_output_name(suffix=suffix) output('displaying results from "%s"' % filename) output('to "%s"...' % fig_filename.replace(sfepy.data_dir, "")[1:]) view.filename = filename view(scene=view.scene, show=False, is_scalar_bar=True, fig_filename=fig_filename) mlab.clf() output("...done") remove_files(output_dir) output("...done")