Esempio n. 1
0
 def setup(self):
     self.lit_int = pyf.Parameter("lit_int",
                                  dtype=pyf.default_integer,
                                  expr="30-10")
     self.sik = pyf.Parameter("sik_10",
                              dtype=pyf.default_integer,
                              expr="selected_int_kind(10)")
     self.srk = pyf.Parameter("srk_10_20",
                              dtype=pyf.default_integer,
                              expr="selected_real_kind(10, lit_int)")
     srk_real = pyf.RealType("srk_10_20", kind="srk_10_20")
     self.real_arg = pyf.Argument("real_arg",
                                  dtype=srk_real,
                                  intent='inout')
     sik_int = pyf.IntegerType("sik_10", kind="sik_10")
     self.int_arg = pyf.Argument("int_arg",
                                 dtype=sik_int,
                                 dimension=[("lit_int", )])
     subr = pyf.Subroutine(name="subr",
                           args=[self.real_arg, self.int_arg],
                           params=[self.lit_int, self.sik, self.srk])
     self.ret_arg = pyf.Argument("func", dtype=srk_real)
     func = pyf.Function(name="func",
                         args=[self.real_arg, self.int_arg],
                         params=[self.lit_int, self.sik, self.srk],
                         return_arg=self.ret_arg)
     self.args = [self.real_arg, self.int_arg]
     self.params = [self.lit_int, self.sik, self.srk]
Esempio n. 2
0
 def setup(self):
     self.lit_int = pyf.Parameter('int_param',
                                  dtype=pyf.default_integer,
                                  expr="10+20")
     self.var_param = pyf.Parameter("var_param",
                                    dtype=pyf.default_integer,
                                    expr="int_param + 30")
     self.call_func = pyf.Parameter("call_func",
                                    dtype=pyf.default_integer,
                                    expr="selected_int_kind(10)")
Esempio n. 3
0
def test_parameter():
    param = pyf.Parameter(name='FOO',
                          dtype=pyf.default_integer,
                          expr='kind(1.0D0)')
    arg = pyf.Argument(name="fooarg",
                       dtype=pyf.RealType("foo_real", kind="FOO"),
                       intent="inout")
    subr = pyf.Subroutine(name="foosubr", args=[arg], params=[param])
Esempio n. 4
0
def _get_param(p_param):
    if not p_param.is_parameter():
        raise ValueError("argument %r is not a parameter" % p_param)
    if not p_param.init:
        raise ValueError("parameter %r does not have an initialization "
                         "expression." % p_param)
    p_typedecl = p_param.get_typedecl()
    dtype = _get_dtype(p_typedecl)
    name = p_param.name
    intent = _get_intent(p_param)
    if not p_param.is_scalar():
        raise RuntimeError("do not support array or derived-type "
                           "parameters at the moment...")
    return pyf.Parameter(name=name, dtype=dtype, expr=p_param.init)
Esempio n. 5
0
 def test_unneeded_param(self):
     unp = pyf.Parameter("unneeded",
                         dtype=pyf.default_integer,
                         expr="srk_10_20 + lit_int")
     sub_am = pyf.ArgManager(args=self.args, params=self.params + [unp])
     eq_(sub_am.arg_declarations(), [
         'integer(kind=fwi_integer_t), '
         'parameter :: lit_int = 30-10', 'integer(kind=fwi_integer_t), '
         'parameter :: sik_10 = selected_int_kind(10)',
         'integer(kind=fwi_integer_t), '
         'parameter :: srk_10_20 = '
         'selected_real_kind(10, lit_int)', 'real(kind=fwr_srk_10_20_t), '
         'intent(inout) :: real_arg', 'integer(kind=fwi_sik_10_t), '
         'dimension(lit_int) :: int_arg'
     ])
Esempio n. 6
0
 def setup(self):
     self.params = [
         pyf.Parameter('p3', pyf.default_integer, 'p1+p2'),
         pyf.Parameter('p2', pyf.default_integer, 'p1**2-1'),
         pyf.Parameter("p1", pyf.default_integer, "1"),
     ]