BOOL := { true; false }
-REAL_SCALARS := { double; float; long double }
+REAL_SCALARS := { double; float }
COMPLEX_SCALARS := { std::complex<double>;
- std::complex<float>;
- std::complex<long double> }
+ std::complex<float> }
DERIVATIVE_TENSORS := { double;
Tensor<1,deal_II_dimension>;
SERIAL_VECTORS := { Vector<double>;
Vector<float> ;
- Vector<long double>;
BlockVector<double>;
BlockVector<float>;
- BlockVector<long double>;
parallel::distributed::Vector<double>;
parallel::distributed::Vector<float> ;
- parallel::distributed::Vector<long double>;
parallel::distributed::BlockVector<double>;
parallel::distributed::BlockVector<float> ;
- parallel::distributed::BlockVector<long double>;
@DEAL_II_EXPAND_TRILINOS_VECTOR@;
@DEAL_II_EXPAND_TRILINOS_MPI_VECTOR@;
REAL_SERIAL_VECTORS := { Vector<double>;
Vector<float> ;
- Vector<long double>;
BlockVector<double>;
BlockVector<float>;
- BlockVector<long double>;
parallel::distributed::Vector<double>;
parallel::distributed::Vector<float> ;
- parallel::distributed::Vector<long double>;
parallel::distributed::BlockVector<double>;
parallel::distributed::BlockVector<float> ;
- parallel::distributed::BlockVector<long double>;
@DEAL_II_EXPAND_TRILINOS_VECTOR@;
@DEAL_II_EXPAND_TRILINOS_MPI_VECTOR@;
@DEAL_II_EXPAND_PETSC_VECTOR_REAL@;
- @DEAL_II_EXPAND_PETSC_MPI_VECTOR_REAL@;
+ @DEAL_II_EXPAND_PETSC_MPI_VECTOR_REAL@;
@DEAL_II_EXPAND_TRILINOS_BLOCKVECTOR@;
@DEAL_II_EXPAND_TRILINOS_MPI_BLOCKVECTOR@;
VECTORS_WITH_MATRIX := { Vector<double>;
Vector<float> ;
- Vector<long double>;
BlockVector<double>;
BlockVector<float>;
- BlockVector<long double>;
parallel::distributed::Vector<double>;
* matrix number type is used.
*
* @note Instantiations for this template are provided for <tt>@<float@>,
- * @<double@>, @<long double@>, @<std::complex@<float@>@>,
- * @<std::complex@<double@>@>, @<std::complex@<long double@>@></tt>; others
- * can be generated in application programs (see the section on
- * @ref Instantiations
- * in the manual).
+ * @<double@>, @<std::complex@<float@>@>,
+ * @<std::complex@<double@>@></tt>. Others can be generated in application
+ * programs (see the section on @ref Instantiations in the manual).
*
* @author Guido Kanschat, Franz-Theo Suttmeier, Wolfgang Bangerth, 1993-2004
*/
* suitable for numerical computations.
*
* @note Instantiations for this template are provided for <tt>@<float@>,
- * @<double@>, @<long double@>, @<std::complex@<float@>@>,
- * @<std::complex@<double@>@>, @<std::complex@<long double@>@></tt>; others
- * can be generated in application programs (see the section on
- * @ref Instantiations
- * in the manual).
+ * @<double@>, @<std::complex@<float@>@>, @<std::complex@<double@>@></tt>;
+ * others can be generated in application programs (see the section on
+ * @ref Instantiations in the manual).
*
* @author Guido Kanschat, Franz-Theo Suttmeier, Wolfgang Bangerth
*/
*
*
* @note Instantiations for this template are provided for <tt>@<float@>,
- * @<double@>, @<long double@>, @<std::complex@<float@>@>,
- * @<std::complex@<double@>@>, @<std::complex@<long double@>@></tt>; others
- * can be generated in application programs (see the section on
- * @ref Instantiations
- * in the manual).
+ * @<double@>, @<std::complex@<float@>@>, @<std::complex@<double@>@></tt>;
+ * others can be generated in application programs (see the section on
+ * @ref Instantiations in the manual).
*
* @author Luca Heltai, 2009
*/
Assert(false,ExcNotImplemented());
}
- template <>
- void
- inline
- create_boundary_mass_matrix_1<1,3,long double> (DoFHandler<1,3>::active_cell_iterator const &/*cell*/,
- MatrixCreator::internal::AssemblerBoundary::Scratch const &,
- MatrixCreator::internal::AssemblerBoundary::CopyData<DoFHandler<1,
- 3>,long double > &/*copy_data*/,
- Mapping<1,3> const &,
- FiniteElement<1,3> const &,
- Quadrature<0> const &,
- std::map<types::boundary_id, const Function<3,long double>*> const &/*boundary_functions*/,
- Function<3,long double> const *const /*coefficient*/,
- std::vector<unsigned int> const &/*component_mapping*/)
- {
- Assert(false,ExcNotImplemented());
- }
-
}
bool , \
internal::bool2type<true>) const
-MATRIX_FUNCTIONS(SparseMatrix<long double>);
MATRIX_FUNCTIONS(SparseMatrix<double>);
MATRIX_FUNCTIONS(SparseMatrix<float>);
MATRIX_FUNCTIONS(FullMatrix<double>);
MATRIX_FUNCTIONS(FullMatrix<float>);
MATRIX_FUNCTIONS(FullMatrix<std::complex<double> >);
MATRIX_FUNCTIONS(SparseMatrix<std::complex<double> >);
-MATRIX_FUNCTIONS(SparseMatrix<std::complex<long double> >);
MATRIX_FUNCTIONS(SparseMatrix<std::complex<float> >);
BLOCK_MATRIX_FUNCTIONS(BlockSparseMatrix<double>);
SCRATCH_INITIALIZER(double,double);
SCRATCH_INITIALIZER(float,float);
- SCRATCH_INITIALIZER(long double,ldouble);
SCRATCH_INITIALIZER(std::complex<double>,cdouble);
SCRATCH_INITIALIZER(std::complex<float>,cfloat);
- SCRATCH_INITIALIZER(std::complex<long double>,cldouble);
#undef SCRATCH_INITIALIZER
}
#include "full_matrix.inst"
+// instantiate for long double manually because we use it in a few places
+// inside the library
+template class FullMatrix<long double>;
+template void FullMatrix<long double>::invert<long double> (const FullMatrix<long double> &);
+template void FullMatrix<long double>::mmult<long double> (FullMatrix<long double> &, const FullMatrix<long double> &, const bool) const;
+template void FullMatrix<long double>::Tmmult<long double> (FullMatrix<long double> &, const FullMatrix<long double> &, const bool) const;
+template void FullMatrix<long double>::mTmult<long double> (FullMatrix<long double> &, const FullMatrix<long double> &, const bool) const;
+template void FullMatrix<long double>::TmTmult<long double> (FullMatrix<long double> &, const FullMatrix<long double> &, const bool) const;
+template void FullMatrix<long double>::vmult<long double>(Vector<long double> &, const Vector<long double> &, bool) const;
+template void FullMatrix<long double>::Tvmult<long double>(Vector<long double> &, const Vector<long double> &, bool) const;
+template void FullMatrix<long double>::add<long double> (const long double, const FullMatrix<long double> &);
+
// This is needed if PETSc was compiled with complex, though, it may
// be used elsewhere too.
template void dealii::FullMatrix<double>::vmult<std::complex<double> >(dealii::Vector<std::complex<double> > &, dealii::Vector<std::complex<double> > const &, bool) const;
TEMPL_OP_EQ(double,float);
TEMPL_OP_EQ(float,double);
-TEMPL_OP_EQ(long double,double);
-TEMPL_OP_EQ(double,long double);
-
-TEMPL_OP_EQ(long double,float);
-TEMPL_OP_EQ(float,long double);
-
-
TEMPL_OP_EQ(std::complex<double>,std::complex<float>);
TEMPL_OP_EQ(std::complex<float>,std::complex<double>);
-TEMPL_OP_EQ(std::complex<long double>,std::complex<double>);
-TEMPL_OP_EQ(std::complex<double>,std::complex<long double>);
-
-TEMPL_OP_EQ(std::complex<long double>,std::complex<float>);
-TEMPL_OP_EQ(std::complex<float>,std::complex<long double>);
-
#undef TEMPL_OP_EQ
DEAL_II_NAMESPACE_CLOSE
template
void Vector<int>::reinit<double>(const Vector<double> &, const bool);
+// instantiate for long double manually because we use it in a few places:
+template class Vector<long double>;
+template long double Vector<long double>::operator *<long double>(const Vector<long double> &) const;
+
// do a few functions that currently don't fit the scheme because they have
// two template arguments that need to be different (the case of same
TEMPL_COPY_CONSTRUCTOR(double,float);
TEMPL_COPY_CONSTRUCTOR(float,double);
-TEMPL_COPY_CONSTRUCTOR(long double,double);
-TEMPL_COPY_CONSTRUCTOR(double,long double);
-
-TEMPL_COPY_CONSTRUCTOR(long double,float);
-TEMPL_COPY_CONSTRUCTOR(float,long double);
-
TEMPL_COPY_CONSTRUCTOR(std::complex<double>,std::complex<float>);
TEMPL_COPY_CONSTRUCTOR(std::complex<float>,std::complex<double>);
-TEMPL_COPY_CONSTRUCTOR(std::complex<long double>,std::complex<double>);
-TEMPL_COPY_CONSTRUCTOR(std::complex<double>,std::complex<long double>);
-
-TEMPL_COPY_CONSTRUCTOR(std::complex<long double>,std::complex<float>);
-TEMPL_COPY_CONSTRUCTOR(std::complex<float>,std::complex<long double>);
-
#endif
#undef TEMPL_COPY_CONSTRUCTOR
TEMPL_OP_EQ(double,float);
TEMPL_OP_EQ(float,double);
-TEMPL_OP_EQ(long double,double);
-TEMPL_OP_EQ(double,long double);
-
-TEMPL_OP_EQ(long double,float);
-TEMPL_OP_EQ(float,long double);
-
TEMPL_OP_EQ(std::complex<double>,std::complex<float>);
TEMPL_OP_EQ(std::complex<float>,std::complex<double>);
-TEMPL_OP_EQ(std::complex<long double>,std::complex<double>);
-TEMPL_OP_EQ(std::complex<double>,std::complex<long double>);
-
-TEMPL_OP_EQ(std::complex<long double>,std::complex<float>);
-TEMPL_OP_EQ(std::complex<float>,std::complex<long double>);
-
#undef TEMPL_OP_EQ
DEAL_II_NAMESPACE_CLOSE
template struct internal::MatrixFreeFunctions::ShapeInfo<double>;
template struct internal::MatrixFreeFunctions::ShapeInfo<float>;
-template struct internal::MatrixFreeFunctions::ShapeInfo<long double>;
DEAL_II_NAMESPACE_CLOSE
template void internal::MatrixFreeFunctions::ShapeInfo<float>::reinit
<deal_II_dimension>(const Quadrature<1> &, const FiniteElement
<deal_II_dimension,deal_II_dimension> &, const unsigned int);
- template void internal::MatrixFreeFunctions::ShapeInfo<long double>::reinit
- <deal_II_dimension>(const Quadrature<1> &, const FiniteElement
- <deal_II_dimension,deal_II_dimension> &, const unsigned int);
#endif
}
template class LocalResults<float>;
template class LocalResults<double>;
- template class LocalResults<long double>;
template <int dim, int spacedim, typename number>
LocalIntegrator<dim, spacedim, number>::LocalIntegrator ()
template void IntegrationInfo<deal_II_dimension>::fill_local_data(
const DoFInfo<deal_II_dimension, deal_II_dimension, double>&, bool);
- template class DoFInfo<deal_II_dimension,deal_II_dimension,long double>;
- template class DoFInfoBox<deal_II_dimension,
- DoFInfo<deal_II_dimension,deal_II_dimension,long double> >;
-
- template void IntegrationInfo<deal_II_dimension>::fill_local_data(
- const DoFInfo<deal_II_dimension, deal_II_dimension, long double>&, bool);
-
// template void IntegrationInfo<deal_II_dimension>
// ::initialize<FEValues<deal_II_dimension> >(
// const FiniteElement<deal_II_dimension>&, const Mapping<deal_II_dimension>&,
// explicit instantiation
#include "mg_level_global_transfer.inst"
-// create two additional instantiations currently not supported by the
-// automatic template instantiation scheme
+// create an additional instantiation currently not supported by the automatic
+// template instantiation scheme
template class MGLevelGlobalTransfer<parallel::distributed::Vector<float> >;
-template class MGLevelGlobalTransfer<parallel::distributed::Vector<long double> >;
DEAL_II_NAMESPACE_CLOSE
template
void MGLevelGlobalTransfer< parallel::distributed::Vector<float> >::fill_and_communicate_copy_indices<deal_II_dimension,deal_II_dimension>(
const DoFHandler<deal_II_dimension,deal_II_dimension> &mg_dof);
- template
- void MGLevelGlobalTransfer< parallel::distributed::Vector<long double> >::fill_and_communicate_copy_indices<deal_II_dimension,deal_II_dimension>(
- const DoFHandler<deal_II_dimension,deal_II_dimension> &mg_dof);
}
for (deal_II_dimension : DIMENSIONS; S1, S2 : REAL_SCALARS)
MyFunction<1, std::complex<double> > function_1;
MyFunction<2, std::complex<float> > function_2;
- MyFunction<3, std::complex<long double> > function_3;
MyTensorFunction<1, 1, std::complex<double> > tensor_function_1;
MyTensorFunction<2, 2, std::complex<float> > tensor_function_2;
- MyTensorFunction<3, 3, std::complex<long double> > tensor_function_3;
deallog << "OK" << std::endl;
}
check_norms<float>();
check_norms<double>();
- check_norms<long double>();
check_norms<std::complex<double> >();
deallog << "OK" << std::endl;
}
-
-
check<float>();
check<double>();
- check<long double>();
check<std::complex<double> >();
deallog << "OK" << std::endl;
}
-
-
DEAL::Add and dot should be 26.50, is 26.50
DEAL::Add and dot should be 39.61, is 39.61
DEAL::Add and dot should be 52.71, is 52.71
-DEAL::Add and dot should be 0.30, is 0.30
-DEAL::Add and dot should be 13.40, is 13.40
-DEAL::Add and dot should be 26.50, is 26.50
-DEAL::Add and dot should be 39.61, is 39.61
-DEAL::Add and dot should be 52.71, is 52.71
DEAL::Add and dot should be (0.30,0.00), is (0.30,0.00)
DEAL::Add and dot should be (13.40,0.00), is (13.40,0.00)
DEAL::Add and dot should be (26.50,0.00), is (26.50,0.00)
check_norms<float>();
check_norms<double>();
- check_norms<long double>();
check_complex_norms<double>();
check_complex_norms<float>();
deallog << "OK" << std::endl;
}
-
-
LinearAlgebra::Vector<double> d1(N), d2(N);
LinearAlgebra::Vector<float> f1(N), f2(N);
- LinearAlgebra::Vector<long double> l1(N), l2(N);
// cross-tests with double/float
// vectors at the same time are not
// arguments
check_vectors (d1, d2);
check_vectors (f1, f2);
- check_vectors (l1, l2);
}
-
-
DEAL::10.00 13.00 16.00 19.00 22.00 25.00 28.00 31.00 34.00 37.00
DEAL::equ
DEAL::2.50 3.25 4.00 4.75 5.50 6.25 7.00 7.75 8.50 9.25
-DEAL::Fill & Swap
-DEAL::0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
-DEAL::0.00 2.00 4.00 6.00 8.00 10.00 12.00 14.00 16.00 18.00
-DEAL::0.00 2.00 8.00 18.00 32.00 50.00 72.00 98.00 128.00 162.00
-DEAL::2.00 1.50 1.00 0.50 0.00 -0.50 -1.00 -1.50 -2.00 -2.50
-DEAL::0.00 2.00 8.00 18.00 32.00 50.00 72.00 98.00 128.00 162.00
-DEAL::0.00 2.00 4.00 6.00 8.00 10.00 12.00 14.00 16.00 18.00
-DEAL::2.50 2.50 2.50 2.50 2.50 2.50 2.50 2.50 2.50 2.50
-DEAL::0.00 1.10 2.20 3.30
-DEAL::Extract number
-DEAL::-105.00 -105.00
-DEAL::33.76 33.76
-DEAL::12.50 12.50
-DEAL::2.50 2.50
-DEAL::add & sub
-DEAL::2.50 4.50 6.50 8.50 10.50 12.50 14.50 16.50 18.50 20.50
-DEAL::-2.50 -2.50 -2.50 -2.50 -2.50 -2.50 -2.50 -2.50 -2.50 -2.50
-DEAL::6.50 7.50 8.50 9.50 10.50 11.50 12.50 13.50 14.50 15.50
-DEAL::2.50 3.25 4.00 4.75 5.50 6.25 7.00 7.75 8.50 9.25
-DEAL::sadd & scale
-DEAL::-2.50 -1.75 -1.00 -0.25 0.50 1.25 2.00 2.75 3.50 4.25
-DEAL::-3.75 -1.88 0.00 1.88 3.75 5.62 7.50 9.38 11.25 13.12
-DEAL::10.00 13.00 16.00 19.00 22.00 25.00 28.00 31.00 34.00 37.00
-DEAL::equ
-DEAL::2.50 3.25 4.00 4.75 5.50 6.25 7.00 7.75 8.50 9.25