\doxysection{Importer.\+h}
\hypertarget{_importer_8h_source}{}\label{_importer_8h_source}\index{src/Importer.h@{src/Importer.h}}

\begin{DoxyCode}{0}
\DoxyCodeLine{00001\ }
\DoxyCodeLine{00002\ \textcolor{keywordtype}{void}\ skip\_lines(std::ifstream\&\ file,\ \textcolor{keywordtype}{int}\ skip\_lines)\ \{}
\DoxyCodeLine{00003\ \ \ \ \ std::string\ temp;}
\DoxyCodeLine{00004\ \ \ \ \ \textcolor{keywordflow}{for}(\textcolor{keyword}{auto}\ i\ =\ 0;\ i\ <\ skip\_lines;\ i\ ++)\ \{}
\DoxyCodeLine{00005\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{if}\ (!std::getline(file,\ temp))\ \{}
\DoxyCodeLine{00006\ \ \ \ \ \ \ \ \ \ \ \ \ std::cerr\ <<\ \textcolor{stringliteral}{"{}Failed\ to\ read\ or\ fewer\ lines\ in\ file."{}}\ <<\ std::endl;}
\DoxyCodeLine{00007\ \ \ \ \ \ \ \ \ \}}
\DoxyCodeLine{00008\ \ \ \ \ \}}
\DoxyCodeLine{00009\ \}}
\DoxyCodeLine{00010\ }
\DoxyCodeLine{00011\ \textcolor{keyword}{template}\ <\textcolor{keyword}{typename}\ T>}
\DoxyCodeLine{00012\ std::tuple<PG\_Kernel<T>,\ \mbox{\hyperlink{class_raytracer}{Raytracer<T>}}>\ import\_single(std::string\ foldername)\ \{}
\DoxyCodeLine{00013\ }
\DoxyCodeLine{00014\ \ \ \ \ std::string\ filename\ =\ foldername\ +\ \textcolor{stringliteral}{"{}/inputs.txt"{}};}
\DoxyCodeLine{00015\ \ \ \ \ std::ifstream\ file(filename);}
\DoxyCodeLine{00016\ \ \ \ \ std::vector<std::string>\ inputs;}
\DoxyCodeLine{00017\ \ \ \ \ std::vector<std::string>\ surface\_inputs;}
\DoxyCodeLine{00018\ \ \ \ \ std::string\ temp;}
\DoxyCodeLine{00019\ \ \ \ \ std::string\ param\_name,\ equal\_sign,\ value,\ comment,\ unit;}
\DoxyCodeLine{00020\ }
\DoxyCodeLine{00021\ \ \ \ \ \textcolor{keywordflow}{for}(\textcolor{keywordtype}{int}\ i\ =\ 0;\ i\ <\ 60;\ i\ ++)\ \{}
\DoxyCodeLine{00022\ \ \ \ \ \ \ \ \ std::getline(file,\ temp);}
\DoxyCodeLine{00023\ \ \ \ \ \ \ \ \ std::stringstream\ ss(temp);}
\DoxyCodeLine{00024\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{if}(ss\ >>\ param\_name\ >>\ equal\_sign\ >>\ value)\ \{}
\DoxyCodeLine{00025\ \ \ \ \ \ \ \ \ \ \ \ \ inputs.push\_back(value);}
\DoxyCodeLine{00026\ \ \ \ \ \ \ \ \ \}}
\DoxyCodeLine{00027\ \ \ \ \ \}}
\DoxyCodeLine{00028\ \ \ \ }
\DoxyCodeLine{00029\ \ \ \ \ std::string\ geometry\_file\ =\ inputs[1].c\_str();}
\DoxyCodeLine{00030\ \ \ \ \ std::string\ surf\_prop\_file\ =\ inputs[2].c\_str();}
\DoxyCodeLine{00031\ }
\DoxyCodeLine{00032\ \ \ \ \ \mbox{\hyperlink{class_surface}{Surface<T>}}\ surf(foldername\ +\ \textcolor{stringliteral}{"{}/surface\_files/"{}}\ +\ geometry\_file,\ foldername\ +\ \textcolor{stringliteral}{"{}/surface\_files/"{}}\ +\ surf\_prop\_file);}
\DoxyCodeLine{00033\ }
\DoxyCodeLine{00034\ \ \ \ \ T\ offset\_x\ =\ \textcolor{keyword}{static\_cast<}T\textcolor{keyword}{>}(std::atof(inputs[3].c\_str()));}
\DoxyCodeLine{00035\ \ \ \ \ T\ offset\_y\ =\ \textcolor{keyword}{static\_cast<}T\textcolor{keyword}{>}(std::atof(inputs[4].c\_str()));}
\DoxyCodeLine{00036\ \ \ \ \ T\ offset\_z\ =\ \textcolor{keyword}{static\_cast<}T\textcolor{keyword}{>}(std::atof(inputs[5].c\_str()));}
\DoxyCodeLine{00037\ \ \ \ \ T\ rotation\_x\ =\ \textcolor{keyword}{static\_cast<}T\textcolor{keyword}{>}(std::atof(inputs[6].c\_str()));}
\DoxyCodeLine{00038\ \ \ \ \ T\ rotation\_y\ =\ \textcolor{keyword}{static\_cast<}T\textcolor{keyword}{>}(std::atof(inputs[7].c\_str()));}
\DoxyCodeLine{00039\ \ \ \ \ T\ rotation\_z\ =\ \textcolor{keyword}{static\_cast<}T\textcolor{keyword}{>}(std::atof(inputs[8].c\_str()));}
\DoxyCodeLine{00040\ \ \ \ \ T\ surf\_temp\ =\ \textcolor{keyword}{static\_cast<}T\textcolor{keyword}{>}(std::atof(inputs[9].c\_str()));}
\DoxyCodeLine{00041\ }
\DoxyCodeLine{00042\ \ \ \ \ T\ gas\_molar\_mass\ =\ \textcolor{keyword}{static\_cast<}T\textcolor{keyword}{>}(std::atof(inputs[11].c\_str()));}
\DoxyCodeLine{00043\ \ \ \ \ T\ gas\_temperature\ =\ \textcolor{keyword}{static\_cast<}T\textcolor{keyword}{>}(std::atof(inputs[12].c\_str()));}
\DoxyCodeLine{00044\ \ \ \ \ T\ gas\_speed\ =\ \textcolor{keyword}{static\_cast<}T\textcolor{keyword}{>}(std::atof(inputs[13].c\_str()));}
\DoxyCodeLine{00045\ }
\DoxyCodeLine{00046\ \ \ \ \ void\ (*local\_kernel)(T*,\ T*,\ T*,\ T*,\ T*);}
\DoxyCodeLine{00047\ }
\DoxyCodeLine{00048\ \ \ \ \ T\ GSI\_parameters[3];}
\DoxyCodeLine{00049\ \ \ \ \ GSI\_parameters[0]\ =\ \textcolor{keyword}{static\_cast<}T\textcolor{keyword}{>}(std::atof(inputs[15].c\_str()));}
\DoxyCodeLine{00050\ \ \ \ \ GSI\_parameters[1]\ =\ \textcolor{keyword}{static\_cast<}T\textcolor{keyword}{>}(std::atof(inputs[16].c\_str()));}
\DoxyCodeLine{00051\ }
\DoxyCodeLine{00052\ \ \ \ \ \textcolor{keywordtype}{long}\ num\_particles\ =\ \textcolor{keyword}{static\_cast<}\textcolor{keywordtype}{long}\textcolor{keyword}{>}(std::atof(inputs[18].c\_str()));}
\DoxyCodeLine{00053\ }
\DoxyCodeLine{00054\ \ \ \ \ T\ incidence\_angle\ =\ \textcolor{keyword}{static\_cast<}T\textcolor{keyword}{>}(std::atof(inputs[19].c\_str()))\ *\ M\_PI\ /\ 180.0;}
\DoxyCodeLine{00055\ }
\DoxyCodeLine{00056\ \ \ \ \ local\_kernel\ =\ sample\_CLL;}
\DoxyCodeLine{00057\ }
\DoxyCodeLine{00058\ \ \ \ \ T\ offset[4]\ =\ \{offset\_x,\ offset\_y,\ offset\_z\};}
\DoxyCodeLine{00059\ }
\DoxyCodeLine{00060\ \ \ \ \ surf.get\_geometry().rotate(0,\ rotation\_x\ *\ M\_PI\ /\ 180.0);}
\DoxyCodeLine{00061\ \ \ \ \ surf.get\_geometry().rotate(1,\ rotation\_y\ *\ M\_PI\ /\ 180.0);}
\DoxyCodeLine{00062\ \ \ \ \ surf.get\_geometry().rotate(2,\ rotation\_z\ *\ M\_PI\ /\ 180.0);}
\DoxyCodeLine{00063\ \ \ \ \ surf.get\_geometry().shift(offset);}
\DoxyCodeLine{00064\ \ \ \ \ surf.get\_geometry().add\_surface\_property(\textcolor{stringliteral}{"{}temperature"{}},\ surf\_temp);}
\DoxyCodeLine{00065\ \ \ \ \ surf.get\_geometry().add\_GSI\_property(\textcolor{stringliteral}{"{}alpha\_n"{}},\ GSI\_parameters[0]);}
\DoxyCodeLine{00066\ \ \ \ \ surf.get\_geometry().add\_GSI\_property(\textcolor{stringliteral}{"{}sigma\_t"{}},\ GSI\_parameters[1]);}
\DoxyCodeLine{00067\ \ \ \ \ surf.get\_local\_parameters()[0]\ =\ surf\_temp;}
\DoxyCodeLine{00068\ \ \ \ \ surf.get\_local\_parameters()[1]\ =\ GSI\_parameters[0];}
\DoxyCodeLine{00069\ \ \ \ \ surf.get\_local\_parameters()[2]\ =\ GSI\_parameters[1];}
\DoxyCodeLine{00070\ \ \ \ \ }
\DoxyCodeLine{00071\ \ \ \ \ \mbox{\hyperlink{class_gas}{Gas<T>}}\ atmosphere(1.0,\ gas\_temperature,\ gas\_molar\_mass,\ gas\_speed);}
\DoxyCodeLine{00072\ }
\DoxyCodeLine{00073\ \ \ \ \ \mbox{\hyperlink{class_matrix}{Matrix<T>}}\ incident\_velocity(3,\ 1,\ \{std::sin(incidence\_angle)\ *\ gas\_speed,\ 0.0,\ -\/\ std::cos(incidence\_angle)\ *\ gas\_speed\});}
\DoxyCodeLine{00074\ \ \ \ }
\DoxyCodeLine{00075\ \ \ \ \ \mbox{\hyperlink{class_p_g___kernel}{PG\_Kernel<T>}}\ kernel(surf,\ atmosphere,\ local\_kernel,\ incident\_velocity,\ num\_particles,\ \textcolor{stringliteral}{"{}single"{}});}
\DoxyCodeLine{00076\ \ \ \ \ \mbox{\hyperlink{class_raytracer}{Raytracer<T>}}\ raytracer(surf,\ atmosphere,\ local\_kernel,\ incident\_velocity,\ num\_particles,\ \textcolor{stringliteral}{"{}single"{}});}
\DoxyCodeLine{00077\ }
\DoxyCodeLine{00078\ \ \ \ \ \textcolor{keywordflow}{return}\ std::make\_tuple(kernel,\ raytracer);}
\DoxyCodeLine{00079\ \}}
\DoxyCodeLine{00080\ }
\DoxyCodeLine{00081\ }
\DoxyCodeLine{00082\ \textcolor{keyword}{template}\ <\textcolor{keyword}{typename}\ T>}
\DoxyCodeLine{00083\ std::tuple<std::vector<PG\_Kernel<T>>,\ std::vector<Raytracer<T>>>\ import\_batch(std::string\ foldername)\ \{}
\DoxyCodeLine{00084\ }
\DoxyCodeLine{00085\ \ \ \ \ std::string\ filename\ =\ foldername\ +\ \textcolor{stringliteral}{"{}/inputs.txt"{}};}
\DoxyCodeLine{00086\ \ \ \ \ std::ifstream\ file(filename);}
\DoxyCodeLine{00087\ \ \ \ \ std::vector<std::string>\ inputs;}
\DoxyCodeLine{00088\ \ \ \ \ std::vector<std::string>\ surface\_inputs;}
\DoxyCodeLine{00089\ \ \ \ \ std::string\ temp;}
\DoxyCodeLine{00090\ \ \ \ \ std::string\ param\_name,\ equal\_sign,\ value,\ comment,\ unit;}
\DoxyCodeLine{00091\ }
\DoxyCodeLine{00092\ \ \ \ \ \textcolor{keywordflow}{for}(\textcolor{keywordtype}{int}\ i\ =\ 0;\ i\ <\ 60;\ i\ ++)\ \{}
\DoxyCodeLine{00093\ \ \ \ \ \ \ \ \ std::getline(file,\ temp);}
\DoxyCodeLine{00094\ \ \ \ \ \ \ \ \ std::stringstream\ ss(temp);}
\DoxyCodeLine{00095\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{if}(ss\ >>\ param\_name\ >>\ equal\_sign\ >>\ value)\ \{}
\DoxyCodeLine{00096\ \ \ \ \ \ \ \ \ \ \ \ \ inputs.push\_back(value);}
\DoxyCodeLine{00097\ \ \ \ \ \ \ \ \ \}}
\DoxyCodeLine{00098\ \ \ \ \ \}}
\DoxyCodeLine{00099\ \ \ \ }
\DoxyCodeLine{00100\ \ \ \ \ std::string\ geometry\_file\ =\ inputs[1].c\_str();}
\DoxyCodeLine{00101\ \ \ \ \ std::string\ surf\_prop\_file\ =\ inputs[2].c\_str();}
\DoxyCodeLine{00102\ }
\DoxyCodeLine{00103\ \ \ \ \ T\ offset\_x\ =\ \textcolor{keyword}{static\_cast<}T\textcolor{keyword}{>}(std::atof(inputs[3].c\_str()));}
\DoxyCodeLine{00104\ \ \ \ \ T\ offset\_y\ =\ \textcolor{keyword}{static\_cast<}T\textcolor{keyword}{>}(std::atof(inputs[4].c\_str()));}
\DoxyCodeLine{00105\ \ \ \ \ T\ offset\_z\ =\ \textcolor{keyword}{static\_cast<}T\textcolor{keyword}{>}(std::atof(inputs[5].c\_str()));}
\DoxyCodeLine{00106\ \ \ \ \ T\ rotation\_x\ =\ \textcolor{keyword}{static\_cast<}T\textcolor{keyword}{>}(std::atof(inputs[6].c\_str()));}
\DoxyCodeLine{00107\ \ \ \ \ T\ rotation\_y\ =\ \textcolor{keyword}{static\_cast<}T\textcolor{keyword}{>}(std::atof(inputs[7].c\_str()));}
\DoxyCodeLine{00108\ \ \ \ \ T\ rotation\_z\ =\ \textcolor{keyword}{static\_cast<}T\textcolor{keyword}{>}(std::atof(inputs[8].c\_str()));}
\DoxyCodeLine{00109\ \ \ \ \ T\ surf\_temp\ =\ \textcolor{keyword}{static\_cast<}T\textcolor{keyword}{>}(std::atof(inputs[9].c\_str()));}
\DoxyCodeLine{00110\ }
\DoxyCodeLine{00111\ \ \ \ \ T\ gas\_molar\_mass\ =\ \textcolor{keyword}{static\_cast<}T\textcolor{keyword}{>}(std::atof(inputs[11].c\_str()));}
\DoxyCodeLine{00112\ \ \ \ \ T\ gas\_temperature\ =\ \textcolor{keyword}{static\_cast<}T\textcolor{keyword}{>}(std::atof(inputs[12].c\_str()));}
\DoxyCodeLine{00113\ \ \ \ \ T\ gas\_speed\ =\ \textcolor{keyword}{static\_cast<}T\textcolor{keyword}{>}(std::atof(inputs[13].c\_str()));}
\DoxyCodeLine{00114\ }
\DoxyCodeLine{00115\ \ \ \ \ void\ (*local\_kernel)(T*,\ T*,\ T*,\ T*,\ T*);}
\DoxyCodeLine{00116\ }
\DoxyCodeLine{00117\ \ \ \ \ T\ GSI\_parameters[3];}
\DoxyCodeLine{00118\ \ \ \ \ GSI\_parameters[0]\ =\ \textcolor{keyword}{static\_cast<}T\textcolor{keyword}{>}(std::atof(inputs[15].c\_str()));}
\DoxyCodeLine{00119\ \ \ \ \ GSI\_parameters[1]\ =\ \textcolor{keyword}{static\_cast<}T\textcolor{keyword}{>}(std::atof(inputs[16].c\_str()));}
\DoxyCodeLine{00120\ }
\DoxyCodeLine{00121\ \ \ \ \ \textcolor{keywordtype}{long}\ num\_particles\ =\ \textcolor{keyword}{static\_cast<}\textcolor{keywordtype}{long}\textcolor{keyword}{>}(std::atof(inputs[18].c\_str()));}
\DoxyCodeLine{00122\ }
\DoxyCodeLine{00123\ \ \ \ \ T\ incidence\_angle\ =\ \textcolor{keyword}{static\_cast<}T\textcolor{keyword}{>}(std::atof(inputs[19].c\_str()));}
\DoxyCodeLine{00124\ }
\DoxyCodeLine{00125\ \ \ \ \ T\ incidence\_angle\_start\ =\ \textcolor{keyword}{static\_cast<}T\textcolor{keyword}{>}(std::atof(inputs[21].c\_str()))\ *\ M\_PI\ /\ 180.0;}
\DoxyCodeLine{00126\ \ \ \ \ T\ incidence\_angle\_end\ =\ \textcolor{keyword}{static\_cast<}T\textcolor{keyword}{>}(std::atof(inputs[22].c\_str()))\ *\ M\_PI\ /\ 180.0;}
\DoxyCodeLine{00127\ \ \ \ \ T\ incidence\_angle\_step\ =\ \textcolor{keyword}{static\_cast<}T\textcolor{keyword}{>}(std::atof(inputs[23].c\_str()))\ *\ M\_PI\ /\ 180.0;}
\DoxyCodeLine{00128\ }
\DoxyCodeLine{00129\ \ \ \ \ T\ alpha\_n\_start\ =\ \textcolor{keyword}{static\_cast<}T\textcolor{keyword}{>}(std::atof(inputs[24].c\_str()));}
\DoxyCodeLine{00130\ \ \ \ \ T\ alpha\_n\_end\ =\ \textcolor{keyword}{static\_cast<}T\textcolor{keyword}{>}(std::atof(inputs[25].c\_str()));}
\DoxyCodeLine{00131\ \ \ \ \ T\ alpha\_n\_step\ =\ \textcolor{keyword}{static\_cast<}T\textcolor{keyword}{>}(std::atof(inputs[26].c\_str()));}
\DoxyCodeLine{00132\ }
\DoxyCodeLine{00133\ \ \ \ \ T\ sigma\_t\_start\ =\ \textcolor{keyword}{static\_cast<}T\textcolor{keyword}{>}(std::atof(inputs[27].c\_str()));}
\DoxyCodeLine{00134\ \ \ \ \ T\ sigma\_t\_end\ =\ \textcolor{keyword}{static\_cast<}T\textcolor{keyword}{>}(std::atof(inputs[28].c\_str()));}
\DoxyCodeLine{00135\ \ \ \ \ T\ sigma\_t\_step\ =\ \textcolor{keyword}{static\_cast<}T\textcolor{keyword}{>}(std::atof(inputs[29].c\_str()));}
\DoxyCodeLine{00136\ }
\DoxyCodeLine{00137\ \ \ \ \ local\_kernel\ =\ sample\_CLL;}
\DoxyCodeLine{00138\ }
\DoxyCodeLine{00139\ \ \ \ \ std::vector<PG\_Kernel<T>>\ kernels;}
\DoxyCodeLine{00140\ \ \ \ \ std::vector<Raytracer<T>>\ raytracers;}
\DoxyCodeLine{00141\ }
\DoxyCodeLine{00142\ \ \ \ \ \textcolor{keywordflow}{for}(\textcolor{keywordtype}{long}\ i\ =\ 0;\ i\ <=\ (long)((incidence\_angle\_end\ -\/\ incidence\_angle\_start)\ /\ incidence\_angle\_step);\ i\ ++)\ \{}
\DoxyCodeLine{00143\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{for}(\textcolor{keywordtype}{long}\ j\ =\ 0;\ j\ <=\ (long)((alpha\_n\_end\ -\/\ alpha\_n\_start)\ /\ alpha\_n\_step);\ j\ ++)\ \{}
\DoxyCodeLine{00144\ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{for}(\textcolor{keywordtype}{long}\ k\ =\ 0;\ k\ <=\ (long)((sigma\_t\_end\ -\/\ sigma\_t\_start)\ /\ sigma\_t\_step);\ k\ ++)\ \{}
\DoxyCodeLine{00145\ }
\DoxyCodeLine{00146\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ T\ incidence\_angle\_local\ =\ incidence\_angle\_start\ +\ (T)(i)\ *\ incidence\_angle\_step;}
\DoxyCodeLine{00147\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ T\ alpha\_n\_local\ =\ alpha\_n\_start\ +\ (T)(j)\ *\ alpha\_n\_step;}
\DoxyCodeLine{00148\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ T\ sigma\_t\_local\ =\ sigma\_t\_start\ +\ (T)(k)\ *\ sigma\_t\_step;}
\DoxyCodeLine{00149\ }
\DoxyCodeLine{00150\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \mbox{\hyperlink{class_surface}{Surface<T>}}\ surf(foldername\ +\ \textcolor{stringliteral}{"{}/surface\_files/"{}}\ +\ geometry\_file,\ foldername\ +\ \textcolor{stringliteral}{"{}/surface\_files/"{}}\ +\ surf\_prop\_file);}
\DoxyCodeLine{00151\ }
\DoxyCodeLine{00152\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ T\ offset[4]\ =\ \{offset\_x,\ offset\_y,\ offset\_z\};}
\DoxyCodeLine{00153\ }
\DoxyCodeLine{00154\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ surf.get\_geometry().rotate(0,\ rotation\_x\ *\ M\_PI\ /\ 180.0);}
\DoxyCodeLine{00155\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ surf.get\_geometry().rotate(1,\ rotation\_y\ *\ M\_PI\ /\ 180.0);}
\DoxyCodeLine{00156\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ surf.get\_geometry().rotate(2,\ rotation\_z\ *\ M\_PI\ /\ 180.0);}
\DoxyCodeLine{00157\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ surf.get\_geometry().shift(offset);}
\DoxyCodeLine{00158\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ surf.get\_geometry().add\_surface\_property(\textcolor{stringliteral}{"{}temperature"{}},\ surf\_temp);}
\DoxyCodeLine{00159\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ surf.get\_geometry().add\_GSI\_property(\textcolor{stringliteral}{"{}alpha\_n"{}},\ alpha\_n\_local);}
\DoxyCodeLine{00160\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ surf.get\_geometry().add\_GSI\_property(\textcolor{stringliteral}{"{}sigma\_t"{}},\ sigma\_t\_local);}
\DoxyCodeLine{00161\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ surf.get\_local\_parameters()[0]\ =\ surf\_temp;}
\DoxyCodeLine{00162\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ surf.get\_local\_parameters()[1]\ =\ alpha\_n\_local;}
\DoxyCodeLine{00163\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ surf.get\_local\_parameters()[2]\ =\ sigma\_t\_local;}
\DoxyCodeLine{00164\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ }
\DoxyCodeLine{00165\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \mbox{\hyperlink{class_gas}{Gas<T>}}\ atmosphere(1.0,\ gas\_temperature,\ gas\_molar\_mass,\ gas\_speed);}
\DoxyCodeLine{00166\ }
\DoxyCodeLine{00167\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \mbox{\hyperlink{class_matrix}{Matrix<T>}}\ incident\_velocity(3,\ 1,\ \{std::sin(incidence\_angle\_local)\ *\ gas\_speed,\ 0.0,\ -\/\ std::cos(incidence\_angle\_local)\ *\ gas\_speed\});}
\DoxyCodeLine{00168\ }
\DoxyCodeLine{00169\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ std::stringstream\ stream;}
\DoxyCodeLine{00170\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ stream\ <<\ std::fixed\ <<\ std::setprecision(2)\ <<\ \textcolor{stringliteral}{"{}theta\_i\_"{}}\ <<\ incidence\_angle\_local\ *\ 180.0\ /\ M\_PI\ <<\ \textcolor{stringliteral}{"{}\_alpha\_n\_"{}}\ <<\ }
\DoxyCodeLine{00171\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ alpha\_n\_local\ <<\ \textcolor{stringliteral}{"{}\_sigma\_t\_"{}}\ <<\ sigma\_t\_local;}
\DoxyCodeLine{00172\ }
\DoxyCodeLine{00173\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \mbox{\hyperlink{class_p_g___kernel}{PG\_Kernel<T>}}\ kernel(surf,\ atmosphere,\ local\_kernel,\ incident\_velocity,\ num\_particles,\ stream.str());}
\DoxyCodeLine{00174\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \mbox{\hyperlink{class_raytracer}{Raytracer<T>}}\ raytracer(surf,\ atmosphere,\ local\_kernel,\ incident\_velocity,\ num\_particles,\ stream.str());}
\DoxyCodeLine{00175\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ kernels.push\_back(kernel);}
\DoxyCodeLine{00176\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ raytracers.push\_back(raytracer);}
\DoxyCodeLine{00177\ \ \ \ \ \ \ \ \ \ \ \ \ \}}
\DoxyCodeLine{00178\ \ \ \ \ \ \ \ \ \}}
\DoxyCodeLine{00179\ \ \ \ \ \}}
\DoxyCodeLine{00180\ }
\DoxyCodeLine{00181\ \ \ \ \ }
\DoxyCodeLine{00182\ }
\DoxyCodeLine{00183\ \ \ \ \ \textcolor{keywordflow}{return}\ std::make\_tuple(kernels,\ raytracers);}
\DoxyCodeLine{00184\ \}}

\end{DoxyCode}
