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
예제 #2
0
파일: testsBasic.py 프로젝트: certik/sfepy
    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
예제 #4
0
    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
예제 #5
0
    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
예제 #6
0
    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
예제 #7
0
파일: testsBasic.py 프로젝트: certik/sfepy
    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
예제 #8
0
    def test_problem_creation( self ):
        from sfepy.solvers.generic import solve_stationary

        problem, vec, data = solve_stationary( self.conf )
        ok = True
        return ok