import os import numpy as np from petram.model import Model from .solver_model import Solver import petram.debug as debug dprint1, dprint2, dprint3 = debug.init_dprints('StdSolver') rprint = debug.regular_print('StdSolver') class StdSolver(Solver): can_delete = True has_2nd_panel = False def attribute_set(self, v): v['clear_wdir'] = False v['init_only'] = False v['assemble_real'] = False v['save_parmesh'] = False v['phys_model'] = '' v['init_setting'] = '' super(StdSolver, self).attribute_set(v) return v def panel1_param(self): return [ [ "Initial value setting", self.init_setting, 0, {},
from petram.solver.solver_model import SolverInstance import os import numpy as np from petram.model import Model from petram.solver.solver_model import Solver import petram.debug as debug dprint1, dprint2, dprint3 = debug.init_dprints('DistanceSolver') rprint = debug.regular_print('DistanceSolver') class DistanceSolver(Solver): can_delete = True has_2nd_panel = False def attribute_set(self, v): super(DistanceSolver, self).attribute_set(v) v["solver_type"] = "heat flow" v["p_lap_p"] = 20 v["p_lap_iter"] = 50 v["heat_flow_t"] = 1. v["heat_flow_diffuse_iter"] = 1 v["log_level"] = 1 return v def panel1_param(self): return [ # ["Initial value setting", self.init_setting, 0, {},], [ "physics model", self.phys_model, 0,
import numpy as np from petram.mfem_config import use_parallel if use_parallel: import mfem.par as mfem from mpi4py import MPI num_proc = MPI.COMM_WORLD.size myid = MPI.COMM_WORLD.rank comm = MPI.COMM_WORLD from mfem.common.mpi_debug import nicePrint else: import mfem.ser as mfem import petram.debug as debug dprint1, dprint2, dprint3 = debug.init_dprints("Operators") rprint = debug.regular_print('Operators') class Operator(object): def __repr__(self): return self.__class__.__name__ + "("+",".join(self.sel)+")" class Operator(object): def __init__(self, **kwargs): self._sel = kwargs.pop("sel", "all") self._ssel = kwargs.pop("src", "all") self._sel_mode = kwargs.pop("sel_mode", "domain") self._fes1 = None self._fes2 = None self._engine = None self._transpose = False self._trial_ess_tdof = None
from __future__ import print_function import os import numpy as np from petram.model import Model from .solver_model import Solver import petram.debug as debug dprint1, dprint2, dprint3 = debug.init_dprints("TimeDomainSolver") rprint = debug.regular_print('TimeDependentSolver') from petram.solver.std_solver_model import StdSolver class DerivedValue(StdSolver): def allocate_instance(self, engine): from petram.solver.std_solver_model import StandardSolver instance = StandardSolver(self, engine) instance.set_blk_mask() return instance class TimeStep(): def __init__(self, data): self.data = list(np.atleast_1d(data)) def __call__(self, i): if i >= len(self.data): return self.data[-1]
from petram.solver.solver_model import SolverInstance from petram.model import Model from petram.solver.solver_model import Solver, SolverInstance from petram.solver.std_solver_model import StdSolver from petram.mfem_config import use_parallel if use_parallel: from petram.helper.mpi_recipes import * import mfem.par as mfem else: import mfem.ser as mfem import petram.debug as debug dprint1, dprint2, dprint3 = debug.init_dprints('MGSolver') rprint = debug.regular_print('MGSolver') class CoarseSolver: pass class FineSolver: pass class CoarseIterative(Iterative, CoarseSolver): @classmethod def fancy_menu_name(self): return 'Iterative'
import numpy as np from petram.solver.parametric_scanner import DefaultParametricScanner import petram.debug as debug dprint1, dprint2, dprint3 = debug.init_dprints('PortScanner') dprint0 = debug.regular_print('PortScanner', True) format_memory_usage = debug.format_memory_usage class PortScanner(DefaultParametricScanner): ''' Scanner for port BC amplitude PortScan([1,2,3], amplitude=1, phase=0.0) # user need to load this in the global namelist ''' def __init__(self, *args, **kwargs): amplitude = kwargs.pop("amplitude", 1) self.phase = kwargs.pop("phase", 0.0) if len(args) != 1: assert False, "port id must be specified" self.port = [int(x) for x in args[0]] data = [] for i in range(len(self.port)): amp = np.array([0] * len(self.port)) amp[i] = amplitude data.append(amp)
from __future__ import print_function from itertools import product import os import numpy as np import petram.debug as debug dprint1, dprint2, dprint3 = debug.init_dprints('ParametricScanner') dprint0 = debug.regular_print('ParametricScanner', True) format_memory_usage = debug.format_memory_usage import petram.helper.pickle_wrapper as pickle class DefaultParametricScanner(object): def __init__(self, data=None): if data is None: data = [] self.idx = 0 self.target = None self.set_data(data) def set_data_from_model(self, model): ''' this is called after __init__. model is passed. so that it can be set using model tree ''' pass def set_data(self, data): self._data = data self.max = len(data)
import os import numpy as np from petram.model import Model from petram.solver.solver_model import Solver import petram.debug as debug dprint1, dprint2, dprint3 = debug.init_dprints('SetVar') rprint = debug.regular_print('StdVar') class SetVar(Solver): has_2nd_panel = False def panel1_param(self): return [ [ "physics model", self.phys_model, 0, {}, ], [ "Initial value setting", self.init_setting, 0, {}, ], ] def import_panel1_value(self, v): self.phys_model = str(v[0])
import os import numpy as np from petram.model import Model from petram.solver.solver_model import Solver import petram.debug as debug dprint1, dprint2, dprint3 = debug.init_dprints('StdMeshAdaptSolver') rprint = debug.regular_print('StdMeshAdaptSolver') from petram.solver.std_solver_model import StdSolver, StandardSolver class StdMeshAdaptSolver(StdSolver): def panel1_param(self): return [ #["Initial value setting", self.init_setting, 0, {},], [ "physics model", self.phys_model, 0, {}, ], ["initialize solution only", self.init_only, 3, { "text": "" }], [None, self.clear_wdir, 3, { "text": "clear working directory" }], [ None, self.assemble_real, 3, { "text": "convert to real matrix (complex prob.)" }