当前位置: 首页>>代码示例>>C++>>正文


C++ OPS_ACC3函数代码示例

本文整理汇总了C++中OPS_ACC3函数的典型用法代码示例。如果您正苦于以下问题:C++ OPS_ACC3函数的具体用法?C++ OPS_ACC3怎么用?C++ OPS_ACC3使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。


在下文中一共展示了OPS_ACC3函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: flux_calc_kernelz

//user function
inline 
void flux_calc_kernelz( double *vol_flux_z, const double *zarea,
                        const double *zvel0, const double *zvel1) {

  vol_flux_z[OPS_ACC0(0,0,0)] = 0.125 * dt * (zarea[OPS_ACC1(0,0,0)]) *
  ( zvel0[OPS_ACC2(0,0,0)] + zvel0[OPS_ACC2(1,0,0)] + zvel0[OPS_ACC2(1,0,0)] + zvel0[OPS_ACC2(1,1,0)] +
    zvel1[OPS_ACC3(0,0,0)] + zvel1[OPS_ACC3(1,0,0)] + zvel1[OPS_ACC3(0,1,0)] + zvel1[OPS_ACC3(1,1,0)]);
}
开发者ID:satyajammy,项目名称:OPS,代码行数:9,代码来源:flux_calc_kernelz_openacc_kernel_c.c

示例2: flux_calc_kernelx

// user function
inline void flux_calc_kernelx(double *vol_flux_x, const double *xarea,
                              const double *xvel0, const double *xvel1) {

  vol_flux_x[OPS_ACC0(0, 0)] =
      0.25 * dt * (xarea[OPS_ACC1(0, 0)]) *
      ((xvel0[OPS_ACC2(0, 0)]) + (xvel0[OPS_ACC2(0, 1)]) +
       (xvel1[OPS_ACC3(0, 0)]) + (xvel1[OPS_ACC3(0, 1)]));
}
开发者ID:gihanmudalige,项目名称:OPS,代码行数:9,代码来源:flux_calc_kernelx_seq_kernel.cpp

示例3: advec_cell_kernel2_zdir

inline void advec_cell_kernel2_zdir(double *pre_vol, double *post_vol,
                                    const double *volume,
                                    const double *vol_flux_z) {

  pre_vol[OPS_ACC0(0, 0, 0)] = volume[OPS_ACC2(0, 0, 0)] +
                               vol_flux_z[OPS_ACC3(0, 0, 1)] -
                               vol_flux_z[OPS_ACC3(0, 0, 0)];
  post_vol[OPS_ACC1(0, 0, 0)] = volume[OPS_ACC2(0, 0, 0)];
}
开发者ID:gihanmudalige,项目名称:OPS,代码行数:9,代码来源:advec_cell_kernel2_zdir_omp_kernel.cpp

示例4: advec_mom_kernel2_x

// user function
inline void advec_mom_kernel2_x(double *vel1, const double *node_mass_post,
                                const double *node_mass_pre,
                                const double *mom_flux) {

  vel1[OPS_ACC0(0, 0, 0)] =
      (vel1[OPS_ACC0(0, 0, 0)] * node_mass_pre[OPS_ACC2(0, 0, 0)] +
       mom_flux[OPS_ACC3(-1, 0, 0)] - mom_flux[OPS_ACC3(0, 0, 0)]) /
      node_mass_post[OPS_ACC1(0, 0, 0)];
}
开发者ID:gihanmudalige,项目名称:OPS,代码行数:10,代码来源:advec_mom_kernel2_x_seq_kernel.cpp

示例5: advec_mom_kernel_y2

inline void advec_mom_kernel_y2(double *pre_vol, double *post_vol,
                                const double *volume,
                                const double *vol_flux_x) {

  post_vol[OPS_ACC1(0, 0)] = volume[OPS_ACC2(0, 0)];
  pre_vol[OPS_ACC0(0, 0)] = post_vol[OPS_ACC1(0, 0)] +
                            vol_flux_x[OPS_ACC3(1, 0)] -
                            vol_flux_x[OPS_ACC3(0, 0)];
}
开发者ID:gihanmudalige,项目名称:OPS,代码行数:9,代码来源:advec_mom_kernel_y2_openacc_kernel_c.c

示例6: flux_calc_kernely

// user function
inline void flux_calc_kernely(double *vol_flux_y, const double *yarea,
                              const double *yvel0, const double *yvel1) {

  vol_flux_y[OPS_ACC0(0, 0, 0)] =
      0.125 * dt * (yarea[OPS_ACC1(0, 0, 0)]) *
      (yvel0[OPS_ACC2(0, 0, 0)] + yvel0[OPS_ACC2(1, 0, 0)] +
       yvel0[OPS_ACC2(0, 0, 1)] + yvel0[OPS_ACC2(1, 0, 1)] +
       yvel1[OPS_ACC3(0, 0, 0)] + yvel1[OPS_ACC3(1, 0, 0)] +
       yvel1[OPS_ACC3(0, 0, 1)] + yvel1[OPS_ACC3(1, 0, 1)]);
}
开发者ID:gihanmudalige,项目名称:OPS,代码行数:11,代码来源:flux_calc_kernely_omp_kernel.cpp

