forked from rikigigi/analisi
-
Notifications
You must be signed in to change notification settings - Fork 0
/
spettrovibrazionale.h
60 lines (46 loc) · 1.35 KB
/
spettrovibrazionale.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
/**
*
* (c) Riccardo Bertossa, 2019
*
* Use at your own risk.
*
* If you modified the code, I could be happy if you contribute on github!
*
**/
#ifndef SPETTROVIBRAZIONALE_H
#define SPETTROVIBRAZIONALE_H
#include "config.h"
#include "mediablocchi.h"
#include "operazionisulista.h"
#ifdef HAVEfftw3
#include <fftw3.h>
#else
#include <fftw.h>
#endif
#include "mediablocchi.h"
//#include <memory>
class Traiettoria;
class SpettroVibrazionale : public OperazioniSuLista<SpettroVibrazionale>
{
public:
unsigned int numeroTimestepsOltreFineBlocco(unsigned int n_b);
void reset(const unsigned int numeroTimestepsPerBlocco);
void calcola(unsigned int primo);
SpettroVibrazionale(Traiettoria *,bool dump=false);
~SpettroVibrazionale();
static void deallocate_plan(); // da chiamare alla fine del programma!
double spettro(unsigned int frequenza, unsigned int dim, unsigned int tipo_atomo);
SpettroVibrazionale & operator = (const SpettroVibrazionale &);
private:
Traiettoria * traiettoria;
unsigned int size;
int tipi_atomi;
unsigned int trasformata_size;
fftw_complex * trasformata;
static fftw_plan fftw3;
static unsigned int fplan_natoms,fplan_size;
bool dump;
};
//per fare anche le varie medie a blocchi
//template class MediaBlocchi<SpettroVibrazionale>;
#endif // SPETTROVIBRAZIONALE_H