sandbox/fintzin/Rising-Suspenion/CW.h

    • Continuity waves computation

    • Here we compute the quantity \alpha = \int_S \chi_d dS
    void compute_alpha_layer(){
      int nL = round(Ls/(D/LDn)) + 1;
      double alpha[nL];
      double surf[nL];
      double surff[nL];
      double Uf[nL];
      double Ud[nL];
      for (int i = 0; i < (nL); i++)
        alpha[i]=surf[i]=surff[i]=Uf[i]=Ud[i]=0;
    
      foreach(reduction(+:alpha[:nL]) reduction(+:surf[:nL])
              reduction(+:surff[:nL]) reduction(+:Uf[:nL])
              reduction(+:Ud[:nL])){
        int idx = round(  (y+Ls/2.)  /   (D/LDn) );
        alpha[idx] += f[]* dv();
        surf[idx] += dv();
        surff[idx] += dv()*(1 - f[]);
        Uf[idx] += u.y[] * (1 - f[]) * dv();
        Ud[idx] += u.y[] * f[] * dv();
      }
    
      if(main_process()){
        falpha = fopen("falpha.csv","a");
        fprintf(falpha,"%g",t);
        for (int j = 0; j < (nL-1); j++)
          if(surf[j])
            fprintf(falpha,",%g",alpha[j]/surf[j]);
        fprintf(falpha,"\n");
        fclose(falpha);
    
        fUf = fopen("fUf.csv","a");
        fprintf(fUf,"%g",t);
        for (int j = 0; j < (nL-1); j++){
          if(surff[j])
            fprintf(fUf,",%g",Uf[j]/surff[j]);
          else
            fprintf(fUf,",%g",0.);
        }
        fprintf(fUf,"\n");
        fclose(fUf);
    
        fUd = fopen("fUd.csv","a");
        fprintf(fUd,"%g",t);
        for (int j = 0; j < (nL-1); j++){
          if(surf[j] - surff[j])
            fprintf(fUd,",%g",Ud[j]/(surf[j] - surff[j]));
          else
            fprintf(fUd,",%g",0.);
        }
        fprintf(fUd,"\n");
        fclose(fUd);
      }
    }