158 const ArrayScalar &z )
160 const int np = z.dimension( 0 );
168 int idx_curp1,idx_curm1;
171 for (
int i=0;i<np;i++) {
172 outputValues(idx_cur,i) = Scalar( 1.0 ) + z(i,0) - z(i,0) + z(i,1) - z(i,1);
177 Teuchos::Array<Scalar> f1(np),f2(np),f3(np);
179 for (
int i=0;i<np;i++) {
180 f1[i] = 0.5 * (1.0+2.0*(2.0*z(i,0)-1.0)+(2.0*z(i,1)-1.0));
181 f2[i] = 0.5 * (1.0-(2.0*z(i,1)-1.0));
182 f3[i] = f2[i] * f2[i];
187 for (
int i=0;i<np;i++) {
188 outputValues(idx_cur,i) = f1[i];
192 for (
int p=1;p<deg;p++) {
196 Scalar a = (2.0*p+1.0)/(1.0+p);
197 Scalar b = p / (p+1.0);
199 for (
int i=0;i<np;i++) {
200 outputValues(idx_curp1,i) = a * f1[i] * outputValues(idx_cur,i)
201 - b * f3[i] * outputValues(idx_curm1,i);
206 for (
int p=0;p<deg;p++) {
209 for (
int i=0;i<np;i++) {
210 outputValues(idxp1,i) = outputValues(idxp0,i)
211 *0.5*(1.0+2.0*p+(3.0+2.0*p)*(2.0*z(i,1)-1.0));
217 for (
int p=0;p<deg-1;p++) {
218 for (
int q=1;q<deg-p;q++) {
224 for (
int i=0;i<np;i++) {
225 outputValues(idxpqp1,i)
226 = (a*(2.0*z(i,1)-1.0)+b)*outputValues(idxpq,i)
227 - c*outputValues(idxpqm1,i);
234 for (
int p=0;p<=deg;p++) {
235 for (
int q=0;q<=deg-p;q++) {
236 for (
int i=0;i<np;i++) {
250 const ArrayScalar &z )
252 const int np = z.dimension(0);
253 const int card = outputValues.dimension(0);
254 FieldContainer<Sacado::Fad::DFad<Scalar> > dZ( z.dimension(0) , z.dimension(1) );
255 for (
int i=0;i<np;i++) {
256 for (
int j=0;j<2;j++) {
257 dZ(i,j) = Sacado::Fad::DFad<Scalar>( z(i,j) );
261 FieldContainer<Sacado::Fad::DFad<Scalar> > dResult(card,np);
263 TabulatorTri<Sacado::Fad::DFad<Scalar>,FieldContainer<Sacado::Fad::DFad<Scalar> >,0>::tabulate( dResult ,
267 for (
int i=0;i<card;i++) {
268 for (
int j=0;j<np;j++) {
269 for (
int k=0;k<2;k++) {
270 outputValues(i,j,k) = dResult(i,j).dx(k);
284 const ArrayScalar &z )
286 const int np = z.dimension(0);
287 const int card = outputValues.dimension(0);
288 FieldContainer<Sacado::Fad::DFad<Scalar> > dZ( z.dimension(0) , z.dimension(1) );
289 for (
int i=0;i<np;i++) {
290 for (
int j=0;j<2;j++) {
291 dZ(i,j) = Sacado::Fad::DFad<Scalar>( z(i,j) );
295 FieldContainer<Sacado::Fad::DFad<Scalar> > dResult(card,np,derivOrder+1);
297 TabulatorTri<Sacado::Fad::DFad<Scalar>,FieldContainer<Sacado::Fad::DFad<Scalar> >,derivOrder-1>::tabulate(dResult ,
301 for (
int i=0;i<card;i++) {
302 for (
int j=0;j<np;j++) {
303 outputValues(i,j,0) = dResult(i,j,0).dx(0);
304 for (
unsigned k=0;k<derivOrder;k++) {
305 outputValues(i,j,k+1) = dResult(i,j,k).dx(1);