Opened 8 years ago

# custom models should use Iq(q, ...) and Iqxy(qx, qy, ...)

Reported by: Owned by: pkienzle minor SasView Next Release +1 SasView SasView Bug Fixing

### Description

The custom model editor defines functions Iq(x, pars…) instead of Iq(q, pars…).

Converting a model from python to C, which we may want to do to make it run on the GPU, the natural step is to first convert it from a python def to a string containing the C definition, so for example the quadratic

```    def Iq(x, a, b, c):
return a*x**2 + b*x +c
```

gets edited to

```    Iq = """
return a*x*x + b*x + c;
"""
```

The C string wrapper for the Iq function assumes that the first parameter is q, so this expands into

```    double Iq(double q, double a, double b, double c);
double Iq(double q, double a, double b, double c) {
return a*x*x + b*x + c;
}
```

and the variable x is not defined.

Furthermore, when moving using contributed models into future releases of sasmodels it will be convenient if they already use q instead of x so they are consistent with existing models.

### comment:1 Changed 8 years ago by pkienzle

• Priority changed from major to minor

### comment:2 Changed 8 years ago by pkienzle

Also, define form_volume, Iq and Iqxy before ER and VR.

When converting from python to C, the first three functions are converted, but not the last two.

### comment:3 Changed 8 years ago by pkienzle

Should also use "from numpy import sqrt" at the top, and use "sqrt(qx*qx + qy*qy)" rather than "numpy.sqrt(x2 + y2)" for the Iqxy function to make the transition to C easier.

### comment:4 Changed 8 years ago by pkienzle

Should not have "from math import *" since functions in math are not vectorized.

The current convention is "import numpy as np" rather than "import numpy". Following conventions makes it easier to borrow code from stack overflow, etc.

### comment:5 Changed 8 years ago by butler

• Milestone changed from SasView 4.0.0 to SasView Next Release +1

As agreed on fortnightly call of June 21, am moving all minor priority tickets to next release (+1) given the resources and time available to get this release out.

Note: See TracTickets for help on using tickets.