MIDAPACK - MIcrowave Data Analysis PACKage  1.1b
Parallel software tools for high performance CMB DA analysis
toeplitz_wizard.c
Go to the documentation of this file.
1 
72 #include "toeplitz.h"
73 
77 
80 int stbmmProd(Tpltz *Nm1, double *V) {
81  int t_id; // time sample index in local data
82  int i, j;
83  double offset;
84 
85  // remove TOD offset
86  t_id = 0;
87  for (i = 0; i < Nm1->nb_blocks_loc; i++) {
88  offset = 0;
89  for (j = 0; j < Nm1->tpltzblocks[i].n; j++) offset += V[t_id + j];
90  offset /= Nm1->tpltzblocks[i].n;
91  for (j = 0; j < Nm1->tpltzblocks[i].n; j++) {
92  V[t_id + j] -= offset;
93  }
94  t_id += Nm1->tpltzblocks[i].n;
95  }
96 
97 #ifdef W_MPI
98 
99  mpi_stbmm(&V, Nm1->nrow, Nm1->m_cw, Nm1->m_rw, Nm1->tpltzblocks,
100  Nm1->nb_blocks_loc, Nm1->nb_blocks_tot, Nm1->idp,
101  Nm1->local_V_size, Nm1->flag_stgy, Nm1->comm);
102 
103 #else
104 
105  stbmm(&V, Nm1->nrow, Nm1->m_cw, Nm1->m_rw, Nm1->tpltzblocks,
106  Nm1->nb_blocks_loc, Nm1->idp, Nm1->local_V_size, Nm1->flag_stgy);
107 
108 #endif
109 
110  return 0;
111 }
112 
113 
114 int gstbmmProd(Tpltz *Nm1, double *V, Gap *Gaps) {
115 
116 #ifdef W_MPI
117 
118  mpi_gstbmm(&V, Nm1->nrow, Nm1->m_cw, Nm1->m_rw, Nm1->tpltzblocks,
119  Nm1->nb_blocks_loc, Nm1->nb_blocks_tot, Nm1->idp,
120  Nm1->local_V_size, Gaps->id0gap, Gaps->lgap, Gaps->ngap,
121  Nm1->flag_stgy, Nm1->comm);
122 
123 #else
124 
125  gstbmm(&V, Nm1->nrow, Nm1->m_cw, Nm1->m_rw, Nm1->tpltzblocks,
126  Nm1->nb_blocks_loc, Nm1->idp, Nm1->local_V_size, Gaps->id0gap,
127  Gaps->lgap, Gaps->ngap, Nm1->flag_stgy);
128 
129 #endif
130 
131  return 0;
132 }
int mpi_stbmm(double **V, int64_t nrow, int m, int m_rowwise, Block *tpltzblocks, int nb_blocks_local, int nb_blocks_all, int64_t idp, int local_V_size, Flag flag_stgy, MPI_Comm comm)
int mpi_gstbmm(double **V, int nrow, int m, int m_rowwise, Block *tpltzblocks, int nb_blocks_local, int nb_blocks_all, int id0p, int local_V_size, int64_t *id0gap, int *lgap, int ngap, Flag flag_stgy, MPI_Comm comm)
int gstbmm(double **V, int nrow, int m_cw, int m_rw, Block *tpltzblocks, int nb_blocks, int64_t idp, int local_V_size, int64_t *id0gap, int *lgap, int ngap, Flag flag_stgy)
Definition: toeplitz_seq.c:189
int stbmm(double **V, int nrow, int m_cw, int m_rw, Block *tpltzblocks, int nb_blocks, int64_t idp, int local_V_size, Flag flag_stgy)
Definition: toeplitz_seq.c:136
int gstbmmProd(Tpltz *Nm1, double *V, Gap *Gaps)
int stbmmProd(Tpltz *Nm1, double *V)