def minimum(f):
    fmin = op2.Global(1, [1000], dtype=float)
    op2.par_loop(op2.Kernel("""
static void minify(double *a, double *b) {
    a[0] = a[0] > fabs(b[0]) ? fabs(b[0]) : a[0];
}
""", "minify"), f.dof_dset.set, fmin(op2.MIN), f.dat(op2.READ))
    return fmin.data[0]
示例#2
0
    def max(f):
        fmax = op2.Global(1, np.finfo(float).min, dtype=float)
        op2.par_loop(op2.Kernel("""
static void maxify(double *a, double *b) {
    a[0] = a[0] < fabs(b[0]) ? fabs(b[0]) : a[0];
}
""", "maxify"), f.dof_dset.set, fmax(op2.MAX), f.dat(op2.READ))
        return fmax.data[0]
示例#3
0
    def min(f):
        fmin = op2.Global(1, np.finfo(float).max, dtype=float)
        op2.par_loop(op2.Kernel("""
void minify(double *a, double *b) {
    a[0] = a[0] > fabs(b[0]) ? fabs(b[0]) : a[0];
}
""", "minify"), f.dof_dset.set, fmin(op2.MIN), f.dat(op2.READ))
        return fmin.data[0]
示例#4
0
 def min(f_in):
     fmin = op2.Global(1, [np.finfo(float).max], dtype=float)
     if len(f_in.ufl_shape) > 0:
         mesh = f_in.function_space().mesh()
         V = FunctionSpace(mesh, "DG", 1)
         f = Function(V).project(sqrt(inner(f_in, f_in)))
     else:
         f = f_in
     op2.par_loop(
         op2.Kernel(
             """void minify(double *a, double *b)
     {
     a[0] = a[0] > fabs(b[0]) ? fabs(b[0]) : a[0];
     }""", "minify"), f.dof_dset.set, fmin(op2.MIN), f.dat(op2.READ))
     return fmin.data[0]