xref: /phasta/phSolver/common/input_fform.cc (revision 513954ef803c300cddba2bb96b4a5dac0b93489a)
159599516SKenneth E. Jansen #include <fstream>
259599516SKenneth E. Jansen #include <stdio.h>
359599516SKenneth E. Jansen #include <stdlib.h>
459599516SKenneth E. Jansen #include <vector>
559599516SKenneth E. Jansen #include <string>
659599516SKenneth E. Jansen //MR CHANGE
759599516SKenneth E. Jansen #include <cstring>
859599516SKenneth E. Jansen //MR CHANGE END
959599516SKenneth E. Jansen 
1059599516SKenneth E. Jansen #include "Input.h"
1159599516SKenneth E. Jansen #include "common_c.h"
1259599516SKenneth E. Jansen 
13*513954efSKenneth E. Jansen #include <FCMangle.h>
14*513954efSKenneth E. Jansen #define BC_setVars FortranCInterface_MODULE_(blowercontrol, bc_setvars,		BLOWERCONTROL, BC_SETVARS)
15*513954efSKenneth E. Jansen 
1659599516SKenneth E. Jansen using namespace std; //::cout;
1759599516SKenneth E. Jansen void print_error_code(int ierr);
1859599516SKenneth E. Jansen int SONFATH=0;
1959599516SKenneth E. Jansen extern "C" char phasta_iotype[80];
20*513954efSKenneth E. Jansen //extern "C"
21*513954efSKenneth E. Jansen extern "C" void BC_setVars(		int*, 		int*,
22*513954efSKenneth E. Jansen 								int*,		int*,
23*513954efSKenneth E. Jansen 								double*, 	double*,	double*,
24*513954efSKenneth E. Jansen 								double*, 	double*,	double*,
25*513954efSKenneth E. Jansen 								double*, 	double*,	double*,
26*513954efSKenneth E. Jansen 								double*		);
2759599516SKenneth E. Jansen 
289ae91bddSCameron Smith int input_fform(phSolver::Input& inp)
2959599516SKenneth E. Jansen {
3059599516SKenneth E. Jansen 
3159599516SKenneth E. Jansen   int ierr = 0 ;
3259599516SKenneth E. Jansen   int i,j;
3359599516SKenneth E. Jansen 
3459599516SKenneth E. Jansen   try {
3559599516SKenneth E. Jansen     if(workfc.myrank==workfc.master) {
369ae91bddSCameron Smith       printf("\n Complete Filename: %s \n", inp.GetDefaultFileName());
379ae91bddSCameron Smith       printf("\n Local Config: %s \n\n", inp.GetUserFileName());
3859599516SKenneth E. Jansen     }
3959599516SKenneth E. Jansen 
4059599516SKenneth E. Jansen #ifdef AMG
4159599516SKenneth E. Jansen 
4259599516SKenneth E. Jansen 	// AMG PARAMETERS
4359599516SKenneth E. Jansen 
4459599516SKenneth E. Jansen 	if ((string)inp.GetValue("Employ AMG") == "True" ) {
4559599516SKenneth E. Jansen 
4659599516SKenneth E. Jansen 	    amgvari.irun_amg = 1;
4759599516SKenneth E. Jansen 
4859599516SKenneth E. Jansen         amgvari.irun_amg_prec = inp.GetValue("Run AMG As CG-preconditioner");
4959599516SKenneth E. Jansen 
5059599516SKenneth E. Jansen         amgvarr.strong_eps       = inp.GetValue("Strong Criterion Eps");
5159599516SKenneth E. Jansen 
5259599516SKenneth E. Jansen         amgvarr.ramg_eps         = inp.GetValue("AMG Convergence Eps");
5359599516SKenneth E. Jansen 
5459599516SKenneth E. Jansen         amgvarr.ramg_relax       = inp.GetValue("AMG Relaxation Omega");
5559599516SKenneth E. Jansen         amgvarr.ramg_trunc       = inp.GetValue("AMG Truncation Set");
5659599516SKenneth E. Jansen 
5759599516SKenneth E. Jansen         amgvari.iamg_verb        = inp.GetValue("AMG Verbosity");
5859599516SKenneth E. Jansen 
5959599516SKenneth E. Jansen         amgvari.iamg_neg_sten    = inp.GetValue("AMG Neg_Sten");
6059599516SKenneth E. Jansen 
6159599516SKenneth E. Jansen         amgvari.iamg_nlevel      = inp.GetValue("AMG Nlevel");
6259599516SKenneth E. Jansen 
6359599516SKenneth E. Jansen         amgvari.iamg_c_solver  = inp.GetValue("AMG Coarsest Solver");
6459599516SKenneth E. Jansen 
6559599516SKenneth E. Jansen         amgvari.iamg_init = 0;
6659599516SKenneth E. Jansen         amgvari.iamg_setup_frez = inp.GetValue("AMG Freeze Setup");
6759599516SKenneth E. Jansen         if ((string)inp.GetValue("AMG Interpolation Type")=="Standard")
6859599516SKenneth E. Jansen             amgvari.iamg_interp = 1;
6959599516SKenneth E. Jansen         else
7059599516SKenneth E. Jansen             amgvari.iamg_interp = 0;
7159599516SKenneth E. Jansen         amgvari.maxnev = inp.GetValue("AMG GGB nev");
7259599516SKenneth E. Jansen         amgvari.maxncv = inp.GetValue("AMG GGB ncv");
7359599516SKenneth E. Jansen 
7459599516SKenneth E. Jansen         if ((string)inp.GetValue("AMG Smoother Type")=="Gauss-Seidel")
7559599516SKenneth E. Jansen             amgvari.iamg_smoother = 1;
7659599516SKenneth E. Jansen         else if ((string)inp.GetValue("AMG Smoother Type")=="ChebyShev")
7759599516SKenneth E. Jansen             amgvari.iamg_smoother = 2;
7859599516SKenneth E. Jansen         else if ((string)inp.GetValue("AMG Smoother Type")=="MLS")
7959599516SKenneth E. Jansen             amgvari.iamg_smoother = 3;
8059599516SKenneth E. Jansen         amgvarr.ramg_chebyratio       = inp.GetValue("AMG Chebyshev Eigenvalue ratio");
8159599516SKenneth E. Jansen 
8259599516SKenneth E. Jansen         amgvari.mlsdeg = inp.GetValue("AMG MLS Degree");
8359599516SKenneth E. Jansen         amgvari.iamg_reduce = inp.GetValue("AMG Run Reduced Serial");
8459599516SKenneth E. Jansen 	}
8559599516SKenneth E. Jansen #endif
8659599516SKenneth E. Jansen 
8759599516SKenneth E. Jansen /////////////////////////////chen Sep 25 2009  Flow Control Parameters ////////
8859599516SKenneth E. Jansen // Take BC from IC at inlet
8959599516SKenneth E. Jansen       ctrlvari.iI2Binlet = (int)inp.GetValue("Take BC from IC at Inlet");
9059599516SKenneth E. Jansen       if(ctrlvari.iI2Binlet > 0 )
9159599516SKenneth E. Jansen         {
9259599516SKenneth E. Jansen          ctrlvar.inletVelX = inp.GetValue("Inlet Bulk x Velocity");
9359599516SKenneth E. Jansen         }
9459599516SKenneth E. Jansen // set uniform outlet pressure
95*513954efSKenneth E. Jansen 	//	ctrlvari.isetOutPres = (int)inp.GetValue("Set Outlet Pressure");
96*513954efSKenneth E. Jansen 	//	if(ctrlvari.isetOutPres > 0 )
97*513954efSKenneth E. Jansen 
98*513954efSKenneth E. Jansen     ductvari.isetOutletID  = (int)inp.GetValue("Duct Outlet ID");
99*513954efSKenneth E. Jansen     if(ductvari.isetOutletID > 0 )
100*513954efSKenneth E. Jansen 		ctrlvar.outPres1 = inp.GetValue("Duct Uniform Outlet Pressure");
101*513954efSKenneth E. Jansen 
102*513954efSKenneth E. Jansen // Override Eddy Vicosity IC and BC
103*513954efSKenneth E. Jansen 	ductvari.isetEV_IC_BC=(int)inp.GetValue("Override Eddy Viscosity");
104*513954efSKenneth E. Jansen 	if(ductvari.isetEV_IC_BC==1){
105*513954efSKenneth E. Jansen 		ductvar.evis_IC_BC=inp.GetValue("Eddy Viscosity Value for Override");
10659599516SKenneth E. Jansen 	}
107*513954efSKenneth E. Jansen 
108*513954efSKenneth E. Jansen 	if(ductvari.isetEVramp = (int)inp.GetValue("Specify Initial Eddy Viscosity Ramp")){
109*513954efSKenneth E. Jansen 		ductvar.EVrampXmin	=inp.GetValue("Initial Scalar 1 ramp start");
110*513954efSKenneth E. Jansen 		ductvar.EVrampXmax	=inp.GetValue("Initial Scalar 1 ramp end");
111*513954efSKenneth E. Jansen 		ductvar.EVrampMax	=inp.GetValue("Initial Scalar 1 high");
112*513954efSKenneth E. Jansen 		ductvar.EVrampMin   =inp.GetValue("Initial Scalar 1 low");
113*513954efSKenneth E. Jansen 	}
114*513954efSKenneth E. Jansen 
11559599516SKenneth E. Jansen // set initial condition
11659599516SKenneth E. Jansen 	ctrlvari.isetInitial=(int)inp.GetValue("Specify Initial Conditions");
117*513954efSKenneth E. Jansen 	if(ctrlvari.isetInitial==1){
11859599516SKenneth E. Jansen 		ctrlvar.xvel_ini = inp.GetValue("Initial X Velocity");
11959599516SKenneth E. Jansen 		ctrlvar.yvel_ini = inp.GetValue("Initial Y Velocity");
12059599516SKenneth E. Jansen 		ctrlvar.zvel_ini = inp.GetValue("Initial Z Velocity");
12159599516SKenneth E. Jansen 		ctrlvar.temp_ini = inp.GetValue("Initial Temp");
12259599516SKenneth E. Jansen 		ctrlvar.pres_ini = inp.GetValue("Initial Pressure");
12359599516SKenneth E. Jansen 		ctrlvar.evis_ini = inp.GetValue("Initial Scalar 1");
12459599516SKenneth E. Jansen 	}
12559599516SKenneth E. Jansen 
126*513954efSKenneth E. Jansen 
127*513954efSKenneth E. Jansen 
128*513954efSKenneth E. Jansen 
129*513954efSKenneth E. Jansen //initial condition for duct
130*513954efSKenneth E. Jansen 	ductvari.isetInitial_Duct=(int)inp.GetValue("Set Initial Condition for Duct");
131*513954efSKenneth E. Jansen //inlet condition for duct
132*513954efSKenneth E. Jansen 	ductvari.isetInlet_Duct=(int)inp.GetValue("Set Inlet Condition for Duct");
133*513954efSKenneth E. Jansen 
134*513954efSKenneth E. Jansen     //surfID, t_cycle, t_riseTime, t_fallTime, t_fullOn, vmax, vmin, T, nu, deltaBL, enable
135*513954efSKenneth E. Jansen     n_tmp = (int) inp.GetValue("Number of Blower Surfaces");	//BC_setNBlower(&n_tmp);
136*513954efSKenneth E. Jansen 
137*513954efSKenneth E. Jansen 	if(n_tmp > 0){
138*513954efSKenneth E. Jansen 		vector<int>    *ivec[3];
139*513954efSKenneth E. Jansen 		vector<double> *dvec[10];
140*513954efSKenneth E. Jansen 
141*513954efSKenneth E. Jansen 		for(i = 0; i < 3; i++)	ivec[i] = new vector<int>;
142*513954efSKenneth E. Jansen 		for(i = 0; i < 10; i++)	dvec[i] = new vector<double>;
143*513954efSKenneth E. Jansen 
144*513954efSKenneth E. Jansen         *ivec[0] = inp.GetValue("Blower Mode");
145*513954efSKenneth E. Jansen 		*ivec[1] = inp.GetValue("Blower Surface ID");
146*513954efSKenneth E. Jansen 		*ivec[2] = inp.GetValue("Blower Enable");
147*513954efSKenneth E. Jansen 
148*513954efSKenneth E. Jansen 		*dvec[0] = inp.GetValue("Blower Cycle Period");
149*513954efSKenneth E. Jansen         *dvec[1] = inp.GetValue("Blower Full On Period");
150*513954efSKenneth E. Jansen 		*dvec[2] = inp.GetValue("Blower Rise Time");
151*513954efSKenneth E. Jansen 		*dvec[3] = inp.GetValue("Blower Fall Time");
152*513954efSKenneth E. Jansen         *dvec[4] = inp.GetValue("Blower Maximum u_normal");
153*513954efSKenneth E. Jansen         *dvec[5] = inp.GetValue("Blower Minimum u_normal");
154*513954efSKenneth E. Jansen 		*dvec[6] = inp.GetValue("Blower Temperature");
155*513954efSKenneth E. Jansen 		*dvec[7] = inp.GetValue("Blower Eddy Viscosity");
156*513954efSKenneth E. Jansen 		*dvec[8] = inp.GetValue("Blower BL Thickness");
157*513954efSKenneth E. Jansen 		*dvec[9] = inp.GetValue("Blower BL Thickness (scalar)");
158*513954efSKenneth E. Jansen 
159*513954efSKenneth E. Jansen 		BC_setVars(	&n_tmp,
160*513954efSKenneth E. Jansen 					&(*ivec[0])[0], 	//mode
161*513954efSKenneth E. Jansen 					&(*ivec[1])[0], 	//surfID
162*513954efSKenneth E. Jansen 					&(*ivec[2])[0],		//enable
163*513954efSKenneth E. Jansen 					&(*dvec[0])[0],		//t_cycle
164*513954efSKenneth E. Jansen 					&(*dvec[1])[0],		//t_fullOn
165*513954efSKenneth E. Jansen 					&(*dvec[2])[0],		//t_riseTime
166*513954efSKenneth E. Jansen 					&(*dvec[3])[0],		//t_fallTime
167*513954efSKenneth E. Jansen 				 	&(*dvec[4])[0],		//vmax
168*513954efSKenneth E. Jansen 					&(*dvec[5])[0],		//vmin
169*513954efSKenneth E. Jansen 					&(*dvec[6])[0],		//T
170*513954efSKenneth E. Jansen 					&(*dvec[7])[0],		//nu
171*513954efSKenneth E. Jansen 				 	&(*dvec[8])[0],		//delta BL velocity
172*513954efSKenneth E. Jansen 					&(*dvec[9])[0]	);	//delta BL scalar
173*513954efSKenneth E. Jansen 
174*513954efSKenneth E. Jansen 	}
175*513954efSKenneth E. Jansen 
176*513954efSKenneth E. Jansen //suction condition for duct
177*513954efSKenneth E. Jansen 	ductvari.isetSuctionID_Duct=(int)inp.GetValue("Duct Set Suction Surface ID");        //suction patch surface IDs
178*513954efSKenneth E. Jansen 	if(ductvari.isetSuctionID_Duct > 0){
179*513954efSKenneth E. Jansen 		ductvari.suctionVbottom     = inp.GetValue("Duct Bottom Suction Normal Velocity");
180*513954efSKenneth E. Jansen 		ductvari.suctionVside_lower = inp.GetValue("Duct Lower Side Suction Normal Velocity");
181*513954efSKenneth E. Jansen 		ductvari.suctionVside_upper = inp.GetValue("Duct Upper Side Surface Normal Velocity");
182*513954efSKenneth E. Jansen 		ductvari.suctionVtop        = inp.GetValue("Duct Top Surface Normal Velocity");
183*513954efSKenneth E. Jansen 	}
184*513954efSKenneth E. Jansen 
185*513954efSKenneth E. Jansen //  duct geometry type
186*513954efSKenneth E. Jansen 	ductvari.iDuctgeometryType = (int)inp.GetValue("Duct Geometry Type");
187*513954efSKenneth E. Jansen 
18859599516SKenneth E. Jansen ///////////////////////////////////////////////////////////////////////////////
18959599516SKenneth E. Jansen 
19059599516SKenneth E. Jansen 
19159599516SKenneth E. Jansen     // Disabled Features
19259599516SKenneth E. Jansen 
19359599516SKenneth E. Jansen     conpar.iALE = inp.GetValue("iALE");
19459599516SKenneth E. Jansen     conpar.icoord = inp.GetValue("icoord");
19559599516SKenneth E. Jansen     conpar.irs = inp.GetValue("irs");
19659599516SKenneth E. Jansen     conpar.iexec = inp.GetValue("iexec");
19759599516SKenneth E. Jansen     timpar.ntseq = inp.GetValue("ntseq");
19859599516SKenneth E. Jansen     solpar.imap = inp.GetValue("imap");
19959599516SKenneth E. Jansen 
20059599516SKenneth E. Jansen 
20159599516SKenneth E. Jansen     // Solution Control Keywords
20259599516SKenneth E. Jansen 
20359599516SKenneth E. Jansen     if((string)inp.GetValue("Equation of State") == "Incompressible") matdat.matflg[0][0] =-1 ;
20459599516SKenneth E. Jansen     if((string)inp.GetValue("Equation of State") == "Compressible") matdat.matflg[0][0] =0;
20559599516SKenneth E. Jansen     inpdat.Delt[0] = inp.GetValue("Time Step Size");
20659599516SKenneth E. Jansen     inpdat.nstep[0] = inp.GetValue("Number of Timesteps");
20759599516SKenneth E. Jansen     if((string)inp.GetValue("Viscous Control")=="Viscous") conpar.navier=1 ; else conpar.navier=0;
20859599516SKenneth E. Jansen 
20959599516SKenneth E. Jansen     if ((string)inp.GetValue("Turbulence Model") == "No-Model" ) {
21059599516SKenneth E. Jansen       turbvari.irans = 0;
21159599516SKenneth E. Jansen       turbvari.iles  = 0;
21259599516SKenneth E. Jansen     } else if ((string)inp.GetValue("Turbulence Model") == "LES" ) {
21359599516SKenneth E. Jansen       turbvari.iles  = 1;
21459599516SKenneth E. Jansen       turbvari.irans = 0;
21559599516SKenneth E. Jansen     } else if ((string)inp.GetValue("Turbulence Model") == "RANS-SA" ) {
21659599516SKenneth E. Jansen       turbvari.iles  = 0;
21759599516SKenneth E. Jansen       turbvari.irans = -1;
21859599516SKenneth E. Jansen     } else if ((string)inp.GetValue("Turbulence Model") == "RANS" ) {
21959599516SKenneth E. Jansen       turbvari.iles  = 0;
22059599516SKenneth E. Jansen       turbvari.irans = -1; // assume S-A for backward compatibility
22159599516SKenneth E. Jansen     } else if ((string)inp.GetValue("Turbulence Model") == "RANS-KE" ) {
22259599516SKenneth E. Jansen       turbvari.iles  = 0;
22359599516SKenneth E. Jansen       turbvari.irans = -2;
22459599516SKenneth E. Jansen     } else if ((string)inp.GetValue("Turbulence Model") == "DES97" ) {
22559599516SKenneth E. Jansen       turbvari.iles  = -1;
22659599516SKenneth E. Jansen       turbvari.irans = -1;
22759599516SKenneth E. Jansen     } else if ((string)inp.GetValue("Turbulence Model") == "DDES" ) {
22859599516SKenneth E. Jansen       turbvari.iles  = -2;
22959599516SKenneth E. Jansen       turbvari.irans = -1;
23059599516SKenneth E. Jansen 
23159599516SKenneth E. Jansen     } else {
23259599516SKenneth E. Jansen       cout << " Turbulence Model: Only Legal Values ( No-Model, LES, RANS-SA, RANS-KE, DES97, DDES )";
23359599516SKenneth E. Jansen       cout << endl;
23459599516SKenneth E. Jansen       exit(1);
23559599516SKenneth E. Jansen     }
23659599516SKenneth E. Jansen 
23759599516SKenneth E. Jansen  //   if (turbvari.iles*turbvari.irans!=0) turbvar.eles=
23859599516SKenneth E. Jansen  //                                          inp.GetValue("DES Edge Length");
23959599516SKenneth E. Jansen 
24059599516SKenneth E. Jansen     if (turbvari.irans<0 && turbvari.iles<0)
24159599516SKenneth E. Jansen       turbvar.DES_SA_hmin=(double)inp.GetValue("DES SA Minimum Edge Length");
24259599516SKenneth E. Jansen 
24359599516SKenneth E. Jansen     int solflow, solheat , solscalr, ilset;
24459599516SKenneth E. Jansen     ((string)inp.GetValue("Solve Flow") == "True")? solflow=1:solflow=0;
24559599516SKenneth E. Jansen     ((string)inp.GetValue("Solve Heat") == "True")? solheat=1:solheat=0;
24659599516SKenneth E. Jansen     //for compressible solheat= False so
24759599516SKenneth E. Jansen     if((string)inp.GetValue("Equation of State") == "Compressible") solheat=0;
24859599516SKenneth E. Jansen     ilset = (int)inp.GetValue("Solve Level Set");
24959599516SKenneth E. Jansen     solscalr = (int)inp.GetValue("Solve Scalars");
25059599516SKenneth E. Jansen     solscalr += ilset;
25159599516SKenneth E. Jansen     if(turbvari.irans == -1) solscalr++;
25259599516SKenneth E. Jansen     if(turbvari.irans == -2) solscalr=solscalr+2;
25359599516SKenneth E. Jansen     if ( solscalr > 4 ) {
25459599516SKenneth E. Jansen       cout << " Only Four Scalars are supported \n";
25559599516SKenneth E. Jansen       cout <<" Please reduce number of scalars \n";
25659599516SKenneth E. Jansen       exit(1);
25759599516SKenneth E. Jansen     }
25859599516SKenneth E. Jansen     inpdat.impl[0] = 10*solflow+solscalr*100+solheat;
25959599516SKenneth E. Jansen 
26059599516SKenneth E. Jansen     levlset.iLSet = ilset;
26159599516SKenneth E. Jansen     if( ilset > 0) {
26259599516SKenneth E. Jansen     levlset.epsilon_ls = inp.GetValue("Number of Elements Across Interface");
26359599516SKenneth E. Jansen     levlset.epsilon_lsd = inp.GetValue("Number of Elements Across Interface for Redistancing");
26459599516SKenneth E. Jansen     levlset.dtlset = inp.GetValue("Pseudo Time step for Redistancing");
26559599516SKenneth E. Jansen     levlset.iExpLSSclr2 = inp.GetValue("Explicit Solve for Redistance Field");
26659599516SKenneth E. Jansen     levlset.iExpLSSclr1 = inp.GetValue("Explicit Solve for Scalar 1 Field");
26759599516SKenneth E. Jansen     if ((string)inp.GetValue("Apply Volume Constraint") == "True" ) {
26859599516SKenneth E. Jansen       levlset.ivconstraint = 1; }
26959599516SKenneth E. Jansen     else if((string)inp.GetValue("Apply Volume Constraint") == "False" ) {
27059599516SKenneth E. Jansen       levlset.ivconstraint = 0; }
27159599516SKenneth E. Jansen     else {
27259599516SKenneth E. Jansen       cout << "Apply Volume Constraint: Only Legal Values (True, False) ";
27359599516SKenneth E. Jansen       cout << endl;
27459599516SKenneth E. Jansen       exit(1);
27559599516SKenneth E. Jansen     }
27659599516SKenneth E. Jansen     }
27759599516SKenneth E. Jansen 
27859599516SKenneth E. Jansen     vector<double> vec;
27959599516SKenneth E. Jansen 
28059599516SKenneth E. Jansen     // OUTPUT CONTROL KEY WORDS.
28159599516SKenneth E. Jansen 
28259599516SKenneth E. Jansen     conpar.necho = inp.GetValue("Verbosity Level");
28359599516SKenneth E. Jansen     outpar.ntout = inp.GetValue("Number of Timesteps between Restarts");
284fcf561c1SCameron Smith     outpar.nsynciofiles = inp.GetValue("Number of SyncIO Files");
28559599516SKenneth E. Jansen     if((string)inp.GetValue("Print Statistics") == "True") outpar.ioform = 2;
28659599516SKenneth E. Jansen     else outpar.ioform = 1;
28759599516SKenneth E. Jansen 
28859599516SKenneth E. Jansen     if((string)inp.GetValue("Print Wall Fluxes") == "True") outpar.iowflux = 1;
28959599516SKenneth E. Jansen     else outpar.iowflux = 0;
29059599516SKenneth E. Jansen 
29159599516SKenneth E. Jansen     if((string)inp.GetValue("Print FieldView") == "True") outpar.iofieldv = 1;
29259599516SKenneth E. Jansen     else outpar.iofieldv = 0;
29359599516SKenneth E. Jansen 
29459599516SKenneth E. Jansen     if((string)inp.GetValue("Print ybar") == "True") outpar.ioybar = 1;
29559599516SKenneth E. Jansen     else outpar.ioybar = 0;
29659599516SKenneth E. Jansen 
29759599516SKenneth E. Jansen     if((string)inp.GetValue("Print vorticity") == "True") outpar.ivort = 1;
29859599516SKenneth E. Jansen     else outpar.ivort = 0;
29959599516SKenneth E. Jansen 
30059599516SKenneth E. Jansen     outpar.nstepsincycle = inp.GetValue("Number of Steps in a Cycle");
30159599516SKenneth E. Jansen     outpar.nphasesincycle = inp.GetValue("Number of Phases in a Cycle");
30259599516SKenneth E. Jansen     outpar.ncycles_startphaseavg = inp.GetValue("Number of Initial Cycles to Skip in Phase Average");
30359599516SKenneth E. Jansen 
30459599516SKenneth E. Jansen     strcpy( outpar.iotype , ((string)inp.GetValue("Data Block Format")).c_str());
30559599516SKenneth E. Jansen     strcpy( phasta_iotype , ((string)inp.GetValue("Data Block Format")).c_str());
30659599516SKenneth E. Jansen     SONFATH = inp.GetValue("Number of Father Nodes");
30759599516SKenneth E. Jansen 
30859599516SKenneth E. Jansen     if((string)inp.GetValue("Print Residual at End of Step") == "True") genpar.lstres = 1;
30959599516SKenneth E. Jansen     else genpar.lstres = 0;
31059599516SKenneth E. Jansen 
31159599516SKenneth E. Jansen     if((string)inp.GetValue("Print Error Indicators") == "True") turbvar.ierrcalc = 1;
31259599516SKenneth E. Jansen     else turbvar.ierrcalc = 0;
31359599516SKenneth E. Jansen 
31459599516SKenneth E. Jansen     if((string)inp.GetValue("Print Velocity Hessian") == "True") turbvar.ihessian = 1;
31559599516SKenneth E. Jansen     else turbvar.ihessian = 0;
31659599516SKenneth E. Jansen 
31759599516SKenneth E. Jansen     if ( turbvar.ierrcalc == 1 )
31859599516SKenneth E. Jansen         turbvari.ierrsmooth = inp.GetValue("Number of Error Smoothing Iterations");
31959599516SKenneth E. Jansen 
32059599516SKenneth E. Jansen     for(i=0;i<MAXSURF+1; i++) aerfrc.nsrflist[i] = 0;
32159599516SKenneth E. Jansen     int nsrfCM = inp.GetValue("Number of Force Surfaces");
32259599516SKenneth E. Jansen     if (nsrfCM > 0) {
32359599516SKenneth E. Jansen       vector<int> ivec = inp.GetValue("Surface ID's for Force Calculation");
32459599516SKenneth E. Jansen       for(i=0; i< nsrfCM; i++){
32559599516SKenneth E. Jansen         aerfrc.nsrflist[ivec[i]] = 1;
32659599516SKenneth E. Jansen         //        cout <<"surface in force list "<< ivec[i] << endl;
32759599516SKenneth E. Jansen       }
32859599516SKenneth E. Jansen       ivec.erase(ivec.begin(),ivec.end());
32959599516SKenneth E. Jansen     }
33059599516SKenneth E. Jansen 
33159599516SKenneth E. Jansen     aerfrc.isrfIM = inp.GetValue("Surface ID for Integrated Mass");
33259599516SKenneth E. Jansen 
33359599516SKenneth E. Jansen     outpar.iv_rankpercore = inp.GetValue("Ranks per core");
33459599516SKenneth E. Jansen     outpar.iv_corepernode = inp.GetValue("Cores per node");
33559599516SKenneth E. Jansen 
33659599516SKenneth E. Jansen     turbvari.iramp=0;
33759599516SKenneth E. Jansen     if((string)inp.GetValue("Ramp Inflow") == "True") turbvari.iramp=1;
33859599516SKenneth E. Jansen     if(turbvari.iramp == 1) {
33959599516SKenneth E. Jansen 	vec = inp.GetValue("Mdot Ramp Inflow Start and Stop");
34059599516SKenneth E. Jansen     	for(i=0; i<2 ; i++){
34159599516SKenneth E. Jansen         	turbvar.rampmdot[0][i]=vec[i];
34259599516SKenneth E. Jansen     	}
34359599516SKenneth E. Jansen     	vec = inp.GetValue("Mdot Ramp Lower FC Start and Stop");
34459599516SKenneth E. Jansen     	for(i=0; i<2 ; i++){
34559599516SKenneth E. Jansen          	turbvar.rampmdot[1][i]=vec[i];
34659599516SKenneth E. Jansen     	}
34759599516SKenneth E. Jansen     	vec = inp.GetValue("Mdot Ramp Upper FC Start and Stop");
34859599516SKenneth E. Jansen     	for(i=0; i<2 ; i++){
34959599516SKenneth E. Jansen         	turbvar.rampmdot[2][i]=vec[i];
35059599516SKenneth E. Jansen     	}
35159599516SKenneth E. Jansen     }
35259599516SKenneth E. Jansen 
35359599516SKenneth E. Jansen //Limiting
35459599516SKenneth E. Jansen     vec = inp.GetValue("Limit u1");
35559599516SKenneth E. Jansen     for(i=0; i<3 ; i++){
35659599516SKenneth E. Jansen       turbvar.ylimit[0][i] = vec[i];
35759599516SKenneth E. Jansen     }
35859599516SKenneth E. Jansen     vec.erase(vec.begin(),vec.end());
35959599516SKenneth E. Jansen 
36059599516SKenneth E. Jansen     vec = inp.GetValue("Limit u2");
36159599516SKenneth E. Jansen     for(i=0; i<3 ; i++){
36259599516SKenneth E. Jansen       turbvar.ylimit[1][i] = vec[i];
36359599516SKenneth E. Jansen     }
36459599516SKenneth E. Jansen     vec.erase(vec.begin(),vec.end());
36559599516SKenneth E. Jansen 
36659599516SKenneth E. Jansen     vec = inp.GetValue("Limit u3");
36759599516SKenneth E. Jansen     for(i=0; i<3 ; i++){
36859599516SKenneth E. Jansen       turbvar.ylimit[2][i] = vec[i];
36959599516SKenneth E. Jansen     }
37059599516SKenneth E. Jansen     vec.erase(vec.begin(),vec.end());
37159599516SKenneth E. Jansen 
37259599516SKenneth E. Jansen     vec = inp.GetValue("Limit Pressure");
37359599516SKenneth E. Jansen     for(i=0; i<3 ; i++){
37459599516SKenneth E. Jansen       turbvar.ylimit[3][i] = vec[i];
37559599516SKenneth E. Jansen     }
37659599516SKenneth E. Jansen     vec.erase(vec.begin(),vec.end());
37759599516SKenneth E. Jansen 
37859599516SKenneth E. Jansen     vec = inp.GetValue("Limit Temperature");
37959599516SKenneth E. Jansen     for(i=0; i<3 ; i++){
38059599516SKenneth E. Jansen       turbvar.ylimit[4][i] = vec[i];
38159599516SKenneth E. Jansen     }
38259599516SKenneth E. Jansen     vec.erase(vec.begin(),vec.end());
38359599516SKenneth E. Jansen 
38459599516SKenneth E. Jansen     //Material Properties Keywords
38559599516SKenneth E. Jansen     matdat.nummat = levlset.iLSet+1;
38659599516SKenneth E. Jansen     if((string)inp.GetValue("Shear Law") == "Constant Viscosity")
38759599516SKenneth E. Jansen       for(i=0; i < levlset.iLSet+1; i++) matdat.matflg[i][1] = 0;
38859599516SKenneth E. Jansen 
38959599516SKenneth E. Jansen     if((string)inp.GetValue("Bulk Viscosity Law") == "Constant Bulk Viscosity")
39059599516SKenneth E. Jansen       for(i=0; i < levlset.iLSet+1; i++) matdat.matflg[i][2] = 0;
39159599516SKenneth E. Jansen 
39259599516SKenneth E. Jansen     mmatpar.pr = inp.GetValue("Prandtl Number");
39359599516SKenneth E. Jansen 
39459599516SKenneth E. Jansen     if((string)inp.GetValue("Conductivity Law") == "Constant Conductivity")
39559599516SKenneth E. Jansen       for(i=0; i < levlset.iLSet+1; i++) matdat.matflg[i][3] = 0;
39659599516SKenneth E. Jansen 
39759599516SKenneth E. Jansen     vec = inp.GetValue("Density");
39859599516SKenneth E. Jansen     for(i=0; i< levlset.iLSet +1 ; i++){
39959599516SKenneth E. Jansen       matdat.datmat[i][0][0] = vec[i];
40059599516SKenneth E. Jansen     }
40159599516SKenneth E. Jansen     vec.erase(vec.begin(),vec.end());
40259599516SKenneth E. Jansen 
40359599516SKenneth E. Jansen     vec = inp.GetValue("Viscosity");
40459599516SKenneth E. Jansen     for(i=0; i< levlset.iLSet +1 ; i++){
40559599516SKenneth E. Jansen       matdat.datmat[i][1][0] = vec[i];
40659599516SKenneth E. Jansen     }
40759599516SKenneth E. Jansen     vec.erase(vec.begin(),vec.end());
40859599516SKenneth E. Jansen 
40959599516SKenneth E. Jansen //      vec = inp.GetValue("Specific Heat");
41059599516SKenneth E. Jansen     for(i=0; i< levlset.iLSet +1 ; i++){
41159599516SKenneth E. Jansen       matdat.datmat[i][2][0] = 0;
41259599516SKenneth E. Jansen     }
41359599516SKenneth E. Jansen //      vec.erase(vec.begin(),vec.end());
41459599516SKenneth E. Jansen 
41559599516SKenneth E. Jansen     vec = inp.GetValue("Thermal Conductivity");
41659599516SKenneth E. Jansen     for(i=0; i< levlset.iLSet +1 ; i++){
41759599516SKenneth E. Jansen       matdat.datmat[i][3][0] = vec[i];
41859599516SKenneth E. Jansen     }
41959599516SKenneth E. Jansen     vec.erase(vec.begin(),vec.end());
42059599516SKenneth E. Jansen 
42159599516SKenneth E. Jansen     vec = inp.GetValue("Scalar Diffusivity");
42259599516SKenneth E. Jansen     for(i=0; i< solscalr ; i++){
42359599516SKenneth E. Jansen       sclrs.scdiff[i] = vec[i];
42459599516SKenneth E. Jansen     }
42559599516SKenneth E. Jansen     vec.erase(vec.begin(),vec.end());
42659599516SKenneth E. Jansen 
42759599516SKenneth E. Jansen     if((string)inp.GetValue("Zero Mean Pressure") == "True")
42859599516SKenneth E. Jansen       turbvar.pzero=1;
42959599516SKenneth E. Jansen 
43059599516SKenneth E. Jansen     turbvar.rmutarget = inp.GetValue("Target Viscosity For Step NSTEP");
43159599516SKenneth E. Jansen 
43259599516SKenneth E. Jansen     if ( (string)inp.GetValue("Body Force Option") == "None" ) {
43359599516SKenneth E. Jansen       for( i=0; i< levlset.iLSet +1 ; i++)  matdat.matflg[i][4] = 0;
43459599516SKenneth E. Jansen     }
43559599516SKenneth E. Jansen     else if ( (string)inp.GetValue("Body Force Option") == "Vector" ) {
43659599516SKenneth E. Jansen       for( i=0; i< levlset.iLSet +1 ; i++)  matdat.matflg[i][4] = 1;
43759599516SKenneth E. Jansen     }
43859599516SKenneth E. Jansen     else if ( (string)inp.GetValue("Body Force Option") == "User e3source.f" ) {
43959599516SKenneth E. Jansen       for( i=0; i< levlset.iLSet +1 ; i++) matdat.matflg[i][4] = 3;
44059599516SKenneth E. Jansen     }
44159599516SKenneth E. Jansen     else if ( (string)inp.GetValue("Body Force Option") == "Boussinesq" ) {
44259599516SKenneth E. Jansen       for(i=0; i< levlset.iLSet +1 ; i++) matdat.matflg[i][4] = 2;
44359599516SKenneth E. Jansen     }
44459599516SKenneth E. Jansen     else if ( (string)inp.GetValue("Body Force Option") == "Cooling Analytic" ) {
44559599516SKenneth E. Jansen       for(i=0; i< levlset.iLSet +1 ; i++) matdat.matflg[i][4] = 4;
44659599516SKenneth E. Jansen     }
44759599516SKenneth E. Jansen     else if ( (string)inp.GetValue("Body Force Option") == "Cooling Initial Condition" ) {
44859599516SKenneth E. Jansen       for(i=0; i< levlset.iLSet +1 ; i++) matdat.matflg[i][4] = 5;
44959599516SKenneth E. Jansen     }
45059599516SKenneth E. Jansen 
45159599516SKenneth E. Jansen     // the following block of stuff is common to all cooling type sponges.
45259599516SKenneth E. Jansen     // Specific stuff belongs in the conditionals above
45359599516SKenneth E. Jansen 
45459599516SKenneth E. Jansen     if(matdat.matflg[0][4] >=4) {
45559599516SKenneth E. Jansen       spongevar.betamax = inp.GetValue("Maximum Value of Sponge Parameter");
45659599516SKenneth E. Jansen       spongevar.zinsponge = inp.GetValue("Inflow Cooling Sponge Ends at z");
45759599516SKenneth E. Jansen       spongevar.zoutsponge= inp.GetValue("Outflow Cooling Sponge Begins at z");
45859599516SKenneth E. Jansen       spongevar.radsponge = inp.GetValue("Radial Cooling Sponge Begins at r");
45959599516SKenneth E. Jansen       spongevar.grthosponge = inp.GetValue("Sponge Growth Coefficient Outflow");
46059599516SKenneth E. Jansen       spongevar.grthisponge = inp.GetValue("Sponge Growth Coefficient Inflow");
46159599516SKenneth E. Jansen 
46259599516SKenneth E. Jansen 
46359599516SKenneth E. Jansen       spongevar.spongecontinuity = 0;
46459599516SKenneth E. Jansen       spongevar.spongemomentum1 = 0;
46559599516SKenneth E. Jansen       spongevar.spongemomentum2 = 0;
46659599516SKenneth E. Jansen       spongevar.spongemomentum3 = 0;
46759599516SKenneth E. Jansen       spongevar.spongeenergy = 0;
46859599516SKenneth E. Jansen 
46959599516SKenneth E. Jansen       if((string)inp.GetValue("Sponge for Continuity Equation") == "True")
47059599516SKenneth E. Jansen 	spongevar.spongecontinuity = 1;
47159599516SKenneth E. Jansen       if((string)inp.GetValue("Sponge for x Momentum Equation") == "True")
47259599516SKenneth E. Jansen 	spongevar.spongemomentum1 = 1;
47359599516SKenneth E. Jansen       if((string)inp.GetValue("Sponge for y Momentum Equation") == "True")
47459599516SKenneth E. Jansen 	spongevar.spongemomentum2 = 1;
47559599516SKenneth E. Jansen       if((string)inp.GetValue("Sponge for z Momentum Equation") == "True")
47659599516SKenneth E. Jansen 	spongevar.spongemomentum3 = 1;
47759599516SKenneth E. Jansen       if((string)inp.GetValue("Sponge for Energy Equation") == "True")
47859599516SKenneth E. Jansen 	spongevar.spongeenergy = 1;
47959599516SKenneth E. Jansen 
48059599516SKenneth E. Jansen     }
48159599516SKenneth E. Jansen 
48259599516SKenneth E. Jansen     vec = inp.GetValue("Body Force");
48359599516SKenneth E. Jansen     for(i=0; i< levlset.iLSet +1 ; i++){
48459599516SKenneth E. Jansen       matdat.datmat[i][4][0] = vec[0+i*3];
48559599516SKenneth E. Jansen       matdat.datmat[i][4][1] = vec[1+i*3];
48659599516SKenneth E. Jansen       matdat.datmat[i][4][2] = vec[2+i*3];
48759599516SKenneth E. Jansen     }
48859599516SKenneth E. Jansen     vec.erase(vec.begin(),vec.end());
48959599516SKenneth E. Jansen 
49059599516SKenneth E. Jansen     vec = inp.GetValue("Body Force Pressure Gradient");
49159599516SKenneth E. Jansen     for(i=0; i< levlset.iLSet +1 ; i++){
49259599516SKenneth E. Jansen       matdat.datmat[i][6][0] = vec[0+i*3];
49359599516SKenneth E. Jansen       matdat.datmat[i][6][1] = vec[1+i*3];
49459599516SKenneth E. Jansen       matdat.datmat[i][6][2] = vec[2+i*3];
49559599516SKenneth E. Jansen     }
49659599516SKenneth E. Jansen     vec.erase(vec.begin(),vec.end());
49759599516SKenneth E. Jansen 
49859599516SKenneth E. Jansen     if ( (string)inp.GetValue("Surface Tension Option") == "No" ){
49959599516SKenneth E. Jansen         genpar.isurf = 0;
50059599516SKenneth E. Jansen     }
50159599516SKenneth E. Jansen     else if ((string)inp.GetValue("Surface Tension Option") == "Yes" ){
50259599516SKenneth E. Jansen         genpar.isurf = 1;
50359599516SKenneth E. Jansen     }
50459599516SKenneth E. Jansen     else {
50559599516SKenneth E. Jansen       cout << " Surface Tension: Only Legal Values (Yes, No) ";
50659599516SKenneth E. Jansen       cout << endl;
50759599516SKenneth E. Jansen       exit(1);
50859599516SKenneth E. Jansen     }
50959599516SKenneth E. Jansen     if( genpar.isurf > 0) {
51059599516SKenneth E. Jansen       genpar.Bo = inp.GetValue("Bond Number");
51159599516SKenneth E. Jansen     }
51259599516SKenneth E. Jansen 
51359599516SKenneth E. Jansen     genpar.EntropyPressure = inp.GetValue("Entropy Form of Pressure Constraint on Weight Space");
51459599516SKenneth E. Jansen 
51559599516SKenneth E. Jansen 
51659599516SKenneth E. Jansen     if ( (string)inp.GetValue("Rotating Frame of Reference") == "True" ) {
51759599516SKenneth E. Jansen       matdat.matflg[0][5] = 1;
51859599516SKenneth E. Jansen       vec = inp.GetValue("Rotating Frame of Reference Rotation Rate");
51959599516SKenneth E. Jansen       matdat.datmat[0][5][0] = vec[0];
52059599516SKenneth E. Jansen       matdat.datmat[0][5][1] = vec[1];
52159599516SKenneth E. Jansen       matdat.datmat[0][5][2] = vec[2];
52259599516SKenneth E. Jansen       vec.erase(vec.begin(),vec.end());
52359599516SKenneth E. Jansen     }
52459599516SKenneth E. Jansen     else {
52559599516SKenneth E. Jansen       matdat.matflg[0][5] = 0;
52659599516SKenneth E. Jansen       matdat.datmat[0][5][0] = 0.;
52759599516SKenneth E. Jansen       matdat.datmat[0][5][1] = 0.;
52859599516SKenneth E. Jansen       matdat.datmat[0][5][2] = 0.;
52959599516SKenneth E. Jansen     }
53059599516SKenneth E. Jansen 
53159599516SKenneth E. Jansen 
53259599516SKenneth E. Jansen     //Linear Solver parameters
533*513954efSKenneth E. Jansen      conpar.usingpetsc=0;  // default is to have PETSc off
534efb88323SKenneth E. Jansen       incomp.iprjFlag = 0; incomp.ipresPrjFlag=0; inpdat.svLSFlag=0;
535efb88323SKenneth E. Jansen     if( (string)inp.GetValue("Solver Type") =="svLS" ){
536efb88323SKenneth E. Jansen       inpdat.svLSFlag = 1; }
53759599516SKenneth E. Jansen     if( (string)inp.GetValue("Solver Type") =="ACUSIM with P Projection" ){
53859599516SKenneth E. Jansen       incomp.iprjFlag = 0; incomp.ipresPrjFlag=1;}
53959599516SKenneth E. Jansen     else if ( (string)inp.GetValue("Solver Type") =="ACUSIM" ){
54059599516SKenneth E. Jansen       incomp.iprjFlag = 0; incomp.ipresPrjFlag=0;}
54159599516SKenneth E. Jansen     else if( (string)inp.GetValue("Solver Type") =="ACUSIM with Velocity Projection" ){
54259599516SKenneth E. Jansen       incomp.iprjFlag = 1; incomp.ipresPrjFlag=0;}
54359599516SKenneth E. Jansen     else if( (string)inp.GetValue("Solver Type") =="ACUSIM with Full Projection" ){
54459599516SKenneth E. Jansen       incomp.iprjFlag = 1; incomp.ipresPrjFlag=1;}
54559599516SKenneth E. Jansen     else if( (string)inp.GetValue("Solver Type") =="GMRES Matrix Free"){
54659599516SKenneth E. Jansen       inpdat.impl[0] += 10*solflow;}
54759599516SKenneth E. Jansen     else if( (string)inp.GetValue("Solver Type") =="GMRES EBE"){
54859599516SKenneth E. Jansen       inpdat.impl[0] += 20*solflow;}
549*513954efSKenneth E. Jansen     else if( (string)inp.GetValue("Solver Type") =="PETSc"){
550*513954efSKenneth E. Jansen       conpar.usingpetsc=1;}
55159599516SKenneth E. Jansen     //GMRES sparse is assumed default and has the value of 10, MFG 20,
55259599516SKenneth E. Jansen     // EBE 30
55359599516SKenneth E. Jansen 
55459599516SKenneth E. Jansen 
55559599516SKenneth E. Jansen     //    inpdat.niter[0] = inp.GetValue("Number of Solves per Time Step");
55659599516SKenneth E. Jansen     solpar.nGMRES = inp.GetValue("Number of GMRES Sweeps per Solve");
55759599516SKenneth E. Jansen     solpar.Kspace = inp.GetValue("Number of Krylov Vectors per GMRES Sweep");
55859599516SKenneth E. Jansen     inpdat.LHSupd[0] = inp.GetValue("Number of Solves per Left-hand-side Formation");
55959599516SKenneth E. Jansen     inpdat.epstol[0] = inp.GetValue("Tolerance on Momentum Equations");
56059599516SKenneth E. Jansen     incomp.prestol = inp.GetValue("Tolerance on ACUSIM Pressure Projection");
56159599516SKenneth E. Jansen     incomp.minIters = inp.GetValue("Minimum Number of Iterations per Nonlinear Iteration");
56259599516SKenneth E. Jansen     incomp.maxIters = inp.GetValue("Maximum Number of Iterations per Nonlinear Iteration");
56359599516SKenneth E. Jansen     inpdat.deltol[0][0]=inp.GetValue("Velocity Delta Ratio");
56459599516SKenneth E. Jansen     inpdat.deltol[1][0]=inp.GetValue("Pressure Delta Ratio");
56559599516SKenneth E. Jansen     incomp.nPrjs = inp.GetValue("Number of Velocity Projection Vectors");
56659599516SKenneth E. Jansen     incomp.nPresPrjs = inp.GetValue("Number of Pressure Projection Vectors");
56759599516SKenneth E. Jansen     incomp.iverbose = inp.GetValue("ACUSIM Verbosity Level");
56859599516SKenneth E. Jansen 
56959599516SKenneth E. Jansen     if(solheat==1){
57059599516SKenneth E. Jansen       inpdat.epstol[1]=inp.GetValue("Temperature Solver Tolerance");
57159599516SKenneth E. Jansen       inpdat.LHSupd[1]=inp.GetValue("Number of Solves of Temperature per Left-hand-side Formation");
57259599516SKenneth E. Jansen     }
57359599516SKenneth E. Jansen 
57459599516SKenneth E. Jansen     // The following is where you should put any inputs that are able to
57559599516SKenneth E. Jansen     // input differently for each scalar.  It is a little tedious in the code
57659599516SKenneth E. Jansen     // but it should make the solver.inp easier to understand. Note this will
57759599516SKenneth E. Jansen     // require some care with regression tests.
57859599516SKenneth E. Jansen 
57959599516SKenneth E. Jansen 
58059599516SKenneth E. Jansen     if(solscalr>0){
58159599516SKenneth E. Jansen       inpdat.epstol[2]=inp.GetValue("Scalar 1 Solver Tolerance");
58259599516SKenneth E. Jansen       inpdat.LHSupd[2]=inp.GetValue("Number of Solves of Scalar 1 per Left-hand-side Formation");
58359599516SKenneth E. Jansen 
58459599516SKenneth E. Jansen       vec = inp.GetValue("Limit Scalar 1");
58559599516SKenneth E. Jansen       for(i=0; i<3 ; i++){
58659599516SKenneth E. Jansen         turbvar.ylimit[5][i] = vec[i];
58759599516SKenneth E. Jansen       }
58859599516SKenneth E. Jansen       vec.erase(vec.begin(),vec.end());
58959599516SKenneth E. Jansen     }
59059599516SKenneth E. Jansen 
59159599516SKenneth E. Jansen     if(solscalr>1){
59259599516SKenneth E. Jansen       inpdat.epstol[3]=inp.GetValue("Scalar 2 Solver Tolerance");
59359599516SKenneth E. Jansen       inpdat.LHSupd[3]=inp.GetValue("Number of Solves of Scalar 2 per Left-hand-side Formation");
59459599516SKenneth E. Jansen 
59559599516SKenneth E. Jansen       vec = inp.GetValue("Limit Scalar 2");
59659599516SKenneth E. Jansen       for(i=0; i<3 ; i++){
59759599516SKenneth E. Jansen         turbvar.ylimit[6][i] = vec[i];
59859599516SKenneth E. Jansen       }
59959599516SKenneth E. Jansen       vec.erase(vec.begin(),vec.end());
60059599516SKenneth E. Jansen     }
60159599516SKenneth E. Jansen 
60259599516SKenneth E. Jansen     if(solscalr>2){
60359599516SKenneth E. Jansen       inpdat.epstol[4]=inp.GetValue("Scalar 3 Solver Tolerance");
60459599516SKenneth E. Jansen       inpdat.LHSupd[4]=inp.GetValue("Number of Solves of Scalar 3 per Left-hand-side Formation");
60559599516SKenneth E. Jansen 
60659599516SKenneth E. Jansen       vec = inp.GetValue("Limit Scalar 3");
60759599516SKenneth E. Jansen       for(i=0; i<3 ; i++){
60859599516SKenneth E. Jansen         turbvar.ylimit[7][i] = vec[i];
60959599516SKenneth E. Jansen       }
61059599516SKenneth E. Jansen       vec.erase(vec.begin(),vec.end());
61159599516SKenneth E. Jansen     }
61259599516SKenneth E. Jansen 
61359599516SKenneth E. Jansen     if(solscalr>3){
61459599516SKenneth E. Jansen       inpdat.epstol[5]=inp.GetValue("Scalar 4 Solver Tolerance");
61559599516SKenneth E. Jansen       inpdat.LHSupd[5]=inp.GetValue("Number of Solves of Scalar 4 per Left-hand-side Formation");
61659599516SKenneth E. Jansen 
61759599516SKenneth E. Jansen       vec = inp.GetValue("Limit Scalar 4");
61859599516SKenneth E. Jansen       for(i=0; i<3 ; i++){
61959599516SKenneth E. Jansen         turbvar.ylimit[8][i] = vec[i];
62059599516SKenneth E. Jansen       }
62159599516SKenneth E. Jansen       vec.erase(vec.begin(),vec.end());
62259599516SKenneth E. Jansen     }
62359599516SKenneth E. Jansen 
62459599516SKenneth E. Jansen     // DISCRETIZATION CONTROL
62559599516SKenneth E. Jansen 
62659599516SKenneth E. Jansen     genpar.ipord = inp.GetValue("Basis Function Order");
62759599516SKenneth E. Jansen     if((string)inp.GetValue("Time Integration Rule") == "First Order")
62859599516SKenneth E. Jansen       inpdat.rhoinf[0] = -1 ;
62959599516SKenneth E. Jansen     else inpdat.rhoinf[0] = (double)inp.GetValue("Time Integration Rho Infinity");
63059599516SKenneth E. Jansen     if((string)inp.GetValue("Predictor at Start of Step")=="Same Velocity")
63159599516SKenneth E. Jansen       genpar.ipred = 1;
63259599516SKenneth E. Jansen     if((string)inp.GetValue("Predictor at Start of Step")=="Zero Acceleration")
63359599516SKenneth E. Jansen       genpar.ipred = 2;
63459599516SKenneth E. Jansen     if((string)inp.GetValue("Predictor at Start of Step")=="Same Acceleration")
63559599516SKenneth E. Jansen       genpar.ipred = 3;
63659599516SKenneth E. Jansen     if((string)inp.GetValue("Predictor at Start of Step")=="Same Delta")
63759599516SKenneth E. Jansen       genpar.ipred = 4;
63859599516SKenneth E. Jansen 
63959599516SKenneth E. Jansen     if((string)inp.GetValue("Weak Form") == "Galerkin")
64059599516SKenneth E. Jansen       solpar.ivart = 1;
64159599516SKenneth E. Jansen     if((string)inp.GetValue("Weak Form") == "SUPG")
64259599516SKenneth E. Jansen       solpar.ivart = 2;
64359599516SKenneth E. Jansen 
64459599516SKenneth E. Jansen     if((string)inp.GetValue("Flow Advection Form") == "Convective")
64559599516SKenneth E. Jansen       solpar.iconvflow = 2;
64659599516SKenneth E. Jansen     else if((string)inp.GetValue("Flow Advection Form") == "Conservative")
64759599516SKenneth E. Jansen       solpar.iconvflow = 1;
64859599516SKenneth E. Jansen     if((string)inp.GetValue("Scalar Advection Form") == "Convective")
64959599516SKenneth E. Jansen       solpar.iconvsclr = 2;
65059599516SKenneth E. Jansen     else if((string)inp.GetValue("Scalar Advection Form") == "Conservative")
65159599516SKenneth E. Jansen       solpar.iconvsclr = 1;
65259599516SKenneth E. Jansen     if((string)inp.GetValue("Use Conservative Scalar Convection Velocity") == "True")
65359599516SKenneth E. Jansen       sclrs.consrv_sclr_conv_vel = 1;
65459599516SKenneth E. Jansen     else if((string)inp.GetValue("Use Conservative Scalar Convection Velocity") == "False")
65559599516SKenneth E. Jansen       sclrs.consrv_sclr_conv_vel = 0;
65659599516SKenneth E. Jansen     // TAU INPUT
65759599516SKenneth E. Jansen     if((string)inp.GetValue("Tau Matrix") == "Diagonal-Shakib")
65859599516SKenneth E. Jansen       genpar.itau = 0;
65959599516SKenneth E. Jansen     else  if((string)inp.GetValue("Tau Matrix") == "Diagonal-Franca")
66059599516SKenneth E. Jansen       genpar.itau =1;
66159599516SKenneth E. Jansen     else if((string)inp.GetValue("Tau Matrix") == "Diagonal-Jansen(dev)")
66259599516SKenneth E. Jansen       genpar.itau = 2;
66359599516SKenneth E. Jansen     else if((string)inp.GetValue("Tau Matrix") == "Diagonal-Compressible")
66459599516SKenneth E. Jansen       genpar.itau = 3;
66559599516SKenneth E. Jansen     else if((string)inp.GetValue("Tau Matrix") == "Matrix-Mallet")
66659599516SKenneth E. Jansen       genpar.itau = 10;
66759599516SKenneth E. Jansen     else if((string)inp.GetValue("Tau Matrix") == "Matrix-Modal")
66859599516SKenneth E. Jansen       genpar.itau = 11;
66959599516SKenneth E. Jansen 
67059599516SKenneth E. Jansen     genpar.dtsfct = inp.GetValue("Tau Time Constant");
67159599516SKenneth E. Jansen     genpar.taucfct = inp.GetValue("Tau C Scale Factor");
67259599516SKenneth E. Jansen 
673*513954efSKenneth E. Jansen 	genpar.iLHScond = inp.GetValue("LHS BC heat flux enable");
674*513954efSKenneth E. Jansen 
67559599516SKenneth E. Jansen     // FLOW DISCONTINUITY CAPTURING
67659599516SKenneth E. Jansen 
67759599516SKenneth E. Jansen       if((string)inp.GetValue("Discontinuity Capturing") == "Off") solpar.iDC = 0;
67859599516SKenneth E. Jansen     else if((string)inp.GetValue("Discontinuity Capturing") == "DC-mallet") solpar.iDC = 1;
67959599516SKenneth E. Jansen     else if((string)inp.GetValue("Discontinuity Capturing") == "DC-quadratic") solpar.iDC = 2;
68059599516SKenneth E. Jansen    else if((string)inp.GetValue("Discontinuity Capturing") == "DC-minimum") solpar.iDC = 3;
68159599516SKenneth E. Jansen     else {
68259599516SKenneth E. Jansen       cout<< "Condition not defined for Discontinuity Capturing \n ";
68359599516SKenneth E. Jansen       exit(1);
68459599516SKenneth E. Jansen     }
68559599516SKenneth E. Jansen 
68659599516SKenneth E. Jansen     // SCALAR DISCONTINUITY CAPTURING
68759599516SKenneth E. Jansen 
68859599516SKenneth E. Jansen       vector<int> ivec = inp.GetValue("Scalar Discontinuity Capturing");
68959599516SKenneth E. Jansen       for(i=0; i< 2; i++)  solpar.idcsclr[i] = ivec[i];
69059599516SKenneth E. Jansen       ivec.erase(ivec.begin(),ivec.end());
69159599516SKenneth E. Jansen 
69259599516SKenneth E. Jansen 
69359599516SKenneth E. Jansen //        if((string)inp.GetValue("Scalar Discontinuity Capturing") == "No") solpar.idcsclr = 0;
69459599516SKenneth E. Jansen //      else if((string)inp.GetValue("Scalar Discontinuity Capturing") == "1") solpar.idcsclr = 1;
69559599516SKenneth E. Jansen //   else if((string)inp.GetValue("Scalar Discontinuity Capturing") == "2") solpar.idcsclr = 2;
69659599516SKenneth E. Jansen //   else {
69759599516SKenneth E. Jansen //        cout<< "Condition not defined for Scalar Discontinuity Capturing \n ";
69859599516SKenneth E. Jansen //        exit(1);
69959599516SKenneth E. Jansen //      }
70059599516SKenneth E. Jansen     if((string)inp.GetValue("Include Viscous Correction in Stabilization") == "True")
70159599516SKenneth E. Jansen       {
70259599516SKenneth E. Jansen         if(genpar.ipord == 1 ) genpar.idiff = 1;
70359599516SKenneth E. Jansen         else genpar.idiff = 2;
70459599516SKenneth E. Jansen       }
70559599516SKenneth E. Jansen     else { genpar.idiff = 0;}
70659599516SKenneth E. Jansen 
707*513954efSKenneth E. Jansen // ------ Only For duct S duct Project ------------------------------------------------
70859599516SKenneth E. Jansen     genpar.irampViscOutlet = (int)inp.GetValue("Ramp Up Viscosity Near Outlet");
70959599516SKenneth E. Jansen 
71059599516SKenneth E. Jansen     genpar.istretchOutlet = (int)inp.GetValue("Stretch X Coordinate Near Outlet");
711*513954efSKenneth E. Jansen // -----------------------------------------------------------------------------------
71259599516SKenneth E. Jansen 
71359599516SKenneth E. Jansen     genpar.iremoveStabTimeTerm = (int)inp.GetValue("Remove Time Term from Stabilization");
71459599516SKenneth E. Jansen 
71559599516SKenneth E. Jansen     timdat.flmpl = inp.GetValue("Lumped Mass Fraction on Left-hand-side");
71659599516SKenneth E. Jansen     timdat.flmpr = inp.GetValue("Lumped Mass Fraction on Right-hand-side");
71759599516SKenneth E. Jansen 
71859599516SKenneth E. Jansen     timdat.iCFLworst = 0;
71959599516SKenneth E. Jansen     if((string)inp.GetValue("Dump CFL") == "True")
72059599516SKenneth E. Jansen       timdat.iCFLworst = 1;
72159599516SKenneth E. Jansen 
72259599516SKenneth E. Jansen     intdat.intg[0][0]=inp.GetValue("Quadrature Rule on Interior");
72359599516SKenneth E. Jansen     intdat.intg[0][1]=inp.GetValue("Quadrature Rule on Boundary");
72459599516SKenneth E. Jansen     genpar.ibksiz = inp.GetValue("Number of Elements Per Block");
72559599516SKenneth E. Jansen 
72659599516SKenneth E. Jansen     ((string)inp.GetValue("Turn Off Source Terms for Scalars")
72759599516SKenneth E. Jansen          == "True") ? sclrs.nosource = 1 : sclrs.nosource = 0;
72859599516SKenneth E. Jansen     sclrs.tdecay=inp.GetValue("Decay Multiplier for Scalars");
72959599516SKenneth E. Jansen 
73059599516SKenneth E. Jansen     // TURBULENCE MODELING PARAMETER
73159599516SKenneth E. Jansen     int tpturb = turbvari.iles-turbvari.irans;
73259599516SKenneth E. Jansen     int ifrule;
73359599516SKenneth E. Jansen     if( tpturb != 0 ){
73459599516SKenneth E. Jansen 
73559599516SKenneth E. Jansen 
73659599516SKenneth E. Jansen       turbvari.nohomog =inp.GetValue("Number of Homogenous Directions");
73759599516SKenneth E. Jansen 
73859599516SKenneth E. Jansen       if((string)inp.GetValue("Turbulence Wall Model Type") == "Slip Velocity") turbvar.itwmod = 1;
73959599516SKenneth E. Jansen       else if((string)inp.GetValue("Turbulence Wall Model Type") == "Effective Viscosity") turbvar.itwmod = 2;
74059599516SKenneth E. Jansen       else  turbvar.itwmod = 0;
74159599516SKenneth E. Jansen       if (turbvari.irans < 0) turbvar.itwmod = turbvar.itwmod*(-1);
74259599516SKenneth E. Jansen       ifrule  = inp.GetValue("Velocity Averaging Steps");
74359599516SKenneth E. Jansen       turbvar.wtavei =(ifrule >0)? 1.0/ifrule : -1.0/ifrule;
74459599516SKenneth E. Jansen 
74559599516SKenneth E. Jansen       if(turbvari.iles == 1){
74659599516SKenneth E. Jansen 
74759599516SKenneth E. Jansen         if((string)inp.GetValue("Dynamic Model Type") == "Bardina") turbvari.iles += 10;
74859599516SKenneth E. Jansen         else if((string)inp.GetValue("Dynamic Model Type") == "Projection") turbvari.iles += 20;
74959599516SKenneth E. Jansen 
75059599516SKenneth E. Jansen         ifrule = inp.GetValue("Filter Integration Rule");
75159599516SKenneth E. Jansen         turbvari.iles += ifrule-1;
75259599516SKenneth E. Jansen         ifrule = inp.GetValue("Dynamic Model Averaging Steps");
75359599516SKenneth E. Jansen         turbvar.dtavei = (ifrule >0)? 1.0/ifrule : -1.0/ifrule;
75459599516SKenneth E. Jansen         turbvar.fwr1 = inp.GetValue("Filter Width Ratio");
75559599516SKenneth E. Jansen         turbvar.flump = inp.GetValue("Lumping Factor for Filter");
75659599516SKenneth E. Jansen 
75759599516SKenneth E. Jansen 
75859599516SKenneth E. Jansen         if ((string)inp.GetValue("Model Statistics") == "True" ) {
75959599516SKenneth E. Jansen           turbvari.modlstats = 1; }
76059599516SKenneth E. Jansen         else {
76159599516SKenneth E. Jansen           turbvari.modlstats = 0; }
76259599516SKenneth E. Jansen 
76359599516SKenneth E. Jansen         if ((string)inp.GetValue("Double Filter") == "True" ) {
76459599516SKenneth E. Jansen           turbvari.i2filt = 1; }
76559599516SKenneth E. Jansen         else {
76659599516SKenneth E. Jansen           turbvari.i2filt = 0; }
76759599516SKenneth E. Jansen 
76859599516SKenneth E. Jansen         if ((string)inp.GetValue("Model/SUPG Dissipation") == "True" ) {
76959599516SKenneth E. Jansen           turbvari.idis = 1; }
77059599516SKenneth E. Jansen         else {
77159599516SKenneth E. Jansen           turbvari.idis = 0; }
77259599516SKenneth E. Jansen 
77359599516SKenneth E. Jansen 
77459599516SKenneth E. Jansen         if((string)inp.GetValue("Dynamic Model Type") == "Standard") {
77559599516SKenneth E. Jansen 
77659599516SKenneth E. Jansen           if((string)inp.GetValue("Dynamic Sub-Model Type") == "None")
77759599516SKenneth E. Jansen             turbvari.isubmod = 0;
77859599516SKenneth E. Jansen           else if((string)inp.GetValue("Dynamic Sub-Model Type") =="DFWR")
77959599516SKenneth E. Jansen             turbvari.isubmod = 1;
78059599516SKenneth E. Jansen           else if((string)inp.GetValue("Dynamic Sub-Model Type") =="SUPG")
78159599516SKenneth E. Jansen             turbvari.isubmod = 2;
78259599516SKenneth E. Jansen         }
78359599516SKenneth E. Jansen         else if((string)inp.GetValue("Dynamic Model Type") == "Projection") {
78459599516SKenneth E. Jansen 
78559599516SKenneth E. Jansen           if((string)inp.GetValue("Projection Filter Type") == "Linear")
78659599516SKenneth E. Jansen             turbvari.ifproj = 0;
78759599516SKenneth E. Jansen           else if((string)inp.GetValue("Projection Filter Type") =="Quadratic")
78859599516SKenneth E. Jansen             turbvari.ifproj = 1;
78959599516SKenneth E. Jansen 
79059599516SKenneth E. Jansen           if((string)inp.GetValue("Dynamic Sub-Model Type") == "None")
79159599516SKenneth E. Jansen             turbvari.isubmod = 0;
79259599516SKenneth E. Jansen           else if((string)inp.GetValue("Dynamic Sub-Model Type") =="ConsistentProj")
79359599516SKenneth E. Jansen             turbvari.isubmod = 1;
79459599516SKenneth E. Jansen         }
79559599516SKenneth E. Jansen 
79659599516SKenneth E. Jansen       }
79759599516SKenneth E. Jansen     }
79859599516SKenneth E. Jansen 
79959599516SKenneth E. Jansen     // SPEBC MODELING PARAMETERS
80059599516SKenneth E. Jansen 
80159599516SKenneth E. Jansen     if ( (spebcvr.irscale = inp.GetValue("SPEBC Model Active")) >= 0 ){
80259599516SKenneth E. Jansen 
80359599516SKenneth E. Jansen       ifrule  = inp.GetValue("Velocity Averaging Steps");
80459599516SKenneth E. Jansen       turbvar.wtavei =(ifrule >0)? 1.0/ifrule : 1.0/inpdat.nstep[0];
80559599516SKenneth E. Jansen       spebcvr.intpres = inp.GetValue("Interpolate Pressure");
80659599516SKenneth E. Jansen       spebcvr.plandist = inp.GetValue("Distance between Planes");
80759599516SKenneth E. Jansen       spebcvr.thetag  = inp.GetValue("Theta Angle of Arc");
80859599516SKenneth E. Jansen       spebcvr.ds = inp.GetValue("Distance for Velocity Averaging");
80959599516SKenneth E. Jansen       spebcvr.tolerence = inp.GetValue("SPEBC Cylindrical Tolerance");
81059599516SKenneth E. Jansen       spebcvr.radcyl = inp.GetValue("Radius of recycle plane");
81159599516SKenneth E. Jansen       spebcvr.rbltin  = inp.GetValue("Inlet Boundary Layer Thickness");
81259599516SKenneth E. Jansen       spebcvr.rvscal  = inp.GetValue("Vertical Velocity Scale Factor");
81359599516SKenneth E. Jansen     }
81459599516SKenneth E. Jansen 
81559599516SKenneth E. Jansen     // CARDIOVASCULAR MODELING PARAMETERS
81659599516SKenneth E. Jansen     if ( (string)inp.GetValue("Time Varying Boundary Conditions From File") == "True")
81759599516SKenneth E. Jansen       nomodule.itvn = 1;
81859599516SKenneth E. Jansen     else
81959599516SKenneth E. Jansen       nomodule.itvn = 0;
82059599516SKenneth E. Jansen 
82159599516SKenneth E. Jansen     if ( nomodule.itvn ==1)
82259599516SKenneth E. Jansen       nomodule.bcttimescale = inp.GetValue("BCT Time Scale Factor");
82359599516SKenneth E. Jansen 
82459599516SKenneth E. Jansen     nomodule.ipvsq=0;
825*513954efSKenneth E. Jansen     if( (nomodule.icardio = inp.GetValue("Number of Coupled Surfaces")) ){
82659599516SKenneth E. Jansen       if ( nomodule.icardio > MAXSURF ) {
82759599516SKenneth E. Jansen         cout << "Number of Coupled Surfaces > MAXSURF \n";
82859599516SKenneth E. Jansen         exit(1);
82959599516SKenneth E. Jansen       }
83059599516SKenneth E. Jansen       if ( (string)inp.GetValue("Pressure Coupling") == "None")
83159599516SKenneth E. Jansen         nomodule.ipvsq=0;
83259599516SKenneth E. Jansen       if ( (string)inp.GetValue("Pressure Coupling") == "Explicit")
83359599516SKenneth E. Jansen         nomodule.ipvsq=1;
83459599516SKenneth E. Jansen       if ( (string)inp.GetValue("Pressure Coupling") == "Implicit")
83559599516SKenneth E. Jansen         nomodule.ipvsq=2;
83659599516SKenneth E. Jansen       if ( (string)inp.GetValue("Pressure Coupling") == "P-Implicit")
83759599516SKenneth E. Jansen         nomodule.ipvsq=3;
83859599516SKenneth E. Jansen 
839*513954efSKenneth E. Jansen       if( (nomodule.numResistSrfs=inp.GetValue("Number of Resistance Surfaces")) ){
84059599516SKenneth E. Jansen           ivec = inp.GetValue("List of Resistance Surfaces");
84159599516SKenneth E. Jansen           for(i=0;i<MAXSURF+1; i++) nomodule.nsrflistResist[i] = 0;
84259599516SKenneth E. Jansen           for(i=0; i< nomodule.numResistSrfs; i++){
84359599516SKenneth E. Jansen               nomodule.nsrflistResist[i+1] = ivec[i];
84459599516SKenneth E. Jansen           }
84559599516SKenneth E. Jansen           vec = inp.GetValue("Resistance Values");
84659599516SKenneth E. Jansen           for(i =0; i< MAXSURF+1 ; i++) nomodule.ValueListResist[i] = 0;
84759599516SKenneth E. Jansen           for(i =0; i< nomodule.numResistSrfs ; i++) nomodule.ValueListResist[i+1] = vec[i];
84859599516SKenneth E. Jansen           vec.erase(vec.begin(),vec.end());
84959599516SKenneth E. Jansen       }
850*513954efSKenneth E. Jansen       if( (nomodule.numImpSrfs=inp.GetValue("Number of Impedance Surfaces")) ){
85159599516SKenneth E. Jansen           ivec = inp.GetValue("List of Impedance Surfaces");
85259599516SKenneth E. Jansen           for(i=0;i<MAXSURF+1; i++) nomodule.nsrflistImp[i] = 0;
85359599516SKenneth E. Jansen           for(i=0; i< nomodule.numImpSrfs; i++){
85459599516SKenneth E. Jansen               nomodule.nsrflistImp[i+1] = ivec[i];
85559599516SKenneth E. Jansen           }
85659599516SKenneth E. Jansen           if ( (string)inp.GetValue("Impedance From File") == "True")
85759599516SKenneth E. Jansen               nomodule.impfile = 1; else nomodule.impfile = 0;
85859599516SKenneth E. Jansen       }
859*513954efSKenneth E. Jansen       if( (nomodule.numRCRSrfs=inp.GetValue("Number of RCR Surfaces")) ){
86059599516SKenneth E. Jansen           ivec = inp.GetValue("List of RCR Surfaces");
86159599516SKenneth E. Jansen           for(i=0;i<MAXSURF+1; i++) nomodule.nsrflistRCR[i] = 0;
86259599516SKenneth E. Jansen           for(i=0; i< nomodule.numRCRSrfs; i++){
86359599516SKenneth E. Jansen               nomodule.nsrflistRCR[i+1] = ivec[i];
86459599516SKenneth E. Jansen           }
86559599516SKenneth E. Jansen           if ( (string)inp.GetValue("RCR Values From File") == "True")
86659599516SKenneth E. Jansen               nomodule.ircrfile = 1; else nomodule.ircrfile = 0;
86759599516SKenneth E. Jansen       }
86859599516SKenneth E. Jansen     }
86959599516SKenneth E. Jansen     nomodule.ideformwall = 0;
87059599516SKenneth E. Jansen     if((string)inp.GetValue("Deformable Wall")=="True"){
87159599516SKenneth E. Jansen         nomodule.ideformwall = 1;
87259599516SKenneth E. Jansen         nomodule.rhovw = inp.GetValue("Density of Vessel Wall");
87359599516SKenneth E. Jansen         nomodule.thicknessvw = inp.GetValue("Thickness of Vessel Wall");
87459599516SKenneth E. Jansen         nomodule.evw = inp.GetValue("Young Mod of Vessel Wall");
87559599516SKenneth E. Jansen         nomodule.rnuvw = inp.GetValue("Poisson Ratio of Vessel Wall");
87659599516SKenneth E. Jansen         nomodule.rshearconstantvw = inp.GetValue("Shear Constant of Vessel Wall");
87759599516SKenneth E. Jansen         if((string)inp.GetValue("Wall Mass Matrix for LHS") == "True") nomodule.iwallmassfactor = 1;
87859599516SKenneth E. Jansen         else nomodule.iwallmassfactor = 0;
87959599516SKenneth E. Jansen         if((string)inp.GetValue("Wall Stiffness Matrix for LHS") == "True") nomodule.iwallstiffactor = 1;
88059599516SKenneth E. Jansen         else nomodule.iwallstiffactor = 0;
88159599516SKenneth E. Jansen     }
88259599516SKenneth E. Jansen     nomodule.iviscflux = 1;
88359599516SKenneth E. Jansen     if((string)inp.GetValue("Viscous Flux Flag") == "True") nomodule.iviscflux = 1;
88459599516SKenneth E. Jansen     if((string)inp.GetValue("Viscous Flux Flag") == "False") nomodule.iviscflux = 0;
88559599516SKenneth E. Jansen 
88659599516SKenneth E. Jansen 
88759599516SKenneth E. Jansen     // Scaling Parameters Keywords
88859599516SKenneth E. Jansen 
88959599516SKenneth E. Jansen     outpar.ro = inp.GetValue("Density");
89059599516SKenneth E. Jansen     outpar.vel = inp.GetValue("Velocity");
89159599516SKenneth E. Jansen     outpar.press = inp.GetValue("Pressure");
89259599516SKenneth E. Jansen     outpar.temper = inp.GetValue("Temperature");
89359599516SKenneth E. Jansen     outpar.entrop = inp.GetValue("Entropy");
89459599516SKenneth E. Jansen 
89559599516SKenneth E. Jansen     // Step Sequencing
89659599516SKenneth E. Jansen 
89759599516SKenneth E. Jansen 
89859599516SKenneth E. Jansen     ivec = inp.GetValue("Step Construction");
89959599516SKenneth E. Jansen     sequence.seqsize = ivec.size();
90059599516SKenneth E. Jansen     if( sequence.seqsize > 100 || sequence.seqsize < 2 )
90159599516SKenneth E. Jansen      cerr<<"Sequence size must be between 2 and 100 "<<endl;
90259599516SKenneth E. Jansen 
90359599516SKenneth E. Jansen     for(i=0; i< sequence.seqsize; i++)
90459599516SKenneth E. Jansen       sequence.stepseq[i] = ivec[i];
90559599516SKenneth E. Jansen 
90659599516SKenneth E. Jansen   }
90759599516SKenneth E. Jansen   catch ( exception &e ) {
90859599516SKenneth E. Jansen     cout << endl << "Input exception: " << e.what() << endl << endl;
90959599516SKenneth E. Jansen     ierr = 001;
91059599516SKenneth E. Jansen     print_error_code(ierr);
91159599516SKenneth E. Jansen     return ierr;
91259599516SKenneth E. Jansen   }
91359599516SKenneth E. Jansen 
91459599516SKenneth E. Jansen   return ierr;
91559599516SKenneth E. Jansen 
91659599516SKenneth E. Jansen }
91759599516SKenneth E. Jansen 
91859599516SKenneth E. Jansen void print_error_code(int ierr) {
91959599516SKenneth E. Jansen   /*
92059599516SKenneth E. Jansen     Return Error codes:
92159599516SKenneth E. Jansen     0xx         Input error
92259599516SKenneth E. Jansen     1xx         Solution Control
92359599516SKenneth E. Jansen     105         Turbulence Model not supported
92459599516SKenneth E. Jansen 
92559599516SKenneth E. Jansen     2xx         Material Properties
92659599516SKenneth E. Jansen 
92759599516SKenneth E. Jansen     3xx         Output Control
92859599516SKenneth E. Jansen 
92959599516SKenneth E. Jansen     4xx         Discretization Control
93059599516SKenneth E. Jansen 
93159599516SKenneth E. Jansen     5xx         Scaling Parameters
93259599516SKenneth E. Jansen 
93359599516SKenneth E. Jansen     6xx         Linear Solver Control
93459599516SKenneth E. Jansen     601         linear solver type not supported
93559599516SKenneth E. Jansen   */
93659599516SKenneth E. Jansen   cout << endl << endl << "Input error detected: " << endl << endl;
93759599516SKenneth E. Jansen   if ( ierr == 001 ) {
93859599516SKenneth E. Jansen     cout << endl << "Input Directive not understood" << endl << endl;
93959599516SKenneth E. Jansen   }
94059599516SKenneth E. Jansen   if ( ierr == 105 ) {
94159599516SKenneth E. Jansen     cout << endl << "Turbulence Model Not Supported" << endl << endl;
94259599516SKenneth E. Jansen   }
94359599516SKenneth E. Jansen   if ( ierr == 601 ) {
94459599516SKenneth E. Jansen     cout << endl << "Linear Solver Type Not Supported" << endl << endl;
94559599516SKenneth E. Jansen   }
94659599516SKenneth E. Jansen 
94759599516SKenneth E. Jansen }
948