def _eval_term( self, sol, term, sops ): """Works for scalar, single unknown terms only!""" expr = term.symbolic['expression'] arg_map = term.symbolic['map'] env = {'x' : sops.Symbol( 'x' ), 'y' : sops.Symbol( 'y' ), 'z' : sops.Symbol( 'z' ), 'dim' : dim} for key, val in arg_map.iteritems(): if val == 'state': env[key] = sol else: term.set_current_group(0) env[key] = term.get_args( [val] )[0] if 'material' in val: # Take the first value - constant in all QPs. aux = env[key][0,0] if nm.prod( aux.shape ) == 1: env[key] = aux.squeeze() else: import sympy env[key] = sympy.Matrix( aux ) # print env self.report( ' <= ', sol ) sops.set_dim( dim ) val = str( eval( expr, sops.__dict__, env ) ) self.report( ' =>', val ) return val
def _eval_term( self, sol, term, args, sops ): """Works for scalar, single unknown terms only!""" expr = term.symbolic['expression'] arg_map = term.symbolic['map'] env = {'x' : sops.Symbol( 'x' ), 'y' : sops.Symbol( 'y' ), 'z' : sops.Symbol( 'z' ), 'dim' : dim} for key, val in arg_map.iteritems(): if val == 'state': env[key] = sol else: env[key] = term.get_args( [val], **args )[0] if val[:8] == 'material': aux = nm.array( env[key] ) if nm.prod( aux.shape ) == 1: env[key] = aux.squeeze() else: import sympy env[key] = sympy.Matrix( aux ) # print env self.report( ' <= ', sol ) sops.set_dim( dim ) val = str( eval( expr, sops.__dict__, env ) ) self.report( ' =>', val ) return val