示例7: advec_mom_kernel_x1

inline void advec_mom_kernel_x1(double *pre_vol, double *post_vol,
                                const double *volume, const double *vol_flux_x,
                                const double *vol_flux_y,
                                const double *vol_flux_z) {

  post_vol[OPS_ACC1(0, 0, 0)] =
      volume[OPS_ACC2(0, 0, 0)] + vol_flux_y[OPS_ACC4(0, 1, 0)] -
      vol_flux_y[OPS_ACC4(0, 0, 0)] + vol_flux_z[OPS_ACC5(0, 0, 1)] -
      vol_flux_z[OPS_ACC5(0, 0, 0)];
  pre_vol[OPS_ACC0(0, 0, 0)] = post_vol[OPS_ACC1(0, 0, 0)] +
                               vol_flux_x[OPS_ACC3(1, 0, 0)] -
                               vol_flux_x[OPS_ACC3(0, 0, 0)];
}
开发者ID:gihanmudalige,项目名称:OPS,代码行数:13,代码来源:advec_mom_kernel_x1_openacc_kernel_c.c

示例8: update_halo_kernel1_fr2

inline void update_halo_kernel1_fr2(double *density0, double *density1,
                          double *energy0, double *energy1,
                          double *pressure, double *viscosity,
                          double *soundspeed , const int* fields) {
  if(fields[FIELD_DENSITY0] == 1) density0[OPS_ACC0(0,0,0)] = density0[OPS_ACC0(0,0,-3)];
  if(fields[FIELD_DENSITY1] == 1) density1[OPS_ACC1(0,0,0)] = density1[OPS_ACC1(0,0,-3)];
  if(fields[FIELD_ENERGY0] == 1) energy0[OPS_ACC2(0,0,0)] = energy0[OPS_ACC2(0,0,-3)];
  if(fields[FIELD_ENERGY1] == 1) energy1[OPS_ACC3(0,0,0)] = energy1[OPS_ACC3(0,0,-3)];
  if(fields[FIELD_PRESSURE] == 1) pressure[OPS_ACC4(0,0,0)] = pressure[OPS_ACC4(0,0,-3)];
  if(fields[FIELD_VISCOSITY] == 1) viscosity[OPS_ACC5(0,0,0)] = viscosity[OPS_ACC5(0,0,-3)];
  if(fields[FIELD_SOUNDSPEED] == 1) soundspeed[OPS_ACC6(0,0,0)] = soundspeed[OPS_ACC6(0,0,-3)];

}
开发者ID:satyajammy,项目名称:OPS,代码行数:13,代码来源:update_halo_kernel1_fr2_omp_kernel.cpp

示例9: advec_cell_kernel1_ydir

// user function
inline void advec_cell_kernel1_ydir(double *pre_vol, double *post_vol,
                                    const double *volume,
                                    const double *vol_flux_x,
                                    const double *vol_flux_y) {

  pre_vol[OPS_ACC0(0, 0)] =
      volume[OPS_ACC2(0, 0)] +
      (vol_flux_y[OPS_ACC4(0, 1)] - vol_flux_y[OPS_ACC4(0, 0)] +
       vol_flux_x[OPS_ACC3(1, 0)] - vol_flux_x[OPS_ACC3(0, 0)]);
  post_vol[OPS_ACC1(0, 0)] =
      pre_vol[OPS_ACC0(0, 0)] -
      (vol_flux_y[OPS_ACC4(0, 1)] - vol_flux_y[OPS_ACC4(0, 0)]);
}
开发者ID:gihanmudalige,项目名称:OPS,代码行数:14,代码来源:advec_cell_kernel1_ydir_seq_kernel.cpp

示例10: preproc_kernel

