def Solve2(mydomain,height): print("Partially constraint solution") l=[1.,1.,1.] l[mydomain.getDim()-1]=height print(l) cf=ContinuousFunction(mydomain) x=cf.getX() #construct exact solution: u_ex=Scalar(1.,cf) for i in range(mydomain.getDim()): u_ex*=x[i]*(2*l[i]-x[i]) #construct mask: msk=Scalar(0.,cf) for i in range(mydomain.getDim()): msk+=whereZero(x[i]) #construct right hand side f=Scalar(0,cf) for i in range(mydomain.getDim()): f_p=Scalar(1,cf) for j in range(mydomain.getDim()): if i==j: f_p*=2. else: f_p*=x[j]*(2*l[j]-x[j]) f+=f_p mypde=Poisson(mydomain) mypde.setTolerance(1.e-10) mypde.setValue(f=f,q=msk) u=mypde.getSolution() error=Lsup(u-u_ex)/Lsup(u_ex) print("error = ",error) return error
def Solve2(mydomain, height): print("Partially constraint solution") l = [1., 1., 1.] l[mydomain.getDim() - 1] = height print(l) cf = ContinuousFunction(mydomain) x = cf.getX() #construct exact solution: u_ex = Scalar(1., cf) for i in range(mydomain.getDim()): u_ex *= x[i] * (2 * l[i] - x[i]) #construct mask: msk = Scalar(0., cf) for i in range(mydomain.getDim()): msk += whereZero(x[i]) #construct right hand side f = Scalar(0, cf) for i in range(mydomain.getDim()): f_p = Scalar(1, cf) for j in range(mydomain.getDim()): if i == j: f_p *= 2. else: f_p *= x[j] * (2 * l[j] - x[j]) f += f_p mypde = Poisson(mydomain) mypde.setTolerance(1.e-10) mypde.setValue(f=f, q=msk) u = mypde.getSolution() error = Lsup(u - u_ex) / Lsup(u_ex) print("error = ", error) return error