16#ifndef TRUSTVect_included
17#define TRUSTVect_included
20#include <MD_Vector_tools.h>
21#include <MD_Vector_base.h>
22#include <TRUSTArray.h>
28#include <DescStructure.h>
29#include <communications.h>
32template<
typename _TYPE_,
typename _SIZE_>
49 Process::exit(
"Error in TRUSTVect::printOn: try to print a parallel vector");
65 Process::exit(
"Error in TRUSTVect::readOn: vector has a parallel structure");
75 using Span_ = tcb::span<_TYPE_>;
78 template<
typename _TYPE2_,
typename _SIZE2_>
friend class TRUSTVect;
109 inline void resize(_SIZE_, RESIZE_OPTIONS opt=RESIZE_OPTIONS::COPY_INIT);
111 inline void copy(
const TRUSTVect&, RESIZE_OPTIONS opt=RESIZE_OPTIONS::COPY_INIT);
113 inline void operator+=(
const _TYPE_ x) { operator_add(*
this, x); }
115 inline void operator-=(
const _TYPE_ x) { operator_sub(*
this, x); }
117 inline void operator*= (
const _TYPE_ x) { operator_multiply(*
this, x); }
119 template<
typename _T_ >
121 inline void operator/= (
const _TYPE_ x) { operator_divide(*
this, x); }
124 inline void resize_tab(_SIZE_ n, RESIZE_OPTIONS opt=RESIZE_OPTIONS::COPY_INIT)
override;
132 inline void abs(Mp_vect_options opt=VECT_ALL_ITEMS) { operator_abs(*
this, opt); }
133 inline void carre(Mp_vect_options opt=VECT_ALL_ITEMS) { carre_(*
this, opt); }
134 inline void racine_carree(Mp_vect_options opt=VECT_ALL_ITEMS) { racine_carree_(*
this, opt); }
136 template<
typename _SCALAR_TYPE_>
137 inline void ajoute(_SCALAR_TYPE_ alpha,
const TRUSTVect& y, Mp_vect_options opt=VECT_ALL_ITEMS);
139 template<
typename _SCALAR_TYPE_>
142 template<
typename _SCALAR_TYPE_>
145 template<
typename _SCALAR_TYPE_>
154 inline _TYPE_
local_max_vect(Mp_vect_options opt=VECT_REAL_ITEMS)
const {
return local_max_vect_(*
this, opt); }
155 inline _TYPE_
local_min_vect(Mp_vect_options opt=VECT_REAL_ITEMS)
const {
return local_min_vect_(*
this, opt); }
156 inline _TYPE_
local_max_abs_vect(Mp_vect_options opt=VECT_REAL_ITEMS)
const {
return local_max_abs_vect_(*
this, opt); }
157 inline _TYPE_
local_min_abs_vect(Mp_vect_options opt=VECT_REAL_ITEMS)
const {
return local_min_abs_vect_(*
this, opt); }
158 inline _TYPE_
mp_max_vect(Mp_vect_options opt=VECT_REAL_ITEMS)
const {
return mp_max_vect_(*
this, opt); }
159 inline _TYPE_
mp_min_vect(Mp_vect_options opt=VECT_REAL_ITEMS)
const {
return mp_min_vect_(*
this, opt); }
160 inline _TYPE_
mp_max_abs_vect(Mp_vect_options opt=VECT_REAL_ITEMS)
const {
return mp_max_abs_vect_(*
this, opt); }
161 inline _TYPE_
mp_min_abs_vect(Mp_vect_options opt=VECT_REAL_ITEMS)
const {
return mp_min_abs_vect_(*
this, opt); }
168 inline virtual void echange_espace_virtuel(IsExchangeBlocking exchange_type = IsExchangeBlocking::DefaultBlocking,
const std::string kernel_name=
"noname");
174 inline virtual void lit(
Entree&,
bool resize_and_read=1);
178 inline void ref_data(_TYPE_* ptr, _SIZE_ new_size)
override;
199 inline void resize_vect_(_SIZE_ n, RESIZE_OPTIONS opt=RESIZE_OPTIONS::COPY_INIT);
200 inline void copy_(
const TRUSTVect& v, RESIZE_OPTIONS opt=RESIZE_OPTIONS::COPY_INIT);
220template <
typename _TYPE_>
223using BigDoubleVect = BigTRUSTVect<double>;
224using BigIntVect = BigTRUSTVect<int>;
225using BigTIDVect = BigTRUSTVect<trustIdType>;
231#include <TRUSTVect_tools.tpp>
237#include <TRUSTVect.tpp>
Class defining operators and methods for all reading operation in an input flow (file,...
: Cette classe est un OWN_PTR mais l'objet pointe est partage entre plusieurs
int numero() const
Renvoie l'indice de l'objet dans Memoire::data.
static int nproc()
renvoie le nombre de processeurs dans le groupe courant Voir Comm_Group::nproc() et PE_Groups::curren...
static void exit(int exit_code=-1)
Routine de sortie de TRUST dans une region Kokkos.
Classe de base des flux de sortie.
_SIZE_ size_array() const
Entree & readOn(Entree &is) override
Lecture d'un Objet_U sur un flot d'entree Methode a surcharger.
Sortie & printOn(Sortie &os) const override
Ecriture de l'objet sur un flot de sortie Methode a surcharger.
void operator*=(const TRUSTVect &v)
void ref_as_small(TRUSTVect< _TYPE_, int > &out) const
virtual void finish_echange_espace_virtuel_async(const std::string kernel_name)
void carre(Mp_vect_options opt=VECT_ALL_ITEMS)
Entree & readOn(Entree &is) override
Lecture d'un vecteur sequentiel (comme un ArrOfDouble) Attention: appel invalide si le vecteur a un M...
_TYPE_ local_min_abs_vect(Mp_vect_options opt=VECT_REAL_ITEMS) const
TRUSTVect & operator=(_TYPE_)
void operator/=(const TRUSTVect< _T_, _SIZE_ > &v)
_SIZE_ size_totale() const
void operator+=(const _TYPE_ x)
_TYPE_ mp_min_abs_vect(Mp_vect_options opt=VECT_REAL_ITEMS) const
_TYPE_ local_max_vect(Mp_vect_options opt=VECT_REAL_ITEMS) const
void copy(const TRUSTArray< _TYPE_, _SIZE_ > &, RESIZE_OPTIONS opt=RESIZE_OPTIONS::COPY_INIT)
void operator+=(const TRUSTVect &v)
TRUSTVect & operator=(const TRUSTVect &)
virtual void lit(Entree &, bool resize_and_read=1)
virtual void jump(Entree &)
virtual void detach_vect()
_TYPE_ mp_max_abs_vect(Mp_vect_options opt=VECT_REAL_ITEMS) const
void ref_as_big(TRUSTVect< _TYPE_, trustIdType > &out) const
void abs(Mp_vect_options opt=VECT_ALL_ITEMS)
TRUSTVect(const TRUSTVect &v)
Constructeur par copie.
_TYPE_ mp_norme_vect() const
void copy_(const TRUSTVect &v, RESIZE_OPTIONS opt=RESIZE_OPTIONS::COPY_INIT)
Sortie & printOn(Sortie &os) const override
Ecriture de l'objet sur un flot de sortie Methode a surcharger.
virtual void set_md_vector(const MD_Vector &)
_TYPE_ mp_max_vect(Mp_vect_options opt=VECT_REAL_ITEMS) const
_SIZE_ size_reelle() const
const Span_ get_span() const override
unsigned taille_memoire() const override
virtual void start_echange_espace_virtuel_async(const std::string kernel_name)
_SIZE_ size_reelle_ok() const
void racine_carree(Mp_vect_options opt=VECT_ALL_ITEMS)
void from_tid_to_int(TRUSTVect< int, int > &out) const
void operator-=(const TRUSTVect &v)
void ref_array(TRUSTArray< _TYPE_, _SIZE_ > &, _SIZE_ start=0, _SIZE_ sz=-1) override
int duplique() const override
void operator-=(const _TYPE_ x)
const Span_ get_span_tot() const override
void resize_vect_(_SIZE_ n, RESIZE_OPTIONS opt=RESIZE_OPTIONS::COPY_INIT)
Span_ get_span_tot() override
Span_ get_span() override
void ajoute_carre(_SCALAR_TYPE_ alpha, const TRUSTVect &y, Mp_vect_options opt=VECT_ALL_ITEMS)
_TYPE_ local_max_abs_vect(Mp_vect_options opt=VECT_REAL_ITEMS) const
virtual void ecrit(Sortie &) const
void ajoute(_SCALAR_TYPE_ alpha, const TRUSTVect &y, Mp_vect_options opt=VECT_ALL_ITEMS)
void reset() override
met l'objet dans l'etat obtenu par le constructeur par defaut.
void set_line_size_(int n)
void ajoute_sans_ech_esp_virt(_SCALAR_TYPE_ alpha, const TRUSTVect &y, Mp_vect_options opt=VECT_REAL_ITEMS)
_TYPE_ local_min_vect(Mp_vect_options opt=VECT_REAL_ITEMS) const
void ref_data(_TYPE_ *ptr, _SIZE_ new_size) override
TRUSTVect(_SIZE_ n)
construction d'un vecteur de taille n.
_TYPE_ mp_min_vect(Mp_vect_options opt=VECT_REAL_ITEMS) const
void resize(_SIZE_, RESIZE_OPTIONS opt=RESIZE_OPTIONS::COPY_INIT)
virtual const MD_Vector & get_md_vector() const
void ajoute_produit_scalaire(_SCALAR_TYPE_ alpha, const TRUSTVect &x, const TRUSTVect &y, Mp_vect_options opt=VECT_ALL_ITEMS)
void copy(const TRUSTVect &, RESIZE_OPTIONS opt=RESIZE_OPTIONS::COPY_INIT)
virtual void ref(const TRUSTVect &)
virtual void echange_espace_virtuel(IsExchangeBlocking exchange_type=IsExchangeBlocking::DefaultBlocking, const std::string kernel_name="noname")
void resize_tab(_SIZE_ n, RESIZE_OPTIONS opt=RESIZE_OPTIONS::COPY_INIT) override