//user function
inline void preproc_kernel(const double *u, double *du,
double *ax, double *bx, double *cx, double *ay, double *by, double *cy,
double *az, double *bz, double *cz, int *idx){

  double a, b, c, d;

  if(idx[0]==0 || idx[0]==nx-1 || idx[1]==0 || idx[1]==ny-1 || idx[2]==0 || idx[2]==nz-1) {
    d = 0.0f;
    a = 0.0f;
    b = 1.0f;
    c = 0.0f;
  } else {
    d = lambda*( u[OPS_ACC0(-1,0,0)] + u[OPS_ACC0(1,0,0)]
               + u[OPS_ACC0(0,-1,0)] + u[OPS_ACC0(0,1,0)]
               + u[OPS_ACC0(0,0,-1)] + u[OPS_ACC0(0,0,1)]
               - 6.0f*u[OPS_ACC0(0,0,0)]);
    a = -0.5f * lambda;
    b =  1.0f + lambda;
    c = -0.5f * lambda;

  }

  du[OPS_ACC1(0,0,0)] = d;
  ax[OPS_ACC2(0,0,0)] = a;
  bx[OPS_ACC3(0,0,0)] = b;
  cx[OPS_ACC4(0,0,0)] = c;
  ay[OPS_ACC5(0,0,0)] = a;
  by[OPS_ACC6(0,0,0)] = b;
  cy[OPS_ACC7(0,0,0)] = c;
  az[OPS_ACC8(0,0,0)] = a;
  bz[OPS_ACC9(0,0,0)] = b;
  cz[OPS_ACC10(0,0,0)] = c;
}
开发者ID:gihanmudalige,项目名称:OPS,代码行数:34,代码来源:preproc_kernel_seq_kernel.cpp

示例11: field_summary_kernel

// user function
inline void field_summary_kernel(const double *volume, const double *density0,
                                 const double *energy0, const double *pressure,
                                 const double *xvel0, const double *yvel0,
                                 double *vol, double *mass, double *ie,
                                 double *ke, double *press) {

  double vsqrd, cell_vol, cell_mass;

  vsqrd = 0.0;
  vsqrd = vsqrd +
          0.25 * (xvel0[OPS_ACC4(0, 0)] * xvel0[OPS_ACC4(0, 0)] +
                  yvel0[OPS_ACC5(0, 0)] * yvel0[OPS_ACC5(0, 0)]);
  vsqrd = vsqrd +
          0.25 * (xvel0[OPS_ACC4(1, 0)] * xvel0[OPS_ACC4(1, 0)] +
                  yvel0[OPS_ACC5(1, 0)] * yvel0[OPS_ACC5(1, 0)]);
  vsqrd = vsqrd +
          0.25 * (xvel0[OPS_ACC4(0, 1)] * xvel0[OPS_ACC4(0, 1)] +
                  yvel0[OPS_ACC5(0, 1)] * yvel0[OPS_ACC5(0, 1)]);
  vsqrd = vsqrd +
          0.25 * (xvel0[OPS_ACC4(1, 1)] * xvel0[OPS_ACC4(1, 1)] +
                  yvel0[OPS_ACC5(1, 1)] * yvel0[OPS_ACC5(1, 1)]);

  cell_vol = volume[OPS_ACC0(0, 0)];
  cell_mass = cell_vol * density0[OPS_ACC1(0, 0)];
  *vol = *vol + cell_vol;
  *mass = *mass + cell_mass;
  *ie = *ie + cell_mass * energy0[OPS_ACC2(0, 0)];
  *ke = *ke + cell_mass * 0.5 * vsqrd;
  *press = *press + cell_vol * pressure[OPS_ACC3(0, 0)];
}
开发者ID:gihanmudalige,项目名称:OPS,代码行数:31,代码来源:field_summary_kernel_omp_kernel.cpp

示例12: calc_dt_kernel_print

// user function
inline void calc_dt_kernel_print(const double *xvel0, const double *yvel0,
                                 const double *zvel0, const double *density0,
                                 const double *energy0, const double *pressure,
                                 const double *soundspeed, double *output) {
  output[0] = xvel0[OPS_ACC0(0, 0, 0)];
  output[1] = yvel0[OPS_ACC1(0, 0, 0)];
  output[2] = zvel0[OPS_ACC2(0, 0, 0)];
  output[3] = xvel0[OPS_ACC0(1, 0, 0)];
  output[4] = yvel0[OPS_ACC1(1, 0, 0)];
  output[5] = zvel0[OPS_ACC2(0, 0, 0)];
  output[6] = xvel0[OPS_ACC0(1, 1, 0)];
  output[7] = yvel0[OPS_ACC1(1, 1, 0)];
  output[8] = zvel0[OPS_ACC2(0, 0, 0)];
  output[9] = xvel0[OPS_ACC0(0, 1, 0)];
  output[10] = yvel0[OPS_ACC1(0, 1, 0)];
  output[11] = zvel0[OPS_ACC2(0, 0, 0)];
  output[12] = xvel0[OPS_ACC0(0, 0, 1)];
  output[13] = yvel0[OPS_ACC1(0, 0, 1)];
  output[14] = zvel0[OPS_ACC2(0, 0, 1)];
  output[15] = xvel0[OPS_ACC0(1, 0, 1)];
  output[16] = yvel0[OPS_ACC1(1, 0, 1)];
  output[17] = zvel0[OPS_ACC2(0, 0, 1)];
  output[18] = xvel0[OPS_ACC0(1, 1, 1)];
  output[19] = yvel0[OPS_ACC1(1, 1, 1)];
  output[20] = zvel0[OPS_ACC2(0, 0, 1)];
  output[21] = xvel0[OPS_ACC0(0, 1, 1)];
  output[22] = yvel0[OPS_ACC1(0, 1, 1)];
  output[23] = zvel0[OPS_ACC2(0, 0, 1)];
  output[24] = density0[OPS_ACC3(0, 0, 0)];
  output[25] = energy0[OPS_ACC4(0, 0, 0)];
  output[26] = pressure[OPS_ACC5(0, 0, 0)];
  output[27] = soundspeed[OPS_ACC6(0, 0, 0)];
}
开发者ID:gihanmudalige,项目名称:OPS,代码行数:34,代码来源:calc_dt_kernel_print_openacc_kernel_c.c

