├── .gitignore ├── CMakeLists.txt ├── Doxyfile ├── EpidemicsRunner ├── Experimental │ └── models │ │ ├── main.cpp │ │ └── seird.h ├── Linux │ ├── comp.sh │ ├── compilation_commands.txt │ ├── glades │ │ ├── initial_value_editor.glade │ │ ├── seird.glade │ │ ├── seird_pde.glade │ │ └── seird_pde_editor.glade │ ├── main.cpp │ ├── resources │ │ └── icon.png │ ├── utility.h │ └── widgets │ │ ├── initial_value_editor_widget.h │ │ ├── seird_pde_editor_widget.h │ │ ├── seird_pde_widget.h │ │ └── seird_widget.h └── Windows │ ├── AssemblyInfo.cpp │ ├── CppCLR_WinformsProjekt.cpp │ ├── Form1.cpp │ ├── Form1.h │ ├── Form1.resx │ ├── Form10.cpp │ ├── Form10.h │ ├── Form10.resx │ ├── Form2.cpp │ ├── Form2.h │ ├── Form2.resx │ ├── Form3.cpp │ ├── Form3.h │ ├── Form3.resx │ ├── Form4.cpp │ ├── Form4.h │ ├── Form4.resx │ ├── Form5.cpp │ ├── Form5.h │ ├── Form5.resx │ ├── Form6.h │ ├── Form6.resx │ ├── Form7.h │ ├── Form7.resx │ ├── Form8.cpp │ ├── Form8.h │ ├── Form8.resx │ ├── Form9.cpp │ ├── Form9.h │ ├── Form9.resx │ ├── OpenGL.h │ ├── Resource.h │ ├── UG_EpidemicsRunner.sln │ ├── UG_EpidemicsRunner.vcxproj │ ├── UG_EpidemicsRunner.vcxproj.filters │ ├── UG_EpidemicsRunner.vcxproj.user │ ├── app.ico │ ├── app.rc │ ├── pch.cpp │ ├── pch.h │ ├── plotter.h │ └── utility.h ├── LICENSE ├── LICENSES └── Apache-2.0.txt ├── Readme.md ├── SECURITY.md ├── Samples ├── GUI │ ├── ODE_Optimization_Sample_1 │ │ ├── expData │ │ │ ├── Erkrankte.txt │ │ │ ├── Positive.txt │ │ │ └── Verstorbene.txt │ │ ├── subset_sim.lua │ │ └── subset_target.lua │ ├── PDE_EDITOR_Initial_Condition_Images_Sample_1 │ │ ├── Explanation.txt │ │ ├── Initial_Recovered.png │ │ ├── Initial_Susceptibles.png │ │ └── Initial_Susceptibles_test.png │ ├── PDE_EDITOR_Initial_Condition_Images_Sample_2 │ │ ├── Explanation.txt │ │ ├── GIMP File │ │ │ └── Hesse.xcf │ │ ├── Initial_Exposed.png │ │ └── Initial_Susceptibles.png │ └── PDE_Optimization_Sample_1 │ │ ├── expData │ │ ├── expData0.txt │ │ └── expData1.txt │ │ ├── subset_sim.lua │ │ └── subset_target.lua ├── main.cpp ├── main_seird.cpp ├── main_seird_pde.cpp ├── main_seird_variable_alpha.cpp └── main_testparser.cpp ├── documents ├── Drafts │ ├── PDE Model Finite Difference Derivation for a plane.docx │ └── images │ │ └── example_seird_plot1.emf ├── Epidemics Plugin.pdf ├── development │ ├── Active Tasklist.xlsx │ └── meeting minutes │ │ └── 18.03.2021 │ │ └── 18.03.2021_development.pdf ├── images │ ├── gui_linux1.png │ ├── gui_linux2.png │ └── gui_winforms.png ├── manual_for_library_maintainers │ ├── html │ │ ├── annotated.html │ │ ├── bc_s.png │ │ ├── bdwn.png │ │ ├── classes.html │ │ ├── classug_1_1epi_1_1_initial_value_manager.html │ │ ├── classug_1_1epi_1_1_initial_value_manager_3_01seird_1_1_geometry_1_1_plane_00_01_f_01_4-members.html │ │ ├── classug_1_1epi_1_1_initial_value_manager_3_01seird_1_1_geometry_1_1_plane_00_01_f_01_4.html │ │ ├── classug_1_1epi_1_1_s_e_i_r_d-members.html │ │ ├── classug_1_1epi_1_1_s_e_i_r_d.html │ │ ├── classug_1_1epi_1_1_s_e_i_r_d___p_d_e.html │ │ ├── classug_1_1epi_1_1_s_e_i_r_d___p_d_e_3_01_t_00_01seird_1_1_geometry_1_1_plane_01_4-members.html │ │ ├── classug_1_1epi_1_1_s_e_i_r_d___p_d_e_3_01_t_00_01seird_1_1_geometry_1_1_plane_01_4.html │ │ ├── closed.png │ │ ├── dir_15c636f0f56aa2be82ce6fc60cfa1928.html │ │ ├── dir_1ae4179d5e953611aae20c997279e02c.html │ │ ├── dir_c3056047b02693331fdd63dc9ab89bf9.html │ │ ├── doc.png │ │ ├── doxygen.css │ │ ├── doxygen.png │ │ ├── dynsections.js │ │ ├── epidemics_8h.html │ │ ├── epidemics_8h_source.html │ │ ├── files.html │ │ ├── folderclosed.png │ │ ├── folderopen.png │ │ ├── functions.html │ │ ├── functions_func.html │ │ ├── functions_vars.html │ │ ├── index.html │ │ ├── jquery.js │ │ ├── menu.js │ │ ├── menudata.js │ │ ├── nav_f.png │ │ ├── nav_g.png │ │ ├── nav_h.png │ │ ├── open.png │ │ ├── search │ │ │ ├── all_0.html │ │ │ ├── all_0.js │ │ │ ├── all_1.html │ │ │ ├── all_1.js │ │ │ ├── all_2.html │ │ │ ├── all_2.js │ │ │ ├── all_3.html │ │ │ ├── all_3.js │ │ │ ├── all_4.html │ │ │ ├── all_4.js │ │ │ ├── all_5.html │ │ │ ├── all_5.js │ │ │ ├── all_6.html │ │ │ ├── all_6.js │ │ │ ├── all_7.html │ │ │ ├── all_7.js │ │ │ ├── all_8.html │ │ │ ├── all_8.js │ │ │ ├── all_9.html │ │ │ ├── all_9.js │ │ │ ├── classes_0.html │ │ │ ├── classes_0.js │ │ │ ├── classes_1.html │ │ │ ├── classes_1.js │ │ │ ├── classes_2.html │ │ │ ├── classes_2.js │ │ │ ├── close.png │ │ │ ├── files_0.html │ │ │ ├── files_0.js │ │ │ ├── files_1.html │ │ │ ├── files_1.js │ │ │ ├── files_2.html │ │ │ ├── files_2.js │ │ │ ├── functions_0.html │ │ │ ├── functions_0.js │ │ │ ├── functions_1.html │ │ │ ├── functions_1.js │ │ │ ├── functions_2.html │ │ │ ├── functions_2.js │ │ │ ├── functions_3.html │ │ │ ├── functions_3.js │ │ │ ├── functions_4.html │ │ │ ├── functions_4.js │ │ │ ├── functions_5.html │ │ │ ├── functions_5.js │ │ │ ├── mag_sel.png │ │ │ ├── nomatches.html │ │ │ ├── pages_0.html │ │ │ ├── pages_0.js │ │ │ ├── search.css │ │ │ ├── search.js │ │ │ ├── search_l.png │ │ │ ├── search_m.png │ │ │ ├── search_r.png │ │ │ ├── searchdata.js │ │ │ ├── variables_0.html │ │ │ └── variables_0.js │ │ ├── seird_8h.html │ │ ├── seird_8h_source.html │ │ ├── seird__pde_8h.html │ │ ├── seird__pde_8h_source.html │ │ ├── splitbar.png │ │ ├── structug_1_1_epidemics_1_1_functionality-members.html │ │ ├── structug_1_1_epidemics_1_1_functionality.html │ │ ├── sync_off.png │ │ ├── sync_on.png │ │ ├── tab_a.png │ │ ├── tab_b.png │ │ ├── tab_h.png │ │ ├── tab_s.png │ │ ├── tabs.css │ │ ├── utility_8h.html │ │ └── utility_8h_source.html │ └── latex │ │ ├── Makefile │ │ ├── annotated.tex │ │ ├── classug_1_1epi_1_1_initial_value_manager.tex │ │ ├── classug_1_1epi_1_1_initial_value_manager_3_01seird_1_1_geometry_1_1_plane_00_01_f_01_4.tex │ │ ├── classug_1_1epi_1_1_s_e_i_r_d.tex │ │ ├── classug_1_1epi_1_1_s_e_i_r_d___p_d_e.tex │ │ ├── classug_1_1epi_1_1_s_e_i_r_d___p_d_e_3_01_t_00_01seird_1_1_geometry_1_1_plane_01_4.tex │ │ ├── dir_15c636f0f56aa2be82ce6fc60cfa1928.tex │ │ ├── dir_1ae4179d5e953611aae20c997279e02c.tex │ │ ├── dir_c3056047b02693331fdd63dc9ab89bf9.tex │ │ ├── doxygen.sty │ │ ├── epidemics_8h.tex │ │ ├── files.tex │ │ ├── index.tex │ │ ├── refman.tex │ │ ├── seird_8h.tex │ │ ├── seird__pde_8h.tex │ │ ├── structug_1_1_epidemics_1_1_functionality.tex │ │ └── utility_8h.tex └── math │ └── PDE Model Finite Difference Derivation for a plane.pdf ├── epidemics_plugin.cpp └── models ├── epidemics.h ├── seird.h ├── seird_pde.h ├── seird_variable_alpha.h ├── sir.h ├── utility.h └── writer.h /.gitignore: -------------------------------------------------------------------------------- 1 | *.exe 2 | *.bin 3 | *.obj 4 | *.out 5 | *.doc 6 | *.docx 7 | *.vs 8 | **/evaluations/** 9 | 10 | *.*~ 11 | -------------------------------------------------------------------------------- /CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # Author: 2 | 3 | # Name of your plugin and sources. 4 | set(pluginName Epidemics) 5 | set(SOURCES epidemics_plugin.cpp 6 | ) 7 | 8 | if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU") 9 | add_cxx_flag("-pthread") 10 | add_cxx_flag("-std=c++17") 11 | set(CMAKE_CXX_STANDARD 17) 12 | set(CMAKE_CXX_FLAGS"${CMAKE_CXX_FLAGS}-pthread -std=c++17 -march=native") 13 | add_cxx_flag("-march=native") 14 | endif() 15 | 16 | IF(NOT ConstrainedOptimization) 17 | message(FATAL_ERROR "\nEpidemics needs ConstrainedOptimization plugin activated:\ncmake -DConstrainedOptimization=ON ..") 18 | ENDIF() 19 | ################################################################################ 20 | # The code below doesn't have to be changed (usually) 21 | ################################################################################ 22 | cmake_minimum_required(VERSION 2.6) 23 | 24 | project(UG_PLUGIN_${pluginName}) 25 | 26 | # include the definitions and dependencies for ug-plugins. 27 | include(${UG_ROOT_CMAKE_PATH}/ug_plugin_includes.cmake) 28 | 29 | if(buildEmbeddedPlugins) 30 | # add the sources to ug4's sources 31 | EXPORTSOURCES(${CMAKE_CURRENT_SOURCE_DIR} ${SOURCES}) 32 | else(buildEmbeddedPlugins) 33 | # create a shared library from the sources and link it against ug4. 34 | add_library(${pluginName} SHARED ${SOURCES}) 35 | target_link_libraries (${pluginName} ug4) 36 | endif(buildEmbeddedPlugins) 37 | -------------------------------------------------------------------------------- /EpidemicsRunner/Experimental/models/main.cpp: -------------------------------------------------------------------------------- 1 | #include "seird.h" 2 | #include 3 | 4 | int main(){ 5 | double alpha=4.95954479066937e-07; 6 | double kappa=0.356035567977659; 7 | double theta=4.14932000304998e-07; 8 | double qq=8; 9 | double pp=5; 10 | 11 | 12 | epi::SEIRD seird_model(alpha,kappa,theta,qq,pp); 13 | 14 | double u0[5]={753056,2714,0,0,72}; 15 | double t0=0; 16 | double tend=42; 17 | 18 | std::vector u; 19 | std::vector t; 20 | 21 | seird_model.run_linear_implicit(t0, u0, tend, t, u); 22 | 23 | 24 | } -------------------------------------------------------------------------------- /EpidemicsRunner/Experimental/models/seird.h: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | 4 | namespace epi{ 5 | 6 | template 7 | class SEIRD{ 8 | 9 | private: 10 | F alpha; 11 | F kappa; 12 | F theta; 13 | F qq; 14 | F pp; 15 | F h=0.01; 16 | 17 | void change_step_size(F _h) { 18 | h = _h; 19 | } 20 | 21 | void system(const F* u, F* res) { 22 | 23 | F S = u[0]; // Gesunde (Susceptibles) 24 | F E = u[1]; // Angesteckte (Exposed) 25 | F I = u[2]; // Kranke (Infected) 26 | F R = u[3]; // Erholte (Recovered) 27 | F D = u[4]; // Verstorbene (Deaths) 28 | 29 | 30 | res[0] = -alpha * S * E; // dS/dt=-alpha*S*E 31 | res[1] = alpha * S * E - (1 / qq) * E; // dE/dt = alpha*S*E - (E/q) 32 | res[2] = (kappa / qq) * E - (1 / pp) * I; // dI/dt = (kappa*E)/qq - (I/pp) 33 | res[3] = ((1 - kappa) / qq) * E + ((1 - theta) / pp) * I; // dR/dt= (1-kappa)/q *E +(1 -theta)/pp *I 34 | res[4] = (theta / pp) * I; // dD/dt = theta/pp * I 35 | } 36 | 37 | void jacobian(const F* u, F* res) { 38 | for (size_t i = 0; i < 25; i++) { 39 | res[i] = 0; 40 | } 41 | 42 | F S = u[0]; // Gesunde (Susceptibles) 43 | F E = u[1]; // Angesteckte (Exposed) 44 | F I = u[2]; // Kranke (Infected) 45 | F R = u[3]; // Erholte (Recovered) 46 | F D = u[4]; // Verstorbene (Deaths) 47 | 48 | res[0] = -alpha*E; 49 | res[1] = -alpha * S; 50 | res[5] = alpha * E; 51 | res[6] = alpha * S - 1 + qq; 52 | res[11] = kappa / qq; 53 | res[12] = -(1 / pp); 54 | res[16] = (1 - kappa) / qq; 55 | res[17] = (1 - theta) / pp; 56 | res[22] = theta / pp; 57 | 58 | } 59 | 60 | void set_M(F* M, F* J, F ah){ 61 | std::memset(M,F(0.0),25*sizeof(F)); 62 | M[0]=F(1.0)-ah*J[0]; 63 | M[1]=-ah*J[1]; 64 | M[5]=-ah*J[5]; 65 | M[6]=F(1.0)-ah*J[6]; 66 | M[11]=ah*J[11]; 67 | M[12]=F(1.0)-ah*J[12]; 68 | M[16]=ah*J[16]; 69 | M[17]=ah*J[17]; 70 | M[18]=F(1.0); 71 | M[22]=ah*J[22]; 72 | M[24]=F(1.0); 73 | } 74 | void solve_system(const F* A, const F* y, F* x){ 75 | F a=A[0]; 76 | F b=A[1]; 77 | F c=A[5]; 78 | F d=A[6]; 79 | F e=A[11]; 80 | F f=A[12]; 81 | F g=A[16]; 82 | F h=A[17]; 83 | F i=A[18]; 84 | F j=A[22]; 85 | F k=A[24]; 86 | 87 | x[0]=(y[0]+y[1]/d)/(a-(b/d)); 88 | x[1]=(y[1]-c*x[0])/(d); 89 | x[2]=(y[2]-e*x[1])/f; 90 | x[3]=(y[3]-g*x[1]-h*x[2])/i; 91 | x[4]=(y[4]-j*y[2])/k; 92 | 93 | } 94 | void setup_right_side_k2(F* fy, const F* J, const F* k1, F ah){ 95 | F a=J[0]; 96 | F b=J[1]; 97 | F c=J[5]; 98 | F d=J[6]; 99 | F e=J[11]; 100 | F f=J[12]; 101 | F g=J[16]; 102 | F h=J[17]; 103 | F i=J[18]; 104 | F j=J[22]; 105 | F k=J[24]; 106 | 107 | fy[0]-=ah*(J[0]*k1[0]+J[1]*k1[1]); 108 | fy[1]-=ah*(J[5]*k1[0]+J[6]*k1[1]); 109 | fy[2]-=ah*(J[11]*k1[1]+J[12]*k1[2]); 110 | fy[3]-=ah*(J[16]*k1[1]+J[17]*k1[2]+J[18]*k1[3]); 111 | fy[4]-=ah*(J[22]*k1[2]+J[24]*k1[4]); 112 | } 113 | 114 | public: 115 | 116 | SEIRD(F _alpha, F _kappa, F _theta, F _qq, F _pp):alpha(_alpha),kappa(_kappa),theta(_theta),qq(_qq),pp(_pp){ 117 | 118 | } 119 | 120 | 121 | 122 | void start_linear_implicit23(F t0, const F* u0, F tend, std::vector& t_result, std::vector& u_result){ 123 | //std::vector timepoints = {t0}; 124 | F u[5]; 125 | std::memcpy(u,u0,sizeof(u)); 126 | 127 | F a = 1 / (2 + 1.41); 128 | F d31 = -(4 + 1.41) / (2 + 1.41); 129 | F d32 = (6+1.41)/ (2+1.41); 130 | F I[25]={0}; 131 | F J[25]; 132 | F M[25]; //M=(I-ahJ) 133 | F k1[5]; 134 | F k2[5]; 135 | F k3[5]; 136 | F fy[5]={0}; 137 | F t=t0+h; 138 | F temp[5]; 139 | F ah=a*h; 140 | 141 | while (t<=tend){ 142 | system(u, fy); 143 | jacobian(u,J); 144 | set_M(M,J,ah); 145 | solve_system(M,fy,k1); 146 | 147 | for (int i = 0; i < 5; i++) { 148 | temp[i] = u[i] + 0.5 * h * k1[i]; 149 | } 150 | system(temp, fy); 151 | setup_right_side_k2(fy,J,k1,ah); 152 | 153 | for (int i = 0; i < dim; i++) { 154 | u[i] += h*k2[i]; 155 | u_result.push_back(u[i]); 156 | } 157 | t_result.push_back(t); 158 | t+=h; 159 | } 160 | } 161 | 162 | 163 | const int dim=5; 164 | void run_linear_implicit(F t0, const F* u0, F tend, std::vector& t_result, std::vector& u_result){ 165 | start_linear_implicit23(t0,u0,tend,t_result,u_result); 166 | } 167 | 168 | }; 169 | 170 | } 171 | -------------------------------------------------------------------------------- /EpidemicsRunner/Linux/comp.sh: -------------------------------------------------------------------------------- 1 | #clear; rm Epidemics.bin; g++ -O3 -o Epidemics.bin main.cpp `pkg-config --cflags --libs gtk+-3.0` -export-dynamic;./Epidemics.bin 2 | rm ~/Documents/test/*; 3 | #clear; rm Epidemics.bin; g++ -O0 -DDEBUG=1 -mavx -mfma -o Epidemics.bin main.cpp `pkg-config --cflags --libs gtk+-3.0` -export-dynamic;./Epidemics.bin 4 | clear; rm Epidemics.bin; g++ -std=c++17 -O3 -march=native -o Epidemics.bin main.cpp `pkg-config --cflags --libs gtk+-3.0` -export-dynamic;./Epidemics.bin 5 | -------------------------------------------------------------------------------- /EpidemicsRunner/Linux/compilation_commands.txt: -------------------------------------------------------------------------------- 1 | Linux: 2 | clear; rm Epidemics.bin; g++ -O3 -static-libgcc -static-libstdc++ -o Epidemics.bin main.cpp `pkg-config --cflags --libs gtk+-3.0` -export-dynamic;./Epidemics.bin 3 | 4 | MacOS: 5 | clear; rm Epidemics.bin; g++ -O3 -std=c++17 -o Epidemics.bin main.cpp `pkg-config --cflags --libs gtk+-3.0`;./Epidemics.bin 6 | 7 | Windows: 8 | g++ -O3 -o Epidemics.exe main.cpp `pkg-config --cflags --libs gtk+-3.0` -export-dynamic -march=native;./Epidemics.exe 9 | -------------------------------------------------------------------------------- /EpidemicsRunner/Linux/glades/initial_value_editor.glade: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | initial_value_editor 6 | False 7 | 8 | 9 | 10 | 11 | 12 | drawing_initial_value_editor 13 | 500 14 | 500 15 | True 16 | False 17 | 18 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /EpidemicsRunner/Linux/main.cpp: -------------------------------------------------------------------------------- 1 | //http://www.youtube.com/user/thecplusplusguy 2 | //Thanks for the typed in code to Tapit85 3 | #include 4 | #include 5 | #include "widgets/seird_widget.h" 6 | #include "widgets/seird_pde_widget.h" 7 | #include "widgets/seird_pde_editor_widget.h" 8 | #include 9 | #include 10 | 11 | 12 | int main(int argc, char* argv[]) 13 | { 14 | gtk_init(&argc, &argv); 15 | std::setlocale(LC_NUMERIC,"C"); 16 | GtkWidget *window, *notebook; 17 | window = gtk_window_new(GTK_WINDOW_TOPLEVEL); 18 | 19 | g_signal_connect(window, "delete-event", G_CALLBACK(gtk_main_quit), NULL); 20 | gtk_window_set_title(GTK_WINDOW(window), "UG EpidemicsRunner"); 21 | gtk_window_set_icon_from_file(GTK_WINDOW(window), "resources/icon.png", NULL); 22 | notebook = gtk_notebook_new(); 23 | gtk_notebook_set_tab_pos(GTK_NOTEBOOK(notebook), GTK_POS_BOTTOM); 24 | ug::epi::SEIRDWidget seird_widget; 25 | ug::epi::SEIRDPDEWidget seird_pde_widget; 26 | ug::epi::SEIRDPDE_EDITORWidget seird_pde_editor_widget; 27 | 28 | gtk_notebook_append_page(GTK_NOTEBOOK(notebook), seird_widget.get_widget(),seird_widget.get_name()); //represents GUI tab of the interactive SEIRD model 29 | gtk_notebook_append_page(GTK_NOTEBOOK(notebook), seird_pde_widget.get_widget(),seird_pde_widget.get_name()); //represents GUI tab of the interactive SEIRD model 30 | gtk_notebook_append_page(GTK_NOTEBOOK(notebook), seird_pde_editor_widget.get_widget(),seird_pde_editor_widget.get_name()); //represents GUI tab of the interactive SEIRD model 31 | 32 | 33 | //gtk_notebook_append_page(GTK_NOTEBOOK(notebook), seird_widget_interactive2.widget, seird_widget_interactive2.name_widget); 34 | 35 | gtk_container_add(GTK_CONTAINER(window), notebook); 36 | 37 | 38 | //gtk_widget_show(window); 39 | gtk_widget_show_all(window); 40 | 41 | gtk_main(); 42 | std::cout<<"Programm ended\n"; 43 | return 0; 44 | } 45 | -------------------------------------------------------------------------------- /EpidemicsRunner/Linux/resources/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/devanshr/Epidemics/b1a95003a0a280c25d4e0e5ada13381ea5a260db/EpidemicsRunner/Linux/resources/icon.png -------------------------------------------------------------------------------- /EpidemicsRunner/Linux/widgets/initial_value_editor_widget.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include "../../../models/seird_pde.h" 3 | 4 | namespace ug{ 5 | namespace epi{ 6 | 7 | template 8 | class Editor{ 9 | 10 | }; 11 | 12 | template<> 13 | class Editor{ 14 | private: 15 | 16 | GtkBuilder *builder; 17 | GtkWidget* main_widget; //main widget 18 | GtkWidget* name_widget=gtk_label_new("Initial Value Editor"); 19 | 20 | void initialize_widget(){ 21 | 22 | builder = gtk_builder_new_from_file("glades/initial_value_editor.glade"); 23 | 24 | main_widget = GTK_WIDGET(gtk_builder_get_object(builder,"grid_main_initial_value_editor")); 25 | 26 | glade_widgets->editor_object=this; 27 | gtk_builder_connect_signals(builder, glade_widgets); 28 | } 29 | 30 | 31 | 32 | void initialize_values(){ 33 | 34 | 35 | } 36 | 37 | 38 | public: 39 | Editor() 40 | { 41 | } 42 | 43 | void save_map() const; 44 | 45 | void load_map(); 46 | /* This struct is given to a glade builder to automatically connect signals. 47 | The members need to have the same name as the "name" property in the glade files*/ 48 | struct app_widgets{ 49 | 50 | 51 | Editor* editor_object; 52 | }; 53 | 54 | app_widgets* glade_widgets; 55 | 56 | GtkWidget* get_widget() const{ 57 | return main_widget; 58 | } 59 | GtkWidget* get_name() const{ 60 | return name_widget; 61 | } 62 | 63 | 64 | }; 65 | 66 | extern "C" G_MODULE_EXPORT void on_drawing_initial_value_editor_map_window(GtkWidget *widget, gpointer* data) 67 | { 68 | // Editor::app_widgets* glade_widgets= reinterpret_cast(data); 69 | // Editor* editor_object=glade_widgets->editor_object; 70 | //seird_pde_object->optimization_details(seird_pde_object); 71 | 72 | } 73 | } 74 | } 75 | -------------------------------------------------------------------------------- /EpidemicsRunner/Windows/AssemblyInfo.cpp: -------------------------------------------------------------------------------- 1 | #include "pch.h" 2 | 3 | using namespace System; 4 | using namespace System::Reflection; 5 | using namespace System::Runtime::CompilerServices; 6 | using namespace System::Runtime::InteropServices; 7 | using namespace System::Security::Permissions; 8 | 9 | [assembly:AssemblyTitleAttribute(L"CppCLRWinformsProjekt")]; 10 | [assembly:AssemblyDescriptionAttribute(L"")]; 11 | [assembly:AssemblyConfigurationAttribute(L"")]; 12 | [assembly:AssemblyCompanyAttribute(L"")]; 13 | [assembly:AssemblyProductAttribute(L"CppCLRWinformsProjekt")]; 14 | [assembly:AssemblyCopyrightAttribute(L"Copyright (c) 2019")]; 15 | [assembly:AssemblyTrademarkAttribute(L"")]; 16 | [assembly:AssemblyCultureAttribute(L"")]; 17 | 18 | [assembly:AssemblyVersionAttribute("1.0.*")]; 19 | 20 | [assembly:ComVisible(false)]; 21 | 22 | [assembly:CLSCompliantAttribute(true)]; 23 | -------------------------------------------------------------------------------- /EpidemicsRunner/Windows/CppCLR_WinformsProjekt.cpp: -------------------------------------------------------------------------------- 1 | #define _ITERATOR_DEBUG_LEVEL 0 2 | 3 | #include "pch.h" 4 | #include //if it is placed elsewhere errors occur, see https://stackoverflow.com/questions/4000663/issue-in-compiling-with-marshal-h-error-c2872-iserviceprovider-ambiguous 5 | using namespace System; 6 | 7 | //Also, Unicode support was disabled due to errors in Constrained Optimization https://stackoverflow.com/questions/1319461/how-do-i-turn-off-unicode-in-a-vc-project 8 | 9 | //int main(array ^args) 10 | //{ 11 | // return 0; 12 | //} 13 | 14 | #include "Form1.h" 15 | 16 | using namespace System::Windows::Forms; 17 | 18 | [STAThread] 19 | int main() { 20 | Application::EnableVisualStyles(); 21 | Application::SetCompatibleTextRenderingDefault(false); 22 | Application::Run(gcnew CppCLRWinformsProjekt::Form1()); 23 | return 0; 24 | } -------------------------------------------------------------------------------- /EpidemicsRunner/Windows/Form1.cpp: -------------------------------------------------------------------------------- 1 | #include "pch.h" 2 | // #include "Form1.h" 3 | 4 | -------------------------------------------------------------------------------- /EpidemicsRunner/Windows/Form1.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/devanshr/Epidemics/b1a95003a0a280c25d4e0e5ada13381ea5a260db/EpidemicsRunner/Windows/Form1.h -------------------------------------------------------------------------------- /EpidemicsRunner/Windows/Form10.cpp: -------------------------------------------------------------------------------- 1 | #include "pch.h" 2 | // #include "Form1.h" 3 | 4 | -------------------------------------------------------------------------------- /EpidemicsRunner/Windows/Form10.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/devanshr/Epidemics/b1a95003a0a280c25d4e0e5ada13381ea5a260db/EpidemicsRunner/Windows/Form10.h -------------------------------------------------------------------------------- /EpidemicsRunner/Windows/Form2.cpp: -------------------------------------------------------------------------------- 1 | #include "pch.h" 2 | // #include "Form1.h" 3 | 4 | -------------------------------------------------------------------------------- /EpidemicsRunner/Windows/Form2.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/devanshr/Epidemics/b1a95003a0a280c25d4e0e5ada13381ea5a260db/EpidemicsRunner/Windows/Form2.h -------------------------------------------------------------------------------- /EpidemicsRunner/Windows/Form3.cpp: -------------------------------------------------------------------------------- 1 | #include "pch.h" 2 | // #include "Form1.h" 3 | 4 | -------------------------------------------------------------------------------- /EpidemicsRunner/Windows/Form3.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/devanshr/Epidemics/b1a95003a0a280c25d4e0e5ada13381ea5a260db/EpidemicsRunner/Windows/Form3.h -------------------------------------------------------------------------------- /EpidemicsRunner/Windows/Form4.cpp: -------------------------------------------------------------------------------- 1 | #include "pch.h" 2 | // #include "Form1.h" 3 | 4 | -------------------------------------------------------------------------------- /EpidemicsRunner/Windows/Form4.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/devanshr/Epidemics/b1a95003a0a280c25d4e0e5ada13381ea5a260db/EpidemicsRunner/Windows/Form4.h -------------------------------------------------------------------------------- /EpidemicsRunner/Windows/Form5.cpp: -------------------------------------------------------------------------------- 1 | #include "pch.h" 2 | // #include "Form1.h" 3 | 4 | -------------------------------------------------------------------------------- /EpidemicsRunner/Windows/Form5.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/devanshr/Epidemics/b1a95003a0a280c25d4e0e5ada13381ea5a260db/EpidemicsRunner/Windows/Form5.h -------------------------------------------------------------------------------- /EpidemicsRunner/Windows/Form6.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/devanshr/Epidemics/b1a95003a0a280c25d4e0e5ada13381ea5a260db/EpidemicsRunner/Windows/Form6.h -------------------------------------------------------------------------------- /EpidemicsRunner/Windows/Form7.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/devanshr/Epidemics/b1a95003a0a280c25d4e0e5ada13381ea5a260db/EpidemicsRunner/Windows/Form7.h -------------------------------------------------------------------------------- /EpidemicsRunner/Windows/Form8.cpp: -------------------------------------------------------------------------------- 1 | #include "pch.h" 2 | // #include "Form1.h" 3 | 4 | -------------------------------------------------------------------------------- /EpidemicsRunner/Windows/Form8.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/devanshr/Epidemics/b1a95003a0a280c25d4e0e5ada13381ea5a260db/EpidemicsRunner/Windows/Form8.h -------------------------------------------------------------------------------- /EpidemicsRunner/Windows/Form9.cpp: -------------------------------------------------------------------------------- 1 | #include "pch.h" 2 | // #include "Form1.h" 3 | 4 | -------------------------------------------------------------------------------- /EpidemicsRunner/Windows/Form9.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/devanshr/Epidemics/b1a95003a0a280c25d4e0e5ada13381ea5a260db/EpidemicsRunner/Windows/Form9.h -------------------------------------------------------------------------------- /EpidemicsRunner/Windows/OpenGL.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | #include 5 | 6 | using namespace System::Windows::Forms; 7 | 8 | namespace OpenGLForm 9 | { 10 | public ref class COpenGL: public System::Windows::Forms::NativeWindow 11 | { 12 | public: 13 | COpenGL(System::Windows::Forms::Form ^ parentForm, GLsizei iWidth, GLsizei iHeight) 14 | { 15 | CreateParams^ cp = gcnew CreateParams; 16 | 17 | // Set the position on the form 18 | cp->X = 100; 19 | cp->Y = 100; 20 | cp->Height = iWidth; 21 | cp->Width = iHeight; 22 | 23 | // Specify the form as the parent. 24 | cp->Parent = parentForm->Handle; 25 | 26 | // Create as a child of the specified parent and make OpenGL compliant (no clipping) 27 | cp->Style = WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN; 28 | 29 | // Create the actual window 30 | this->CreateHandle(cp); 31 | 32 | m_hDC = GetDC((HWND)this->Handle.ToPointer()); 33 | 34 | if(m_hDC) 35 | MySetPixelFormat(m_hDC); 36 | } 37 | 38 | virtual System::Void Render(System::Void) 39 | { 40 | // Clear the color and depth buffers. 41 | glClearColor(0.0f, 0.0f, 0.0f, 0.0f) ; 42 | glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); 43 | } 44 | 45 | System::Void SwapOpenGLBuffers(System::Void) 46 | { 47 | SwapBuffers(m_hDC); 48 | } 49 | 50 | private: 51 | HDC m_hDC; 52 | HGLRC m_hglrc; 53 | 54 | protected: 55 | ~COpenGL(System::Void) 56 | { 57 | this->DestroyHandle(); 58 | } 59 | 60 | GLint MySetPixelFormat(HDC hdc) 61 | { 62 | PIXELFORMATDESCRIPTOR pfd = { 63 | sizeof(PIXELFORMATDESCRIPTOR), // size of this pfd 64 | 1, // version number 65 | PFD_DRAW_TO_WINDOW | // support window 66 | PFD_SUPPORT_OPENGL | // support OpenGL 67 | PFD_DOUBLEBUFFER, // double buffered 68 | PFD_TYPE_RGBA, // RGBA type 69 | 24, // 24-bit color depth 70 | 0, 0, 0, 0, 0, 0, // color bits ignored 71 | 0, // no alpha buffer 72 | 0, // shift bit ignored 73 | 0, // no accumulation buffer 74 | 0, 0, 0, 0, // accum bits ignored 75 | 32, // 32-bit z-buffer 76 | 0, // no stencil buffer 77 | 0, // no auxiliary buffer 78 | PFD_MAIN_PLANE, // main layer 79 | 0, // reserved 80 | 0, 0, 0 // layer masks ignored 81 | }; 82 | 83 | GLint iPixelFormat; 84 | 85 | // get the device context's best, available pixel format match 86 | if((iPixelFormat = ChoosePixelFormat(hdc, &pfd)) == 0) 87 | { 88 | MessageBox::Show("ChoosePixelFormat Failed"); 89 | return 0; 90 | } 91 | 92 | // make that match the device context's current pixel format 93 | if(SetPixelFormat(hdc, iPixelFormat, &pfd) == FALSE) 94 | { 95 | MessageBox::Show("SetPixelFormat Failed"); 96 | return 0; 97 | } 98 | 99 | if((m_hglrc = wglCreateContext(m_hDC)) == NULL) 100 | { 101 | MessageBox::Show("wglCreateContext Failed"); 102 | return 0; 103 | } 104 | 105 | if((wglMakeCurrent(m_hDC, m_hglrc)) == NULL) 106 | { 107 | MessageBox::Show("wglMakeCurrent Failed"); 108 | return 0; 109 | } 110 | 111 | 112 | return 1; 113 | } 114 | }; 115 | } -------------------------------------------------------------------------------- /EpidemicsRunner/Windows/Resource.h: -------------------------------------------------------------------------------- 1 | //{{NO_DEPENDENCIES}} 2 | // Von Microsoft Visual C++ generierte Includedatei. 3 | // Verwendet von app.rc 4 | -------------------------------------------------------------------------------- /EpidemicsRunner/Windows/UG_EpidemicsRunner.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio Version 16 4 | VisualStudioVersion = 16.0.31025.194 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "UG_EpidemicsRunner", "UG_EpidemicsRunner.vcxproj", "{29681B47-DB04-4AFF-91E5-F9EFD3CF2E2B}" 7 | EndProject 8 | Global 9 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 10 | Debug|x64 = Debug|x64 11 | Release|x64 = Release|x64 12 | EndGlobalSection 13 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 14 | {29681B47-DB04-4AFF-91E5-F9EFD3CF2E2B}.Debug|x64.ActiveCfg = Debug|x64 15 | {29681B47-DB04-4AFF-91E5-F9EFD3CF2E2B}.Debug|x64.Build.0 = Debug|x64 16 | {29681B47-DB04-4AFF-91E5-F9EFD3CF2E2B}.Release|x64.ActiveCfg = Release|x64 17 | {29681B47-DB04-4AFF-91E5-F9EFD3CF2E2B}.Release|x64.Build.0 = Release|x64 18 | EndGlobalSection 19 | GlobalSection(SolutionProperties) = preSolution 20 | HideSolutionNode = FALSE 21 | EndGlobalSection 22 | GlobalSection(ExtensibilityGlobals) = postSolution 23 | SolutionGuid = {B93851B0-D41A-4711-8317-6926E293BEBD} 24 | EndGlobalSection 25 | EndGlobal 26 | -------------------------------------------------------------------------------- /EpidemicsRunner/Windows/UG_EpidemicsRunner.vcxproj.filters: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | {4FC737F1-C7A5-4376-A066-2A32D752A2FF} 6 | cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx 7 | 8 | 9 | {93995380-89BD-4b04-88EB-625FBE52EBFB} 10 | h;hh;hpp;hxx;hm;inl;inc;ipp;xsd 11 | 12 | 13 | {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} 14 | rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms 15 | 16 | 17 | 18 | 19 | Ressourcendateien 20 | 21 | 22 | 23 | 24 | Headerdateien 25 | 26 | 27 | Headerdateien 28 | 29 | 30 | Headerdateien 31 | 32 | 33 | Headerdateien 34 | 35 | 36 | Headerdateien 37 | 38 | 39 | Headerdateien 40 | 41 | 42 | Headerdateien 43 | 44 | 45 | Headerdateien 46 | 47 | 48 | Headerdateien 49 | 50 | 51 | Headerdateien 52 | 53 | 54 | Headerdateien 55 | 56 | 57 | Headerdateien 58 | 59 | 60 | Headerdateien 61 | 62 | 63 | Headerdateien 64 | 65 | 66 | 67 | 68 | Quelldateien 69 | 70 | 71 | Quelldateien 72 | 73 | 74 | Quelldateien 75 | 76 | 77 | Quelldateien 78 | 79 | 80 | Quelldateien 81 | 82 | 83 | Quelldateien 84 | 85 | 86 | Quelldateien 87 | 88 | 89 | Quelldateien 90 | 91 | 92 | Quelldateien 93 | 94 | 95 | Quelldateien 96 | 97 | 98 | Quelldateien 99 | 100 | 101 | 102 | 103 | Ressourcendateien 104 | 105 | 106 | 107 | 108 | Headerdateien 109 | 110 | 111 | Headerdateien 112 | 113 | 114 | Headerdateien 115 | 116 | 117 | Headerdateien 118 | 119 | 120 | Headerdateien 121 | 122 | 123 | Headerdateien 124 | 125 | 126 | Headerdateien 127 | 128 | 129 | -------------------------------------------------------------------------------- /EpidemicsRunner/Windows/UG_EpidemicsRunner.vcxproj.user: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | -------------------------------------------------------------------------------- /EpidemicsRunner/Windows/app.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/devanshr/Epidemics/b1a95003a0a280c25d4e0e5ada13381ea5a260db/EpidemicsRunner/Windows/app.ico -------------------------------------------------------------------------------- /EpidemicsRunner/Windows/app.rc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/devanshr/Epidemics/b1a95003a0a280c25d4e0e5ada13381ea5a260db/EpidemicsRunner/Windows/app.rc -------------------------------------------------------------------------------- /EpidemicsRunner/Windows/pch.cpp: -------------------------------------------------------------------------------- 1 | // pch.cpp: Quelldatei, die dem vorkompilierten Header entspricht 2 | 3 | #include "pch.h" 4 | 5 | // Bei der Verwendung vorkompilierter Header ist diese Quelldatei für eine erfolgreiche Kompilierung erforderlich. 6 | -------------------------------------------------------------------------------- /EpidemicsRunner/Windows/pch.h: -------------------------------------------------------------------------------- 1 | // pch.h: Dies ist eine vorkompilierte Headerdatei. 2 | // Die unten aufgeführten Dateien werden nur einmal kompiliert, um die Buildleistung für zukünftige Builds zu verbessern. 3 | // Dies wirkt sich auch auf die IntelliSense-Leistung aus, Codevervollständigung und viele Features zum Durchsuchen von Code eingeschlossen. 4 | // Die hier aufgeführten Dateien werden jedoch ALLE neu kompiliert, wenn mindestens eine davon zwischen den Builds aktualisiert wird. 5 | // Fügen Sie hier keine Dateien hinzu, die häufig aktualisiert werden sollen, da sich so der Leistungsvorteil ins Gegenteil verkehrt. 6 | 7 | #ifndef PCH_H 8 | #define PCH_H 9 | #define NOMINMAX //somehow Windows.h is included here. If this is not included, numeric_limist::min will not work due to conflicting macro definition, see https://stackoverflow.com/questions/4913922/possible-problems-with-nominmax-on-visual-c 10 | // Fügen Sie hier Header hinzu, die vorkompiliert werden sollen. 11 | 12 | #endif //PCH_H 13 | -------------------------------------------------------------------------------- /EpidemicsRunner/Windows/plotter.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include 3 | 4 | 5 | namespace ug{ 6 | namespace epi { 7 | 8 | 9 | 10 | template 11 | class Plotter { 12 | using F = typename T::value_type; 13 | 14 | public: 15 | void plot(E obj, const T& times, const T& data, System::String^ name, int dim, int col) { 16 | //obj->chart1->Invalidate(); 17 | for (int i = 0; i < times.size(); i++) { 18 | 19 | System::Windows::Forms::DataVisualization::Charting::DataPoint^ dataPoint1 = (gcnew System::Windows::Forms::DataVisualization::Charting::DataPoint(times[i], 20 | data[i*dim+col])); 21 | 22 | obj->chart1->Series[name]->Points->Add(dataPoint1); 23 | } 24 | } 25 | bool plot(E obj,const T* data, System::String^ name, int col, int selected_col) { 26 | if (col == 0) { 27 | MessageBox::Show(L"Plotting error: Selected column cannot be zero\n"); 28 | return false; 29 | } 30 | //obj->chart1->Invalidate(); 31 | int rows = data->size()/col; 32 | 33 | for (int i = 0; i < rows; i++) { 34 | 35 | System::Windows::Forms::DataVisualization::Charting::DataPoint^ dataPoint1 = (gcnew System::Windows::Forms::DataVisualization::Charting::DataPoint((*data)[i*col], 36 | (*data)[i * col + selected_col])); 37 | obj->chart1->Series[name]->Points->Add(dataPoint1); 38 | } 39 | } 40 | 41 | }; 42 | 43 | 44 | template 45 | class PlotterOld { 46 | private: 47 | using F = typename T::value_type; 48 | 49 | int grid_x = 0; 50 | int grid_y = 0; 51 | int window_length; 52 | int window_height; 53 | 54 | public: 55 | PlotterOld(int _grid_x, int _grid_y, int _window_length, int _window_height):grid_x(_grid_x),grid_y(_grid_y),window_height(_window_height),window_length(_window_length) { 56 | 57 | } 58 | void plot(E& obj,const T& times, const T& data, int dim, int col) { 59 | ////auto min = std::min_element(times.begin(), times.end()); 60 | // auto max = std::max_element(times.begin(), times.end()); 61 | size_t n = times.size(); 62 | F min_t = times[0]; 63 | F max_t = times[n - 1]; 64 | 65 | //F min_d= *std::min_element(times.begin(), times.end()); 66 | //F max_d= *std::max_element(data.begin(), data.end()); 67 | F min_d = 0; 68 | F max_d = 800000; 69 | 70 | 71 | auto world_to_grid = [&](float wt, float wy, float* res) { 72 | float st = (wt - min_t) / (max_t - min_t); 73 | float sd= (wy - min_d) / (max_t - min_d); 74 | int gt = grid_x + st * window_length; 75 | int gy = -(grid_y + sd * window_height)+window_height-1; 76 | res[0] = gt; 77 | res[1] = gy; 78 | }; 79 | 80 | 81 | 82 | // array^ managedArray = gcnew array(10); 83 | // array^ points = gcnew array(2); 84 | // points[0].X = 0; 85 | float res[4]; 86 | for (int i = 0; i < n-1; i+=2) { 87 | world_to_grid(times[i], data[(i * dim) + col], res); 88 | world_to_grid(times[i+1], data[((i+1) * dim) + col], res); 89 | System::Drawing::PointF point1(0, window_height-1); 90 | System::Drawing::PointF point2(10, window_height-1); 91 | // System::Drawing::PointF point1(0, window_height); 92 | // System::Drawing::PointF point2(50, 50); 93 | //443, 261 94 | obj->DrawLine(System::Drawing::Pens::Black, point1, point2); 95 | } 96 | //obj->DrawLines(System::Drawing::Pens::Black, points); 97 | // Draw line to screen. 98 | // obj->DrawLine(System::Drawing::Pens::Black, point1, point2); 99 | 100 | 101 | } 102 | }; 103 | } 104 | } 105 | -------------------------------------------------------------------------------- /EpidemicsRunner/Windows/utility.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include 3 | #include 4 | #include 5 | 6 | namespace ug { 7 | namespace epi { 8 | 9 | 10 | void create_evaluate_lua(std::string path, std::string textbody, std::vector& names_of_constants,std::vector& values_of_constants, std::vector& names_of_variables, std::vector& names_of_inits, std::vector& values_of_inits, double stepsize) { 11 | 12 | std::ofstream lua_output; 13 | std::ofstream general_output; 14 | lua_output.open(path + "/evaluate.lua"); 15 | 16 | lua_output << R"(PrintBuildConfiguration() 17 | 18 | ----------------------------------------------------------------- 19 | -- define Home-Directories 20 | ---------------------------------------------------------------- 21 | ug4_home = ug_get_root_path().."/" 22 | 23 | --common_scripts = app_home.."scripts/" 24 | --geom_home = app_home.."geometry/" 25 | 26 | ----------------------------------------------------------------- 27 | 28 | 29 | --Load Parameters 30 | local pars = "parameters.lua" 31 | 32 | local parmfileloaded= false 33 | if(pfile ~= "") then 34 | local file = assert(loadfile(pars)) 35 | file() 36 | parmfileloaded = true 37 | end 38 | if parmfileloaded == false then 39 | print("Parameter file could not be loaded") 40 | end 41 | 42 | --Start of parameter, constants and initial values definitions 43 | 44 | )"; 45 | lua_output << "h=" << stepsize << "\n"; 46 | 47 | for (int i = 0; i < names_of_inits.size(); i++) { 48 | lua_output << names_of_inits[i] << "=" << values_of_inits[i] << "\n"; 49 | } 50 | 51 | for (int i = 0; i < names_of_constants.size(); i++) { 52 | lua_output << names_of_constants[i] << "=" << values_of_constants[i] << "\n"; 53 | } 54 | 55 | for (int i = 0; i < names_of_variables.size(); i++) { 56 | lua_output << names_of_variables[i] << "=parameters."< 68 | void load_csv_data_on_click(E obj, int number_of_prior_plotted_lines) 69 | { 70 | System::Windows::Forms::OpenFileDialog fileDialog; 71 | System::IO::Stream^ win_stream; 72 | fileDialog.Title = L"Open Experimental Data"; 73 | fileDialog.Filter = "TXT files|*.txt"; 74 | 75 | //Remove old plots of experimental data 76 | if (obj->user_datapoints != nullptr && obj->user_names != nullptr && obj->user_cols != nullptr) { 77 | 78 | for (int i = 0; i < obj->user_names->size() - 1; i++) { 79 | obj->chart1->Series->RemoveAt(number_of_prior_plotted_lines); 80 | } 81 | } 82 | 83 | if (obj->user_datapoints != nullptr) { 84 | delete obj->user_datapoints; 85 | } 86 | if (obj->user_names != nullptr) { 87 | delete obj->user_names; 88 | } 89 | if (obj->user_cols != nullptr) { 90 | delete obj->user_cols; 91 | } 92 | obj->user_datapoints = new std::vector; 93 | obj->user_names = new std::vector; 94 | obj->user_cols = new int(0); 95 | co::ErrorCode err; 96 | if (fileDialog.ShowDialog() == System::Windows::Forms::DialogResult::OK) 97 | { 98 | try { 99 | win_stream = fileDialog.OpenFile(); 100 | if (win_stream != nullptr) { 101 | auto str = win_stream->ToString(); 102 | str = fileDialog.FileName->ToString(); 103 | std::string file_location = msclr::interop::marshal_as(str); 104 | err = co::utility::parse_csv_names*, std::vector*>(file_location, obj->user_datapoints, obj->user_names, "", obj->user_cols); 105 | } 106 | 107 | } 108 | catch (System::Exception^ e) { 109 | MessageBox::Show(L"Error: Could not read file." + e); 110 | } 111 | 112 | if (err != co::ErrorCode::NoError) { 113 | 114 | MessageBox::Show(L"The input file has the wrong data layout. It must be comma or tab separated. In addition, the first line must start with a # and indicate the column names."); 115 | } 116 | else 117 | { 118 | if (obj->user_datapoints != nullptr && obj->user_names != nullptr && obj->user_cols != nullptr) 119 | { 120 | for (int i = 1; i < obj->user_names->size(); i++) 121 | { 122 | System::Windows::Forms::DataVisualization::Charting::Series^ seriesExp = (gcnew System::Windows::Forms::DataVisualization::Charting::Series()); 123 | obj->chart1->Series->Add(seriesExp); 124 | seriesExp->ChartArea = L"ChartArea1"; 125 | seriesExp->ChartType = System::Windows::Forms::DataVisualization::Charting::SeriesChartType::Point; 126 | seriesExp->Legend = L"Legend1"; 127 | // seriesExp->ShadowColor = System::Drawing::Color::Pink; 128 | auto var = gcnew String((*(obj->user_names))[i].c_str()); 129 | seriesExp->Name = var; 130 | } 131 | } 132 | } 133 | 134 | } 135 | } 136 | } 137 | 138 | 139 | } -------------------------------------------------------------------------------- /Readme.md: -------------------------------------------------------------------------------- 1 | # Epidemics # 2 | 3 | **Epidemics** is a [UG4 Plugin](https://github.com/UG4) that provides various algorithms 4 | for epidemics modeling. 5 | 6 | # Contents 7 | This document should give a broad overview on **Epidemics** combined with some usage examples. 8 | It also provides some brief notes concerning the installation of the plugin. 9 | 10 | * [Installation Notes](#installation) 11 | * [Description](#description) 12 | * [Example](#description) 13 | 14 | Sample problems can be found in the Samples Folder. 15 | 16 | An optional GUI has been created for the use of estimation or prototyping. This GUI has been shown to work on 17 | Windows, Linux and MacOS. 18 | 19 | drawing 20 | drawing 21 | drawing 22 | 23 | # Installation Notes 24 | ## General 25 | The installation equals the standard process for adding UG4 plugins described on [the ughub GitHub page.](https://github.com/UG4/ughub) 26 | Due to the usage of OS specific functions for process generation, the plugin is not necessarily multiplatform. 27 | In its current form, the package has been shown to work on Windows 10, Linux Ubuntu and Raspberry Pi OS. 28 | The GCC, Apple Clang and MSVC compilers were tested. 29 | It is assumed that the package also works for older compiler versions that support C++17. On Linux Ubuntu, 30 | only GCC was tested. GCC and Clang might require special flags 31 | set in the build process, which is explained below. The utilized Visual Studio compiler has not exhibited such necessities 32 | but older versions might. 33 | 34 | ## Installation notes for GCC 35 | Follow the steps on [the ughub GitHub page.](https://github.com/UG4/ughub) If errors occur, 36 | proceed with this text. 37 | The plugin makes use of C++ std::threads. This might necessitates activating the -pthread flag 38 | to the build process for ug4. Within your UG4 install library, go to 39 | 40 | cd ug4/ugcore/cmake/ 41 | 42 | and open 43 | 44 | ug_includes.cmake 45 | 46 | Now search for 47 | ``` 48 | elseif("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU") 49 | add_cxx_flag("-Wall") 50 | add_cxx_flag("-Wno-multichar") 51 | add_cxx_flag("-Wno-unused-local-typedefs") 52 | add_cxx_flag("-Wno-maybe-uninitialized") 53 | ``` 54 | and add 55 | 56 | add_cxx_flag("-pthread") 57 | 58 | to the GNU include statements. Now rebuild UG4 as described on [the ughub GitHub page.](https://github.com/UG4/ughub) The plugin should 59 | now be installed without any issues. 60 | 61 | ## Installation notes for Clang 62 | Follow the steps on [the ughub GitHub page.](https://github.com/UG4/ughub). If errors occur, 63 | proceed with this text. 64 | The plugin makes use of C++11 features, like std::threads and constexpr. This might necessitates activating the -std=c++11 flag 65 | to the build process for ug4. Within your UG4 install library, go to 66 | 67 | cd ug4/ugcore/cmake/ 68 | 69 | and open 70 | 71 | ug_includes.cmake 72 | 73 | Now search for 74 | ``` 75 | elseif("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang") 76 | add_cxx_flag("-Wall") 77 | add_cxx_flag("-Wno-multichar") 78 | ``` 79 | and add 80 | 81 | set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11") 82 | 83 | to the Clang include statements. This ensures that the -std=c++11 flag is only added to the C++ compiler and not 84 | the C compiler in the build process. Now rebuild UG4 as described on [the ughub GitHub page.](https://github.com/UG4/ughub). The plugin should 85 | now be installed without any issues. 86 | 87 | 88 | # Description 89 | The following algorithms are currently implemented: 90 | 91 | |Name|Description| 92 | |---|---| 93 | |SIR|Classical Susceptible-Infected-Recovered-Deaths ODE Model| 94 | |SEIRD| Extended SIR model accounting for a new class (Exposed) amongst other additions| 95 | |SEIRD_VARA|Extended SRI model paired with variable (over time) infection rate| 96 | |SEIRD_PDE| A PDE formulation of the SEIRD model, discretized using Finite Differences| 97 | -------------------------------------------------------------------------------- /SECURITY.md: -------------------------------------------------------------------------------- 1 | # Devanshr Open Source Security Policy 2 | 3 | Devanshr likes his software to be as secure as possible, including all his GitHub repositories. 4 | 5 | ## Reporting a Vulnerability 6 | 7 | To report an issue, please click on the GitHub Security Advisory [Report a Vulnerability](https://github.com/devanshr/epidemics/security/advisories/new) button. 8 | 9 | Devanshr will send a response indicating how your report will be handled. Devanshr will keep you informed about all stages 10 | of the review audit until a resolution to your issue is found. 11 | You will also be notified if your report has been declined. 12 | 13 | Please report bugs to Third-Party dependencies to the appropriate maintainers. 14 | 15 | If you think you have found a vulnerability in Devanshr's repository, please follow the steps outlined in the Security Policy below. 16 | 17 | ## Devanshr's Security Notification Process 18 | 19 | ### Warning 20 | 21 | These notifications are warnings that are distributed to inform about newly disclosed security vulnearbilities affecting Devanshr's repositories. The warnings usually 22 | contain little information because the security implications may not even be fully clear to Devanshr himself yet. 23 | 24 | The intend of the warnings is that users of Devanshr's software can do preliminary planning to obtain security fixers to their users are quickly as possible. 25 | 26 | All warnings will be distributed via my mailing list. You can join the mailing list by sending a mail to devanshr@hotmail.com. 27 | 28 | ### Public Notifications 29 | 30 | Public notifications give additional information about a found vulnerability, e.g. how it was discovered, affected features and potentially mitigation strategies. 31 | 32 | These announcement will potentially be accompanied by a new release which fixes the issue. 33 | 34 | All public notifications will be distributed via my mailing list. You can join the mailing list by sending a mail to devanshr@hotmail.com. 35 | 36 | -------------------------------------------------------------------------------- /Samples/GUI/ODE_Optimization_Sample_1/expData/Erkrankte.txt: -------------------------------------------------------------------------------- 1 | 7 2 | 10 3 | 13 4 | 18 5 | 19 6 | 24 7 | 25 8 | 39 9 | 53 10 | 90 11 | 134 12 | 225 13 | 311 14 | 328 15 | 450 16 | 609 17 | 812 18 | 1025 19 | 1240 20 | 1367 21 | 1457 22 | 1732 23 | 1961 24 | 2195 25 | 2498 26 | 2808 27 | 2984 28 | 3142 29 | 3347 30 | 3630 31 | -------------------------------------------------------------------------------- /Samples/GUI/ODE_Optimization_Sample_1/expData/Positive.txt: -------------------------------------------------------------------------------- 1 | #t,val 2 | 0,7 3 | 1,11 4 | 2,14 5 | 3,19 6 | 4,20 7 | 5,25 8 | 6,26 9 | 7,41 10 | 8,56 11 | 9,95 12 | 10,141 13 | 11,237 14 | 12,327 15 | 13,345 16 | 14,474 17 | 15,641 18 | 16,855 19 | 17,1079 20 | 18,1305 21 | 19,1439 22 | 20,1534 23 | 21,1823 24 | 22,2064 25 | 23,2310 26 | 24,2629 27 | 25,2956 28 | 26,3141 29 | 27,3307 30 | 28,3523 31 | 29,3821 32 | -------------------------------------------------------------------------------- /Samples/GUI/ODE_Optimization_Sample_1/expData/Verstorbene.txt: -------------------------------------------------------------------------------- 1 | #t,val 2 | 0,0 3 | 1,0 4 | 2,0 5 | 3,0 6 | 4,0 7 | 5,0 8 | 6,0 9 | 7,0 10 | 8,0 11 | 9,0 12 | 10,0 13 | 11,0 14 | 12,0 15 | 13,0 16 | 14,1 17 | 15,1 18 | 16,2 19 | 17,3 20 | 18,7 21 | 19,12 22 | 20,16 23 | 21,20 24 | 22,28 25 | 23,33 26 | 24,44 27 | 25,56 28 | 26,61 29 | 27,74 30 | 28,87 31 | 29,103 -------------------------------------------------------------------------------- /Samples/GUI/ODE_Optimization_Sample_1/subset_sim.lua: -------------------------------------------------------------------------------- 1 | # Specifiy the dimensions that are being optimized from the Model output. 2 | 3 | filename = "output.txt" 4 | selected_columns = [0,2,5], 5 | -------------------------------------------------------------------------------- /Samples/GUI/ODE_Optimization_Sample_1/subset_target.lua: -------------------------------------------------------------------------------- 1 | # Specifiy the selected coloumns from the Experimental data that are used for the optimization. 2 | # The first 3 columns refer to time, posX,posY 3 | # Please add addtional files in the order shown. 4 | 5 | filename="expData/Positive.txt" 6 | selected_columns=[0,1] 7 | filename="expData/Verstorbene.txt" 8 | selected_columns=[1] 9 | -------------------------------------------------------------------------------- /Samples/GUI/PDE_EDITOR_Initial_Condition_Images_Sample_1/Explanation.txt: -------------------------------------------------------------------------------- 1 | These files can be used to preload the initial values vector u0 loaded from the SEIRDPDE_Editor class. 2 | Images must be in square format and .png. -------------------------------------------------------------------------------- /Samples/GUI/PDE_EDITOR_Initial_Condition_Images_Sample_1/Initial_Recovered.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/devanshr/Epidemics/b1a95003a0a280c25d4e0e5ada13381ea5a260db/Samples/GUI/PDE_EDITOR_Initial_Condition_Images_Sample_1/Initial_Recovered.png -------------------------------------------------------------------------------- /Samples/GUI/PDE_EDITOR_Initial_Condition_Images_Sample_1/Initial_Susceptibles.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/devanshr/Epidemics/b1a95003a0a280c25d4e0e5ada13381ea5a260db/Samples/GUI/PDE_EDITOR_Initial_Condition_Images_Sample_1/Initial_Susceptibles.png -------------------------------------------------------------------------------- /Samples/GUI/PDE_EDITOR_Initial_Condition_Images_Sample_1/Initial_Susceptibles_test.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/devanshr/Epidemics/b1a95003a0a280c25d4e0e5ada13381ea5a260db/Samples/GUI/PDE_EDITOR_Initial_Condition_Images_Sample_1/Initial_Susceptibles_test.png -------------------------------------------------------------------------------- /Samples/GUI/PDE_EDITOR_Initial_Condition_Images_Sample_2/Explanation.txt: -------------------------------------------------------------------------------- 1 | These files can be used to preload the initial values vector u0 loaded from the SEIRDPDE_Editor class. 2 | Images must be in square format and .png. -------------------------------------------------------------------------------- /Samples/GUI/PDE_EDITOR_Initial_Condition_Images_Sample_2/GIMP File/Hesse.xcf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/devanshr/Epidemics/b1a95003a0a280c25d4e0e5ada13381ea5a260db/Samples/GUI/PDE_EDITOR_Initial_Condition_Images_Sample_2/GIMP File/Hesse.xcf -------------------------------------------------------------------------------- /Samples/GUI/PDE_EDITOR_Initial_Condition_Images_Sample_2/Initial_Exposed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/devanshr/Epidemics/b1a95003a0a280c25d4e0e5ada13381ea5a260db/Samples/GUI/PDE_EDITOR_Initial_Condition_Images_Sample_2/Initial_Exposed.png -------------------------------------------------------------------------------- /Samples/GUI/PDE_EDITOR_Initial_Condition_Images_Sample_2/Initial_Susceptibles.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/devanshr/Epidemics/b1a95003a0a280c25d4e0e5ada13381ea5a260db/Samples/GUI/PDE_EDITOR_Initial_Condition_Images_Sample_2/Initial_Susceptibles.png -------------------------------------------------------------------------------- /Samples/GUI/PDE_Optimization_Sample_1/expData/expData0.txt: -------------------------------------------------------------------------------- 1 | #time posx posy Density Susceptibles Density Exposed Density Deceased 2 | 0 0 0 0.00453999 1.38879e-10 0 3 | 0 0 1 0.00453999 1.38879e-10 0 4 | 0 1 0 0.00453999 1.38879e-10 0 5 | 0 1 1 0.00453999 1.38879e-10 0 6 | 0 0.5 1 0.673795 3.72665e-05 0 7 | 0 0.5 0 0.673795 3.72665e-05 0 8 | 0 0 0.5 0.673795 3.72665e-05 0 9 | 0 1 0.5 0.673795 3.72665e-05 0 10 | 0 0.5 0.5 100 10 0 11 | 0 0.5 0.2 16.5299 0.11109 0 12 | 0 0.5 0.8 16.5299 0.11109 0 13 | 0 0 0.2 0.111378 4.13994e-07 0 14 | 0 0 0.8 0.111378 4.13994e-07 0 15 | 0 1 0.8 0.111378 4.13994e-07 0 16 | 0 1 0.2 0.111378 4.13994e-07 0 17 | 0 0.7 0.5 44.9329 1.35335 0 18 | 0 0.3 0.5 44.9329 1.35335 0 19 | 0 0.5 0.4 81.8731 6.06531 0 20 | 0 0.5 0.6 81.8731 6.06531 0 21 | 0 0.5 0.1 4.07622 0.00335463 0 22 | 0 0.5 0.9 4.07622 0.00335463 0 -------------------------------------------------------------------------------- /Samples/GUI/PDE_Optimization_Sample_1/expData/expData1.txt: -------------------------------------------------------------------------------- 1 | #time posx posy Density Susceptibles Density Exposed Density Deceased 2 | 0.5 0 0 0.00453999 9.17852e-11 6.71341e-12 3 | 0.5 0 1 0.00453999 9.17852e-11 6.71341e-12 4 | 0.5 1 0 0.00453999 9.17852e-11 6.71341e-12 5 | 0.5 1 1 0.00453999 9.17852e-11 6.71341e-12 6 | 0.5 0.5 1 0.673794 2.53179e-05 1.8182e-06 7 | 0.5 0.5 0 0.673794 2.53179e-05 1.8182e-06 8 | 0.5 0 0.5 0.673794 2.53179e-05 1.8182e-06 9 | 0.5 1 0.5 0.673794 2.53179e-05 1.8182e-06 10 | 0.5 0.5 0.5 16.1294 74.9242 1.87986 11 | 0.5 0.5 0.2 16.4419 0.145684 0.00683438 12 | 0.5 0.5 0.8 16.4419 0.145684 0.00683438 13 | 0.5 0 0.2 0.111378 2.74814e-07 2.00419e-08 14 | 0.5 0 0.8 0.111378 2.74814e-07 2.00419e-08 15 | 0.5 1 0.8 0.111378 2.74814e-07 2.00419e-08 16 | 0.5 1 0.2 0.111378 2.74814e-07 2.00419e-08 17 | 0.5 0.7 0.5 39.6481 2.43331 0.132214 18 | 0.5 0.3 0.5 39.6481 2.43331 0.132214 19 | 0.5 0.5 0.4 29.126 48.3164 0.998771 20 | 0.5 0.5 0.6 29.126 48.3164 0.998771 21 | 0.5 0.5 0.1 4.07572 0.00262291 0.000171666 22 | 0.5 0.5 0.9 4.07572 0.00262291 0.000171666 -------------------------------------------------------------------------------- /Samples/GUI/PDE_Optimization_Sample_1/subset_sim.lua: -------------------------------------------------------------------------------- 1 | # Specifiy the dimensions that are being optimized from the Model output. 2 | 3 | filenprefix = "output" 4 | selected_dimensions = [0,1,2], 5 | -------------------------------------------------------------------------------- /Samples/GUI/PDE_Optimization_Sample_1/subset_target.lua: -------------------------------------------------------------------------------- 1 | # Specifiy the selected columns from the Experimental data that are used for the optimization. 2 | # The first 3 columns refer to time, posX,posY 3 | # Please add addtional files in the order shown. 4 | 5 | filename="expData/expData0.txt" 6 | selected_columns=[0,1,2,3,4,5] 7 | filename="expData/expData1.txt" 8 | -------------------------------------------------------------------------------- /Samples/main.cpp: -------------------------------------------------------------------------------- 1 | #include "../models/sir.h" 2 | #include "../models/writer.h" 3 | #include 4 | #include 5 | 6 | /* 7 | This function evaluates the SIR model and writes the output to file. 8 | */ 9 | 10 | int main(int argc, char *argv[]){ 11 | 12 | double tau=0.356035567977659; 13 | double theta=4.14932000304998e-07; 14 | double alpha=4.95954479066937e-07; 15 | 16 | ug::epi::SIR> sir_model(alpha,tau,theta); 17 | 18 | std::vector u0={753056,2714,0,72}; 19 | double t_start=0; 20 | double t_end=42; 21 | 22 | auto result =sir_model.run(t_start,u0,t_end); 23 | auto timepoints=std::get<0>(result); 24 | auto data=std::get<1>(result); 25 | ug::epi::write_data(argv[0], "_test.txt", timepoints, data,sir_model.names); 26 | } 27 | -------------------------------------------------------------------------------- /Samples/main_seird.cpp: -------------------------------------------------------------------------------- 1 | #include "../models/seird.h" 2 | #include "../models/writer.h" 3 | #include 4 | #include 5 | 6 | /* 7 | This function evaluates the SEIRD model and writes the output to file. 8 | */ 9 | 10 | int main(int argc, char *argv[]){ 11 | 12 | double alpha=4.95954479066937e-07; 13 | double kappa=0.356035567977659; 14 | double theta=4.14932000304998e-07; 15 | double qq=8; 16 | double pp=5; 17 | 18 | ug::epi::SEIRD> seird_model(alpha,kappa,theta,qq,pp); 19 | 20 | std::vector u0={753056,2714,0,0,72}; // Inital Values: Susceptibles, Exposed, Infected, Recoverd, Deceased 21 | double t_start=0; 22 | double t_end=42; 23 | 24 | auto result=seird_model.run_linear_implicit(t_start,u0,t_end); 25 | auto timepoints=std::get<0>(result); 26 | auto data=std::get<1>(result); 27 | std::cout<<"Optimization done\n"; 28 | ug::epi::write_data(argv[0], "_test.txt", timepoints, data,seird_model.names); 29 | } 30 | -------------------------------------------------------------------------------- /Samples/main_seird_pde.cpp: -------------------------------------------------------------------------------- 1 | #include "../models/seird_pde.h" 2 | #include "../models/writer.h" 3 | #include 4 | #include 5 | #include 6 | #include 7 | #include 8 | 9 | /* 10 | The main() function runs the SEIRD_PDE model and writes the output to file. 11 | */ 12 | 13 | template 14 | void set_radial_values(T& u0, typename T::value_type x_points, typename T::value_type y_points, typename T::value_type dimX, typename T::value_type dimY,typename T::value_type hx, typename T::value_type radius, typename T::value_type val,int current_dimension) { 15 | using F = typename T::value_type; 16 | for (int i = 0; i < y_points; i++) { 17 | for (int j = 0; j < x_points; j++) { 18 | F worldX =dimY- ((i) / (y_points-1.0)) * dimY; 19 | F worldY = ((j) / (x_points-1.0)) * dimX; 20 | int offset = current_dimension*x_points*y_points; 21 | F a = (worldX - 0.5 * dimX); 22 | F b = (worldY - 0.5 * dimY); 23 | F r = 0.2; 24 | if ((a * a + b * b) <= r*r) { 25 | u0[i * x_points + j+offset] = val; 26 | } 27 | else { 28 | u0[i * x_points + j+offset] = 0; 29 | } 30 | } 31 | 32 | } 33 | } 34 | 35 | 36 | template 37 | void set_gaussian_values(T& u0, typename T::value_type x_points, typename T::value_type y_points, typename T::value_type dimX, typename T::value_type dimY,typename T::value_type hx, typename T::value_type radius, typename T::value_type val,int current_dimension) { 38 | using F = typename T::value_type; 39 | for (int i = 0; i < y_points; i++) { 40 | for (int j = 0; j < x_points; j++) { 41 | F worldX =dimY- ((i) / (y_points-1.0)) * dimY; 42 | F worldY = ((j) / (x_points-1.0)) * dimX; 43 | int offset = current_dimension*x_points*y_points; 44 | 45 | 46 | F a = (worldX - 0.5 * dimX); 47 | F b = (worldY - 0.5 * dimY); 48 | F sigma=radius; 49 | F x=(a * a + b * b); 50 | u0[i * x_points + j+offset] = val*std::exp(-sigma*x); 51 | 52 | } 53 | 54 | } 55 | } 56 | 57 | template 58 | T initial_values(typename T::value_type dimX, typename T::value_type dimY, typename T::value_type hx) { 59 | using F = typename T::value_type; 60 | 61 | size_t x_points = (dimX / hx) + 1; 62 | size_t y_points = (dimY / hx) + 1; 63 | 64 | size_t nVars = ((dimX / hx) + 1) * ((dimY / hx) + 1); 65 | std::vector u0(nVars*5,F(0)); //number of vertices in discretization 66 | 67 | //Sets initial values for first dimension 68 | F r1 = 0.1; 69 | F v1 = 100; 70 | set_gaussian_values(u0, x_points, y_points, dimX, dimY, hx, r1, v1,0); 71 | 72 | //Sets initial values for second dimension 73 | F r2 = 100; 74 | F v2 = 20; 75 | set_gaussian_values(u0, x_points, y_points, dimX, dimY, hx, r2,v2, 1); 76 | 77 | 78 | return u0; 79 | } 80 | 81 | template 82 | void print_initialvalues(const T& u, typename T::value_type dimX, typename T::value_type dimY, typename T::value_type hx, int current_dimension) { 83 | size_t x_points = (dimX / hx) + 1; 84 | size_t y_points = (dimY / hx) + 1; 85 | int offset = current_dimension * x_points * y_points; 86 | for (int i = 0; i < x_points; i++) { 87 | 88 | for (int j = 0; j < y_points; j++) { 89 | std::cout << u[i * x_points + j+offset]<< "\t"; 90 | } 91 | std::cout << "\n"; 92 | } 93 | } 94 | 95 | 96 | void image_to_grid(int index_image_i, int index_image_j, int image_width, int image_height, int grid_width, int grid_height, int& i_g, int& j_g){ 97 | float ratio_i=index_image_i/(image_width-1.0); 98 | float ratio_j=index_image_j/(image_height-1.0); 99 | 100 | i_g=ratio_i*(grid_width-1); 101 | j_g=ratio_j*(grid_height-1); 102 | } 103 | 104 | void determine_color(double val, double min_val, double max_val, int& r, int& g, int& b){ 105 | float ratio=(val-min_val)/(max_val-min_val); 106 | //std::cout<<"val:"<,ug::epi::seird::Geometry::Plane> seird_model(alpha, kappa, theta, sigma,tau,diffusion); 126 | 127 | double t_start = 0; 128 | double t_end = 1; 129 | double h=0.1; 130 | std::vector u0 = initial_values>(1, 1, h); 131 | std::cout << "Initial values on the grid:" << "\n"; 132 | for (int i = 0; i < 5; i++) { 133 | std::cout << "Initial values dimension: " << i << "\n"; 134 | print_initialvalues(u0, 1, 1, h, i); 135 | std::cout << "\n"; 136 | } 137 | 138 | seird_model.change_step_size_spatial(h); 139 | seird_model.change_step_size_time(h); 140 | 141 | 142 | std::string filepath=argv[0]; 143 | 144 | std::string filename="_output"; 145 | 146 | seird_model.set_store_to_file(true,filepath,filename); 147 | 148 | seird_model.run(t_start, u0, t_end); 149 | 150 | } 151 | -------------------------------------------------------------------------------- /Samples/main_seird_variable_alpha.cpp: -------------------------------------------------------------------------------- 1 | #include "../models/seird_variable_alpha.h" 2 | #include "../models/writer.h" 3 | #include 4 | #include 5 | 6 | /* 7 | This function evaluates the SEIRD model and writes the output to file. 8 | */ 9 | 10 | int main(int argc, char *argv[]){ 11 | 12 | std::vector alpha={4.95954479066937e-07, 1e-5}; 13 | std::vector alpha_limits={20}; 14 | double kappa=0.356035567977659; 15 | double theta=4.14932000304998e-07; 16 | double qq=8; 17 | double pp=5; 18 | 19 | ug::epi::SEIRD_VARA> seird_model(alpha, alpha_limits,kappa,theta,qq,pp); 20 | 21 | std::vector u0={753056,2714,0,0,72}; // Inital Values: Susceptibles, Exposed, Infected, Recoverd, Deceased 22 | double t_start=0; 23 | double t_end=42; 24 | 25 | auto result=seird_model.run_linear_implicit(t_start,u0,t_end); 26 | auto timepoints=std::get<0>(result); 27 | auto data=std::get<1>(result); 28 | std::cout<<"Optimization done\n"; 29 | ug::epi::write_data(argv[0], "_test.txt", timepoints, data,seird_model.names); 30 | } 31 | -------------------------------------------------------------------------------- /Samples/main_testparser.cpp: -------------------------------------------------------------------------------- 1 | #include "../../ConstrainedOptimization\\core\\parameter_estimation.h" 2 | #include 3 | #include 4 | 5 | 6 | int main(){ 7 | 8 | //std::string dir="C:/Users/devan/ug4/apps/testoptimization_pde/"; 9 | std::string dir="C:/Users/Annett/Desktop/Epidemics Git/testoptimization_pde/"; 10 | co::EpidemicsPDEEvaluation evaluator(dir,"subset_target.lua", "subset_sim.lua"); 11 | 12 | 13 | std::vector selected_dimensions_sim; 14 | std::vector filenames; 15 | co::utility::parse_table_dim_pde(dir, "subset_sim.lua", selected_dimensions_sim, filenames); 16 | 17 | std::cout<<"\n\nselected dimensions simulation:\n"; 18 | for (auto& x: selected_dimensions_sim){ 19 | std::cout< times; 23 | std::vector positions; 24 | std::vector data; 25 | std::vector selected_columns; 26 | co::utility::parse_csv_table_times_pde(dir, "subset_target.lua", data, positions,times,selected_columns); 27 | 28 | std::cout<<"\n\nselected columns\n"; // Choice from: 0 1 2 (3 4 5 6 7) 29 | for (auto &x:selected_columns){ 30 | std::cout< grid_world_coordinates; 51 | co::utility::parse_csv(dir+"gridmapping_output.txt", grid_world_coordinates,"\t"); 52 | 53 | for (auto& x: grid_world_coordinates){ 54 | std::cout< sim_data; 65 | //tmp vector 66 | std::vector parsed_sim_times; 67 | while (true){ 68 | std::string path=dir+"Output/output"+std::to_string(i)+".txt"; 69 | std::string path_successor=dir+"Output/output"+std::to_string(i+1)+".txt"; 70 | std::ifstream file(path_successor); 71 | std::vector tmp; 72 | 73 | //If file does not exist, exist loop 74 | if (file.fail()){ 75 | break; 76 | } 77 | 78 | co::utility::parse_pde_time(path, current_time, "\t"); 79 | co::utility::parse_pde_time(path_successor, successor_time, "\t"); 80 | i++; 81 | std::cout<<"\n\nCurrent time of simulated data: "< times[index])){ 84 | parsed_sim_times.push_back(current_time); 85 | 86 | co::utility::parse_csv(path,tmp,"\t"); 87 | 88 | int offset=grid_world_coordinates.size() / 2; 89 | 90 | for (int i = 0; i filtered_data; 110 | co::utility::planar_grid_to_world(positions, grid_world_coordinates , sim_data, filtered_data, selected_columns.size()-3,parsed_sim_times.size()); 111 | 112 | //std::cout< 2 | 3 | 4 | 5 | 6 | 7 | 8 | Epidemics: Class Index 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 |
20 | 21 | 22 | 23 | 28 | 29 | 30 |
24 |
Epidemics 25 |
26 |
Epidemics Plugin for UG4
27 |
31 |
32 | 33 | 34 | 37 | 38 | 39 | 45 | 46 |
47 | 48 |
52 |
53 | 54 | 55 |
56 | 59 |
60 | 61 |
62 |
63 |
Class Index
64 |
65 |
66 |
f | i | s
67 | 68 | 71 | 73 | 74 | 75 | 76 |
  f  
69 |
  i  
70 |
InitialValueManager< seird::Geometry::Plane, F > (ug::epi)   SEIRD_PDE (ug::epi)   
  s  
72 |
SEIRD_PDE< T, seird::Geometry::Plane > (ug::epi)   
Functionality (ug::Epidemics)   InitialValueManager (ug::epi)   
SEIRD (ug::epi)   
77 |
f | i | s
78 |
79 | 80 | 85 | 86 | 87 | -------------------------------------------------------------------------------- /documents/manual_for_library_maintainers/html/classug_1_1epi_1_1_initial_value_manager.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | Epidemics: ug::epi::InitialValueManager< T, F > Class Template Reference 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 |
20 | 21 | 22 | 23 | 28 | 29 | 30 |
24 |
Epidemics 25 |
26 |
Epidemics Plugin for UG4
27 |
31 |
32 | 33 | 34 | 37 | 38 | 39 | 45 | 46 | 47 |
51 |
52 | 53 | 54 |
55 | 58 |
59 | 60 | 64 |
65 |
66 |
67 |
ug::epi::InitialValueManager< T, F > Class Template Reference
68 |
69 |
70 | 71 |

#include <epidemics.h>

72 |

Detailed Description

73 |

template<seird::Geometry T, class F>
74 | class ug::epi::InitialValueManager< T, F >

75 | 76 |

This class contains initial parameters for a SEIRD PDE problem that has a circular shape. For most applications this class is never needed.

77 |

The documentation for this class was generated from the following file: 80 |
81 | 82 | 87 | 88 | 89 | -------------------------------------------------------------------------------- /documents/manual_for_library_maintainers/html/classug_1_1epi_1_1_s_e_i_r_d-members.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | Epidemics: Member List 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 |
20 | 21 | 22 | 23 | 28 | 29 | 30 |
24 |
Epidemics 25 |
26 |
Epidemics Plugin for UG4
27 |
31 |
32 | 33 | 34 | 37 | 38 | 39 | 45 | 46 | 47 |
51 |
52 | 53 | 54 |
55 | 58 |
59 | 60 | 64 |
65 |
66 |
67 |
ug::epi::SEIRD< T > Member List
68 |
69 |
70 | 71 |

This is the complete list of members for ug::epi::SEIRD< T >, including all inherited members.

72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 |
change_step_size_time(F _ht)ug::epi::SEIRD< T >inline
jacobian(const std::array< F, 5 > &u, F t=0) (defined in ug::epi::SEIRD< T >)ug::epi::SEIRD< T >inline
namesug::epi::SEIRD< T >
run(F t0, const T u0, F tend)ug::epi::SEIRD< T >inline
run_linear_implicit(F t0, const T &u0, F tend)ug::epi::SEIRD< T >inline
SEIRD(F _alpha, F _kappa, F _theta, F _qq, F _pp) (defined in ug::epi::SEIRD< T >)ug::epi::SEIRD< T >inline
system(std::array< F, 5 > &u, F t=0)ug::epi::SEIRD< T >inline
81 | 82 | 87 | 88 | 89 | -------------------------------------------------------------------------------- /documents/manual_for_library_maintainers/html/classug_1_1epi_1_1_s_e_i_r_d___p_d_e.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | Epidemics: ug::epi::SEIRD_PDE< T, G > Class Template Reference 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 |
20 | 21 | 22 | 23 | 28 | 29 | 30 |
24 |
Epidemics 25 |
26 |
Epidemics Plugin for UG4
27 |
31 |
32 | 33 | 34 | 37 | 38 | 39 | 45 | 46 | 47 |
51 |
52 | 53 | 54 |
55 | 58 |
59 | 60 | 64 |
65 |
66 |
67 |
ug::epi::SEIRD_PDE< T, G > Class Template Reference
68 |
69 |
70 | 71 |

#include <seird_pde.h>

72 |

Detailed Description

73 |

template<class T, seird::Geometry G>
74 | class ug::epi::SEIRD_PDE< T, G >

75 | 76 |

Dummy class of the SEIRD PDE model for an unspecified geometry. More information about the theoretical foundation can be found in the other documents in the documents folder of this plugin.

77 |

The documentation for this class was generated from the following file: 80 |
81 | 82 | 87 | 88 | 89 | -------------------------------------------------------------------------------- /documents/manual_for_library_maintainers/html/closed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/devanshr/Epidemics/b1a95003a0a280c25d4e0e5ada13381ea5a260db/documents/manual_for_library_maintainers/html/closed.png -------------------------------------------------------------------------------- /documents/manual_for_library_maintainers/html/dir_15c636f0f56aa2be82ce6fc60cfa1928.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | Epidemics: EpidemicsRunner Directory Reference 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 |
20 | 21 | 22 | 23 | 28 | 29 | 30 |
24 |
Epidemics 25 |
26 |
Epidemics Plugin for UG4
27 |
31 |
32 | 33 | 34 | 37 | 38 | 39 | 45 | 46 | 47 |
51 |
52 | 53 | 54 |
55 | 58 |
59 | 60 | 64 |
65 |
66 |
67 |
EpidemicsRunner Directory Reference
68 |
69 |
70 | 71 | 73 |

72 | Directories

74 |
75 | 76 | 81 | 82 | 83 | -------------------------------------------------------------------------------- /documents/manual_for_library_maintainers/html/dir_1ae4179d5e953611aae20c997279e02c.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | Epidemics: models Directory Reference 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 |
20 | 21 | 22 | 23 | 28 | 29 | 30 |
24 |
Epidemics 25 |
26 |
Epidemics Plugin for UG4
27 |
31 |
32 | 33 | 34 | 37 | 38 | 39 | 45 | 46 | 47 |
51 |
52 | 53 | 54 |
55 | 58 |
59 | 60 | 64 |
65 |
66 |
67 |
models Directory Reference
68 |
69 |
70 | 71 | 73 | 74 | 75 | 76 | 77 | 78 | 79 |

72 | Files

file  epidemics.h [code]
 
file  seird.h [code]
 
file  seird_pde.h [code]
 
80 |
81 | 82 | 87 | 88 | 89 | -------------------------------------------------------------------------------- /documents/manual_for_library_maintainers/html/dir_c3056047b02693331fdd63dc9ab89bf9.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | Epidemics: EpidemicsRunner/Linux Directory Reference 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 |
20 | 21 | 22 | 23 | 28 | 29 | 30 |
24 |
Epidemics 25 |
26 |
Epidemics Plugin for UG4
27 |
31 |
32 | 33 | 34 | 37 | 38 | 39 | 45 | 46 | 47 |
51 |
52 | 53 | 54 |
55 | 58 |
59 | 60 | 64 |
65 |
66 |
67 |
Linux Directory Reference
68 |
69 |
70 | 71 | 73 | 74 | 75 |

72 | Files

file  utility.h [code]
 
76 |
77 | 78 | 83 | 84 | 85 | -------------------------------------------------------------------------------- /documents/manual_for_library_maintainers/html/doc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/devanshr/Epidemics/b1a95003a0a280c25d4e0e5ada13381ea5a260db/documents/manual_for_library_maintainers/html/doc.png -------------------------------------------------------------------------------- /documents/manual_for_library_maintainers/html/doxygen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/devanshr/Epidemics/b1a95003a0a280c25d4e0e5ada13381ea5a260db/documents/manual_for_library_maintainers/html/doxygen.png -------------------------------------------------------------------------------- /documents/manual_for_library_maintainers/html/dynsections.js: -------------------------------------------------------------------------------- 1 | function toggleVisibility(linkObj) 2 | { 3 | var base = $(linkObj).attr('id'); 4 | var summary = $('#'+base+'-summary'); 5 | var content = $('#'+base+'-content'); 6 | var trigger = $('#'+base+'-trigger'); 7 | var src=$(trigger).attr('src'); 8 | if (content.is(':visible')===true) { 9 | content.hide(); 10 | summary.show(); 11 | $(linkObj).addClass('closed').removeClass('opened'); 12 | $(trigger).attr('src',src.substring(0,src.length-8)+'closed.png'); 13 | } else { 14 | content.show(); 15 | summary.hide(); 16 | $(linkObj).removeClass('closed').addClass('opened'); 17 | $(trigger).attr('src',src.substring(0,src.length-10)+'open.png'); 18 | } 19 | return false; 20 | } 21 | 22 | function updateStripes() 23 | { 24 | $('table.directory tr'). 25 | removeClass('even').filter(':visible:even').addClass('even'); 26 | } 27 | 28 | function toggleLevel(level) 29 | { 30 | $('table.directory tr').each(function() { 31 | var l = this.id.split('_').length-1; 32 | var i = $('#img'+this.id.substring(3)); 33 | var a = $('#arr'+this.id.substring(3)); 34 | if (l 2 | 3 | 4 | 5 | 6 | 7 | 8 | Epidemics: File List 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 |
20 | 21 | 22 | 23 | 28 | 29 | 30 |
24 |
Epidemics 25 |
26 |
Epidemics Plugin for UG4
27 |
31 |
32 | 33 | 34 | 37 | 38 | 39 | 45 | 46 |
47 | 48 |
52 |
53 | 54 | 55 |
56 | 59 |
60 | 61 |
62 |
63 |
File List
64 |
65 |
66 |
Here is a list of all documented files with brief descriptions:
67 |
[detail level 123]
68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 |
  EpidemicsRunner
  Linux
 utility.h
  models
 epidemics.h
 seird.h
 seird_pde.h
76 |
77 |
78 | 79 | 84 | 85 | 86 | -------------------------------------------------------------------------------- /documents/manual_for_library_maintainers/html/folderclosed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/devanshr/Epidemics/b1a95003a0a280c25d4e0e5ada13381ea5a260db/documents/manual_for_library_maintainers/html/folderclosed.png -------------------------------------------------------------------------------- /documents/manual_for_library_maintainers/html/folderopen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/devanshr/Epidemics/b1a95003a0a280c25d4e0e5ada13381ea5a260db/documents/manual_for_library_maintainers/html/folderopen.png -------------------------------------------------------------------------------- /documents/manual_for_library_maintainers/html/functions_vars.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | Epidemics: Class Members - Variables 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 |
20 | 21 | 22 | 23 | 28 | 29 | 30 |
24 |
Epidemics 25 |
26 |
Epidemics Plugin for UG4
27 |
31 |
32 | 33 | 34 | 37 | 38 | 39 | 45 | 46 |
47 | 48 |
52 |
53 | 54 | 55 |
56 | 59 |
60 | 61 |
62 |   68 |
69 | 70 | 75 | 76 | 77 | -------------------------------------------------------------------------------- /documents/manual_for_library_maintainers/html/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | Epidemics: Epidemics Plugin for UG4 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 |
20 | 21 | 22 | 23 | 28 | 29 | 30 |
24 |
Epidemics 25 |
26 |
Epidemics Plugin for UG4
27 |
31 |
32 | 33 | 34 | 37 | 38 | 39 | 45 | 46 |
47 | 48 |
52 |
53 | 54 | 55 |
56 | 59 |
60 | 61 |
62 |
63 |
Epidemics Plugin for UG4
64 |
65 |
66 |

67 | Overview

68 |

The Epidemics plugin consists of various algorithms used in epidemics modeling.

69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 |
File Description
sir.h Classical Susceptible-Infected-Recovered-Deceased ODE Model
seird.h Extended SIR model accounting for a new class (Exposed) amongst other additions
seird_variable_alpha.h Extended SRI model paired with variable (over time) infection rate
seird_pde.h A PDE formulation of the SEIRD model, discretized using Finite Differences
80 |

This package is under active development. This manual was created in February 2021 for version number 0.34.

81 |

82 | Requirements

83 |

In its current form, the package has been shown to work on Windows 10, Linux Ubuntu, Raspbian OS and macOS Mojave 10.14.4. Compilers, such as the Microsoft Visual Studio Compiler, GCC11 and Clang were tested. The compiler must support at least C++ 2011, but a C++ 2017 compatible compiler is recommended for some examples. For help and more contact us at github.com/devanshr/Epidemics

84 |

This manual was created in August 2021 for version number 0.35

85 |
86 | 87 | 92 | 93 | 94 | -------------------------------------------------------------------------------- /documents/manual_for_library_maintainers/html/menu.js: -------------------------------------------------------------------------------- 1 | function initMenu(relPath,searchEnabled,serverSide,searchPage,search) { 2 | function makeTree(data,relPath) { 3 | var result=''; 4 | if ('children' in data) { 5 | result+=''; 12 | } 13 | return result; 14 | } 15 | 16 | $('#main-nav').append(makeTree(menudata,relPath)); 17 | $('#main-nav').children(':first').addClass('sm sm-dox').attr('id','main-menu'); 18 | if (searchEnabled) { 19 | if (serverSide) { 20 | $('#main-menu').append('
  • '); 21 | } else { 22 | $('#main-menu').append('
  • '); 23 | } 24 | } 25 | $('#main-menu').smartmenus(); 26 | } 27 | -------------------------------------------------------------------------------- /documents/manual_for_library_maintainers/html/menudata.js: -------------------------------------------------------------------------------- 1 | var menudata={children:[ 2 | {text:"Main Page",url:"index.html"}, 3 | {text:"Classes",url:"annotated.html",children:[ 4 | {text:"Class List",url:"annotated.html"}, 5 | {text:"Class Index",url:"classes.html"}, 6 | {text:"Class Members",url:"functions.html",children:[ 7 | {text:"All",url:"functions.html"}, 8 | {text:"Functions",url:"functions_func.html"}, 9 | {text:"Variables",url:"functions_vars.html"}]}]}, 10 | {text:"Files",url:"files.html",children:[ 11 | {text:"File List",url:"files.html"}]}]} 12 | -------------------------------------------------------------------------------- /documents/manual_for_library_maintainers/html/nav_f.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/devanshr/Epidemics/b1a95003a0a280c25d4e0e5ada13381ea5a260db/documents/manual_for_library_maintainers/html/nav_f.png -------------------------------------------------------------------------------- /documents/manual_for_library_maintainers/html/nav_g.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/devanshr/Epidemics/b1a95003a0a280c25d4e0e5ada13381ea5a260db/documents/manual_for_library_maintainers/html/nav_g.png -------------------------------------------------------------------------------- /documents/manual_for_library_maintainers/html/nav_h.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/devanshr/Epidemics/b1a95003a0a280c25d4e0e5ada13381ea5a260db/documents/manual_for_library_maintainers/html/nav_h.png -------------------------------------------------------------------------------- /documents/manual_for_library_maintainers/html/open.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/devanshr/Epidemics/b1a95003a0a280c25d4e0e5ada13381ea5a260db/documents/manual_for_library_maintainers/html/open.png -------------------------------------------------------------------------------- /documents/manual_for_library_maintainers/html/search/all_0.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
    11 |
    Loading...
    12 |
    13 | 16 |
    Searching...
    17 |
    No Matches
    18 | 24 |
    25 | 26 | 27 | -------------------------------------------------------------------------------- /documents/manual_for_library_maintainers/html/search/all_0.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['change_5fstep_5fsize_5fspatial',['change_step_size_spatial',['../classug_1_1epi_1_1_s_e_i_r_d___p_d_e_3_01_t_00_01seird_1_1_geometry_1_1_plane_01_4.html#ac05da5b9ad1c004a4f727f92f8e9a6bd',1,'ug::epi::SEIRD_PDE< T, seird::Geometry::Plane >']]], 4 | ['change_5fstep_5fsize_5ftime',['change_step_size_time',['../classug_1_1epi_1_1_s_e_i_r_d___p_d_e_3_01_t_00_01seird_1_1_geometry_1_1_plane_01_4.html#a61447688b8d2efc8f873655d4ac608d5',1,'ug::epi::SEIRD_PDE< T, seird::Geometry::Plane >::change_step_size_time()'],['../classug_1_1epi_1_1_s_e_i_r_d.html#a537a6879b4a4d238d0141aaee478a1a8',1,'ug::epi::SEIRD::change_step_size_time()']]], 5 | ['common',['Common',['../structug_1_1_epidemics_1_1_functionality.html#ad9dde81d1e2732b713f22264975219ed',1,'ug::Epidemics::Functionality']]], 6 | ['create_5fevaluate_5flua',['create_evaluate_lua',['../utility_8h.html#ac36bb85adee0da5fc3e592145351a459',1,'ug::epi']]] 7 | ]; 8 | -------------------------------------------------------------------------------- /documents/manual_for_library_maintainers/html/search/all_1.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
    11 |
    Loading...
    12 |
    13 | 16 |
    Searching...
    17 |
    No Matches
    18 | 24 |
    25 | 26 | 27 | -------------------------------------------------------------------------------- /documents/manual_for_library_maintainers/html/search/all_1.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['epidemics_2eh',['epidemics.h',['../epidemics_8h.html',1,'']]], 4 | ['epidemics_20plugin_20for_20ug4',['Epidemics Plugin for UG4',['../index.html',1,'']]] 5 | ]; 6 | -------------------------------------------------------------------------------- /documents/manual_for_library_maintainers/html/search/all_2.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
    11 |
    Loading...
    12 |
    13 | 16 |
    Searching...
    17 |
    No Matches
    18 | 24 |
    25 | 26 | 27 | -------------------------------------------------------------------------------- /documents/manual_for_library_maintainers/html/search/all_2.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['functionality',['Functionality',['../structug_1_1_epidemics_1_1_functionality.html',1,'ug::Epidemics']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /documents/manual_for_library_maintainers/html/search/all_3.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
    11 |
    Loading...
    12 |
    13 | 16 |
    Searching...
    17 |
    No Matches
    18 | 24 |
    25 | 26 | 27 | -------------------------------------------------------------------------------- /documents/manual_for_library_maintainers/html/search/all_3.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['get_5fr1',['get_r1',['../classug_1_1epi_1_1_initial_value_manager_3_01seird_1_1_geometry_1_1_plane_00_01_f_01_4.html#a5b9f31f7f9372c451cb7e101784b09f6',1,'ug::epi::InitialValueManager< seird::Geometry::Plane, F >']]], 4 | ['get_5fr2',['get_r2',['../classug_1_1epi_1_1_initial_value_manager_3_01seird_1_1_geometry_1_1_plane_00_01_f_01_4.html#a8e44064e6f2562304c3cd9bb86831387',1,'ug::epi::InitialValueManager< seird::Geometry::Plane, F >']]], 5 | ['get_5fr3',['get_r3',['../classug_1_1epi_1_1_initial_value_manager_3_01seird_1_1_geometry_1_1_plane_00_01_f_01_4.html#a2840262a31a976f587fda8a972324dc6',1,'ug::epi::InitialValueManager< seird::Geometry::Plane, F >']]], 6 | ['get_5fr4',['get_r4',['../classug_1_1epi_1_1_initial_value_manager_3_01seird_1_1_geometry_1_1_plane_00_01_f_01_4.html#a6b180be19269c94294291de2ea3dd908',1,'ug::epi::InitialValueManager< seird::Geometry::Plane, F >']]], 7 | ['get_5fr5',['get_r5',['../classug_1_1epi_1_1_initial_value_manager_3_01seird_1_1_geometry_1_1_plane_00_01_f_01_4.html#adeb678242c335ee7db7482ef5169af83',1,'ug::epi::InitialValueManager< seird::Geometry::Plane, F >']]] 8 | ]; 9 | -------------------------------------------------------------------------------- /documents/manual_for_library_maintainers/html/search/all_4.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
    11 |
    Loading...
    12 |
    13 | 16 |
    Searching...
    17 |
    No Matches
    18 | 24 |
    25 | 26 | 27 | -------------------------------------------------------------------------------- /documents/manual_for_library_maintainers/html/search/all_4.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['initialvaluemanager',['InitialValueManager',['../classug_1_1epi_1_1_initial_value_manager.html',1,'ug::epi::InitialValueManager< T, F >'],['../classug_1_1epi_1_1_initial_value_manager_3_01seird_1_1_geometry_1_1_plane_00_01_f_01_4.html#a48afe4054e08a2babc0c647c82b9acc8',1,'ug::epi::InitialValueManager< seird::Geometry::Plane, F >::InitialValueManager()']]], 4 | ['initialvaluemanager_3c_20seird_3a_3ageometry_3a_3aplane_2c_20f_20_3e',['InitialValueManager< seird::Geometry::Plane, F >',['../classug_1_1epi_1_1_initial_value_manager_3_01seird_1_1_geometry_1_1_plane_00_01_f_01_4.html',1,'ug::epi']]] 5 | ]; 6 | -------------------------------------------------------------------------------- /documents/manual_for_library_maintainers/html/search/all_5.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
    11 |
    Loading...
    12 |
    13 | 16 |
    Searching...
    17 |
    No Matches
    18 | 24 |
    25 | 26 | 27 | -------------------------------------------------------------------------------- /documents/manual_for_library_maintainers/html/search/all_5.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['jacobian',['jacobian',['../classug_1_1epi_1_1_s_e_i_r_d___p_d_e_3_01_t_00_01seird_1_1_geometry_1_1_plane_01_4.html#ab3d8ae9995810401b7f0e0424aab0522',1,'ug::epi::SEIRD_PDE< T, seird::Geometry::Plane >']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /documents/manual_for_library_maintainers/html/search/all_6.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
    11 |
    Loading...
    12 |
    13 | 16 |
    Searching...
    17 |
    No Matches
    18 | 24 |
    25 | 26 | 27 | -------------------------------------------------------------------------------- /documents/manual_for_library_maintainers/html/search/all_6.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['names',['names',['../classug_1_1epi_1_1_s_e_i_r_d___p_d_e_3_01_t_00_01seird_1_1_geometry_1_1_plane_01_4.html#a38c997d8d89e2fece3bb806ecf841c57',1,'ug::epi::SEIRD_PDE< T, seird::Geometry::Plane >::names()'],['../classug_1_1epi_1_1_s_e_i_r_d.html#a015aece0459702c8c478b11afc3606a6',1,'ug::epi::SEIRD::names()']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /documents/manual_for_library_maintainers/html/search/all_7.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
    11 |
    Loading...
    12 |
    13 | 16 |
    Searching...
    17 |
    No Matches
    18 | 24 |
    25 | 26 | 27 | -------------------------------------------------------------------------------- /documents/manual_for_library_maintainers/html/search/all_7.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['run',['run',['../classug_1_1epi_1_1_s_e_i_r_d___p_d_e_3_01_t_00_01seird_1_1_geometry_1_1_plane_01_4.html#ab79b175504e0ed645711bf3ef8edcac5',1,'ug::epi::SEIRD_PDE< T, seird::Geometry::Plane >::run()'],['../classug_1_1epi_1_1_s_e_i_r_d.html#ae1b0b3727a9b5eb9afe1f41985a74967',1,'ug::epi::SEIRD::run()']]], 4 | ['run_5flinear_5fimplicit',['run_linear_implicit',['../classug_1_1epi_1_1_s_e_i_r_d___p_d_e_3_01_t_00_01seird_1_1_geometry_1_1_plane_01_4.html#a2ce486c85f7932c90cce4a11ecb7f05b',1,'ug::epi::SEIRD_PDE< T, seird::Geometry::Plane >::run_linear_implicit()'],['../classug_1_1epi_1_1_s_e_i_r_d.html#a4b2848690a22845a5164345ad43393a8',1,'ug::epi::SEIRD::run_linear_implicit()']]], 5 | ['runseird',['RunSEIRD',['../epidemics_8h.html#a64c95ecd0a9d15bae801453b73d44370',1,'ug::epi']]], 6 | ['runseirdpde',['RunSEIRDPDE',['../epidemics_8h.html#a9ea8870d38ce439ca1b3bfb0de9df65e',1,'ug::epi']]], 7 | ['runsir',['RunSIR',['../epidemics_8h.html#a366ca52a5a891efccd9652aae3bea6d6',1,'ug::epi']]] 8 | ]; 9 | -------------------------------------------------------------------------------- /documents/manual_for_library_maintainers/html/search/all_8.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
    11 |
    Loading...
    12 |
    13 | 16 |
    Searching...
    17 |
    No Matches
    18 | 24 |
    25 | 26 | 27 | -------------------------------------------------------------------------------- /documents/manual_for_library_maintainers/html/search/all_8.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['seird',['SEIRD',['../classug_1_1epi_1_1_s_e_i_r_d.html',1,'ug::epi']]], 4 | ['seird_2eh',['seird.h',['../seird_8h.html',1,'']]], 5 | ['seird_5fpde',['SEIRD_PDE',['../classug_1_1epi_1_1_s_e_i_r_d___p_d_e.html',1,'ug::epi::SEIRD_PDE< T, G >'],['../classug_1_1epi_1_1_s_e_i_r_d___p_d_e_3_01_t_00_01seird_1_1_geometry_1_1_plane_01_4.html#acee8173ad6d681ca2333dcccb7e60512',1,'ug::epi::SEIRD_PDE< T, seird::Geometry::Plane >::SEIRD_PDE()']]], 6 | ['seird_5fpde_2eh',['seird_pde.h',['../seird__pde_8h.html',1,'']]], 7 | ['seird_5fpde_3c_20t_2c_20seird_3a_3ageometry_3a_3aplane_20_3e',['SEIRD_PDE< T, seird::Geometry::Plane >',['../classug_1_1epi_1_1_s_e_i_r_d___p_d_e_3_01_t_00_01seird_1_1_geometry_1_1_plane_01_4.html',1,'ug::epi']]], 8 | ['set_5fr1',['set_r1',['../classug_1_1epi_1_1_initial_value_manager_3_01seird_1_1_geometry_1_1_plane_00_01_f_01_4.html#afd6ad1544c46275b52f3a550bc7f149c',1,'ug::epi::InitialValueManager< seird::Geometry::Plane, F >']]], 9 | ['set_5fr2',['set_r2',['../classug_1_1epi_1_1_initial_value_manager_3_01seird_1_1_geometry_1_1_plane_00_01_f_01_4.html#ab00efa1679fc309b894d53a03ec55e5f',1,'ug::epi::InitialValueManager< seird::Geometry::Plane, F >']]], 10 | ['set_5fr3',['set_r3',['../classug_1_1epi_1_1_initial_value_manager_3_01seird_1_1_geometry_1_1_plane_00_01_f_01_4.html#a3f80dd792acd8571a9a0ad141d591b46',1,'ug::epi::InitialValueManager< seird::Geometry::Plane, F >']]], 11 | ['set_5fr4',['set_r4',['../classug_1_1epi_1_1_initial_value_manager_3_01seird_1_1_geometry_1_1_plane_00_01_f_01_4.html#a4d4cc9e8e812d810b011a63159662f2c',1,'ug::epi::InitialValueManager< seird::Geometry::Plane, F >']]], 12 | ['set_5fstore_5fto_5ffile',['set_store_to_file',['../classug_1_1epi_1_1_s_e_i_r_d___p_d_e_3_01_t_00_01seird_1_1_geometry_1_1_plane_01_4.html#aa399c391e02e88e7ad5524552810ba13',1,'ug::epi::SEIRD_PDE< T, seird::Geometry::Plane >']]], 13 | ['system',['system',['../classug_1_1epi_1_1_s_e_i_r_d___p_d_e_3_01_t_00_01seird_1_1_geometry_1_1_plane_01_4.html#a674b90eb5d894a5552591332f5ec7400',1,'ug::epi::SEIRD_PDE< T, seird::Geometry::Plane >::system()'],['../classug_1_1epi_1_1_s_e_i_r_d.html#a654ab9e70a1efe5a5fd8b0534cd14a37',1,'ug::epi::SEIRD::system()']]] 14 | ]; 15 | -------------------------------------------------------------------------------- /documents/manual_for_library_maintainers/html/search/all_9.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
    11 |
    Loading...
    12 |
    13 | 16 |
    Searching...
    17 |
    No Matches
    18 | 24 |
    25 | 26 | 27 | -------------------------------------------------------------------------------- /documents/manual_for_library_maintainers/html/search/all_9.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['utility_2eh',['utility.h',['../utility_8h.html',1,'']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /documents/manual_for_library_maintainers/html/search/classes_0.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
    11 |
    Loading...
    12 |
    13 | 16 |
    Searching...
    17 |
    No Matches
    18 | 24 |
    25 | 26 | 27 | -------------------------------------------------------------------------------- /documents/manual_for_library_maintainers/html/search/classes_0.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['functionality',['Functionality',['../structug_1_1_epidemics_1_1_functionality.html',1,'ug::Epidemics']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /documents/manual_for_library_maintainers/html/search/classes_1.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
    11 |
    Loading...
    12 |
    13 | 16 |
    Searching...
    17 |
    No Matches
    18 | 24 |
    25 | 26 | 27 | -------------------------------------------------------------------------------- /documents/manual_for_library_maintainers/html/search/classes_1.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['initialvaluemanager',['InitialValueManager',['../classug_1_1epi_1_1_initial_value_manager.html',1,'ug::epi']]], 4 | ['initialvaluemanager_3c_20seird_3a_3ageometry_3a_3aplane_2c_20f_20_3e',['InitialValueManager< seird::Geometry::Plane, F >',['../classug_1_1epi_1_1_initial_value_manager_3_01seird_1_1_geometry_1_1_plane_00_01_f_01_4.html',1,'ug::epi']]] 5 | ]; 6 | -------------------------------------------------------------------------------- /documents/manual_for_library_maintainers/html/search/classes_2.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
    11 |
    Loading...
    12 |
    13 | 16 |
    Searching...
    17 |
    No Matches
    18 | 24 |
    25 | 26 | 27 | -------------------------------------------------------------------------------- /documents/manual_for_library_maintainers/html/search/classes_2.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['seird',['SEIRD',['../classug_1_1epi_1_1_s_e_i_r_d.html',1,'ug::epi']]], 4 | ['seird_5fpde',['SEIRD_PDE',['../classug_1_1epi_1_1_s_e_i_r_d___p_d_e.html',1,'ug::epi']]], 5 | ['seird_5fpde_3c_20t_2c_20seird_3a_3ageometry_3a_3aplane_20_3e',['SEIRD_PDE< T, seird::Geometry::Plane >',['../classug_1_1epi_1_1_s_e_i_r_d___p_d_e_3_01_t_00_01seird_1_1_geometry_1_1_plane_01_4.html',1,'ug::epi']]] 6 | ]; 7 | -------------------------------------------------------------------------------- /documents/manual_for_library_maintainers/html/search/close.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/devanshr/Epidemics/b1a95003a0a280c25d4e0e5ada13381ea5a260db/documents/manual_for_library_maintainers/html/search/close.png -------------------------------------------------------------------------------- /documents/manual_for_library_maintainers/html/search/files_0.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
    11 |
    Loading...
    12 |
    13 | 16 |
    Searching...
    17 |
    No Matches
    18 | 24 |
    25 | 26 | 27 | -------------------------------------------------------------------------------- /documents/manual_for_library_maintainers/html/search/files_0.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['epidemics_2eh',['epidemics.h',['../epidemics_8h.html',1,'']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /documents/manual_for_library_maintainers/html/search/files_1.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
    11 |
    Loading...
    12 |
    13 | 16 |
    Searching...
    17 |
    No Matches
    18 | 24 |
    25 | 26 | 27 | -------------------------------------------------------------------------------- /documents/manual_for_library_maintainers/html/search/files_1.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['seird_2eh',['seird.h',['../seird_8h.html',1,'']]], 4 | ['seird_5fpde_2eh',['seird_pde.h',['../seird__pde_8h.html',1,'']]] 5 | ]; 6 | -------------------------------------------------------------------------------- /documents/manual_for_library_maintainers/html/search/files_2.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
    11 |
    Loading...
    12 |
    13 | 16 |
    Searching...
    17 |
    No Matches
    18 | 24 |
    25 | 26 | 27 | -------------------------------------------------------------------------------- /documents/manual_for_library_maintainers/html/search/files_2.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['utility_2eh',['utility.h',['../utility_8h.html',1,'']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /documents/manual_for_library_maintainers/html/search/functions_0.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
    11 |
    Loading...
    12 |
    13 | 16 |
    Searching...
    17 |
    No Matches
    18 | 24 |
    25 | 26 | 27 | -------------------------------------------------------------------------------- /documents/manual_for_library_maintainers/html/search/functions_0.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['change_5fstep_5fsize_5fspatial',['change_step_size_spatial',['../classug_1_1epi_1_1_s_e_i_r_d___p_d_e_3_01_t_00_01seird_1_1_geometry_1_1_plane_01_4.html#ac05da5b9ad1c004a4f727f92f8e9a6bd',1,'ug::epi::SEIRD_PDE< T, seird::Geometry::Plane >']]], 4 | ['change_5fstep_5fsize_5ftime',['change_step_size_time',['../classug_1_1epi_1_1_s_e_i_r_d___p_d_e_3_01_t_00_01seird_1_1_geometry_1_1_plane_01_4.html#a61447688b8d2efc8f873655d4ac608d5',1,'ug::epi::SEIRD_PDE< T, seird::Geometry::Plane >::change_step_size_time()'],['../classug_1_1epi_1_1_s_e_i_r_d.html#a537a6879b4a4d238d0141aaee478a1a8',1,'ug::epi::SEIRD::change_step_size_time()']]], 5 | ['common',['Common',['../structug_1_1_epidemics_1_1_functionality.html#ad9dde81d1e2732b713f22264975219ed',1,'ug::Epidemics::Functionality']]], 6 | ['create_5fevaluate_5flua',['create_evaluate_lua',['../utility_8h.html#ac36bb85adee0da5fc3e592145351a459',1,'ug::epi']]] 7 | ]; 8 | -------------------------------------------------------------------------------- /documents/manual_for_library_maintainers/html/search/functions_1.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
    11 |
    Loading...
    12 |
    13 | 16 |
    Searching...
    17 |
    No Matches
    18 | 24 |
    25 | 26 | 27 | -------------------------------------------------------------------------------- /documents/manual_for_library_maintainers/html/search/functions_1.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['get_5fr1',['get_r1',['../classug_1_1epi_1_1_initial_value_manager_3_01seird_1_1_geometry_1_1_plane_00_01_f_01_4.html#a5b9f31f7f9372c451cb7e101784b09f6',1,'ug::epi::InitialValueManager< seird::Geometry::Plane, F >']]], 4 | ['get_5fr2',['get_r2',['../classug_1_1epi_1_1_initial_value_manager_3_01seird_1_1_geometry_1_1_plane_00_01_f_01_4.html#a8e44064e6f2562304c3cd9bb86831387',1,'ug::epi::InitialValueManager< seird::Geometry::Plane, F >']]], 5 | ['get_5fr3',['get_r3',['../classug_1_1epi_1_1_initial_value_manager_3_01seird_1_1_geometry_1_1_plane_00_01_f_01_4.html#a2840262a31a976f587fda8a972324dc6',1,'ug::epi::InitialValueManager< seird::Geometry::Plane, F >']]], 6 | ['get_5fr4',['get_r4',['../classug_1_1epi_1_1_initial_value_manager_3_01seird_1_1_geometry_1_1_plane_00_01_f_01_4.html#a6b180be19269c94294291de2ea3dd908',1,'ug::epi::InitialValueManager< seird::Geometry::Plane, F >']]], 7 | ['get_5fr5',['get_r5',['../classug_1_1epi_1_1_initial_value_manager_3_01seird_1_1_geometry_1_1_plane_00_01_f_01_4.html#adeb678242c335ee7db7482ef5169af83',1,'ug::epi::InitialValueManager< seird::Geometry::Plane, F >']]] 8 | ]; 9 | -------------------------------------------------------------------------------- /documents/manual_for_library_maintainers/html/search/functions_2.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
    11 |
    Loading...
    12 |
    13 | 16 |
    Searching...
    17 |
    No Matches
    18 | 24 |
    25 | 26 | 27 | -------------------------------------------------------------------------------- /documents/manual_for_library_maintainers/html/search/functions_2.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['initialvaluemanager',['InitialValueManager',['../classug_1_1epi_1_1_initial_value_manager_3_01seird_1_1_geometry_1_1_plane_00_01_f_01_4.html#a48afe4054e08a2babc0c647c82b9acc8',1,'ug::epi::InitialValueManager< seird::Geometry::Plane, F >']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /documents/manual_for_library_maintainers/html/search/functions_3.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
    11 |
    Loading...
    12 |
    13 | 16 |
    Searching...
    17 |
    No Matches
    18 | 24 |
    25 | 26 | 27 | -------------------------------------------------------------------------------- /documents/manual_for_library_maintainers/html/search/functions_3.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['jacobian',['jacobian',['../classug_1_1epi_1_1_s_e_i_r_d___p_d_e_3_01_t_00_01seird_1_1_geometry_1_1_plane_01_4.html#ab3d8ae9995810401b7f0e0424aab0522',1,'ug::epi::SEIRD_PDE< T, seird::Geometry::Plane >']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /documents/manual_for_library_maintainers/html/search/functions_4.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
    11 |
    Loading...
    12 |
    13 | 16 |
    Searching...
    17 |
    No Matches
    18 | 24 |
    25 | 26 | 27 | -------------------------------------------------------------------------------- /documents/manual_for_library_maintainers/html/search/functions_4.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['run',['run',['../classug_1_1epi_1_1_s_e_i_r_d___p_d_e_3_01_t_00_01seird_1_1_geometry_1_1_plane_01_4.html#ab79b175504e0ed645711bf3ef8edcac5',1,'ug::epi::SEIRD_PDE< T, seird::Geometry::Plane >::run()'],['../classug_1_1epi_1_1_s_e_i_r_d.html#ae1b0b3727a9b5eb9afe1f41985a74967',1,'ug::epi::SEIRD::run()']]], 4 | ['run_5flinear_5fimplicit',['run_linear_implicit',['../classug_1_1epi_1_1_s_e_i_r_d___p_d_e_3_01_t_00_01seird_1_1_geometry_1_1_plane_01_4.html#a2ce486c85f7932c90cce4a11ecb7f05b',1,'ug::epi::SEIRD_PDE< T, seird::Geometry::Plane >::run_linear_implicit()'],['../classug_1_1epi_1_1_s_e_i_r_d.html#a4b2848690a22845a5164345ad43393a8',1,'ug::epi::SEIRD::run_linear_implicit()']]], 5 | ['runseird',['RunSEIRD',['../epidemics_8h.html#a64c95ecd0a9d15bae801453b73d44370',1,'ug::epi']]], 6 | ['runseirdpde',['RunSEIRDPDE',['../epidemics_8h.html#a9ea8870d38ce439ca1b3bfb0de9df65e',1,'ug::epi']]], 7 | ['runsir',['RunSIR',['../epidemics_8h.html#a366ca52a5a891efccd9652aae3bea6d6',1,'ug::epi']]] 8 | ]; 9 | -------------------------------------------------------------------------------- /documents/manual_for_library_maintainers/html/search/functions_5.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
    11 |
    Loading...
    12 |
    13 | 16 |
    Searching...
    17 |
    No Matches
    18 | 24 |
    25 | 26 | 27 | -------------------------------------------------------------------------------- /documents/manual_for_library_maintainers/html/search/functions_5.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['seird_5fpde',['SEIRD_PDE',['../classug_1_1epi_1_1_s_e_i_r_d___p_d_e_3_01_t_00_01seird_1_1_geometry_1_1_plane_01_4.html#acee8173ad6d681ca2333dcccb7e60512',1,'ug::epi::SEIRD_PDE< T, seird::Geometry::Plane >']]], 4 | ['set_5fr1',['set_r1',['../classug_1_1epi_1_1_initial_value_manager_3_01seird_1_1_geometry_1_1_plane_00_01_f_01_4.html#afd6ad1544c46275b52f3a550bc7f149c',1,'ug::epi::InitialValueManager< seird::Geometry::Plane, F >']]], 5 | ['set_5fr2',['set_r2',['../classug_1_1epi_1_1_initial_value_manager_3_01seird_1_1_geometry_1_1_plane_00_01_f_01_4.html#ab00efa1679fc309b894d53a03ec55e5f',1,'ug::epi::InitialValueManager< seird::Geometry::Plane, F >']]], 6 | ['set_5fr3',['set_r3',['../classug_1_1epi_1_1_initial_value_manager_3_01seird_1_1_geometry_1_1_plane_00_01_f_01_4.html#a3f80dd792acd8571a9a0ad141d591b46',1,'ug::epi::InitialValueManager< seird::Geometry::Plane, F >']]], 7 | ['set_5fr4',['set_r4',['../classug_1_1epi_1_1_initial_value_manager_3_01seird_1_1_geometry_1_1_plane_00_01_f_01_4.html#a4d4cc9e8e812d810b011a63159662f2c',1,'ug::epi::InitialValueManager< seird::Geometry::Plane, F >']]], 8 | ['set_5fstore_5fto_5ffile',['set_store_to_file',['../classug_1_1epi_1_1_s_e_i_r_d___p_d_e_3_01_t_00_01seird_1_1_geometry_1_1_plane_01_4.html#aa399c391e02e88e7ad5524552810ba13',1,'ug::epi::SEIRD_PDE< T, seird::Geometry::Plane >']]], 9 | ['system',['system',['../classug_1_1epi_1_1_s_e_i_r_d___p_d_e_3_01_t_00_01seird_1_1_geometry_1_1_plane_01_4.html#a674b90eb5d894a5552591332f5ec7400',1,'ug::epi::SEIRD_PDE< T, seird::Geometry::Plane >::system()'],['../classug_1_1epi_1_1_s_e_i_r_d.html#a654ab9e70a1efe5a5fd8b0534cd14a37',1,'ug::epi::SEIRD::system()']]] 10 | ]; 11 | -------------------------------------------------------------------------------- /documents/manual_for_library_maintainers/html/search/mag_sel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/devanshr/Epidemics/b1a95003a0a280c25d4e0e5ada13381ea5a260db/documents/manual_for_library_maintainers/html/search/mag_sel.png -------------------------------------------------------------------------------- /documents/manual_for_library_maintainers/html/search/nomatches.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
    9 |
    No Matches
    10 |
    11 | 12 | 13 | -------------------------------------------------------------------------------- /documents/manual_for_library_maintainers/html/search/pages_0.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
    11 |
    Loading...
    12 |
    13 | 16 |
    Searching...
    17 |
    No Matches
    18 | 24 |
    25 | 26 | 27 | -------------------------------------------------------------------------------- /documents/manual_for_library_maintainers/html/search/pages_0.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['epidemics_20plugin_20for_20ug4',['Epidemics Plugin for UG4',['../index.html',1,'']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /documents/manual_for_library_maintainers/html/search/search.css: -------------------------------------------------------------------------------- 1 | /*---------------- Search Box */ 2 | 3 | #FSearchBox { 4 | float: left; 5 | } 6 | 7 | #MSearchBox { 8 | white-space : nowrap; 9 | float: none; 10 | margin-top: 8px; 11 | right: 0px; 12 | width: 170px; 13 | height: 24px; 14 | z-index: 102; 15 | } 16 | 17 | #MSearchBox .left 18 | { 19 | display:block; 20 | position:absolute; 21 | left:10px; 22 | width:20px; 23 | height:19px; 24 | background:url('search_l.png') no-repeat; 25 | background-position:right; 26 | } 27 | 28 | #MSearchSelect { 29 | display:block; 30 | position:absolute; 31 | width:20px; 32 | height:19px; 33 | } 34 | 35 | .left #MSearchSelect { 36 | left:4px; 37 | } 38 | 39 | .right #MSearchSelect { 40 | right:5px; 41 | } 42 | 43 | #MSearchField { 44 | display:block; 45 | position:absolute; 46 | height:19px; 47 | background:url('search_m.png') repeat-x; 48 | border:none; 49 | width:115px; 50 | margin-left:20px; 51 | padding-left:4px; 52 | color: #909090; 53 | outline: none; 54 | font: 9pt Arial, Verdana, sans-serif; 55 | -webkit-border-radius: 0px; 56 | } 57 | 58 | #FSearchBox #MSearchField { 59 | margin-left:15px; 60 | } 61 | 62 | #MSearchBox .right { 63 | display:block; 64 | position:absolute; 65 | right:10px; 66 | top:8px; 67 | width:20px; 68 | height:19px; 69 | background:url('search_r.png') no-repeat; 70 | background-position:left; 71 | } 72 | 73 | #MSearchClose { 74 | display: none; 75 | position: absolute; 76 | top: 4px; 77 | background : none; 78 | border: none; 79 | margin: 0px 4px 0px 0px; 80 | padding: 0px 0px; 81 | outline: none; 82 | } 83 | 84 | .left #MSearchClose { 85 | left: 6px; 86 | } 87 | 88 | .right #MSearchClose { 89 | right: 2px; 90 | } 91 | 92 | .MSearchBoxActive #MSearchField { 93 | color: #000000; 94 | } 95 | 96 | /*---------------- Search filter selection */ 97 | 98 | #MSearchSelectWindow { 99 | display: none; 100 | position: absolute; 101 | left: 0; top: 0; 102 | border: 1px solid #90A5CE; 103 | background-color: #F9FAFC; 104 | z-index: 10001; 105 | padding-top: 4px; 106 | padding-bottom: 4px; 107 | -moz-border-radius: 4px; 108 | -webkit-border-top-left-radius: 4px; 109 | -webkit-border-top-right-radius: 4px; 110 | -webkit-border-bottom-left-radius: 4px; 111 | -webkit-border-bottom-right-radius: 4px; 112 | -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); 113 | } 114 | 115 | .SelectItem { 116 | font: 8pt Arial, Verdana, sans-serif; 117 | padding-left: 2px; 118 | padding-right: 12px; 119 | border: 0px; 120 | } 121 | 122 | span.SelectionMark { 123 | margin-right: 4px; 124 | font-family: monospace; 125 | outline-style: none; 126 | text-decoration: none; 127 | } 128 | 129 | a.SelectItem { 130 | display: block; 131 | outline-style: none; 132 | color: #000000; 133 | text-decoration: none; 134 | padding-left: 6px; 135 | padding-right: 12px; 136 | } 137 | 138 | a.SelectItem:focus, 139 | a.SelectItem:active { 140 | color: #000000; 141 | outline-style: none; 142 | text-decoration: none; 143 | } 144 | 145 | a.SelectItem:hover { 146 | color: #FFFFFF; 147 | background-color: #3D578C; 148 | outline-style: none; 149 | text-decoration: none; 150 | cursor: pointer; 151 | display: block; 152 | } 153 | 154 | /*---------------- Search results window */ 155 | 156 | iframe#MSearchResults { 157 | width: 60ex; 158 | height: 15em; 159 | } 160 | 161 | #MSearchResultsWindow { 162 | display: none; 163 | position: absolute; 164 | left: 0; top: 0; 165 | border: 1px solid #000; 166 | background-color: #EEF1F7; 167 | z-index:10000; 168 | } 169 | 170 | /* ----------------------------------- */ 171 | 172 | 173 | #SRIndex { 174 | clear:both; 175 | padding-bottom: 15px; 176 | } 177 | 178 | .SREntry { 179 | font-size: 10pt; 180 | padding-left: 1ex; 181 | } 182 | 183 | .SRPage .SREntry { 184 | font-size: 8pt; 185 | padding: 1px 5px; 186 | } 187 | 188 | body.SRPage { 189 | margin: 5px 2px; 190 | } 191 | 192 | .SRChildren { 193 | padding-left: 3ex; padding-bottom: .5em 194 | } 195 | 196 | .SRPage .SRChildren { 197 | display: none; 198 | } 199 | 200 | .SRSymbol { 201 | font-weight: bold; 202 | color: #425E97; 203 | font-family: Arial, Verdana, sans-serif; 204 | text-decoration: none; 205 | outline: none; 206 | } 207 | 208 | a.SRScope { 209 | display: block; 210 | color: #425E97; 211 | font-family: Arial, Verdana, sans-serif; 212 | text-decoration: none; 213 | outline: none; 214 | } 215 | 216 | a.SRSymbol:focus, a.SRSymbol:active, 217 | a.SRScope:focus, a.SRScope:active { 218 | text-decoration: underline; 219 | } 220 | 221 | span.SRScope { 222 | padding-left: 4px; 223 | } 224 | 225 | .SRPage .SRStatus { 226 | padding: 2px 5px; 227 | font-size: 8pt; 228 | font-style: italic; 229 | } 230 | 231 | .SRResult { 232 | display: none; 233 | } 234 | 235 | DIV.searchresults { 236 | margin-left: 10px; 237 | margin-right: 10px; 238 | } 239 | 240 | /*---------------- External search page results */ 241 | 242 | .searchresult { 243 | background-color: #F0F3F8; 244 | } 245 | 246 | .pages b { 247 | color: white; 248 | padding: 5px 5px 3px 5px; 249 | background-image: url("../tab_a.png"); 250 | background-repeat: repeat-x; 251 | text-shadow: 0 1px 1px #000000; 252 | } 253 | 254 | .pages { 255 | line-height: 17px; 256 | margin-left: 4px; 257 | text-decoration: none; 258 | } 259 | 260 | .hl { 261 | font-weight: bold; 262 | } 263 | 264 | #searchresults { 265 | margin-bottom: 20px; 266 | } 267 | 268 | .searchpages { 269 | margin-top: 10px; 270 | } 271 | 272 | -------------------------------------------------------------------------------- /documents/manual_for_library_maintainers/html/search/search_l.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/devanshr/Epidemics/b1a95003a0a280c25d4e0e5ada13381ea5a260db/documents/manual_for_library_maintainers/html/search/search_l.png -------------------------------------------------------------------------------- /documents/manual_for_library_maintainers/html/search/search_m.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/devanshr/Epidemics/b1a95003a0a280c25d4e0e5ada13381ea5a260db/documents/manual_for_library_maintainers/html/search/search_m.png -------------------------------------------------------------------------------- /documents/manual_for_library_maintainers/html/search/search_r.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/devanshr/Epidemics/b1a95003a0a280c25d4e0e5ada13381ea5a260db/documents/manual_for_library_maintainers/html/search/search_r.png -------------------------------------------------------------------------------- /documents/manual_for_library_maintainers/html/search/searchdata.js: -------------------------------------------------------------------------------- 1 | var indexSectionsWithContent = 2 | { 3 | 0: "cefgijnrsu", 4 | 1: "fis", 5 | 2: "esu", 6 | 3: "cgijrs", 7 | 4: "n", 8 | 5: "e" 9 | }; 10 | 11 | var indexSectionNames = 12 | { 13 | 0: "all", 14 | 1: "classes", 15 | 2: "files", 16 | 3: "functions", 17 | 4: "variables", 18 | 5: "pages" 19 | }; 20 | 21 | var indexSectionLabels = 22 | { 23 | 0: "All", 24 | 1: "Classes", 25 | 2: "Files", 26 | 3: "Functions", 27 | 4: "Variables", 28 | 5: "Pages" 29 | }; 30 | 31 | -------------------------------------------------------------------------------- /documents/manual_for_library_maintainers/html/search/variables_0.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
    11 |
    Loading...
    12 |
    13 | 16 |
    Searching...
    17 |
    No Matches
    18 | 24 |
    25 | 26 | 27 | -------------------------------------------------------------------------------- /documents/manual_for_library_maintainers/html/search/variables_0.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['names',['names',['../classug_1_1epi_1_1_s_e_i_r_d___p_d_e_3_01_t_00_01seird_1_1_geometry_1_1_plane_01_4.html#a38c997d8d89e2fece3bb806ecf841c57',1,'ug::epi::SEIRD_PDE< T, seird::Geometry::Plane >::names()'],['../classug_1_1epi_1_1_s_e_i_r_d.html#a015aece0459702c8c478b11afc3606a6',1,'ug::epi::SEIRD::names()']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /documents/manual_for_library_maintainers/html/seird_8h.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | Epidemics: models/seird.h File Reference 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 |
    19 |
    20 | 21 | 22 | 23 | 28 | 29 | 30 |
    24 |
    Epidemics 25 |
    26 |
    Epidemics Plugin for UG4
    27 |
    31 |
    32 | 33 | 34 | 37 | 38 | 39 | 45 | 46 | 47 |
    51 |
    52 | 53 | 54 |
    55 | 58 |
    59 | 60 | 64 |
    65 |
    66 |
    67 | Classes
    68 |
    69 |
    seird.h File Reference
    70 |
    71 |
    72 |
    #include <vector>
    73 | #include <array>
    74 | #include <tuple>
    75 | #include <string>
    76 | #include "utility.h"
    77 |
    78 |

    Go to the source code of this file.

    79 | 80 | 82 | 83 | 84 |

    81 | Classes

    class  ug::epi::SEIRD< T >
     
    85 |

    Detailed Description

    86 |

    This file contains the SEIRD class. The SEIRD ODE model includes a new class (Exposed) amongst other additions. More information can be found in the other documents in the documents folder of this plugin.

    87 |
    88 | 89 | 94 | 95 | 96 | -------------------------------------------------------------------------------- /documents/manual_for_library_maintainers/html/seird__pde_8h.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | Epidemics: models/seird_pde.h File Reference 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 |
    19 |
    20 | 21 | 22 | 23 | 28 | 29 | 30 |
    24 |
    Epidemics 25 |
    26 |
    Epidemics Plugin for UG4
    27 |
    31 |
    32 | 33 | 34 | 37 | 38 | 39 | 45 | 46 | 47 |
    51 |
    52 | 53 | 54 |
    55 | 58 |
    59 | 60 | 64 |
    65 |
    66 |
    67 | Classes | 68 | Enumerations
    69 |
    70 |
    seird_pde.h File Reference
    71 |
    72 |
    73 |
    #include <vector>
    74 | #include <string>
    75 | #include <array>
    76 | #include "utility.h"
    77 | #include "writer.h"
    78 |
    79 |

    Go to the source code of this file.

    80 | 81 | 83 | 84 | 85 | 86 | 87 |

    82 | Classes

    class  ug::epi::SEIRD_PDE< T, G >
     
    class  ug::epi::SEIRD_PDE< T, seird::Geometry::Plane >
     
    88 | 90 | 92 | 93 |

    89 | Enumerations

    enum  Geometry { Plane 91 | }
     
    94 |

    Detailed Description

    95 |

    This file defines necessary classes and enums in order to be able to run the partial differential equations version of the SEIRD model. The model is discretized using finite differences on a structured planar grid.

    96 |
    97 | 98 | 103 | 104 | 105 | -------------------------------------------------------------------------------- /documents/manual_for_library_maintainers/html/splitbar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/devanshr/Epidemics/b1a95003a0a280c25d4e0e5ada13381ea5a260db/documents/manual_for_library_maintainers/html/splitbar.png -------------------------------------------------------------------------------- /documents/manual_for_library_maintainers/html/structug_1_1_epidemics_1_1_functionality-members.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | Epidemics: Member List 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 |
    19 |
    20 | 21 | 22 | 23 | 28 | 29 | 30 |
    24 |
    Epidemics 25 |
    26 |
    Epidemics Plugin for UG4
    27 |
    31 |
    32 | 33 | 34 | 37 | 38 | 39 | 45 | 46 | 47 |
    51 |
    52 | 53 | 54 |
    55 | 58 |
    59 | 60 | 64 |
    65 |
    66 |
    67 |
    ug::Epidemics::Functionality Member List
    68 |
    69 |
    70 | 71 |

    This is the complete list of members for ug::Epidemics::Functionality, including all inherited members.

    72 | 73 | 74 |
    Common(Registry &reg, string grp)ug::Epidemics::Functionalityinlinestatic
    75 | 76 | 81 | 82 | 83 | -------------------------------------------------------------------------------- /documents/manual_for_library_maintainers/html/sync_off.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/devanshr/Epidemics/b1a95003a0a280c25d4e0e5ada13381ea5a260db/documents/manual_for_library_maintainers/html/sync_off.png -------------------------------------------------------------------------------- /documents/manual_for_library_maintainers/html/sync_on.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/devanshr/Epidemics/b1a95003a0a280c25d4e0e5ada13381ea5a260db/documents/manual_for_library_maintainers/html/sync_on.png -------------------------------------------------------------------------------- /documents/manual_for_library_maintainers/html/tab_a.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/devanshr/Epidemics/b1a95003a0a280c25d4e0e5ada13381ea5a260db/documents/manual_for_library_maintainers/html/tab_a.png -------------------------------------------------------------------------------- /documents/manual_for_library_maintainers/html/tab_b.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/devanshr/Epidemics/b1a95003a0a280c25d4e0e5ada13381ea5a260db/documents/manual_for_library_maintainers/html/tab_b.png -------------------------------------------------------------------------------- /documents/manual_for_library_maintainers/html/tab_h.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/devanshr/Epidemics/b1a95003a0a280c25d4e0e5ada13381ea5a260db/documents/manual_for_library_maintainers/html/tab_h.png -------------------------------------------------------------------------------- /documents/manual_for_library_maintainers/html/tab_s.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/devanshr/Epidemics/b1a95003a0a280c25d4e0e5ada13381ea5a260db/documents/manual_for_library_maintainers/html/tab_s.png -------------------------------------------------------------------------------- /documents/manual_for_library_maintainers/latex/Makefile: -------------------------------------------------------------------------------- 1 | all: refman.pdf 2 | 3 | pdf: refman.pdf 4 | 5 | refman.pdf: clean refman.tex 6 | pdflatex refman 7 | makeindex refman.idx 8 | pdflatex refman 9 | latex_count=8 ; \ 10 | while egrep -s 'Rerun (LaTeX|to get cross-references right)' refman.log && [ $$latex_count -gt 0 ] ;\ 11 | do \ 12 | echo "Rerunning latex...." ;\ 13 | pdflatex refman ;\ 14 | latex_count=`expr $$latex_count - 1` ;\ 15 | done 16 | makeindex refman.idx 17 | pdflatex refman 18 | 19 | 20 | clean: 21 | rm -f *.ps *.dvi *.aux *.toc *.idx *.ind *.ilg *.log *.out *.brf *.blg *.bbl refman.pdf 22 | -------------------------------------------------------------------------------- /documents/manual_for_library_maintainers/latex/annotated.tex: -------------------------------------------------------------------------------- 1 | \section{Class List} 2 | Here are the classes, structs, unions and interfaces with brief descriptions\+:\begin{DoxyCompactList} 3 | \item\contentsline{section}{\hyperlink{structug_1_1_epidemics_1_1_functionality}{ug\+::\+Epidemics\+::\+Functionality} }{\pageref{structug_1_1_epidemics_1_1_functionality}}{} 4 | \item\contentsline{section}{\hyperlink{classug_1_1epi_1_1_initial_value_manager}{ug\+::epi\+::\+Initial\+Value\+Manager$<$ T, F $>$} }{\pageref{classug_1_1epi_1_1_initial_value_manager}}{} 5 | \item\contentsline{section}{\hyperlink{classug_1_1epi_1_1_initial_value_manager_3_01seird_1_1_geometry_1_1_plane_00_01_f_01_4}{ug\+::epi\+::\+Initial\+Value\+Manager$<$ seird\+::\+Geometry\+::\+Plane, F $>$} }{\pageref{classug_1_1epi_1_1_initial_value_manager_3_01seird_1_1_geometry_1_1_plane_00_01_f_01_4}}{} 6 | \item\contentsline{section}{\hyperlink{classug_1_1epi_1_1_s_e_i_r_d}{ug\+::epi\+::\+S\+E\+I\+R\+D$<$ T $>$} }{\pageref{classug_1_1epi_1_1_s_e_i_r_d}}{} 7 | \item\contentsline{section}{\hyperlink{classug_1_1epi_1_1_s_e_i_r_d___p_d_e}{ug\+::epi\+::\+S\+E\+I\+R\+D\+\_\+\+P\+D\+E$<$ T, G $>$} }{\pageref{classug_1_1epi_1_1_s_e_i_r_d___p_d_e}}{} 8 | \item\contentsline{section}{\hyperlink{classug_1_1epi_1_1_s_e_i_r_d___p_d_e_3_01_t_00_01seird_1_1_geometry_1_1_plane_01_4}{ug\+::epi\+::\+S\+E\+I\+R\+D\+\_\+\+P\+D\+E$<$ T, seird\+::\+Geometry\+::\+Plane $>$} }{\pageref{classug_1_1epi_1_1_s_e_i_r_d___p_d_e_3_01_t_00_01seird_1_1_geometry_1_1_plane_01_4}}{} 9 | \end{DoxyCompactList} 10 | -------------------------------------------------------------------------------- /documents/manual_for_library_maintainers/latex/classug_1_1epi_1_1_initial_value_manager.tex: -------------------------------------------------------------------------------- 1 | \hypertarget{classug_1_1epi_1_1_initial_value_manager}{}\section{ug\+:\+:epi\+:\+:Initial\+Value\+Manager$<$ T, F $>$ Class Template Reference} 2 | \label{classug_1_1epi_1_1_initial_value_manager}\index{ug\+::epi\+::\+Initial\+Value\+Manager$<$ T, F $>$@{ug\+::epi\+::\+Initial\+Value\+Manager$<$ T, F $>$}} 3 | 4 | 5 | {\ttfamily \#include $<$epidemics.\+h$>$} 6 | 7 | 8 | 9 | \subsection{Detailed Description} 10 | \subsubsection*{template$<$seird\+::\+Geometry T, class F$>$\newline 11 | class ug\+::epi\+::\+Initial\+Value\+Manager$<$ T, F $>$} 12 | 13 | This class contains initial parameters for a \hyperlink{classug_1_1epi_1_1_s_e_i_r_d}{S\+E\+I\+RD} P\+DE problem that has a circular shape. For most applications this class is never needed. 14 | 15 | The documentation for this class was generated from the following file\+:\begin{DoxyCompactItemize} 16 | \item 17 | models/\hyperlink{epidemics_8h}{epidemics.\+h}\end{DoxyCompactItemize} 18 | -------------------------------------------------------------------------------- /documents/manual_for_library_maintainers/latex/classug_1_1epi_1_1_s_e_i_r_d___p_d_e.tex: -------------------------------------------------------------------------------- 1 | \hypertarget{classug_1_1epi_1_1_s_e_i_r_d___p_d_e}{}\section{ug\+:\+:epi\+:\+:S\+E\+I\+R\+D\+\_\+\+P\+DE$<$ T, G $>$ Class Template Reference} 2 | \label{classug_1_1epi_1_1_s_e_i_r_d___p_d_e}\index{ug\+::epi\+::\+S\+E\+I\+R\+D\+\_\+\+P\+D\+E$<$ T, G $>$@{ug\+::epi\+::\+S\+E\+I\+R\+D\+\_\+\+P\+D\+E$<$ T, G $>$}} 3 | 4 | 5 | {\ttfamily \#include $<$seird\+\_\+pde.\+h$>$} 6 | 7 | 8 | 9 | \subsection{Detailed Description} 10 | \subsubsection*{template$<$class T, seird\+::\+Geometry G$>$\newline 11 | class ug\+::epi\+::\+S\+E\+I\+R\+D\+\_\+\+P\+D\+E$<$ T, G $>$} 12 | 13 | Dummy class of the \hyperlink{classug_1_1epi_1_1_s_e_i_r_d}{S\+E\+I\+RD} P\+DE model for an unspecified geometry. More information about the theoretical foundation can be found in the other documents in the documents folder of this plugin. 14 | 15 | The documentation for this class was generated from the following file\+:\begin{DoxyCompactItemize} 16 | \item 17 | models/\hyperlink{seird__pde_8h}{seird\+\_\+pde.\+h}\end{DoxyCompactItemize} 18 | -------------------------------------------------------------------------------- /documents/manual_for_library_maintainers/latex/dir_15c636f0f56aa2be82ce6fc60cfa1928.tex: -------------------------------------------------------------------------------- 1 | \hypertarget{dir_15c636f0f56aa2be82ce6fc60cfa1928}{}\section{Epidemics\+Runner Directory Reference} 2 | \label{dir_15c636f0f56aa2be82ce6fc60cfa1928}\index{Epidemics\+Runner Directory Reference@{Epidemics\+Runner Directory Reference}} 3 | \subsection*{Directories} 4 | \begin{DoxyCompactItemize} 5 | \end{DoxyCompactItemize} 6 | -------------------------------------------------------------------------------- /documents/manual_for_library_maintainers/latex/dir_1ae4179d5e953611aae20c997279e02c.tex: -------------------------------------------------------------------------------- 1 | \hypertarget{dir_1ae4179d5e953611aae20c997279e02c}{}\section{models Directory Reference} 2 | \label{dir_1ae4179d5e953611aae20c997279e02c}\index{models Directory Reference@{models Directory Reference}} 3 | \subsection*{Files} 4 | \begin{DoxyCompactItemize} 5 | \item 6 | file \hyperlink{epidemics_8h}{epidemics.\+h} 7 | \item 8 | file \hyperlink{seird_8h}{seird.\+h} 9 | \item 10 | file \hyperlink{seird__pde_8h}{seird\+\_\+pde.\+h} 11 | \end{DoxyCompactItemize} 12 | -------------------------------------------------------------------------------- /documents/manual_for_library_maintainers/latex/dir_c3056047b02693331fdd63dc9ab89bf9.tex: -------------------------------------------------------------------------------- 1 | \hypertarget{dir_c3056047b02693331fdd63dc9ab89bf9}{}\section{Epidemics\+Runner/\+Linux Directory Reference} 2 | \label{dir_c3056047b02693331fdd63dc9ab89bf9}\index{Epidemics\+Runner/\+Linux Directory Reference@{Epidemics\+Runner/\+Linux Directory Reference}} 3 | \subsection*{Files} 4 | \begin{DoxyCompactItemize} 5 | \item 6 | file \hyperlink{utility_8h}{utility.\+h} 7 | \end{DoxyCompactItemize} 8 | -------------------------------------------------------------------------------- /documents/manual_for_library_maintainers/latex/files.tex: -------------------------------------------------------------------------------- 1 | \section{File List} 2 | Here is a list of all documented files with brief descriptions\+:\begin{DoxyCompactList} 3 | \item\contentsline{section}{Epidemics\+Runner/\+Linux/\hyperlink{utility_8h}{utility.\+h} }{\pageref{utility_8h}}{} 4 | \item\contentsline{section}{models/\hyperlink{epidemics_8h}{epidemics.\+h} }{\pageref{epidemics_8h}}{} 5 | \item\contentsline{section}{models/\hyperlink{seird_8h}{seird.\+h} }{\pageref{seird_8h}}{} 6 | \item\contentsline{section}{models/\hyperlink{seird__pde_8h}{seird\+\_\+pde.\+h} }{\pageref{seird__pde_8h}}{} 7 | \end{DoxyCompactList} 8 | -------------------------------------------------------------------------------- /documents/manual_for_library_maintainers/latex/index.tex: -------------------------------------------------------------------------------- 1 | \hypertarget{index_intro_sec}{}\section{Overview}\label{index_intro_sec} 2 | The Epidemics plugin consists of various algorithms used in epidemics modeling. \tabulinesep=1mm 3 | \begin{longtabu} spread 0pt [c]{*{2}{|X[-1]}|} 4 | \hline 5 | \rowcolor{\tableheadbgcolor}\textbf{ File }&\textbf{ Description }\\\cline{1-2} 6 | \endfirsthead 7 | \hline 8 | \endfoot 9 | \hline 10 | \rowcolor{\tableheadbgcolor}\textbf{ File }&\textbf{ Description }\\\cline{1-2} 11 | \endhead 12 | sir.\+h &Classical Susceptible-\/\+Infected-\/\+Recovered-\/\+Deceased O\+DE Model \\\cline{1-2} 13 | \hyperlink{seird_8h}{seird.\+h} &Extended S\+IR model accounting for a new class (Exposed) amongst other additions \\\cline{1-2} 14 | seird\+\_\+variable\+\_\+alpha.\+h &Extended S\+RI model paired with variable (over time) infection rate \\\cline{1-2} 15 | \hyperlink{seird__pde_8h}{seird\+\_\+pde.\+h} &A P\+DE formulation of the S\+E\+I\+RD model, discretized using Finite Differences \\\cline{1-2} 16 | \end{longtabu} 17 | This package is under active development. This manual was created in February 2021 for version number 0.\+34. \hypertarget{index_System}{}\subsection{Requirements}\label{index_System} 18 | In its current form, the package has been shown to work on Windows 10, Linux Ubuntu, Raspbian OS and mac\+OS Mojave 10.\+14.\+4. Compilers, such as the Microsoft Visual Studio Compiler, G\+C\+C11 and Clang were tested. The compiler must support at least C++ 2011, but a C++ 2017 compatible compiler is recommended for some examples. For help and more contact us at github.\+com/devanshr/\+Epidemics 19 | 20 | This manual was created in August 2021 for version number 0.\+35 -------------------------------------------------------------------------------- /documents/manual_for_library_maintainers/latex/refman.tex: -------------------------------------------------------------------------------- 1 | \documentclass[twoside]{book} 2 | 3 | % Packages required by doxygen 4 | \usepackage{fixltx2e} 5 | \usepackage{calc} 6 | \usepackage{doxygen} 7 | \usepackage[export]{adjustbox} % also loads graphicx 8 | \usepackage{graphicx} 9 | \usepackage[utf8]{inputenc} 10 | \usepackage{makeidx} 11 | \usepackage{multicol} 12 | \usepackage{multirow} 13 | \PassOptionsToPackage{warn}{textcomp} 14 | \usepackage{textcomp} 15 | \usepackage[nointegrals]{wasysym} 16 | \usepackage[table]{xcolor} 17 | 18 | % Font selection 19 | \usepackage[T1]{fontenc} 20 | \usepackage[scaled=.90]{helvet} 21 | \usepackage{courier} 22 | \usepackage{amssymb} 23 | \usepackage{sectsty} 24 | \renewcommand{\familydefault}{\sfdefault} 25 | \allsectionsfont{% 26 | \fontseries{bc}\selectfont% 27 | \color{darkgray}% 28 | } 29 | \renewcommand{\DoxyLabelFont}{% 30 | \fontseries{bc}\selectfont% 31 | \color{darkgray}% 32 | } 33 | \newcommand{\+}{\discretionary{\mbox{\scriptsize$\hookleftarrow$}}{}{}} 34 | 35 | % Page & text layout 36 | \usepackage{geometry} 37 | \geometry{% 38 | a4paper,% 39 | top=2.5cm,% 40 | bottom=2.5cm,% 41 | left=2.5cm,% 42 | right=2.5cm% 43 | } 44 | \tolerance=750 45 | \hfuzz=15pt 46 | \hbadness=750 47 | \setlength{\emergencystretch}{15pt} 48 | \setlength{\parindent}{0cm} 49 | \setlength{\parskip}{3ex plus 2ex minus 2ex} 50 | \makeatletter 51 | \renewcommand{\paragraph}{% 52 | \@startsection{paragraph}{4}{0ex}{-1.0ex}{1.0ex}{% 53 | \normalfont\normalsize\bfseries\SS@parafont% 54 | }% 55 | } 56 | \renewcommand{\subparagraph}{% 57 | \@startsection{subparagraph}{5}{0ex}{-1.0ex}{1.0ex}{% 58 | \normalfont\normalsize\bfseries\SS@subparafont% 59 | }% 60 | } 61 | \makeatother 62 | 63 | % Headers & footers 64 | \usepackage{fancyhdr} 65 | \pagestyle{fancyplain} 66 | \fancyhead[LE]{\fancyplain{}{\bfseries\thepage}} 67 | \fancyhead[CE]{\fancyplain{}{}} 68 | \fancyhead[RE]{\fancyplain{}{\bfseries\leftmark}} 69 | \fancyhead[LO]{\fancyplain{}{\bfseries\rightmark}} 70 | \fancyhead[CO]{\fancyplain{}{}} 71 | \fancyhead[RO]{\fancyplain{}{\bfseries\thepage}} 72 | \fancyfoot[LE]{\fancyplain{}{}} 73 | \fancyfoot[CE]{\fancyplain{}{}} 74 | \fancyfoot[RE]{\fancyplain{}{\bfseries\scriptsize Generated by Doxygen }} 75 | \fancyfoot[LO]{\fancyplain{}{\bfseries\scriptsize Generated by Doxygen }} 76 | \fancyfoot[CO]{\fancyplain{}{}} 77 | \fancyfoot[RO]{\fancyplain{}{}} 78 | \renewcommand{\footrulewidth}{0.4pt} 79 | \renewcommand{\chaptermark}[1]{% 80 | \markboth{#1}{}% 81 | } 82 | \renewcommand{\sectionmark}[1]{% 83 | \markright{\thesection\ #1}% 84 | } 85 | 86 | % Indices & bibliography 87 | \usepackage{natbib} 88 | \usepackage[titles]{tocloft} 89 | \setcounter{tocdepth}{3} 90 | \setcounter{secnumdepth}{5} 91 | \makeindex 92 | 93 | % Hyperlinks (required, but should be loaded last) 94 | \usepackage{ifpdf} 95 | \ifpdf 96 | \usepackage[pdftex,pagebackref=true]{hyperref} 97 | \else 98 | \usepackage[ps2pdf,pagebackref=true]{hyperref} 99 | \fi 100 | \hypersetup{% 101 | colorlinks=true,% 102 | linkcolor=blue,% 103 | citecolor=blue,% 104 | unicode% 105 | } 106 | 107 | % Custom commands 108 | \newcommand{\clearemptydoublepage}{% 109 | \newpage{\pagestyle{empty}\cleardoublepage}% 110 | } 111 | 112 | \usepackage{caption} 113 | \captionsetup{labelsep=space,justification=centering,font={bf},singlelinecheck=off,skip=4pt,position=top} 114 | 115 | %===== C O N T E N T S ===== 116 | 117 | \begin{document} 118 | 119 | % Titlepage & ToC 120 | \hypersetup{pageanchor=false, 121 | bookmarksnumbered=true, 122 | pdfencoding=unicode 123 | } 124 | \pagenumbering{alph} 125 | \begin{titlepage} 126 | \vspace*{7cm} 127 | \begin{center}% 128 | {\Large Epidemics }\\ 129 | \vspace*{1cm} 130 | {\large Generated by Doxygen 1.8.13}\\ 131 | \end{center} 132 | \end{titlepage} 133 | \clearemptydoublepage 134 | \pagenumbering{roman} 135 | \tableofcontents 136 | \clearemptydoublepage 137 | \pagenumbering{arabic} 138 | \hypersetup{pageanchor=true} 139 | 140 | %--- Begin generated contents --- 141 | \chapter{Epidemics Plugin for U\+G4} 142 | \label{index}\hypertarget{index}{}\input{index} 143 | \chapter{Class Index} 144 | \input{annotated} 145 | \chapter{File Index} 146 | \input{files} 147 | \chapter{Class Documentation} 148 | \input{structug_1_1_epidemics_1_1_functionality} 149 | \input{classug_1_1epi_1_1_initial_value_manager} 150 | \input{classug_1_1epi_1_1_initial_value_manager_3_01seird_1_1_geometry_1_1_plane_00_01_f_01_4} 151 | \input{classug_1_1epi_1_1_s_e_i_r_d} 152 | \input{classug_1_1epi_1_1_s_e_i_r_d___p_d_e} 153 | \input{classug_1_1epi_1_1_s_e_i_r_d___p_d_e_3_01_t_00_01seird_1_1_geometry_1_1_plane_01_4} 154 | \chapter{File Documentation} 155 | \input{utility_8h} 156 | \input{epidemics_8h} 157 | \input{seird_8h} 158 | \input{seird__pde_8h} 159 | %--- End generated contents --- 160 | 161 | % Index 162 | \backmatter 163 | \newpage 164 | \phantomsection 165 | \clearemptydoublepage 166 | \addcontentsline{toc}{chapter}{Index} 167 | \printindex 168 | 169 | \end{document} 170 | -------------------------------------------------------------------------------- /documents/manual_for_library_maintainers/latex/seird_8h.tex: -------------------------------------------------------------------------------- 1 | \hypertarget{seird_8h}{}\section{models/seird.h File Reference} 2 | \label{seird_8h}\index{models/seird.\+h@{models/seird.\+h}} 3 | {\ttfamily \#include $<$vector$>$}\newline 4 | {\ttfamily \#include $<$array$>$}\newline 5 | {\ttfamily \#include $<$tuple$>$}\newline 6 | {\ttfamily \#include $<$string$>$}\newline 7 | {\ttfamily \#include \char`\"{}utility.\+h\char`\"{}}\newline 8 | \subsection*{Classes} 9 | \begin{DoxyCompactItemize} 10 | \item 11 | class \hyperlink{classug_1_1epi_1_1_s_e_i_r_d}{ug\+::epi\+::\+S\+E\+I\+R\+D$<$ T $>$} 12 | \end{DoxyCompactItemize} 13 | 14 | 15 | \subsection{Detailed Description} 16 | This file contains the S\+E\+I\+RD class. The S\+E\+I\+RD O\+DE model includes a new class (Exposed) amongst other additions. More information can be found in the other documents in the documents folder of this plugin. -------------------------------------------------------------------------------- /documents/manual_for_library_maintainers/latex/seird__pde_8h.tex: -------------------------------------------------------------------------------- 1 | \hypertarget{seird__pde_8h}{}\section{models/seird\+\_\+pde.h File Reference} 2 | \label{seird__pde_8h}\index{models/seird\+\_\+pde.\+h@{models/seird\+\_\+pde.\+h}} 3 | {\ttfamily \#include $<$vector$>$}\newline 4 | {\ttfamily \#include $<$string$>$}\newline 5 | {\ttfamily \#include $<$array$>$}\newline 6 | {\ttfamily \#include \char`\"{}utility.\+h\char`\"{}}\newline 7 | {\ttfamily \#include \char`\"{}writer.\+h\char`\"{}}\newline 8 | \subsection*{Classes} 9 | \begin{DoxyCompactItemize} 10 | \item 11 | class \hyperlink{classug_1_1epi_1_1_s_e_i_r_d___p_d_e}{ug\+::epi\+::\+S\+E\+I\+R\+D\+\_\+\+P\+D\+E$<$ T, G $>$} 12 | \item 13 | class \hyperlink{classug_1_1epi_1_1_s_e_i_r_d___p_d_e_3_01_t_00_01seird_1_1_geometry_1_1_plane_01_4}{ug\+::epi\+::\+S\+E\+I\+R\+D\+\_\+\+P\+D\+E$<$ T, seird\+::\+Geometry\+::\+Plane $>$} 14 | \end{DoxyCompactItemize} 15 | \subsection*{Enumerations} 16 | \begin{DoxyCompactItemize} 17 | \item 18 | \mbox{\Hypertarget{seird__pde_8h_a9dcacbc4fae316c6107612d7fa6b482f}\label{seird__pde_8h_a9dcacbc4fae316c6107612d7fa6b482f}} 19 | enum {\bfseries Geometry} \{ {\bfseries Plane} 20 | \} 21 | \end{DoxyCompactItemize} 22 | 23 | 24 | \subsection{Detailed Description} 25 | This file defines necessary classes and enums in order to be able to run the partial differential equations version of the S\+E\+I\+RD model. The model is discretized using finite differences on a structured planar grid. -------------------------------------------------------------------------------- /documents/manual_for_library_maintainers/latex/structug_1_1_epidemics_1_1_functionality.tex: -------------------------------------------------------------------------------- 1 | \hypertarget{structug_1_1_epidemics_1_1_functionality}{}\section{ug\+:\+:Epidemics\+:\+:Functionality Struct Reference} 2 | \label{structug_1_1_epidemics_1_1_functionality}\index{ug\+::\+Epidemics\+::\+Functionality@{ug\+::\+Epidemics\+::\+Functionality}} 3 | \subsection*{Static Public Member Functions} 4 | \begin{DoxyCompactItemize} 5 | \item 6 | static void \hyperlink{structug_1_1_epidemics_1_1_functionality_ad9dde81d1e2732b713f22264975219ed}{Common} (Registry \®, string grp) 7 | \end{DoxyCompactItemize} 8 | 9 | 10 | \subsection{Member Function Documentation} 11 | \mbox{\Hypertarget{structug_1_1_epidemics_1_1_functionality_ad9dde81d1e2732b713f22264975219ed}\label{structug_1_1_epidemics_1_1_functionality_ad9dde81d1e2732b713f22264975219ed}} 12 | \index{ug\+::\+Epidemics\+::\+Functionality@{ug\+::\+Epidemics\+::\+Functionality}!Common@{Common}} 13 | \index{Common@{Common}!ug\+::\+Epidemics\+::\+Functionality@{ug\+::\+Epidemics\+::\+Functionality}} 14 | \subsubsection{\texorpdfstring{Common()}{Common()}} 15 | {\footnotesize\ttfamily static void ug\+::\+Epidemics\+::\+Functionality\+::\+Common (\begin{DoxyParamCaption}\item[{Registry \&}]{reg, }\item[{string}]{grp }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [static]}} 16 | 17 | Function called for the registration of Domain and Algebra independent parts. All Functions and Classes not depending on Domain and Algebra are to be placed here when registering. 18 | 19 | 20 | \begin{DoxyParams}{Parameters} 21 | {\em reg} & registry \\ 22 | \hline 23 | {\em parent\+Group} & group for sorting of functionality \\ 24 | \hline 25 | \end{DoxyParams} 26 | 27 | 28 | The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} 29 | \item 30 | epidemics\+\_\+plugin.\+cpp\end{DoxyCompactItemize} 31 | -------------------------------------------------------------------------------- /documents/math/PDE Model Finite Difference Derivation for a plane.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/devanshr/Epidemics/b1a95003a0a280c25d4e0e5ada13381ea5a260db/documents/math/PDE Model Finite Difference Derivation for a plane.pdf -------------------------------------------------------------------------------- /epidemics_plugin.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2011-2021: G-CSC, Goethe University Frankfurt 3 | * Only functions that are registered here are later able to be called from the UG4 Lua runtime. 4 | */ 5 | 6 | #include "bridge/util.h" 7 | 8 | // if possible, replace this with util_domain_dependent.h or 9 | // util_algebra_dependent.h to speed up compilation time 10 | #include "bridge/util_domain_algebra_dependent.h" 11 | 12 | #include "models/epidemics.h" 13 | #include 14 | 15 | 16 | using namespace std; 17 | using namespace ug::bridge; 18 | 19 | namespace ug{ 20 | namespace Epidemics{ 21 | 22 | struct Functionality 23 | { 24 | 25 | /** 26 | * Function called for the registration of Domain and Algebra independent parts. 27 | * All Functions and Classes not depending on Domain and Algebra 28 | * are to be placed here when registering. 29 | * 30 | * @param reg registry 31 | * @param parentGroup group for sorting of functionality 32 | */ 33 | static void Common(Registry& reg, string grp) 34 | { 35 | 36 | // The code below shows how a simple function can be registered 37 | 38 | 39 | reg.add_function("RunSIR", ug::epi::RunSIR,"call Function", 40 | "model#dir#name#init_susceptible#init_infected#init_recovered#init_deaths#tstart#tend#stepsize", "Runs the SIR ode model. See manual for details."); 41 | 42 | reg.add_function("RunSEIRD", ug::epi::RunSEIRD,"call Function", 43 | "model#dir#name#init_susceptible#init_infected#init_3#init_4#init_5#tstart#tend#stepsize", "Runs the SEIRD ode model. See manual for details."); 44 | 45 | reg.add_function("RunSEIRDPDE", ug::epi::RunSEIRDPDE,"call Function", 46 | "model#initial_manager#dir#name", "Runs the SEIRD PDE model. See manual for details."); 47 | 48 | 49 | 50 | reg.add_class_>>("SIR", grp) 51 | .add_constructor(); 52 | 53 | reg.add_class_>>("SEIRD", grp) 54 | .add_constructor(); 55 | 56 | reg.add_class_,ug::epi::seird::Geometry::Plane>>("SEIRD_PDE", grp) 57 | .add_constructor(); 58 | 59 | reg.add_class_>("InitialValueManager", grp) 60 | .add_constructor() 61 | .add_method("set_r1",&ug::epi::InitialValueManager::set_r1,"index") 62 | .add_method("set_r2",&ug::epi::InitialValueManager::set_r2,"index") 63 | .add_method("set_r3",&ug::epi::InitialValueManager::set_r3,"index") 64 | .add_method("set_r4",&ug::epi::InitialValueManager::set_r4,"index") 65 | .add_method("set_r5",&ug::epi::InitialValueManager::set_r5,"index") 66 | .add_method("set_v1",&ug::epi::InitialValueManager::set_v1,"index") 67 | .add_method("set_v2",&ug::epi::InitialValueManager::set_v2,"index") 68 | .add_method("set_v3",&ug::epi::InitialValueManager::set_v3,"index") 69 | .add_method("set_v4",&ug::epi::InitialValueManager::set_v4,"index") 70 | .add_method("set_v5",&ug::epi::InitialValueManager::set_v5,"index") 71 | .add_method("set_hx",&ug::epi::InitialValueManager::set_hx,"index") 72 | .add_method("set_ht",&ug::epi::InitialValueManager::set_ht,"index") 73 | .add_method("set_u0",&ug::epi::InitialValueManager::set_u0,"index") 74 | .add_method("set_t_start",&ug::epi::InitialValueManager::set_t_start,"index") 75 | .add_method("set_t_end",&ug::epi::InitialValueManager::set_t_end,"index") 76 | .add_method("get_t_start",&ug::epi::InitialValueManager::get_t_start,"index") 77 | .add_method("get_t_end",&ug::epi::InitialValueManager::get_t_end,"index"); 78 | 79 | 80 | } 81 | 82 | 83 | }; 84 | 85 | } 86 | 87 | 88 | /** 89 | * This function is called when the plugin is loaded. 90 | */ 91 | extern "C" void 92 | InitUGPlugin_Epidemics(Registry* reg, string grp) 93 | { 94 | grp.append("Epidemics"); 95 | typedef Epidemics::Functionality Functionality; 96 | 97 | try{ 98 | RegisterCommon(*reg,grp); 99 | } 100 | UG_REGISTRY_CATCH_THROW(grp); 101 | } 102 | 103 | }// namespace ug 104 | -------------------------------------------------------------------------------- /models/sir.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include 3 | #include 4 | #include 5 | #include 6 | 7 | namespace ug{ 8 | namespace epi{ 9 | 10 | template 11 | class SIR{ 12 | using F=typename T::value_type; 13 | 14 | private: 15 | F tau; 16 | F alpha; 17 | F theta; 18 | F h=0.01; 19 | 20 | std::array sir_ode(F t, std::array& u){ 21 | std::array res; 22 | 23 | F S=u[0]; 24 | F I=u[1]; 25 | 26 | res[0]=-alpha*S*I; // ds/dt=-alphaSI 27 | res[1]=alpha*S*I-(tau+theta)*I; //dI/dt = alphaSI -(tau+theta)I 28 | res[2]=tau*I; // dr/dt = tauI 29 | res[3]=theta*I; //dV/dt = thetaI 30 | return res; 31 | } 32 | 33 | 34 | void calc_values(F t, std::array& u, std::vector& res){ 35 | std::array k1=sir_ode(t,u); 36 | std::array v; 37 | v[0]=u[0]+h*0.5*k1[0]; 38 | v[1]=u[1]+h*0.5*k1[1]; 39 | v[2]=u[2]+h*0.5*k1[2]; 40 | v[3]=u[3]+h*0.5*k1[3]; 41 | std::array k2=sir_ode(t+0.5*h,v); 42 | 43 | v[0]=u[0]+h*0.5*k2[0]; 44 | v[1]=u[1]+h*0.5*k2[1]; 45 | v[2]=u[2]+h*0.5*k2[2]; 46 | v[3]=u[3]+h*0.5*k2[3]; 47 | std::array k3=sir_ode(t+0.5*h,v); 48 | 49 | v[0]=u[0]+h*k3[0]; 50 | v[1]=u[1]+h*k3[1]; 51 | v[2]=u[2]+h*k3[2]; 52 | v[3]=u[3]+h*k3[3]; 53 | std::array k4=sir_ode(t+h,v); 54 | 55 | u[0]=u[0]+(1.0/6.0)*h*(k1[0]+2*k2[0]+2*k3[0]+k4[0]); 56 | u[1]=u[1]+(1.0/6.0)*h*(k1[1]+2*k2[1]+2*k3[1]+k4[1]); 57 | u[2]=u[2]+(1.0/6.0)*h*(k1[2]+2*k2[2]+2*k3[2]+k4[2]); 58 | u[3]=u[3]+(1.0/6.0)*h*(k1[3]+2*k2[3]+2*k3[3]+k4[3]); 59 | res.push_back(u[0]); 60 | res.push_back(u[1]); 61 | res.push_back(u[2]); 62 | res.push_back(u[3]); 63 | } 64 | 65 | 66 | public: 67 | const std::array names={"Susceptibles","Infected", "Recovered","Deaths"}; 68 | SIR(F _alpha, F _tau, F _theta):tau(_tau),alpha(_alpha),theta(_theta){ 69 | 70 | } 71 | void change_step_size(F _h){ 72 | h=_h; 73 | } 74 | std::tuple,std::vector> run(F t0, const T u0, F tend){ 75 | std::vector res; 76 | std::vector ts; 77 | 78 | res.push_back(u0[0]); 79 | res.push_back(u0[1]); 80 | res.push_back(u0[2]); 81 | res.push_back(u0[3]); 82 | ts.push_back(t0); 83 | std::array u={u0[0],u0[1],u0[2],u0[3]}; 84 | 85 | F t=t0+h; 86 | while(t<=tend){ 87 | calc_values(t,u,res); 88 | ts.push_back(t); 89 | t+=h; 90 | } 91 | if (t!=tend){ 92 | t = tend; 93 | calc_values(t,u,res); 94 | ts.push_back(tend); 95 | } 96 | return std::make_tuple(ts,res); 97 | } 98 | 99 | }; 100 | 101 | 102 | 103 | } 104 | } 105 | 106 | -------------------------------------------------------------------------------- /models/writer.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include 3 | #include 4 | #include 5 | #include 6 | 7 | namespace ug{ 8 | namespace epi{ 9 | 10 | template 11 | class OutputWriter{ 12 | public: 13 | virtual void write_to_file(std::string path, std::string name, F t, const T& u)=0; 14 | 15 | }; 16 | template 17 | class OutputPDEWriter: public OutputWriter{ 18 | 19 | private: 20 | int dim=-1; 21 | 22 | F dimX=-1; //horizontal dimension of rectangle in world coordinates 23 | F dimY=-1; //vertical dimension of rectangle in world coordinates 24 | F hx; 25 | F hy; 26 | std::vector names; 27 | 28 | public: 29 | OutputPDEWriter(){ 30 | } 31 | OutputPDEWriter(int _dim, F _dimX, F _dimY, std::vector _names, F _hx, F _hy): names(_names), dim(_dim),dimX(_dimX), dimY(_dimY), hx(_hx),hy(_hy){ 32 | } 33 | 34 | virtual void write_to_file(std::string path, std::string name, F t, const T& u) override{ 35 | int points_x=(std::ceil(dimX/hx)+1); 36 | int points_y=(std::ceil(dimY/hx)+1); 37 | std::ofstream output; 38 | output.precision(15); 39 | //Write outputs 40 | output.open(path+name); 41 | int points_per_dim=u.size()/dim; 42 | output<<"#[TIME]:"< 91 | void write_data(std::string path, std::string name, const TA& times, const TB& m, const TC& datanames,std::string delimiter="--",std::string reason=""){ 92 | size_t dim=datanames.size(); 93 | std::string output; 94 | if (reason.length()!=0){ 95 | output.append(delimiter); 96 | output.append(reason); 97 | output+="\n"; 98 | } 99 | std::ofstream lua_output; 100 | std::ofstream general_output; 101 | 102 | general_output.precision(15); 103 | general_output.open(path+name); 104 | general_output<