xref: /phasta/phSolver/common/input_fform.cc (revision 0deefd04d31a7be8018f927d3b36e16bce7ca430)
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 
13513954efSKenneth E. Jansen #include <FCMangle.h>
14513954efSKenneth E. Jansen #define BC_setVars FortranCInterface_MODULE_(blowercontrol, bc_setvars,		BLOWERCONTROL, BC_SETVARS)
15513954efSKenneth 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];
20513954efSKenneth E. Jansen //extern "C"
21513954efSKenneth E. Jansen extern "C" void BC_setVars(		int*, 		int*,
22513954efSKenneth E. Jansen 								int*,		int*,
23513954efSKenneth E. Jansen 								double*, 	double*,	double*,
24513954efSKenneth E. Jansen 								double*, 	double*,	double*,
25513954efSKenneth E. Jansen 								double*, 	double*,	double*,
26513954efSKenneth 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 ;
3217860365SKenneth E. Jansen   int i,j, n_tmp;
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
95513954efSKenneth E. Jansen 	//	ctrlvari.isetOutPres = (int)inp.GetValue("Set Outlet Pressure");
96513954efSKenneth E. Jansen 	//	if(ctrlvari.isetOutPres > 0 )
97513954efSKenneth E. Jansen 
98513954efSKenneth E. Jansen     ductvari.isetOutletID  = (int)inp.GetValue("Duct Outlet ID");
99513954efSKenneth E. Jansen     if(ductvari.isetOutletID > 0 )
100513954efSKenneth E. Jansen 		ctrlvar.outPres1 = inp.GetValue("Duct Uniform Outlet Pressure");
101513954efSKenneth E. Jansen 
102513954efSKenneth E. Jansen // Override Eddy Vicosity IC and BC
103513954efSKenneth E. Jansen 	ductvari.isetEV_IC_BC=(int)inp.GetValue("Override Eddy Viscosity");
104513954efSKenneth E. Jansen 	if(ductvari.isetEV_IC_BC==1){
105513954efSKenneth E. Jansen 		ductvar.evis_IC_BC=inp.GetValue("Eddy Viscosity Value for Override");
10659599516SKenneth E. Jansen 	}
107513954efSKenneth E. Jansen 
108513954efSKenneth E. Jansen 	if(ductvari.isetEVramp = (int)inp.GetValue("Specify Initial Eddy Viscosity Ramp")){
109513954efSKenneth E. Jansen 		ductvar.EVrampXmin	=inp.GetValue("Initial Scalar 1 ramp start");
110513954efSKenneth E. Jansen 		ductvar.EVrampXmax	=inp.GetValue("Initial Scalar 1 ramp end");
111513954efSKenneth E. Jansen 		ductvar.EVrampMax	=inp.GetValue("Initial Scalar 1 high");
112513954efSKenneth E. Jansen 		ductvar.EVrampMin   =inp.GetValue("Initial Scalar 1 low");
113513954efSKenneth E. Jansen 	}
114513954efSKenneth E. Jansen 
11559599516SKenneth E. Jansen // set initial condition
11659599516SKenneth E. Jansen 	ctrlvari.isetInitial=(int)inp.GetValue("Specify Initial Conditions");
117513954efSKenneth 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 
126513954efSKenneth E. Jansen 
127513954efSKenneth E. Jansen 
128513954efSKenneth E. Jansen 
129513954efSKenneth E. Jansen //initial condition for duct
130513954efSKenneth E. Jansen 	ductvari.isetInitial_Duct=(int)inp.GetValue("Set Initial Condition for Duct");
131513954efSKenneth E. Jansen //inlet condition for duct
132513954efSKenneth E. Jansen 	ductvari.isetInlet_Duct=(int)inp.GetValue("Set Inlet Condition for Duct");
133513954efSKenneth E. Jansen 
134513954efSKenneth E. Jansen     //surfID, t_cycle, t_riseTime, t_fallTime, t_fullOn, vmax, vmin, T, nu, deltaBL, enable
135513954efSKenneth E. Jansen     n_tmp = (int) inp.GetValue("Number of Blower Surfaces");	//BC_setNBlower(&n_tmp);
136513954efSKenneth E. Jansen 
137513954efSKenneth E. Jansen 	if(n_tmp > 0){
138513954efSKenneth E. Jansen 		vector<int>    *ivec[3];
139513954efSKenneth E. Jansen 		vector<double> *dvec[10];
140513954efSKenneth E. Jansen 
141513954efSKenneth E. Jansen 		for(i = 0; i < 3; i++)	ivec[i] = new vector<int>;
142513954efSKenneth E. Jansen 		for(i = 0; i < 10; i++)	dvec[i] = new vector<double>;
143513954efSKenneth E. Jansen 
144513954efSKenneth E. Jansen         *ivec[0] = inp.GetValue("Blower Mode");
145513954efSKenneth E. Jansen 		*ivec[1] = inp.GetValue("Blower Surface ID");
146513954efSKenneth E. Jansen 		*ivec[2] = inp.GetValue("Blower Enable");
147513954efSKenneth E. Jansen 
148513954efSKenneth E. Jansen 		*dvec[0] = inp.GetValue("Blower Cycle Period");
149513954efSKenneth E. Jansen         *dvec[1] = inp.GetValue("Blower Full On Period");
150513954efSKenneth E. Jansen 		*dvec[2] = inp.GetValue("Blower Rise Time");
151513954efSKenneth E. Jansen 		*dvec[3] = inp.GetValue("Blower Fall Time");
152513954efSKenneth E. Jansen         *dvec[4] = inp.GetValue("Blower Maximum u_normal");
153513954efSKenneth E. Jansen         *dvec[5] = inp.GetValue("Blower Minimum u_normal");
154513954efSKenneth E. Jansen 		*dvec[6] = inp.GetValue("Blower Temperature");
155513954efSKenneth E. Jansen 		*dvec[7] = inp.GetValue("Blower Eddy Viscosity");
156513954efSKenneth E. Jansen 		*dvec[8] = inp.GetValue("Blower BL Thickness");
157513954efSKenneth E. Jansen 		*dvec[9] = inp.GetValue("Blower BL Thickness (scalar)");
158513954efSKenneth E. Jansen 
159513954efSKenneth E. Jansen 		BC_setVars(	&n_tmp,
160513954efSKenneth E. Jansen 					&(*ivec[0])[0], 	//mode
161513954efSKenneth E. Jansen 					&(*ivec[1])[0], 	//surfID
162513954efSKenneth E. Jansen 					&(*ivec[2])[0],		//enable
163513954efSKenneth E. Jansen 					&(*dvec[0])[0],		//t_cycle
164513954efSKenneth E. Jansen 					&(*dvec[1])[0],		//t_fullOn
165513954efSKenneth E. Jansen 					&(*dvec[2])[0],		//t_riseTime
166513954efSKenneth E. Jansen 					&(*dvec[3])[0],		//t_fallTime
167513954efSKenneth E. Jansen 				 	&(*dvec[4])[0],		//vmax
168513954efSKenneth E. Jansen 					&(*dvec[5])[0],		//vmin
169513954efSKenneth E. Jansen 					&(*dvec[6])[0],		//T
170513954efSKenneth E. Jansen 					&(*dvec[7])[0],		//nu
171513954efSKenneth E. Jansen 				 	&(*dvec[8])[0],		//delta BL velocity
172513954efSKenneth E. Jansen 					&(*dvec[9])[0]	);	//delta BL scalar
173513954efSKenneth E. Jansen 
174513954efSKenneth E. Jansen 	}
175513954efSKenneth E. Jansen 
176513954efSKenneth E. Jansen //suction condition for duct
177513954efSKenneth E. Jansen 	ductvari.isetSuctionID_Duct=(int)inp.GetValue("Duct Set Suction Surface ID");        //suction patch surface IDs
178513954efSKenneth E. Jansen 	if(ductvari.isetSuctionID_Duct > 0){
179513954efSKenneth E. Jansen 		ductvari.suctionVbottom     = inp.GetValue("Duct Bottom Suction Normal Velocity");
180513954efSKenneth E. Jansen 		ductvari.suctionVside_lower = inp.GetValue("Duct Lower Side Suction Normal Velocity");
181513954efSKenneth E. Jansen 		ductvari.suctionVside_upper = inp.GetValue("Duct Upper Side Surface Normal Velocity");
182513954efSKenneth E. Jansen 		ductvari.suctionVtop        = inp.GetValue("Duct Top Surface Normal Velocity");
183513954efSKenneth E. Jansen 	}
184513954efSKenneth E. Jansen 
185513954efSKenneth E. Jansen //  duct geometry type
186513954efSKenneth E. Jansen 	ductvari.iDuctgeometryType = (int)inp.GetValue("Duct Geometry Type");
187513954efSKenneth 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;
446*0deefd04SKenneth E. Jansen       ctrlvar.xvel_ini = inp.GetValue("Initial X Velocity");
447*0deefd04SKenneth E. Jansen       ctrlvar.yvel_ini = inp.GetValue("Initial Y Velocity");
448*0deefd04SKenneth E. Jansen       ctrlvar.zvel_ini = inp.GetValue("Initial Z Velocity");
449*0deefd04SKenneth E. Jansen       ctrlvar.temp_ini = inp.GetValue("Initial Temp");
450*0deefd04SKenneth E. Jansen       ctrlvar.pres_ini = inp.GetValue("Initial Pressure");
451*0deefd04SKenneth E. Jansen       ctrlvar.evis_ini = inp.GetValue("Initial Scalar 1");
45259599516SKenneth E. Jansen     }
45359599516SKenneth E. Jansen     else if ( (string)inp.GetValue("Body Force Option") == "Cooling Initial Condition" ) {
45459599516SKenneth E. Jansen       for(i=0; i< levlset.iLSet +1 ; i++) matdat.matflg[i][4] = 5;
45559599516SKenneth E. Jansen     }
45659599516SKenneth E. Jansen 
45759599516SKenneth E. Jansen     // the following block of stuff is common to all cooling type sponges.
45859599516SKenneth E. Jansen     // Specific stuff belongs in the conditionals above
45959599516SKenneth E. Jansen 
46059599516SKenneth E. Jansen     if(matdat.matflg[0][4] >=4) {
46159599516SKenneth E. Jansen       spongevar.betamax = inp.GetValue("Maximum Value of Sponge Parameter");
46259599516SKenneth E. Jansen       spongevar.zinsponge = inp.GetValue("Inflow Cooling Sponge Ends at z");
46359599516SKenneth E. Jansen       spongevar.zoutsponge= inp.GetValue("Outflow Cooling Sponge Begins at z");
46459599516SKenneth E. Jansen       spongevar.radsponge = inp.GetValue("Radial Cooling Sponge Begins at r");
46559599516SKenneth E. Jansen       spongevar.grthosponge = inp.GetValue("Sponge Growth Coefficient Outflow");
46659599516SKenneth E. Jansen       spongevar.grthisponge = inp.GetValue("Sponge Growth Coefficient Inflow");
46759599516SKenneth E. Jansen 
46859599516SKenneth E. Jansen 
46959599516SKenneth E. Jansen       spongevar.spongecontinuity = 0;
47059599516SKenneth E. Jansen       spongevar.spongemomentum1 = 0;
47159599516SKenneth E. Jansen       spongevar.spongemomentum2 = 0;
47259599516SKenneth E. Jansen       spongevar.spongemomentum3 = 0;
47359599516SKenneth E. Jansen       spongevar.spongeenergy = 0;
47459599516SKenneth E. Jansen 
47559599516SKenneth E. Jansen       if((string)inp.GetValue("Sponge for Continuity Equation") == "True")
47659599516SKenneth E. Jansen 	spongevar.spongecontinuity = 1;
47759599516SKenneth E. Jansen       if((string)inp.GetValue("Sponge for x Momentum Equation") == "True")
47859599516SKenneth E. Jansen 	spongevar.spongemomentum1 = 1;
47959599516SKenneth E. Jansen       if((string)inp.GetValue("Sponge for y Momentum Equation") == "True")
48059599516SKenneth E. Jansen 	spongevar.spongemomentum2 = 1;
48159599516SKenneth E. Jansen       if((string)inp.GetValue("Sponge for z Momentum Equation") == "True")
48259599516SKenneth E. Jansen 	spongevar.spongemomentum3 = 1;
48359599516SKenneth E. Jansen       if((string)inp.GetValue("Sponge for Energy Equation") == "True")
48459599516SKenneth E. Jansen 	spongevar.spongeenergy = 1;
48559599516SKenneth E. Jansen 
48659599516SKenneth E. Jansen     }
48759599516SKenneth E. Jansen 
48859599516SKenneth E. Jansen     vec = inp.GetValue("Body Force");
48959599516SKenneth E. Jansen     for(i=0; i< levlset.iLSet +1 ; i++){
49059599516SKenneth E. Jansen       matdat.datmat[i][4][0] = vec[0+i*3];
49159599516SKenneth E. Jansen       matdat.datmat[i][4][1] = vec[1+i*3];
49259599516SKenneth E. Jansen       matdat.datmat[i][4][2] = vec[2+i*3];
49359599516SKenneth E. Jansen     }
49459599516SKenneth E. Jansen     vec.erase(vec.begin(),vec.end());
49559599516SKenneth E. Jansen 
49659599516SKenneth E. Jansen     vec = inp.GetValue("Body Force Pressure Gradient");
49759599516SKenneth E. Jansen     for(i=0; i< levlset.iLSet +1 ; i++){
49859599516SKenneth E. Jansen       matdat.datmat[i][6][0] = vec[0+i*3];
49959599516SKenneth E. Jansen       matdat.datmat[i][6][1] = vec[1+i*3];
50059599516SKenneth E. Jansen       matdat.datmat[i][6][2] = vec[2+i*3];
50159599516SKenneth E. Jansen     }
50259599516SKenneth E. Jansen     vec.erase(vec.begin(),vec.end());
50359599516SKenneth E. Jansen 
50459599516SKenneth E. Jansen     if ( (string)inp.GetValue("Surface Tension Option") == "No" ){
50559599516SKenneth E. Jansen         genpar.isurf = 0;
50659599516SKenneth E. Jansen     }
50759599516SKenneth E. Jansen     else if ((string)inp.GetValue("Surface Tension Option") == "Yes" ){
50859599516SKenneth E. Jansen         genpar.isurf = 1;
50959599516SKenneth E. Jansen     }
51059599516SKenneth E. Jansen     else {
51159599516SKenneth E. Jansen       cout << " Surface Tension: Only Legal Values (Yes, No) ";
51259599516SKenneth E. Jansen       cout << endl;
51359599516SKenneth E. Jansen       exit(1);
51459599516SKenneth E. Jansen     }
51559599516SKenneth E. Jansen     if( genpar.isurf > 0) {
51659599516SKenneth E. Jansen       genpar.Bo = inp.GetValue("Bond Number");
51759599516SKenneth E. Jansen     }
51859599516SKenneth E. Jansen 
51959599516SKenneth E. Jansen     genpar.EntropyPressure = inp.GetValue("Entropy Form of Pressure Constraint on Weight Space");
52059599516SKenneth E. Jansen 
52159599516SKenneth E. Jansen 
52259599516SKenneth E. Jansen     if ( (string)inp.GetValue("Rotating Frame of Reference") == "True" ) {
52359599516SKenneth E. Jansen       matdat.matflg[0][5] = 1;
52459599516SKenneth E. Jansen       vec = inp.GetValue("Rotating Frame of Reference Rotation Rate");
52559599516SKenneth E. Jansen       matdat.datmat[0][5][0] = vec[0];
52659599516SKenneth E. Jansen       matdat.datmat[0][5][1] = vec[1];
52759599516SKenneth E. Jansen       matdat.datmat[0][5][2] = vec[2];
52859599516SKenneth E. Jansen       vec.erase(vec.begin(),vec.end());
52959599516SKenneth E. Jansen     }
53059599516SKenneth E. Jansen     else {
53159599516SKenneth E. Jansen       matdat.matflg[0][5] = 0;
53259599516SKenneth E. Jansen       matdat.datmat[0][5][0] = 0.;
53359599516SKenneth E. Jansen       matdat.datmat[0][5][1] = 0.;
53459599516SKenneth E. Jansen       matdat.datmat[0][5][2] = 0.;
53559599516SKenneth E. Jansen     }
53659599516SKenneth E. Jansen 
53759599516SKenneth E. Jansen 
53859599516SKenneth E. Jansen     //Linear Solver parameters
539513954efSKenneth E. Jansen      conpar.usingpetsc=0;  // default is to have PETSc off
540efb88323SKenneth E. Jansen       incomp.iprjFlag = 0; incomp.ipresPrjFlag=0; inpdat.svLSFlag=0;
54179f1763eSKenneth E. Jansen       inpdat.leslib=0;
542efb88323SKenneth E. Jansen     if( (string)inp.GetValue("Solver Type") =="svLS" ){
543efb88323SKenneth E. Jansen       inpdat.svLSFlag = 1; }
54459599516SKenneth E. Jansen     if( (string)inp.GetValue("Solver Type") =="ACUSIM with P Projection" ){
54579f1763eSKenneth E. Jansen       inpdat.leslib=1; incomp.iprjFlag = 0; incomp.ipresPrjFlag=1;}
54659599516SKenneth E. Jansen     else if ( (string)inp.GetValue("Solver Type") =="ACUSIM" ){
54779f1763eSKenneth E. Jansen       inpdat.leslib=1; incomp.iprjFlag = 0; incomp.ipresPrjFlag=0;}
54859599516SKenneth E. Jansen     else if( (string)inp.GetValue("Solver Type") =="ACUSIM with Velocity Projection" ){
54979f1763eSKenneth E. Jansen       inpdat.leslib=1; incomp.iprjFlag = 1; incomp.ipresPrjFlag=0;}
55059599516SKenneth E. Jansen     else if( (string)inp.GetValue("Solver Type") =="ACUSIM with Full Projection" ){
55179f1763eSKenneth E. Jansen       inpdat.leslib=1; incomp.iprjFlag = 1; incomp.ipresPrjFlag=1;}
55259599516SKenneth E. Jansen     else if( (string)inp.GetValue("Solver Type") =="GMRES Matrix Free"){
55359599516SKenneth E. Jansen       inpdat.impl[0] += 10*solflow;}
55459599516SKenneth E. Jansen     else if( (string)inp.GetValue("Solver Type") =="GMRES EBE"){
55559599516SKenneth E. Jansen       inpdat.impl[0] += 20*solflow;}
556513954efSKenneth E. Jansen     else if( (string)inp.GetValue("Solver Type") =="PETSc"){
557513954efSKenneth E. Jansen       conpar.usingpetsc=1;}
55859599516SKenneth E. Jansen     //GMRES sparse is assumed default and has the value of 10, MFG 20,
55959599516SKenneth E. Jansen     // EBE 30
56059599516SKenneth E. Jansen 
56159599516SKenneth E. Jansen 
56259599516SKenneth E. Jansen     //    inpdat.niter[0] = inp.GetValue("Number of Solves per Time Step");
56359599516SKenneth E. Jansen     solpar.nGMRES = inp.GetValue("Number of GMRES Sweeps per Solve");
56459599516SKenneth E. Jansen     solpar.Kspace = inp.GetValue("Number of Krylov Vectors per GMRES Sweep");
56559599516SKenneth E. Jansen     inpdat.LHSupd[0] = inp.GetValue("Number of Solves per Left-hand-side Formation");
56659599516SKenneth E. Jansen     inpdat.epstol[0] = inp.GetValue("Tolerance on Momentum Equations");
56759599516SKenneth E. Jansen     incomp.prestol = inp.GetValue("Tolerance on ACUSIM Pressure Projection");
56859599516SKenneth E. Jansen     incomp.minIters = inp.GetValue("Minimum Number of Iterations per Nonlinear Iteration");
56959599516SKenneth E. Jansen     incomp.maxIters = inp.GetValue("Maximum Number of Iterations per Nonlinear Iteration");
57059599516SKenneth E. Jansen     inpdat.deltol[0][0]=inp.GetValue("Velocity Delta Ratio");
57159599516SKenneth E. Jansen     inpdat.deltol[1][0]=inp.GetValue("Pressure Delta Ratio");
57259599516SKenneth E. Jansen     incomp.nPrjs = inp.GetValue("Number of Velocity Projection Vectors");
57359599516SKenneth E. Jansen     incomp.nPresPrjs = inp.GetValue("Number of Pressure Projection Vectors");
57459599516SKenneth E. Jansen     incomp.iverbose = inp.GetValue("ACUSIM Verbosity Level");
57559599516SKenneth E. Jansen 
57659599516SKenneth E. Jansen     if(solheat==1){
57759599516SKenneth E. Jansen       inpdat.epstol[1]=inp.GetValue("Temperature Solver Tolerance");
57859599516SKenneth E. Jansen       inpdat.LHSupd[1]=inp.GetValue("Number of Solves of Temperature per Left-hand-side Formation");
57959599516SKenneth E. Jansen     }
58059599516SKenneth E. Jansen 
58159599516SKenneth E. Jansen     // The following is where you should put any inputs that are able to
58259599516SKenneth E. Jansen     // input differently for each scalar.  It is a little tedious in the code
58359599516SKenneth E. Jansen     // but it should make the solver.inp easier to understand. Note this will
58459599516SKenneth E. Jansen     // require some care with regression tests.
58559599516SKenneth E. Jansen 
58659599516SKenneth E. Jansen 
58759599516SKenneth E. Jansen     if(solscalr>0){
58859599516SKenneth E. Jansen       inpdat.epstol[2]=inp.GetValue("Scalar 1 Solver Tolerance");
58959599516SKenneth E. Jansen       inpdat.LHSupd[2]=inp.GetValue("Number of Solves of Scalar 1 per Left-hand-side Formation");
59059599516SKenneth E. Jansen 
59159599516SKenneth E. Jansen       vec = inp.GetValue("Limit Scalar 1");
59259599516SKenneth E. Jansen       for(i=0; i<3 ; i++){
59359599516SKenneth E. Jansen         turbvar.ylimit[5][i] = vec[i];
59459599516SKenneth E. Jansen       }
59559599516SKenneth E. Jansen       vec.erase(vec.begin(),vec.end());
59659599516SKenneth E. Jansen     }
59759599516SKenneth E. Jansen 
59859599516SKenneth E. Jansen     if(solscalr>1){
59959599516SKenneth E. Jansen       inpdat.epstol[3]=inp.GetValue("Scalar 2 Solver Tolerance");
60059599516SKenneth E. Jansen       inpdat.LHSupd[3]=inp.GetValue("Number of Solves of Scalar 2 per Left-hand-side Formation");
60159599516SKenneth E. Jansen 
60259599516SKenneth E. Jansen       vec = inp.GetValue("Limit Scalar 2");
60359599516SKenneth E. Jansen       for(i=0; i<3 ; i++){
60459599516SKenneth E. Jansen         turbvar.ylimit[6][i] = vec[i];
60559599516SKenneth E. Jansen       }
60659599516SKenneth E. Jansen       vec.erase(vec.begin(),vec.end());
60759599516SKenneth E. Jansen     }
60859599516SKenneth E. Jansen 
60959599516SKenneth E. Jansen     if(solscalr>2){
61059599516SKenneth E. Jansen       inpdat.epstol[4]=inp.GetValue("Scalar 3 Solver Tolerance");
61159599516SKenneth E. Jansen       inpdat.LHSupd[4]=inp.GetValue("Number of Solves of Scalar 3 per Left-hand-side Formation");
61259599516SKenneth E. Jansen 
61359599516SKenneth E. Jansen       vec = inp.GetValue("Limit Scalar 3");
61459599516SKenneth E. Jansen       for(i=0; i<3 ; i++){
61559599516SKenneth E. Jansen         turbvar.ylimit[7][i] = vec[i];
61659599516SKenneth E. Jansen       }
61759599516SKenneth E. Jansen       vec.erase(vec.begin(),vec.end());
61859599516SKenneth E. Jansen     }
61959599516SKenneth E. Jansen 
62059599516SKenneth E. Jansen     if(solscalr>3){
62159599516SKenneth E. Jansen       inpdat.epstol[5]=inp.GetValue("Scalar 4 Solver Tolerance");
62259599516SKenneth E. Jansen       inpdat.LHSupd[5]=inp.GetValue("Number of Solves of Scalar 4 per Left-hand-side Formation");
62359599516SKenneth E. Jansen 
62459599516SKenneth E. Jansen       vec = inp.GetValue("Limit Scalar 4");
62559599516SKenneth E. Jansen       for(i=0; i<3 ; i++){
62659599516SKenneth E. Jansen         turbvar.ylimit[8][i] = vec[i];
62759599516SKenneth E. Jansen       }
62859599516SKenneth E. Jansen       vec.erase(vec.begin(),vec.end());
62959599516SKenneth E. Jansen     }
63059599516SKenneth E. Jansen 
63159599516SKenneth E. Jansen     // DISCRETIZATION CONTROL
63259599516SKenneth E. Jansen 
63359599516SKenneth E. Jansen     genpar.ipord = inp.GetValue("Basis Function Order");
63459599516SKenneth E. Jansen     if((string)inp.GetValue("Time Integration Rule") == "First Order")
63559599516SKenneth E. Jansen       inpdat.rhoinf[0] = -1 ;
63659599516SKenneth E. Jansen     else inpdat.rhoinf[0] = (double)inp.GetValue("Time Integration Rho Infinity");
63759599516SKenneth E. Jansen     if((string)inp.GetValue("Predictor at Start of Step")=="Same Velocity")
63859599516SKenneth E. Jansen       genpar.ipred = 1;
63959599516SKenneth E. Jansen     if((string)inp.GetValue("Predictor at Start of Step")=="Zero Acceleration")
64059599516SKenneth E. Jansen       genpar.ipred = 2;
64159599516SKenneth E. Jansen     if((string)inp.GetValue("Predictor at Start of Step")=="Same Acceleration")
64259599516SKenneth E. Jansen       genpar.ipred = 3;
64359599516SKenneth E. Jansen     if((string)inp.GetValue("Predictor at Start of Step")=="Same Delta")
64459599516SKenneth E. Jansen       genpar.ipred = 4;
64559599516SKenneth E. Jansen 
64659599516SKenneth E. Jansen     if((string)inp.GetValue("Weak Form") == "Galerkin")
64759599516SKenneth E. Jansen       solpar.ivart = 1;
64859599516SKenneth E. Jansen     if((string)inp.GetValue("Weak Form") == "SUPG")
64959599516SKenneth E. Jansen       solpar.ivart = 2;
65059599516SKenneth E. Jansen 
65159599516SKenneth E. Jansen     if((string)inp.GetValue("Flow Advection Form") == "Convective")
65259599516SKenneth E. Jansen       solpar.iconvflow = 2;
65359599516SKenneth E. Jansen     else if((string)inp.GetValue("Flow Advection Form") == "Conservative")
65459599516SKenneth E. Jansen       solpar.iconvflow = 1;
65559599516SKenneth E. Jansen     if((string)inp.GetValue("Scalar Advection Form") == "Convective")
65659599516SKenneth E. Jansen       solpar.iconvsclr = 2;
65759599516SKenneth E. Jansen     else if((string)inp.GetValue("Scalar Advection Form") == "Conservative")
65859599516SKenneth E. Jansen       solpar.iconvsclr = 1;
65959599516SKenneth E. Jansen     if((string)inp.GetValue("Use Conservative Scalar Convection Velocity") == "True")
66059599516SKenneth E. Jansen       sclrs.consrv_sclr_conv_vel = 1;
66159599516SKenneth E. Jansen     else if((string)inp.GetValue("Use Conservative Scalar Convection Velocity") == "False")
66259599516SKenneth E. Jansen       sclrs.consrv_sclr_conv_vel = 0;
66359599516SKenneth E. Jansen     // TAU INPUT
66459599516SKenneth E. Jansen     if((string)inp.GetValue("Tau Matrix") == "Diagonal-Shakib")
66559599516SKenneth E. Jansen       genpar.itau = 0;
66659599516SKenneth E. Jansen     else  if((string)inp.GetValue("Tau Matrix") == "Diagonal-Franca")
66759599516SKenneth E. Jansen       genpar.itau =1;
66859599516SKenneth E. Jansen     else if((string)inp.GetValue("Tau Matrix") == "Diagonal-Jansen(dev)")
66959599516SKenneth E. Jansen       genpar.itau = 2;
67059599516SKenneth E. Jansen     else if((string)inp.GetValue("Tau Matrix") == "Diagonal-Compressible")
67159599516SKenneth E. Jansen       genpar.itau = 3;
67259599516SKenneth E. Jansen     else if((string)inp.GetValue("Tau Matrix") == "Matrix-Mallet")
67359599516SKenneth E. Jansen       genpar.itau = 10;
67459599516SKenneth E. Jansen     else if((string)inp.GetValue("Tau Matrix") == "Matrix-Modal")
67559599516SKenneth E. Jansen       genpar.itau = 11;
67659599516SKenneth E. Jansen 
67759599516SKenneth E. Jansen     genpar.dtsfct = inp.GetValue("Tau Time Constant");
67859599516SKenneth E. Jansen     genpar.taucfct = inp.GetValue("Tau C Scale Factor");
67959599516SKenneth E. Jansen 
680513954efSKenneth E. Jansen 	genpar.iLHScond = inp.GetValue("LHS BC heat flux enable");
681513954efSKenneth E. Jansen 
68259599516SKenneth E. Jansen     // FLOW DISCONTINUITY CAPTURING
68359599516SKenneth E. Jansen 
68459599516SKenneth E. Jansen       if((string)inp.GetValue("Discontinuity Capturing") == "Off") solpar.iDC = 0;
68559599516SKenneth E. Jansen     else if((string)inp.GetValue("Discontinuity Capturing") == "DC-mallet") solpar.iDC = 1;
68659599516SKenneth E. Jansen     else if((string)inp.GetValue("Discontinuity Capturing") == "DC-quadratic") solpar.iDC = 2;
68759599516SKenneth E. Jansen    else if((string)inp.GetValue("Discontinuity Capturing") == "DC-minimum") solpar.iDC = 3;
68859599516SKenneth E. Jansen     else {
68959599516SKenneth E. Jansen       cout<< "Condition not defined for Discontinuity Capturing \n ";
69059599516SKenneth E. Jansen       exit(1);
69159599516SKenneth E. Jansen     }
69259599516SKenneth E. Jansen 
69359599516SKenneth E. Jansen     // SCALAR DISCONTINUITY CAPTURING
69459599516SKenneth E. Jansen 
69559599516SKenneth E. Jansen       vector<int> ivec = inp.GetValue("Scalar Discontinuity Capturing");
69659599516SKenneth E. Jansen       for(i=0; i< 2; i++)  solpar.idcsclr[i] = ivec[i];
69759599516SKenneth E. Jansen       ivec.erase(ivec.begin(),ivec.end());
69859599516SKenneth E. Jansen 
69959599516SKenneth E. Jansen 
70059599516SKenneth E. Jansen //        if((string)inp.GetValue("Scalar Discontinuity Capturing") == "No") solpar.idcsclr = 0;
70159599516SKenneth E. Jansen //      else if((string)inp.GetValue("Scalar Discontinuity Capturing") == "1") solpar.idcsclr = 1;
70259599516SKenneth E. Jansen //   else if((string)inp.GetValue("Scalar Discontinuity Capturing") == "2") solpar.idcsclr = 2;
70359599516SKenneth E. Jansen //   else {
70459599516SKenneth E. Jansen //        cout<< "Condition not defined for Scalar Discontinuity Capturing \n ";
70559599516SKenneth E. Jansen //        exit(1);
70659599516SKenneth E. Jansen //      }
70759599516SKenneth E. Jansen     if((string)inp.GetValue("Include Viscous Correction in Stabilization") == "True")
70859599516SKenneth E. Jansen       {
70959599516SKenneth E. Jansen         if(genpar.ipord == 1 ) genpar.idiff = 1;
71059599516SKenneth E. Jansen         else genpar.idiff = 2;
71159599516SKenneth E. Jansen       }
71259599516SKenneth E. Jansen     else { genpar.idiff = 0;}
71359599516SKenneth E. Jansen 
714513954efSKenneth E. Jansen // ------ Only For duct S duct Project ------------------------------------------------
71559599516SKenneth E. Jansen     genpar.irampViscOutlet = (int)inp.GetValue("Ramp Up Viscosity Near Outlet");
71659599516SKenneth E. Jansen 
71759599516SKenneth E. Jansen     genpar.istretchOutlet = (int)inp.GetValue("Stretch X Coordinate Near Outlet");
718513954efSKenneth E. Jansen // -----------------------------------------------------------------------------------
71959599516SKenneth E. Jansen 
72059599516SKenneth E. Jansen     genpar.iremoveStabTimeTerm = (int)inp.GetValue("Remove Time Term from Stabilization");
72159599516SKenneth E. Jansen 
72259599516SKenneth E. Jansen     timdat.flmpl = inp.GetValue("Lumped Mass Fraction on Left-hand-side");
72359599516SKenneth E. Jansen     timdat.flmpr = inp.GetValue("Lumped Mass Fraction on Right-hand-side");
72459599516SKenneth E. Jansen 
72559599516SKenneth E. Jansen     timdat.iCFLworst = 0;
72659599516SKenneth E. Jansen     if((string)inp.GetValue("Dump CFL") == "True")
72759599516SKenneth E. Jansen       timdat.iCFLworst = 1;
72859599516SKenneth E. Jansen 
72959599516SKenneth E. Jansen     intdat.intg[0][0]=inp.GetValue("Quadrature Rule on Interior");
73059599516SKenneth E. Jansen     intdat.intg[0][1]=inp.GetValue("Quadrature Rule on Boundary");
73159599516SKenneth E. Jansen     genpar.ibksiz = inp.GetValue("Number of Elements Per Block");
73259599516SKenneth E. Jansen 
73359599516SKenneth E. Jansen     ((string)inp.GetValue("Turn Off Source Terms for Scalars")
73459599516SKenneth E. Jansen          == "True") ? sclrs.nosource = 1 : sclrs.nosource = 0;
73559599516SKenneth E. Jansen     sclrs.tdecay=inp.GetValue("Decay Multiplier for Scalars");
73659599516SKenneth E. Jansen 
73759599516SKenneth E. Jansen     // TURBULENCE MODELING PARAMETER
73859599516SKenneth E. Jansen     int tpturb = turbvari.iles-turbvari.irans;
73959599516SKenneth E. Jansen     int ifrule;
74059599516SKenneth E. Jansen     if( tpturb != 0 ){
74159599516SKenneth E. Jansen 
74259599516SKenneth E. Jansen 
74359599516SKenneth E. Jansen       turbvari.nohomog =inp.GetValue("Number of Homogenous Directions");
74459599516SKenneth E. Jansen 
74559599516SKenneth E. Jansen       if((string)inp.GetValue("Turbulence Wall Model Type") == "Slip Velocity") turbvar.itwmod = 1;
74659599516SKenneth E. Jansen       else if((string)inp.GetValue("Turbulence Wall Model Type") == "Effective Viscosity") turbvar.itwmod = 2;
74759599516SKenneth E. Jansen       else  turbvar.itwmod = 0;
74859599516SKenneth E. Jansen       if (turbvari.irans < 0) turbvar.itwmod = turbvar.itwmod*(-1);
74959599516SKenneth E. Jansen       ifrule  = inp.GetValue("Velocity Averaging Steps");
75059599516SKenneth E. Jansen       turbvar.wtavei =(ifrule >0)? 1.0/ifrule : -1.0/ifrule;
75159599516SKenneth E. Jansen 
75259599516SKenneth E. Jansen       if(turbvari.iles == 1){
75359599516SKenneth E. Jansen 
75459599516SKenneth E. Jansen         if((string)inp.GetValue("Dynamic Model Type") == "Bardina") turbvari.iles += 10;
75559599516SKenneth E. Jansen         else if((string)inp.GetValue("Dynamic Model Type") == "Projection") turbvari.iles += 20;
75659599516SKenneth E. Jansen 
75759599516SKenneth E. Jansen         ifrule = inp.GetValue("Filter Integration Rule");
75859599516SKenneth E. Jansen         turbvari.iles += ifrule-1;
75959599516SKenneth E. Jansen         ifrule = inp.GetValue("Dynamic Model Averaging Steps");
76059599516SKenneth E. Jansen         turbvar.dtavei = (ifrule >0)? 1.0/ifrule : -1.0/ifrule;
76159599516SKenneth E. Jansen         turbvar.fwr1 = inp.GetValue("Filter Width Ratio");
76259599516SKenneth E. Jansen         turbvar.flump = inp.GetValue("Lumping Factor for Filter");
76359599516SKenneth E. Jansen 
76459599516SKenneth E. Jansen 
76559599516SKenneth E. Jansen         if ((string)inp.GetValue("Model Statistics") == "True" ) {
76659599516SKenneth E. Jansen           turbvari.modlstats = 1; }
76759599516SKenneth E. Jansen         else {
76859599516SKenneth E. Jansen           turbvari.modlstats = 0; }
76959599516SKenneth E. Jansen 
77059599516SKenneth E. Jansen         if ((string)inp.GetValue("Double Filter") == "True" ) {
77159599516SKenneth E. Jansen           turbvari.i2filt = 1; }
77259599516SKenneth E. Jansen         else {
77359599516SKenneth E. Jansen           turbvari.i2filt = 0; }
77459599516SKenneth E. Jansen 
77559599516SKenneth E. Jansen         if ((string)inp.GetValue("Model/SUPG Dissipation") == "True" ) {
77659599516SKenneth E. Jansen           turbvari.idis = 1; }
77759599516SKenneth E. Jansen         else {
77859599516SKenneth E. Jansen           turbvari.idis = 0; }
77959599516SKenneth E. Jansen 
78059599516SKenneth E. Jansen 
78159599516SKenneth E. Jansen         if((string)inp.GetValue("Dynamic Model Type") == "Standard") {
78259599516SKenneth E. Jansen 
78359599516SKenneth E. Jansen           if((string)inp.GetValue("Dynamic Sub-Model Type") == "None")
78459599516SKenneth E. Jansen             turbvari.isubmod = 0;
78559599516SKenneth E. Jansen           else if((string)inp.GetValue("Dynamic Sub-Model Type") =="DFWR")
78659599516SKenneth E. Jansen             turbvari.isubmod = 1;
78759599516SKenneth E. Jansen           else if((string)inp.GetValue("Dynamic Sub-Model Type") =="SUPG")
78859599516SKenneth E. Jansen             turbvari.isubmod = 2;
78959599516SKenneth E. Jansen         }
79059599516SKenneth E. Jansen         else if((string)inp.GetValue("Dynamic Model Type") == "Projection") {
79159599516SKenneth E. Jansen 
79259599516SKenneth E. Jansen           if((string)inp.GetValue("Projection Filter Type") == "Linear")
79359599516SKenneth E. Jansen             turbvari.ifproj = 0;
79459599516SKenneth E. Jansen           else if((string)inp.GetValue("Projection Filter Type") =="Quadratic")
79559599516SKenneth E. Jansen             turbvari.ifproj = 1;
79659599516SKenneth E. Jansen 
79759599516SKenneth E. Jansen           if((string)inp.GetValue("Dynamic Sub-Model Type") == "None")
79859599516SKenneth E. Jansen             turbvari.isubmod = 0;
79959599516SKenneth E. Jansen           else if((string)inp.GetValue("Dynamic Sub-Model Type") =="ConsistentProj")
80059599516SKenneth E. Jansen             turbvari.isubmod = 1;
80159599516SKenneth E. Jansen         }
80259599516SKenneth E. Jansen 
80359599516SKenneth E. Jansen       }
80459599516SKenneth E. Jansen     }
80559599516SKenneth E. Jansen 
80659599516SKenneth E. Jansen     // SPEBC MODELING PARAMETERS
80759599516SKenneth E. Jansen 
80859599516SKenneth E. Jansen     if ( (spebcvr.irscale = inp.GetValue("SPEBC Model Active")) >= 0 ){
80959599516SKenneth E. Jansen 
81059599516SKenneth E. Jansen       ifrule  = inp.GetValue("Velocity Averaging Steps");
81159599516SKenneth E. Jansen       turbvar.wtavei =(ifrule >0)? 1.0/ifrule : 1.0/inpdat.nstep[0];
81259599516SKenneth E. Jansen       spebcvr.intpres = inp.GetValue("Interpolate Pressure");
81359599516SKenneth E. Jansen       spebcvr.plandist = inp.GetValue("Distance between Planes");
81459599516SKenneth E. Jansen       spebcvr.thetag  = inp.GetValue("Theta Angle of Arc");
81559599516SKenneth E. Jansen       spebcvr.ds = inp.GetValue("Distance for Velocity Averaging");
81659599516SKenneth E. Jansen       spebcvr.tolerence = inp.GetValue("SPEBC Cylindrical Tolerance");
81759599516SKenneth E. Jansen       spebcvr.radcyl = inp.GetValue("Radius of recycle plane");
81859599516SKenneth E. Jansen       spebcvr.rbltin  = inp.GetValue("Inlet Boundary Layer Thickness");
81959599516SKenneth E. Jansen       spebcvr.rvscal  = inp.GetValue("Vertical Velocity Scale Factor");
82059599516SKenneth E. Jansen     }
82159599516SKenneth E. Jansen 
82259599516SKenneth E. Jansen     // CARDIOVASCULAR MODELING PARAMETERS
82359599516SKenneth E. Jansen     if ( (string)inp.GetValue("Time Varying Boundary Conditions From File") == "True")
82459599516SKenneth E. Jansen       nomodule.itvn = 1;
82559599516SKenneth E. Jansen     else
82659599516SKenneth E. Jansen       nomodule.itvn = 0;
82759599516SKenneth E. Jansen 
82859599516SKenneth E. Jansen     if ( nomodule.itvn ==1)
82959599516SKenneth E. Jansen       nomodule.bcttimescale = inp.GetValue("BCT Time Scale Factor");
83059599516SKenneth E. Jansen 
83159599516SKenneth E. Jansen     nomodule.ipvsq=0;
832513954efSKenneth E. Jansen     if( (nomodule.icardio = inp.GetValue("Number of Coupled Surfaces")) ){
83359599516SKenneth E. Jansen       if ( nomodule.icardio > MAXSURF ) {
83459599516SKenneth E. Jansen         cout << "Number of Coupled Surfaces > MAXSURF \n";
83559599516SKenneth E. Jansen         exit(1);
83659599516SKenneth E. Jansen       }
83759599516SKenneth E. Jansen       if ( (string)inp.GetValue("Pressure Coupling") == "None")
83859599516SKenneth E. Jansen         nomodule.ipvsq=0;
83959599516SKenneth E. Jansen       if ( (string)inp.GetValue("Pressure Coupling") == "Explicit")
84059599516SKenneth E. Jansen         nomodule.ipvsq=1;
84159599516SKenneth E. Jansen       if ( (string)inp.GetValue("Pressure Coupling") == "Implicit")
84259599516SKenneth E. Jansen         nomodule.ipvsq=2;
84359599516SKenneth E. Jansen       if ( (string)inp.GetValue("Pressure Coupling") == "P-Implicit")
84459599516SKenneth E. Jansen         nomodule.ipvsq=3;
84559599516SKenneth E. Jansen 
846513954efSKenneth E. Jansen       if( (nomodule.numResistSrfs=inp.GetValue("Number of Resistance Surfaces")) ){
84759599516SKenneth E. Jansen           ivec = inp.GetValue("List of Resistance Surfaces");
84859599516SKenneth E. Jansen           for(i=0;i<MAXSURF+1; i++) nomodule.nsrflistResist[i] = 0;
84959599516SKenneth E. Jansen           for(i=0; i< nomodule.numResistSrfs; i++){
85059599516SKenneth E. Jansen               nomodule.nsrflistResist[i+1] = ivec[i];
85159599516SKenneth E. Jansen           }
85259599516SKenneth E. Jansen           vec = inp.GetValue("Resistance Values");
85359599516SKenneth E. Jansen           for(i =0; i< MAXSURF+1 ; i++) nomodule.ValueListResist[i] = 0;
85459599516SKenneth E. Jansen           for(i =0; i< nomodule.numResistSrfs ; i++) nomodule.ValueListResist[i+1] = vec[i];
85559599516SKenneth E. Jansen           vec.erase(vec.begin(),vec.end());
85659599516SKenneth E. Jansen       }
857513954efSKenneth E. Jansen       if( (nomodule.numImpSrfs=inp.GetValue("Number of Impedance Surfaces")) ){
85859599516SKenneth E. Jansen           ivec = inp.GetValue("List of Impedance Surfaces");
85959599516SKenneth E. Jansen           for(i=0;i<MAXSURF+1; i++) nomodule.nsrflistImp[i] = 0;
86059599516SKenneth E. Jansen           for(i=0; i< nomodule.numImpSrfs; i++){
86159599516SKenneth E. Jansen               nomodule.nsrflistImp[i+1] = ivec[i];
86259599516SKenneth E. Jansen           }
86359599516SKenneth E. Jansen           if ( (string)inp.GetValue("Impedance From File") == "True")
86459599516SKenneth E. Jansen               nomodule.impfile = 1; else nomodule.impfile = 0;
86559599516SKenneth E. Jansen       }
866513954efSKenneth E. Jansen       if( (nomodule.numRCRSrfs=inp.GetValue("Number of RCR Surfaces")) ){
86759599516SKenneth E. Jansen           ivec = inp.GetValue("List of RCR Surfaces");
86859599516SKenneth E. Jansen           for(i=0;i<MAXSURF+1; i++) nomodule.nsrflistRCR[i] = 0;
86959599516SKenneth E. Jansen           for(i=0; i< nomodule.numRCRSrfs; i++){
87059599516SKenneth E. Jansen               nomodule.nsrflistRCR[i+1] = ivec[i];
87159599516SKenneth E. Jansen           }
87259599516SKenneth E. Jansen           if ( (string)inp.GetValue("RCR Values From File") == "True")
87359599516SKenneth E. Jansen               nomodule.ircrfile = 1; else nomodule.ircrfile = 0;
87459599516SKenneth E. Jansen       }
87559599516SKenneth E. Jansen     }
87659599516SKenneth E. Jansen     nomodule.ideformwall = 0;
87759599516SKenneth E. Jansen     if((string)inp.GetValue("Deformable Wall")=="True"){
87859599516SKenneth E. Jansen         nomodule.ideformwall = 1;
87959599516SKenneth E. Jansen         nomodule.rhovw = inp.GetValue("Density of Vessel Wall");
88059599516SKenneth E. Jansen         nomodule.thicknessvw = inp.GetValue("Thickness of Vessel Wall");
88159599516SKenneth E. Jansen         nomodule.evw = inp.GetValue("Young Mod of Vessel Wall");
88259599516SKenneth E. Jansen         nomodule.rnuvw = inp.GetValue("Poisson Ratio of Vessel Wall");
88359599516SKenneth E. Jansen         nomodule.rshearconstantvw = inp.GetValue("Shear Constant of Vessel Wall");
88459599516SKenneth E. Jansen         if((string)inp.GetValue("Wall Mass Matrix for LHS") == "True") nomodule.iwallmassfactor = 1;
88559599516SKenneth E. Jansen         else nomodule.iwallmassfactor = 0;
88659599516SKenneth E. Jansen         if((string)inp.GetValue("Wall Stiffness Matrix for LHS") == "True") nomodule.iwallstiffactor = 1;
88759599516SKenneth E. Jansen         else nomodule.iwallstiffactor = 0;
88859599516SKenneth E. Jansen     }
88959599516SKenneth E. Jansen     nomodule.iviscflux = 1;
89059599516SKenneth E. Jansen     if((string)inp.GetValue("Viscous Flux Flag") == "True") nomodule.iviscflux = 1;
89159599516SKenneth E. Jansen     if((string)inp.GetValue("Viscous Flux Flag") == "False") nomodule.iviscflux = 0;
89259599516SKenneth E. Jansen 
89359599516SKenneth E. Jansen 
89459599516SKenneth E. Jansen     // Scaling Parameters Keywords
89559599516SKenneth E. Jansen 
89659599516SKenneth E. Jansen     outpar.ro = inp.GetValue("Density");
89759599516SKenneth E. Jansen     outpar.vel = inp.GetValue("Velocity");
89859599516SKenneth E. Jansen     outpar.press = inp.GetValue("Pressure");
89959599516SKenneth E. Jansen     outpar.temper = inp.GetValue("Temperature");
90059599516SKenneth E. Jansen     outpar.entrop = inp.GetValue("Entropy");
90159599516SKenneth E. Jansen 
90259599516SKenneth E. Jansen     // Step Sequencing
90359599516SKenneth E. Jansen 
90459599516SKenneth E. Jansen 
90559599516SKenneth E. Jansen     ivec = inp.GetValue("Step Construction");
90659599516SKenneth E. Jansen     sequence.seqsize = ivec.size();
90759599516SKenneth E. Jansen     if( sequence.seqsize > 100 || sequence.seqsize < 2 )
90859599516SKenneth E. Jansen      cerr<<"Sequence size must be between 2 and 100 "<<endl;
90959599516SKenneth E. Jansen 
91059599516SKenneth E. Jansen     for(i=0; i< sequence.seqsize; i++)
91159599516SKenneth E. Jansen       sequence.stepseq[i] = ivec[i];
91259599516SKenneth E. Jansen 
91359599516SKenneth E. Jansen   }
91459599516SKenneth E. Jansen   catch ( exception &e ) {
91559599516SKenneth E. Jansen     cout << endl << "Input exception: " << e.what() << endl << endl;
91659599516SKenneth E. Jansen     ierr = 001;
91759599516SKenneth E. Jansen     print_error_code(ierr);
91859599516SKenneth E. Jansen     return ierr;
91959599516SKenneth E. Jansen   }
92059599516SKenneth E. Jansen 
92159599516SKenneth E. Jansen   return ierr;
92259599516SKenneth E. Jansen 
92359599516SKenneth E. Jansen }
92459599516SKenneth E. Jansen 
92559599516SKenneth E. Jansen void print_error_code(int ierr) {
92659599516SKenneth E. Jansen   /*
92759599516SKenneth E. Jansen     Return Error codes:
92859599516SKenneth E. Jansen     0xx         Input error
92959599516SKenneth E. Jansen     1xx         Solution Control
93059599516SKenneth E. Jansen     105         Turbulence Model not supported
93159599516SKenneth E. Jansen 
93259599516SKenneth E. Jansen     2xx         Material Properties
93359599516SKenneth E. Jansen 
93459599516SKenneth E. Jansen     3xx         Output Control
93559599516SKenneth E. Jansen 
93659599516SKenneth E. Jansen     4xx         Discretization Control
93759599516SKenneth E. Jansen 
93859599516SKenneth E. Jansen     5xx         Scaling Parameters
93959599516SKenneth E. Jansen 
94059599516SKenneth E. Jansen     6xx         Linear Solver Control
94159599516SKenneth E. Jansen     601         linear solver type not supported
94259599516SKenneth E. Jansen   */
94359599516SKenneth E. Jansen   cout << endl << endl << "Input error detected: " << endl << endl;
94459599516SKenneth E. Jansen   if ( ierr == 001 ) {
94559599516SKenneth E. Jansen     cout << endl << "Input Directive not understood" << endl << endl;
94659599516SKenneth E. Jansen   }
94759599516SKenneth E. Jansen   if ( ierr == 105 ) {
94859599516SKenneth E. Jansen     cout << endl << "Turbulence Model Not Supported" << endl << endl;
94959599516SKenneth E. Jansen   }
95059599516SKenneth E. Jansen   if ( ierr == 601 ) {
95159599516SKenneth E. Jansen     cout << endl << "Linear Solver Type Not Supported" << endl << endl;
95259599516SKenneth E. Jansen   }
95359599516SKenneth E. Jansen 
95459599516SKenneth E. Jansen }
955