def test_get_solution( self ): from sfepy.solvers.generic import solve_stationary 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( 'isotropic' ) self.conf.equations = self.conf.equations_iso problem, vec1 = solve_stationary(self.conf, nls_status=status) converged = status.condition == 0 ok = ok and converged self.report( 'converged: %s' % converged ) self.report( 'general' ) self.conf.equations = self.conf.equations_general problem, vec2 = solve_stationary(self.conf, nls_status=status) converged = status.condition == 0 ok = ok and converged self.report( 'converged: %s' % converged ) self.solutions.append( (vec1, vec2) ) 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, vec1 ) ## trunk = op.join( self.options.out_dir, ## op.splitext( op.basename( fname ) )[0] ) ## problem.save_field_meshes( trunk ) ## problem.save_regions( trunk ) 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.solvers.generic import solve_stationary from sfepy.base.base import IndexedStruct from sfepy.fem import eval_term_op status = IndexedStruct() problem, vec, data = solve_stationary( self.conf, nls_status = status ) ok = status.condition == 0 self.report( 'converged: %s' % ok ) out = problem.state_to_output( vec ) strain = eval_term_op( vec, 'de_cauchy_strain.i1.Y( u )', problem ) out['strain'] = Struct( name = 'output_data', mode = 'cell', data = strain, dof_types = 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 from_conf(conf, options): from sfepy.solvers.generic import solve_stationary problem, state = solve_stationary(conf) test = Test(problem=problem, state=state, conf=conf, options=options) return test
def test_get_solution( self ): from sfepy.solvers.generic import solve_stationary from sfepy.base.base import IndexedStruct import os.path as op ok = True self.solutions = [] for ii, bases in enumerate( all_your_bases ): fname = filename_meshes[ii] self.conf.filename_mesh = fname self.conf.fields['field_1'].bases = bases self.report( 'mesh: %s, base: %s' % (fname, bases) ) status = IndexedStruct() self.report( 'isotropic' ) self.conf.equations = self.conf.equations_iso problem, vec1, data = solve_stationary( self.conf, nls_status = status ) converged = status.condition == 0 ok = ok and converged self.report( 'converged: %s' % converged ) self.report( 'general' ) self.conf.equations = self.conf.equations_general problem, vec2, data = solve_stationary( self.conf, nls_status = status ) converged = status.condition == 0 ok = ok and converged self.report( 'converged: %s' % converged ) self.solutions.append( (vec1, vec2) ) name = op.join( self.options.out_dir, '_'.join( ('test_elasticity_small_strain', op.splitext( op.basename( fname ) )[0], bases.values()[0] )) + '.vtk' ) problem.save_state( name, vec1 ) ## trunk = op.join( self.options.out_dir, ## op.splitext( op.basename( fname ) )[0] ) ## problem.save_field_meshes( trunk ) ## problem.save_regions( trunk ) return ok
def from_conf(conf, options): from sfepy.solvers.generic import solve_stationary problem, state = solve_stationary(conf) name = op.join(options.out_dir, op.splitext(op.basename(__file__))[0] + '.vtk') problem.save_state(name, state) test = Test(problem=problem, state=state, conf=conf, options=options) return test
def from_conf( conf, options ): import os.path as op from sfepy.solvers.generic import solve_stationary problem, vec, data = solve_stationary( conf ) name = op.join( options.out_dir, op.splitext( op.basename( __file__ ) )[0] + '.vtk' ) problem.save_state( name, vec ) test = Test( problem = problem, vec = vec, data = data, conf = conf, options = options ) return test
def test_input( self ): from sfepy.solvers.generic import solve_stationary from sfepy.base.base import IndexedStruct self.report( 'solving %s...' % self.conf.input_name ) status = IndexedStruct() dpb, vec_dp, data = solve_stationary( self.test_conf, nls_status = status ) ok = status.condition == 0 out = dpb.state_to_output( vec_dp ) name = op.join( self.options.out_dir, op.split( self.conf.output_name )[1] ) dpb.save_state( name, vec_dp ) self.report( '%s solved' % self.conf.input_name ) return ok
def test_problem_creation( self ): from sfepy.solvers.generic import solve_stationary problem, vec, data = solve_stationary( self.conf ) ok = True return ok