aboutsummaryrefslogtreecommitdiff
path: root/Carpet/CarpetReduce/src/mask_set.c
blob: 1d4e9a3306c4c9a6c4906686d710136fdf2864b0 (plain)
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
#include <cctk.h>
#include <cctk_Arguments.h>
#include <cctk_Parameters.h>

#include <loopcontrol.h>

#include "bits.h"



void
MaskBase_SetMask (CCTK_ARGUMENTS)
{
  DECLARE_CCTK_ARGUMENTS;
  DECLARE_CCTK_PARAMETERS;
  
  if (verbose) {
    int const reflevel = GetRefinementLevel(cctkGH);
    CCTK_VInfo (CCTK_THORNSTRING,
                "Finalise the weight on level %d", reflevel);
  }
  
  unsigned const bits = BMSK(cctk_dim);
  CCTK_REAL const factor = 1.0 / bits;
#pragma omp parallel
  CCTK_LOOP3_ALL(MaskBase_SetMask, cctkGH, i,j,k) {
    int const ind = CCTK_GFINDEX3D (cctkGH, i, j, k);
    weight[ind] = factor * BCNT(iweight[ind]);
    one[ind] = 1.0;
  } CCTK_ENDLOOP3_ALL(MaskBase_SetMask);
}