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