Subversion Repositories slepc-dev

Rev

Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 1877 Rev 1940
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);
    }
    }
  }
  }