Example #1
0
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,
                {},
Example #2
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,
Example #3
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]
Example #5
0
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'
Example #6
0
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)
Example #7
0
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)
Example #8
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('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])
Example #9
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.)"
                }