| Line 57... |
Line 57... |
PetscFunctionBegin;
|
PetscFunctionBegin;
|
PetscValidHeaderSpecific(ip,IP_COOKIE,1);
|
PetscValidHeaderSpecific(ip,IP_COOKIE,1);
|
PetscValidHeaderSpecific(x,VEC_COOKIE,2);
|
PetscValidHeaderSpecific(x,VEC_COOKIE,2);
|
PetscValidPointer(norm,3);
|
PetscValidPointer(norm,3);
|
|
|
if (!ip->matrix && ip->bilinear_form == IPINNER_HERMITIAN) {
|
if (!ip->matrix && ip->bilinear_form == IP_INNER_HERMITIAN) {
|
ierr = VecNorm(x,NORM_2,norm);CHKERRQ(ierr);
|
ierr = VecNorm(x,NORM_2,norm);CHKERRQ(ierr);
|
} else {
|
} else {
|
ierr = IPInnerProduct(ip,x,x,&p);CHKERRQ(ierr);
|
ierr = IPInnerProduct(ip,x,x,&p);CHKERRQ(ierr);
|
if (PetscAbsScalar(p)<PETSC_MACHINE_EPSILON)
|
if (PetscAbsScalar(p)<PETSC_MACHINE_EPSILON)
|
PetscInfo(ip,"Zero norm, either the vector is zero or a semi-inner product is being used\n");
|
PetscInfo(ip,"Zero norm, either the vector is zero or a semi-inner product is being used\n");
|
| Line 105... |
Line 105... |
PetscFunctionBegin;
|
PetscFunctionBegin;
|
PetscValidHeaderSpecific(ip,IP_COOKIE,1);
|
PetscValidHeaderSpecific(ip,IP_COOKIE,1);
|
PetscValidHeaderSpecific(x,VEC_COOKIE,2);
|
PetscValidHeaderSpecific(x,VEC_COOKIE,2);
|
PetscValidPointer(norm,3);
|
PetscValidPointer(norm,3);
|
|
|
if (!ip->matrix && ip->bilinear_form == IPINNER_HERMITIAN) {
|
if (!ip->matrix && ip->bilinear_form == IP_INNER_HERMITIAN) {
|
ierr = VecNormBegin(x,NORM_2,norm);CHKERRQ(ierr);
|
ierr = VecNormBegin(x,NORM_2,norm);CHKERRQ(ierr);
|
} else {
|
} else {
|
ierr = IPInnerProductBegin(ip,x,x,&p);CHKERRQ(ierr);
|
ierr = IPInnerProductBegin(ip,x,x,&p);CHKERRQ(ierr);
|
}
|
}
|
|
|
| Line 145... |
Line 145... |
PetscFunctionBegin;
|
PetscFunctionBegin;
|
PetscValidHeaderSpecific(ip,IP_COOKIE,1);
|
PetscValidHeaderSpecific(ip,IP_COOKIE,1);
|
PetscValidHeaderSpecific(x,VEC_COOKIE,2);
|
PetscValidHeaderSpecific(x,VEC_COOKIE,2);
|
PetscValidPointer(norm,3);
|
PetscValidPointer(norm,3);
|
|
|
if (!ip->matrix && ip->bilinear_form == IPINNER_HERMITIAN) {
|
if (!ip->matrix && ip->bilinear_form == IP_INNER_HERMITIAN) {
|
ierr = VecNormEnd(x,NORM_2,norm);CHKERRQ(ierr);
|
ierr = VecNormEnd(x,NORM_2,norm);CHKERRQ(ierr);
|
} else {
|
} else {
|
ierr = IPInnerProductEnd(ip,x,x,&p);CHKERRQ(ierr);
|
ierr = IPInnerProductEnd(ip,x,x,&p);CHKERRQ(ierr);
|
if (PetscAbsScalar(p)<PETSC_MACHINE_EPSILON)
|
if (PetscAbsScalar(p)<PETSC_MACHINE_EPSILON)
|
PetscInfo(ip,"Zero norm, either the vector is zero or a semi-inner product is being used\n");
|
PetscInfo(ip,"Zero norm, either the vector is zero or a semi-inner product is being used\n");
|
| Line 205... |
Line 205... |
|
|
ierr = PetscLogEventBegin(IP_InnerProduct,ip,x,0,0);CHKERRQ(ierr);
|
ierr = PetscLogEventBegin(IP_InnerProduct,ip,x,0,0);CHKERRQ(ierr);
|
ip->innerproducts++;
|
ip->innerproducts++;
|
if (ip->matrix) {
|
if (ip->matrix) {
|
ierr = IPApplyMatrix_Private(ip,x);CHKERRQ(ierr);
|
ierr = IPApplyMatrix_Private(ip,x);CHKERRQ(ierr);
|
if (ip->bilinear_form == IPINNER_HERMITIAN) {
|
if (ip->bilinear_form == IP_INNER_HERMITIAN) {
|
ierr = VecDot(ip->Bx,y,p);CHKERRQ(ierr);
|
ierr = VecDot(ip->Bx,y,p);CHKERRQ(ierr);
|
} else {
|
} else {
|
ierr = VecTDot(ip->Bx,y,p);CHKERRQ(ierr);
|
ierr = VecTDot(ip->Bx,y,p);CHKERRQ(ierr);
|
}
|
}
|
} else {
|
} else {
|
if (ip->bilinear_form == IPINNER_HERMITIAN) {
|
if (ip->bilinear_form == IP_INNER_HERMITIAN) {
|
ierr = VecDot(x,y,p);CHKERRQ(ierr);
|
ierr = VecDot(x,y,p);CHKERRQ(ierr);
|
} else {
|
} else {
|
ierr = VecTDot(x,y,p);CHKERRQ(ierr);
|
ierr = VecTDot(x,y,p);CHKERRQ(ierr);
|
}
|
}
|
}
|
}
|
| Line 255... |
Line 255... |
|
|
ierr = PetscLogEventBegin(IP_InnerProduct,ip,x,0,0);CHKERRQ(ierr);
|
ierr = PetscLogEventBegin(IP_InnerProduct,ip,x,0,0);CHKERRQ(ierr);
|
ip->innerproducts++;
|
ip->innerproducts++;
|
if (ip->matrix) {
|
if (ip->matrix) {
|
ierr = IPApplyMatrix_Private(ip,x);CHKERRQ(ierr);
|
ierr = IPApplyMatrix_Private(ip,x);CHKERRQ(ierr);
|
if (ip->bilinear_form == IPINNER_HERMITIAN) {
|
if (ip->bilinear_form == IP_INNER_HERMITIAN) {
|
ierr = VecDotBegin(ip->Bx,y,p);CHKERRQ(ierr);
|
ierr = VecDotBegin(ip->Bx,y,p);CHKERRQ(ierr);
|
} else {
|
} else {
|
ierr = VecTDotBegin(ip->Bx,y,p);CHKERRQ(ierr);
|
ierr = VecTDotBegin(ip->Bx,y,p);CHKERRQ(ierr);
|
}
|
}
|
} else {
|
} else {
|
if (ip->bilinear_form == IPINNER_HERMITIAN) {
|
if (ip->bilinear_form == IP_INNER_HERMITIAN) {
|
ierr = VecDotBegin(x,y,p);CHKERRQ(ierr);
|
ierr = VecDotBegin(x,y,p);CHKERRQ(ierr);
|
} else {
|
} else {
|
ierr = VecTDotBegin(x,y,p);CHKERRQ(ierr);
|
ierr = VecTDotBegin(x,y,p);CHKERRQ(ierr);
|
}
|
}
|
}
|
}
|
| Line 305... |
Line 305... |
PetscValidHeaderSpecific(y,VEC_COOKIE,3);
|
PetscValidHeaderSpecific(y,VEC_COOKIE,3);
|
PetscValidScalarPointer(p,4);
|
PetscValidScalarPointer(p,4);
|
|
|
ierr = PetscLogEventBegin(IP_InnerProduct,ip,x,0,0);CHKERRQ(ierr);
|
ierr = PetscLogEventBegin(IP_InnerProduct,ip,x,0,0);CHKERRQ(ierr);
|
if (ip->matrix) {
|
if (ip->matrix) {
|
if (ip->bilinear_form == IPINNER_HERMITIAN) {
|
if (ip->bilinear_form == IP_INNER_HERMITIAN) {
|
ierr = VecDotEnd(ip->Bx,y,p);CHKERRQ(ierr);
|
ierr = VecDotEnd(ip->Bx,y,p);CHKERRQ(ierr);
|
} else {
|
} else {
|
ierr = VecTDotEnd(ip->Bx,y,p);CHKERRQ(ierr);
|
ierr = VecTDotEnd(ip->Bx,y,p);CHKERRQ(ierr);
|
}
|
}
|
} else {
|
} else {
|
if (ip->bilinear_form == IPINNER_HERMITIAN) {
|
if (ip->bilinear_form == IP_INNER_HERMITIAN) {
|
ierr = VecDotEnd(x,y,p);CHKERRQ(ierr);
|
ierr = VecDotEnd(x,y,p);CHKERRQ(ierr);
|
} else {
|
} else {
|
ierr = VecTDotEnd(x,y,p);CHKERRQ(ierr);
|
ierr = VecTDotEnd(x,y,p);CHKERRQ(ierr);
|
}
|
}
|
}
|
}
|
| Line 364... |
Line 364... |
|
|
ierr = PetscLogEventBegin(IP_InnerProduct,ip,x,0,0);CHKERRQ(ierr);
|
ierr = PetscLogEventBegin(IP_InnerProduct,ip,x,0,0);CHKERRQ(ierr);
|
ip->innerproducts += n;
|
ip->innerproducts += n;
|
if (ip->matrix) {
|
if (ip->matrix) {
|
ierr = IPApplyMatrix_Private(ip,x);CHKERRQ(ierr);
|
ierr = IPApplyMatrix_Private(ip,x);CHKERRQ(ierr);
|
if (ip->bilinear_form == IPINNER_HERMITIAN) {
|
if (ip->bilinear_form == IP_INNER_HERMITIAN) {
|
ierr = VecMDot(ip->Bx,n,y,p);CHKERRQ(ierr);
|
ierr = VecMDot(ip->Bx,n,y,p);CHKERRQ(ierr);
|
} else {
|
} else {
|
ierr = VecMTDot(ip->Bx,n,y,p);CHKERRQ(ierr);
|
ierr = VecMTDot(ip->Bx,n,y,p);CHKERRQ(ierr);
|
}
|
}
|
} else {
|
} else {
|
if (ip->bilinear_form == IPINNER_HERMITIAN) {
|
if (ip->bilinear_form == IP_INNER_HERMITIAN) {
|
ierr = VecMDot(x,n,y,p);CHKERRQ(ierr);
|
ierr = VecMDot(x,n,y,p);CHKERRQ(ierr);
|
} else {
|
} else {
|
ierr = VecMTDot(x,n,y,p);CHKERRQ(ierr);
|
ierr = VecMTDot(x,n,y,p);CHKERRQ(ierr);
|
}
|
}
|
}
|
}
|
| Line 417... |
Line 417... |
|
|
ierr = PetscLogEventBegin(IP_InnerProduct,ip,x,0,0);CHKERRQ(ierr);
|
ierr = PetscLogEventBegin(IP_InnerProduct,ip,x,0,0);CHKERRQ(ierr);
|
ip->innerproducts += n;
|
ip->innerproducts += n;
|
if (ip->matrix) {
|
if (ip->matrix) {
|
ierr = IPApplyMatrix_Private(ip,x);CHKERRQ(ierr);
|
ierr = IPApplyMatrix_Private(ip,x);CHKERRQ(ierr);
|
if (ip->bilinear_form == IPINNER_HERMITIAN) {
|
if (ip->bilinear_form == IP_INNER_HERMITIAN) {
|
ierr = VecMDotBegin(ip->Bx,n,y,p);CHKERRQ(ierr);
|
ierr = VecMDotBegin(ip->Bx,n,y,p);CHKERRQ(ierr);
|
} else {
|
} else {
|
ierr = VecMTDotBegin(ip->Bx,n,y,p);CHKERRQ(ierr);
|
ierr = VecMTDotBegin(ip->Bx,n,y,p);CHKERRQ(ierr);
|
}
|
}
|
} else {
|
} else {
|
if (ip->bilinear_form == IPINNER_HERMITIAN) {
|
if (ip->bilinear_form == IP_INNER_HERMITIAN) {
|
ierr = VecMDotBegin(x,n,y,p);CHKERRQ(ierr);
|
ierr = VecMDotBegin(x,n,y,p);CHKERRQ(ierr);
|
} else {
|
} else {
|
ierr = VecMTDotBegin(x,n,y,p);CHKERRQ(ierr);
|
ierr = VecMTDotBegin(x,n,y,p);CHKERRQ(ierr);
|
}
|
}
|
}
|
}
|
| Line 470... |
Line 470... |
PetscValidHeaderSpecific(*y,VEC_COOKIE,4);
|
PetscValidHeaderSpecific(*y,VEC_COOKIE,4);
|
PetscValidScalarPointer(p,5);
|
PetscValidScalarPointer(p,5);
|
|
|
ierr = PetscLogEventBegin(IP_InnerProduct,ip,x,0,0);CHKERRQ(ierr);
|
ierr = PetscLogEventBegin(IP_InnerProduct,ip,x,0,0);CHKERRQ(ierr);
|
if (ip->matrix) {
|
if (ip->matrix) {
|
if (ip->bilinear_form == IPINNER_HERMITIAN) {
|
if (ip->bilinear_form == IP_INNER_HERMITIAN) {
|
ierr = VecMDotEnd(ip->Bx,n,y,p);CHKERRQ(ierr);
|
ierr = VecMDotEnd(ip->Bx,n,y,p);CHKERRQ(ierr);
|
} else {
|
} else {
|
ierr = VecMTDotEnd(ip->Bx,n,y,p);CHKERRQ(ierr);
|
ierr = VecMTDotEnd(ip->Bx,n,y,p);CHKERRQ(ierr);
|
}
|
}
|
} else {
|
} else {
|
if (ip->bilinear_form == IPINNER_HERMITIAN) {
|
if (ip->bilinear_form == IP_INNER_HERMITIAN) {
|
ierr = VecMDotEnd(x,n,y,p);CHKERRQ(ierr);
|
ierr = VecMDotEnd(x,n,y,p);CHKERRQ(ierr);
|
} else {
|
} else {
|
ierr = VecMTDotEnd(x,n,y,p);CHKERRQ(ierr);
|
ierr = VecMTDotEnd(x,n,y,p);CHKERRQ(ierr);
|
}
|
}
|
}
|
}
|