File indexing completed on 2025-08-03 08:19:07
0001 #include "include/opencl_backend.h"
0002 #include "include/clideal.h"
0003 #include "include/clvisc.h"
0004 #include <iostream>
0005
0006 clvisc::Config set_hydro_config() {
0007 clvisc::Config cfg;
0008 cfg.block_size = 64;
0009 cfg.nx = 200;
0010 cfg.ny = 200;
0011 cfg.nz = 1;
0012 cfg.nxskip = 2;
0013 cfg.nyskip = 2;
0014 cfg.nzskip = 2;
0015 cfg.tau0 = 0.6;
0016 cfg.dt = 0.02;
0017 cfg.dx = 0.16;
0018 cfg.dy = 0.16;
0019 cfg.dz = 0.16;
0020 cfg.etaos_xmin = 0.15;
0021 cfg.etaos_ymin = 0.15;
0022 cfg.etaos_left_slop = 0.0;
0023 cfg.etaos_right_slop = 0.0;
0024 cfg.result_directory = "./";
0025 return cfg;
0026 }
0027
0028
0029 std::vector<clvisc::cl_real> trivial_initial_condition(const clvisc::Config & cfg) {
0030 std::vector<clvisc::cl_real> ini;
0031 long ngrids = cfg.nx * cfg.ny * cfg.nz;
0032 ini.reserve(ngrids);
0033 for (long idx = 0; idx < ngrids; idx++) {
0034 clvisc::cl_real const_ed = 30.0f;
0035 ini.push_back(const_ed);
0036 }
0037 return ini;
0038 }
0039
0040 int main(int argc, char ** argv) {
0041 auto backend0 = clvisc::OpenclBackend("cpu", 0);
0042 backend0.DeviceInfo();
0043
0044 auto backend1 = clvisc::OpenclBackend("gpu", 1);
0045 backend1.DeviceInfo();
0046
0047 auto cfg = set_hydro_config();
0048 std::string device_type = "gpu";
0049 int device_id = 1;
0050 clvisc::CLVisc visc(cfg, device_type, device_id);
0051 auto ini = trivial_initial_condition(cfg);
0052 visc.read_ini(ini);
0053 visc.evolve();
0054 return 0;
0055 }