xref: /phasta/phSolver/common/input_fform.cc (revision a0d6c46256bdc32210d2313cacee245811b1d743)
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 
input_fform(phSolver::Input & inp)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");
123*a0d6c462SKenneth 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;
4460deefd04SKenneth E. Jansen       ctrlvar.xvel_ini = inp.GetValue("Initial X Velocity");
4470deefd04SKenneth E. Jansen       ctrlvar.yvel_ini = inp.GetValue("Initial Y Velocity");
4480deefd04SKenneth E. Jansen       ctrlvar.zvel_ini = inp.GetValue("Initial Z Velocity");
4490deefd04SKenneth E. Jansen       ctrlvar.temp_ini = inp.GetValue("Initial Temp");
4500deefd04SKenneth E. Jansen       ctrlvar.pres_ini = inp.GetValue("Initial Pressure");
45159599516SKenneth E. Jansen     }
45259599516SKenneth E. Jansen     else if ( (string)inp.GetValue("Body Force Option") == "Cooling Initial Condition" ) {
45359599516SKenneth E. Jansen       for(i=0; i< levlset.iLSet +1 ; i++) matdat.matflg[i][4] = 5;
45459599516SKenneth E. Jansen     }
45559599516SKenneth E. Jansen 
45659599516SKenneth E. Jansen     // the following block of stuff is common to all cooling type sponges.
45759599516SKenneth E. Jansen     // Specific stuff belongs in the conditionals above
45859599516SKenneth E. Jansen 
45959599516SKenneth E. Jansen     if(matdat.matflg[0][4] >=4) {
46059599516SKenneth E. Jansen       spongevar.betamax = inp.GetValue("Maximum Value of Sponge Parameter");
46159599516SKenneth E. Jansen       spongevar.zinsponge = inp.GetValue("Inflow Cooling Sponge Ends at z");
46259599516SKenneth E. Jansen       spongevar.zoutsponge= inp.GetValue("Outflow Cooling Sponge Begins at z");
46359599516SKenneth E. Jansen       spongevar.radsponge = inp.GetValue("Radial Cooling Sponge Begins at r");
46459599516SKenneth E. Jansen       spongevar.grthosponge = inp.GetValue("Sponge Growth Coefficient Outflow");
46559599516SKenneth E. Jansen       spongevar.grthisponge = inp.GetValue("Sponge Growth Coefficient Inflow");
46659599516SKenneth E. Jansen 
46759599516SKenneth E. Jansen 
46859599516SKenneth E. Jansen       spongevar.spongecontinuity = 0;
46959599516SKenneth E. Jansen       spongevar.spongemomentum1 = 0;
47059599516SKenneth E. Jansen       spongevar.spongemomentum2 = 0;
47159599516SKenneth E. Jansen       spongevar.spongemomentum3 = 0;
47259599516SKenneth E. Jansen       spongevar.spongeenergy = 0;
47359599516SKenneth E. Jansen 
47459599516SKenneth E. Jansen       if((string)inp.GetValue("Sponge for Continuity Equation") == "True")
47559599516SKenneth E. Jansen 	spongevar.spongecontinuity = 1;
47659599516SKenneth E. Jansen       if((string)inp.GetValue("Sponge for x Momentum Equation") == "True")
47759599516SKenneth E. Jansen 	spongevar.spongemomentum1 = 1;
47859599516SKenneth E. Jansen       if((string)inp.GetValue("Sponge for y Momentum Equation") == "True")
47959599516SKenneth E. Jansen 	spongevar.spongemomentum2 = 1;
48059599516SKenneth E. Jansen       if((string)inp.GetValue("Sponge for z Momentum Equation") == "True")
48159599516SKenneth E. Jansen 	spongevar.spongemomentum3 = 1;
48259599516SKenneth E. Jansen       if((string)inp.GetValue("Sponge for Energy Equation") == "True")
48359599516SKenneth E. Jansen 	spongevar.spongeenergy = 1;
48459599516SKenneth E. Jansen 
48559599516SKenneth E. Jansen     }
48659599516SKenneth E. Jansen 
48759599516SKenneth E. Jansen     vec = inp.GetValue("Body Force");
48859599516SKenneth E. Jansen     for(i=0; i< levlset.iLSet +1 ; i++){
48959599516SKenneth E. Jansen       matdat.datmat[i][4][0] = vec[0+i*3];
49059599516SKenneth E. Jansen       matdat.datmat[i][4][1] = vec[1+i*3];
49159599516SKenneth E. Jansen       matdat.datmat[i][4][2] = vec[2+i*3];
49259599516SKenneth E. Jansen     }
49359599516SKenneth E. Jansen     vec.erase(vec.begin(),vec.end());
49459599516SKenneth E. Jansen 
49559599516SKenneth E. Jansen     vec = inp.GetValue("Body Force Pressure Gradient");
49659599516SKenneth E. Jansen     for(i=0; i< levlset.iLSet +1 ; i++){
49759599516SKenneth E. Jansen       matdat.datmat[i][6][0] = vec[0+i*3];
49859599516SKenneth E. Jansen       matdat.datmat[i][6][1] = vec[1+i*3];
49959599516SKenneth E. Jansen       matdat.datmat[i][6][2] = vec[2+i*3];
50059599516SKenneth E. Jansen     }
50159599516SKenneth E. Jansen     vec.erase(vec.begin(),vec.end());
50259599516SKenneth E. Jansen 
50359599516SKenneth E. Jansen     if ( (string)inp.GetValue("Surface Tension Option") == "No" ){
50459599516SKenneth E. Jansen         genpar.isurf = 0;
50559599516SKenneth E. Jansen     }
50659599516SKenneth E. Jansen     else if ((string)inp.GetValue("Surface Tension Option") == "Yes" ){
50759599516SKenneth E. Jansen         genpar.isurf = 1;
50859599516SKenneth E. Jansen     }
50959599516SKenneth E. Jansen     else {
51059599516SKenneth E. Jansen       cout << " Surface Tension: Only Legal Values (Yes, No) ";
51159599516SKenneth E. Jansen       cout << endl;
51259599516SKenneth E. Jansen       exit(1);
51359599516SKenneth E. Jansen     }
51459599516SKenneth E. Jansen     if( genpar.isurf > 0) {
51559599516SKenneth E. Jansen       genpar.Bo = inp.GetValue("Bond Number");
51659599516SKenneth E. Jansen     }
51759599516SKenneth E. Jansen 
51859599516SKenneth E. Jansen     genpar.EntropyPressure = inp.GetValue("Entropy Form of Pressure Constraint on Weight Space");
51959599516SKenneth E. Jansen 
52059599516SKenneth E. Jansen 
52159599516SKenneth E. Jansen     if ( (string)inp.GetValue("Rotating Frame of Reference") == "True" ) {
52259599516SKenneth E. Jansen       matdat.matflg[0][5] = 1;
52359599516SKenneth E. Jansen       vec = inp.GetValue("Rotating Frame of Reference Rotation Rate");
52459599516SKenneth E. Jansen       matdat.datmat[0][5][0] = vec[0];
52559599516SKenneth E. Jansen       matdat.datmat[0][5][1] = vec[1];
52659599516SKenneth E. Jansen       matdat.datmat[0][5][2] = vec[2];
52759599516SKenneth E. Jansen       vec.erase(vec.begin(),vec.end());
52859599516SKenneth E. Jansen     }
52959599516SKenneth E. Jansen     else {
53059599516SKenneth E. Jansen       matdat.matflg[0][5] = 0;
53159599516SKenneth E. Jansen       matdat.datmat[0][5][0] = 0.;
53259599516SKenneth E. Jansen       matdat.datmat[0][5][1] = 0.;
53359599516SKenneth E. Jansen       matdat.datmat[0][5][2] = 0.;
53459599516SKenneth E. Jansen     }
53559599516SKenneth E. Jansen 
53659599516SKenneth E. Jansen 
53759599516SKenneth E. Jansen     //Linear Solver parameters
538513954efSKenneth E. Jansen      conpar.usingpetsc=0;  // default is to have PETSc off
539efb88323SKenneth E. Jansen       incomp.iprjFlag = 0; incomp.ipresPrjFlag=0; inpdat.svLSFlag=0;
54079f1763eSKenneth E. Jansen       inpdat.leslib=0;
541efb88323SKenneth E. Jansen     if( (string)inp.GetValue("Solver Type") =="svLS" ){
542efb88323SKenneth E. Jansen       inpdat.svLSFlag = 1; }
54359599516SKenneth E. Jansen     if( (string)inp.GetValue("Solver Type") =="ACUSIM with P Projection" ){
54479f1763eSKenneth E. Jansen       inpdat.leslib=1; incomp.iprjFlag = 0; incomp.ipresPrjFlag=1;}
54559599516SKenneth E. Jansen     else if ( (string)inp.GetValue("Solver Type") =="ACUSIM" ){
54679f1763eSKenneth E. Jansen       inpdat.leslib=1; incomp.iprjFlag = 0; incomp.ipresPrjFlag=0;}
54759599516SKenneth E. Jansen     else if( (string)inp.GetValue("Solver Type") =="ACUSIM with Velocity Projection" ){
54879f1763eSKenneth E. Jansen       inpdat.leslib=1; incomp.iprjFlag = 1; incomp.ipresPrjFlag=0;}
54959599516SKenneth E. Jansen     else if( (string)inp.GetValue("Solver Type") =="ACUSIM with Full Projection" ){
55079f1763eSKenneth E. Jansen       inpdat.leslib=1; incomp.iprjFlag = 1; incomp.ipresPrjFlag=1;}
55159599516SKenneth E. Jansen     else if( (string)inp.GetValue("Solver Type") =="GMRES Matrix Free"){
55259599516SKenneth E. Jansen       inpdat.impl[0] += 10*solflow;}
55359599516SKenneth E. Jansen     else if( (string)inp.GetValue("Solver Type") =="GMRES EBE"){
55459599516SKenneth E. Jansen       inpdat.impl[0] += 20*solflow;}
555513954efSKenneth E. Jansen     else if( (string)inp.GetValue("Solver Type") =="PETSc"){
556513954efSKenneth E. Jansen       conpar.usingpetsc=1;}
55759599516SKenneth E. Jansen     //GMRES sparse is assumed default and has the value of 10, MFG 20,
55859599516SKenneth E. Jansen     // EBE 30
55959599516SKenneth E. Jansen 
56059599516SKenneth E. Jansen 
56159599516SKenneth E. Jansen     //    inpdat.niter[0] = inp.GetValue("Number of Solves per Time Step");
56259599516SKenneth E. Jansen     solpar.nGMRES = inp.GetValue("Number of GMRES Sweeps per Solve");
56359599516SKenneth E. Jansen     solpar.Kspace = inp.GetValue("Number of Krylov Vectors per GMRES Sweep");
56459599516SKenneth E. Jansen     inpdat.LHSupd[0] = inp.GetValue("Number of Solves per Left-hand-side Formation");
56559599516SKenneth E. Jansen     inpdat.epstol[0] = inp.GetValue("Tolerance on Momentum Equations");
56659599516SKenneth E. Jansen     incomp.prestol = inp.GetValue("Tolerance on ACUSIM Pressure Projection");
56759599516SKenneth E. Jansen     incomp.minIters = inp.GetValue("Minimum Number of Iterations per Nonlinear Iteration");
56859599516SKenneth E. Jansen     incomp.maxIters = inp.GetValue("Maximum Number of Iterations per Nonlinear Iteration");
56959599516SKenneth E. Jansen     inpdat.deltol[0][0]=inp.GetValue("Velocity Delta Ratio");
57059599516SKenneth E. Jansen     inpdat.deltol[1][0]=inp.GetValue("Pressure Delta Ratio");
57159599516SKenneth E. Jansen     incomp.nPrjs = inp.GetValue("Number of Velocity Projection Vectors");
57259599516SKenneth E. Jansen     incomp.nPresPrjs = inp.GetValue("Number of Pressure Projection Vectors");
57359599516SKenneth E. Jansen     incomp.iverbose = inp.GetValue("ACUSIM Verbosity Level");
57459599516SKenneth E. Jansen 
57559599516SKenneth E. Jansen     if(solheat==1){
57659599516SKenneth E. Jansen       inpdat.epstol[1]=inp.GetValue("Temperature Solver Tolerance");
57759599516SKenneth E. Jansen       inpdat.LHSupd[1]=inp.GetValue("Number of Solves of Temperature per Left-hand-side Formation");
57859599516SKenneth E. Jansen     }
57959599516SKenneth E. Jansen 
58059599516SKenneth E. Jansen     // The following is where you should put any inputs that are able to
58159599516SKenneth E. Jansen     // input differently for each scalar.  It is a little tedious in the code
58259599516SKenneth E. Jansen     // but it should make the solver.inp easier to understand. Note this will
58359599516SKenneth E. Jansen     // require some care with regression tests.
58459599516SKenneth E. Jansen 
58559599516SKenneth E. Jansen 
58659599516SKenneth E. Jansen     if(solscalr>0){
58759599516SKenneth E. Jansen       inpdat.epstol[2]=inp.GetValue("Scalar 1 Solver Tolerance");
58859599516SKenneth E. Jansen       inpdat.LHSupd[2]=inp.GetValue("Number of Solves of Scalar 1 per Left-hand-side Formation");
58959599516SKenneth E. Jansen 
59059599516SKenneth E. Jansen       vec = inp.GetValue("Limit Scalar 1");
59159599516SKenneth E. Jansen       for(i=0; i<3 ; i++){
59259599516SKenneth E. Jansen         turbvar.ylimit[5][i] = vec[i];
59359599516SKenneth E. Jansen       }
59459599516SKenneth E. Jansen       vec.erase(vec.begin(),vec.end());
59559599516SKenneth E. Jansen     }
59659599516SKenneth E. Jansen 
59759599516SKenneth E. Jansen     if(solscalr>1){
59859599516SKenneth E. Jansen       inpdat.epstol[3]=inp.GetValue("Scalar 2 Solver Tolerance");
59959599516SKenneth E. Jansen       inpdat.LHSupd[3]=inp.GetValue("Number of Solves of Scalar 2 per Left-hand-side Formation");
60059599516SKenneth E. Jansen 
60159599516SKenneth E. Jansen       vec = inp.GetValue("Limit Scalar 2");
60259599516SKenneth E. Jansen       for(i=0; i<3 ; i++){
60359599516SKenneth E. Jansen         turbvar.ylimit[6][i] = vec[i];
60459599516SKenneth E. Jansen       }
60559599516SKenneth E. Jansen       vec.erase(vec.begin(),vec.end());
60659599516SKenneth E. Jansen     }
60759599516SKenneth E. Jansen 
60859599516SKenneth E. Jansen     if(solscalr>2){
60959599516SKenneth E. Jansen       inpdat.epstol[4]=inp.GetValue("Scalar 3 Solver Tolerance");
61059599516SKenneth E. Jansen       inpdat.LHSupd[4]=inp.GetValue("Number of Solves of Scalar 3 per Left-hand-side Formation");
61159599516SKenneth E. Jansen 
61259599516SKenneth E. Jansen       vec = inp.GetValue("Limit Scalar 3");
61359599516SKenneth E. Jansen       for(i=0; i<3 ; i++){
61459599516SKenneth E. Jansen         turbvar.ylimit[7][i] = vec[i];
61559599516SKenneth E. Jansen       }
61659599516SKenneth E. Jansen       vec.erase(vec.begin(),vec.end());
61759599516SKenneth E. Jansen     }
61859599516SKenneth E. Jansen 
61959599516SKenneth E. Jansen     if(solscalr>3){
62059599516SKenneth E. Jansen       inpdat.epstol[5]=inp.GetValue("Scalar 4 Solver Tolerance");
62159599516SKenneth E. Jansen       inpdat.LHSupd[5]=inp.GetValue("Number of Solves of Scalar 4 per Left-hand-side Formation");
62259599516SKenneth E. Jansen 
62359599516SKenneth E. Jansen       vec = inp.GetValue("Limit Scalar 4");
62459599516SKenneth E. Jansen       for(i=0; i<3 ; i++){
62559599516SKenneth E. Jansen         turbvar.ylimit[8][i] = vec[i];
62659599516SKenneth E. Jansen       }
62759599516SKenneth E. Jansen       vec.erase(vec.begin(),vec.end());
62859599516SKenneth E. Jansen     }
62959599516SKenneth E. Jansen 
63059599516SKenneth E. Jansen     // DISCRETIZATION CONTROL
63159599516SKenneth E. Jansen 
63259599516SKenneth E. Jansen     genpar.ipord = inp.GetValue("Basis Function Order");
63359599516SKenneth E. Jansen     if((string)inp.GetValue("Time Integration Rule") == "First Order")
63459599516SKenneth E. Jansen       inpdat.rhoinf[0] = -1 ;
63559599516SKenneth E. Jansen     else inpdat.rhoinf[0] = (double)inp.GetValue("Time Integration Rho Infinity");
63659599516SKenneth E. Jansen     if((string)inp.GetValue("Predictor at Start of Step")=="Same Velocity")
63759599516SKenneth E. Jansen       genpar.ipred = 1;
63859599516SKenneth E. Jansen     if((string)inp.GetValue("Predictor at Start of Step")=="Zero Acceleration")
63959599516SKenneth E. Jansen       genpar.ipred = 2;
64059599516SKenneth E. Jansen     if((string)inp.GetValue("Predictor at Start of Step")=="Same Acceleration")
64159599516SKenneth E. Jansen       genpar.ipred = 3;
64259599516SKenneth E. Jansen     if((string)inp.GetValue("Predictor at Start of Step")=="Same Delta")
64359599516SKenneth E. Jansen       genpar.ipred = 4;
64459599516SKenneth E. Jansen 
64559599516SKenneth E. Jansen     if((string)inp.GetValue("Weak Form") == "Galerkin")
64659599516SKenneth E. Jansen       solpar.ivart = 1;
64759599516SKenneth E. Jansen     if((string)inp.GetValue("Weak Form") == "SUPG")
64859599516SKenneth E. Jansen       solpar.ivart = 2;
64959599516SKenneth E. Jansen 
65059599516SKenneth E. Jansen     if((string)inp.GetValue("Flow Advection Form") == "Convective")
65159599516SKenneth E. Jansen       solpar.iconvflow = 2;
65259599516SKenneth E. Jansen     else if((string)inp.GetValue("Flow Advection Form") == "Conservative")
65359599516SKenneth E. Jansen       solpar.iconvflow = 1;
65459599516SKenneth E. Jansen     if((string)inp.GetValue("Scalar Advection Form") == "Convective")
65559599516SKenneth E. Jansen       solpar.iconvsclr = 2;
65659599516SKenneth E. Jansen     else if((string)inp.GetValue("Scalar Advection Form") == "Conservative")
65759599516SKenneth E. Jansen       solpar.iconvsclr = 1;
65859599516SKenneth E. Jansen     if((string)inp.GetValue("Use Conservative Scalar Convection Velocity") == "True")
65959599516SKenneth E. Jansen       sclrs.consrv_sclr_conv_vel = 1;
66059599516SKenneth E. Jansen     else if((string)inp.GetValue("Use Conservative Scalar Convection Velocity") == "False")
66159599516SKenneth E. Jansen       sclrs.consrv_sclr_conv_vel = 0;
66259599516SKenneth E. Jansen     // TAU INPUT
66359599516SKenneth E. Jansen     if((string)inp.GetValue("Tau Matrix") == "Diagonal-Shakib")
66459599516SKenneth E. Jansen       genpar.itau = 0;
66559599516SKenneth E. Jansen     else  if((string)inp.GetValue("Tau Matrix") == "Diagonal-Franca")
66659599516SKenneth E. Jansen       genpar.itau =1;
66759599516SKenneth E. Jansen     else if((string)inp.GetValue("Tau Matrix") == "Diagonal-Jansen(dev)")
66859599516SKenneth E. Jansen       genpar.itau = 2;
66959599516SKenneth E. Jansen     else if((string)inp.GetValue("Tau Matrix") == "Diagonal-Compressible")
67059599516SKenneth E. Jansen       genpar.itau = 3;
67159599516SKenneth E. Jansen     else if((string)inp.GetValue("Tau Matrix") == "Matrix-Mallet")
67259599516SKenneth E. Jansen       genpar.itau = 10;
67359599516SKenneth E. Jansen     else if((string)inp.GetValue("Tau Matrix") == "Matrix-Modal")
67459599516SKenneth E. Jansen       genpar.itau = 11;
67559599516SKenneth E. Jansen 
67659599516SKenneth E. Jansen     genpar.dtsfct = inp.GetValue("Tau Time Constant");
67759599516SKenneth E. Jansen     genpar.taucfct = inp.GetValue("Tau C Scale Factor");
67859599516SKenneth E. Jansen 
679513954efSKenneth E. Jansen 	genpar.iLHScond = inp.GetValue("LHS BC heat flux enable");
680513954efSKenneth E. Jansen 
68159599516SKenneth E. Jansen     // FLOW DISCONTINUITY CAPTURING
68259599516SKenneth E. Jansen 
68359599516SKenneth E. Jansen       if((string)inp.GetValue("Discontinuity Capturing") == "Off") solpar.iDC = 0;
68459599516SKenneth E. Jansen     else if((string)inp.GetValue("Discontinuity Capturing") == "DC-mallet") solpar.iDC = 1;
68559599516SKenneth E. Jansen     else if((string)inp.GetValue("Discontinuity Capturing") == "DC-quadratic") solpar.iDC = 2;
68659599516SKenneth E. Jansen    else if((string)inp.GetValue("Discontinuity Capturing") == "DC-minimum") solpar.iDC = 3;
68759599516SKenneth E. Jansen     else {
68859599516SKenneth E. Jansen       cout<< "Condition not defined for Discontinuity Capturing \n ";
68959599516SKenneth E. Jansen       exit(1);
69059599516SKenneth E. Jansen     }
69159599516SKenneth E. Jansen 
69259599516SKenneth E. Jansen     // SCALAR DISCONTINUITY CAPTURING
69359599516SKenneth E. Jansen 
69459599516SKenneth E. Jansen       vector<int> ivec = inp.GetValue("Scalar Discontinuity Capturing");
69559599516SKenneth E. Jansen       for(i=0; i< 2; i++)  solpar.idcsclr[i] = ivec[i];
69659599516SKenneth E. Jansen       ivec.erase(ivec.begin(),ivec.end());
69759599516SKenneth E. Jansen 
69859599516SKenneth E. Jansen 
69959599516SKenneth E. Jansen //        if((string)inp.GetValue("Scalar Discontinuity Capturing") == "No") solpar.idcsclr = 0;
70059599516SKenneth E. Jansen //      else if((string)inp.GetValue("Scalar Discontinuity Capturing") == "1") solpar.idcsclr = 1;
70159599516SKenneth E. Jansen //   else if((string)inp.GetValue("Scalar Discontinuity Capturing") == "2") solpar.idcsclr = 2;
70259599516SKenneth E. Jansen //   else {
70359599516SKenneth E. Jansen //        cout<< "Condition not defined for Scalar Discontinuity Capturing \n ";
70459599516SKenneth E. Jansen //        exit(1);
70559599516SKenneth E. Jansen //      }
70659599516SKenneth E. Jansen     if((string)inp.GetValue("Include Viscous Correction in Stabilization") == "True")
70759599516SKenneth E. Jansen       {
70859599516SKenneth E. Jansen         if(genpar.ipord == 1 ) genpar.idiff = 1;
70959599516SKenneth E. Jansen         else genpar.idiff = 2;
71059599516SKenneth E. Jansen       }
71159599516SKenneth E. Jansen     else { genpar.idiff = 0;}
71259599516SKenneth E. Jansen 
713513954efSKenneth E. Jansen // ------ Only For duct S duct Project ------------------------------------------------
71459599516SKenneth E. Jansen     genpar.irampViscOutlet = (int)inp.GetValue("Ramp Up Viscosity Near Outlet");
71559599516SKenneth E. Jansen 
71659599516SKenneth E. Jansen     genpar.istretchOutlet = (int)inp.GetValue("Stretch X Coordinate Near Outlet");
717513954efSKenneth E. Jansen // -----------------------------------------------------------------------------------
71859599516SKenneth E. Jansen 
71959599516SKenneth E. Jansen     genpar.iremoveStabTimeTerm = (int)inp.GetValue("Remove Time Term from Stabilization");
72059599516SKenneth E. Jansen 
72159599516SKenneth E. Jansen     timdat.flmpl = inp.GetValue("Lumped Mass Fraction on Left-hand-side");
72259599516SKenneth E. Jansen     timdat.flmpr = inp.GetValue("Lumped Mass Fraction on Right-hand-side");
72359599516SKenneth E. Jansen 
72459599516SKenneth E. Jansen     timdat.iCFLworst = 0;
72559599516SKenneth E. Jansen     if((string)inp.GetValue("Dump CFL") == "True")
72659599516SKenneth E. Jansen       timdat.iCFLworst = 1;
72759599516SKenneth E. Jansen 
72859599516SKenneth E. Jansen     intdat.intg[0][0]=inp.GetValue("Quadrature Rule on Interior");
72959599516SKenneth E. Jansen     intdat.intg[0][1]=inp.GetValue("Quadrature Rule on Boundary");
73059599516SKenneth E. Jansen     genpar.ibksiz = inp.GetValue("Number of Elements Per Block");
73159599516SKenneth E. Jansen 
73259599516SKenneth E. Jansen     ((string)inp.GetValue("Turn Off Source Terms for Scalars")
73359599516SKenneth E. Jansen          == "True") ? sclrs.nosource = 1 : sclrs.nosource = 0;
73459599516SKenneth E. Jansen     sclrs.tdecay=inp.GetValue("Decay Multiplier for Scalars");
73559599516SKenneth E. Jansen 
73659599516SKenneth E. Jansen     // TURBULENCE MODELING PARAMETER
73759599516SKenneth E. Jansen     int tpturb = turbvari.iles-turbvari.irans;
73859599516SKenneth E. Jansen     int ifrule;
73959599516SKenneth E. Jansen     if( tpturb != 0 ){
74059599516SKenneth E. Jansen 
74159599516SKenneth E. Jansen 
74259599516SKenneth E. Jansen       turbvari.nohomog =inp.GetValue("Number of Homogenous Directions");
74359599516SKenneth E. Jansen 
74459599516SKenneth E. Jansen       if((string)inp.GetValue("Turbulence Wall Model Type") == "Slip Velocity") turbvar.itwmod = 1;
74559599516SKenneth E. Jansen       else if((string)inp.GetValue("Turbulence Wall Model Type") == "Effective Viscosity") turbvar.itwmod = 2;
74659599516SKenneth E. Jansen       else  turbvar.itwmod = 0;
74759599516SKenneth E. Jansen       if (turbvari.irans < 0) turbvar.itwmod = turbvar.itwmod*(-1);
74859599516SKenneth E. Jansen       ifrule  = inp.GetValue("Velocity Averaging Steps");
74959599516SKenneth E. Jansen       turbvar.wtavei =(ifrule >0)? 1.0/ifrule : -1.0/ifrule;
75059599516SKenneth E. Jansen 
75159599516SKenneth E. Jansen       if(turbvari.iles == 1){
75259599516SKenneth E. Jansen 
75359599516SKenneth E. Jansen         if((string)inp.GetValue("Dynamic Model Type") == "Bardina") turbvari.iles += 10;
75459599516SKenneth E. Jansen         else if((string)inp.GetValue("Dynamic Model Type") == "Projection") turbvari.iles += 20;
75559599516SKenneth E. Jansen 
75659599516SKenneth E. Jansen         ifrule = inp.GetValue("Filter Integration Rule");
75759599516SKenneth E. Jansen         turbvari.iles += ifrule-1;
75859599516SKenneth E. Jansen         ifrule = inp.GetValue("Dynamic Model Averaging Steps");
75959599516SKenneth E. Jansen         turbvar.dtavei = (ifrule >0)? 1.0/ifrule : -1.0/ifrule;
76059599516SKenneth E. Jansen         turbvar.fwr1 = inp.GetValue("Filter Width Ratio");
76159599516SKenneth E. Jansen         turbvar.flump = inp.GetValue("Lumping Factor for Filter");
76259599516SKenneth E. Jansen 
76359599516SKenneth E. Jansen 
76459599516SKenneth E. Jansen         if ((string)inp.GetValue("Model Statistics") == "True" ) {
76559599516SKenneth E. Jansen           turbvari.modlstats = 1; }
76659599516SKenneth E. Jansen         else {
76759599516SKenneth E. Jansen           turbvari.modlstats = 0; }
76859599516SKenneth E. Jansen 
76959599516SKenneth E. Jansen         if ((string)inp.GetValue("Double Filter") == "True" ) {
77059599516SKenneth E. Jansen           turbvari.i2filt = 1; }
77159599516SKenneth E. Jansen         else {
77259599516SKenneth E. Jansen           turbvari.i2filt = 0; }
77359599516SKenneth E. Jansen 
77459599516SKenneth E. Jansen         if ((string)inp.GetValue("Model/SUPG Dissipation") == "True" ) {
77559599516SKenneth E. Jansen           turbvari.idis = 1; }
77659599516SKenneth E. Jansen         else {
77759599516SKenneth E. Jansen           turbvari.idis = 0; }
77859599516SKenneth E. Jansen 
77959599516SKenneth E. Jansen 
78059599516SKenneth E. Jansen         if((string)inp.GetValue("Dynamic Model Type") == "Standard") {
78159599516SKenneth E. Jansen 
78259599516SKenneth E. Jansen           if((string)inp.GetValue("Dynamic Sub-Model Type") == "None")
78359599516SKenneth E. Jansen             turbvari.isubmod = 0;
78459599516SKenneth E. Jansen           else if((string)inp.GetValue("Dynamic Sub-Model Type") =="DFWR")
78559599516SKenneth E. Jansen             turbvari.isubmod = 1;
78659599516SKenneth E. Jansen           else if((string)inp.GetValue("Dynamic Sub-Model Type") =="SUPG")
78759599516SKenneth E. Jansen             turbvari.isubmod = 2;
78859599516SKenneth E. Jansen         }
78959599516SKenneth E. Jansen         else if((string)inp.GetValue("Dynamic Model Type") == "Projection") {
79059599516SKenneth E. Jansen 
79159599516SKenneth E. Jansen           if((string)inp.GetValue("Projection Filter Type") == "Linear")
79259599516SKenneth E. Jansen             turbvari.ifproj = 0;
79359599516SKenneth E. Jansen           else if((string)inp.GetValue("Projection Filter Type") =="Quadratic")
79459599516SKenneth E. Jansen             turbvari.ifproj = 1;
79559599516SKenneth E. Jansen 
79659599516SKenneth E. Jansen           if((string)inp.GetValue("Dynamic Sub-Model Type") == "None")
79759599516SKenneth E. Jansen             turbvari.isubmod = 0;
79859599516SKenneth E. Jansen           else if((string)inp.GetValue("Dynamic Sub-Model Type") =="ConsistentProj")
79959599516SKenneth E. Jansen             turbvari.isubmod = 1;
80059599516SKenneth E. Jansen         }
80159599516SKenneth E. Jansen 
80259599516SKenneth E. Jansen       }
80359599516SKenneth E. Jansen     }
80459599516SKenneth E. Jansen 
80559599516SKenneth E. Jansen     // SPEBC MODELING PARAMETERS
80659599516SKenneth E. Jansen 
80759599516SKenneth E. Jansen     if ( (spebcvr.irscale = inp.GetValue("SPEBC Model Active")) >= 0 ){
80859599516SKenneth E. Jansen 
80959599516SKenneth E. Jansen       ifrule  = inp.GetValue("Velocity Averaging Steps");
81059599516SKenneth E. Jansen       turbvar.wtavei =(ifrule >0)? 1.0/ifrule : 1.0/inpdat.nstep[0];
81159599516SKenneth E. Jansen       spebcvr.intpres = inp.GetValue("Interpolate Pressure");
81259599516SKenneth E. Jansen       spebcvr.plandist = inp.GetValue("Distance between Planes");
81359599516SKenneth E. Jansen       spebcvr.thetag  = inp.GetValue("Theta Angle of Arc");
81459599516SKenneth E. Jansen       spebcvr.ds = inp.GetValue("Distance for Velocity Averaging");
81559599516SKenneth E. Jansen       spebcvr.tolerence = inp.GetValue("SPEBC Cylindrical Tolerance");
81659599516SKenneth E. Jansen       spebcvr.radcyl = inp.GetValue("Radius of recycle plane");
81759599516SKenneth E. Jansen       spebcvr.rbltin  = inp.GetValue("Inlet Boundary Layer Thickness");
81859599516SKenneth E. Jansen       spebcvr.rvscal  = inp.GetValue("Vertical Velocity Scale Factor");
81959599516SKenneth E. Jansen     }
82059599516SKenneth E. Jansen 
82159599516SKenneth E. Jansen     // CARDIOVASCULAR MODELING PARAMETERS
82259599516SKenneth E. Jansen     if ( (string)inp.GetValue("Time Varying Boundary Conditions From File") == "True")
82359599516SKenneth E. Jansen       nomodule.itvn = 1;
82459599516SKenneth E. Jansen     else
82559599516SKenneth E. Jansen       nomodule.itvn = 0;
82659599516SKenneth E. Jansen 
82759599516SKenneth E. Jansen     if ( nomodule.itvn ==1)
82859599516SKenneth E. Jansen       nomodule.bcttimescale = inp.GetValue("BCT Time Scale Factor");
82959599516SKenneth E. Jansen 
83059599516SKenneth E. Jansen     nomodule.ipvsq=0;
831513954efSKenneth E. Jansen     if( (nomodule.icardio = inp.GetValue("Number of Coupled Surfaces")) ){
83259599516SKenneth E. Jansen       if ( nomodule.icardio > MAXSURF ) {
83359599516SKenneth E. Jansen         cout << "Number of Coupled Surfaces > MAXSURF \n";
83459599516SKenneth E. Jansen         exit(1);
83559599516SKenneth E. Jansen       }
83659599516SKenneth E. Jansen       if ( (string)inp.GetValue("Pressure Coupling") == "None")
83759599516SKenneth E. Jansen         nomodule.ipvsq=0;
83859599516SKenneth E. Jansen       if ( (string)inp.GetValue("Pressure Coupling") == "Explicit")
83959599516SKenneth E. Jansen         nomodule.ipvsq=1;
84059599516SKenneth E. Jansen       if ( (string)inp.GetValue("Pressure Coupling") == "Implicit")
84159599516SKenneth E. Jansen         nomodule.ipvsq=2;
84259599516SKenneth E. Jansen       if ( (string)inp.GetValue("Pressure Coupling") == "P-Implicit")
84359599516SKenneth E. Jansen         nomodule.ipvsq=3;
84459599516SKenneth E. Jansen 
845513954efSKenneth E. Jansen       if( (nomodule.numResistSrfs=inp.GetValue("Number of Resistance Surfaces")) ){
84659599516SKenneth E. Jansen           ivec = inp.GetValue("List of Resistance Surfaces");
84759599516SKenneth E. Jansen           for(i=0;i<MAXSURF+1; i++) nomodule.nsrflistResist[i] = 0;
84859599516SKenneth E. Jansen           for(i=0; i< nomodule.numResistSrfs; i++){
84959599516SKenneth E. Jansen               nomodule.nsrflistResist[i+1] = ivec[i];
85059599516SKenneth E. Jansen           }
85159599516SKenneth E. Jansen           vec = inp.GetValue("Resistance Values");
85259599516SKenneth E. Jansen           for(i =0; i< MAXSURF+1 ; i++) nomodule.ValueListResist[i] = 0;
85359599516SKenneth E. Jansen           for(i =0; i< nomodule.numResistSrfs ; i++) nomodule.ValueListResist[i+1] = vec[i];
85459599516SKenneth E. Jansen           vec.erase(vec.begin(),vec.end());
85559599516SKenneth E. Jansen       }
856513954efSKenneth E. Jansen       if( (nomodule.numImpSrfs=inp.GetValue("Number of Impedance Surfaces")) ){
85759599516SKenneth E. Jansen           ivec = inp.GetValue("List of Impedance Surfaces");
85859599516SKenneth E. Jansen           for(i=0;i<MAXSURF+1; i++) nomodule.nsrflistImp[i] = 0;
85959599516SKenneth E. Jansen           for(i=0; i< nomodule.numImpSrfs; i++){
86059599516SKenneth E. Jansen               nomodule.nsrflistImp[i+1] = ivec[i];
86159599516SKenneth E. Jansen           }
86259599516SKenneth E. Jansen           if ( (string)inp.GetValue("Impedance From File") == "True")
86359599516SKenneth E. Jansen               nomodule.impfile = 1; else nomodule.impfile = 0;
86459599516SKenneth E. Jansen       }
865513954efSKenneth E. Jansen       if( (nomodule.numRCRSrfs=inp.GetValue("Number of RCR Surfaces")) ){
86659599516SKenneth E. Jansen           ivec = inp.GetValue("List of RCR Surfaces");
86759599516SKenneth E. Jansen           for(i=0;i<MAXSURF+1; i++) nomodule.nsrflistRCR[i] = 0;
86859599516SKenneth E. Jansen           for(i=0; i< nomodule.numRCRSrfs; i++){
86959599516SKenneth E. Jansen               nomodule.nsrflistRCR[i+1] = ivec[i];
87059599516SKenneth E. Jansen           }
87159599516SKenneth E. Jansen           if ( (string)inp.GetValue("RCR Values From File") == "True")
87259599516SKenneth E. Jansen               nomodule.ircrfile = 1; else nomodule.ircrfile = 0;
87359599516SKenneth E. Jansen       }
87459599516SKenneth E. Jansen     }
87559599516SKenneth E. Jansen     nomodule.ideformwall = 0;
87659599516SKenneth E. Jansen     if((string)inp.GetValue("Deformable Wall")=="True"){
87759599516SKenneth E. Jansen         nomodule.ideformwall = 1;
87859599516SKenneth E. Jansen         nomodule.rhovw = inp.GetValue("Density of Vessel Wall");
87959599516SKenneth E. Jansen         nomodule.thicknessvw = inp.GetValue("Thickness of Vessel Wall");
88059599516SKenneth E. Jansen         nomodule.evw = inp.GetValue("Young Mod of Vessel Wall");
88159599516SKenneth E. Jansen         nomodule.rnuvw = inp.GetValue("Poisson Ratio of Vessel Wall");
88259599516SKenneth E. Jansen         nomodule.rshearconstantvw = inp.GetValue("Shear Constant of Vessel Wall");
88359599516SKenneth E. Jansen         if((string)inp.GetValue("Wall Mass Matrix for LHS") == "True") nomodule.iwallmassfactor = 1;
88459599516SKenneth E. Jansen         else nomodule.iwallmassfactor = 0;
88559599516SKenneth E. Jansen         if((string)inp.GetValue("Wall Stiffness Matrix for LHS") == "True") nomodule.iwallstiffactor = 1;
88659599516SKenneth E. Jansen         else nomodule.iwallstiffactor = 0;
88759599516SKenneth E. Jansen     }
88859599516SKenneth E. Jansen     nomodule.iviscflux = 1;
88959599516SKenneth E. Jansen     if((string)inp.GetValue("Viscous Flux Flag") == "True") nomodule.iviscflux = 1;
89059599516SKenneth E. Jansen     if((string)inp.GetValue("Viscous Flux Flag") == "False") nomodule.iviscflux = 0;
89159599516SKenneth E. Jansen 
89259599516SKenneth E. Jansen 
89359599516SKenneth E. Jansen     // Scaling Parameters Keywords
89459599516SKenneth E. Jansen 
89559599516SKenneth E. Jansen     outpar.ro = inp.GetValue("Density");
89659599516SKenneth E. Jansen     outpar.vel = inp.GetValue("Velocity");
89759599516SKenneth E. Jansen     outpar.press = inp.GetValue("Pressure");
89859599516SKenneth E. Jansen     outpar.temper = inp.GetValue("Temperature");
89959599516SKenneth E. Jansen     outpar.entrop = inp.GetValue("Entropy");
90059599516SKenneth E. Jansen 
90159599516SKenneth E. Jansen     // Step Sequencing
90259599516SKenneth E. Jansen 
90359599516SKenneth E. Jansen 
90459599516SKenneth E. Jansen     ivec = inp.GetValue("Step Construction");
90559599516SKenneth E. Jansen     sequence.seqsize = ivec.size();
90659599516SKenneth E. Jansen     if( sequence.seqsize > 100 || sequence.seqsize < 2 )
90759599516SKenneth E. Jansen      cerr<<"Sequence size must be between 2 and 100 "<<endl;
90859599516SKenneth E. Jansen 
90959599516SKenneth E. Jansen     for(i=0; i< sequence.seqsize; i++)
91059599516SKenneth E. Jansen       sequence.stepseq[i] = ivec[i];
91159599516SKenneth E. Jansen 
91259599516SKenneth E. Jansen   }
91359599516SKenneth E. Jansen   catch ( exception &e ) {
91459599516SKenneth E. Jansen     cout << endl << "Input exception: " << e.what() << endl << endl;
91559599516SKenneth E. Jansen     ierr = 001;
91659599516SKenneth E. Jansen     print_error_code(ierr);
91759599516SKenneth E. Jansen     return ierr;
91859599516SKenneth E. Jansen   }
91959599516SKenneth E. Jansen 
92059599516SKenneth E. Jansen   return ierr;
92159599516SKenneth E. Jansen 
92259599516SKenneth E. Jansen }
92359599516SKenneth E. Jansen 
print_error_code(int ierr)92459599516SKenneth E. Jansen void print_error_code(int ierr) {
92559599516SKenneth E. Jansen   /*
92659599516SKenneth E. Jansen     Return Error codes:
92759599516SKenneth E. Jansen     0xx         Input error
92859599516SKenneth E. Jansen     1xx         Solution Control
92959599516SKenneth E. Jansen     105         Turbulence Model not supported
93059599516SKenneth E. Jansen 
93159599516SKenneth E. Jansen     2xx         Material Properties
93259599516SKenneth E. Jansen 
93359599516SKenneth E. Jansen     3xx         Output Control
93459599516SKenneth E. Jansen 
93559599516SKenneth E. Jansen     4xx         Discretization Control
93659599516SKenneth E. Jansen 
93759599516SKenneth E. Jansen     5xx         Scaling Parameters
93859599516SKenneth E. Jansen 
93959599516SKenneth E. Jansen     6xx         Linear Solver Control
94059599516SKenneth E. Jansen     601         linear solver type not supported
94159599516SKenneth E. Jansen   */
94259599516SKenneth E. Jansen   cout << endl << endl << "Input error detected: " << endl << endl;
94359599516SKenneth E. Jansen   if ( ierr == 001 ) {
94459599516SKenneth E. Jansen     cout << endl << "Input Directive not understood" << endl << endl;
94559599516SKenneth E. Jansen   }
94659599516SKenneth E. Jansen   if ( ierr == 105 ) {
94759599516SKenneth E. Jansen     cout << endl << "Turbulence Model Not Supported" << endl << endl;
94859599516SKenneth E. Jansen   }
94959599516SKenneth E. Jansen   if ( ierr == 601 ) {
95059599516SKenneth E. Jansen     cout << endl << "Linear Solver Type Not Supported" << endl << endl;
95159599516SKenneth E. Jansen   }
95259599516SKenneth E. Jansen 
95359599516SKenneth E. Jansen }
954