shared_ptr<DiscreteBoundaryOperator<ResultType>>
ElementaryLocalOperator<BasisFunctionType, ResultType>::assembleWeakFormImpl(
    const Context<BasisFunctionType, ResultType> &context) const {

  std::unique_ptr<LocalAssembler> assembler =
      this->makeAssembler(*context.quadStrategy(), context.assemblyOptions());
  shared_ptr<DiscreteBoundaryOperator<ResultType>> result =
      assembleWeakFormInternalImpl2(*assembler, context);
  tbb::tick_count end = tbb::tick_count::now();

  return result;
}
Esempio n. 2
0
shared_ptr<DiscreteBoundaryOperator<ResultType>>
ElementaryLocalOperator<BasisFunctionType, ResultType>::assembleWeakFormImpl(
    const Context<BasisFunctionType, ResultType> &context) const {
  bool verbose =
      (context.assemblyOptions().verbosityLevel() >= VerbosityLevel::DEFAULT);
  if (verbose)
    std::cout << "Assembling the weak form of operator '" << this->label()
              << "'..." << std::endl;

  tbb::tick_count start = tbb::tick_count::now();
  std::unique_ptr<LocalAssembler> assembler =
      this->makeAssembler(*context.quadStrategy(), context.assemblyOptions());
  shared_ptr<DiscreteBoundaryOperator<ResultType>> result =
      assembleWeakFormInternalImpl2(*assembler, context);
  tbb::tick_count end = tbb::tick_count::now();

  if (verbose)
    std::cout << "Assembly of the weak form of operator '" << this->label()
              << "' took " << (end - start).seconds() << " s" << std::endl;
  return result;
}