示例13: update_halo_kernel1_r2

inline void update_halo_kernel1_r2(double *density0, double *energy0,
                                   double *energy1, double *u, double *p,
                                   double *sd, const int *fields) {
  if (fields[FIELD_DENSITY] == 1)
    density0[OPS_ACC0(0, 0)] = density0[OPS_ACC0(-3, 0)];
  if (fields[FIELD_ENERGY0] == 1)
    energy0[OPS_ACC1(0, 0)] = energy0[OPS_ACC1(-3, 0)];
  if (fields[FIELD_ENERGY1] == 1)
    energy1[OPS_ACC2(0, 0)] = energy1[OPS_ACC2(-3, 0)];
  if (fields[FIELD_U] == 1)
    u[OPS_ACC3(0, 0)] = u[OPS_ACC3(-3, 0)];
  if (fields[FIELD_P] == 1)
    p[OPS_ACC4(0, 0)] = p[OPS_ACC4(-3, 0)];
  if (fields[FIELD_SD] == 1)
    sd[OPS_ACC5(0, 0)] = sd[OPS_ACC5(-3, 0)];
}
开发者ID:gihanmudalige,项目名称:OPS,代码行数:16,代码来源:update_halo_kernel1_r2_omp_kernel.cpp

示例14: drhouupdx_kernel

// user function
inline void drhouupdx_kernel(const double *rhou_new, const double *rho_new,
                             const double *rhoE_new, double *rhou_res) {

  double fni =
      rhou_new[OPS_ACC0(0)] * rhou_new[OPS_ACC0(0)] / rho_new[OPS_ACC1(0)];
  double p = gam1 * (rhoE_new[OPS_ACC2(0)] - 0.5 * fni);
  fni = fni + p;
  double fnim1 =
      rhou_new[OPS_ACC0(-1)] * rhou_new[OPS_ACC0(-1)] / rho_new[OPS_ACC1(-1)];
  p = gam1 * (rhoE_new[OPS_ACC2(-1)] - 0.5 * fnim1);
  fnim1 = fnim1 + p;
  double fnim2 =
      rhou_new[OPS_ACC0(-2)] * rhou_new[OPS_ACC0(-2)] / rho_new[OPS_ACC1(-2)];
  p = gam1 * (rhoE_new[OPS_ACC2(-2)] - 0.5 * fnim2);
  fnim2 = fnim2 + p;
  double fnip1 =
      rhou_new[OPS_ACC0(1)] * rhou_new[OPS_ACC0(1)] / rho_new[OPS_ACC1(1)];
  p = gam1 * (rhoE_new[OPS_ACC2(1)] - 0.5 * fnip1);
  fnip1 = fnip1 + p;
  double fnip2 =
      rhou_new[OPS_ACC0(2)] * rhou_new[OPS_ACC0(2)] / rho_new[OPS_ACC1(2)];
  p = gam1 * (rhoE_new[OPS_ACC2(2)] - 0.5 * fnip2);
  fnip2 = fnip2 + p;

  double deriv = (fnim2 - fnip2 + 8.0 * (fnip1 - fnim1)) / (12.00 * dx);
  rhou_res[OPS_ACC3(0)] = deriv;
}
开发者ID:gihanmudalige,项目名称:OPS,代码行数:28,代码来源:drhouupdx_kernel_openacc_kernel_c.c

示例15: save_kernel

// user function
inline void save_kernel(double *rho_old, double *rhou_old, double *rhoE_old,
                        const double *rho_new, const double *rhou_new,
                        const double *rhoE_new) {
  rho_old[OPS_ACC0(0)] = rho_new[OPS_ACC3(0)];
  rhou_old[OPS_ACC1(0)] = rhou_new[OPS_ACC4(0)];
  rhoE_old[OPS_ACC2(0)] = rhoE_new[OPS_ACC5(0)];
}
开发者ID:gihanmudalige,项目名称:OPS,代码行数:8,代码来源:save_kernel_seq_kernel.cpp


注:本文中的OPS_ACC3函数示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。