Add set values method for parameters.

pull/493/head
KmolYuan 2019-07-11 20:40:33 +08:00
parent 594ae25483
commit d5ac4039ea
3 changed files with 18 additions and 1 deletions

View File

@ -268,6 +268,7 @@ cdef class SolverSystem:
cdef void free(self)
cpdef void set_group(self, size_t g)
cpdef int group(self)
cpdef void set_params(self, Params p, object params)
cpdef tuple params(self, Params p)
cpdef int dof(self)
cpdef object constraints(self)

View File

@ -1,6 +1,6 @@
# -*- coding: utf-8 -*-
from typing import Tuple, List, Counter
from typing import Tuple, List, Sequence, Counter
from enum import IntEnum, auto
@ -164,6 +164,9 @@ class SolverSystem:
def group(self) -> int:
...
def set_params(self, p: Params, params: Sequence[float]):
...
def params(self, p: Params) -> Tuple[float, ...]:
...

View File

@ -309,6 +309,19 @@ cdef class SolverSystem:
"""Return the current group by integer."""
return <int>self.g
cpdef void set_params(self, Params p, object params):
"""Set the parameters by Params object and sequence object."""
params = tuple(params)
cdef int i = p.param_list.size()
if i != len(params):
raise ValueError(f"number of parameters {len(params)} are not match {i}")
i = 0
cdef Slvs_hParam h
for h in p.param_list:
self.param_list[h].val = params[i]
i += 1
cpdef tuple params(self, Params p):
"""Get the parameters by Params object."""
cdef list param_list = []