#include <dumper_vgroupe.h>
Inheritance diagram for DumperVGroupe< T, Dim >:


Public Member Functions | |
| DumperVGroupe (DomainInterface &d, int ID) | |
Protected Member Functions | |
| void | Dump () |
| dump function that dump to file screen or whatever | |
| void | Init () |
| initialisation of the dumper internal data | |
| void | SetParam (char *key, double value) |
| setting parameters to object that auto configure fields from key/value call | |
Private Attributes | |
| double * | deplacements_par_tranche |
| unsigned int * | nb_par_tranche |
| unsigned int | nb_tranches |
| FILE * | output [1] |
Definition at line 52 of file dumper_vgroupe.h.
| DumperVGroupe< T, Dim >::DumperVGroupe | ( | DomainInterface & | d, | |
| int | ID | |||
| ) | [inline] |
Definition at line 56 of file dumper_vgroupe.h.
00056 : 00057 Dumper<T,Dim>(static_cast<T &>(d),ID) 00058 { 00059 };
| void DumperVGroupe< Domain, Dim >::Dump | ( | ) | [inline, protected, virtual] |
dump function that dump to file screen or whatever
Implements DumperInterface.
Definition at line 71 of file dumper_atom_vgroup.cpp.
References UnitsConverter::AtomsUnits, cpt, DBG_ALL, DumperVGroupe< T, Dim >::deplacements_par_tranche, DUMP, UnitsConverter::etalon_metre, ipow(), DumperVGroupe< T, Dim >::nb_par_tranche, DumperVGroupe< T, Dim >::nb_tranches, DumperVGroupe< T, Dim >::output, and UnitsConverter::SetReadUnits().
00071 { 00072 UnitsConverter unit; 00073 unit.SetReadUnits(UnitsConverter::AtomsUnits); 00074 00075 00076 // Boule & b = static_cast<Boule &>(*this->geom); 00077 unsigned int couche_index=0; 00078 unsigned int cpt = 0; 00079 00080 typedef typename Domain::RefDof RefAtom; 00081 typedef typename Domain::ContenerDofs ContenerAtoms; 00082 typedef typename Domain::IteratorDofs IteratorAtoms; 00083 00084 ContenerAtoms & c = Dumper<Domain,Dim>::dom.getContener(); 00085 IteratorAtoms & it = c.GetIterator(); 00086 RefAtom at = it.GetFirst(); 00087 00088 memset(nb_par_tranche,0,sizeof(int)*nb_tranches); 00089 memset(deplacements_par_tranche,0,sizeof(double)*nb_tranches); 00090 00091 at = it.GetFirst(); 00092 while (!it.end()) 00093 { 00094 double d; 00095 if (Dim == 1) 00096 d = fabs(at.position0(0)); 00097 else if (Dim == 2) 00098 d = ipow(at.position0(0),2)+ipow(at.position0(1),2); 00099 else if (Dim == 3) 00100 d = ipow(at.position0(0),2)+ipow(at.position0(1),2)+ipow(at.position0(2),2); 00101 00102 /* la distance au centre de la boule est utilise pour caracteriser la projection dans l'espace des phases */ 00103 00104 DUMP("le d trouve = " << d,DBG_ALL); 00105 // d = (d - b.Rmin())/(b.Rmax()-b.Rmin()); 00106 00107 DUMP("le d rapporte dans 0..1 = " << d,DBG_ALL); 00108 /* petit calcul simpliste pour trouver la tranche d'oignon que l'ont veux */ 00109 couche_index = static_cast<unsigned int>(nb_tranches*d); 00110 if (Dim == 1) couche_index = cpt; 00111 DUMP("couche_index trouve = " << couche_index,DBG_ALL); 00112 00113 /* prepare le deplacement */ 00114 00115 double ux = (at.position(0) - at.position0(0))*unit.etalon_metre; 00116 double uy = (at.position(1) - at.position0(1))*unit.etalon_metre; 00117 double uz = (at.position(2) - at.position0(2))*unit.etalon_metre; 00118 00119 double dep = sqrt(ux*ux+uy*uy+uz*uz); 00120 if (Dim == 1) 00121 dep = ux; 00122 DUMP("deplacement calcule = " << dep,DBG_ALL); 00123 /* on additionne le deplacement de chaque atome dans la couche qui le concerne */ 00124 deplacements_par_tranche[couche_index] += dep; 00125 /* on augmente le nombre d'atomes dans la couche - il faudra faire la moyenne a la fin !*/ 00126 ++nb_par_tranche[couche_index]; 00127 00128 DUMP("deplacement_par_tranche[" << couche_index << "]= " << deplacements_par_tranche[couche_index],DBG_ALL); 00129 DUMP("nb_par_tranche[" << couche_index << "]= " << nb_par_tranche[couche_index],DBG_ALL); 00130 at = it.GetNext(); 00131 ++cpt; 00132 } 00133 00134 delete ⁢ 00135 00136 for (unsigned int k=0;k < nb_tranches;++k) 00137 { 00138 /* on dump directement la moyenne */ 00139 if (nb_par_tranche[couche_index] == 0) continue; 00140 DUMP("deplacement_moy_par_tranche[" << couche_index << "]= " << deplacements_par_tranche[k] << "/" << nb_par_tranche[couche_index],DBG_ALL); 00141 fprintf(output[0],"%d\t%d\t%.15e\n",Dumper<Domain,Dim>::dump_step,k+1,deplacements_par_tranche[k]/nb_par_tranche[couche_index]); 00142 } 00143 }
Here is the call graph for this function:

| void DumperVGroupe< Domain, Dim >::Init | ( | ) | [inline, protected, virtual] |
initialisation of the dumper internal data
Implements DumperInterface.
Definition at line 55 of file dumper_atom_vgroup.cpp.
References DumperVGroupe< T, Dim >::deplacements_par_tranche, DumperVGroupe< T, Dim >::nb_par_tranche, NB_TRANCHES, DumperVGroupe< T, Dim >::nb_tranches, and DumperVGroupe< T, Dim >::output.
00055 { 00056 /* j'initialise les tranches pour la projection */ 00057 nb_tranches = NB_TRANCHES; 00058 if (Dim == 1) 00059 nb_tranches = Dumper<Domain,Dim>::dom.getContener().nbElem(); 00060 00061 deplacements_par_tranche = new double[nb_tranches]; 00062 nb_par_tranche = new unsigned int[nb_tranches]; 00063 00064 /* je creer le fichier pour le dump de la vitesse de groupe */ 00065 char temp[255]; 00066 snprintf(temp,255,"%s_vgroupe.plot",Dumper<Domain,Dim>::base_name); 00067 output[0] = fopen(temp,"wb+"); 00068 }
| void DumperVGroupe< Domain, Dim >::SetParam | ( | char * | key, | |
| double | value | |||
| ) | [inline, protected, virtual] |
setting parameters to object that auto configure fields from key/value call
Implements DumperInterface.
Definition at line 50 of file dumper_atom_vgroup.cpp.
double* DumperVGroupe< T, Dim >::deplacements_par_tranche [private] |
Definition at line 70 of file dumper_vgroupe.h.
Referenced by DumperVGroupe< T, Dim >::Dump(), and DumperVGroupe< T, Dim >::Init().
unsigned int* DumperVGroupe< T, Dim >::nb_par_tranche [private] |
Definition at line 71 of file dumper_vgroupe.h.
Referenced by DumperVGroupe< T, Dim >::Dump(), and DumperVGroupe< T, Dim >::Init().
unsigned int DumperVGroupe< T, Dim >::nb_tranches [private] |
Definition at line 69 of file dumper_vgroupe.h.
Referenced by DumperVGroupe< T, Dim >::Dump(), and DumperVGroupe< T, Dim >::Init().
FILE* DumperVGroupe< T, Dim >::output[1] [private] |
Definition at line 73 of file dumper_vgroupe.h.
Referenced by DumperVGroupe< T, Dim >::Dump(), and DumperVGroupe< T, Dim >::Init().
1.5.2