Exemplo n.º 1
0
int pmepot_add(pmepot_data *data, const float *cell,
		int natoms, const float *atoms) {
  float *q_arr;
  float rcell[12];

  if ( data->avg_count == 0 ) {
    q_arr = data->avg_potential;
  } else {
    q_arr = malloc(data->grid_size * sizeof(float));
    if ( ! q_arr ) return -1;
  }

  fill_charges(data->dims,cell,natoms,atoms,q_arr,rcell,data->oddd);

  pubdz3d(1, data->dims[2], data->dims[1], data->dims[0],
   q_arr, data->dims[4], data->dims[3],
   data->fft_table, data->fft_ntable, data->fft_work);

  compute_energy(q_arr, cell, rcell, data->dims, data->ewald_factor);

  pubzd3d(-1, data->dims[2], data->dims[1], data->dims[0],
   q_arr, data->dims[4], data->dims[3],
   data->fft_table, data->fft_ntable, data->fft_work);

  scale_grid(data->dims,q_arr,COLOUMB/(300.0*BOLTZMAN));

  if ( data->avg_count ) {
    add_to_grid(data->dims,data->avg_potential,q_arr);
    free(q_arr);
  }
  data->avg_count += 1;

  return 0;
}
Exemplo n.º 2
0
    void color_write_image(matrix<double> &grid, const colormap_func &cmap, const std::string &output_filename, bool write_save) {
        /* modifies argument! */
        scale_grid(grid);
        image_RGB color_image(grid.x(), grid.y());
        grayscale_to_rgb(grid, color_image, cmap);
        if (write_save) {
            std::cout << "saving image" << std::endl;
        }
        write_image(color_image, output_filename);

    }
void fractal_animation_zoom::animation_worker::render(double t) {
    double zoom = std::exp(t * std::log(p.max_zoom));

    std::fill(fractal.iterations.begin(), fractal.iterations.end(), -1.0);
    std::fill(color_image.begin(), color_image.end(), RGB{0, 0, 0});

    fractal.set_zoom(p.center, zoom);
    fractal.run();

    log_transform(fractal.iterations);
    sine_transform(fractal.iterations);

    scale_grid(fractal.iterations);
    image_sanity_check(fractal.iterations, false);
    grayscale_to_rgb(fractal.iterations, color_image, p.cmap);

}