From 356ace3f2e17ca946ee909f5e79ed99291511394 Mon Sep 17 00:00:00 2001 From: hechao Date: Fri, 31 Dec 2021 11:20:05 +0800 Subject: [PATCH] =?UTF-8?q?PHengLEI2112=E7=89=88=E6=9C=AC=E5=B7=B2?= =?UTF-8?q?=E6=9C=89=E7=AE=97=E4=BE=8B=E5=8F=82=E6=95=B0=E5=8F=8A=E6=96=87?= =?UTF-8?q?=E6=A1=A3=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../bin/cfd_para.hypara | 379 ++++++++++++++++-- .../bin/cfd_para_subsonic.hypara | 6 +- .../bin/cfd_para.hypara | 379 ++++++++++++++++-- .../bin/cfd_para_hypersonic.hypara | 6 +- .../bin/cfd_para.hypara | 379 ++++++++++++++++-- .../bin/cfd_para_subsonic.hypara | 6 +- .../bin/cfd_para.hypara | 379 ++++++++++++++++-- .../bin/cfd_para_supersonic.hypara | 6 +- .../bin/cfd_para.hypara | 379 ++++++++++++++++-- .../bin/cfd_para_hypersonic.hypara | 6 +- .../bin/cfd_para.hypara | 379 ++++++++++++++++-- .../bin/cfd_para_transonic.hypara | 6 +- .../bin/cfd_para.hypara | 379 ++++++++++++++++-- .../bin/cfd_para_transonic.hypara | 6 +- .../bin/cfd_para.hypara | 379 ++++++++++++++++-- .../bin/cfd_para_subsonic.hypara | 6 +- .../bin/cfd_para.hypara | 379 ++++++++++++++++-- .../bin/cfd_para_transonic.hypara | 6 +- .../bin/cfd_para.hypara | 379 ++++++++++++++++-- .../bin/cfd_para_transonic.hypara | 6 +- .../bin/cfd_para.hypara | 379 ++++++++++++++++-- .../bin/cfd_para_hypersonic.hypara | 6 +- .../bin/cfd_para.hypara | 379 ++++++++++++++++-- .../bin/cfd_para_hypersonic.hypara | 6 +- .../bin/cfd_para.hypara | 379 ++++++++++++++++-- .../bin/cfd_para_subsonic.hypara | 6 +- .../bin/boundary_condition _ref.hypara | 4 +- .../bin/boundary_condition.hypara | 56 --- .../bin/cfd_para.hypara | 379 ++++++++++++++++-- .../bin/cfd_para_subsonic.hypara | 6 +- .../低速湍流平板说明文档.pdf | Bin 421287 -> 215094 bytes .../bin/cfd_para.hypara | 379 ++++++++++++++++-- .../bin/cfd_para_hypersonic.hypara | 6 +- 33 files changed, 5117 insertions(+), 718 deletions(-) delete mode 100644 A14_TwoD_Plate_TotalPressTempBC_SA_Struct_4CPU/bin/boundary_condition.hypara diff --git a/A01_TwoD_Plate_Laminar_Struct_1CPU/bin/cfd_para.hypara b/A01_TwoD_Plate_Laminar_Struct_1CPU/bin/cfd_para.hypara index df090b7..b17970c 100644 --- a/A01_TwoD_Plate_Laminar_Struct_1CPU/bin/cfd_para.hypara +++ b/A01_TwoD_Plate_Laminar_Struct_1CPU/bin/cfd_para.hypara @@ -21,6 +21,7 @@ // 1 -- Grid conversion, from other grid data to PHenglEI, such as Fluent, CGNS. // 2 -- Grid refinement. // 3 -- Grid merging, merge two blocks into one block. +// 4 -- Grid deformation, achieve unstructured grid deformation. // 5 -- Grid repairing, repair the original grid in order to remove the negative volume cells. // 6 -- Grid mirroring, mirror a symmetry grid to whole grid. // multiblock: Multi-block grid or not, only for structured grid conversion. @@ -72,13 +73,15 @@ int dumpOldGrid = 0; //----------------------------------------------------------------------- // from_gfile: path of original data file for unstructure grid convert from. // out_gfile: path of target file for grid convert to, *.fts type of file usually. +int numberOfGridFile = 1; string from_gfile = "./grid/rae2822_hybrid2d.cas"; +string from_gfile1= ""; + string out_gfile = "./grid/flat_laminr_133_85_2d.fts"; // ----------------- some advanced choices ------------------------------ // iunsteady: The Grid is for unsteady simulation or not. int iunsteady = 0; -int iale = 0; int codeOfAleModel = 0; // fileformat: Ustar Grid file format. @@ -122,15 +125,38 @@ int isDeform = 0; int exclusiveCase = 0; // 0: NON case; 1: JSM-C2-NPOFF case; 2: CHNT. int projectOrgPoint = 0; // if project original wall points. + +// ----------------- Grid Deform Parameters ----------------------------- +// deformationMethod: Grid Deform. +// 1 -- SPRING. +// 2 -- RBF. +// stationalGridFile: Original grid file. +// visualFileName : The visualization file path of deform grid. +// nDeformStep : The max deform step. +// flapAngle : The max flap angle. +// rotatePostionZ : Rotate postion. +// rotatePostionY : Rotate postion. +// gridSlice : If dump slice grid. +// sliceAxis : Grid slice axis. +// slicePosition : Grid slice position. +int nDeformStep = 40; +double flapAngle = 10.0; +double rotatePostionZ = 4.00003; +double rotatePostionY = 3.05; + +int deformationMethod = 2; +string stationalGridFile = "./grid/Segment2Brid.fts"; +string visualFileName = "./results/deformedGrid.dat" + +int gridSlice = 1; +int sliceAxis = 1; +double slicePosition = 13; + // ----------------- RBF Parameters ------------------------------------- -// symmetryPlane: Which symmetry plane is used in the mesh. -// 0 -- without symmetry. -// 1 -- plane of x=0. -// 2 -- plane of y=0. -// 3 -- plane of z=0. -int numberOfReferenceCP = 10; -double influenceRadius = 20; -int symmetryPlane = 3; // 1: plane of x=0; 2: plane of y=0; 3: plane of z=0; +// numberOfReferenceCP : Number of reference Control Points. +// influencePara : The RBF influence radius parameter. +int numberOfReferenceCP = 40; +double influencePara = 25.0; // ----------------- Periodic Parameters -------------------------------- // Notice: Rotational periodicity only support rotation along the X axis! @@ -138,6 +164,11 @@ int symmetryPlane = 3; // 1: plane of x=0; 2: plane of y=0; 3: plane of // 0 -- without Periodic Boundary. // 1 -- Translational periodicity. // 2 -- Rotational periodicity. +// translationLength[]: The relative distance between two periodic face + which only support one direction. +// rotationAngle: The relative angle between two periodic face. + which is recorded in degrees. + int periodicType = 0; double translationLength[] = [0.0,0.0,0.0]; double rotationAngle = 0.0; @@ -180,7 +211,7 @@ string partition_grid_file = "./grid/sphere_mixed__4.fts"; // 0 -- Interface. (default) // 1 -- Physical boundary condition, used in Hybrid solver. // npartmethod: Method of interface reconstruction, default is 1. -// parallelPartMethod: Method of parallel partition, this is set only when execute parallel partition. It would be skipped when serial partition. +// parallelPartitionMethod: Method of parallel partition, this is set only when execute parallel partition. It would be skipped when serial partition. // 1 -- Using ParMetis for homogeneous MPI. // 2 -- Using Metis for homogeneous MPI. // 3 -- using METIS partition for homogeneous OpenMP. @@ -238,6 +269,8 @@ int compressible = 1; // 1 -- the flight conditions. // 2 -- the experiment conditions. // 3 -- the subsonic boundary conditions. +// 4 -- the condition that the velocity, temperature and density are given. +// 5 -- the condition that the velocity, temperature and pressure are given. // refReNumber: Reynolds number, which is based unit length, unit of 1/m. // refDimensionalTemperature: Dimensional reference temperature, or the total temperature only for the experiment condition. // freestream_vibration_temperature: Dimensional freestream vibration temperature. @@ -251,10 +284,12 @@ int compressible = 1; // 1 inch = 0.0254m. // 1 foot = 12 inches = 0.3048m. // 1 yard = 3 feet = 0.9144m. -// forceRefenenceLength, forceRefenenceLengthSpanWise, forceRefenenceArea: Reference length, SpanWise length and area, independent of grid unit. +// forceReferenceLength, forceReferenceLengthSpanWise, forceReferenceArea: Reference length, SpanWise length and area, independent of grid unit. // TorqueRefX, TorqueRefY, TorqueRefZ: Reference point, independent of grid unit. // radiationCoef: The radiation coefficient on wall, it is used to compute the radiation heat flux on wall when the boundary // condition is radiation equilibrium temperature, and 0.8 is the default value. +// refMolecularWeight : the reference molecular weight of gas used for perfect gas. The unit is g/mol. +// Generally, the gas is air. Sometimes, it is experiment gas, such as Nitrogen, Argon, and so on. double refMachNumber = 0.73; double attackd = 2.79; @@ -263,7 +298,7 @@ double angleSlide = 0.00; int inflowParaType = 0; double refReNumber = 6.5e6; double refDimensionalTemperature = 288.15; -double freestream_vibration_temperature = 10000.00; +double freestream_vibration_temperature = 300.00; //int inflowParaType = 1; //double height = 0.001; @@ -280,18 +315,34 @@ double freestream_vibration_temperature = 10000.00; //double refDimensionalTemperature = 288.144; //double refDimensionalPressure = 1.01313E05; +//The velocity, temperature and density are fixed. +//int inflowParaType = 4; +//double refDimensionalVelocity = 1000.0; +//double refDimensionalDensity = 1.0e3; + +//The velocity, temperature and pressure are fixed. +//int inflowParaType = 5; +//double refDimensionalVelocity = 1000.0; +//double refDimensionalPressure = 1.0e5; + +//The MachNumber, temperature and pressure are fixed. +//int inflowParaType = 6; +//double refDimensionalTemperature = 293; +//double refDimensionalPressure = 8886.06; + double wallTemperature = -1.0; double radiationCoef = 0.8; double gridScaleFactor = 1.0; int numberOfAerodynamicForceComponents = 1; -double forceRefenenceLengthSpanWise = 1.0; // unit of meter. -double forceRefenenceLength = 1.0; // unit of meter. -double forceRefenenceArea = 1.0; // unit of meter^2. +double forceReferenceLengthSpanWise = 1.0; // unit of meter. +double forceReferenceLength = 1.0; // unit of meter. +double forceReferenceArea = 1.0; // unit of meter^2. double TorqueRefX = 0.0; // unit of meter. double TorqueRefY = 0.0; // unit of meter. double TorqueRefZ = 0.0; // unit of meter. +double refMolecularWeight = 28.9644; // unit of g/mol. //----------------------------------------------------------------------- # Spatial Discretisation # @@ -303,7 +354,7 @@ double TorqueRefZ = 0.0; // unit of meter. // Using this when solve structered grid or hybrid. // -- "vanleer", "steger", "hlle", "lax_f". // -- "roe", "modified_roe". -// -- "ausm+", "ausm+w", "ausm+up", "ausmdv", "ausmpw". +// -- "ausm+", "ausm+w", "ausm+up", "ausmdv", "ausmpw", "ausmpw+". // str_limiter_name: Limiter of struct grid. // -- "vanalbada", "vanleer", "minmod", "smooth", "minvan", "3rdsmooth", "3rd_minmod_smooth". // -- "nolim", no limiter. @@ -339,14 +390,14 @@ string str_limiter_name = "vanalbada"; // uns_scheme_name: Spatial discretisation scheme of Unstruct grid. // Using this when solve Unstructered grid or hybrid. // -- "vanleer", "roe", "steger", "kfvs", "lax_f", "hlle". -// -- "ausm+", "ausmdv", "ausm+w", "ausmpw", "ausmpwplus". +// -- "ausm+", "ausmdv", "ausm+w", "ausmpw", "ausmpw+". // uns_limiter_name: Limiter of Unstruct grid. // -- "barth", "vencat", "vanleer", "minmod". // -- "vanalbada", "smooth", "nnd", "lpz", "1st". // -- "nolim", no limiter. // uns_vis_name: Discretisation method of viscous term. // -- "std", "test", "aver", "new1", "new2". -// uns_gradient: Gradient reconstruction method. +// gradientName: Gradient reconstruction method. // -- "default", "ggcell", "ggnode", "lsq". // ivencat: Variation of vencat limiter. // 0 -- org method, it is independent of grid scale. @@ -408,9 +459,15 @@ double roeEntropyScale = 1.0; // 1 -- unsteay. // physicalTimeStep: The nondimensional physical time step. // ifStartFromSteadyResults: The unsteady simulation is start from steady flowfield or not, 0 is for no and else is for yes. -// ifStaticsFlowField: Statistical variables for DES simulation. +// ifStaticsFlowField: Statistical variables for unsteady simulation. +// ifStaticsReynoldsStress: Statistical Reynolds stress for unsteady simulation. // startStatisticStep: Outer step when start statistics. // when the value is larger than "maxSimuStep", it is useless. +// statisticalTimePeriod: Used as time period of statistic analysis. +// when the value is negative, time period is treated as infinite. +// statisticMethod: Statistic reynolds stress method. + 0 --tau = - ^2 + 1 --tau = // min_sub_iter: The min sub iteration of unsteady simulation. // max_sub_iter: The max sub iteration of unsteady simulation. // tol_sub_iter: The tolerance of sub iteration of unsteady simulation. @@ -454,7 +511,10 @@ int iunsteady = 0; double physicalTimeStep = 0.01; int ifStartFromSteadyResults = 0; int ifStaticsFlowField = 0; +int ifStaticsReynoldsStress = 0; int startStatisticStep = 800000; +double statisticalTimePeriod = -1.0; +int statisticMethod = 0; int linearTwoStepMethods = 1; // 1--BDF1; 2--C-N; 3--BDF2; int methodOfDualTime = 3; @@ -482,8 +542,6 @@ double turbCFLScale = 1.0; double csrv = 2.0; double timemax = 1.0e10; double dtsave = -1.0; -int codeOfAleModel = 0; -int aleStartStrategy = -1; int maxale = 10; double dtau = 0.001; @@ -524,6 +582,7 @@ double lamda[] = 0.5, 1.0; int numberOfGridGroups = 1; string gridfile = "./grid/rae2822_hybrid2d__4.fts"; +string wallTemperaturefile= ""; int walldistMethod = 1; @@ -536,15 +595,16 @@ string turbfile = "results/turb.dat"; string visualfile = "results/tecflow.plt"; string wall_aircoefile = "results/wall_aircoef.dat"; -string probesflowfile = "results/sample.dat"; +string samplefile = "results/sample.dat"; int nDumpSurfaceInfo = 0; string wall_varfile = ""; string jetDefineFile = "bin/jet.hypara"; -string overset_gridfile = "results/iblank.ovs"; string sixDofFileName = "results/sixDofInfo.dat"; +string derivativeFileName = "results/identify.dat"; +string hysteresisFileName = "results/force_beta.plt"; int plotFieldType = 0; @@ -554,6 +614,11 @@ int plotFieldType = 0; int visualfileType = 1; +// samplefileMode: The dump mode of sample file. +// 0 -- dump out every probe/line/surface data for all step intervals. +// 1 -- dump out all probe/line/surface data for every step intervals. +int samplefileMode = 0; + // visualSlice: The slice of tecflow. // 0 -- Do not save slice data. // 1 -- comput and save it to sliceFile. @@ -567,11 +632,13 @@ int visualSlice = 0; int sliceAxis = 1; double slicePostion = -0.5; string sliceFile = "results/Slice.plt"; +int dumpWallFaceCenter = 0; // min-max box of the visual block. double lowerPlotFieldBox[] = [0.0 0.0 0.0]; double upperPlotFieldBox[] = [1.0 1.0 1.0]; +//-----------the optional parameters list for the flow field output---------------- // nVisualVariables: Number of variables want to be dumped for tecplot visualization. // visualVariables : Variable types dumped, listed as following: // -- density(0), u(1), v(2), w(3), pressure(4), temperature(5), mach(6), @@ -582,11 +649,27 @@ double upperPlotFieldBox[] = [1.0 1.0 1.0]; // -- vibration temperature(Tv, 33), electron temperature(Te, 34), vibrational energy(Ev, 35), electric energy(Ee, 36), // -- number density of electron(Ne, 37), dimensioanl density(rho, 38), dimensioanl pressure(p, 39), dimensioanl temperature(T, 40), // -- gradientUx(41), gradientUy(42), gradientVx(43), gradientVy(44), iblank(81). +// -- specific heat ratio(gama, 56) // Important Warning: Array size of visualVariables MUST be equal to nVisualVariables!!! // Variables order must from small to big. +//-----------the optional parameters list for the wall boundary condition---------------- +// nVisualWallVariables: The number of visual variables on wall. +// visualWallVariables : dumped variable types, listed as following: +// -coefficient of pressure(cp, 0), -coefficient of friction(cf, 1), yplus(2), -non-dimensional heat flux(Q_NonDim, 3), -dimensional heat flux(Q_Dim, 4), +// -pressure on wall(pw, 5), -temperature on wall(Tw, 6), -density on wall(rhow, 7), -heat flux of translational-rotational temperature term(Qtr, 8), +// -heat flux of species diffusion term(Qs, 9), -heat flux of vibrational temperature term(Qv, 10), -heat flux of electron temperature term(Qe, 11), +// -species mass fractions(Ns, 12), -x component of wall velocity(Vx, 13), -y component of wall velocity(Vy, 14), -z component of wall velocity(Vz, 15) +// -slip translational-rotational temperature(Tts, 16), -slip vibrational temperature(Tvs, 17), -slip electron temperature(Tes, 18), -absolute wall velocity(Vs, 19) +// -Stanton number(St, 20), -coefficient of heat rate(Ch, 21), -temperature jump(deltaT, 22), -transition gamaeff(gamaeff, 48), +// -transition intermittency(intermittency, 51), -transition momentum thickness reynolds(MomentumThicknessReynolds, 52), +// -overlap iblank(iblank, 81) + int nVisualVariables = 8; int visualVariables[] = [0, 1, 2, 3, 4, 5, 6, 15]; +int nVisualWallVariables = 9; +int visualWallVariables[] = [0, 1, 2, 3, 4, 5, 9, 10, 11]; + // dumpStandardModel: Dump many standard model data. // 1 -- Turbulent flat plate. int dumpStandardModel = 0; @@ -644,6 +727,7 @@ int probeVariablesInterpolationMethod = 0; // mod_turb_res: If modify the residuals for the cells next to the wall or not, default is 0. int turbInterval = 1; +int turbOrderStruct = 2; int kindOfTurbSource = 0; int mod_turb_res = 0; double turb_relax = 1.0; @@ -652,6 +736,10 @@ double muoo = 3.0; double kwoo = 5.0; int transitionType = 0; double turbIntensity = -1.0; +int freeturbIntensitySRModify = 0; +double freeDecayXLocation = 0.0; +int compressibleCorrection = 0; +int transitionMaFix = 1; # maximum eddy viscosity (myt/my) max. double eddyViscosityLimit = 1.0e10; @@ -661,8 +749,8 @@ int monitor_vistmax = 0; # LES Parameter # //----------------------------------------------------------------------- // iLES: Create LESSolver or not. -// >= 1 - Create LESSolver; -// < 1 - not. +// == 1 - Create LESSolver; +// != 1 - not. // amplitudeofDisturb: Amplitude of adding disturb. // disturbstep: Unsteady time step or steady iteration of adding random disturb. // iterdisturb: Add random disturb in every sub-iter or only first sub-iter. @@ -676,8 +764,9 @@ int monitor_vistmax = 0; // utau: friction velocity, using in DNSDisturb. // sgsmodel: subgrid scale model. // = "smagorinsky"; -// = "dsm"; -// = "wale". +// = "dsmCom"; +// = "wale"; +// = "sigma". // deltaFunctionType: = 1 - MAX(deltai, deltaj, deltak); // = 2 - pow(deltai * deltaj *deltak, 1/3); // = 3 - Devloped by Scotti. @@ -700,9 +789,10 @@ string sgsmodel = "smagorinsky"; int deltaFunctionType = 2; int wallDampingFunctionType = 1; int turbViscousCutType = 2; -double smagConstant = 0.135; +double smagConstant = 0.1; double isotropicConstant = 0.0; double waleConstant = 0.6; +double sigmaConstant = 1.35; int filterDirection[] = [1, 1, 0]; int averageDirection[] = [0, 0, 0]; double testFilterScale = 2.0; @@ -724,12 +814,42 @@ int monitorNegativeConstant = 0; // nm: Equation number of the physics, but is out of commision now. // 4 -- for 2D. // 5 -- for 3D. -// nGasModel: The type of gas. +// nGasModel: The type of gas. less than and equal to 1 represents the mixture gas. +// Otherwise, the pure gas with one component is used for perfect gas. // 0 -- Earth gas. // 1 -- Mars gas. +// 2 -- Argon. +// 3 -- Nitrogen. +// nEnergyRecycle: The type of EnergyModel Recycle. +// 0 -- not used . +// 1 -- used. +// nDensityModify: The type of densitymodify. + +// 0 -- not used. +// 1 -- used. // nchem: // 0 -- without chemical reaction flow. // 1 -- the chemical reaction flow is considered. +// nEquilibriumGas: the variable is valid when the condition of nchem=0 is satisfied. +// 0 -- perfect gas. +// 5, 7, 11 -- equilibrium gas, meanwhile, its value denotes the number of gas component. +// nPCWCycleStep: the maximum step number of iteration in the module of computing species mass fractions with the partial catalytic wall(PCW) condition. +// the value equals to or is greater than 1, and 3 is for default value. +// nRETCycleStep: the maximum step number of iteration in the module of computing radiation equilibrium temperature on wall. +// the value equals to or is greater than 1, and 3 is for default value. +// nSLIPCycleStep:the maximum step number of iteration in the module of computing slip temperature, slip velocity and slip species mass fraction. +// the value equals to or is greater than 1, and 3 is for default value. +// nSlipBCModel : The computational model of slip boundary conditions. + +// 0 -- no slip. +// 1 -- the conventional Maxwell slip conditions. +// 2 -- the Gokcen slip conditions. +// 3 -- the Knudsen-layer correction of the standard slip conditions proposed by Lockerby, et al. +// 4 -- the Kogan simplified slip conditions. +// nMeanFreePathType : the method to the mean free-path for the slip conditions. For the mixture, 0 is suggested. +// 0 -- the equivalent mean free-path is calculated by the simple hard sphere model(HS). +// 1 -- calculated by the definition that includes the variables of the number density and the molecule diameter. +// 2 -- the equivalent mean free-path is calculated by the variable hard sphere model(VHS). // nchemsrc: // 0 -- the source terms are not computed. // 1 -- the source terms are computed. @@ -740,15 +860,72 @@ int monitorNegativeConstant = 0; // 1 -- One-temperature model. // 2 -- Two-temperature model. // 3 -- Three-temperature model. +// nTEnergyModel: the method to computing temperature energy model. +// 0 -- the energy term is computed using the conventional method. +// 1 -- the energy term is computed using the curve fitting method. +// parkVDPower: the power of translational-rotational temperature in the Park V-D(vibration-dissociation) coupling model. +// The value is in range of [0.0, 1.0], DPLR suggests 0.5, LAURA suggests 0.7, while 0.6 is given as default value. // catalyticCoef: // 0.0 -- full non-catalytic wall boundary condition. // 1.0 -- full catalytic wall boundary condition. // in range of (0.0, 1.0) -- partial catalytic condition, the value indicates the catalytic coefficient. +// nIsSuperCatalytic : the super catalytic condition for the fully catalytic wall, and assigned with the value of 1. +// 0 -- equilibrium condition for the fully catalytic wall where the mass fractions are assigned with the values of the free stream. +// 1 -- super catalytic condition for the fully catalytic wall where all the atomic components combine into molecular components. +// nTemperatureJump : the method to calculate the temperature jump. +// 0 -- calculated by the variables of heat conductivity and constant volume specific heat for each energy mode. +// 1 -- the general method where the iteration is calculated with the translation-rotation temperature. +// sigmaVelocity: the coordination coefficient of tangential momentum for computation of slip velocity. The value is in range of (0.0, 2.0]. +// sigmaTemperature: the heat coordination coefficient for computation of slip temperature. The value is in range of (0.0, 2.0]. +// sigmaMassFraction: the species coordination coefficient for computation of slip mass fractions. The value is in range of (0.0, 2.0]. +// velocitySlipCorrectConstant: the correction constant to the velocity slip condition. For the diffuse reflection, 1.0 is used. +// 1.0 -- proposed by Maxwell. +// sqrt(2/PI)~0.8 -- used for "micro-slip", namely the actual velocity slip at the wall. +// 1.146 -- proposed for an additional "fictitious" velocity slip. + +// chemicalRelaxCorf: The value is in range of [0.001, 1.0]. +// chemicalSpectrumRadiusCoef: The value is in range of [1.0, 3.0]. +// viscousSpectrumRadiusCoef : The value is in range of [1.0, 3.0]. +// inviscidSpectrumRadiusCoef: The value is in range of [1.0, 3.0]. +// staticPressureRelaxCorf: The value is in range of [0.1, 1.0]. +// nIsChemicalFreeze : the flag to freeze the chemical reactions. +// 0 -- not freeze, the chemical reaction sources will be calculated. +// 1 -- freezes the chemical reactions, the chemical reaction sources will not be calculated.// veTemperatureMin: The minimum of Tv and Te +// nDebug: cout the Wrong place and abort +// 0 -- not used. +// 1 -- used. +// nSpeciesLimit: limitter of gas species +// 0 -- not used. +// 1 -- used. +// nTurblenceForChemical: the coupled mode of Turblence and Chemical reaction +// 0 -- method 0. +// 1 -- method 1. +// nViscosityFluxSublevelModified: Modified for ViscosityFlux on Sublevel grid +// 0 -- not used. +// 1 -- used. +// nChemcalSourceModified: Modified on ChemcalSource +// 0 -- not used. +// 1 -- used. +// nAblation: +// 0 -- The wall ablation is not computed. +// 1 -- The wall ablation is computed. +// isInjection: +// 0 -- The injection velocity of ablation wall is not computed. +// 1 -- The injection velocity of ablation wall is computed. +// nViscosityModel: + +// 0 -- Blottner fitting method. +// 1 -- Gupta fitting method. +// nSutherland: +// 0 -- stands for selecting the Blotter curve fits mode. +// 1 -- stands for Sutherland relation. // gasfile: Indicates the gas model, 9 models are provided, namely "Gu5", "Gu7", "Gu11", "Pa5", "Pa7", "Pa11", "DK5", "DK7", "DK11". // "Gu" -- indicates the Gupta Model, three-Type Models are embeded in the library, namely, the 5-species-6-reactions, the 7-species-9-reactions, the 11-species-20-reactions. // "Pa" -- indicates the Park Model, three-Type Models are embeded in the library, namely, the 5-species-17-reactions, the 7-species-22-reactions, the 11-species-48-reactions. // "DK" -- indicates the Dunn-Kang Model, three-Type Models are embeded in the library, namely, the 5-species-11-reactions, the 7-species-15-reactions, the 11-species-26-reactions. // "Mars-Pa8" is for Park model of Mars gas, "Mars-Mc8" for McKenzie model of Mars gas. +// "Combustion-12" -- indicates the Combustion Chamber Gas Model which includes 12-species-20-reactions. +// "Gas-Mixture" -- indicates the process of mixing two species without reacting. // For self-definition model, the gasfile is used to indicate the file path of the new gas model. // speciesName: Used to list the names of each species, while each species name is separated by the symbol of comma. // initMassFraction: Used to list the initial mass fractions of species in accordance with the sequence of names in the parameter speciesName. @@ -758,6 +935,10 @@ int dg_high_order = 0; int iapplication = 0; int iCodeBranch = 0; int nm = 5; +int nEquilibriumGas = 0; +int nPCWCycleStep = 3; +int nRETCycleStep = 3; +int nSLIPCycleStep= 3; double refGama = 1.4; double prl = 0.72; @@ -770,23 +951,73 @@ int nchem = 0; int nchemsrc = 1; int nchemrad = 1; int ntmodel = 1; -int nChemicalFlowStep = 0; + +int nEnergyRecycle = 0; +int nSlipBCModel = 0; +int nDensityModify = 1; +int nTEnergyModel = 0; +int nMeanFreePathType = 0; +int nIsChemicalFreeze = 0; +int nIsSuperCatalytic = 1; +int nTemperatureJump = 0; + +double parkVDPower = 0.6; double catalyticCoef = 0.0; +double sigmaVelocity = 1.0; +double sigmaTemperature = 1.0; +double sigmaMassFraction = 1.0; +double velocitySlipCorrectConstant = 1.0; + +double chemicalRelaxCorf = 1.0; +double chemicalSpectrumRadiusCoef = 1.0; +double viscousSpectrumRadiusCoef = 1.0; +double inviscidSpectrumRadiusCoef = 1.0; +double staticPressureRelaxCorf = 1.0; + +double veTemperatureMin = 30.0; +int nDebug = 0; +int nSpeciesLimit = 0; +int nTurblenceForChemical = 0; +int nViscosityFluxSublevelModified = 0 ; +int nChemcalSourceModified = 0; + +int nAblation = 0; +int isInjection = 0; +int nViscosityModel = 0; +int nMarsModel = 0; string gasfile = "DK5"; //string gasfile = "./chemical/Dunn-Kang_air5s11r.dat"; string speciesName = "O, O2, NO, N, N2"; -string initMassFraction = "0.0, 0.23, 0.0, 0.0, 0.77"; +string initMassFraction = "0.0, 0.233, 0.0, 0.0, 0.767"; //string speciesName = "O, O2, NO, N, NO+, N2, e-"; -//string initMassFraction = "0.0, 0.23, 0.0, 0.0, 0.0, 0.77, 0.0"; +//string initMassFraction = "0.0, 0.233, 0.0, 0.0, 0.0, 0.767, 0.0"; //string speciesName = "O, O2, NO, N, O+, O2+, NO+, N+, N2+, N2, e-"; -//string initMassFraction = "0.0, 0.23, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.77, 0.0"; +//string initMassFraction = "0.0, 0.233, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.767, 0.0"; //string gasfile = "Mars-Pa8"; //string speciesName = "O, O2, NO, N, N2, C, CO, CO2"; //string initMassFraction = "0.0015, 0.0429, 0.0, 0.0, 0.0, 0.0, 0.0777, 0.8779"; +//string gasfile = "DK7"; +//string speciesName = "O, O2, NO, N, NO+, C, C2, CO, CO2, CN, N2, e-"; +//string initMassFraction = "0.0, 0.233, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.767, 0.0"; + +//string gasfile = "Combustion-12"; +//string speciesName = "O, O2, NO, N, C, CO, CO2, H, H2, OH, H2O, N2"; +//string initMassFraction = "0.0, 0.233, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.767"; + +//string gasfile = "Gas-Mixture"; +//string speciesName ="SpeciesA, SpeciesB"; +//string initMassFraction = "1.0, 0.0"; +int nSutherland = 0; +double gamaSpeciesA = 1.4; +double gamaSpeciesB = 1.3; +double molecularWeightSpeciesA = 29.0; +double molecularWeightSpeciesB = 30.0; + +int nChemicalFlowStep = 0; int ifStartFromPerfectGasResults = 0; ######################################################################### @@ -841,7 +1072,7 @@ string zoneInverseFileName = "./grid/zoneInverseMapping.inp"; ######################################################################### # High Order Struct Solver # ######################################################################### -// ifvfd: +// isFVMOrFDM: // 0 -- NSSolverStruct using Finite Volume Method. // 1 -- NSSolverStruct using Finite Differ Method. // SolverStructOrder: Spatial discretisation order of NS equations with struct grid. @@ -856,7 +1087,7 @@ string zoneInverseFileName = "./grid/zoneInverseMapping.inp"; // -- "roe", "steger". // structhighordergradient: // -- "conservation", "chain_rule". -int ifvfd = 0; +int isFVMOrFDM = 0; string str_highorder_solver = "WCNS"; int SolverStructOrder = 0; double str_highorder_interpolation_epsilon = 1.0e-6; @@ -885,8 +1116,12 @@ int allReduceStep = 1; // codeOfOversetGrid: Overlapping(overset) grid or not. // 0 -- NON-overlapping grid. // 1 -- Overlapping grid. +// oversetInterpolationMethod: the method of overset interpolation while field simulation +// 0 -- set the acceptor cell value by donor cell value. +// 1 -- set the acceptor cell value by distance weight of donor cell value. + int codeOfOversetGrid = 0; -int codeOfOversetSlipGrid = 0; +int oversetInterpolationMethod = 0; int readOversetFileOrNot = 0; int symetryOrNot = 0; int readInAuxiliaryInnerGrid = 1; @@ -895,7 +1130,7 @@ int readInSklFileOrNot = 0; string auxiliaryInnerGrid0 = "./grid/aux-upper.fts"; string auxiliaryInnerGrid1 = "./grid/aux-lower.fts"; string auxiliaryInnerGrid2 = ""; -string oversetGridFileName = "./grid/overlap.ovs"; +string oversetGridFileName = "./grid/iblank.ovs"; double walldistMainZone = 1.0 double toleranceForOversetSearch = 1.0e-3; double toleranceForOversetBox = 1.0e-3; @@ -905,16 +1140,78 @@ int outTecplotOverset = 0; int numberOfMovingBodies = 2; +// ----------------- ALE configuration ------------------------------ +int codeOfAleModel = 1; +int aleStartStrategy = -1; + +int strategyForFaceNormalVelocity = 0; //0-By Sweeping volume; 1-By face center 1st; 2-By face center 2nd; +int strategyForGCLSource = 0; //0-present; 1-Ahn; + +//0:1st-Admas-Bashforth; 1:2nd-Admas-Bashforth; 2:1st-Implicit-Euler; 3:2nd-Implicit Euler; 4:2nd-Adams-Moulton; 5:3rd-Adams-Moulton +int methodForKineticEquation = 0; +double relaxParameterOfKinetic = 1.0; + +######################################################################### +# motive information # +######################################################################### +int numberOfMovingBodies = 1; + +############################## body0 ############################## +//mass of parts +double mass_0 = 1.0; +//mass matrix of parts Ixx Iyy Izz Ixy Ixz Iyz +double massMatrix_0[] = 1e-7, 1e-6, 1e-6, 0.0, 0.0, 0.0; +//initial six DOF position information of parts. xc yc zc +double massCenter_0[] = 0.0 , 0.0, 0.0; +//initial six DOF position information of parts. angleX angleY angleZ +double attitudeAngle_0[] = 0.0 , 0.0, 0.0; +//initial six DOF move information of parts. vc vy vz +double massCenterVelocity_0[] = 0.0, 0.0, 0.0; +//initial six DOF move information of parts. omigX omigY omigZ +double angularVelocity_0[] = 0.0, 0.0, 0.0; +//the object that the parts belong to. +int fartherIndex_0 = -1; +//the assembly position of the parts. xc yc zc angleX angleY angleZ +double configPamameter_0[] = 0.0 ,0.0 ,0.0 ,0.0 ,0.0 ,0.0; +//the move pattern of the parts. +// -1 given motion partten. +// 0 still. +// 1 six DOF motion. +// 2 three DOF motion. +// 11 X-axis forced motion. +// 12 Y-axis forced motion. +// 13 Z-axis forced motion. +// 14 forced pitch motion. +// 15 forced yaw motion. +// 16 forced roll motion. +int RBDMethod_0 = 0; +double amplitude_0 = 0.0; +double reduceFrequency_0 = 0.0; +//string uDFSixDofFileName_0 = "./Bin/UDFSixDof.Parameter"; +//additional force (system axis) fX fY fZ +double addedForce_0[] = 0.0 ,0.0 ,0.0 ; +//additional moment of Force (system axis) mX mY mZ +double addedMoment_0[] = 0.0 ,0.0 ,0.0 ; +//the deformation method of the parts. +int morphing_0 = 0; + +// post indentify +int integralOrder = 4; + + // ---------------- ATP read -------------------------------------------- //@int inflowParaType = 0; -//@double refReNumber = 2.329418E08; -//@double refDimensionalTemperature = 288.144; -//@double refDimensionalPressure = 1.01313E05; -//@double height = -0.001; +//@double refReNumber = 6.5e6; +//@double refDimensionalTemperature = 288.15; +//@double freestream_vibration_temperature = 300.00; +//@double refDimensionalPressure = 0; +//@double height = 0; //@int nsubsonicInlet = 0; //@int nsubsonicOutlet = 0; //@string inLetFileName = "./bin/subsonicInlet.hypara"; //@string outLetFileName = "./bin/subsonicOutlet.hypara"; +//@double refDimensionalVelocity = 0; +//@double refDimensionalDensity = 0; ######################################################################### # Old Parameter # diff --git a/A01_TwoD_Plate_Laminar_Struct_1CPU/bin/cfd_para_subsonic.hypara b/A01_TwoD_Plate_Laminar_Struct_1CPU/bin/cfd_para_subsonic.hypara index b96fad9..8f50894 100644 --- a/A01_TwoD_Plate_Laminar_Struct_1CPU/bin/cfd_para_subsonic.hypara +++ b/A01_TwoD_Plate_Laminar_Struct_1CPU/bin/cfd_para_subsonic.hypara @@ -57,9 +57,9 @@ double refDimensionalTemperature = 288.15; double gridScaleFactor = 1.0; -double forceRefenenceLengthSpanWise = 1.0; // unit of meter. -double forceRefenenceLength = 1.0; // unit of meter. -double forceRefenenceArea = 1.0; // unit of meter^2. +double forceReferenceLengthSpanWise = 1.0; // unit of meter. +double forceReferenceLength = 1.0; // unit of meter. +double forceReferenceArea = 1.0; // unit of meter^2. double TorqueRefX = 0.0; // unit of meter. double TorqueRefY = 0.0; // unit of meter. double TorqueRefZ = 0.0; // unit of meter. diff --git a/A02_TwoD_Plate_Laminar_Ma5_Struct_1CPU/bin/cfd_para.hypara b/A02_TwoD_Plate_Laminar_Ma5_Struct_1CPU/bin/cfd_para.hypara index df090b7..b17970c 100644 --- a/A02_TwoD_Plate_Laminar_Ma5_Struct_1CPU/bin/cfd_para.hypara +++ b/A02_TwoD_Plate_Laminar_Ma5_Struct_1CPU/bin/cfd_para.hypara @@ -21,6 +21,7 @@ // 1 -- Grid conversion, from other grid data to PHenglEI, such as Fluent, CGNS. // 2 -- Grid refinement. // 3 -- Grid merging, merge two blocks into one block. +// 4 -- Grid deformation, achieve unstructured grid deformation. // 5 -- Grid repairing, repair the original grid in order to remove the negative volume cells. // 6 -- Grid mirroring, mirror a symmetry grid to whole grid. // multiblock: Multi-block grid or not, only for structured grid conversion. @@ -72,13 +73,15 @@ int dumpOldGrid = 0; //----------------------------------------------------------------------- // from_gfile: path of original data file for unstructure grid convert from. // out_gfile: path of target file for grid convert to, *.fts type of file usually. +int numberOfGridFile = 1; string from_gfile = "./grid/rae2822_hybrid2d.cas"; +string from_gfile1= ""; + string out_gfile = "./grid/flat_laminr_133_85_2d.fts"; // ----------------- some advanced choices ------------------------------ // iunsteady: The Grid is for unsteady simulation or not. int iunsteady = 0; -int iale = 0; int codeOfAleModel = 0; // fileformat: Ustar Grid file format. @@ -122,15 +125,38 @@ int isDeform = 0; int exclusiveCase = 0; // 0: NON case; 1: JSM-C2-NPOFF case; 2: CHNT. int projectOrgPoint = 0; // if project original wall points. + +// ----------------- Grid Deform Parameters ----------------------------- +// deformationMethod: Grid Deform. +// 1 -- SPRING. +// 2 -- RBF. +// stationalGridFile: Original grid file. +// visualFileName : The visualization file path of deform grid. +// nDeformStep : The max deform step. +// flapAngle : The max flap angle. +// rotatePostionZ : Rotate postion. +// rotatePostionY : Rotate postion. +// gridSlice : If dump slice grid. +// sliceAxis : Grid slice axis. +// slicePosition : Grid slice position. +int nDeformStep = 40; +double flapAngle = 10.0; +double rotatePostionZ = 4.00003; +double rotatePostionY = 3.05; + +int deformationMethod = 2; +string stationalGridFile = "./grid/Segment2Brid.fts"; +string visualFileName = "./results/deformedGrid.dat" + +int gridSlice = 1; +int sliceAxis = 1; +double slicePosition = 13; + // ----------------- RBF Parameters ------------------------------------- -// symmetryPlane: Which symmetry plane is used in the mesh. -// 0 -- without symmetry. -// 1 -- plane of x=0. -// 2 -- plane of y=0. -// 3 -- plane of z=0. -int numberOfReferenceCP = 10; -double influenceRadius = 20; -int symmetryPlane = 3; // 1: plane of x=0; 2: plane of y=0; 3: plane of z=0; +// numberOfReferenceCP : Number of reference Control Points. +// influencePara : The RBF influence radius parameter. +int numberOfReferenceCP = 40; +double influencePara = 25.0; // ----------------- Periodic Parameters -------------------------------- // Notice: Rotational periodicity only support rotation along the X axis! @@ -138,6 +164,11 @@ int symmetryPlane = 3; // 1: plane of x=0; 2: plane of y=0; 3: plane of // 0 -- without Periodic Boundary. // 1 -- Translational periodicity. // 2 -- Rotational periodicity. +// translationLength[]: The relative distance between two periodic face + which only support one direction. +// rotationAngle: The relative angle between two periodic face. + which is recorded in degrees. + int periodicType = 0; double translationLength[] = [0.0,0.0,0.0]; double rotationAngle = 0.0; @@ -180,7 +211,7 @@ string partition_grid_file = "./grid/sphere_mixed__4.fts"; // 0 -- Interface. (default) // 1 -- Physical boundary condition, used in Hybrid solver. // npartmethod: Method of interface reconstruction, default is 1. -// parallelPartMethod: Method of parallel partition, this is set only when execute parallel partition. It would be skipped when serial partition. +// parallelPartitionMethod: Method of parallel partition, this is set only when execute parallel partition. It would be skipped when serial partition. // 1 -- Using ParMetis for homogeneous MPI. // 2 -- Using Metis for homogeneous MPI. // 3 -- using METIS partition for homogeneous OpenMP. @@ -238,6 +269,8 @@ int compressible = 1; // 1 -- the flight conditions. // 2 -- the experiment conditions. // 3 -- the subsonic boundary conditions. +// 4 -- the condition that the velocity, temperature and density are given. +// 5 -- the condition that the velocity, temperature and pressure are given. // refReNumber: Reynolds number, which is based unit length, unit of 1/m. // refDimensionalTemperature: Dimensional reference temperature, or the total temperature only for the experiment condition. // freestream_vibration_temperature: Dimensional freestream vibration temperature. @@ -251,10 +284,12 @@ int compressible = 1; // 1 inch = 0.0254m. // 1 foot = 12 inches = 0.3048m. // 1 yard = 3 feet = 0.9144m. -// forceRefenenceLength, forceRefenenceLengthSpanWise, forceRefenenceArea: Reference length, SpanWise length and area, independent of grid unit. +// forceReferenceLength, forceReferenceLengthSpanWise, forceReferenceArea: Reference length, SpanWise length and area, independent of grid unit. // TorqueRefX, TorqueRefY, TorqueRefZ: Reference point, independent of grid unit. // radiationCoef: The radiation coefficient on wall, it is used to compute the radiation heat flux on wall when the boundary // condition is radiation equilibrium temperature, and 0.8 is the default value. +// refMolecularWeight : the reference molecular weight of gas used for perfect gas. The unit is g/mol. +// Generally, the gas is air. Sometimes, it is experiment gas, such as Nitrogen, Argon, and so on. double refMachNumber = 0.73; double attackd = 2.79; @@ -263,7 +298,7 @@ double angleSlide = 0.00; int inflowParaType = 0; double refReNumber = 6.5e6; double refDimensionalTemperature = 288.15; -double freestream_vibration_temperature = 10000.00; +double freestream_vibration_temperature = 300.00; //int inflowParaType = 1; //double height = 0.001; @@ -280,18 +315,34 @@ double freestream_vibration_temperature = 10000.00; //double refDimensionalTemperature = 288.144; //double refDimensionalPressure = 1.01313E05; +//The velocity, temperature and density are fixed. +//int inflowParaType = 4; +//double refDimensionalVelocity = 1000.0; +//double refDimensionalDensity = 1.0e3; + +//The velocity, temperature and pressure are fixed. +//int inflowParaType = 5; +//double refDimensionalVelocity = 1000.0; +//double refDimensionalPressure = 1.0e5; + +//The MachNumber, temperature and pressure are fixed. +//int inflowParaType = 6; +//double refDimensionalTemperature = 293; +//double refDimensionalPressure = 8886.06; + double wallTemperature = -1.0; double radiationCoef = 0.8; double gridScaleFactor = 1.0; int numberOfAerodynamicForceComponents = 1; -double forceRefenenceLengthSpanWise = 1.0; // unit of meter. -double forceRefenenceLength = 1.0; // unit of meter. -double forceRefenenceArea = 1.0; // unit of meter^2. +double forceReferenceLengthSpanWise = 1.0; // unit of meter. +double forceReferenceLength = 1.0; // unit of meter. +double forceReferenceArea = 1.0; // unit of meter^2. double TorqueRefX = 0.0; // unit of meter. double TorqueRefY = 0.0; // unit of meter. double TorqueRefZ = 0.0; // unit of meter. +double refMolecularWeight = 28.9644; // unit of g/mol. //----------------------------------------------------------------------- # Spatial Discretisation # @@ -303,7 +354,7 @@ double TorqueRefZ = 0.0; // unit of meter. // Using this when solve structered grid or hybrid. // -- "vanleer", "steger", "hlle", "lax_f". // -- "roe", "modified_roe". -// -- "ausm+", "ausm+w", "ausm+up", "ausmdv", "ausmpw". +// -- "ausm+", "ausm+w", "ausm+up", "ausmdv", "ausmpw", "ausmpw+". // str_limiter_name: Limiter of struct grid. // -- "vanalbada", "vanleer", "minmod", "smooth", "minvan", "3rdsmooth", "3rd_minmod_smooth". // -- "nolim", no limiter. @@ -339,14 +390,14 @@ string str_limiter_name = "vanalbada"; // uns_scheme_name: Spatial discretisation scheme of Unstruct grid. // Using this when solve Unstructered grid or hybrid. // -- "vanleer", "roe", "steger", "kfvs", "lax_f", "hlle". -// -- "ausm+", "ausmdv", "ausm+w", "ausmpw", "ausmpwplus". +// -- "ausm+", "ausmdv", "ausm+w", "ausmpw", "ausmpw+". // uns_limiter_name: Limiter of Unstruct grid. // -- "barth", "vencat", "vanleer", "minmod". // -- "vanalbada", "smooth", "nnd", "lpz", "1st". // -- "nolim", no limiter. // uns_vis_name: Discretisation method of viscous term. // -- "std", "test", "aver", "new1", "new2". -// uns_gradient: Gradient reconstruction method. +// gradientName: Gradient reconstruction method. // -- "default", "ggcell", "ggnode", "lsq". // ivencat: Variation of vencat limiter. // 0 -- org method, it is independent of grid scale. @@ -408,9 +459,15 @@ double roeEntropyScale = 1.0; // 1 -- unsteay. // physicalTimeStep: The nondimensional physical time step. // ifStartFromSteadyResults: The unsteady simulation is start from steady flowfield or not, 0 is for no and else is for yes. -// ifStaticsFlowField: Statistical variables for DES simulation. +// ifStaticsFlowField: Statistical variables for unsteady simulation. +// ifStaticsReynoldsStress: Statistical Reynolds stress for unsteady simulation. // startStatisticStep: Outer step when start statistics. // when the value is larger than "maxSimuStep", it is useless. +// statisticalTimePeriod: Used as time period of statistic analysis. +// when the value is negative, time period is treated as infinite. +// statisticMethod: Statistic reynolds stress method. + 0 --tau = - ^2 + 1 --tau = // min_sub_iter: The min sub iteration of unsteady simulation. // max_sub_iter: The max sub iteration of unsteady simulation. // tol_sub_iter: The tolerance of sub iteration of unsteady simulation. @@ -454,7 +511,10 @@ int iunsteady = 0; double physicalTimeStep = 0.01; int ifStartFromSteadyResults = 0; int ifStaticsFlowField = 0; +int ifStaticsReynoldsStress = 0; int startStatisticStep = 800000; +double statisticalTimePeriod = -1.0; +int statisticMethod = 0; int linearTwoStepMethods = 1; // 1--BDF1; 2--C-N; 3--BDF2; int methodOfDualTime = 3; @@ -482,8 +542,6 @@ double turbCFLScale = 1.0; double csrv = 2.0; double timemax = 1.0e10; double dtsave = -1.0; -int codeOfAleModel = 0; -int aleStartStrategy = -1; int maxale = 10; double dtau = 0.001; @@ -524,6 +582,7 @@ double lamda[] = 0.5, 1.0; int numberOfGridGroups = 1; string gridfile = "./grid/rae2822_hybrid2d__4.fts"; +string wallTemperaturefile= ""; int walldistMethod = 1; @@ -536,15 +595,16 @@ string turbfile = "results/turb.dat"; string visualfile = "results/tecflow.plt"; string wall_aircoefile = "results/wall_aircoef.dat"; -string probesflowfile = "results/sample.dat"; +string samplefile = "results/sample.dat"; int nDumpSurfaceInfo = 0; string wall_varfile = ""; string jetDefineFile = "bin/jet.hypara"; -string overset_gridfile = "results/iblank.ovs"; string sixDofFileName = "results/sixDofInfo.dat"; +string derivativeFileName = "results/identify.dat"; +string hysteresisFileName = "results/force_beta.plt"; int plotFieldType = 0; @@ -554,6 +614,11 @@ int plotFieldType = 0; int visualfileType = 1; +// samplefileMode: The dump mode of sample file. +// 0 -- dump out every probe/line/surface data for all step intervals. +// 1 -- dump out all probe/line/surface data for every step intervals. +int samplefileMode = 0; + // visualSlice: The slice of tecflow. // 0 -- Do not save slice data. // 1 -- comput and save it to sliceFile. @@ -567,11 +632,13 @@ int visualSlice = 0; int sliceAxis = 1; double slicePostion = -0.5; string sliceFile = "results/Slice.plt"; +int dumpWallFaceCenter = 0; // min-max box of the visual block. double lowerPlotFieldBox[] = [0.0 0.0 0.0]; double upperPlotFieldBox[] = [1.0 1.0 1.0]; +//-----------the optional parameters list for the flow field output---------------- // nVisualVariables: Number of variables want to be dumped for tecplot visualization. // visualVariables : Variable types dumped, listed as following: // -- density(0), u(1), v(2), w(3), pressure(4), temperature(5), mach(6), @@ -582,11 +649,27 @@ double upperPlotFieldBox[] = [1.0 1.0 1.0]; // -- vibration temperature(Tv, 33), electron temperature(Te, 34), vibrational energy(Ev, 35), electric energy(Ee, 36), // -- number density of electron(Ne, 37), dimensioanl density(rho, 38), dimensioanl pressure(p, 39), dimensioanl temperature(T, 40), // -- gradientUx(41), gradientUy(42), gradientVx(43), gradientVy(44), iblank(81). +// -- specific heat ratio(gama, 56) // Important Warning: Array size of visualVariables MUST be equal to nVisualVariables!!! // Variables order must from small to big. +//-----------the optional parameters list for the wall boundary condition---------------- +// nVisualWallVariables: The number of visual variables on wall. +// visualWallVariables : dumped variable types, listed as following: +// -coefficient of pressure(cp, 0), -coefficient of friction(cf, 1), yplus(2), -non-dimensional heat flux(Q_NonDim, 3), -dimensional heat flux(Q_Dim, 4), +// -pressure on wall(pw, 5), -temperature on wall(Tw, 6), -density on wall(rhow, 7), -heat flux of translational-rotational temperature term(Qtr, 8), +// -heat flux of species diffusion term(Qs, 9), -heat flux of vibrational temperature term(Qv, 10), -heat flux of electron temperature term(Qe, 11), +// -species mass fractions(Ns, 12), -x component of wall velocity(Vx, 13), -y component of wall velocity(Vy, 14), -z component of wall velocity(Vz, 15) +// -slip translational-rotational temperature(Tts, 16), -slip vibrational temperature(Tvs, 17), -slip electron temperature(Tes, 18), -absolute wall velocity(Vs, 19) +// -Stanton number(St, 20), -coefficient of heat rate(Ch, 21), -temperature jump(deltaT, 22), -transition gamaeff(gamaeff, 48), +// -transition intermittency(intermittency, 51), -transition momentum thickness reynolds(MomentumThicknessReynolds, 52), +// -overlap iblank(iblank, 81) + int nVisualVariables = 8; int visualVariables[] = [0, 1, 2, 3, 4, 5, 6, 15]; +int nVisualWallVariables = 9; +int visualWallVariables[] = [0, 1, 2, 3, 4, 5, 9, 10, 11]; + // dumpStandardModel: Dump many standard model data. // 1 -- Turbulent flat plate. int dumpStandardModel = 0; @@ -644,6 +727,7 @@ int probeVariablesInterpolationMethod = 0; // mod_turb_res: If modify the residuals for the cells next to the wall or not, default is 0. int turbInterval = 1; +int turbOrderStruct = 2; int kindOfTurbSource = 0; int mod_turb_res = 0; double turb_relax = 1.0; @@ -652,6 +736,10 @@ double muoo = 3.0; double kwoo = 5.0; int transitionType = 0; double turbIntensity = -1.0; +int freeturbIntensitySRModify = 0; +double freeDecayXLocation = 0.0; +int compressibleCorrection = 0; +int transitionMaFix = 1; # maximum eddy viscosity (myt/my) max. double eddyViscosityLimit = 1.0e10; @@ -661,8 +749,8 @@ int monitor_vistmax = 0; # LES Parameter # //----------------------------------------------------------------------- // iLES: Create LESSolver or not. -// >= 1 - Create LESSolver; -// < 1 - not. +// == 1 - Create LESSolver; +// != 1 - not. // amplitudeofDisturb: Amplitude of adding disturb. // disturbstep: Unsteady time step or steady iteration of adding random disturb. // iterdisturb: Add random disturb in every sub-iter or only first sub-iter. @@ -676,8 +764,9 @@ int monitor_vistmax = 0; // utau: friction velocity, using in DNSDisturb. // sgsmodel: subgrid scale model. // = "smagorinsky"; -// = "dsm"; -// = "wale". +// = "dsmCom"; +// = "wale"; +// = "sigma". // deltaFunctionType: = 1 - MAX(deltai, deltaj, deltak); // = 2 - pow(deltai * deltaj *deltak, 1/3); // = 3 - Devloped by Scotti. @@ -700,9 +789,10 @@ string sgsmodel = "smagorinsky"; int deltaFunctionType = 2; int wallDampingFunctionType = 1; int turbViscousCutType = 2; -double smagConstant = 0.135; +double smagConstant = 0.1; double isotropicConstant = 0.0; double waleConstant = 0.6; +double sigmaConstant = 1.35; int filterDirection[] = [1, 1, 0]; int averageDirection[] = [0, 0, 0]; double testFilterScale = 2.0; @@ -724,12 +814,42 @@ int monitorNegativeConstant = 0; // nm: Equation number of the physics, but is out of commision now. // 4 -- for 2D. // 5 -- for 3D. -// nGasModel: The type of gas. +// nGasModel: The type of gas. less than and equal to 1 represents the mixture gas. +// Otherwise, the pure gas with one component is used for perfect gas. // 0 -- Earth gas. // 1 -- Mars gas. +// 2 -- Argon. +// 3 -- Nitrogen. +// nEnergyRecycle: The type of EnergyModel Recycle. +// 0 -- not used . +// 1 -- used. +// nDensityModify: The type of densitymodify. + +// 0 -- not used. +// 1 -- used. // nchem: // 0 -- without chemical reaction flow. // 1 -- the chemical reaction flow is considered. +// nEquilibriumGas: the variable is valid when the condition of nchem=0 is satisfied. +// 0 -- perfect gas. +// 5, 7, 11 -- equilibrium gas, meanwhile, its value denotes the number of gas component. +// nPCWCycleStep: the maximum step number of iteration in the module of computing species mass fractions with the partial catalytic wall(PCW) condition. +// the value equals to or is greater than 1, and 3 is for default value. +// nRETCycleStep: the maximum step number of iteration in the module of computing radiation equilibrium temperature on wall. +// the value equals to or is greater than 1, and 3 is for default value. +// nSLIPCycleStep:the maximum step number of iteration in the module of computing slip temperature, slip velocity and slip species mass fraction. +// the value equals to or is greater than 1, and 3 is for default value. +// nSlipBCModel : The computational model of slip boundary conditions. + +// 0 -- no slip. +// 1 -- the conventional Maxwell slip conditions. +// 2 -- the Gokcen slip conditions. +// 3 -- the Knudsen-layer correction of the standard slip conditions proposed by Lockerby, et al. +// 4 -- the Kogan simplified slip conditions. +// nMeanFreePathType : the method to the mean free-path for the slip conditions. For the mixture, 0 is suggested. +// 0 -- the equivalent mean free-path is calculated by the simple hard sphere model(HS). +// 1 -- calculated by the definition that includes the variables of the number density and the molecule diameter. +// 2 -- the equivalent mean free-path is calculated by the variable hard sphere model(VHS). // nchemsrc: // 0 -- the source terms are not computed. // 1 -- the source terms are computed. @@ -740,15 +860,72 @@ int monitorNegativeConstant = 0; // 1 -- One-temperature model. // 2 -- Two-temperature model. // 3 -- Three-temperature model. +// nTEnergyModel: the method to computing temperature energy model. +// 0 -- the energy term is computed using the conventional method. +// 1 -- the energy term is computed using the curve fitting method. +// parkVDPower: the power of translational-rotational temperature in the Park V-D(vibration-dissociation) coupling model. +// The value is in range of [0.0, 1.0], DPLR suggests 0.5, LAURA suggests 0.7, while 0.6 is given as default value. // catalyticCoef: // 0.0 -- full non-catalytic wall boundary condition. // 1.0 -- full catalytic wall boundary condition. // in range of (0.0, 1.0) -- partial catalytic condition, the value indicates the catalytic coefficient. +// nIsSuperCatalytic : the super catalytic condition for the fully catalytic wall, and assigned with the value of 1. +// 0 -- equilibrium condition for the fully catalytic wall where the mass fractions are assigned with the values of the free stream. +// 1 -- super catalytic condition for the fully catalytic wall where all the atomic components combine into molecular components. +// nTemperatureJump : the method to calculate the temperature jump. +// 0 -- calculated by the variables of heat conductivity and constant volume specific heat for each energy mode. +// 1 -- the general method where the iteration is calculated with the translation-rotation temperature. +// sigmaVelocity: the coordination coefficient of tangential momentum for computation of slip velocity. The value is in range of (0.0, 2.0]. +// sigmaTemperature: the heat coordination coefficient for computation of slip temperature. The value is in range of (0.0, 2.0]. +// sigmaMassFraction: the species coordination coefficient for computation of slip mass fractions. The value is in range of (0.0, 2.0]. +// velocitySlipCorrectConstant: the correction constant to the velocity slip condition. For the diffuse reflection, 1.0 is used. +// 1.0 -- proposed by Maxwell. +// sqrt(2/PI)~0.8 -- used for "micro-slip", namely the actual velocity slip at the wall. +// 1.146 -- proposed for an additional "fictitious" velocity slip. + +// chemicalRelaxCorf: The value is in range of [0.001, 1.0]. +// chemicalSpectrumRadiusCoef: The value is in range of [1.0, 3.0]. +// viscousSpectrumRadiusCoef : The value is in range of [1.0, 3.0]. +// inviscidSpectrumRadiusCoef: The value is in range of [1.0, 3.0]. +// staticPressureRelaxCorf: The value is in range of [0.1, 1.0]. +// nIsChemicalFreeze : the flag to freeze the chemical reactions. +// 0 -- not freeze, the chemical reaction sources will be calculated. +// 1 -- freezes the chemical reactions, the chemical reaction sources will not be calculated.// veTemperatureMin: The minimum of Tv and Te +// nDebug: cout the Wrong place and abort +// 0 -- not used. +// 1 -- used. +// nSpeciesLimit: limitter of gas species +// 0 -- not used. +// 1 -- used. +// nTurblenceForChemical: the coupled mode of Turblence and Chemical reaction +// 0 -- method 0. +// 1 -- method 1. +// nViscosityFluxSublevelModified: Modified for ViscosityFlux on Sublevel grid +// 0 -- not used. +// 1 -- used. +// nChemcalSourceModified: Modified on ChemcalSource +// 0 -- not used. +// 1 -- used. +// nAblation: +// 0 -- The wall ablation is not computed. +// 1 -- The wall ablation is computed. +// isInjection: +// 0 -- The injection velocity of ablation wall is not computed. +// 1 -- The injection velocity of ablation wall is computed. +// nViscosityModel: + +// 0 -- Blottner fitting method. +// 1 -- Gupta fitting method. +// nSutherland: +// 0 -- stands for selecting the Blotter curve fits mode. +// 1 -- stands for Sutherland relation. // gasfile: Indicates the gas model, 9 models are provided, namely "Gu5", "Gu7", "Gu11", "Pa5", "Pa7", "Pa11", "DK5", "DK7", "DK11". // "Gu" -- indicates the Gupta Model, three-Type Models are embeded in the library, namely, the 5-species-6-reactions, the 7-species-9-reactions, the 11-species-20-reactions. // "Pa" -- indicates the Park Model, three-Type Models are embeded in the library, namely, the 5-species-17-reactions, the 7-species-22-reactions, the 11-species-48-reactions. // "DK" -- indicates the Dunn-Kang Model, three-Type Models are embeded in the library, namely, the 5-species-11-reactions, the 7-species-15-reactions, the 11-species-26-reactions. // "Mars-Pa8" is for Park model of Mars gas, "Mars-Mc8" for McKenzie model of Mars gas. +// "Combustion-12" -- indicates the Combustion Chamber Gas Model which includes 12-species-20-reactions. +// "Gas-Mixture" -- indicates the process of mixing two species without reacting. // For self-definition model, the gasfile is used to indicate the file path of the new gas model. // speciesName: Used to list the names of each species, while each species name is separated by the symbol of comma. // initMassFraction: Used to list the initial mass fractions of species in accordance with the sequence of names in the parameter speciesName. @@ -758,6 +935,10 @@ int dg_high_order = 0; int iapplication = 0; int iCodeBranch = 0; int nm = 5; +int nEquilibriumGas = 0; +int nPCWCycleStep = 3; +int nRETCycleStep = 3; +int nSLIPCycleStep= 3; double refGama = 1.4; double prl = 0.72; @@ -770,23 +951,73 @@ int nchem = 0; int nchemsrc = 1; int nchemrad = 1; int ntmodel = 1; -int nChemicalFlowStep = 0; + +int nEnergyRecycle = 0; +int nSlipBCModel = 0; +int nDensityModify = 1; +int nTEnergyModel = 0; +int nMeanFreePathType = 0; +int nIsChemicalFreeze = 0; +int nIsSuperCatalytic = 1; +int nTemperatureJump = 0; + +double parkVDPower = 0.6; double catalyticCoef = 0.0; +double sigmaVelocity = 1.0; +double sigmaTemperature = 1.0; +double sigmaMassFraction = 1.0; +double velocitySlipCorrectConstant = 1.0; + +double chemicalRelaxCorf = 1.0; +double chemicalSpectrumRadiusCoef = 1.0; +double viscousSpectrumRadiusCoef = 1.0; +double inviscidSpectrumRadiusCoef = 1.0; +double staticPressureRelaxCorf = 1.0; + +double veTemperatureMin = 30.0; +int nDebug = 0; +int nSpeciesLimit = 0; +int nTurblenceForChemical = 0; +int nViscosityFluxSublevelModified = 0 ; +int nChemcalSourceModified = 0; + +int nAblation = 0; +int isInjection = 0; +int nViscosityModel = 0; +int nMarsModel = 0; string gasfile = "DK5"; //string gasfile = "./chemical/Dunn-Kang_air5s11r.dat"; string speciesName = "O, O2, NO, N, N2"; -string initMassFraction = "0.0, 0.23, 0.0, 0.0, 0.77"; +string initMassFraction = "0.0, 0.233, 0.0, 0.0, 0.767"; //string speciesName = "O, O2, NO, N, NO+, N2, e-"; -//string initMassFraction = "0.0, 0.23, 0.0, 0.0, 0.0, 0.77, 0.0"; +//string initMassFraction = "0.0, 0.233, 0.0, 0.0, 0.0, 0.767, 0.0"; //string speciesName = "O, O2, NO, N, O+, O2+, NO+, N+, N2+, N2, e-"; -//string initMassFraction = "0.0, 0.23, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.77, 0.0"; +//string initMassFraction = "0.0, 0.233, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.767, 0.0"; //string gasfile = "Mars-Pa8"; //string speciesName = "O, O2, NO, N, N2, C, CO, CO2"; //string initMassFraction = "0.0015, 0.0429, 0.0, 0.0, 0.0, 0.0, 0.0777, 0.8779"; +//string gasfile = "DK7"; +//string speciesName = "O, O2, NO, N, NO+, C, C2, CO, CO2, CN, N2, e-"; +//string initMassFraction = "0.0, 0.233, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.767, 0.0"; + +//string gasfile = "Combustion-12"; +//string speciesName = "O, O2, NO, N, C, CO, CO2, H, H2, OH, H2O, N2"; +//string initMassFraction = "0.0, 0.233, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.767"; + +//string gasfile = "Gas-Mixture"; +//string speciesName ="SpeciesA, SpeciesB"; +//string initMassFraction = "1.0, 0.0"; +int nSutherland = 0; +double gamaSpeciesA = 1.4; +double gamaSpeciesB = 1.3; +double molecularWeightSpeciesA = 29.0; +double molecularWeightSpeciesB = 30.0; + +int nChemicalFlowStep = 0; int ifStartFromPerfectGasResults = 0; ######################################################################### @@ -841,7 +1072,7 @@ string zoneInverseFileName = "./grid/zoneInverseMapping.inp"; ######################################################################### # High Order Struct Solver # ######################################################################### -// ifvfd: +// isFVMOrFDM: // 0 -- NSSolverStruct using Finite Volume Method. // 1 -- NSSolverStruct using Finite Differ Method. // SolverStructOrder: Spatial discretisation order of NS equations with struct grid. @@ -856,7 +1087,7 @@ string zoneInverseFileName = "./grid/zoneInverseMapping.inp"; // -- "roe", "steger". // structhighordergradient: // -- "conservation", "chain_rule". -int ifvfd = 0; +int isFVMOrFDM = 0; string str_highorder_solver = "WCNS"; int SolverStructOrder = 0; double str_highorder_interpolation_epsilon = 1.0e-6; @@ -885,8 +1116,12 @@ int allReduceStep = 1; // codeOfOversetGrid: Overlapping(overset) grid or not. // 0 -- NON-overlapping grid. // 1 -- Overlapping grid. +// oversetInterpolationMethod: the method of overset interpolation while field simulation +// 0 -- set the acceptor cell value by donor cell value. +// 1 -- set the acceptor cell value by distance weight of donor cell value. + int codeOfOversetGrid = 0; -int codeOfOversetSlipGrid = 0; +int oversetInterpolationMethod = 0; int readOversetFileOrNot = 0; int symetryOrNot = 0; int readInAuxiliaryInnerGrid = 1; @@ -895,7 +1130,7 @@ int readInSklFileOrNot = 0; string auxiliaryInnerGrid0 = "./grid/aux-upper.fts"; string auxiliaryInnerGrid1 = "./grid/aux-lower.fts"; string auxiliaryInnerGrid2 = ""; -string oversetGridFileName = "./grid/overlap.ovs"; +string oversetGridFileName = "./grid/iblank.ovs"; double walldistMainZone = 1.0 double toleranceForOversetSearch = 1.0e-3; double toleranceForOversetBox = 1.0e-3; @@ -905,16 +1140,78 @@ int outTecplotOverset = 0; int numberOfMovingBodies = 2; +// ----------------- ALE configuration ------------------------------ +int codeOfAleModel = 1; +int aleStartStrategy = -1; + +int strategyForFaceNormalVelocity = 0; //0-By Sweeping volume; 1-By face center 1st; 2-By face center 2nd; +int strategyForGCLSource = 0; //0-present; 1-Ahn; + +//0:1st-Admas-Bashforth; 1:2nd-Admas-Bashforth; 2:1st-Implicit-Euler; 3:2nd-Implicit Euler; 4:2nd-Adams-Moulton; 5:3rd-Adams-Moulton +int methodForKineticEquation = 0; +double relaxParameterOfKinetic = 1.0; + +######################################################################### +# motive information # +######################################################################### +int numberOfMovingBodies = 1; + +############################## body0 ############################## +//mass of parts +double mass_0 = 1.0; +//mass matrix of parts Ixx Iyy Izz Ixy Ixz Iyz +double massMatrix_0[] = 1e-7, 1e-6, 1e-6, 0.0, 0.0, 0.0; +//initial six DOF position information of parts. xc yc zc +double massCenter_0[] = 0.0 , 0.0, 0.0; +//initial six DOF position information of parts. angleX angleY angleZ +double attitudeAngle_0[] = 0.0 , 0.0, 0.0; +//initial six DOF move information of parts. vc vy vz +double massCenterVelocity_0[] = 0.0, 0.0, 0.0; +//initial six DOF move information of parts. omigX omigY omigZ +double angularVelocity_0[] = 0.0, 0.0, 0.0; +//the object that the parts belong to. +int fartherIndex_0 = -1; +//the assembly position of the parts. xc yc zc angleX angleY angleZ +double configPamameter_0[] = 0.0 ,0.0 ,0.0 ,0.0 ,0.0 ,0.0; +//the move pattern of the parts. +// -1 given motion partten. +// 0 still. +// 1 six DOF motion. +// 2 three DOF motion. +// 11 X-axis forced motion. +// 12 Y-axis forced motion. +// 13 Z-axis forced motion. +// 14 forced pitch motion. +// 15 forced yaw motion. +// 16 forced roll motion. +int RBDMethod_0 = 0; +double amplitude_0 = 0.0; +double reduceFrequency_0 = 0.0; +//string uDFSixDofFileName_0 = "./Bin/UDFSixDof.Parameter"; +//additional force (system axis) fX fY fZ +double addedForce_0[] = 0.0 ,0.0 ,0.0 ; +//additional moment of Force (system axis) mX mY mZ +double addedMoment_0[] = 0.0 ,0.0 ,0.0 ; +//the deformation method of the parts. +int morphing_0 = 0; + +// post indentify +int integralOrder = 4; + + // ---------------- ATP read -------------------------------------------- //@int inflowParaType = 0; -//@double refReNumber = 2.329418E08; -//@double refDimensionalTemperature = 288.144; -//@double refDimensionalPressure = 1.01313E05; -//@double height = -0.001; +//@double refReNumber = 6.5e6; +//@double refDimensionalTemperature = 288.15; +//@double freestream_vibration_temperature = 300.00; +//@double refDimensionalPressure = 0; +//@double height = 0; //@int nsubsonicInlet = 0; //@int nsubsonicOutlet = 0; //@string inLetFileName = "./bin/subsonicInlet.hypara"; //@string outLetFileName = "./bin/subsonicOutlet.hypara"; +//@double refDimensionalVelocity = 0; +//@double refDimensionalDensity = 0; ######################################################################### # Old Parameter # diff --git a/A02_TwoD_Plate_Laminar_Ma5_Struct_1CPU/bin/cfd_para_hypersonic.hypara b/A02_TwoD_Plate_Laminar_Ma5_Struct_1CPU/bin/cfd_para_hypersonic.hypara index 704857f..27f6752 100644 --- a/A02_TwoD_Plate_Laminar_Ma5_Struct_1CPU/bin/cfd_para_hypersonic.hypara +++ b/A02_TwoD_Plate_Laminar_Ma5_Struct_1CPU/bin/cfd_para_hypersonic.hypara @@ -61,9 +61,9 @@ double freestream_vibration_temperature = 10000.0; double gridScaleFactor = 0.001; -double forceRefenenceLengthSpanWise = 1.0; // unit of meter. -double forceRefenenceLength = 1.0; // unit of meter. -double forceRefenenceArea = 2.0; // unit of meter^2. +double forceReferenceLengthSpanWise = 1.0; // unit of meter. +double forceReferenceLength = 1.0; // unit of meter. +double forceReferenceArea = 2.0; // unit of meter^2. double TorqueRefX = 0.0; // unit of meter. double TorqueRefY = 0.0; // unit of meter. double TorqueRefZ = 0.0; // unit of meter. diff --git a/A03_TwoD_plate_SST_LowMach_Struct/bin/cfd_para.hypara b/A03_TwoD_plate_SST_LowMach_Struct/bin/cfd_para.hypara index df090b7..b17970c 100644 --- a/A03_TwoD_plate_SST_LowMach_Struct/bin/cfd_para.hypara +++ b/A03_TwoD_plate_SST_LowMach_Struct/bin/cfd_para.hypara @@ -21,6 +21,7 @@ // 1 -- Grid conversion, from other grid data to PHenglEI, such as Fluent, CGNS. // 2 -- Grid refinement. // 3 -- Grid merging, merge two blocks into one block. +// 4 -- Grid deformation, achieve unstructured grid deformation. // 5 -- Grid repairing, repair the original grid in order to remove the negative volume cells. // 6 -- Grid mirroring, mirror a symmetry grid to whole grid. // multiblock: Multi-block grid or not, only for structured grid conversion. @@ -72,13 +73,15 @@ int dumpOldGrid = 0; //----------------------------------------------------------------------- // from_gfile: path of original data file for unstructure grid convert from. // out_gfile: path of target file for grid convert to, *.fts type of file usually. +int numberOfGridFile = 1; string from_gfile = "./grid/rae2822_hybrid2d.cas"; +string from_gfile1= ""; + string out_gfile = "./grid/flat_laminr_133_85_2d.fts"; // ----------------- some advanced choices ------------------------------ // iunsteady: The Grid is for unsteady simulation or not. int iunsteady = 0; -int iale = 0; int codeOfAleModel = 0; // fileformat: Ustar Grid file format. @@ -122,15 +125,38 @@ int isDeform = 0; int exclusiveCase = 0; // 0: NON case; 1: JSM-C2-NPOFF case; 2: CHNT. int projectOrgPoint = 0; // if project original wall points. + +// ----------------- Grid Deform Parameters ----------------------------- +// deformationMethod: Grid Deform. +// 1 -- SPRING. +// 2 -- RBF. +// stationalGridFile: Original grid file. +// visualFileName : The visualization file path of deform grid. +// nDeformStep : The max deform step. +// flapAngle : The max flap angle. +// rotatePostionZ : Rotate postion. +// rotatePostionY : Rotate postion. +// gridSlice : If dump slice grid. +// sliceAxis : Grid slice axis. +// slicePosition : Grid slice position. +int nDeformStep = 40; +double flapAngle = 10.0; +double rotatePostionZ = 4.00003; +double rotatePostionY = 3.05; + +int deformationMethod = 2; +string stationalGridFile = "./grid/Segment2Brid.fts"; +string visualFileName = "./results/deformedGrid.dat" + +int gridSlice = 1; +int sliceAxis = 1; +double slicePosition = 13; + // ----------------- RBF Parameters ------------------------------------- -// symmetryPlane: Which symmetry plane is used in the mesh. -// 0 -- without symmetry. -// 1 -- plane of x=0. -// 2 -- plane of y=0. -// 3 -- plane of z=0. -int numberOfReferenceCP = 10; -double influenceRadius = 20; -int symmetryPlane = 3; // 1: plane of x=0; 2: plane of y=0; 3: plane of z=0; +// numberOfReferenceCP : Number of reference Control Points. +// influencePara : The RBF influence radius parameter. +int numberOfReferenceCP = 40; +double influencePara = 25.0; // ----------------- Periodic Parameters -------------------------------- // Notice: Rotational periodicity only support rotation along the X axis! @@ -138,6 +164,11 @@ int symmetryPlane = 3; // 1: plane of x=0; 2: plane of y=0; 3: plane of // 0 -- without Periodic Boundary. // 1 -- Translational periodicity. // 2 -- Rotational periodicity. +// translationLength[]: The relative distance between two periodic face + which only support one direction. +// rotationAngle: The relative angle between two periodic face. + which is recorded in degrees. + int periodicType = 0; double translationLength[] = [0.0,0.0,0.0]; double rotationAngle = 0.0; @@ -180,7 +211,7 @@ string partition_grid_file = "./grid/sphere_mixed__4.fts"; // 0 -- Interface. (default) // 1 -- Physical boundary condition, used in Hybrid solver. // npartmethod: Method of interface reconstruction, default is 1. -// parallelPartMethod: Method of parallel partition, this is set only when execute parallel partition. It would be skipped when serial partition. +// parallelPartitionMethod: Method of parallel partition, this is set only when execute parallel partition. It would be skipped when serial partition. // 1 -- Using ParMetis for homogeneous MPI. // 2 -- Using Metis for homogeneous MPI. // 3 -- using METIS partition for homogeneous OpenMP. @@ -238,6 +269,8 @@ int compressible = 1; // 1 -- the flight conditions. // 2 -- the experiment conditions. // 3 -- the subsonic boundary conditions. +// 4 -- the condition that the velocity, temperature and density are given. +// 5 -- the condition that the velocity, temperature and pressure are given. // refReNumber: Reynolds number, which is based unit length, unit of 1/m. // refDimensionalTemperature: Dimensional reference temperature, or the total temperature only for the experiment condition. // freestream_vibration_temperature: Dimensional freestream vibration temperature. @@ -251,10 +284,12 @@ int compressible = 1; // 1 inch = 0.0254m. // 1 foot = 12 inches = 0.3048m. // 1 yard = 3 feet = 0.9144m. -// forceRefenenceLength, forceRefenenceLengthSpanWise, forceRefenenceArea: Reference length, SpanWise length and area, independent of grid unit. +// forceReferenceLength, forceReferenceLengthSpanWise, forceReferenceArea: Reference length, SpanWise length and area, independent of grid unit. // TorqueRefX, TorqueRefY, TorqueRefZ: Reference point, independent of grid unit. // radiationCoef: The radiation coefficient on wall, it is used to compute the radiation heat flux on wall when the boundary // condition is radiation equilibrium temperature, and 0.8 is the default value. +// refMolecularWeight : the reference molecular weight of gas used for perfect gas. The unit is g/mol. +// Generally, the gas is air. Sometimes, it is experiment gas, such as Nitrogen, Argon, and so on. double refMachNumber = 0.73; double attackd = 2.79; @@ -263,7 +298,7 @@ double angleSlide = 0.00; int inflowParaType = 0; double refReNumber = 6.5e6; double refDimensionalTemperature = 288.15; -double freestream_vibration_temperature = 10000.00; +double freestream_vibration_temperature = 300.00; //int inflowParaType = 1; //double height = 0.001; @@ -280,18 +315,34 @@ double freestream_vibration_temperature = 10000.00; //double refDimensionalTemperature = 288.144; //double refDimensionalPressure = 1.01313E05; +//The velocity, temperature and density are fixed. +//int inflowParaType = 4; +//double refDimensionalVelocity = 1000.0; +//double refDimensionalDensity = 1.0e3; + +//The velocity, temperature and pressure are fixed. +//int inflowParaType = 5; +//double refDimensionalVelocity = 1000.0; +//double refDimensionalPressure = 1.0e5; + +//The MachNumber, temperature and pressure are fixed. +//int inflowParaType = 6; +//double refDimensionalTemperature = 293; +//double refDimensionalPressure = 8886.06; + double wallTemperature = -1.0; double radiationCoef = 0.8; double gridScaleFactor = 1.0; int numberOfAerodynamicForceComponents = 1; -double forceRefenenceLengthSpanWise = 1.0; // unit of meter. -double forceRefenenceLength = 1.0; // unit of meter. -double forceRefenenceArea = 1.0; // unit of meter^2. +double forceReferenceLengthSpanWise = 1.0; // unit of meter. +double forceReferenceLength = 1.0; // unit of meter. +double forceReferenceArea = 1.0; // unit of meter^2. double TorqueRefX = 0.0; // unit of meter. double TorqueRefY = 0.0; // unit of meter. double TorqueRefZ = 0.0; // unit of meter. +double refMolecularWeight = 28.9644; // unit of g/mol. //----------------------------------------------------------------------- # Spatial Discretisation # @@ -303,7 +354,7 @@ double TorqueRefZ = 0.0; // unit of meter. // Using this when solve structered grid or hybrid. // -- "vanleer", "steger", "hlle", "lax_f". // -- "roe", "modified_roe". -// -- "ausm+", "ausm+w", "ausm+up", "ausmdv", "ausmpw". +// -- "ausm+", "ausm+w", "ausm+up", "ausmdv", "ausmpw", "ausmpw+". // str_limiter_name: Limiter of struct grid. // -- "vanalbada", "vanleer", "minmod", "smooth", "minvan", "3rdsmooth", "3rd_minmod_smooth". // -- "nolim", no limiter. @@ -339,14 +390,14 @@ string str_limiter_name = "vanalbada"; // uns_scheme_name: Spatial discretisation scheme of Unstruct grid. // Using this when solve Unstructered grid or hybrid. // -- "vanleer", "roe", "steger", "kfvs", "lax_f", "hlle". -// -- "ausm+", "ausmdv", "ausm+w", "ausmpw", "ausmpwplus". +// -- "ausm+", "ausmdv", "ausm+w", "ausmpw", "ausmpw+". // uns_limiter_name: Limiter of Unstruct grid. // -- "barth", "vencat", "vanleer", "minmod". // -- "vanalbada", "smooth", "nnd", "lpz", "1st". // -- "nolim", no limiter. // uns_vis_name: Discretisation method of viscous term. // -- "std", "test", "aver", "new1", "new2". -// uns_gradient: Gradient reconstruction method. +// gradientName: Gradient reconstruction method. // -- "default", "ggcell", "ggnode", "lsq". // ivencat: Variation of vencat limiter. // 0 -- org method, it is independent of grid scale. @@ -408,9 +459,15 @@ double roeEntropyScale = 1.0; // 1 -- unsteay. // physicalTimeStep: The nondimensional physical time step. // ifStartFromSteadyResults: The unsteady simulation is start from steady flowfield or not, 0 is for no and else is for yes. -// ifStaticsFlowField: Statistical variables for DES simulation. +// ifStaticsFlowField: Statistical variables for unsteady simulation. +// ifStaticsReynoldsStress: Statistical Reynolds stress for unsteady simulation. // startStatisticStep: Outer step when start statistics. // when the value is larger than "maxSimuStep", it is useless. +// statisticalTimePeriod: Used as time period of statistic analysis. +// when the value is negative, time period is treated as infinite. +// statisticMethod: Statistic reynolds stress method. + 0 --tau = - ^2 + 1 --tau = // min_sub_iter: The min sub iteration of unsteady simulation. // max_sub_iter: The max sub iteration of unsteady simulation. // tol_sub_iter: The tolerance of sub iteration of unsteady simulation. @@ -454,7 +511,10 @@ int iunsteady = 0; double physicalTimeStep = 0.01; int ifStartFromSteadyResults = 0; int ifStaticsFlowField = 0; +int ifStaticsReynoldsStress = 0; int startStatisticStep = 800000; +double statisticalTimePeriod = -1.0; +int statisticMethod = 0; int linearTwoStepMethods = 1; // 1--BDF1; 2--C-N; 3--BDF2; int methodOfDualTime = 3; @@ -482,8 +542,6 @@ double turbCFLScale = 1.0; double csrv = 2.0; double timemax = 1.0e10; double dtsave = -1.0; -int codeOfAleModel = 0; -int aleStartStrategy = -1; int maxale = 10; double dtau = 0.001; @@ -524,6 +582,7 @@ double lamda[] = 0.5, 1.0; int numberOfGridGroups = 1; string gridfile = "./grid/rae2822_hybrid2d__4.fts"; +string wallTemperaturefile= ""; int walldistMethod = 1; @@ -536,15 +595,16 @@ string turbfile = "results/turb.dat"; string visualfile = "results/tecflow.plt"; string wall_aircoefile = "results/wall_aircoef.dat"; -string probesflowfile = "results/sample.dat"; +string samplefile = "results/sample.dat"; int nDumpSurfaceInfo = 0; string wall_varfile = ""; string jetDefineFile = "bin/jet.hypara"; -string overset_gridfile = "results/iblank.ovs"; string sixDofFileName = "results/sixDofInfo.dat"; +string derivativeFileName = "results/identify.dat"; +string hysteresisFileName = "results/force_beta.plt"; int plotFieldType = 0; @@ -554,6 +614,11 @@ int plotFieldType = 0; int visualfileType = 1; +// samplefileMode: The dump mode of sample file. +// 0 -- dump out every probe/line/surface data for all step intervals. +// 1 -- dump out all probe/line/surface data for every step intervals. +int samplefileMode = 0; + // visualSlice: The slice of tecflow. // 0 -- Do not save slice data. // 1 -- comput and save it to sliceFile. @@ -567,11 +632,13 @@ int visualSlice = 0; int sliceAxis = 1; double slicePostion = -0.5; string sliceFile = "results/Slice.plt"; +int dumpWallFaceCenter = 0; // min-max box of the visual block. double lowerPlotFieldBox[] = [0.0 0.0 0.0]; double upperPlotFieldBox[] = [1.0 1.0 1.0]; +//-----------the optional parameters list for the flow field output---------------- // nVisualVariables: Number of variables want to be dumped for tecplot visualization. // visualVariables : Variable types dumped, listed as following: // -- density(0), u(1), v(2), w(3), pressure(4), temperature(5), mach(6), @@ -582,11 +649,27 @@ double upperPlotFieldBox[] = [1.0 1.0 1.0]; // -- vibration temperature(Tv, 33), electron temperature(Te, 34), vibrational energy(Ev, 35), electric energy(Ee, 36), // -- number density of electron(Ne, 37), dimensioanl density(rho, 38), dimensioanl pressure(p, 39), dimensioanl temperature(T, 40), // -- gradientUx(41), gradientUy(42), gradientVx(43), gradientVy(44), iblank(81). +// -- specific heat ratio(gama, 56) // Important Warning: Array size of visualVariables MUST be equal to nVisualVariables!!! // Variables order must from small to big. +//-----------the optional parameters list for the wall boundary condition---------------- +// nVisualWallVariables: The number of visual variables on wall. +// visualWallVariables : dumped variable types, listed as following: +// -coefficient of pressure(cp, 0), -coefficient of friction(cf, 1), yplus(2), -non-dimensional heat flux(Q_NonDim, 3), -dimensional heat flux(Q_Dim, 4), +// -pressure on wall(pw, 5), -temperature on wall(Tw, 6), -density on wall(rhow, 7), -heat flux of translational-rotational temperature term(Qtr, 8), +// -heat flux of species diffusion term(Qs, 9), -heat flux of vibrational temperature term(Qv, 10), -heat flux of electron temperature term(Qe, 11), +// -species mass fractions(Ns, 12), -x component of wall velocity(Vx, 13), -y component of wall velocity(Vy, 14), -z component of wall velocity(Vz, 15) +// -slip translational-rotational temperature(Tts, 16), -slip vibrational temperature(Tvs, 17), -slip electron temperature(Tes, 18), -absolute wall velocity(Vs, 19) +// -Stanton number(St, 20), -coefficient of heat rate(Ch, 21), -temperature jump(deltaT, 22), -transition gamaeff(gamaeff, 48), +// -transition intermittency(intermittency, 51), -transition momentum thickness reynolds(MomentumThicknessReynolds, 52), +// -overlap iblank(iblank, 81) + int nVisualVariables = 8; int visualVariables[] = [0, 1, 2, 3, 4, 5, 6, 15]; +int nVisualWallVariables = 9; +int visualWallVariables[] = [0, 1, 2, 3, 4, 5, 9, 10, 11]; + // dumpStandardModel: Dump many standard model data. // 1 -- Turbulent flat plate. int dumpStandardModel = 0; @@ -644,6 +727,7 @@ int probeVariablesInterpolationMethod = 0; // mod_turb_res: If modify the residuals for the cells next to the wall or not, default is 0. int turbInterval = 1; +int turbOrderStruct = 2; int kindOfTurbSource = 0; int mod_turb_res = 0; double turb_relax = 1.0; @@ -652,6 +736,10 @@ double muoo = 3.0; double kwoo = 5.0; int transitionType = 0; double turbIntensity = -1.0; +int freeturbIntensitySRModify = 0; +double freeDecayXLocation = 0.0; +int compressibleCorrection = 0; +int transitionMaFix = 1; # maximum eddy viscosity (myt/my) max. double eddyViscosityLimit = 1.0e10; @@ -661,8 +749,8 @@ int monitor_vistmax = 0; # LES Parameter # //----------------------------------------------------------------------- // iLES: Create LESSolver or not. -// >= 1 - Create LESSolver; -// < 1 - not. +// == 1 - Create LESSolver; +// != 1 - not. // amplitudeofDisturb: Amplitude of adding disturb. // disturbstep: Unsteady time step or steady iteration of adding random disturb. // iterdisturb: Add random disturb in every sub-iter or only first sub-iter. @@ -676,8 +764,9 @@ int monitor_vistmax = 0; // utau: friction velocity, using in DNSDisturb. // sgsmodel: subgrid scale model. // = "smagorinsky"; -// = "dsm"; -// = "wale". +// = "dsmCom"; +// = "wale"; +// = "sigma". // deltaFunctionType: = 1 - MAX(deltai, deltaj, deltak); // = 2 - pow(deltai * deltaj *deltak, 1/3); // = 3 - Devloped by Scotti. @@ -700,9 +789,10 @@ string sgsmodel = "smagorinsky"; int deltaFunctionType = 2; int wallDampingFunctionType = 1; int turbViscousCutType = 2; -double smagConstant = 0.135; +double smagConstant = 0.1; double isotropicConstant = 0.0; double waleConstant = 0.6; +double sigmaConstant = 1.35; int filterDirection[] = [1, 1, 0]; int averageDirection[] = [0, 0, 0]; double testFilterScale = 2.0; @@ -724,12 +814,42 @@ int monitorNegativeConstant = 0; // nm: Equation number of the physics, but is out of commision now. // 4 -- for 2D. // 5 -- for 3D. -// nGasModel: The type of gas. +// nGasModel: The type of gas. less than and equal to 1 represents the mixture gas. +// Otherwise, the pure gas with one component is used for perfect gas. // 0 -- Earth gas. // 1 -- Mars gas. +// 2 -- Argon. +// 3 -- Nitrogen. +// nEnergyRecycle: The type of EnergyModel Recycle. +// 0 -- not used . +// 1 -- used. +// nDensityModify: The type of densitymodify. + +// 0 -- not used. +// 1 -- used. // nchem: // 0 -- without chemical reaction flow. // 1 -- the chemical reaction flow is considered. +// nEquilibriumGas: the variable is valid when the condition of nchem=0 is satisfied. +// 0 -- perfect gas. +// 5, 7, 11 -- equilibrium gas, meanwhile, its value denotes the number of gas component. +// nPCWCycleStep: the maximum step number of iteration in the module of computing species mass fractions with the partial catalytic wall(PCW) condition. +// the value equals to or is greater than 1, and 3 is for default value. +// nRETCycleStep: the maximum step number of iteration in the module of computing radiation equilibrium temperature on wall. +// the value equals to or is greater than 1, and 3 is for default value. +// nSLIPCycleStep:the maximum step number of iteration in the module of computing slip temperature, slip velocity and slip species mass fraction. +// the value equals to or is greater than 1, and 3 is for default value. +// nSlipBCModel : The computational model of slip boundary conditions. + +// 0 -- no slip. +// 1 -- the conventional Maxwell slip conditions. +// 2 -- the Gokcen slip conditions. +// 3 -- the Knudsen-layer correction of the standard slip conditions proposed by Lockerby, et al. +// 4 -- the Kogan simplified slip conditions. +// nMeanFreePathType : the method to the mean free-path for the slip conditions. For the mixture, 0 is suggested. +// 0 -- the equivalent mean free-path is calculated by the simple hard sphere model(HS). +// 1 -- calculated by the definition that includes the variables of the number density and the molecule diameter. +// 2 -- the equivalent mean free-path is calculated by the variable hard sphere model(VHS). // nchemsrc: // 0 -- the source terms are not computed. // 1 -- the source terms are computed. @@ -740,15 +860,72 @@ int monitorNegativeConstant = 0; // 1 -- One-temperature model. // 2 -- Two-temperature model. // 3 -- Three-temperature model. +// nTEnergyModel: the method to computing temperature energy model. +// 0 -- the energy term is computed using the conventional method. +// 1 -- the energy term is computed using the curve fitting method. +// parkVDPower: the power of translational-rotational temperature in the Park V-D(vibration-dissociation) coupling model. +// The value is in range of [0.0, 1.0], DPLR suggests 0.5, LAURA suggests 0.7, while 0.6 is given as default value. // catalyticCoef: // 0.0 -- full non-catalytic wall boundary condition. // 1.0 -- full catalytic wall boundary condition. // in range of (0.0, 1.0) -- partial catalytic condition, the value indicates the catalytic coefficient. +// nIsSuperCatalytic : the super catalytic condition for the fully catalytic wall, and assigned with the value of 1. +// 0 -- equilibrium condition for the fully catalytic wall where the mass fractions are assigned with the values of the free stream. +// 1 -- super catalytic condition for the fully catalytic wall where all the atomic components combine into molecular components. +// nTemperatureJump : the method to calculate the temperature jump. +// 0 -- calculated by the variables of heat conductivity and constant volume specific heat for each energy mode. +// 1 -- the general method where the iteration is calculated with the translation-rotation temperature. +// sigmaVelocity: the coordination coefficient of tangential momentum for computation of slip velocity. The value is in range of (0.0, 2.0]. +// sigmaTemperature: the heat coordination coefficient for computation of slip temperature. The value is in range of (0.0, 2.0]. +// sigmaMassFraction: the species coordination coefficient for computation of slip mass fractions. The value is in range of (0.0, 2.0]. +// velocitySlipCorrectConstant: the correction constant to the velocity slip condition. For the diffuse reflection, 1.0 is used. +// 1.0 -- proposed by Maxwell. +// sqrt(2/PI)~0.8 -- used for "micro-slip", namely the actual velocity slip at the wall. +// 1.146 -- proposed for an additional "fictitious" velocity slip. + +// chemicalRelaxCorf: The value is in range of [0.001, 1.0]. +// chemicalSpectrumRadiusCoef: The value is in range of [1.0, 3.0]. +// viscousSpectrumRadiusCoef : The value is in range of [1.0, 3.0]. +// inviscidSpectrumRadiusCoef: The value is in range of [1.0, 3.0]. +// staticPressureRelaxCorf: The value is in range of [0.1, 1.0]. +// nIsChemicalFreeze : the flag to freeze the chemical reactions. +// 0 -- not freeze, the chemical reaction sources will be calculated. +// 1 -- freezes the chemical reactions, the chemical reaction sources will not be calculated.// veTemperatureMin: The minimum of Tv and Te +// nDebug: cout the Wrong place and abort +// 0 -- not used. +// 1 -- used. +// nSpeciesLimit: limitter of gas species +// 0 -- not used. +// 1 -- used. +// nTurblenceForChemical: the coupled mode of Turblence and Chemical reaction +// 0 -- method 0. +// 1 -- method 1. +// nViscosityFluxSublevelModified: Modified for ViscosityFlux on Sublevel grid +// 0 -- not used. +// 1 -- used. +// nChemcalSourceModified: Modified on ChemcalSource +// 0 -- not used. +// 1 -- used. +// nAblation: +// 0 -- The wall ablation is not computed. +// 1 -- The wall ablation is computed. +// isInjection: +// 0 -- The injection velocity of ablation wall is not computed. +// 1 -- The injection velocity of ablation wall is computed. +// nViscosityModel: + +// 0 -- Blottner fitting method. +// 1 -- Gupta fitting method. +// nSutherland: +// 0 -- stands for selecting the Blotter curve fits mode. +// 1 -- stands for Sutherland relation. // gasfile: Indicates the gas model, 9 models are provided, namely "Gu5", "Gu7", "Gu11", "Pa5", "Pa7", "Pa11", "DK5", "DK7", "DK11". // "Gu" -- indicates the Gupta Model, three-Type Models are embeded in the library, namely, the 5-species-6-reactions, the 7-species-9-reactions, the 11-species-20-reactions. // "Pa" -- indicates the Park Model, three-Type Models are embeded in the library, namely, the 5-species-17-reactions, the 7-species-22-reactions, the 11-species-48-reactions. // "DK" -- indicates the Dunn-Kang Model, three-Type Models are embeded in the library, namely, the 5-species-11-reactions, the 7-species-15-reactions, the 11-species-26-reactions. // "Mars-Pa8" is for Park model of Mars gas, "Mars-Mc8" for McKenzie model of Mars gas. +// "Combustion-12" -- indicates the Combustion Chamber Gas Model which includes 12-species-20-reactions. +// "Gas-Mixture" -- indicates the process of mixing two species without reacting. // For self-definition model, the gasfile is used to indicate the file path of the new gas model. // speciesName: Used to list the names of each species, while each species name is separated by the symbol of comma. // initMassFraction: Used to list the initial mass fractions of species in accordance with the sequence of names in the parameter speciesName. @@ -758,6 +935,10 @@ int dg_high_order = 0; int iapplication = 0; int iCodeBranch = 0; int nm = 5; +int nEquilibriumGas = 0; +int nPCWCycleStep = 3; +int nRETCycleStep = 3; +int nSLIPCycleStep= 3; double refGama = 1.4; double prl = 0.72; @@ -770,23 +951,73 @@ int nchem = 0; int nchemsrc = 1; int nchemrad = 1; int ntmodel = 1; -int nChemicalFlowStep = 0; + +int nEnergyRecycle = 0; +int nSlipBCModel = 0; +int nDensityModify = 1; +int nTEnergyModel = 0; +int nMeanFreePathType = 0; +int nIsChemicalFreeze = 0; +int nIsSuperCatalytic = 1; +int nTemperatureJump = 0; + +double parkVDPower = 0.6; double catalyticCoef = 0.0; +double sigmaVelocity = 1.0; +double sigmaTemperature = 1.0; +double sigmaMassFraction = 1.0; +double velocitySlipCorrectConstant = 1.0; + +double chemicalRelaxCorf = 1.0; +double chemicalSpectrumRadiusCoef = 1.0; +double viscousSpectrumRadiusCoef = 1.0; +double inviscidSpectrumRadiusCoef = 1.0; +double staticPressureRelaxCorf = 1.0; + +double veTemperatureMin = 30.0; +int nDebug = 0; +int nSpeciesLimit = 0; +int nTurblenceForChemical = 0; +int nViscosityFluxSublevelModified = 0 ; +int nChemcalSourceModified = 0; + +int nAblation = 0; +int isInjection = 0; +int nViscosityModel = 0; +int nMarsModel = 0; string gasfile = "DK5"; //string gasfile = "./chemical/Dunn-Kang_air5s11r.dat"; string speciesName = "O, O2, NO, N, N2"; -string initMassFraction = "0.0, 0.23, 0.0, 0.0, 0.77"; +string initMassFraction = "0.0, 0.233, 0.0, 0.0, 0.767"; //string speciesName = "O, O2, NO, N, NO+, N2, e-"; -//string initMassFraction = "0.0, 0.23, 0.0, 0.0, 0.0, 0.77, 0.0"; +//string initMassFraction = "0.0, 0.233, 0.0, 0.0, 0.0, 0.767, 0.0"; //string speciesName = "O, O2, NO, N, O+, O2+, NO+, N+, N2+, N2, e-"; -//string initMassFraction = "0.0, 0.23, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.77, 0.0"; +//string initMassFraction = "0.0, 0.233, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.767, 0.0"; //string gasfile = "Mars-Pa8"; //string speciesName = "O, O2, NO, N, N2, C, CO, CO2"; //string initMassFraction = "0.0015, 0.0429, 0.0, 0.0, 0.0, 0.0, 0.0777, 0.8779"; +//string gasfile = "DK7"; +//string speciesName = "O, O2, NO, N, NO+, C, C2, CO, CO2, CN, N2, e-"; +//string initMassFraction = "0.0, 0.233, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.767, 0.0"; + +//string gasfile = "Combustion-12"; +//string speciesName = "O, O2, NO, N, C, CO, CO2, H, H2, OH, H2O, N2"; +//string initMassFraction = "0.0, 0.233, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.767"; + +//string gasfile = "Gas-Mixture"; +//string speciesName ="SpeciesA, SpeciesB"; +//string initMassFraction = "1.0, 0.0"; +int nSutherland = 0; +double gamaSpeciesA = 1.4; +double gamaSpeciesB = 1.3; +double molecularWeightSpeciesA = 29.0; +double molecularWeightSpeciesB = 30.0; + +int nChemicalFlowStep = 0; int ifStartFromPerfectGasResults = 0; ######################################################################### @@ -841,7 +1072,7 @@ string zoneInverseFileName = "./grid/zoneInverseMapping.inp"; ######################################################################### # High Order Struct Solver # ######################################################################### -// ifvfd: +// isFVMOrFDM: // 0 -- NSSolverStruct using Finite Volume Method. // 1 -- NSSolverStruct using Finite Differ Method. // SolverStructOrder: Spatial discretisation order of NS equations with struct grid. @@ -856,7 +1087,7 @@ string zoneInverseFileName = "./grid/zoneInverseMapping.inp"; // -- "roe", "steger". // structhighordergradient: // -- "conservation", "chain_rule". -int ifvfd = 0; +int isFVMOrFDM = 0; string str_highorder_solver = "WCNS"; int SolverStructOrder = 0; double str_highorder_interpolation_epsilon = 1.0e-6; @@ -885,8 +1116,12 @@ int allReduceStep = 1; // codeOfOversetGrid: Overlapping(overset) grid or not. // 0 -- NON-overlapping grid. // 1 -- Overlapping grid. +// oversetInterpolationMethod: the method of overset interpolation while field simulation +// 0 -- set the acceptor cell value by donor cell value. +// 1 -- set the acceptor cell value by distance weight of donor cell value. + int codeOfOversetGrid = 0; -int codeOfOversetSlipGrid = 0; +int oversetInterpolationMethod = 0; int readOversetFileOrNot = 0; int symetryOrNot = 0; int readInAuxiliaryInnerGrid = 1; @@ -895,7 +1130,7 @@ int readInSklFileOrNot = 0; string auxiliaryInnerGrid0 = "./grid/aux-upper.fts"; string auxiliaryInnerGrid1 = "./grid/aux-lower.fts"; string auxiliaryInnerGrid2 = ""; -string oversetGridFileName = "./grid/overlap.ovs"; +string oversetGridFileName = "./grid/iblank.ovs"; double walldistMainZone = 1.0 double toleranceForOversetSearch = 1.0e-3; double toleranceForOversetBox = 1.0e-3; @@ -905,16 +1140,78 @@ int outTecplotOverset = 0; int numberOfMovingBodies = 2; +// ----------------- ALE configuration ------------------------------ +int codeOfAleModel = 1; +int aleStartStrategy = -1; + +int strategyForFaceNormalVelocity = 0; //0-By Sweeping volume; 1-By face center 1st; 2-By face center 2nd; +int strategyForGCLSource = 0; //0-present; 1-Ahn; + +//0:1st-Admas-Bashforth; 1:2nd-Admas-Bashforth; 2:1st-Implicit-Euler; 3:2nd-Implicit Euler; 4:2nd-Adams-Moulton; 5:3rd-Adams-Moulton +int methodForKineticEquation = 0; +double relaxParameterOfKinetic = 1.0; + +######################################################################### +# motive information # +######################################################################### +int numberOfMovingBodies = 1; + +############################## body0 ############################## +//mass of parts +double mass_0 = 1.0; +//mass matrix of parts Ixx Iyy Izz Ixy Ixz Iyz +double massMatrix_0[] = 1e-7, 1e-6, 1e-6, 0.0, 0.0, 0.0; +//initial six DOF position information of parts. xc yc zc +double massCenter_0[] = 0.0 , 0.0, 0.0; +//initial six DOF position information of parts. angleX angleY angleZ +double attitudeAngle_0[] = 0.0 , 0.0, 0.0; +//initial six DOF move information of parts. vc vy vz +double massCenterVelocity_0[] = 0.0, 0.0, 0.0; +//initial six DOF move information of parts. omigX omigY omigZ +double angularVelocity_0[] = 0.0, 0.0, 0.0; +//the object that the parts belong to. +int fartherIndex_0 = -1; +//the assembly position of the parts. xc yc zc angleX angleY angleZ +double configPamameter_0[] = 0.0 ,0.0 ,0.0 ,0.0 ,0.0 ,0.0; +//the move pattern of the parts. +// -1 given motion partten. +// 0 still. +// 1 six DOF motion. +// 2 three DOF motion. +// 11 X-axis forced motion. +// 12 Y-axis forced motion. +// 13 Z-axis forced motion. +// 14 forced pitch motion. +// 15 forced yaw motion. +// 16 forced roll motion. +int RBDMethod_0 = 0; +double amplitude_0 = 0.0; +double reduceFrequency_0 = 0.0; +//string uDFSixDofFileName_0 = "./Bin/UDFSixDof.Parameter"; +//additional force (system axis) fX fY fZ +double addedForce_0[] = 0.0 ,0.0 ,0.0 ; +//additional moment of Force (system axis) mX mY mZ +double addedMoment_0[] = 0.0 ,0.0 ,0.0 ; +//the deformation method of the parts. +int morphing_0 = 0; + +// post indentify +int integralOrder = 4; + + // ---------------- ATP read -------------------------------------------- //@int inflowParaType = 0; -//@double refReNumber = 2.329418E08; -//@double refDimensionalTemperature = 288.144; -//@double refDimensionalPressure = 1.01313E05; -//@double height = -0.001; +//@double refReNumber = 6.5e6; +//@double refDimensionalTemperature = 288.15; +//@double freestream_vibration_temperature = 300.00; +//@double refDimensionalPressure = 0; +//@double height = 0; //@int nsubsonicInlet = 0; //@int nsubsonicOutlet = 0; //@string inLetFileName = "./bin/subsonicInlet.hypara"; //@string outLetFileName = "./bin/subsonicOutlet.hypara"; +//@double refDimensionalVelocity = 0; +//@double refDimensionalDensity = 0; ######################################################################### # Old Parameter # diff --git a/A03_TwoD_plate_SST_LowMach_Struct/bin/cfd_para_subsonic.hypara b/A03_TwoD_plate_SST_LowMach_Struct/bin/cfd_para_subsonic.hypara index 3798b7e..bd8f18a 100644 --- a/A03_TwoD_plate_SST_LowMach_Struct/bin/cfd_para_subsonic.hypara +++ b/A03_TwoD_plate_SST_LowMach_Struct/bin/cfd_para_subsonic.hypara @@ -57,9 +57,9 @@ double refDimensionalTemperature = 288.15; double gridScaleFactor = 0.001; -double forceRefenenceLengthSpanWise = 1.0; // unit of meter. -double forceRefenenceLength = 1.0; // unit of meter. -double forceRefenenceArea = 2.0; // unit of meter^2. +double forceReferenceLengthSpanWise = 1.0; // unit of meter. +double forceReferenceLength = 1.0; // unit of meter. +double forceReferenceArea = 2.0; // unit of meter^2. double TorqueRefX = 0.0; // unit of meter. double TorqueRefY = 0.0; // unit of meter. double TorqueRefZ = 0.0; // unit of meter. diff --git a/A04_TwoD_Plate_SST_Ma5_Struct_1CPU/bin/cfd_para.hypara b/A04_TwoD_Plate_SST_Ma5_Struct_1CPU/bin/cfd_para.hypara index df090b7..b17970c 100644 --- a/A04_TwoD_Plate_SST_Ma5_Struct_1CPU/bin/cfd_para.hypara +++ b/A04_TwoD_Plate_SST_Ma5_Struct_1CPU/bin/cfd_para.hypara @@ -21,6 +21,7 @@ // 1 -- Grid conversion, from other grid data to PHenglEI, such as Fluent, CGNS. // 2 -- Grid refinement. // 3 -- Grid merging, merge two blocks into one block. +// 4 -- Grid deformation, achieve unstructured grid deformation. // 5 -- Grid repairing, repair the original grid in order to remove the negative volume cells. // 6 -- Grid mirroring, mirror a symmetry grid to whole grid. // multiblock: Multi-block grid or not, only for structured grid conversion. @@ -72,13 +73,15 @@ int dumpOldGrid = 0; //----------------------------------------------------------------------- // from_gfile: path of original data file for unstructure grid convert from. // out_gfile: path of target file for grid convert to, *.fts type of file usually. +int numberOfGridFile = 1; string from_gfile = "./grid/rae2822_hybrid2d.cas"; +string from_gfile1= ""; + string out_gfile = "./grid/flat_laminr_133_85_2d.fts"; // ----------------- some advanced choices ------------------------------ // iunsteady: The Grid is for unsteady simulation or not. int iunsteady = 0; -int iale = 0; int codeOfAleModel = 0; // fileformat: Ustar Grid file format. @@ -122,15 +125,38 @@ int isDeform = 0; int exclusiveCase = 0; // 0: NON case; 1: JSM-C2-NPOFF case; 2: CHNT. int projectOrgPoint = 0; // if project original wall points. + +// ----------------- Grid Deform Parameters ----------------------------- +// deformationMethod: Grid Deform. +// 1 -- SPRING. +// 2 -- RBF. +// stationalGridFile: Original grid file. +// visualFileName : The visualization file path of deform grid. +// nDeformStep : The max deform step. +// flapAngle : The max flap angle. +// rotatePostionZ : Rotate postion. +// rotatePostionY : Rotate postion. +// gridSlice : If dump slice grid. +// sliceAxis : Grid slice axis. +// slicePosition : Grid slice position. +int nDeformStep = 40; +double flapAngle = 10.0; +double rotatePostionZ = 4.00003; +double rotatePostionY = 3.05; + +int deformationMethod = 2; +string stationalGridFile = "./grid/Segment2Brid.fts"; +string visualFileName = "./results/deformedGrid.dat" + +int gridSlice = 1; +int sliceAxis = 1; +double slicePosition = 13; + // ----------------- RBF Parameters ------------------------------------- -// symmetryPlane: Which symmetry plane is used in the mesh. -// 0 -- without symmetry. -// 1 -- plane of x=0. -// 2 -- plane of y=0. -// 3 -- plane of z=0. -int numberOfReferenceCP = 10; -double influenceRadius = 20; -int symmetryPlane = 3; // 1: plane of x=0; 2: plane of y=0; 3: plane of z=0; +// numberOfReferenceCP : Number of reference Control Points. +// influencePara : The RBF influence radius parameter. +int numberOfReferenceCP = 40; +double influencePara = 25.0; // ----------------- Periodic Parameters -------------------------------- // Notice: Rotational periodicity only support rotation along the X axis! @@ -138,6 +164,11 @@ int symmetryPlane = 3; // 1: plane of x=0; 2: plane of y=0; 3: plane of // 0 -- without Periodic Boundary. // 1 -- Translational periodicity. // 2 -- Rotational periodicity. +// translationLength[]: The relative distance between two periodic face + which only support one direction. +// rotationAngle: The relative angle between two periodic face. + which is recorded in degrees. + int periodicType = 0; double translationLength[] = [0.0,0.0,0.0]; double rotationAngle = 0.0; @@ -180,7 +211,7 @@ string partition_grid_file = "./grid/sphere_mixed__4.fts"; // 0 -- Interface. (default) // 1 -- Physical boundary condition, used in Hybrid solver. // npartmethod: Method of interface reconstruction, default is 1. -// parallelPartMethod: Method of parallel partition, this is set only when execute parallel partition. It would be skipped when serial partition. +// parallelPartitionMethod: Method of parallel partition, this is set only when execute parallel partition. It would be skipped when serial partition. // 1 -- Using ParMetis for homogeneous MPI. // 2 -- Using Metis for homogeneous MPI. // 3 -- using METIS partition for homogeneous OpenMP. @@ -238,6 +269,8 @@ int compressible = 1; // 1 -- the flight conditions. // 2 -- the experiment conditions. // 3 -- the subsonic boundary conditions. +// 4 -- the condition that the velocity, temperature and density are given. +// 5 -- the condition that the velocity, temperature and pressure are given. // refReNumber: Reynolds number, which is based unit length, unit of 1/m. // refDimensionalTemperature: Dimensional reference temperature, or the total temperature only for the experiment condition. // freestream_vibration_temperature: Dimensional freestream vibration temperature. @@ -251,10 +284,12 @@ int compressible = 1; // 1 inch = 0.0254m. // 1 foot = 12 inches = 0.3048m. // 1 yard = 3 feet = 0.9144m. -// forceRefenenceLength, forceRefenenceLengthSpanWise, forceRefenenceArea: Reference length, SpanWise length and area, independent of grid unit. +// forceReferenceLength, forceReferenceLengthSpanWise, forceReferenceArea: Reference length, SpanWise length and area, independent of grid unit. // TorqueRefX, TorqueRefY, TorqueRefZ: Reference point, independent of grid unit. // radiationCoef: The radiation coefficient on wall, it is used to compute the radiation heat flux on wall when the boundary // condition is radiation equilibrium temperature, and 0.8 is the default value. +// refMolecularWeight : the reference molecular weight of gas used for perfect gas. The unit is g/mol. +// Generally, the gas is air. Sometimes, it is experiment gas, such as Nitrogen, Argon, and so on. double refMachNumber = 0.73; double attackd = 2.79; @@ -263,7 +298,7 @@ double angleSlide = 0.00; int inflowParaType = 0; double refReNumber = 6.5e6; double refDimensionalTemperature = 288.15; -double freestream_vibration_temperature = 10000.00; +double freestream_vibration_temperature = 300.00; //int inflowParaType = 1; //double height = 0.001; @@ -280,18 +315,34 @@ double freestream_vibration_temperature = 10000.00; //double refDimensionalTemperature = 288.144; //double refDimensionalPressure = 1.01313E05; +//The velocity, temperature and density are fixed. +//int inflowParaType = 4; +//double refDimensionalVelocity = 1000.0; +//double refDimensionalDensity = 1.0e3; + +//The velocity, temperature and pressure are fixed. +//int inflowParaType = 5; +//double refDimensionalVelocity = 1000.0; +//double refDimensionalPressure = 1.0e5; + +//The MachNumber, temperature and pressure are fixed. +//int inflowParaType = 6; +//double refDimensionalTemperature = 293; +//double refDimensionalPressure = 8886.06; + double wallTemperature = -1.0; double radiationCoef = 0.8; double gridScaleFactor = 1.0; int numberOfAerodynamicForceComponents = 1; -double forceRefenenceLengthSpanWise = 1.0; // unit of meter. -double forceRefenenceLength = 1.0; // unit of meter. -double forceRefenenceArea = 1.0; // unit of meter^2. +double forceReferenceLengthSpanWise = 1.0; // unit of meter. +double forceReferenceLength = 1.0; // unit of meter. +double forceReferenceArea = 1.0; // unit of meter^2. double TorqueRefX = 0.0; // unit of meter. double TorqueRefY = 0.0; // unit of meter. double TorqueRefZ = 0.0; // unit of meter. +double refMolecularWeight = 28.9644; // unit of g/mol. //----------------------------------------------------------------------- # Spatial Discretisation # @@ -303,7 +354,7 @@ double TorqueRefZ = 0.0; // unit of meter. // Using this when solve structered grid or hybrid. // -- "vanleer", "steger", "hlle", "lax_f". // -- "roe", "modified_roe". -// -- "ausm+", "ausm+w", "ausm+up", "ausmdv", "ausmpw". +// -- "ausm+", "ausm+w", "ausm+up", "ausmdv", "ausmpw", "ausmpw+". // str_limiter_name: Limiter of struct grid. // -- "vanalbada", "vanleer", "minmod", "smooth", "minvan", "3rdsmooth", "3rd_minmod_smooth". // -- "nolim", no limiter. @@ -339,14 +390,14 @@ string str_limiter_name = "vanalbada"; // uns_scheme_name: Spatial discretisation scheme of Unstruct grid. // Using this when solve Unstructered grid or hybrid. // -- "vanleer", "roe", "steger", "kfvs", "lax_f", "hlle". -// -- "ausm+", "ausmdv", "ausm+w", "ausmpw", "ausmpwplus". +// -- "ausm+", "ausmdv", "ausm+w", "ausmpw", "ausmpw+". // uns_limiter_name: Limiter of Unstruct grid. // -- "barth", "vencat", "vanleer", "minmod". // -- "vanalbada", "smooth", "nnd", "lpz", "1st". // -- "nolim", no limiter. // uns_vis_name: Discretisation method of viscous term. // -- "std", "test", "aver", "new1", "new2". -// uns_gradient: Gradient reconstruction method. +// gradientName: Gradient reconstruction method. // -- "default", "ggcell", "ggnode", "lsq". // ivencat: Variation of vencat limiter. // 0 -- org method, it is independent of grid scale. @@ -408,9 +459,15 @@ double roeEntropyScale = 1.0; // 1 -- unsteay. // physicalTimeStep: The nondimensional physical time step. // ifStartFromSteadyResults: The unsteady simulation is start from steady flowfield or not, 0 is for no and else is for yes. -// ifStaticsFlowField: Statistical variables for DES simulation. +// ifStaticsFlowField: Statistical variables for unsteady simulation. +// ifStaticsReynoldsStress: Statistical Reynolds stress for unsteady simulation. // startStatisticStep: Outer step when start statistics. // when the value is larger than "maxSimuStep", it is useless. +// statisticalTimePeriod: Used as time period of statistic analysis. +// when the value is negative, time period is treated as infinite. +// statisticMethod: Statistic reynolds stress method. + 0 --tau = - ^2 + 1 --tau = // min_sub_iter: The min sub iteration of unsteady simulation. // max_sub_iter: The max sub iteration of unsteady simulation. // tol_sub_iter: The tolerance of sub iteration of unsteady simulation. @@ -454,7 +511,10 @@ int iunsteady = 0; double physicalTimeStep = 0.01; int ifStartFromSteadyResults = 0; int ifStaticsFlowField = 0; +int ifStaticsReynoldsStress = 0; int startStatisticStep = 800000; +double statisticalTimePeriod = -1.0; +int statisticMethod = 0; int linearTwoStepMethods = 1; // 1--BDF1; 2--C-N; 3--BDF2; int methodOfDualTime = 3; @@ -482,8 +542,6 @@ double turbCFLScale = 1.0; double csrv = 2.0; double timemax = 1.0e10; double dtsave = -1.0; -int codeOfAleModel = 0; -int aleStartStrategy = -1; int maxale = 10; double dtau = 0.001; @@ -524,6 +582,7 @@ double lamda[] = 0.5, 1.0; int numberOfGridGroups = 1; string gridfile = "./grid/rae2822_hybrid2d__4.fts"; +string wallTemperaturefile= ""; int walldistMethod = 1; @@ -536,15 +595,16 @@ string turbfile = "results/turb.dat"; string visualfile = "results/tecflow.plt"; string wall_aircoefile = "results/wall_aircoef.dat"; -string probesflowfile = "results/sample.dat"; +string samplefile = "results/sample.dat"; int nDumpSurfaceInfo = 0; string wall_varfile = ""; string jetDefineFile = "bin/jet.hypara"; -string overset_gridfile = "results/iblank.ovs"; string sixDofFileName = "results/sixDofInfo.dat"; +string derivativeFileName = "results/identify.dat"; +string hysteresisFileName = "results/force_beta.plt"; int plotFieldType = 0; @@ -554,6 +614,11 @@ int plotFieldType = 0; int visualfileType = 1; +// samplefileMode: The dump mode of sample file. +// 0 -- dump out every probe/line/surface data for all step intervals. +// 1 -- dump out all probe/line/surface data for every step intervals. +int samplefileMode = 0; + // visualSlice: The slice of tecflow. // 0 -- Do not save slice data. // 1 -- comput and save it to sliceFile. @@ -567,11 +632,13 @@ int visualSlice = 0; int sliceAxis = 1; double slicePostion = -0.5; string sliceFile = "results/Slice.plt"; +int dumpWallFaceCenter = 0; // min-max box of the visual block. double lowerPlotFieldBox[] = [0.0 0.0 0.0]; double upperPlotFieldBox[] = [1.0 1.0 1.0]; +//-----------the optional parameters list for the flow field output---------------- // nVisualVariables: Number of variables want to be dumped for tecplot visualization. // visualVariables : Variable types dumped, listed as following: // -- density(0), u(1), v(2), w(3), pressure(4), temperature(5), mach(6), @@ -582,11 +649,27 @@ double upperPlotFieldBox[] = [1.0 1.0 1.0]; // -- vibration temperature(Tv, 33), electron temperature(Te, 34), vibrational energy(Ev, 35), electric energy(Ee, 36), // -- number density of electron(Ne, 37), dimensioanl density(rho, 38), dimensioanl pressure(p, 39), dimensioanl temperature(T, 40), // -- gradientUx(41), gradientUy(42), gradientVx(43), gradientVy(44), iblank(81). +// -- specific heat ratio(gama, 56) // Important Warning: Array size of visualVariables MUST be equal to nVisualVariables!!! // Variables order must from small to big. +//-----------the optional parameters list for the wall boundary condition---------------- +// nVisualWallVariables: The number of visual variables on wall. +// visualWallVariables : dumped variable types, listed as following: +// -coefficient of pressure(cp, 0), -coefficient of friction(cf, 1), yplus(2), -non-dimensional heat flux(Q_NonDim, 3), -dimensional heat flux(Q_Dim, 4), +// -pressure on wall(pw, 5), -temperature on wall(Tw, 6), -density on wall(rhow, 7), -heat flux of translational-rotational temperature term(Qtr, 8), +// -heat flux of species diffusion term(Qs, 9), -heat flux of vibrational temperature term(Qv, 10), -heat flux of electron temperature term(Qe, 11), +// -species mass fractions(Ns, 12), -x component of wall velocity(Vx, 13), -y component of wall velocity(Vy, 14), -z component of wall velocity(Vz, 15) +// -slip translational-rotational temperature(Tts, 16), -slip vibrational temperature(Tvs, 17), -slip electron temperature(Tes, 18), -absolute wall velocity(Vs, 19) +// -Stanton number(St, 20), -coefficient of heat rate(Ch, 21), -temperature jump(deltaT, 22), -transition gamaeff(gamaeff, 48), +// -transition intermittency(intermittency, 51), -transition momentum thickness reynolds(MomentumThicknessReynolds, 52), +// -overlap iblank(iblank, 81) + int nVisualVariables = 8; int visualVariables[] = [0, 1, 2, 3, 4, 5, 6, 15]; +int nVisualWallVariables = 9; +int visualWallVariables[] = [0, 1, 2, 3, 4, 5, 9, 10, 11]; + // dumpStandardModel: Dump many standard model data. // 1 -- Turbulent flat plate. int dumpStandardModel = 0; @@ -644,6 +727,7 @@ int probeVariablesInterpolationMethod = 0; // mod_turb_res: If modify the residuals for the cells next to the wall or not, default is 0. int turbInterval = 1; +int turbOrderStruct = 2; int kindOfTurbSource = 0; int mod_turb_res = 0; double turb_relax = 1.0; @@ -652,6 +736,10 @@ double muoo = 3.0; double kwoo = 5.0; int transitionType = 0; double turbIntensity = -1.0; +int freeturbIntensitySRModify = 0; +double freeDecayXLocation = 0.0; +int compressibleCorrection = 0; +int transitionMaFix = 1; # maximum eddy viscosity (myt/my) max. double eddyViscosityLimit = 1.0e10; @@ -661,8 +749,8 @@ int monitor_vistmax = 0; # LES Parameter # //----------------------------------------------------------------------- // iLES: Create LESSolver or not. -// >= 1 - Create LESSolver; -// < 1 - not. +// == 1 - Create LESSolver; +// != 1 - not. // amplitudeofDisturb: Amplitude of adding disturb. // disturbstep: Unsteady time step or steady iteration of adding random disturb. // iterdisturb: Add random disturb in every sub-iter or only first sub-iter. @@ -676,8 +764,9 @@ int monitor_vistmax = 0; // utau: friction velocity, using in DNSDisturb. // sgsmodel: subgrid scale model. // = "smagorinsky"; -// = "dsm"; -// = "wale". +// = "dsmCom"; +// = "wale"; +// = "sigma". // deltaFunctionType: = 1 - MAX(deltai, deltaj, deltak); // = 2 - pow(deltai * deltaj *deltak, 1/3); // = 3 - Devloped by Scotti. @@ -700,9 +789,10 @@ string sgsmodel = "smagorinsky"; int deltaFunctionType = 2; int wallDampingFunctionType = 1; int turbViscousCutType = 2; -double smagConstant = 0.135; +double smagConstant = 0.1; double isotropicConstant = 0.0; double waleConstant = 0.6; +double sigmaConstant = 1.35; int filterDirection[] = [1, 1, 0]; int averageDirection[] = [0, 0, 0]; double testFilterScale = 2.0; @@ -724,12 +814,42 @@ int monitorNegativeConstant = 0; // nm: Equation number of the physics, but is out of commision now. // 4 -- for 2D. // 5 -- for 3D. -// nGasModel: The type of gas. +// nGasModel: The type of gas. less than and equal to 1 represents the mixture gas. +// Otherwise, the pure gas with one component is used for perfect gas. // 0 -- Earth gas. // 1 -- Mars gas. +// 2 -- Argon. +// 3 -- Nitrogen. +// nEnergyRecycle: The type of EnergyModel Recycle. +// 0 -- not used . +// 1 -- used. +// nDensityModify: The type of densitymodify. + +// 0 -- not used. +// 1 -- used. // nchem: // 0 -- without chemical reaction flow. // 1 -- the chemical reaction flow is considered. +// nEquilibriumGas: the variable is valid when the condition of nchem=0 is satisfied. +// 0 -- perfect gas. +// 5, 7, 11 -- equilibrium gas, meanwhile, its value denotes the number of gas component. +// nPCWCycleStep: the maximum step number of iteration in the module of computing species mass fractions with the partial catalytic wall(PCW) condition. +// the value equals to or is greater than 1, and 3 is for default value. +// nRETCycleStep: the maximum step number of iteration in the module of computing radiation equilibrium temperature on wall. +// the value equals to or is greater than 1, and 3 is for default value. +// nSLIPCycleStep:the maximum step number of iteration in the module of computing slip temperature, slip velocity and slip species mass fraction. +// the value equals to or is greater than 1, and 3 is for default value. +// nSlipBCModel : The computational model of slip boundary conditions. + +// 0 -- no slip. +// 1 -- the conventional Maxwell slip conditions. +// 2 -- the Gokcen slip conditions. +// 3 -- the Knudsen-layer correction of the standard slip conditions proposed by Lockerby, et al. +// 4 -- the Kogan simplified slip conditions. +// nMeanFreePathType : the method to the mean free-path for the slip conditions. For the mixture, 0 is suggested. +// 0 -- the equivalent mean free-path is calculated by the simple hard sphere model(HS). +// 1 -- calculated by the definition that includes the variables of the number density and the molecule diameter. +// 2 -- the equivalent mean free-path is calculated by the variable hard sphere model(VHS). // nchemsrc: // 0 -- the source terms are not computed. // 1 -- the source terms are computed. @@ -740,15 +860,72 @@ int monitorNegativeConstant = 0; // 1 -- One-temperature model. // 2 -- Two-temperature model. // 3 -- Three-temperature model. +// nTEnergyModel: the method to computing temperature energy model. +// 0 -- the energy term is computed using the conventional method. +// 1 -- the energy term is computed using the curve fitting method. +// parkVDPower: the power of translational-rotational temperature in the Park V-D(vibration-dissociation) coupling model. +// The value is in range of [0.0, 1.0], DPLR suggests 0.5, LAURA suggests 0.7, while 0.6 is given as default value. // catalyticCoef: // 0.0 -- full non-catalytic wall boundary condition. // 1.0 -- full catalytic wall boundary condition. // in range of (0.0, 1.0) -- partial catalytic condition, the value indicates the catalytic coefficient. +// nIsSuperCatalytic : the super catalytic condition for the fully catalytic wall, and assigned with the value of 1. +// 0 -- equilibrium condition for the fully catalytic wall where the mass fractions are assigned with the values of the free stream. +// 1 -- super catalytic condition for the fully catalytic wall where all the atomic components combine into molecular components. +// nTemperatureJump : the method to calculate the temperature jump. +// 0 -- calculated by the variables of heat conductivity and constant volume specific heat for each energy mode. +// 1 -- the general method where the iteration is calculated with the translation-rotation temperature. +// sigmaVelocity: the coordination coefficient of tangential momentum for computation of slip velocity. The value is in range of (0.0, 2.0]. +// sigmaTemperature: the heat coordination coefficient for computation of slip temperature. The value is in range of (0.0, 2.0]. +// sigmaMassFraction: the species coordination coefficient for computation of slip mass fractions. The value is in range of (0.0, 2.0]. +// velocitySlipCorrectConstant: the correction constant to the velocity slip condition. For the diffuse reflection, 1.0 is used. +// 1.0 -- proposed by Maxwell. +// sqrt(2/PI)~0.8 -- used for "micro-slip", namely the actual velocity slip at the wall. +// 1.146 -- proposed for an additional "fictitious" velocity slip. + +// chemicalRelaxCorf: The value is in range of [0.001, 1.0]. +// chemicalSpectrumRadiusCoef: The value is in range of [1.0, 3.0]. +// viscousSpectrumRadiusCoef : The value is in range of [1.0, 3.0]. +// inviscidSpectrumRadiusCoef: The value is in range of [1.0, 3.0]. +// staticPressureRelaxCorf: The value is in range of [0.1, 1.0]. +// nIsChemicalFreeze : the flag to freeze the chemical reactions. +// 0 -- not freeze, the chemical reaction sources will be calculated. +// 1 -- freezes the chemical reactions, the chemical reaction sources will not be calculated.// veTemperatureMin: The minimum of Tv and Te +// nDebug: cout the Wrong place and abort +// 0 -- not used. +// 1 -- used. +// nSpeciesLimit: limitter of gas species +// 0 -- not used. +// 1 -- used. +// nTurblenceForChemical: the coupled mode of Turblence and Chemical reaction +// 0 -- method 0. +// 1 -- method 1. +// nViscosityFluxSublevelModified: Modified for ViscosityFlux on Sublevel grid +// 0 -- not used. +// 1 -- used. +// nChemcalSourceModified: Modified on ChemcalSource +// 0 -- not used. +// 1 -- used. +// nAblation: +// 0 -- The wall ablation is not computed. +// 1 -- The wall ablation is computed. +// isInjection: +// 0 -- The injection velocity of ablation wall is not computed. +// 1 -- The injection velocity of ablation wall is computed. +// nViscosityModel: + +// 0 -- Blottner fitting method. +// 1 -- Gupta fitting method. +// nSutherland: +// 0 -- stands for selecting the Blotter curve fits mode. +// 1 -- stands for Sutherland relation. // gasfile: Indicates the gas model, 9 models are provided, namely "Gu5", "Gu7", "Gu11", "Pa5", "Pa7", "Pa11", "DK5", "DK7", "DK11". // "Gu" -- indicates the Gupta Model, three-Type Models are embeded in the library, namely, the 5-species-6-reactions, the 7-species-9-reactions, the 11-species-20-reactions. // "Pa" -- indicates the Park Model, three-Type Models are embeded in the library, namely, the 5-species-17-reactions, the 7-species-22-reactions, the 11-species-48-reactions. // "DK" -- indicates the Dunn-Kang Model, three-Type Models are embeded in the library, namely, the 5-species-11-reactions, the 7-species-15-reactions, the 11-species-26-reactions. // "Mars-Pa8" is for Park model of Mars gas, "Mars-Mc8" for McKenzie model of Mars gas. +// "Combustion-12" -- indicates the Combustion Chamber Gas Model which includes 12-species-20-reactions. +// "Gas-Mixture" -- indicates the process of mixing two species without reacting. // For self-definition model, the gasfile is used to indicate the file path of the new gas model. // speciesName: Used to list the names of each species, while each species name is separated by the symbol of comma. // initMassFraction: Used to list the initial mass fractions of species in accordance with the sequence of names in the parameter speciesName. @@ -758,6 +935,10 @@ int dg_high_order = 0; int iapplication = 0; int iCodeBranch = 0; int nm = 5; +int nEquilibriumGas = 0; +int nPCWCycleStep = 3; +int nRETCycleStep = 3; +int nSLIPCycleStep= 3; double refGama = 1.4; double prl = 0.72; @@ -770,23 +951,73 @@ int nchem = 0; int nchemsrc = 1; int nchemrad = 1; int ntmodel = 1; -int nChemicalFlowStep = 0; + +int nEnergyRecycle = 0; +int nSlipBCModel = 0; +int nDensityModify = 1; +int nTEnergyModel = 0; +int nMeanFreePathType = 0; +int nIsChemicalFreeze = 0; +int nIsSuperCatalytic = 1; +int nTemperatureJump = 0; + +double parkVDPower = 0.6; double catalyticCoef = 0.0; +double sigmaVelocity = 1.0; +double sigmaTemperature = 1.0; +double sigmaMassFraction = 1.0; +double velocitySlipCorrectConstant = 1.0; + +double chemicalRelaxCorf = 1.0; +double chemicalSpectrumRadiusCoef = 1.0; +double viscousSpectrumRadiusCoef = 1.0; +double inviscidSpectrumRadiusCoef = 1.0; +double staticPressureRelaxCorf = 1.0; + +double veTemperatureMin = 30.0; +int nDebug = 0; +int nSpeciesLimit = 0; +int nTurblenceForChemical = 0; +int nViscosityFluxSublevelModified = 0 ; +int nChemcalSourceModified = 0; + +int nAblation = 0; +int isInjection = 0; +int nViscosityModel = 0; +int nMarsModel = 0; string gasfile = "DK5"; //string gasfile = "./chemical/Dunn-Kang_air5s11r.dat"; string speciesName = "O, O2, NO, N, N2"; -string initMassFraction = "0.0, 0.23, 0.0, 0.0, 0.77"; +string initMassFraction = "0.0, 0.233, 0.0, 0.0, 0.767"; //string speciesName = "O, O2, NO, N, NO+, N2, e-"; -//string initMassFraction = "0.0, 0.23, 0.0, 0.0, 0.0, 0.77, 0.0"; +//string initMassFraction = "0.0, 0.233, 0.0, 0.0, 0.0, 0.767, 0.0"; //string speciesName = "O, O2, NO, N, O+, O2+, NO+, N+, N2+, N2, e-"; -//string initMassFraction = "0.0, 0.23, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.77, 0.0"; +//string initMassFraction = "0.0, 0.233, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.767, 0.0"; //string gasfile = "Mars-Pa8"; //string speciesName = "O, O2, NO, N, N2, C, CO, CO2"; //string initMassFraction = "0.0015, 0.0429, 0.0, 0.0, 0.0, 0.0, 0.0777, 0.8779"; +//string gasfile = "DK7"; +//string speciesName = "O, O2, NO, N, NO+, C, C2, CO, CO2, CN, N2, e-"; +//string initMassFraction = "0.0, 0.233, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.767, 0.0"; + +//string gasfile = "Combustion-12"; +//string speciesName = "O, O2, NO, N, C, CO, CO2, H, H2, OH, H2O, N2"; +//string initMassFraction = "0.0, 0.233, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.767"; + +//string gasfile = "Gas-Mixture"; +//string speciesName ="SpeciesA, SpeciesB"; +//string initMassFraction = "1.0, 0.0"; +int nSutherland = 0; +double gamaSpeciesA = 1.4; +double gamaSpeciesB = 1.3; +double molecularWeightSpeciesA = 29.0; +double molecularWeightSpeciesB = 30.0; + +int nChemicalFlowStep = 0; int ifStartFromPerfectGasResults = 0; ######################################################################### @@ -841,7 +1072,7 @@ string zoneInverseFileName = "./grid/zoneInverseMapping.inp"; ######################################################################### # High Order Struct Solver # ######################################################################### -// ifvfd: +// isFVMOrFDM: // 0 -- NSSolverStruct using Finite Volume Method. // 1 -- NSSolverStruct using Finite Differ Method. // SolverStructOrder: Spatial discretisation order of NS equations with struct grid. @@ -856,7 +1087,7 @@ string zoneInverseFileName = "./grid/zoneInverseMapping.inp"; // -- "roe", "steger". // structhighordergradient: // -- "conservation", "chain_rule". -int ifvfd = 0; +int isFVMOrFDM = 0; string str_highorder_solver = "WCNS"; int SolverStructOrder = 0; double str_highorder_interpolation_epsilon = 1.0e-6; @@ -885,8 +1116,12 @@ int allReduceStep = 1; // codeOfOversetGrid: Overlapping(overset) grid or not. // 0 -- NON-overlapping grid. // 1 -- Overlapping grid. +// oversetInterpolationMethod: the method of overset interpolation while field simulation +// 0 -- set the acceptor cell value by donor cell value. +// 1 -- set the acceptor cell value by distance weight of donor cell value. + int codeOfOversetGrid = 0; -int codeOfOversetSlipGrid = 0; +int oversetInterpolationMethod = 0; int readOversetFileOrNot = 0; int symetryOrNot = 0; int readInAuxiliaryInnerGrid = 1; @@ -895,7 +1130,7 @@ int readInSklFileOrNot = 0; string auxiliaryInnerGrid0 = "./grid/aux-upper.fts"; string auxiliaryInnerGrid1 = "./grid/aux-lower.fts"; string auxiliaryInnerGrid2 = ""; -string oversetGridFileName = "./grid/overlap.ovs"; +string oversetGridFileName = "./grid/iblank.ovs"; double walldistMainZone = 1.0 double toleranceForOversetSearch = 1.0e-3; double toleranceForOversetBox = 1.0e-3; @@ -905,16 +1140,78 @@ int outTecplotOverset = 0; int numberOfMovingBodies = 2; +// ----------------- ALE configuration ------------------------------ +int codeOfAleModel = 1; +int aleStartStrategy = -1; + +int strategyForFaceNormalVelocity = 0; //0-By Sweeping volume; 1-By face center 1st; 2-By face center 2nd; +int strategyForGCLSource = 0; //0-present; 1-Ahn; + +//0:1st-Admas-Bashforth; 1:2nd-Admas-Bashforth; 2:1st-Implicit-Euler; 3:2nd-Implicit Euler; 4:2nd-Adams-Moulton; 5:3rd-Adams-Moulton +int methodForKineticEquation = 0; +double relaxParameterOfKinetic = 1.0; + +######################################################################### +# motive information # +######################################################################### +int numberOfMovingBodies = 1; + +############################## body0 ############################## +//mass of parts +double mass_0 = 1.0; +//mass matrix of parts Ixx Iyy Izz Ixy Ixz Iyz +double massMatrix_0[] = 1e-7, 1e-6, 1e-6, 0.0, 0.0, 0.0; +//initial six DOF position information of parts. xc yc zc +double massCenter_0[] = 0.0 , 0.0, 0.0; +//initial six DOF position information of parts. angleX angleY angleZ +double attitudeAngle_0[] = 0.0 , 0.0, 0.0; +//initial six DOF move information of parts. vc vy vz +double massCenterVelocity_0[] = 0.0, 0.0, 0.0; +//initial six DOF move information of parts. omigX omigY omigZ +double angularVelocity_0[] = 0.0, 0.0, 0.0; +//the object that the parts belong to. +int fartherIndex_0 = -1; +//the assembly position of the parts. xc yc zc angleX angleY angleZ +double configPamameter_0[] = 0.0 ,0.0 ,0.0 ,0.0 ,0.0 ,0.0; +//the move pattern of the parts. +// -1 given motion partten. +// 0 still. +// 1 six DOF motion. +// 2 three DOF motion. +// 11 X-axis forced motion. +// 12 Y-axis forced motion. +// 13 Z-axis forced motion. +// 14 forced pitch motion. +// 15 forced yaw motion. +// 16 forced roll motion. +int RBDMethod_0 = 0; +double amplitude_0 = 0.0; +double reduceFrequency_0 = 0.0; +//string uDFSixDofFileName_0 = "./Bin/UDFSixDof.Parameter"; +//additional force (system axis) fX fY fZ +double addedForce_0[] = 0.0 ,0.0 ,0.0 ; +//additional moment of Force (system axis) mX mY mZ +double addedMoment_0[] = 0.0 ,0.0 ,0.0 ; +//the deformation method of the parts. +int morphing_0 = 0; + +// post indentify +int integralOrder = 4; + + // ---------------- ATP read -------------------------------------------- //@int inflowParaType = 0; -//@double refReNumber = 2.329418E08; -//@double refDimensionalTemperature = 288.144; -//@double refDimensionalPressure = 1.01313E05; -//@double height = -0.001; +//@double refReNumber = 6.5e6; +//@double refDimensionalTemperature = 288.15; +//@double freestream_vibration_temperature = 300.00; +//@double refDimensionalPressure = 0; +//@double height = 0; //@int nsubsonicInlet = 0; //@int nsubsonicOutlet = 0; //@string inLetFileName = "./bin/subsonicInlet.hypara"; //@string outLetFileName = "./bin/subsonicOutlet.hypara"; +//@double refDimensionalVelocity = 0; +//@double refDimensionalDensity = 0; ######################################################################### # Old Parameter # diff --git a/A04_TwoD_Plate_SST_Ma5_Struct_1CPU/bin/cfd_para_supersonic.hypara b/A04_TwoD_Plate_SST_Ma5_Struct_1CPU/bin/cfd_para_supersonic.hypara index ef9093b..8d20a13 100644 --- a/A04_TwoD_Plate_SST_Ma5_Struct_1CPU/bin/cfd_para_supersonic.hypara +++ b/A04_TwoD_Plate_SST_Ma5_Struct_1CPU/bin/cfd_para_supersonic.hypara @@ -59,9 +59,9 @@ double refDimensionalTemperature = 300.33; double gridScaleFactor = 0.001; -double forceRefenenceLengthSpanWise = 1.0; // unit of meter. -double forceRefenenceLength = 1.0; // unit of meter. -double forceRefenenceArea = 2.0; // unit of meter^2. +double forceReferenceLengthSpanWise = 1.0; // unit of meter. +double forceReferenceLength = 1.0; // unit of meter. +double forceReferenceArea = 2.0; // unit of meter^2. double TorqueRefX = 0.0; // unit of meter. double TorqueRefY = 0.0; // unit of meter. double TorqueRefZ = 0.0; // unit of meter. diff --git a/A05_TwoD_Cylinder_Laminar_Ma8d03_Struct/bin/cfd_para.hypara b/A05_TwoD_Cylinder_Laminar_Ma8d03_Struct/bin/cfd_para.hypara index df090b7..b17970c 100644 --- a/A05_TwoD_Cylinder_Laminar_Ma8d03_Struct/bin/cfd_para.hypara +++ b/A05_TwoD_Cylinder_Laminar_Ma8d03_Struct/bin/cfd_para.hypara @@ -21,6 +21,7 @@ // 1 -- Grid conversion, from other grid data to PHenglEI, such as Fluent, CGNS. // 2 -- Grid refinement. // 3 -- Grid merging, merge two blocks into one block. +// 4 -- Grid deformation, achieve unstructured grid deformation. // 5 -- Grid repairing, repair the original grid in order to remove the negative volume cells. // 6 -- Grid mirroring, mirror a symmetry grid to whole grid. // multiblock: Multi-block grid or not, only for structured grid conversion. @@ -72,13 +73,15 @@ int dumpOldGrid = 0; //----------------------------------------------------------------------- // from_gfile: path of original data file for unstructure grid convert from. // out_gfile: path of target file for grid convert to, *.fts type of file usually. +int numberOfGridFile = 1; string from_gfile = "./grid/rae2822_hybrid2d.cas"; +string from_gfile1= ""; + string out_gfile = "./grid/flat_laminr_133_85_2d.fts"; // ----------------- some advanced choices ------------------------------ // iunsteady: The Grid is for unsteady simulation or not. int iunsteady = 0; -int iale = 0; int codeOfAleModel = 0; // fileformat: Ustar Grid file format. @@ -122,15 +125,38 @@ int isDeform = 0; int exclusiveCase = 0; // 0: NON case; 1: JSM-C2-NPOFF case; 2: CHNT. int projectOrgPoint = 0; // if project original wall points. + +// ----------------- Grid Deform Parameters ----------------------------- +// deformationMethod: Grid Deform. +// 1 -- SPRING. +// 2 -- RBF. +// stationalGridFile: Original grid file. +// visualFileName : The visualization file path of deform grid. +// nDeformStep : The max deform step. +// flapAngle : The max flap angle. +// rotatePostionZ : Rotate postion. +// rotatePostionY : Rotate postion. +// gridSlice : If dump slice grid. +// sliceAxis : Grid slice axis. +// slicePosition : Grid slice position. +int nDeformStep = 40; +double flapAngle = 10.0; +double rotatePostionZ = 4.00003; +double rotatePostionY = 3.05; + +int deformationMethod = 2; +string stationalGridFile = "./grid/Segment2Brid.fts"; +string visualFileName = "./results/deformedGrid.dat" + +int gridSlice = 1; +int sliceAxis = 1; +double slicePosition = 13; + // ----------------- RBF Parameters ------------------------------------- -// symmetryPlane: Which symmetry plane is used in the mesh. -// 0 -- without symmetry. -// 1 -- plane of x=0. -// 2 -- plane of y=0. -// 3 -- plane of z=0. -int numberOfReferenceCP = 10; -double influenceRadius = 20; -int symmetryPlane = 3; // 1: plane of x=0; 2: plane of y=0; 3: plane of z=0; +// numberOfReferenceCP : Number of reference Control Points. +// influencePara : The RBF influence radius parameter. +int numberOfReferenceCP = 40; +double influencePara = 25.0; // ----------------- Periodic Parameters -------------------------------- // Notice: Rotational periodicity only support rotation along the X axis! @@ -138,6 +164,11 @@ int symmetryPlane = 3; // 1: plane of x=0; 2: plane of y=0; 3: plane of // 0 -- without Periodic Boundary. // 1 -- Translational periodicity. // 2 -- Rotational periodicity. +// translationLength[]: The relative distance between two periodic face + which only support one direction. +// rotationAngle: The relative angle between two periodic face. + which is recorded in degrees. + int periodicType = 0; double translationLength[] = [0.0,0.0,0.0]; double rotationAngle = 0.0; @@ -180,7 +211,7 @@ string partition_grid_file = "./grid/sphere_mixed__4.fts"; // 0 -- Interface. (default) // 1 -- Physical boundary condition, used in Hybrid solver. // npartmethod: Method of interface reconstruction, default is 1. -// parallelPartMethod: Method of parallel partition, this is set only when execute parallel partition. It would be skipped when serial partition. +// parallelPartitionMethod: Method of parallel partition, this is set only when execute parallel partition. It would be skipped when serial partition. // 1 -- Using ParMetis for homogeneous MPI. // 2 -- Using Metis for homogeneous MPI. // 3 -- using METIS partition for homogeneous OpenMP. @@ -238,6 +269,8 @@ int compressible = 1; // 1 -- the flight conditions. // 2 -- the experiment conditions. // 3 -- the subsonic boundary conditions. +// 4 -- the condition that the velocity, temperature and density are given. +// 5 -- the condition that the velocity, temperature and pressure are given. // refReNumber: Reynolds number, which is based unit length, unit of 1/m. // refDimensionalTemperature: Dimensional reference temperature, or the total temperature only for the experiment condition. // freestream_vibration_temperature: Dimensional freestream vibration temperature. @@ -251,10 +284,12 @@ int compressible = 1; // 1 inch = 0.0254m. // 1 foot = 12 inches = 0.3048m. // 1 yard = 3 feet = 0.9144m. -// forceRefenenceLength, forceRefenenceLengthSpanWise, forceRefenenceArea: Reference length, SpanWise length and area, independent of grid unit. +// forceReferenceLength, forceReferenceLengthSpanWise, forceReferenceArea: Reference length, SpanWise length and area, independent of grid unit. // TorqueRefX, TorqueRefY, TorqueRefZ: Reference point, independent of grid unit. // radiationCoef: The radiation coefficient on wall, it is used to compute the radiation heat flux on wall when the boundary // condition is radiation equilibrium temperature, and 0.8 is the default value. +// refMolecularWeight : the reference molecular weight of gas used for perfect gas. The unit is g/mol. +// Generally, the gas is air. Sometimes, it is experiment gas, such as Nitrogen, Argon, and so on. double refMachNumber = 0.73; double attackd = 2.79; @@ -263,7 +298,7 @@ double angleSlide = 0.00; int inflowParaType = 0; double refReNumber = 6.5e6; double refDimensionalTemperature = 288.15; -double freestream_vibration_temperature = 10000.00; +double freestream_vibration_temperature = 300.00; //int inflowParaType = 1; //double height = 0.001; @@ -280,18 +315,34 @@ double freestream_vibration_temperature = 10000.00; //double refDimensionalTemperature = 288.144; //double refDimensionalPressure = 1.01313E05; +//The velocity, temperature and density are fixed. +//int inflowParaType = 4; +//double refDimensionalVelocity = 1000.0; +//double refDimensionalDensity = 1.0e3; + +//The velocity, temperature and pressure are fixed. +//int inflowParaType = 5; +//double refDimensionalVelocity = 1000.0; +//double refDimensionalPressure = 1.0e5; + +//The MachNumber, temperature and pressure are fixed. +//int inflowParaType = 6; +//double refDimensionalTemperature = 293; +//double refDimensionalPressure = 8886.06; + double wallTemperature = -1.0; double radiationCoef = 0.8; double gridScaleFactor = 1.0; int numberOfAerodynamicForceComponents = 1; -double forceRefenenceLengthSpanWise = 1.0; // unit of meter. -double forceRefenenceLength = 1.0; // unit of meter. -double forceRefenenceArea = 1.0; // unit of meter^2. +double forceReferenceLengthSpanWise = 1.0; // unit of meter. +double forceReferenceLength = 1.0; // unit of meter. +double forceReferenceArea = 1.0; // unit of meter^2. double TorqueRefX = 0.0; // unit of meter. double TorqueRefY = 0.0; // unit of meter. double TorqueRefZ = 0.0; // unit of meter. +double refMolecularWeight = 28.9644; // unit of g/mol. //----------------------------------------------------------------------- # Spatial Discretisation # @@ -303,7 +354,7 @@ double TorqueRefZ = 0.0; // unit of meter. // Using this when solve structered grid or hybrid. // -- "vanleer", "steger", "hlle", "lax_f". // -- "roe", "modified_roe". -// -- "ausm+", "ausm+w", "ausm+up", "ausmdv", "ausmpw". +// -- "ausm+", "ausm+w", "ausm+up", "ausmdv", "ausmpw", "ausmpw+". // str_limiter_name: Limiter of struct grid. // -- "vanalbada", "vanleer", "minmod", "smooth", "minvan", "3rdsmooth", "3rd_minmod_smooth". // -- "nolim", no limiter. @@ -339,14 +390,14 @@ string str_limiter_name = "vanalbada"; // uns_scheme_name: Spatial discretisation scheme of Unstruct grid. // Using this when solve Unstructered grid or hybrid. // -- "vanleer", "roe", "steger", "kfvs", "lax_f", "hlle". -// -- "ausm+", "ausmdv", "ausm+w", "ausmpw", "ausmpwplus". +// -- "ausm+", "ausmdv", "ausm+w", "ausmpw", "ausmpw+". // uns_limiter_name: Limiter of Unstruct grid. // -- "barth", "vencat", "vanleer", "minmod". // -- "vanalbada", "smooth", "nnd", "lpz", "1st". // -- "nolim", no limiter. // uns_vis_name: Discretisation method of viscous term. // -- "std", "test", "aver", "new1", "new2". -// uns_gradient: Gradient reconstruction method. +// gradientName: Gradient reconstruction method. // -- "default", "ggcell", "ggnode", "lsq". // ivencat: Variation of vencat limiter. // 0 -- org method, it is independent of grid scale. @@ -408,9 +459,15 @@ double roeEntropyScale = 1.0; // 1 -- unsteay. // physicalTimeStep: The nondimensional physical time step. // ifStartFromSteadyResults: The unsteady simulation is start from steady flowfield or not, 0 is for no and else is for yes. -// ifStaticsFlowField: Statistical variables for DES simulation. +// ifStaticsFlowField: Statistical variables for unsteady simulation. +// ifStaticsReynoldsStress: Statistical Reynolds stress for unsteady simulation. // startStatisticStep: Outer step when start statistics. // when the value is larger than "maxSimuStep", it is useless. +// statisticalTimePeriod: Used as time period of statistic analysis. +// when the value is negative, time period is treated as infinite. +// statisticMethod: Statistic reynolds stress method. + 0 --tau = - ^2 + 1 --tau = // min_sub_iter: The min sub iteration of unsteady simulation. // max_sub_iter: The max sub iteration of unsteady simulation. // tol_sub_iter: The tolerance of sub iteration of unsteady simulation. @@ -454,7 +511,10 @@ int iunsteady = 0; double physicalTimeStep = 0.01; int ifStartFromSteadyResults = 0; int ifStaticsFlowField = 0; +int ifStaticsReynoldsStress = 0; int startStatisticStep = 800000; +double statisticalTimePeriod = -1.0; +int statisticMethod = 0; int linearTwoStepMethods = 1; // 1--BDF1; 2--C-N; 3--BDF2; int methodOfDualTime = 3; @@ -482,8 +542,6 @@ double turbCFLScale = 1.0; double csrv = 2.0; double timemax = 1.0e10; double dtsave = -1.0; -int codeOfAleModel = 0; -int aleStartStrategy = -1; int maxale = 10; double dtau = 0.001; @@ -524,6 +582,7 @@ double lamda[] = 0.5, 1.0; int numberOfGridGroups = 1; string gridfile = "./grid/rae2822_hybrid2d__4.fts"; +string wallTemperaturefile= ""; int walldistMethod = 1; @@ -536,15 +595,16 @@ string turbfile = "results/turb.dat"; string visualfile = "results/tecflow.plt"; string wall_aircoefile = "results/wall_aircoef.dat"; -string probesflowfile = "results/sample.dat"; +string samplefile = "results/sample.dat"; int nDumpSurfaceInfo = 0; string wall_varfile = ""; string jetDefineFile = "bin/jet.hypara"; -string overset_gridfile = "results/iblank.ovs"; string sixDofFileName = "results/sixDofInfo.dat"; +string derivativeFileName = "results/identify.dat"; +string hysteresisFileName = "results/force_beta.plt"; int plotFieldType = 0; @@ -554,6 +614,11 @@ int plotFieldType = 0; int visualfileType = 1; +// samplefileMode: The dump mode of sample file. +// 0 -- dump out every probe/line/surface data for all step intervals. +// 1 -- dump out all probe/line/surface data for every step intervals. +int samplefileMode = 0; + // visualSlice: The slice of tecflow. // 0 -- Do not save slice data. // 1 -- comput and save it to sliceFile. @@ -567,11 +632,13 @@ int visualSlice = 0; int sliceAxis = 1; double slicePostion = -0.5; string sliceFile = "results/Slice.plt"; +int dumpWallFaceCenter = 0; // min-max box of the visual block. double lowerPlotFieldBox[] = [0.0 0.0 0.0]; double upperPlotFieldBox[] = [1.0 1.0 1.0]; +//-----------the optional parameters list for the flow field output---------------- // nVisualVariables: Number of variables want to be dumped for tecplot visualization. // visualVariables : Variable types dumped, listed as following: // -- density(0), u(1), v(2), w(3), pressure(4), temperature(5), mach(6), @@ -582,11 +649,27 @@ double upperPlotFieldBox[] = [1.0 1.0 1.0]; // -- vibration temperature(Tv, 33), electron temperature(Te, 34), vibrational energy(Ev, 35), electric energy(Ee, 36), // -- number density of electron(Ne, 37), dimensioanl density(rho, 38), dimensioanl pressure(p, 39), dimensioanl temperature(T, 40), // -- gradientUx(41), gradientUy(42), gradientVx(43), gradientVy(44), iblank(81). +// -- specific heat ratio(gama, 56) // Important Warning: Array size of visualVariables MUST be equal to nVisualVariables!!! // Variables order must from small to big. +//-----------the optional parameters list for the wall boundary condition---------------- +// nVisualWallVariables: The number of visual variables on wall. +// visualWallVariables : dumped variable types, listed as following: +// -coefficient of pressure(cp, 0), -coefficient of friction(cf, 1), yplus(2), -non-dimensional heat flux(Q_NonDim, 3), -dimensional heat flux(Q_Dim, 4), +// -pressure on wall(pw, 5), -temperature on wall(Tw, 6), -density on wall(rhow, 7), -heat flux of translational-rotational temperature term(Qtr, 8), +// -heat flux of species diffusion term(Qs, 9), -heat flux of vibrational temperature term(Qv, 10), -heat flux of electron temperature term(Qe, 11), +// -species mass fractions(Ns, 12), -x component of wall velocity(Vx, 13), -y component of wall velocity(Vy, 14), -z component of wall velocity(Vz, 15) +// -slip translational-rotational temperature(Tts, 16), -slip vibrational temperature(Tvs, 17), -slip electron temperature(Tes, 18), -absolute wall velocity(Vs, 19) +// -Stanton number(St, 20), -coefficient of heat rate(Ch, 21), -temperature jump(deltaT, 22), -transition gamaeff(gamaeff, 48), +// -transition intermittency(intermittency, 51), -transition momentum thickness reynolds(MomentumThicknessReynolds, 52), +// -overlap iblank(iblank, 81) + int nVisualVariables = 8; int visualVariables[] = [0, 1, 2, 3, 4, 5, 6, 15]; +int nVisualWallVariables = 9; +int visualWallVariables[] = [0, 1, 2, 3, 4, 5, 9, 10, 11]; + // dumpStandardModel: Dump many standard model data. // 1 -- Turbulent flat plate. int dumpStandardModel = 0; @@ -644,6 +727,7 @@ int probeVariablesInterpolationMethod = 0; // mod_turb_res: If modify the residuals for the cells next to the wall or not, default is 0. int turbInterval = 1; +int turbOrderStruct = 2; int kindOfTurbSource = 0; int mod_turb_res = 0; double turb_relax = 1.0; @@ -652,6 +736,10 @@ double muoo = 3.0; double kwoo = 5.0; int transitionType = 0; double turbIntensity = -1.0; +int freeturbIntensitySRModify = 0; +double freeDecayXLocation = 0.0; +int compressibleCorrection = 0; +int transitionMaFix = 1; # maximum eddy viscosity (myt/my) max. double eddyViscosityLimit = 1.0e10; @@ -661,8 +749,8 @@ int monitor_vistmax = 0; # LES Parameter # //----------------------------------------------------------------------- // iLES: Create LESSolver or not. -// >= 1 - Create LESSolver; -// < 1 - not. +// == 1 - Create LESSolver; +// != 1 - not. // amplitudeofDisturb: Amplitude of adding disturb. // disturbstep: Unsteady time step or steady iteration of adding random disturb. // iterdisturb: Add random disturb in every sub-iter or only first sub-iter. @@ -676,8 +764,9 @@ int monitor_vistmax = 0; // utau: friction velocity, using in DNSDisturb. // sgsmodel: subgrid scale model. // = "smagorinsky"; -// = "dsm"; -// = "wale". +// = "dsmCom"; +// = "wale"; +// = "sigma". // deltaFunctionType: = 1 - MAX(deltai, deltaj, deltak); // = 2 - pow(deltai * deltaj *deltak, 1/3); // = 3 - Devloped by Scotti. @@ -700,9 +789,10 @@ string sgsmodel = "smagorinsky"; int deltaFunctionType = 2; int wallDampingFunctionType = 1; int turbViscousCutType = 2; -double smagConstant = 0.135; +double smagConstant = 0.1; double isotropicConstant = 0.0; double waleConstant = 0.6; +double sigmaConstant = 1.35; int filterDirection[] = [1, 1, 0]; int averageDirection[] = [0, 0, 0]; double testFilterScale = 2.0; @@ -724,12 +814,42 @@ int monitorNegativeConstant = 0; // nm: Equation number of the physics, but is out of commision now. // 4 -- for 2D. // 5 -- for 3D. -// nGasModel: The type of gas. +// nGasModel: The type of gas. less than and equal to 1 represents the mixture gas. +// Otherwise, the pure gas with one component is used for perfect gas. // 0 -- Earth gas. // 1 -- Mars gas. +// 2 -- Argon. +// 3 -- Nitrogen. +// nEnergyRecycle: The type of EnergyModel Recycle. +// 0 -- not used . +// 1 -- used. +// nDensityModify: The type of densitymodify. + +// 0 -- not used. +// 1 -- used. // nchem: // 0 -- without chemical reaction flow. // 1 -- the chemical reaction flow is considered. +// nEquilibriumGas: the variable is valid when the condition of nchem=0 is satisfied. +// 0 -- perfect gas. +// 5, 7, 11 -- equilibrium gas, meanwhile, its value denotes the number of gas component. +// nPCWCycleStep: the maximum step number of iteration in the module of computing species mass fractions with the partial catalytic wall(PCW) condition. +// the value equals to or is greater than 1, and 3 is for default value. +// nRETCycleStep: the maximum step number of iteration in the module of computing radiation equilibrium temperature on wall. +// the value equals to or is greater than 1, and 3 is for default value. +// nSLIPCycleStep:the maximum step number of iteration in the module of computing slip temperature, slip velocity and slip species mass fraction. +// the value equals to or is greater than 1, and 3 is for default value. +// nSlipBCModel : The computational model of slip boundary conditions. + +// 0 -- no slip. +// 1 -- the conventional Maxwell slip conditions. +// 2 -- the Gokcen slip conditions. +// 3 -- the Knudsen-layer correction of the standard slip conditions proposed by Lockerby, et al. +// 4 -- the Kogan simplified slip conditions. +// nMeanFreePathType : the method to the mean free-path for the slip conditions. For the mixture, 0 is suggested. +// 0 -- the equivalent mean free-path is calculated by the simple hard sphere model(HS). +// 1 -- calculated by the definition that includes the variables of the number density and the molecule diameter. +// 2 -- the equivalent mean free-path is calculated by the variable hard sphere model(VHS). // nchemsrc: // 0 -- the source terms are not computed. // 1 -- the source terms are computed. @@ -740,15 +860,72 @@ int monitorNegativeConstant = 0; // 1 -- One-temperature model. // 2 -- Two-temperature model. // 3 -- Three-temperature model. +// nTEnergyModel: the method to computing temperature energy model. +// 0 -- the energy term is computed using the conventional method. +// 1 -- the energy term is computed using the curve fitting method. +// parkVDPower: the power of translational-rotational temperature in the Park V-D(vibration-dissociation) coupling model. +// The value is in range of [0.0, 1.0], DPLR suggests 0.5, LAURA suggests 0.7, while 0.6 is given as default value. // catalyticCoef: // 0.0 -- full non-catalytic wall boundary condition. // 1.0 -- full catalytic wall boundary condition. // in range of (0.0, 1.0) -- partial catalytic condition, the value indicates the catalytic coefficient. +// nIsSuperCatalytic : the super catalytic condition for the fully catalytic wall, and assigned with the value of 1. +// 0 -- equilibrium condition for the fully catalytic wall where the mass fractions are assigned with the values of the free stream. +// 1 -- super catalytic condition for the fully catalytic wall where all the atomic components combine into molecular components. +// nTemperatureJump : the method to calculate the temperature jump. +// 0 -- calculated by the variables of heat conductivity and constant volume specific heat for each energy mode. +// 1 -- the general method where the iteration is calculated with the translation-rotation temperature. +// sigmaVelocity: the coordination coefficient of tangential momentum for computation of slip velocity. The value is in range of (0.0, 2.0]. +// sigmaTemperature: the heat coordination coefficient for computation of slip temperature. The value is in range of (0.0, 2.0]. +// sigmaMassFraction: the species coordination coefficient for computation of slip mass fractions. The value is in range of (0.0, 2.0]. +// velocitySlipCorrectConstant: the correction constant to the velocity slip condition. For the diffuse reflection, 1.0 is used. +// 1.0 -- proposed by Maxwell. +// sqrt(2/PI)~0.8 -- used for "micro-slip", namely the actual velocity slip at the wall. +// 1.146 -- proposed for an additional "fictitious" velocity slip. + +// chemicalRelaxCorf: The value is in range of [0.001, 1.0]. +// chemicalSpectrumRadiusCoef: The value is in range of [1.0, 3.0]. +// viscousSpectrumRadiusCoef : The value is in range of [1.0, 3.0]. +// inviscidSpectrumRadiusCoef: The value is in range of [1.0, 3.0]. +// staticPressureRelaxCorf: The value is in range of [0.1, 1.0]. +// nIsChemicalFreeze : the flag to freeze the chemical reactions. +// 0 -- not freeze, the chemical reaction sources will be calculated. +// 1 -- freezes the chemical reactions, the chemical reaction sources will not be calculated.// veTemperatureMin: The minimum of Tv and Te +// nDebug: cout the Wrong place and abort +// 0 -- not used. +// 1 -- used. +// nSpeciesLimit: limitter of gas species +// 0 -- not used. +// 1 -- used. +// nTurblenceForChemical: the coupled mode of Turblence and Chemical reaction +// 0 -- method 0. +// 1 -- method 1. +// nViscosityFluxSublevelModified: Modified for ViscosityFlux on Sublevel grid +// 0 -- not used. +// 1 -- used. +// nChemcalSourceModified: Modified on ChemcalSource +// 0 -- not used. +// 1 -- used. +// nAblation: +// 0 -- The wall ablation is not computed. +// 1 -- The wall ablation is computed. +// isInjection: +// 0 -- The injection velocity of ablation wall is not computed. +// 1 -- The injection velocity of ablation wall is computed. +// nViscosityModel: + +// 0 -- Blottner fitting method. +// 1 -- Gupta fitting method. +// nSutherland: +// 0 -- stands for selecting the Blotter curve fits mode. +// 1 -- stands for Sutherland relation. // gasfile: Indicates the gas model, 9 models are provided, namely "Gu5", "Gu7", "Gu11", "Pa5", "Pa7", "Pa11", "DK5", "DK7", "DK11". // "Gu" -- indicates the Gupta Model, three-Type Models are embeded in the library, namely, the 5-species-6-reactions, the 7-species-9-reactions, the 11-species-20-reactions. // "Pa" -- indicates the Park Model, three-Type Models are embeded in the library, namely, the 5-species-17-reactions, the 7-species-22-reactions, the 11-species-48-reactions. // "DK" -- indicates the Dunn-Kang Model, three-Type Models are embeded in the library, namely, the 5-species-11-reactions, the 7-species-15-reactions, the 11-species-26-reactions. // "Mars-Pa8" is for Park model of Mars gas, "Mars-Mc8" for McKenzie model of Mars gas. +// "Combustion-12" -- indicates the Combustion Chamber Gas Model which includes 12-species-20-reactions. +// "Gas-Mixture" -- indicates the process of mixing two species without reacting. // For self-definition model, the gasfile is used to indicate the file path of the new gas model. // speciesName: Used to list the names of each species, while each species name is separated by the symbol of comma. // initMassFraction: Used to list the initial mass fractions of species in accordance with the sequence of names in the parameter speciesName. @@ -758,6 +935,10 @@ int dg_high_order = 0; int iapplication = 0; int iCodeBranch = 0; int nm = 5; +int nEquilibriumGas = 0; +int nPCWCycleStep = 3; +int nRETCycleStep = 3; +int nSLIPCycleStep= 3; double refGama = 1.4; double prl = 0.72; @@ -770,23 +951,73 @@ int nchem = 0; int nchemsrc = 1; int nchemrad = 1; int ntmodel = 1; -int nChemicalFlowStep = 0; + +int nEnergyRecycle = 0; +int nSlipBCModel = 0; +int nDensityModify = 1; +int nTEnergyModel = 0; +int nMeanFreePathType = 0; +int nIsChemicalFreeze = 0; +int nIsSuperCatalytic = 1; +int nTemperatureJump = 0; + +double parkVDPower = 0.6; double catalyticCoef = 0.0; +double sigmaVelocity = 1.0; +double sigmaTemperature = 1.0; +double sigmaMassFraction = 1.0; +double velocitySlipCorrectConstant = 1.0; + +double chemicalRelaxCorf = 1.0; +double chemicalSpectrumRadiusCoef = 1.0; +double viscousSpectrumRadiusCoef = 1.0; +double inviscidSpectrumRadiusCoef = 1.0; +double staticPressureRelaxCorf = 1.0; + +double veTemperatureMin = 30.0; +int nDebug = 0; +int nSpeciesLimit = 0; +int nTurblenceForChemical = 0; +int nViscosityFluxSublevelModified = 0 ; +int nChemcalSourceModified = 0; + +int nAblation = 0; +int isInjection = 0; +int nViscosityModel = 0; +int nMarsModel = 0; string gasfile = "DK5"; //string gasfile = "./chemical/Dunn-Kang_air5s11r.dat"; string speciesName = "O, O2, NO, N, N2"; -string initMassFraction = "0.0, 0.23, 0.0, 0.0, 0.77"; +string initMassFraction = "0.0, 0.233, 0.0, 0.0, 0.767"; //string speciesName = "O, O2, NO, N, NO+, N2, e-"; -//string initMassFraction = "0.0, 0.23, 0.0, 0.0, 0.0, 0.77, 0.0"; +//string initMassFraction = "0.0, 0.233, 0.0, 0.0, 0.0, 0.767, 0.0"; //string speciesName = "O, O2, NO, N, O+, O2+, NO+, N+, N2+, N2, e-"; -//string initMassFraction = "0.0, 0.23, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.77, 0.0"; +//string initMassFraction = "0.0, 0.233, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.767, 0.0"; //string gasfile = "Mars-Pa8"; //string speciesName = "O, O2, NO, N, N2, C, CO, CO2"; //string initMassFraction = "0.0015, 0.0429, 0.0, 0.0, 0.0, 0.0, 0.0777, 0.8779"; +//string gasfile = "DK7"; +//string speciesName = "O, O2, NO, N, NO+, C, C2, CO, CO2, CN, N2, e-"; +//string initMassFraction = "0.0, 0.233, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.767, 0.0"; + +//string gasfile = "Combustion-12"; +//string speciesName = "O, O2, NO, N, C, CO, CO2, H, H2, OH, H2O, N2"; +//string initMassFraction = "0.0, 0.233, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.767"; + +//string gasfile = "Gas-Mixture"; +//string speciesName ="SpeciesA, SpeciesB"; +//string initMassFraction = "1.0, 0.0"; +int nSutherland = 0; +double gamaSpeciesA = 1.4; +double gamaSpeciesB = 1.3; +double molecularWeightSpeciesA = 29.0; +double molecularWeightSpeciesB = 30.0; + +int nChemicalFlowStep = 0; int ifStartFromPerfectGasResults = 0; ######################################################################### @@ -841,7 +1072,7 @@ string zoneInverseFileName = "./grid/zoneInverseMapping.inp"; ######################################################################### # High Order Struct Solver # ######################################################################### -// ifvfd: +// isFVMOrFDM: // 0 -- NSSolverStruct using Finite Volume Method. // 1 -- NSSolverStruct using Finite Differ Method. // SolverStructOrder: Spatial discretisation order of NS equations with struct grid. @@ -856,7 +1087,7 @@ string zoneInverseFileName = "./grid/zoneInverseMapping.inp"; // -- "roe", "steger". // structhighordergradient: // -- "conservation", "chain_rule". -int ifvfd = 0; +int isFVMOrFDM = 0; string str_highorder_solver = "WCNS"; int SolverStructOrder = 0; double str_highorder_interpolation_epsilon = 1.0e-6; @@ -885,8 +1116,12 @@ int allReduceStep = 1; // codeOfOversetGrid: Overlapping(overset) grid or not. // 0 -- NON-overlapping grid. // 1 -- Overlapping grid. +// oversetInterpolationMethod: the method of overset interpolation while field simulation +// 0 -- set the acceptor cell value by donor cell value. +// 1 -- set the acceptor cell value by distance weight of donor cell value. + int codeOfOversetGrid = 0; -int codeOfOversetSlipGrid = 0; +int oversetInterpolationMethod = 0; int readOversetFileOrNot = 0; int symetryOrNot = 0; int readInAuxiliaryInnerGrid = 1; @@ -895,7 +1130,7 @@ int readInSklFileOrNot = 0; string auxiliaryInnerGrid0 = "./grid/aux-upper.fts"; string auxiliaryInnerGrid1 = "./grid/aux-lower.fts"; string auxiliaryInnerGrid2 = ""; -string oversetGridFileName = "./grid/overlap.ovs"; +string oversetGridFileName = "./grid/iblank.ovs"; double walldistMainZone = 1.0 double toleranceForOversetSearch = 1.0e-3; double toleranceForOversetBox = 1.0e-3; @@ -905,16 +1140,78 @@ int outTecplotOverset = 0; int numberOfMovingBodies = 2; +// ----------------- ALE configuration ------------------------------ +int codeOfAleModel = 1; +int aleStartStrategy = -1; + +int strategyForFaceNormalVelocity = 0; //0-By Sweeping volume; 1-By face center 1st; 2-By face center 2nd; +int strategyForGCLSource = 0; //0-present; 1-Ahn; + +//0:1st-Admas-Bashforth; 1:2nd-Admas-Bashforth; 2:1st-Implicit-Euler; 3:2nd-Implicit Euler; 4:2nd-Adams-Moulton; 5:3rd-Adams-Moulton +int methodForKineticEquation = 0; +double relaxParameterOfKinetic = 1.0; + +######################################################################### +# motive information # +######################################################################### +int numberOfMovingBodies = 1; + +############################## body0 ############################## +//mass of parts +double mass_0 = 1.0; +//mass matrix of parts Ixx Iyy Izz Ixy Ixz Iyz +double massMatrix_0[] = 1e-7, 1e-6, 1e-6, 0.0, 0.0, 0.0; +//initial six DOF position information of parts. xc yc zc +double massCenter_0[] = 0.0 , 0.0, 0.0; +//initial six DOF position information of parts. angleX angleY angleZ +double attitudeAngle_0[] = 0.0 , 0.0, 0.0; +//initial six DOF move information of parts. vc vy vz +double massCenterVelocity_0[] = 0.0, 0.0, 0.0; +//initial six DOF move information of parts. omigX omigY omigZ +double angularVelocity_0[] = 0.0, 0.0, 0.0; +//the object that the parts belong to. +int fartherIndex_0 = -1; +//the assembly position of the parts. xc yc zc angleX angleY angleZ +double configPamameter_0[] = 0.0 ,0.0 ,0.0 ,0.0 ,0.0 ,0.0; +//the move pattern of the parts. +// -1 given motion partten. +// 0 still. +// 1 six DOF motion. +// 2 three DOF motion. +// 11 X-axis forced motion. +// 12 Y-axis forced motion. +// 13 Z-axis forced motion. +// 14 forced pitch motion. +// 15 forced yaw motion. +// 16 forced roll motion. +int RBDMethod_0 = 0; +double amplitude_0 = 0.0; +double reduceFrequency_0 = 0.0; +//string uDFSixDofFileName_0 = "./Bin/UDFSixDof.Parameter"; +//additional force (system axis) fX fY fZ +double addedForce_0[] = 0.0 ,0.0 ,0.0 ; +//additional moment of Force (system axis) mX mY mZ +double addedMoment_0[] = 0.0 ,0.0 ,0.0 ; +//the deformation method of the parts. +int morphing_0 = 0; + +// post indentify +int integralOrder = 4; + + // ---------------- ATP read -------------------------------------------- //@int inflowParaType = 0; -//@double refReNumber = 2.329418E08; -//@double refDimensionalTemperature = 288.144; -//@double refDimensionalPressure = 1.01313E05; -//@double height = -0.001; +//@double refReNumber = 6.5e6; +//@double refDimensionalTemperature = 288.15; +//@double freestream_vibration_temperature = 300.00; +//@double refDimensionalPressure = 0; +//@double height = 0; //@int nsubsonicInlet = 0; //@int nsubsonicOutlet = 0; //@string inLetFileName = "./bin/subsonicInlet.hypara"; //@string outLetFileName = "./bin/subsonicOutlet.hypara"; +//@double refDimensionalVelocity = 0; +//@double refDimensionalDensity = 0; ######################################################################### # Old Parameter # diff --git a/A05_TwoD_Cylinder_Laminar_Ma8d03_Struct/bin/cfd_para_hypersonic.hypara b/A05_TwoD_Cylinder_Laminar_Ma8d03_Struct/bin/cfd_para_hypersonic.hypara index dd54fb7..5d39856 100644 --- a/A05_TwoD_Cylinder_Laminar_Ma8d03_Struct/bin/cfd_para_hypersonic.hypara +++ b/A05_TwoD_Cylinder_Laminar_Ma8d03_Struct/bin/cfd_para_hypersonic.hypara @@ -60,9 +60,9 @@ double refDimensionalTemperature = 125.0; double gridScaleFactor = 1.0; -double forceRefenenceLengthSpanWise = 1.0; // unit of meter. -double forceRefenenceLength = 1.0; // unit of meter. -double forceRefenenceArea = 1.0; // unit of meter^2. +double forceReferenceLengthSpanWise = 1.0; // unit of meter. +double forceReferenceLength = 1.0; // unit of meter. +double forceReferenceArea = 1.0; // unit of meter^2. double TorqueRefX = 0.0; // unit of meter. double TorqueRefY = 0.0; // unit of meter. double TorqueRefZ = 0.0; // unit of meter. diff --git a/A06_ThreeD_NACA0012_SA_Struct_4CPU/bin/cfd_para.hypara b/A06_ThreeD_NACA0012_SA_Struct_4CPU/bin/cfd_para.hypara index df090b7..b17970c 100644 --- a/A06_ThreeD_NACA0012_SA_Struct_4CPU/bin/cfd_para.hypara +++ b/A06_ThreeD_NACA0012_SA_Struct_4CPU/bin/cfd_para.hypara @@ -21,6 +21,7 @@ // 1 -- Grid conversion, from other grid data to PHenglEI, such as Fluent, CGNS. // 2 -- Grid refinement. // 3 -- Grid merging, merge two blocks into one block. +// 4 -- Grid deformation, achieve unstructured grid deformation. // 5 -- Grid repairing, repair the original grid in order to remove the negative volume cells. // 6 -- Grid mirroring, mirror a symmetry grid to whole grid. // multiblock: Multi-block grid or not, only for structured grid conversion. @@ -72,13 +73,15 @@ int dumpOldGrid = 0; //----------------------------------------------------------------------- // from_gfile: path of original data file for unstructure grid convert from. // out_gfile: path of target file for grid convert to, *.fts type of file usually. +int numberOfGridFile = 1; string from_gfile = "./grid/rae2822_hybrid2d.cas"; +string from_gfile1= ""; + string out_gfile = "./grid/flat_laminr_133_85_2d.fts"; // ----------------- some advanced choices ------------------------------ // iunsteady: The Grid is for unsteady simulation or not. int iunsteady = 0; -int iale = 0; int codeOfAleModel = 0; // fileformat: Ustar Grid file format. @@ -122,15 +125,38 @@ int isDeform = 0; int exclusiveCase = 0; // 0: NON case; 1: JSM-C2-NPOFF case; 2: CHNT. int projectOrgPoint = 0; // if project original wall points. + +// ----------------- Grid Deform Parameters ----------------------------- +// deformationMethod: Grid Deform. +// 1 -- SPRING. +// 2 -- RBF. +// stationalGridFile: Original grid file. +// visualFileName : The visualization file path of deform grid. +// nDeformStep : The max deform step. +// flapAngle : The max flap angle. +// rotatePostionZ : Rotate postion. +// rotatePostionY : Rotate postion. +// gridSlice : If dump slice grid. +// sliceAxis : Grid slice axis. +// slicePosition : Grid slice position. +int nDeformStep = 40; +double flapAngle = 10.0; +double rotatePostionZ = 4.00003; +double rotatePostionY = 3.05; + +int deformationMethod = 2; +string stationalGridFile = "./grid/Segment2Brid.fts"; +string visualFileName = "./results/deformedGrid.dat" + +int gridSlice = 1; +int sliceAxis = 1; +double slicePosition = 13; + // ----------------- RBF Parameters ------------------------------------- -// symmetryPlane: Which symmetry plane is used in the mesh. -// 0 -- without symmetry. -// 1 -- plane of x=0. -// 2 -- plane of y=0. -// 3 -- plane of z=0. -int numberOfReferenceCP = 10; -double influenceRadius = 20; -int symmetryPlane = 3; // 1: plane of x=0; 2: plane of y=0; 3: plane of z=0; +// numberOfReferenceCP : Number of reference Control Points. +// influencePara : The RBF influence radius parameter. +int numberOfReferenceCP = 40; +double influencePara = 25.0; // ----------------- Periodic Parameters -------------------------------- // Notice: Rotational periodicity only support rotation along the X axis! @@ -138,6 +164,11 @@ int symmetryPlane = 3; // 1: plane of x=0; 2: plane of y=0; 3: plane of // 0 -- without Periodic Boundary. // 1 -- Translational periodicity. // 2 -- Rotational periodicity. +// translationLength[]: The relative distance between two periodic face + which only support one direction. +// rotationAngle: The relative angle between two periodic face. + which is recorded in degrees. + int periodicType = 0; double translationLength[] = [0.0,0.0,0.0]; double rotationAngle = 0.0; @@ -180,7 +211,7 @@ string partition_grid_file = "./grid/sphere_mixed__4.fts"; // 0 -- Interface. (default) // 1 -- Physical boundary condition, used in Hybrid solver. // npartmethod: Method of interface reconstruction, default is 1. -// parallelPartMethod: Method of parallel partition, this is set only when execute parallel partition. It would be skipped when serial partition. +// parallelPartitionMethod: Method of parallel partition, this is set only when execute parallel partition. It would be skipped when serial partition. // 1 -- Using ParMetis for homogeneous MPI. // 2 -- Using Metis for homogeneous MPI. // 3 -- using METIS partition for homogeneous OpenMP. @@ -238,6 +269,8 @@ int compressible = 1; // 1 -- the flight conditions. // 2 -- the experiment conditions. // 3 -- the subsonic boundary conditions. +// 4 -- the condition that the velocity, temperature and density are given. +// 5 -- the condition that the velocity, temperature and pressure are given. // refReNumber: Reynolds number, which is based unit length, unit of 1/m. // refDimensionalTemperature: Dimensional reference temperature, or the total temperature only for the experiment condition. // freestream_vibration_temperature: Dimensional freestream vibration temperature. @@ -251,10 +284,12 @@ int compressible = 1; // 1 inch = 0.0254m. // 1 foot = 12 inches = 0.3048m. // 1 yard = 3 feet = 0.9144m. -// forceRefenenceLength, forceRefenenceLengthSpanWise, forceRefenenceArea: Reference length, SpanWise length and area, independent of grid unit. +// forceReferenceLength, forceReferenceLengthSpanWise, forceReferenceArea: Reference length, SpanWise length and area, independent of grid unit. // TorqueRefX, TorqueRefY, TorqueRefZ: Reference point, independent of grid unit. // radiationCoef: The radiation coefficient on wall, it is used to compute the radiation heat flux on wall when the boundary // condition is radiation equilibrium temperature, and 0.8 is the default value. +// refMolecularWeight : the reference molecular weight of gas used for perfect gas. The unit is g/mol. +// Generally, the gas is air. Sometimes, it is experiment gas, such as Nitrogen, Argon, and so on. double refMachNumber = 0.73; double attackd = 2.79; @@ -263,7 +298,7 @@ double angleSlide = 0.00; int inflowParaType = 0; double refReNumber = 6.5e6; double refDimensionalTemperature = 288.15; -double freestream_vibration_temperature = 10000.00; +double freestream_vibration_temperature = 300.00; //int inflowParaType = 1; //double height = 0.001; @@ -280,18 +315,34 @@ double freestream_vibration_temperature = 10000.00; //double refDimensionalTemperature = 288.144; //double refDimensionalPressure = 1.01313E05; +//The velocity, temperature and density are fixed. +//int inflowParaType = 4; +//double refDimensionalVelocity = 1000.0; +//double refDimensionalDensity = 1.0e3; + +//The velocity, temperature and pressure are fixed. +//int inflowParaType = 5; +//double refDimensionalVelocity = 1000.0; +//double refDimensionalPressure = 1.0e5; + +//The MachNumber, temperature and pressure are fixed. +//int inflowParaType = 6; +//double refDimensionalTemperature = 293; +//double refDimensionalPressure = 8886.06; + double wallTemperature = -1.0; double radiationCoef = 0.8; double gridScaleFactor = 1.0; int numberOfAerodynamicForceComponents = 1; -double forceRefenenceLengthSpanWise = 1.0; // unit of meter. -double forceRefenenceLength = 1.0; // unit of meter. -double forceRefenenceArea = 1.0; // unit of meter^2. +double forceReferenceLengthSpanWise = 1.0; // unit of meter. +double forceReferenceLength = 1.0; // unit of meter. +double forceReferenceArea = 1.0; // unit of meter^2. double TorqueRefX = 0.0; // unit of meter. double TorqueRefY = 0.0; // unit of meter. double TorqueRefZ = 0.0; // unit of meter. +double refMolecularWeight = 28.9644; // unit of g/mol. //----------------------------------------------------------------------- # Spatial Discretisation # @@ -303,7 +354,7 @@ double TorqueRefZ = 0.0; // unit of meter. // Using this when solve structered grid or hybrid. // -- "vanleer", "steger", "hlle", "lax_f". // -- "roe", "modified_roe". -// -- "ausm+", "ausm+w", "ausm+up", "ausmdv", "ausmpw". +// -- "ausm+", "ausm+w", "ausm+up", "ausmdv", "ausmpw", "ausmpw+". // str_limiter_name: Limiter of struct grid. // -- "vanalbada", "vanleer", "minmod", "smooth", "minvan", "3rdsmooth", "3rd_minmod_smooth". // -- "nolim", no limiter. @@ -339,14 +390,14 @@ string str_limiter_name = "vanalbada"; // uns_scheme_name: Spatial discretisation scheme of Unstruct grid. // Using this when solve Unstructered grid or hybrid. // -- "vanleer", "roe", "steger", "kfvs", "lax_f", "hlle". -// -- "ausm+", "ausmdv", "ausm+w", "ausmpw", "ausmpwplus". +// -- "ausm+", "ausmdv", "ausm+w", "ausmpw", "ausmpw+". // uns_limiter_name: Limiter of Unstruct grid. // -- "barth", "vencat", "vanleer", "minmod". // -- "vanalbada", "smooth", "nnd", "lpz", "1st". // -- "nolim", no limiter. // uns_vis_name: Discretisation method of viscous term. // -- "std", "test", "aver", "new1", "new2". -// uns_gradient: Gradient reconstruction method. +// gradientName: Gradient reconstruction method. // -- "default", "ggcell", "ggnode", "lsq". // ivencat: Variation of vencat limiter. // 0 -- org method, it is independent of grid scale. @@ -408,9 +459,15 @@ double roeEntropyScale = 1.0; // 1 -- unsteay. // physicalTimeStep: The nondimensional physical time step. // ifStartFromSteadyResults: The unsteady simulation is start from steady flowfield or not, 0 is for no and else is for yes. -// ifStaticsFlowField: Statistical variables for DES simulation. +// ifStaticsFlowField: Statistical variables for unsteady simulation. +// ifStaticsReynoldsStress: Statistical Reynolds stress for unsteady simulation. // startStatisticStep: Outer step when start statistics. // when the value is larger than "maxSimuStep", it is useless. +// statisticalTimePeriod: Used as time period of statistic analysis. +// when the value is negative, time period is treated as infinite. +// statisticMethod: Statistic reynolds stress method. + 0 --tau = - ^2 + 1 --tau = // min_sub_iter: The min sub iteration of unsteady simulation. // max_sub_iter: The max sub iteration of unsteady simulation. // tol_sub_iter: The tolerance of sub iteration of unsteady simulation. @@ -454,7 +511,10 @@ int iunsteady = 0; double physicalTimeStep = 0.01; int ifStartFromSteadyResults = 0; int ifStaticsFlowField = 0; +int ifStaticsReynoldsStress = 0; int startStatisticStep = 800000; +double statisticalTimePeriod = -1.0; +int statisticMethod = 0; int linearTwoStepMethods = 1; // 1--BDF1; 2--C-N; 3--BDF2; int methodOfDualTime = 3; @@ -482,8 +542,6 @@ double turbCFLScale = 1.0; double csrv = 2.0; double timemax = 1.0e10; double dtsave = -1.0; -int codeOfAleModel = 0; -int aleStartStrategy = -1; int maxale = 10; double dtau = 0.001; @@ -524,6 +582,7 @@ double lamda[] = 0.5, 1.0; int numberOfGridGroups = 1; string gridfile = "./grid/rae2822_hybrid2d__4.fts"; +string wallTemperaturefile= ""; int walldistMethod = 1; @@ -536,15 +595,16 @@ string turbfile = "results/turb.dat"; string visualfile = "results/tecflow.plt"; string wall_aircoefile = "results/wall_aircoef.dat"; -string probesflowfile = "results/sample.dat"; +string samplefile = "results/sample.dat"; int nDumpSurfaceInfo = 0; string wall_varfile = ""; string jetDefineFile = "bin/jet.hypara"; -string overset_gridfile = "results/iblank.ovs"; string sixDofFileName = "results/sixDofInfo.dat"; +string derivativeFileName = "results/identify.dat"; +string hysteresisFileName = "results/force_beta.plt"; int plotFieldType = 0; @@ -554,6 +614,11 @@ int plotFieldType = 0; int visualfileType = 1; +// samplefileMode: The dump mode of sample file. +// 0 -- dump out every probe/line/surface data for all step intervals. +// 1 -- dump out all probe/line/surface data for every step intervals. +int samplefileMode = 0; + // visualSlice: The slice of tecflow. // 0 -- Do not save slice data. // 1 -- comput and save it to sliceFile. @@ -567,11 +632,13 @@ int visualSlice = 0; int sliceAxis = 1; double slicePostion = -0.5; string sliceFile = "results/Slice.plt"; +int dumpWallFaceCenter = 0; // min-max box of the visual block. double lowerPlotFieldBox[] = [0.0 0.0 0.0]; double upperPlotFieldBox[] = [1.0 1.0 1.0]; +//-----------the optional parameters list for the flow field output---------------- // nVisualVariables: Number of variables want to be dumped for tecplot visualization. // visualVariables : Variable types dumped, listed as following: // -- density(0), u(1), v(2), w(3), pressure(4), temperature(5), mach(6), @@ -582,11 +649,27 @@ double upperPlotFieldBox[] = [1.0 1.0 1.0]; // -- vibration temperature(Tv, 33), electron temperature(Te, 34), vibrational energy(Ev, 35), electric energy(Ee, 36), // -- number density of electron(Ne, 37), dimensioanl density(rho, 38), dimensioanl pressure(p, 39), dimensioanl temperature(T, 40), // -- gradientUx(41), gradientUy(42), gradientVx(43), gradientVy(44), iblank(81). +// -- specific heat ratio(gama, 56) // Important Warning: Array size of visualVariables MUST be equal to nVisualVariables!!! // Variables order must from small to big. +//-----------the optional parameters list for the wall boundary condition---------------- +// nVisualWallVariables: The number of visual variables on wall. +// visualWallVariables : dumped variable types, listed as following: +// -coefficient of pressure(cp, 0), -coefficient of friction(cf, 1), yplus(2), -non-dimensional heat flux(Q_NonDim, 3), -dimensional heat flux(Q_Dim, 4), +// -pressure on wall(pw, 5), -temperature on wall(Tw, 6), -density on wall(rhow, 7), -heat flux of translational-rotational temperature term(Qtr, 8), +// -heat flux of species diffusion term(Qs, 9), -heat flux of vibrational temperature term(Qv, 10), -heat flux of electron temperature term(Qe, 11), +// -species mass fractions(Ns, 12), -x component of wall velocity(Vx, 13), -y component of wall velocity(Vy, 14), -z component of wall velocity(Vz, 15) +// -slip translational-rotational temperature(Tts, 16), -slip vibrational temperature(Tvs, 17), -slip electron temperature(Tes, 18), -absolute wall velocity(Vs, 19) +// -Stanton number(St, 20), -coefficient of heat rate(Ch, 21), -temperature jump(deltaT, 22), -transition gamaeff(gamaeff, 48), +// -transition intermittency(intermittency, 51), -transition momentum thickness reynolds(MomentumThicknessReynolds, 52), +// -overlap iblank(iblank, 81) + int nVisualVariables = 8; int visualVariables[] = [0, 1, 2, 3, 4, 5, 6, 15]; +int nVisualWallVariables = 9; +int visualWallVariables[] = [0, 1, 2, 3, 4, 5, 9, 10, 11]; + // dumpStandardModel: Dump many standard model data. // 1 -- Turbulent flat plate. int dumpStandardModel = 0; @@ -644,6 +727,7 @@ int probeVariablesInterpolationMethod = 0; // mod_turb_res: If modify the residuals for the cells next to the wall or not, default is 0. int turbInterval = 1; +int turbOrderStruct = 2; int kindOfTurbSource = 0; int mod_turb_res = 0; double turb_relax = 1.0; @@ -652,6 +736,10 @@ double muoo = 3.0; double kwoo = 5.0; int transitionType = 0; double turbIntensity = -1.0; +int freeturbIntensitySRModify = 0; +double freeDecayXLocation = 0.0; +int compressibleCorrection = 0; +int transitionMaFix = 1; # maximum eddy viscosity (myt/my) max. double eddyViscosityLimit = 1.0e10; @@ -661,8 +749,8 @@ int monitor_vistmax = 0; # LES Parameter # //----------------------------------------------------------------------- // iLES: Create LESSolver or not. -// >= 1 - Create LESSolver; -// < 1 - not. +// == 1 - Create LESSolver; +// != 1 - not. // amplitudeofDisturb: Amplitude of adding disturb. // disturbstep: Unsteady time step or steady iteration of adding random disturb. // iterdisturb: Add random disturb in every sub-iter or only first sub-iter. @@ -676,8 +764,9 @@ int monitor_vistmax = 0; // utau: friction velocity, using in DNSDisturb. // sgsmodel: subgrid scale model. // = "smagorinsky"; -// = "dsm"; -// = "wale". +// = "dsmCom"; +// = "wale"; +// = "sigma". // deltaFunctionType: = 1 - MAX(deltai, deltaj, deltak); // = 2 - pow(deltai * deltaj *deltak, 1/3); // = 3 - Devloped by Scotti. @@ -700,9 +789,10 @@ string sgsmodel = "smagorinsky"; int deltaFunctionType = 2; int wallDampingFunctionType = 1; int turbViscousCutType = 2; -double smagConstant = 0.135; +double smagConstant = 0.1; double isotropicConstant = 0.0; double waleConstant = 0.6; +double sigmaConstant = 1.35; int filterDirection[] = [1, 1, 0]; int averageDirection[] = [0, 0, 0]; double testFilterScale = 2.0; @@ -724,12 +814,42 @@ int monitorNegativeConstant = 0; // nm: Equation number of the physics, but is out of commision now. // 4 -- for 2D. // 5 -- for 3D. -// nGasModel: The type of gas. +// nGasModel: The type of gas. less than and equal to 1 represents the mixture gas. +// Otherwise, the pure gas with one component is used for perfect gas. // 0 -- Earth gas. // 1 -- Mars gas. +// 2 -- Argon. +// 3 -- Nitrogen. +// nEnergyRecycle: The type of EnergyModel Recycle. +// 0 -- not used . +// 1 -- used. +// nDensityModify: The type of densitymodify. + +// 0 -- not used. +// 1 -- used. // nchem: // 0 -- without chemical reaction flow. // 1 -- the chemical reaction flow is considered. +// nEquilibriumGas: the variable is valid when the condition of nchem=0 is satisfied. +// 0 -- perfect gas. +// 5, 7, 11 -- equilibrium gas, meanwhile, its value denotes the number of gas component. +// nPCWCycleStep: the maximum step number of iteration in the module of computing species mass fractions with the partial catalytic wall(PCW) condition. +// the value equals to or is greater than 1, and 3 is for default value. +// nRETCycleStep: the maximum step number of iteration in the module of computing radiation equilibrium temperature on wall. +// the value equals to or is greater than 1, and 3 is for default value. +// nSLIPCycleStep:the maximum step number of iteration in the module of computing slip temperature, slip velocity and slip species mass fraction. +// the value equals to or is greater than 1, and 3 is for default value. +// nSlipBCModel : The computational model of slip boundary conditions. + +// 0 -- no slip. +// 1 -- the conventional Maxwell slip conditions. +// 2 -- the Gokcen slip conditions. +// 3 -- the Knudsen-layer correction of the standard slip conditions proposed by Lockerby, et al. +// 4 -- the Kogan simplified slip conditions. +// nMeanFreePathType : the method to the mean free-path for the slip conditions. For the mixture, 0 is suggested. +// 0 -- the equivalent mean free-path is calculated by the simple hard sphere model(HS). +// 1 -- calculated by the definition that includes the variables of the number density and the molecule diameter. +// 2 -- the equivalent mean free-path is calculated by the variable hard sphere model(VHS). // nchemsrc: // 0 -- the source terms are not computed. // 1 -- the source terms are computed. @@ -740,15 +860,72 @@ int monitorNegativeConstant = 0; // 1 -- One-temperature model. // 2 -- Two-temperature model. // 3 -- Three-temperature model. +// nTEnergyModel: the method to computing temperature energy model. +// 0 -- the energy term is computed using the conventional method. +// 1 -- the energy term is computed using the curve fitting method. +// parkVDPower: the power of translational-rotational temperature in the Park V-D(vibration-dissociation) coupling model. +// The value is in range of [0.0, 1.0], DPLR suggests 0.5, LAURA suggests 0.7, while 0.6 is given as default value. // catalyticCoef: // 0.0 -- full non-catalytic wall boundary condition. // 1.0 -- full catalytic wall boundary condition. // in range of (0.0, 1.0) -- partial catalytic condition, the value indicates the catalytic coefficient. +// nIsSuperCatalytic : the super catalytic condition for the fully catalytic wall, and assigned with the value of 1. +// 0 -- equilibrium condition for the fully catalytic wall where the mass fractions are assigned with the values of the free stream. +// 1 -- super catalytic condition for the fully catalytic wall where all the atomic components combine into molecular components. +// nTemperatureJump : the method to calculate the temperature jump. +// 0 -- calculated by the variables of heat conductivity and constant volume specific heat for each energy mode. +// 1 -- the general method where the iteration is calculated with the translation-rotation temperature. +// sigmaVelocity: the coordination coefficient of tangential momentum for computation of slip velocity. The value is in range of (0.0, 2.0]. +// sigmaTemperature: the heat coordination coefficient for computation of slip temperature. The value is in range of (0.0, 2.0]. +// sigmaMassFraction: the species coordination coefficient for computation of slip mass fractions. The value is in range of (0.0, 2.0]. +// velocitySlipCorrectConstant: the correction constant to the velocity slip condition. For the diffuse reflection, 1.0 is used. +// 1.0 -- proposed by Maxwell. +// sqrt(2/PI)~0.8 -- used for "micro-slip", namely the actual velocity slip at the wall. +// 1.146 -- proposed for an additional "fictitious" velocity slip. + +// chemicalRelaxCorf: The value is in range of [0.001, 1.0]. +// chemicalSpectrumRadiusCoef: The value is in range of [1.0, 3.0]. +// viscousSpectrumRadiusCoef : The value is in range of [1.0, 3.0]. +// inviscidSpectrumRadiusCoef: The value is in range of [1.0, 3.0]. +// staticPressureRelaxCorf: The value is in range of [0.1, 1.0]. +// nIsChemicalFreeze : the flag to freeze the chemical reactions. +// 0 -- not freeze, the chemical reaction sources will be calculated. +// 1 -- freezes the chemical reactions, the chemical reaction sources will not be calculated.// veTemperatureMin: The minimum of Tv and Te +// nDebug: cout the Wrong place and abort +// 0 -- not used. +// 1 -- used. +// nSpeciesLimit: limitter of gas species +// 0 -- not used. +// 1 -- used. +// nTurblenceForChemical: the coupled mode of Turblence and Chemical reaction +// 0 -- method 0. +// 1 -- method 1. +// nViscosityFluxSublevelModified: Modified for ViscosityFlux on Sublevel grid +// 0 -- not used. +// 1 -- used. +// nChemcalSourceModified: Modified on ChemcalSource +// 0 -- not used. +// 1 -- used. +// nAblation: +// 0 -- The wall ablation is not computed. +// 1 -- The wall ablation is computed. +// isInjection: +// 0 -- The injection velocity of ablation wall is not computed. +// 1 -- The injection velocity of ablation wall is computed. +// nViscosityModel: + +// 0 -- Blottner fitting method. +// 1 -- Gupta fitting method. +// nSutherland: +// 0 -- stands for selecting the Blotter curve fits mode. +// 1 -- stands for Sutherland relation. // gasfile: Indicates the gas model, 9 models are provided, namely "Gu5", "Gu7", "Gu11", "Pa5", "Pa7", "Pa11", "DK5", "DK7", "DK11". // "Gu" -- indicates the Gupta Model, three-Type Models are embeded in the library, namely, the 5-species-6-reactions, the 7-species-9-reactions, the 11-species-20-reactions. // "Pa" -- indicates the Park Model, three-Type Models are embeded in the library, namely, the 5-species-17-reactions, the 7-species-22-reactions, the 11-species-48-reactions. // "DK" -- indicates the Dunn-Kang Model, three-Type Models are embeded in the library, namely, the 5-species-11-reactions, the 7-species-15-reactions, the 11-species-26-reactions. // "Mars-Pa8" is for Park model of Mars gas, "Mars-Mc8" for McKenzie model of Mars gas. +// "Combustion-12" -- indicates the Combustion Chamber Gas Model which includes 12-species-20-reactions. +// "Gas-Mixture" -- indicates the process of mixing two species without reacting. // For self-definition model, the gasfile is used to indicate the file path of the new gas model. // speciesName: Used to list the names of each species, while each species name is separated by the symbol of comma. // initMassFraction: Used to list the initial mass fractions of species in accordance with the sequence of names in the parameter speciesName. @@ -758,6 +935,10 @@ int dg_high_order = 0; int iapplication = 0; int iCodeBranch = 0; int nm = 5; +int nEquilibriumGas = 0; +int nPCWCycleStep = 3; +int nRETCycleStep = 3; +int nSLIPCycleStep= 3; double refGama = 1.4; double prl = 0.72; @@ -770,23 +951,73 @@ int nchem = 0; int nchemsrc = 1; int nchemrad = 1; int ntmodel = 1; -int nChemicalFlowStep = 0; + +int nEnergyRecycle = 0; +int nSlipBCModel = 0; +int nDensityModify = 1; +int nTEnergyModel = 0; +int nMeanFreePathType = 0; +int nIsChemicalFreeze = 0; +int nIsSuperCatalytic = 1; +int nTemperatureJump = 0; + +double parkVDPower = 0.6; double catalyticCoef = 0.0; +double sigmaVelocity = 1.0; +double sigmaTemperature = 1.0; +double sigmaMassFraction = 1.0; +double velocitySlipCorrectConstant = 1.0; + +double chemicalRelaxCorf = 1.0; +double chemicalSpectrumRadiusCoef = 1.0; +double viscousSpectrumRadiusCoef = 1.0; +double inviscidSpectrumRadiusCoef = 1.0; +double staticPressureRelaxCorf = 1.0; + +double veTemperatureMin = 30.0; +int nDebug = 0; +int nSpeciesLimit = 0; +int nTurblenceForChemical = 0; +int nViscosityFluxSublevelModified = 0 ; +int nChemcalSourceModified = 0; + +int nAblation = 0; +int isInjection = 0; +int nViscosityModel = 0; +int nMarsModel = 0; string gasfile = "DK5"; //string gasfile = "./chemical/Dunn-Kang_air5s11r.dat"; string speciesName = "O, O2, NO, N, N2"; -string initMassFraction = "0.0, 0.23, 0.0, 0.0, 0.77"; +string initMassFraction = "0.0, 0.233, 0.0, 0.0, 0.767"; //string speciesName = "O, O2, NO, N, NO+, N2, e-"; -//string initMassFraction = "0.0, 0.23, 0.0, 0.0, 0.0, 0.77, 0.0"; +//string initMassFraction = "0.0, 0.233, 0.0, 0.0, 0.0, 0.767, 0.0"; //string speciesName = "O, O2, NO, N, O+, O2+, NO+, N+, N2+, N2, e-"; -//string initMassFraction = "0.0, 0.23, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.77, 0.0"; +//string initMassFraction = "0.0, 0.233, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.767, 0.0"; //string gasfile = "Mars-Pa8"; //string speciesName = "O, O2, NO, N, N2, C, CO, CO2"; //string initMassFraction = "0.0015, 0.0429, 0.0, 0.0, 0.0, 0.0, 0.0777, 0.8779"; +//string gasfile = "DK7"; +//string speciesName = "O, O2, NO, N, NO+, C, C2, CO, CO2, CN, N2, e-"; +//string initMassFraction = "0.0, 0.233, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.767, 0.0"; + +//string gasfile = "Combustion-12"; +//string speciesName = "O, O2, NO, N, C, CO, CO2, H, H2, OH, H2O, N2"; +//string initMassFraction = "0.0, 0.233, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.767"; + +//string gasfile = "Gas-Mixture"; +//string speciesName ="SpeciesA, SpeciesB"; +//string initMassFraction = "1.0, 0.0"; +int nSutherland = 0; +double gamaSpeciesA = 1.4; +double gamaSpeciesB = 1.3; +double molecularWeightSpeciesA = 29.0; +double molecularWeightSpeciesB = 30.0; + +int nChemicalFlowStep = 0; int ifStartFromPerfectGasResults = 0; ######################################################################### @@ -841,7 +1072,7 @@ string zoneInverseFileName = "./grid/zoneInverseMapping.inp"; ######################################################################### # High Order Struct Solver # ######################################################################### -// ifvfd: +// isFVMOrFDM: // 0 -- NSSolverStruct using Finite Volume Method. // 1 -- NSSolverStruct using Finite Differ Method. // SolverStructOrder: Spatial discretisation order of NS equations with struct grid. @@ -856,7 +1087,7 @@ string zoneInverseFileName = "./grid/zoneInverseMapping.inp"; // -- "roe", "steger". // structhighordergradient: // -- "conservation", "chain_rule". -int ifvfd = 0; +int isFVMOrFDM = 0; string str_highorder_solver = "WCNS"; int SolverStructOrder = 0; double str_highorder_interpolation_epsilon = 1.0e-6; @@ -885,8 +1116,12 @@ int allReduceStep = 1; // codeOfOversetGrid: Overlapping(overset) grid or not. // 0 -- NON-overlapping grid. // 1 -- Overlapping grid. +// oversetInterpolationMethod: the method of overset interpolation while field simulation +// 0 -- set the acceptor cell value by donor cell value. +// 1 -- set the acceptor cell value by distance weight of donor cell value. + int codeOfOversetGrid = 0; -int codeOfOversetSlipGrid = 0; +int oversetInterpolationMethod = 0; int readOversetFileOrNot = 0; int symetryOrNot = 0; int readInAuxiliaryInnerGrid = 1; @@ -895,7 +1130,7 @@ int readInSklFileOrNot = 0; string auxiliaryInnerGrid0 = "./grid/aux-upper.fts"; string auxiliaryInnerGrid1 = "./grid/aux-lower.fts"; string auxiliaryInnerGrid2 = ""; -string oversetGridFileName = "./grid/overlap.ovs"; +string oversetGridFileName = "./grid/iblank.ovs"; double walldistMainZone = 1.0 double toleranceForOversetSearch = 1.0e-3; double toleranceForOversetBox = 1.0e-3; @@ -905,16 +1140,78 @@ int outTecplotOverset = 0; int numberOfMovingBodies = 2; +// ----------------- ALE configuration ------------------------------ +int codeOfAleModel = 1; +int aleStartStrategy = -1; + +int strategyForFaceNormalVelocity = 0; //0-By Sweeping volume; 1-By face center 1st; 2-By face center 2nd; +int strategyForGCLSource = 0; //0-present; 1-Ahn; + +//0:1st-Admas-Bashforth; 1:2nd-Admas-Bashforth; 2:1st-Implicit-Euler; 3:2nd-Implicit Euler; 4:2nd-Adams-Moulton; 5:3rd-Adams-Moulton +int methodForKineticEquation = 0; +double relaxParameterOfKinetic = 1.0; + +######################################################################### +# motive information # +######################################################################### +int numberOfMovingBodies = 1; + +############################## body0 ############################## +//mass of parts +double mass_0 = 1.0; +//mass matrix of parts Ixx Iyy Izz Ixy Ixz Iyz +double massMatrix_0[] = 1e-7, 1e-6, 1e-6, 0.0, 0.0, 0.0; +//initial six DOF position information of parts. xc yc zc +double massCenter_0[] = 0.0 , 0.0, 0.0; +//initial six DOF position information of parts. angleX angleY angleZ +double attitudeAngle_0[] = 0.0 , 0.0, 0.0; +//initial six DOF move information of parts. vc vy vz +double massCenterVelocity_0[] = 0.0, 0.0, 0.0; +//initial six DOF move information of parts. omigX omigY omigZ +double angularVelocity_0[] = 0.0, 0.0, 0.0; +//the object that the parts belong to. +int fartherIndex_0 = -1; +//the assembly position of the parts. xc yc zc angleX angleY angleZ +double configPamameter_0[] = 0.0 ,0.0 ,0.0 ,0.0 ,0.0 ,0.0; +//the move pattern of the parts. +// -1 given motion partten. +// 0 still. +// 1 six DOF motion. +// 2 three DOF motion. +// 11 X-axis forced motion. +// 12 Y-axis forced motion. +// 13 Z-axis forced motion. +// 14 forced pitch motion. +// 15 forced yaw motion. +// 16 forced roll motion. +int RBDMethod_0 = 0; +double amplitude_0 = 0.0; +double reduceFrequency_0 = 0.0; +//string uDFSixDofFileName_0 = "./Bin/UDFSixDof.Parameter"; +//additional force (system axis) fX fY fZ +double addedForce_0[] = 0.0 ,0.0 ,0.0 ; +//additional moment of Force (system axis) mX mY mZ +double addedMoment_0[] = 0.0 ,0.0 ,0.0 ; +//the deformation method of the parts. +int morphing_0 = 0; + +// post indentify +int integralOrder = 4; + + // ---------------- ATP read -------------------------------------------- //@int inflowParaType = 0; -//@double refReNumber = 2.329418E08; -//@double refDimensionalTemperature = 288.144; -//@double refDimensionalPressure = 1.01313E05; -//@double height = -0.001; +//@double refReNumber = 6.5e6; +//@double refDimensionalTemperature = 288.15; +//@double freestream_vibration_temperature = 300.00; +//@double refDimensionalPressure = 0; +//@double height = 0; //@int nsubsonicInlet = 0; //@int nsubsonicOutlet = 0; //@string inLetFileName = "./bin/subsonicInlet.hypara"; //@string outLetFileName = "./bin/subsonicOutlet.hypara"; +//@double refDimensionalVelocity = 0; +//@double refDimensionalDensity = 0; ######################################################################### # Old Parameter # diff --git a/A06_ThreeD_NACA0012_SA_Struct_4CPU/bin/cfd_para_transonic.hypara b/A06_ThreeD_NACA0012_SA_Struct_4CPU/bin/cfd_para_transonic.hypara index f9c70eb..b98b350 100644 --- a/A06_ThreeD_NACA0012_SA_Struct_4CPU/bin/cfd_para_transonic.hypara +++ b/A06_ThreeD_NACA0012_SA_Struct_4CPU/bin/cfd_para_transonic.hypara @@ -56,9 +56,9 @@ double refDimensionalTemperature = 288.15; double gridScaleFactor = 1.0; -double forceRefenenceLengthSpanWise = 1.0; // unit of meter. -double forceRefenenceLength = 1.0; // unit of meter. -double forceRefenenceArea = 1.0; // unit of meter^2. +double forceReferenceLengthSpanWise = 1.0; // unit of meter. +double forceReferenceLength = 1.0; // unit of meter. +double forceReferenceArea = 1.0; // unit of meter^2. double TorqueRefX = 0.0; // unit of meter. double TorqueRefY = 0.0; // unit of meter. double TorqueRefZ = 0.0; // unit of meter. diff --git a/A07_TwoD_Rae2822_SST_Struct_4CPU/bin/cfd_para.hypara b/A07_TwoD_Rae2822_SST_Struct_4CPU/bin/cfd_para.hypara index df090b7..b17970c 100644 --- a/A07_TwoD_Rae2822_SST_Struct_4CPU/bin/cfd_para.hypara +++ b/A07_TwoD_Rae2822_SST_Struct_4CPU/bin/cfd_para.hypara @@ -21,6 +21,7 @@ // 1 -- Grid conversion, from other grid data to PHenglEI, such as Fluent, CGNS. // 2 -- Grid refinement. // 3 -- Grid merging, merge two blocks into one block. +// 4 -- Grid deformation, achieve unstructured grid deformation. // 5 -- Grid repairing, repair the original grid in order to remove the negative volume cells. // 6 -- Grid mirroring, mirror a symmetry grid to whole grid. // multiblock: Multi-block grid or not, only for structured grid conversion. @@ -72,13 +73,15 @@ int dumpOldGrid = 0; //----------------------------------------------------------------------- // from_gfile: path of original data file for unstructure grid convert from. // out_gfile: path of target file for grid convert to, *.fts type of file usually. +int numberOfGridFile = 1; string from_gfile = "./grid/rae2822_hybrid2d.cas"; +string from_gfile1= ""; + string out_gfile = "./grid/flat_laminr_133_85_2d.fts"; // ----------------- some advanced choices ------------------------------ // iunsteady: The Grid is for unsteady simulation or not. int iunsteady = 0; -int iale = 0; int codeOfAleModel = 0; // fileformat: Ustar Grid file format. @@ -122,15 +125,38 @@ int isDeform = 0; int exclusiveCase = 0; // 0: NON case; 1: JSM-C2-NPOFF case; 2: CHNT. int projectOrgPoint = 0; // if project original wall points. + +// ----------------- Grid Deform Parameters ----------------------------- +// deformationMethod: Grid Deform. +// 1 -- SPRING. +// 2 -- RBF. +// stationalGridFile: Original grid file. +// visualFileName : The visualization file path of deform grid. +// nDeformStep : The max deform step. +// flapAngle : The max flap angle. +// rotatePostionZ : Rotate postion. +// rotatePostionY : Rotate postion. +// gridSlice : If dump slice grid. +// sliceAxis : Grid slice axis. +// slicePosition : Grid slice position. +int nDeformStep = 40; +double flapAngle = 10.0; +double rotatePostionZ = 4.00003; +double rotatePostionY = 3.05; + +int deformationMethod = 2; +string stationalGridFile = "./grid/Segment2Brid.fts"; +string visualFileName = "./results/deformedGrid.dat" + +int gridSlice = 1; +int sliceAxis = 1; +double slicePosition = 13; + // ----------------- RBF Parameters ------------------------------------- -// symmetryPlane: Which symmetry plane is used in the mesh. -// 0 -- without symmetry. -// 1 -- plane of x=0. -// 2 -- plane of y=0. -// 3 -- plane of z=0. -int numberOfReferenceCP = 10; -double influenceRadius = 20; -int symmetryPlane = 3; // 1: plane of x=0; 2: plane of y=0; 3: plane of z=0; +// numberOfReferenceCP : Number of reference Control Points. +// influencePara : The RBF influence radius parameter. +int numberOfReferenceCP = 40; +double influencePara = 25.0; // ----------------- Periodic Parameters -------------------------------- // Notice: Rotational periodicity only support rotation along the X axis! @@ -138,6 +164,11 @@ int symmetryPlane = 3; // 1: plane of x=0; 2: plane of y=0; 3: plane of // 0 -- without Periodic Boundary. // 1 -- Translational periodicity. // 2 -- Rotational periodicity. +// translationLength[]: The relative distance between two periodic face + which only support one direction. +// rotationAngle: The relative angle between two periodic face. + which is recorded in degrees. + int periodicType = 0; double translationLength[] = [0.0,0.0,0.0]; double rotationAngle = 0.0; @@ -180,7 +211,7 @@ string partition_grid_file = "./grid/sphere_mixed__4.fts"; // 0 -- Interface. (default) // 1 -- Physical boundary condition, used in Hybrid solver. // npartmethod: Method of interface reconstruction, default is 1. -// parallelPartMethod: Method of parallel partition, this is set only when execute parallel partition. It would be skipped when serial partition. +// parallelPartitionMethod: Method of parallel partition, this is set only when execute parallel partition. It would be skipped when serial partition. // 1 -- Using ParMetis for homogeneous MPI. // 2 -- Using Metis for homogeneous MPI. // 3 -- using METIS partition for homogeneous OpenMP. @@ -238,6 +269,8 @@ int compressible = 1; // 1 -- the flight conditions. // 2 -- the experiment conditions. // 3 -- the subsonic boundary conditions. +// 4 -- the condition that the velocity, temperature and density are given. +// 5 -- the condition that the velocity, temperature and pressure are given. // refReNumber: Reynolds number, which is based unit length, unit of 1/m. // refDimensionalTemperature: Dimensional reference temperature, or the total temperature only for the experiment condition. // freestream_vibration_temperature: Dimensional freestream vibration temperature. @@ -251,10 +284,12 @@ int compressible = 1; // 1 inch = 0.0254m. // 1 foot = 12 inches = 0.3048m. // 1 yard = 3 feet = 0.9144m. -// forceRefenenceLength, forceRefenenceLengthSpanWise, forceRefenenceArea: Reference length, SpanWise length and area, independent of grid unit. +// forceReferenceLength, forceReferenceLengthSpanWise, forceReferenceArea: Reference length, SpanWise length and area, independent of grid unit. // TorqueRefX, TorqueRefY, TorqueRefZ: Reference point, independent of grid unit. // radiationCoef: The radiation coefficient on wall, it is used to compute the radiation heat flux on wall when the boundary // condition is radiation equilibrium temperature, and 0.8 is the default value. +// refMolecularWeight : the reference molecular weight of gas used for perfect gas. The unit is g/mol. +// Generally, the gas is air. Sometimes, it is experiment gas, such as Nitrogen, Argon, and so on. double refMachNumber = 0.73; double attackd = 2.79; @@ -263,7 +298,7 @@ double angleSlide = 0.00; int inflowParaType = 0; double refReNumber = 6.5e6; double refDimensionalTemperature = 288.15; -double freestream_vibration_temperature = 10000.00; +double freestream_vibration_temperature = 300.00; //int inflowParaType = 1; //double height = 0.001; @@ -280,18 +315,34 @@ double freestream_vibration_temperature = 10000.00; //double refDimensionalTemperature = 288.144; //double refDimensionalPressure = 1.01313E05; +//The velocity, temperature and density are fixed. +//int inflowParaType = 4; +//double refDimensionalVelocity = 1000.0; +//double refDimensionalDensity = 1.0e3; + +//The velocity, temperature and pressure are fixed. +//int inflowParaType = 5; +//double refDimensionalVelocity = 1000.0; +//double refDimensionalPressure = 1.0e5; + +//The MachNumber, temperature and pressure are fixed. +//int inflowParaType = 6; +//double refDimensionalTemperature = 293; +//double refDimensionalPressure = 8886.06; + double wallTemperature = -1.0; double radiationCoef = 0.8; double gridScaleFactor = 1.0; int numberOfAerodynamicForceComponents = 1; -double forceRefenenceLengthSpanWise = 1.0; // unit of meter. -double forceRefenenceLength = 1.0; // unit of meter. -double forceRefenenceArea = 1.0; // unit of meter^2. +double forceReferenceLengthSpanWise = 1.0; // unit of meter. +double forceReferenceLength = 1.0; // unit of meter. +double forceReferenceArea = 1.0; // unit of meter^2. double TorqueRefX = 0.0; // unit of meter. double TorqueRefY = 0.0; // unit of meter. double TorqueRefZ = 0.0; // unit of meter. +double refMolecularWeight = 28.9644; // unit of g/mol. //----------------------------------------------------------------------- # Spatial Discretisation # @@ -303,7 +354,7 @@ double TorqueRefZ = 0.0; // unit of meter. // Using this when solve structered grid or hybrid. // -- "vanleer", "steger", "hlle", "lax_f". // -- "roe", "modified_roe". -// -- "ausm+", "ausm+w", "ausm+up", "ausmdv", "ausmpw". +// -- "ausm+", "ausm+w", "ausm+up", "ausmdv", "ausmpw", "ausmpw+". // str_limiter_name: Limiter of struct grid. // -- "vanalbada", "vanleer", "minmod", "smooth", "minvan", "3rdsmooth", "3rd_minmod_smooth". // -- "nolim", no limiter. @@ -339,14 +390,14 @@ string str_limiter_name = "vanalbada"; // uns_scheme_name: Spatial discretisation scheme of Unstruct grid. // Using this when solve Unstructered grid or hybrid. // -- "vanleer", "roe", "steger", "kfvs", "lax_f", "hlle". -// -- "ausm+", "ausmdv", "ausm+w", "ausmpw", "ausmpwplus". +// -- "ausm+", "ausmdv", "ausm+w", "ausmpw", "ausmpw+". // uns_limiter_name: Limiter of Unstruct grid. // -- "barth", "vencat", "vanleer", "minmod". // -- "vanalbada", "smooth", "nnd", "lpz", "1st". // -- "nolim", no limiter. // uns_vis_name: Discretisation method of viscous term. // -- "std", "test", "aver", "new1", "new2". -// uns_gradient: Gradient reconstruction method. +// gradientName: Gradient reconstruction method. // -- "default", "ggcell", "ggnode", "lsq". // ivencat: Variation of vencat limiter. // 0 -- org method, it is independent of grid scale. @@ -408,9 +459,15 @@ double roeEntropyScale = 1.0; // 1 -- unsteay. // physicalTimeStep: The nondimensional physical time step. // ifStartFromSteadyResults: The unsteady simulation is start from steady flowfield or not, 0 is for no and else is for yes. -// ifStaticsFlowField: Statistical variables for DES simulation. +// ifStaticsFlowField: Statistical variables for unsteady simulation. +// ifStaticsReynoldsStress: Statistical Reynolds stress for unsteady simulation. // startStatisticStep: Outer step when start statistics. // when the value is larger than "maxSimuStep", it is useless. +// statisticalTimePeriod: Used as time period of statistic analysis. +// when the value is negative, time period is treated as infinite. +// statisticMethod: Statistic reynolds stress method. + 0 --tau = - ^2 + 1 --tau = // min_sub_iter: The min sub iteration of unsteady simulation. // max_sub_iter: The max sub iteration of unsteady simulation. // tol_sub_iter: The tolerance of sub iteration of unsteady simulation. @@ -454,7 +511,10 @@ int iunsteady = 0; double physicalTimeStep = 0.01; int ifStartFromSteadyResults = 0; int ifStaticsFlowField = 0; +int ifStaticsReynoldsStress = 0; int startStatisticStep = 800000; +double statisticalTimePeriod = -1.0; +int statisticMethod = 0; int linearTwoStepMethods = 1; // 1--BDF1; 2--C-N; 3--BDF2; int methodOfDualTime = 3; @@ -482,8 +542,6 @@ double turbCFLScale = 1.0; double csrv = 2.0; double timemax = 1.0e10; double dtsave = -1.0; -int codeOfAleModel = 0; -int aleStartStrategy = -1; int maxale = 10; double dtau = 0.001; @@ -524,6 +582,7 @@ double lamda[] = 0.5, 1.0; int numberOfGridGroups = 1; string gridfile = "./grid/rae2822_hybrid2d__4.fts"; +string wallTemperaturefile= ""; int walldistMethod = 1; @@ -536,15 +595,16 @@ string turbfile = "results/turb.dat"; string visualfile = "results/tecflow.plt"; string wall_aircoefile = "results/wall_aircoef.dat"; -string probesflowfile = "results/sample.dat"; +string samplefile = "results/sample.dat"; int nDumpSurfaceInfo = 0; string wall_varfile = ""; string jetDefineFile = "bin/jet.hypara"; -string overset_gridfile = "results/iblank.ovs"; string sixDofFileName = "results/sixDofInfo.dat"; +string derivativeFileName = "results/identify.dat"; +string hysteresisFileName = "results/force_beta.plt"; int plotFieldType = 0; @@ -554,6 +614,11 @@ int plotFieldType = 0; int visualfileType = 1; +// samplefileMode: The dump mode of sample file. +// 0 -- dump out every probe/line/surface data for all step intervals. +// 1 -- dump out all probe/line/surface data for every step intervals. +int samplefileMode = 0; + // visualSlice: The slice of tecflow. // 0 -- Do not save slice data. // 1 -- comput and save it to sliceFile. @@ -567,11 +632,13 @@ int visualSlice = 0; int sliceAxis = 1; double slicePostion = -0.5; string sliceFile = "results/Slice.plt"; +int dumpWallFaceCenter = 0; // min-max box of the visual block. double lowerPlotFieldBox[] = [0.0 0.0 0.0]; double upperPlotFieldBox[] = [1.0 1.0 1.0]; +//-----------the optional parameters list for the flow field output---------------- // nVisualVariables: Number of variables want to be dumped for tecplot visualization. // visualVariables : Variable types dumped, listed as following: // -- density(0), u(1), v(2), w(3), pressure(4), temperature(5), mach(6), @@ -582,11 +649,27 @@ double upperPlotFieldBox[] = [1.0 1.0 1.0]; // -- vibration temperature(Tv, 33), electron temperature(Te, 34), vibrational energy(Ev, 35), electric energy(Ee, 36), // -- number density of electron(Ne, 37), dimensioanl density(rho, 38), dimensioanl pressure(p, 39), dimensioanl temperature(T, 40), // -- gradientUx(41), gradientUy(42), gradientVx(43), gradientVy(44), iblank(81). +// -- specific heat ratio(gama, 56) // Important Warning: Array size of visualVariables MUST be equal to nVisualVariables!!! // Variables order must from small to big. +//-----------the optional parameters list for the wall boundary condition---------------- +// nVisualWallVariables: The number of visual variables on wall. +// visualWallVariables : dumped variable types, listed as following: +// -coefficient of pressure(cp, 0), -coefficient of friction(cf, 1), yplus(2), -non-dimensional heat flux(Q_NonDim, 3), -dimensional heat flux(Q_Dim, 4), +// -pressure on wall(pw, 5), -temperature on wall(Tw, 6), -density on wall(rhow, 7), -heat flux of translational-rotational temperature term(Qtr, 8), +// -heat flux of species diffusion term(Qs, 9), -heat flux of vibrational temperature term(Qv, 10), -heat flux of electron temperature term(Qe, 11), +// -species mass fractions(Ns, 12), -x component of wall velocity(Vx, 13), -y component of wall velocity(Vy, 14), -z component of wall velocity(Vz, 15) +// -slip translational-rotational temperature(Tts, 16), -slip vibrational temperature(Tvs, 17), -slip electron temperature(Tes, 18), -absolute wall velocity(Vs, 19) +// -Stanton number(St, 20), -coefficient of heat rate(Ch, 21), -temperature jump(deltaT, 22), -transition gamaeff(gamaeff, 48), +// -transition intermittency(intermittency, 51), -transition momentum thickness reynolds(MomentumThicknessReynolds, 52), +// -overlap iblank(iblank, 81) + int nVisualVariables = 8; int visualVariables[] = [0, 1, 2, 3, 4, 5, 6, 15]; +int nVisualWallVariables = 9; +int visualWallVariables[] = [0, 1, 2, 3, 4, 5, 9, 10, 11]; + // dumpStandardModel: Dump many standard model data. // 1 -- Turbulent flat plate. int dumpStandardModel = 0; @@ -644,6 +727,7 @@ int probeVariablesInterpolationMethod = 0; // mod_turb_res: If modify the residuals for the cells next to the wall or not, default is 0. int turbInterval = 1; +int turbOrderStruct = 2; int kindOfTurbSource = 0; int mod_turb_res = 0; double turb_relax = 1.0; @@ -652,6 +736,10 @@ double muoo = 3.0; double kwoo = 5.0; int transitionType = 0; double turbIntensity = -1.0; +int freeturbIntensitySRModify = 0; +double freeDecayXLocation = 0.0; +int compressibleCorrection = 0; +int transitionMaFix = 1; # maximum eddy viscosity (myt/my) max. double eddyViscosityLimit = 1.0e10; @@ -661,8 +749,8 @@ int monitor_vistmax = 0; # LES Parameter # //----------------------------------------------------------------------- // iLES: Create LESSolver or not. -// >= 1 - Create LESSolver; -// < 1 - not. +// == 1 - Create LESSolver; +// != 1 - not. // amplitudeofDisturb: Amplitude of adding disturb. // disturbstep: Unsteady time step or steady iteration of adding random disturb. // iterdisturb: Add random disturb in every sub-iter or only first sub-iter. @@ -676,8 +764,9 @@ int monitor_vistmax = 0; // utau: friction velocity, using in DNSDisturb. // sgsmodel: subgrid scale model. // = "smagorinsky"; -// = "dsm"; -// = "wale". +// = "dsmCom"; +// = "wale"; +// = "sigma". // deltaFunctionType: = 1 - MAX(deltai, deltaj, deltak); // = 2 - pow(deltai * deltaj *deltak, 1/3); // = 3 - Devloped by Scotti. @@ -700,9 +789,10 @@ string sgsmodel = "smagorinsky"; int deltaFunctionType = 2; int wallDampingFunctionType = 1; int turbViscousCutType = 2; -double smagConstant = 0.135; +double smagConstant = 0.1; double isotropicConstant = 0.0; double waleConstant = 0.6; +double sigmaConstant = 1.35; int filterDirection[] = [1, 1, 0]; int averageDirection[] = [0, 0, 0]; double testFilterScale = 2.0; @@ -724,12 +814,42 @@ int monitorNegativeConstant = 0; // nm: Equation number of the physics, but is out of commision now. // 4 -- for 2D. // 5 -- for 3D. -// nGasModel: The type of gas. +// nGasModel: The type of gas. less than and equal to 1 represents the mixture gas. +// Otherwise, the pure gas with one component is used for perfect gas. // 0 -- Earth gas. // 1 -- Mars gas. +// 2 -- Argon. +// 3 -- Nitrogen. +// nEnergyRecycle: The type of EnergyModel Recycle. +// 0 -- not used . +// 1 -- used. +// nDensityModify: The type of densitymodify. + +// 0 -- not used. +// 1 -- used. // nchem: // 0 -- without chemical reaction flow. // 1 -- the chemical reaction flow is considered. +// nEquilibriumGas: the variable is valid when the condition of nchem=0 is satisfied. +// 0 -- perfect gas. +// 5, 7, 11 -- equilibrium gas, meanwhile, its value denotes the number of gas component. +// nPCWCycleStep: the maximum step number of iteration in the module of computing species mass fractions with the partial catalytic wall(PCW) condition. +// the value equals to or is greater than 1, and 3 is for default value. +// nRETCycleStep: the maximum step number of iteration in the module of computing radiation equilibrium temperature on wall. +// the value equals to or is greater than 1, and 3 is for default value. +// nSLIPCycleStep:the maximum step number of iteration in the module of computing slip temperature, slip velocity and slip species mass fraction. +// the value equals to or is greater than 1, and 3 is for default value. +// nSlipBCModel : The computational model of slip boundary conditions. + +// 0 -- no slip. +// 1 -- the conventional Maxwell slip conditions. +// 2 -- the Gokcen slip conditions. +// 3 -- the Knudsen-layer correction of the standard slip conditions proposed by Lockerby, et al. +// 4 -- the Kogan simplified slip conditions. +// nMeanFreePathType : the method to the mean free-path for the slip conditions. For the mixture, 0 is suggested. +// 0 -- the equivalent mean free-path is calculated by the simple hard sphere model(HS). +// 1 -- calculated by the definition that includes the variables of the number density and the molecule diameter. +// 2 -- the equivalent mean free-path is calculated by the variable hard sphere model(VHS). // nchemsrc: // 0 -- the source terms are not computed. // 1 -- the source terms are computed. @@ -740,15 +860,72 @@ int monitorNegativeConstant = 0; // 1 -- One-temperature model. // 2 -- Two-temperature model. // 3 -- Three-temperature model. +// nTEnergyModel: the method to computing temperature energy model. +// 0 -- the energy term is computed using the conventional method. +// 1 -- the energy term is computed using the curve fitting method. +// parkVDPower: the power of translational-rotational temperature in the Park V-D(vibration-dissociation) coupling model. +// The value is in range of [0.0, 1.0], DPLR suggests 0.5, LAURA suggests 0.7, while 0.6 is given as default value. // catalyticCoef: // 0.0 -- full non-catalytic wall boundary condition. // 1.0 -- full catalytic wall boundary condition. // in range of (0.0, 1.0) -- partial catalytic condition, the value indicates the catalytic coefficient. +// nIsSuperCatalytic : the super catalytic condition for the fully catalytic wall, and assigned with the value of 1. +// 0 -- equilibrium condition for the fully catalytic wall where the mass fractions are assigned with the values of the free stream. +// 1 -- super catalytic condition for the fully catalytic wall where all the atomic components combine into molecular components. +// nTemperatureJump : the method to calculate the temperature jump. +// 0 -- calculated by the variables of heat conductivity and constant volume specific heat for each energy mode. +// 1 -- the general method where the iteration is calculated with the translation-rotation temperature. +// sigmaVelocity: the coordination coefficient of tangential momentum for computation of slip velocity. The value is in range of (0.0, 2.0]. +// sigmaTemperature: the heat coordination coefficient for computation of slip temperature. The value is in range of (0.0, 2.0]. +// sigmaMassFraction: the species coordination coefficient for computation of slip mass fractions. The value is in range of (0.0, 2.0]. +// velocitySlipCorrectConstant: the correction constant to the velocity slip condition. For the diffuse reflection, 1.0 is used. +// 1.0 -- proposed by Maxwell. +// sqrt(2/PI)~0.8 -- used for "micro-slip", namely the actual velocity slip at the wall. +// 1.146 -- proposed for an additional "fictitious" velocity slip. + +// chemicalRelaxCorf: The value is in range of [0.001, 1.0]. +// chemicalSpectrumRadiusCoef: The value is in range of [1.0, 3.0]. +// viscousSpectrumRadiusCoef : The value is in range of [1.0, 3.0]. +// inviscidSpectrumRadiusCoef: The value is in range of [1.0, 3.0]. +// staticPressureRelaxCorf: The value is in range of [0.1, 1.0]. +// nIsChemicalFreeze : the flag to freeze the chemical reactions. +// 0 -- not freeze, the chemical reaction sources will be calculated. +// 1 -- freezes the chemical reactions, the chemical reaction sources will not be calculated.// veTemperatureMin: The minimum of Tv and Te +// nDebug: cout the Wrong place and abort +// 0 -- not used. +// 1 -- used. +// nSpeciesLimit: limitter of gas species +// 0 -- not used. +// 1 -- used. +// nTurblenceForChemical: the coupled mode of Turblence and Chemical reaction +// 0 -- method 0. +// 1 -- method 1. +// nViscosityFluxSublevelModified: Modified for ViscosityFlux on Sublevel grid +// 0 -- not used. +// 1 -- used. +// nChemcalSourceModified: Modified on ChemcalSource +// 0 -- not used. +// 1 -- used. +// nAblation: +// 0 -- The wall ablation is not computed. +// 1 -- The wall ablation is computed. +// isInjection: +// 0 -- The injection velocity of ablation wall is not computed. +// 1 -- The injection velocity of ablation wall is computed. +// nViscosityModel: + +// 0 -- Blottner fitting method. +// 1 -- Gupta fitting method. +// nSutherland: +// 0 -- stands for selecting the Blotter curve fits mode. +// 1 -- stands for Sutherland relation. // gasfile: Indicates the gas model, 9 models are provided, namely "Gu5", "Gu7", "Gu11", "Pa5", "Pa7", "Pa11", "DK5", "DK7", "DK11". // "Gu" -- indicates the Gupta Model, three-Type Models are embeded in the library, namely, the 5-species-6-reactions, the 7-species-9-reactions, the 11-species-20-reactions. // "Pa" -- indicates the Park Model, three-Type Models are embeded in the library, namely, the 5-species-17-reactions, the 7-species-22-reactions, the 11-species-48-reactions. // "DK" -- indicates the Dunn-Kang Model, three-Type Models are embeded in the library, namely, the 5-species-11-reactions, the 7-species-15-reactions, the 11-species-26-reactions. // "Mars-Pa8" is for Park model of Mars gas, "Mars-Mc8" for McKenzie model of Mars gas. +// "Combustion-12" -- indicates the Combustion Chamber Gas Model which includes 12-species-20-reactions. +// "Gas-Mixture" -- indicates the process of mixing two species without reacting. // For self-definition model, the gasfile is used to indicate the file path of the new gas model. // speciesName: Used to list the names of each species, while each species name is separated by the symbol of comma. // initMassFraction: Used to list the initial mass fractions of species in accordance with the sequence of names in the parameter speciesName. @@ -758,6 +935,10 @@ int dg_high_order = 0; int iapplication = 0; int iCodeBranch = 0; int nm = 5; +int nEquilibriumGas = 0; +int nPCWCycleStep = 3; +int nRETCycleStep = 3; +int nSLIPCycleStep= 3; double refGama = 1.4; double prl = 0.72; @@ -770,23 +951,73 @@ int nchem = 0; int nchemsrc = 1; int nchemrad = 1; int ntmodel = 1; -int nChemicalFlowStep = 0; + +int nEnergyRecycle = 0; +int nSlipBCModel = 0; +int nDensityModify = 1; +int nTEnergyModel = 0; +int nMeanFreePathType = 0; +int nIsChemicalFreeze = 0; +int nIsSuperCatalytic = 1; +int nTemperatureJump = 0; + +double parkVDPower = 0.6; double catalyticCoef = 0.0; +double sigmaVelocity = 1.0; +double sigmaTemperature = 1.0; +double sigmaMassFraction = 1.0; +double velocitySlipCorrectConstant = 1.0; + +double chemicalRelaxCorf = 1.0; +double chemicalSpectrumRadiusCoef = 1.0; +double viscousSpectrumRadiusCoef = 1.0; +double inviscidSpectrumRadiusCoef = 1.0; +double staticPressureRelaxCorf = 1.0; + +double veTemperatureMin = 30.0; +int nDebug = 0; +int nSpeciesLimit = 0; +int nTurblenceForChemical = 0; +int nViscosityFluxSublevelModified = 0 ; +int nChemcalSourceModified = 0; + +int nAblation = 0; +int isInjection = 0; +int nViscosityModel = 0; +int nMarsModel = 0; string gasfile = "DK5"; //string gasfile = "./chemical/Dunn-Kang_air5s11r.dat"; string speciesName = "O, O2, NO, N, N2"; -string initMassFraction = "0.0, 0.23, 0.0, 0.0, 0.77"; +string initMassFraction = "0.0, 0.233, 0.0, 0.0, 0.767"; //string speciesName = "O, O2, NO, N, NO+, N2, e-"; -//string initMassFraction = "0.0, 0.23, 0.0, 0.0, 0.0, 0.77, 0.0"; +//string initMassFraction = "0.0, 0.233, 0.0, 0.0, 0.0, 0.767, 0.0"; //string speciesName = "O, O2, NO, N, O+, O2+, NO+, N+, N2+, N2, e-"; -//string initMassFraction = "0.0, 0.23, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.77, 0.0"; +//string initMassFraction = "0.0, 0.233, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.767, 0.0"; //string gasfile = "Mars-Pa8"; //string speciesName = "O, O2, NO, N, N2, C, CO, CO2"; //string initMassFraction = "0.0015, 0.0429, 0.0, 0.0, 0.0, 0.0, 0.0777, 0.8779"; +//string gasfile = "DK7"; +//string speciesName = "O, O2, NO, N, NO+, C, C2, CO, CO2, CN, N2, e-"; +//string initMassFraction = "0.0, 0.233, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.767, 0.0"; + +//string gasfile = "Combustion-12"; +//string speciesName = "O, O2, NO, N, C, CO, CO2, H, H2, OH, H2O, N2"; +//string initMassFraction = "0.0, 0.233, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.767"; + +//string gasfile = "Gas-Mixture"; +//string speciesName ="SpeciesA, SpeciesB"; +//string initMassFraction = "1.0, 0.0"; +int nSutherland = 0; +double gamaSpeciesA = 1.4; +double gamaSpeciesB = 1.3; +double molecularWeightSpeciesA = 29.0; +double molecularWeightSpeciesB = 30.0; + +int nChemicalFlowStep = 0; int ifStartFromPerfectGasResults = 0; ######################################################################### @@ -841,7 +1072,7 @@ string zoneInverseFileName = "./grid/zoneInverseMapping.inp"; ######################################################################### # High Order Struct Solver # ######################################################################### -// ifvfd: +// isFVMOrFDM: // 0 -- NSSolverStruct using Finite Volume Method. // 1 -- NSSolverStruct using Finite Differ Method. // SolverStructOrder: Spatial discretisation order of NS equations with struct grid. @@ -856,7 +1087,7 @@ string zoneInverseFileName = "./grid/zoneInverseMapping.inp"; // -- "roe", "steger". // structhighordergradient: // -- "conservation", "chain_rule". -int ifvfd = 0; +int isFVMOrFDM = 0; string str_highorder_solver = "WCNS"; int SolverStructOrder = 0; double str_highorder_interpolation_epsilon = 1.0e-6; @@ -885,8 +1116,12 @@ int allReduceStep = 1; // codeOfOversetGrid: Overlapping(overset) grid or not. // 0 -- NON-overlapping grid. // 1 -- Overlapping grid. +// oversetInterpolationMethod: the method of overset interpolation while field simulation +// 0 -- set the acceptor cell value by donor cell value. +// 1 -- set the acceptor cell value by distance weight of donor cell value. + int codeOfOversetGrid = 0; -int codeOfOversetSlipGrid = 0; +int oversetInterpolationMethod = 0; int readOversetFileOrNot = 0; int symetryOrNot = 0; int readInAuxiliaryInnerGrid = 1; @@ -895,7 +1130,7 @@ int readInSklFileOrNot = 0; string auxiliaryInnerGrid0 = "./grid/aux-upper.fts"; string auxiliaryInnerGrid1 = "./grid/aux-lower.fts"; string auxiliaryInnerGrid2 = ""; -string oversetGridFileName = "./grid/overlap.ovs"; +string oversetGridFileName = "./grid/iblank.ovs"; double walldistMainZone = 1.0 double toleranceForOversetSearch = 1.0e-3; double toleranceForOversetBox = 1.0e-3; @@ -905,16 +1140,78 @@ int outTecplotOverset = 0; int numberOfMovingBodies = 2; +// ----------------- ALE configuration ------------------------------ +int codeOfAleModel = 1; +int aleStartStrategy = -1; + +int strategyForFaceNormalVelocity = 0; //0-By Sweeping volume; 1-By face center 1st; 2-By face center 2nd; +int strategyForGCLSource = 0; //0-present; 1-Ahn; + +//0:1st-Admas-Bashforth; 1:2nd-Admas-Bashforth; 2:1st-Implicit-Euler; 3:2nd-Implicit Euler; 4:2nd-Adams-Moulton; 5:3rd-Adams-Moulton +int methodForKineticEquation = 0; +double relaxParameterOfKinetic = 1.0; + +######################################################################### +# motive information # +######################################################################### +int numberOfMovingBodies = 1; + +############################## body0 ############################## +//mass of parts +double mass_0 = 1.0; +//mass matrix of parts Ixx Iyy Izz Ixy Ixz Iyz +double massMatrix_0[] = 1e-7, 1e-6, 1e-6, 0.0, 0.0, 0.0; +//initial six DOF position information of parts. xc yc zc +double massCenter_0[] = 0.0 , 0.0, 0.0; +//initial six DOF position information of parts. angleX angleY angleZ +double attitudeAngle_0[] = 0.0 , 0.0, 0.0; +//initial six DOF move information of parts. vc vy vz +double massCenterVelocity_0[] = 0.0, 0.0, 0.0; +//initial six DOF move information of parts. omigX omigY omigZ +double angularVelocity_0[] = 0.0, 0.0, 0.0; +//the object that the parts belong to. +int fartherIndex_0 = -1; +//the assembly position of the parts. xc yc zc angleX angleY angleZ +double configPamameter_0[] = 0.0 ,0.0 ,0.0 ,0.0 ,0.0 ,0.0; +//the move pattern of the parts. +// -1 given motion partten. +// 0 still. +// 1 six DOF motion. +// 2 three DOF motion. +// 11 X-axis forced motion. +// 12 Y-axis forced motion. +// 13 Z-axis forced motion. +// 14 forced pitch motion. +// 15 forced yaw motion. +// 16 forced roll motion. +int RBDMethod_0 = 0; +double amplitude_0 = 0.0; +double reduceFrequency_0 = 0.0; +//string uDFSixDofFileName_0 = "./Bin/UDFSixDof.Parameter"; +//additional force (system axis) fX fY fZ +double addedForce_0[] = 0.0 ,0.0 ,0.0 ; +//additional moment of Force (system axis) mX mY mZ +double addedMoment_0[] = 0.0 ,0.0 ,0.0 ; +//the deformation method of the parts. +int morphing_0 = 0; + +// post indentify +int integralOrder = 4; + + // ---------------- ATP read -------------------------------------------- //@int inflowParaType = 0; -//@double refReNumber = 2.329418E08; -//@double refDimensionalTemperature = 288.144; -//@double refDimensionalPressure = 1.01313E05; -//@double height = -0.001; +//@double refReNumber = 6.5e6; +//@double refDimensionalTemperature = 288.15; +//@double freestream_vibration_temperature = 300.00; +//@double refDimensionalPressure = 0; +//@double height = 0; //@int nsubsonicInlet = 0; //@int nsubsonicOutlet = 0; //@string inLetFileName = "./bin/subsonicInlet.hypara"; //@string outLetFileName = "./bin/subsonicOutlet.hypara"; +//@double refDimensionalVelocity = 0; +//@double refDimensionalDensity = 0; ######################################################################### # Old Parameter # diff --git a/A07_TwoD_Rae2822_SST_Struct_4CPU/bin/cfd_para_transonic.hypara b/A07_TwoD_Rae2822_SST_Struct_4CPU/bin/cfd_para_transonic.hypara index ae5016d..55a0007 100644 --- a/A07_TwoD_Rae2822_SST_Struct_4CPU/bin/cfd_para_transonic.hypara +++ b/A07_TwoD_Rae2822_SST_Struct_4CPU/bin/cfd_para_transonic.hypara @@ -56,9 +56,9 @@ double refDimensionalTemperature = 288.15; double gridScaleFactor = 1.0; -double forceRefenenceLengthSpanWise = 1.0; // unit of meter. -double forceRefenenceLength = 1.0; // unit of meter. -double forceRefenenceArea = 1.0; // unit of meter^2. +double forceReferenceLengthSpanWise = 1.0; // unit of meter. +double forceReferenceLength = 1.0; // unit of meter. +double forceReferenceArea = 1.0; // unit of meter^2. double TorqueRefX = 0.0; // unit of meter. double TorqueRefY = 0.0; // unit of meter. double TorqueRefZ = 0.0; // unit of meter. diff --git a/A08_TwoD_30p30n_SST_Struct_4CPU/bin/cfd_para.hypara b/A08_TwoD_30p30n_SST_Struct_4CPU/bin/cfd_para.hypara index df090b7..b17970c 100644 --- a/A08_TwoD_30p30n_SST_Struct_4CPU/bin/cfd_para.hypara +++ b/A08_TwoD_30p30n_SST_Struct_4CPU/bin/cfd_para.hypara @@ -21,6 +21,7 @@ // 1 -- Grid conversion, from other grid data to PHenglEI, such as Fluent, CGNS. // 2 -- Grid refinement. // 3 -- Grid merging, merge two blocks into one block. +// 4 -- Grid deformation, achieve unstructured grid deformation. // 5 -- Grid repairing, repair the original grid in order to remove the negative volume cells. // 6 -- Grid mirroring, mirror a symmetry grid to whole grid. // multiblock: Multi-block grid or not, only for structured grid conversion. @@ -72,13 +73,15 @@ int dumpOldGrid = 0; //----------------------------------------------------------------------- // from_gfile: path of original data file for unstructure grid convert from. // out_gfile: path of target file for grid convert to, *.fts type of file usually. +int numberOfGridFile = 1; string from_gfile = "./grid/rae2822_hybrid2d.cas"; +string from_gfile1= ""; + string out_gfile = "./grid/flat_laminr_133_85_2d.fts"; // ----------------- some advanced choices ------------------------------ // iunsteady: The Grid is for unsteady simulation or not. int iunsteady = 0; -int iale = 0; int codeOfAleModel = 0; // fileformat: Ustar Grid file format. @@ -122,15 +125,38 @@ int isDeform = 0; int exclusiveCase = 0; // 0: NON case; 1: JSM-C2-NPOFF case; 2: CHNT. int projectOrgPoint = 0; // if project original wall points. + +// ----------------- Grid Deform Parameters ----------------------------- +// deformationMethod: Grid Deform. +// 1 -- SPRING. +// 2 -- RBF. +// stationalGridFile: Original grid file. +// visualFileName : The visualization file path of deform grid. +// nDeformStep : The max deform step. +// flapAngle : The max flap angle. +// rotatePostionZ : Rotate postion. +// rotatePostionY : Rotate postion. +// gridSlice : If dump slice grid. +// sliceAxis : Grid slice axis. +// slicePosition : Grid slice position. +int nDeformStep = 40; +double flapAngle = 10.0; +double rotatePostionZ = 4.00003; +double rotatePostionY = 3.05; + +int deformationMethod = 2; +string stationalGridFile = "./grid/Segment2Brid.fts"; +string visualFileName = "./results/deformedGrid.dat" + +int gridSlice = 1; +int sliceAxis = 1; +double slicePosition = 13; + // ----------------- RBF Parameters ------------------------------------- -// symmetryPlane: Which symmetry plane is used in the mesh. -// 0 -- without symmetry. -// 1 -- plane of x=0. -// 2 -- plane of y=0. -// 3 -- plane of z=0. -int numberOfReferenceCP = 10; -double influenceRadius = 20; -int symmetryPlane = 3; // 1: plane of x=0; 2: plane of y=0; 3: plane of z=0; +// numberOfReferenceCP : Number of reference Control Points. +// influencePara : The RBF influence radius parameter. +int numberOfReferenceCP = 40; +double influencePara = 25.0; // ----------------- Periodic Parameters -------------------------------- // Notice: Rotational periodicity only support rotation along the X axis! @@ -138,6 +164,11 @@ int symmetryPlane = 3; // 1: plane of x=0; 2: plane of y=0; 3: plane of // 0 -- without Periodic Boundary. // 1 -- Translational periodicity. // 2 -- Rotational periodicity. +// translationLength[]: The relative distance between two periodic face + which only support one direction. +// rotationAngle: The relative angle between two periodic face. + which is recorded in degrees. + int periodicType = 0; double translationLength[] = [0.0,0.0,0.0]; double rotationAngle = 0.0; @@ -180,7 +211,7 @@ string partition_grid_file = "./grid/sphere_mixed__4.fts"; // 0 -- Interface. (default) // 1 -- Physical boundary condition, used in Hybrid solver. // npartmethod: Method of interface reconstruction, default is 1. -// parallelPartMethod: Method of parallel partition, this is set only when execute parallel partition. It would be skipped when serial partition. +// parallelPartitionMethod: Method of parallel partition, this is set only when execute parallel partition. It would be skipped when serial partition. // 1 -- Using ParMetis for homogeneous MPI. // 2 -- Using Metis for homogeneous MPI. // 3 -- using METIS partition for homogeneous OpenMP. @@ -238,6 +269,8 @@ int compressible = 1; // 1 -- the flight conditions. // 2 -- the experiment conditions. // 3 -- the subsonic boundary conditions. +// 4 -- the condition that the velocity, temperature and density are given. +// 5 -- the condition that the velocity, temperature and pressure are given. // refReNumber: Reynolds number, which is based unit length, unit of 1/m. // refDimensionalTemperature: Dimensional reference temperature, or the total temperature only for the experiment condition. // freestream_vibration_temperature: Dimensional freestream vibration temperature. @@ -251,10 +284,12 @@ int compressible = 1; // 1 inch = 0.0254m. // 1 foot = 12 inches = 0.3048m. // 1 yard = 3 feet = 0.9144m. -// forceRefenenceLength, forceRefenenceLengthSpanWise, forceRefenenceArea: Reference length, SpanWise length and area, independent of grid unit. +// forceReferenceLength, forceReferenceLengthSpanWise, forceReferenceArea: Reference length, SpanWise length and area, independent of grid unit. // TorqueRefX, TorqueRefY, TorqueRefZ: Reference point, independent of grid unit. // radiationCoef: The radiation coefficient on wall, it is used to compute the radiation heat flux on wall when the boundary // condition is radiation equilibrium temperature, and 0.8 is the default value. +// refMolecularWeight : the reference molecular weight of gas used for perfect gas. The unit is g/mol. +// Generally, the gas is air. Sometimes, it is experiment gas, such as Nitrogen, Argon, and so on. double refMachNumber = 0.73; double attackd = 2.79; @@ -263,7 +298,7 @@ double angleSlide = 0.00; int inflowParaType = 0; double refReNumber = 6.5e6; double refDimensionalTemperature = 288.15; -double freestream_vibration_temperature = 10000.00; +double freestream_vibration_temperature = 300.00; //int inflowParaType = 1; //double height = 0.001; @@ -280,18 +315,34 @@ double freestream_vibration_temperature = 10000.00; //double refDimensionalTemperature = 288.144; //double refDimensionalPressure = 1.01313E05; +//The velocity, temperature and density are fixed. +//int inflowParaType = 4; +//double refDimensionalVelocity = 1000.0; +//double refDimensionalDensity = 1.0e3; + +//The velocity, temperature and pressure are fixed. +//int inflowParaType = 5; +//double refDimensionalVelocity = 1000.0; +//double refDimensionalPressure = 1.0e5; + +//The MachNumber, temperature and pressure are fixed. +//int inflowParaType = 6; +//double refDimensionalTemperature = 293; +//double refDimensionalPressure = 8886.06; + double wallTemperature = -1.0; double radiationCoef = 0.8; double gridScaleFactor = 1.0; int numberOfAerodynamicForceComponents = 1; -double forceRefenenceLengthSpanWise = 1.0; // unit of meter. -double forceRefenenceLength = 1.0; // unit of meter. -double forceRefenenceArea = 1.0; // unit of meter^2. +double forceReferenceLengthSpanWise = 1.0; // unit of meter. +double forceReferenceLength = 1.0; // unit of meter. +double forceReferenceArea = 1.0; // unit of meter^2. double TorqueRefX = 0.0; // unit of meter. double TorqueRefY = 0.0; // unit of meter. double TorqueRefZ = 0.0; // unit of meter. +double refMolecularWeight = 28.9644; // unit of g/mol. //----------------------------------------------------------------------- # Spatial Discretisation # @@ -303,7 +354,7 @@ double TorqueRefZ = 0.0; // unit of meter. // Using this when solve structered grid or hybrid. // -- "vanleer", "steger", "hlle", "lax_f". // -- "roe", "modified_roe". -// -- "ausm+", "ausm+w", "ausm+up", "ausmdv", "ausmpw". +// -- "ausm+", "ausm+w", "ausm+up", "ausmdv", "ausmpw", "ausmpw+". // str_limiter_name: Limiter of struct grid. // -- "vanalbada", "vanleer", "minmod", "smooth", "minvan", "3rdsmooth", "3rd_minmod_smooth". // -- "nolim", no limiter. @@ -339,14 +390,14 @@ string str_limiter_name = "vanalbada"; // uns_scheme_name: Spatial discretisation scheme of Unstruct grid. // Using this when solve Unstructered grid or hybrid. // -- "vanleer", "roe", "steger", "kfvs", "lax_f", "hlle". -// -- "ausm+", "ausmdv", "ausm+w", "ausmpw", "ausmpwplus". +// -- "ausm+", "ausmdv", "ausm+w", "ausmpw", "ausmpw+". // uns_limiter_name: Limiter of Unstruct grid. // -- "barth", "vencat", "vanleer", "minmod". // -- "vanalbada", "smooth", "nnd", "lpz", "1st". // -- "nolim", no limiter. // uns_vis_name: Discretisation method of viscous term. // -- "std", "test", "aver", "new1", "new2". -// uns_gradient: Gradient reconstruction method. +// gradientName: Gradient reconstruction method. // -- "default", "ggcell", "ggnode", "lsq". // ivencat: Variation of vencat limiter. // 0 -- org method, it is independent of grid scale. @@ -408,9 +459,15 @@ double roeEntropyScale = 1.0; // 1 -- unsteay. // physicalTimeStep: The nondimensional physical time step. // ifStartFromSteadyResults: The unsteady simulation is start from steady flowfield or not, 0 is for no and else is for yes. -// ifStaticsFlowField: Statistical variables for DES simulation. +// ifStaticsFlowField: Statistical variables for unsteady simulation. +// ifStaticsReynoldsStress: Statistical Reynolds stress for unsteady simulation. // startStatisticStep: Outer step when start statistics. // when the value is larger than "maxSimuStep", it is useless. +// statisticalTimePeriod: Used as time period of statistic analysis. +// when the value is negative, time period is treated as infinite. +// statisticMethod: Statistic reynolds stress method. + 0 --tau = - ^2 + 1 --tau = // min_sub_iter: The min sub iteration of unsteady simulation. // max_sub_iter: The max sub iteration of unsteady simulation. // tol_sub_iter: The tolerance of sub iteration of unsteady simulation. @@ -454,7 +511,10 @@ int iunsteady = 0; double physicalTimeStep = 0.01; int ifStartFromSteadyResults = 0; int ifStaticsFlowField = 0; +int ifStaticsReynoldsStress = 0; int startStatisticStep = 800000; +double statisticalTimePeriod = -1.0; +int statisticMethod = 0; int linearTwoStepMethods = 1; // 1--BDF1; 2--C-N; 3--BDF2; int methodOfDualTime = 3; @@ -482,8 +542,6 @@ double turbCFLScale = 1.0; double csrv = 2.0; double timemax = 1.0e10; double dtsave = -1.0; -int codeOfAleModel = 0; -int aleStartStrategy = -1; int maxale = 10; double dtau = 0.001; @@ -524,6 +582,7 @@ double lamda[] = 0.5, 1.0; int numberOfGridGroups = 1; string gridfile = "./grid/rae2822_hybrid2d__4.fts"; +string wallTemperaturefile= ""; int walldistMethod = 1; @@ -536,15 +595,16 @@ string turbfile = "results/turb.dat"; string visualfile = "results/tecflow.plt"; string wall_aircoefile = "results/wall_aircoef.dat"; -string probesflowfile = "results/sample.dat"; +string samplefile = "results/sample.dat"; int nDumpSurfaceInfo = 0; string wall_varfile = ""; string jetDefineFile = "bin/jet.hypara"; -string overset_gridfile = "results/iblank.ovs"; string sixDofFileName = "results/sixDofInfo.dat"; +string derivativeFileName = "results/identify.dat"; +string hysteresisFileName = "results/force_beta.plt"; int plotFieldType = 0; @@ -554,6 +614,11 @@ int plotFieldType = 0; int visualfileType = 1; +// samplefileMode: The dump mode of sample file. +// 0 -- dump out every probe/line/surface data for all step intervals. +// 1 -- dump out all probe/line/surface data for every step intervals. +int samplefileMode = 0; + // visualSlice: The slice of tecflow. // 0 -- Do not save slice data. // 1 -- comput and save it to sliceFile. @@ -567,11 +632,13 @@ int visualSlice = 0; int sliceAxis = 1; double slicePostion = -0.5; string sliceFile = "results/Slice.plt"; +int dumpWallFaceCenter = 0; // min-max box of the visual block. double lowerPlotFieldBox[] = [0.0 0.0 0.0]; double upperPlotFieldBox[] = [1.0 1.0 1.0]; +//-----------the optional parameters list for the flow field output---------------- // nVisualVariables: Number of variables want to be dumped for tecplot visualization. // visualVariables : Variable types dumped, listed as following: // -- density(0), u(1), v(2), w(3), pressure(4), temperature(5), mach(6), @@ -582,11 +649,27 @@ double upperPlotFieldBox[] = [1.0 1.0 1.0]; // -- vibration temperature(Tv, 33), electron temperature(Te, 34), vibrational energy(Ev, 35), electric energy(Ee, 36), // -- number density of electron(Ne, 37), dimensioanl density(rho, 38), dimensioanl pressure(p, 39), dimensioanl temperature(T, 40), // -- gradientUx(41), gradientUy(42), gradientVx(43), gradientVy(44), iblank(81). +// -- specific heat ratio(gama, 56) // Important Warning: Array size of visualVariables MUST be equal to nVisualVariables!!! // Variables order must from small to big. +//-----------the optional parameters list for the wall boundary condition---------------- +// nVisualWallVariables: The number of visual variables on wall. +// visualWallVariables : dumped variable types, listed as following: +// -coefficient of pressure(cp, 0), -coefficient of friction(cf, 1), yplus(2), -non-dimensional heat flux(Q_NonDim, 3), -dimensional heat flux(Q_Dim, 4), +// -pressure on wall(pw, 5), -temperature on wall(Tw, 6), -density on wall(rhow, 7), -heat flux of translational-rotational temperature term(Qtr, 8), +// -heat flux of species diffusion term(Qs, 9), -heat flux of vibrational temperature term(Qv, 10), -heat flux of electron temperature term(Qe, 11), +// -species mass fractions(Ns, 12), -x component of wall velocity(Vx, 13), -y component of wall velocity(Vy, 14), -z component of wall velocity(Vz, 15) +// -slip translational-rotational temperature(Tts, 16), -slip vibrational temperature(Tvs, 17), -slip electron temperature(Tes, 18), -absolute wall velocity(Vs, 19) +// -Stanton number(St, 20), -coefficient of heat rate(Ch, 21), -temperature jump(deltaT, 22), -transition gamaeff(gamaeff, 48), +// -transition intermittency(intermittency, 51), -transition momentum thickness reynolds(MomentumThicknessReynolds, 52), +// -overlap iblank(iblank, 81) + int nVisualVariables = 8; int visualVariables[] = [0, 1, 2, 3, 4, 5, 6, 15]; +int nVisualWallVariables = 9; +int visualWallVariables[] = [0, 1, 2, 3, 4, 5, 9, 10, 11]; + // dumpStandardModel: Dump many standard model data. // 1 -- Turbulent flat plate. int dumpStandardModel = 0; @@ -644,6 +727,7 @@ int probeVariablesInterpolationMethod = 0; // mod_turb_res: If modify the residuals for the cells next to the wall or not, default is 0. int turbInterval = 1; +int turbOrderStruct = 2; int kindOfTurbSource = 0; int mod_turb_res = 0; double turb_relax = 1.0; @@ -652,6 +736,10 @@ double muoo = 3.0; double kwoo = 5.0; int transitionType = 0; double turbIntensity = -1.0; +int freeturbIntensitySRModify = 0; +double freeDecayXLocation = 0.0; +int compressibleCorrection = 0; +int transitionMaFix = 1; # maximum eddy viscosity (myt/my) max. double eddyViscosityLimit = 1.0e10; @@ -661,8 +749,8 @@ int monitor_vistmax = 0; # LES Parameter # //----------------------------------------------------------------------- // iLES: Create LESSolver or not. -// >= 1 - Create LESSolver; -// < 1 - not. +// == 1 - Create LESSolver; +// != 1 - not. // amplitudeofDisturb: Amplitude of adding disturb. // disturbstep: Unsteady time step or steady iteration of adding random disturb. // iterdisturb: Add random disturb in every sub-iter or only first sub-iter. @@ -676,8 +764,9 @@ int monitor_vistmax = 0; // utau: friction velocity, using in DNSDisturb. // sgsmodel: subgrid scale model. // = "smagorinsky"; -// = "dsm"; -// = "wale". +// = "dsmCom"; +// = "wale"; +// = "sigma". // deltaFunctionType: = 1 - MAX(deltai, deltaj, deltak); // = 2 - pow(deltai * deltaj *deltak, 1/3); // = 3 - Devloped by Scotti. @@ -700,9 +789,10 @@ string sgsmodel = "smagorinsky"; int deltaFunctionType = 2; int wallDampingFunctionType = 1; int turbViscousCutType = 2; -double smagConstant = 0.135; +double smagConstant = 0.1; double isotropicConstant = 0.0; double waleConstant = 0.6; +double sigmaConstant = 1.35; int filterDirection[] = [1, 1, 0]; int averageDirection[] = [0, 0, 0]; double testFilterScale = 2.0; @@ -724,12 +814,42 @@ int monitorNegativeConstant = 0; // nm: Equation number of the physics, but is out of commision now. // 4 -- for 2D. // 5 -- for 3D. -// nGasModel: The type of gas. +// nGasModel: The type of gas. less than and equal to 1 represents the mixture gas. +// Otherwise, the pure gas with one component is used for perfect gas. // 0 -- Earth gas. // 1 -- Mars gas. +// 2 -- Argon. +// 3 -- Nitrogen. +// nEnergyRecycle: The type of EnergyModel Recycle. +// 0 -- not used . +// 1 -- used. +// nDensityModify: The type of densitymodify. + +// 0 -- not used. +// 1 -- used. // nchem: // 0 -- without chemical reaction flow. // 1 -- the chemical reaction flow is considered. +// nEquilibriumGas: the variable is valid when the condition of nchem=0 is satisfied. +// 0 -- perfect gas. +// 5, 7, 11 -- equilibrium gas, meanwhile, its value denotes the number of gas component. +// nPCWCycleStep: the maximum step number of iteration in the module of computing species mass fractions with the partial catalytic wall(PCW) condition. +// the value equals to or is greater than 1, and 3 is for default value. +// nRETCycleStep: the maximum step number of iteration in the module of computing radiation equilibrium temperature on wall. +// the value equals to or is greater than 1, and 3 is for default value. +// nSLIPCycleStep:the maximum step number of iteration in the module of computing slip temperature, slip velocity and slip species mass fraction. +// the value equals to or is greater than 1, and 3 is for default value. +// nSlipBCModel : The computational model of slip boundary conditions. + +// 0 -- no slip. +// 1 -- the conventional Maxwell slip conditions. +// 2 -- the Gokcen slip conditions. +// 3 -- the Knudsen-layer correction of the standard slip conditions proposed by Lockerby, et al. +// 4 -- the Kogan simplified slip conditions. +// nMeanFreePathType : the method to the mean free-path for the slip conditions. For the mixture, 0 is suggested. +// 0 -- the equivalent mean free-path is calculated by the simple hard sphere model(HS). +// 1 -- calculated by the definition that includes the variables of the number density and the molecule diameter. +// 2 -- the equivalent mean free-path is calculated by the variable hard sphere model(VHS). // nchemsrc: // 0 -- the source terms are not computed. // 1 -- the source terms are computed. @@ -740,15 +860,72 @@ int monitorNegativeConstant = 0; // 1 -- One-temperature model. // 2 -- Two-temperature model. // 3 -- Three-temperature model. +// nTEnergyModel: the method to computing temperature energy model. +// 0 -- the energy term is computed using the conventional method. +// 1 -- the energy term is computed using the curve fitting method. +// parkVDPower: the power of translational-rotational temperature in the Park V-D(vibration-dissociation) coupling model. +// The value is in range of [0.0, 1.0], DPLR suggests 0.5, LAURA suggests 0.7, while 0.6 is given as default value. // catalyticCoef: // 0.0 -- full non-catalytic wall boundary condition. // 1.0 -- full catalytic wall boundary condition. // in range of (0.0, 1.0) -- partial catalytic condition, the value indicates the catalytic coefficient. +// nIsSuperCatalytic : the super catalytic condition for the fully catalytic wall, and assigned with the value of 1. +// 0 -- equilibrium condition for the fully catalytic wall where the mass fractions are assigned with the values of the free stream. +// 1 -- super catalytic condition for the fully catalytic wall where all the atomic components combine into molecular components. +// nTemperatureJump : the method to calculate the temperature jump. +// 0 -- calculated by the variables of heat conductivity and constant volume specific heat for each energy mode. +// 1 -- the general method where the iteration is calculated with the translation-rotation temperature. +// sigmaVelocity: the coordination coefficient of tangential momentum for computation of slip velocity. The value is in range of (0.0, 2.0]. +// sigmaTemperature: the heat coordination coefficient for computation of slip temperature. The value is in range of (0.0, 2.0]. +// sigmaMassFraction: the species coordination coefficient for computation of slip mass fractions. The value is in range of (0.0, 2.0]. +// velocitySlipCorrectConstant: the correction constant to the velocity slip condition. For the diffuse reflection, 1.0 is used. +// 1.0 -- proposed by Maxwell. +// sqrt(2/PI)~0.8 -- used for "micro-slip", namely the actual velocity slip at the wall. +// 1.146 -- proposed for an additional "fictitious" velocity slip. + +// chemicalRelaxCorf: The value is in range of [0.001, 1.0]. +// chemicalSpectrumRadiusCoef: The value is in range of [1.0, 3.0]. +// viscousSpectrumRadiusCoef : The value is in range of [1.0, 3.0]. +// inviscidSpectrumRadiusCoef: The value is in range of [1.0, 3.0]. +// staticPressureRelaxCorf: The value is in range of [0.1, 1.0]. +// nIsChemicalFreeze : the flag to freeze the chemical reactions. +// 0 -- not freeze, the chemical reaction sources will be calculated. +// 1 -- freezes the chemical reactions, the chemical reaction sources will not be calculated.// veTemperatureMin: The minimum of Tv and Te +// nDebug: cout the Wrong place and abort +// 0 -- not used. +// 1 -- used. +// nSpeciesLimit: limitter of gas species +// 0 -- not used. +// 1 -- used. +// nTurblenceForChemical: the coupled mode of Turblence and Chemical reaction +// 0 -- method 0. +// 1 -- method 1. +// nViscosityFluxSublevelModified: Modified for ViscosityFlux on Sublevel grid +// 0 -- not used. +// 1 -- used. +// nChemcalSourceModified: Modified on ChemcalSource +// 0 -- not used. +// 1 -- used. +// nAblation: +// 0 -- The wall ablation is not computed. +// 1 -- The wall ablation is computed. +// isInjection: +// 0 -- The injection velocity of ablation wall is not computed. +// 1 -- The injection velocity of ablation wall is computed. +// nViscosityModel: + +// 0 -- Blottner fitting method. +// 1 -- Gupta fitting method. +// nSutherland: +// 0 -- stands for selecting the Blotter curve fits mode. +// 1 -- stands for Sutherland relation. // gasfile: Indicates the gas model, 9 models are provided, namely "Gu5", "Gu7", "Gu11", "Pa5", "Pa7", "Pa11", "DK5", "DK7", "DK11". // "Gu" -- indicates the Gupta Model, three-Type Models are embeded in the library, namely, the 5-species-6-reactions, the 7-species-9-reactions, the 11-species-20-reactions. // "Pa" -- indicates the Park Model, three-Type Models are embeded in the library, namely, the 5-species-17-reactions, the 7-species-22-reactions, the 11-species-48-reactions. // "DK" -- indicates the Dunn-Kang Model, three-Type Models are embeded in the library, namely, the 5-species-11-reactions, the 7-species-15-reactions, the 11-species-26-reactions. // "Mars-Pa8" is for Park model of Mars gas, "Mars-Mc8" for McKenzie model of Mars gas. +// "Combustion-12" -- indicates the Combustion Chamber Gas Model which includes 12-species-20-reactions. +// "Gas-Mixture" -- indicates the process of mixing two species without reacting. // For self-definition model, the gasfile is used to indicate the file path of the new gas model. // speciesName: Used to list the names of each species, while each species name is separated by the symbol of comma. // initMassFraction: Used to list the initial mass fractions of species in accordance with the sequence of names in the parameter speciesName. @@ -758,6 +935,10 @@ int dg_high_order = 0; int iapplication = 0; int iCodeBranch = 0; int nm = 5; +int nEquilibriumGas = 0; +int nPCWCycleStep = 3; +int nRETCycleStep = 3; +int nSLIPCycleStep= 3; double refGama = 1.4; double prl = 0.72; @@ -770,23 +951,73 @@ int nchem = 0; int nchemsrc = 1; int nchemrad = 1; int ntmodel = 1; -int nChemicalFlowStep = 0; + +int nEnergyRecycle = 0; +int nSlipBCModel = 0; +int nDensityModify = 1; +int nTEnergyModel = 0; +int nMeanFreePathType = 0; +int nIsChemicalFreeze = 0; +int nIsSuperCatalytic = 1; +int nTemperatureJump = 0; + +double parkVDPower = 0.6; double catalyticCoef = 0.0; +double sigmaVelocity = 1.0; +double sigmaTemperature = 1.0; +double sigmaMassFraction = 1.0; +double velocitySlipCorrectConstant = 1.0; + +double chemicalRelaxCorf = 1.0; +double chemicalSpectrumRadiusCoef = 1.0; +double viscousSpectrumRadiusCoef = 1.0; +double inviscidSpectrumRadiusCoef = 1.0; +double staticPressureRelaxCorf = 1.0; + +double veTemperatureMin = 30.0; +int nDebug = 0; +int nSpeciesLimit = 0; +int nTurblenceForChemical = 0; +int nViscosityFluxSublevelModified = 0 ; +int nChemcalSourceModified = 0; + +int nAblation = 0; +int isInjection = 0; +int nViscosityModel = 0; +int nMarsModel = 0; string gasfile = "DK5"; //string gasfile = "./chemical/Dunn-Kang_air5s11r.dat"; string speciesName = "O, O2, NO, N, N2"; -string initMassFraction = "0.0, 0.23, 0.0, 0.0, 0.77"; +string initMassFraction = "0.0, 0.233, 0.0, 0.0, 0.767"; //string speciesName = "O, O2, NO, N, NO+, N2, e-"; -//string initMassFraction = "0.0, 0.23, 0.0, 0.0, 0.0, 0.77, 0.0"; +//string initMassFraction = "0.0, 0.233, 0.0, 0.0, 0.0, 0.767, 0.0"; //string speciesName = "O, O2, NO, N, O+, O2+, NO+, N+, N2+, N2, e-"; -//string initMassFraction = "0.0, 0.23, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.77, 0.0"; +//string initMassFraction = "0.0, 0.233, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.767, 0.0"; //string gasfile = "Mars-Pa8"; //string speciesName = "O, O2, NO, N, N2, C, CO, CO2"; //string initMassFraction = "0.0015, 0.0429, 0.0, 0.0, 0.0, 0.0, 0.0777, 0.8779"; +//string gasfile = "DK7"; +//string speciesName = "O, O2, NO, N, NO+, C, C2, CO, CO2, CN, N2, e-"; +//string initMassFraction = "0.0, 0.233, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.767, 0.0"; + +//string gasfile = "Combustion-12"; +//string speciesName = "O, O2, NO, N, C, CO, CO2, H, H2, OH, H2O, N2"; +//string initMassFraction = "0.0, 0.233, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.767"; + +//string gasfile = "Gas-Mixture"; +//string speciesName ="SpeciesA, SpeciesB"; +//string initMassFraction = "1.0, 0.0"; +int nSutherland = 0; +double gamaSpeciesA = 1.4; +double gamaSpeciesB = 1.3; +double molecularWeightSpeciesA = 29.0; +double molecularWeightSpeciesB = 30.0; + +int nChemicalFlowStep = 0; int ifStartFromPerfectGasResults = 0; ######################################################################### @@ -841,7 +1072,7 @@ string zoneInverseFileName = "./grid/zoneInverseMapping.inp"; ######################################################################### # High Order Struct Solver # ######################################################################### -// ifvfd: +// isFVMOrFDM: // 0 -- NSSolverStruct using Finite Volume Method. // 1 -- NSSolverStruct using Finite Differ Method. // SolverStructOrder: Spatial discretisation order of NS equations with struct grid. @@ -856,7 +1087,7 @@ string zoneInverseFileName = "./grid/zoneInverseMapping.inp"; // -- "roe", "steger". // structhighordergradient: // -- "conservation", "chain_rule". -int ifvfd = 0; +int isFVMOrFDM = 0; string str_highorder_solver = "WCNS"; int SolverStructOrder = 0; double str_highorder_interpolation_epsilon = 1.0e-6; @@ -885,8 +1116,12 @@ int allReduceStep = 1; // codeOfOversetGrid: Overlapping(overset) grid or not. // 0 -- NON-overlapping grid. // 1 -- Overlapping grid. +// oversetInterpolationMethod: the method of overset interpolation while field simulation +// 0 -- set the acceptor cell value by donor cell value. +// 1 -- set the acceptor cell value by distance weight of donor cell value. + int codeOfOversetGrid = 0; -int codeOfOversetSlipGrid = 0; +int oversetInterpolationMethod = 0; int readOversetFileOrNot = 0; int symetryOrNot = 0; int readInAuxiliaryInnerGrid = 1; @@ -895,7 +1130,7 @@ int readInSklFileOrNot = 0; string auxiliaryInnerGrid0 = "./grid/aux-upper.fts"; string auxiliaryInnerGrid1 = "./grid/aux-lower.fts"; string auxiliaryInnerGrid2 = ""; -string oversetGridFileName = "./grid/overlap.ovs"; +string oversetGridFileName = "./grid/iblank.ovs"; double walldistMainZone = 1.0 double toleranceForOversetSearch = 1.0e-3; double toleranceForOversetBox = 1.0e-3; @@ -905,16 +1140,78 @@ int outTecplotOverset = 0; int numberOfMovingBodies = 2; +// ----------------- ALE configuration ------------------------------ +int codeOfAleModel = 1; +int aleStartStrategy = -1; + +int strategyForFaceNormalVelocity = 0; //0-By Sweeping volume; 1-By face center 1st; 2-By face center 2nd; +int strategyForGCLSource = 0; //0-present; 1-Ahn; + +//0:1st-Admas-Bashforth; 1:2nd-Admas-Bashforth; 2:1st-Implicit-Euler; 3:2nd-Implicit Euler; 4:2nd-Adams-Moulton; 5:3rd-Adams-Moulton +int methodForKineticEquation = 0; +double relaxParameterOfKinetic = 1.0; + +######################################################################### +# motive information # +######################################################################### +int numberOfMovingBodies = 1; + +############################## body0 ############################## +//mass of parts +double mass_0 = 1.0; +//mass matrix of parts Ixx Iyy Izz Ixy Ixz Iyz +double massMatrix_0[] = 1e-7, 1e-6, 1e-6, 0.0, 0.0, 0.0; +//initial six DOF position information of parts. xc yc zc +double massCenter_0[] = 0.0 , 0.0, 0.0; +//initial six DOF position information of parts. angleX angleY angleZ +double attitudeAngle_0[] = 0.0 , 0.0, 0.0; +//initial six DOF move information of parts. vc vy vz +double massCenterVelocity_0[] = 0.0, 0.0, 0.0; +//initial six DOF move information of parts. omigX omigY omigZ +double angularVelocity_0[] = 0.0, 0.0, 0.0; +//the object that the parts belong to. +int fartherIndex_0 = -1; +//the assembly position of the parts. xc yc zc angleX angleY angleZ +double configPamameter_0[] = 0.0 ,0.0 ,0.0 ,0.0 ,0.0 ,0.0; +//the move pattern of the parts. +// -1 given motion partten. +// 0 still. +// 1 six DOF motion. +// 2 three DOF motion. +// 11 X-axis forced motion. +// 12 Y-axis forced motion. +// 13 Z-axis forced motion. +// 14 forced pitch motion. +// 15 forced yaw motion. +// 16 forced roll motion. +int RBDMethod_0 = 0; +double amplitude_0 = 0.0; +double reduceFrequency_0 = 0.0; +//string uDFSixDofFileName_0 = "./Bin/UDFSixDof.Parameter"; +//additional force (system axis) fX fY fZ +double addedForce_0[] = 0.0 ,0.0 ,0.0 ; +//additional moment of Force (system axis) mX mY mZ +double addedMoment_0[] = 0.0 ,0.0 ,0.0 ; +//the deformation method of the parts. +int morphing_0 = 0; + +// post indentify +int integralOrder = 4; + + // ---------------- ATP read -------------------------------------------- //@int inflowParaType = 0; -//@double refReNumber = 2.329418E08; -//@double refDimensionalTemperature = 288.144; -//@double refDimensionalPressure = 1.01313E05; -//@double height = -0.001; +//@double refReNumber = 6.5e6; +//@double refDimensionalTemperature = 288.15; +//@double freestream_vibration_temperature = 300.00; +//@double refDimensionalPressure = 0; +//@double height = 0; //@int nsubsonicInlet = 0; //@int nsubsonicOutlet = 0; //@string inLetFileName = "./bin/subsonicInlet.hypara"; //@string outLetFileName = "./bin/subsonicOutlet.hypara"; +//@double refDimensionalVelocity = 0; +//@double refDimensionalDensity = 0; ######################################################################### # Old Parameter # diff --git a/A08_TwoD_30p30n_SST_Struct_4CPU/bin/cfd_para_subsonic.hypara b/A08_TwoD_30p30n_SST_Struct_4CPU/bin/cfd_para_subsonic.hypara index 9bbcfae..11de810 100644 --- a/A08_TwoD_30p30n_SST_Struct_4CPU/bin/cfd_para_subsonic.hypara +++ b/A08_TwoD_30p30n_SST_Struct_4CPU/bin/cfd_para_subsonic.hypara @@ -57,9 +57,9 @@ double refDimensionalTemperature = 288.0; double gridScaleFactor = 1.0; -double forceRefenenceLengthSpanWise = 1.0; // unit of meter. -double forceRefenenceLength = 1.0; // unit of meter. -double forceRefenenceArea = 1.0; // unit of meter^2. +double forceReferenceLengthSpanWise = 1.0; // unit of meter. +double forceReferenceLength = 1.0; // unit of meter. +double forceReferenceArea = 1.0; // unit of meter^2. double TorqueRefX = 0.0; // unit of meter. double TorqueRefY = 0.0; // unit of meter. double TorqueRefZ = 0.0; // unit of meter. diff --git a/A09_ThreeD_M6_SST_Struct_MG2_4CPU/bin/cfd_para.hypara b/A09_ThreeD_M6_SST_Struct_MG2_4CPU/bin/cfd_para.hypara index df090b7..b17970c 100644 --- a/A09_ThreeD_M6_SST_Struct_MG2_4CPU/bin/cfd_para.hypara +++ b/A09_ThreeD_M6_SST_Struct_MG2_4CPU/bin/cfd_para.hypara @@ -21,6 +21,7 @@ // 1 -- Grid conversion, from other grid data to PHenglEI, such as Fluent, CGNS. // 2 -- Grid refinement. // 3 -- Grid merging, merge two blocks into one block. +// 4 -- Grid deformation, achieve unstructured grid deformation. // 5 -- Grid repairing, repair the original grid in order to remove the negative volume cells. // 6 -- Grid mirroring, mirror a symmetry grid to whole grid. // multiblock: Multi-block grid or not, only for structured grid conversion. @@ -72,13 +73,15 @@ int dumpOldGrid = 0; //----------------------------------------------------------------------- // from_gfile: path of original data file for unstructure grid convert from. // out_gfile: path of target file for grid convert to, *.fts type of file usually. +int numberOfGridFile = 1; string from_gfile = "./grid/rae2822_hybrid2d.cas"; +string from_gfile1= ""; + string out_gfile = "./grid/flat_laminr_133_85_2d.fts"; // ----------------- some advanced choices ------------------------------ // iunsteady: The Grid is for unsteady simulation or not. int iunsteady = 0; -int iale = 0; int codeOfAleModel = 0; // fileformat: Ustar Grid file format. @@ -122,15 +125,38 @@ int isDeform = 0; int exclusiveCase = 0; // 0: NON case; 1: JSM-C2-NPOFF case; 2: CHNT. int projectOrgPoint = 0; // if project original wall points. + +// ----------------- Grid Deform Parameters ----------------------------- +// deformationMethod: Grid Deform. +// 1 -- SPRING. +// 2 -- RBF. +// stationalGridFile: Original grid file. +// visualFileName : The visualization file path of deform grid. +// nDeformStep : The max deform step. +// flapAngle : The max flap angle. +// rotatePostionZ : Rotate postion. +// rotatePostionY : Rotate postion. +// gridSlice : If dump slice grid. +// sliceAxis : Grid slice axis. +// slicePosition : Grid slice position. +int nDeformStep = 40; +double flapAngle = 10.0; +double rotatePostionZ = 4.00003; +double rotatePostionY = 3.05; + +int deformationMethod = 2; +string stationalGridFile = "./grid/Segment2Brid.fts"; +string visualFileName = "./results/deformedGrid.dat" + +int gridSlice = 1; +int sliceAxis = 1; +double slicePosition = 13; + // ----------------- RBF Parameters ------------------------------------- -// symmetryPlane: Which symmetry plane is used in the mesh. -// 0 -- without symmetry. -// 1 -- plane of x=0. -// 2 -- plane of y=0. -// 3 -- plane of z=0. -int numberOfReferenceCP = 10; -double influenceRadius = 20; -int symmetryPlane = 3; // 1: plane of x=0; 2: plane of y=0; 3: plane of z=0; +// numberOfReferenceCP : Number of reference Control Points. +// influencePara : The RBF influence radius parameter. +int numberOfReferenceCP = 40; +double influencePara = 25.0; // ----------------- Periodic Parameters -------------------------------- // Notice: Rotational periodicity only support rotation along the X axis! @@ -138,6 +164,11 @@ int symmetryPlane = 3; // 1: plane of x=0; 2: plane of y=0; 3: plane of // 0 -- without Periodic Boundary. // 1 -- Translational periodicity. // 2 -- Rotational periodicity. +// translationLength[]: The relative distance between two periodic face + which only support one direction. +// rotationAngle: The relative angle between two periodic face. + which is recorded in degrees. + int periodicType = 0; double translationLength[] = [0.0,0.0,0.0]; double rotationAngle = 0.0; @@ -180,7 +211,7 @@ string partition_grid_file = "./grid/sphere_mixed__4.fts"; // 0 -- Interface. (default) // 1 -- Physical boundary condition, used in Hybrid solver. // npartmethod: Method of interface reconstruction, default is 1. -// parallelPartMethod: Method of parallel partition, this is set only when execute parallel partition. It would be skipped when serial partition. +// parallelPartitionMethod: Method of parallel partition, this is set only when execute parallel partition. It would be skipped when serial partition. // 1 -- Using ParMetis for homogeneous MPI. // 2 -- Using Metis for homogeneous MPI. // 3 -- using METIS partition for homogeneous OpenMP. @@ -238,6 +269,8 @@ int compressible = 1; // 1 -- the flight conditions. // 2 -- the experiment conditions. // 3 -- the subsonic boundary conditions. +// 4 -- the condition that the velocity, temperature and density are given. +// 5 -- the condition that the velocity, temperature and pressure are given. // refReNumber: Reynolds number, which is based unit length, unit of 1/m. // refDimensionalTemperature: Dimensional reference temperature, or the total temperature only for the experiment condition. // freestream_vibration_temperature: Dimensional freestream vibration temperature. @@ -251,10 +284,12 @@ int compressible = 1; // 1 inch = 0.0254m. // 1 foot = 12 inches = 0.3048m. // 1 yard = 3 feet = 0.9144m. -// forceRefenenceLength, forceRefenenceLengthSpanWise, forceRefenenceArea: Reference length, SpanWise length and area, independent of grid unit. +// forceReferenceLength, forceReferenceLengthSpanWise, forceReferenceArea: Reference length, SpanWise length and area, independent of grid unit. // TorqueRefX, TorqueRefY, TorqueRefZ: Reference point, independent of grid unit. // radiationCoef: The radiation coefficient on wall, it is used to compute the radiation heat flux on wall when the boundary // condition is radiation equilibrium temperature, and 0.8 is the default value. +// refMolecularWeight : the reference molecular weight of gas used for perfect gas. The unit is g/mol. +// Generally, the gas is air. Sometimes, it is experiment gas, such as Nitrogen, Argon, and so on. double refMachNumber = 0.73; double attackd = 2.79; @@ -263,7 +298,7 @@ double angleSlide = 0.00; int inflowParaType = 0; double refReNumber = 6.5e6; double refDimensionalTemperature = 288.15; -double freestream_vibration_temperature = 10000.00; +double freestream_vibration_temperature = 300.00; //int inflowParaType = 1; //double height = 0.001; @@ -280,18 +315,34 @@ double freestream_vibration_temperature = 10000.00; //double refDimensionalTemperature = 288.144; //double refDimensionalPressure = 1.01313E05; +//The velocity, temperature and density are fixed. +//int inflowParaType = 4; +//double refDimensionalVelocity = 1000.0; +//double refDimensionalDensity = 1.0e3; + +//The velocity, temperature and pressure are fixed. +//int inflowParaType = 5; +//double refDimensionalVelocity = 1000.0; +//double refDimensionalPressure = 1.0e5; + +//The MachNumber, temperature and pressure are fixed. +//int inflowParaType = 6; +//double refDimensionalTemperature = 293; +//double refDimensionalPressure = 8886.06; + double wallTemperature = -1.0; double radiationCoef = 0.8; double gridScaleFactor = 1.0; int numberOfAerodynamicForceComponents = 1; -double forceRefenenceLengthSpanWise = 1.0; // unit of meter. -double forceRefenenceLength = 1.0; // unit of meter. -double forceRefenenceArea = 1.0; // unit of meter^2. +double forceReferenceLengthSpanWise = 1.0; // unit of meter. +double forceReferenceLength = 1.0; // unit of meter. +double forceReferenceArea = 1.0; // unit of meter^2. double TorqueRefX = 0.0; // unit of meter. double TorqueRefY = 0.0; // unit of meter. double TorqueRefZ = 0.0; // unit of meter. +double refMolecularWeight = 28.9644; // unit of g/mol. //----------------------------------------------------------------------- # Spatial Discretisation # @@ -303,7 +354,7 @@ double TorqueRefZ = 0.0; // unit of meter. // Using this when solve structered grid or hybrid. // -- "vanleer", "steger", "hlle", "lax_f". // -- "roe", "modified_roe". -// -- "ausm+", "ausm+w", "ausm+up", "ausmdv", "ausmpw". +// -- "ausm+", "ausm+w", "ausm+up", "ausmdv", "ausmpw", "ausmpw+". // str_limiter_name: Limiter of struct grid. // -- "vanalbada", "vanleer", "minmod", "smooth", "minvan", "3rdsmooth", "3rd_minmod_smooth". // -- "nolim", no limiter. @@ -339,14 +390,14 @@ string str_limiter_name = "vanalbada"; // uns_scheme_name: Spatial discretisation scheme of Unstruct grid. // Using this when solve Unstructered grid or hybrid. // -- "vanleer", "roe", "steger", "kfvs", "lax_f", "hlle". -// -- "ausm+", "ausmdv", "ausm+w", "ausmpw", "ausmpwplus". +// -- "ausm+", "ausmdv", "ausm+w", "ausmpw", "ausmpw+". // uns_limiter_name: Limiter of Unstruct grid. // -- "barth", "vencat", "vanleer", "minmod". // -- "vanalbada", "smooth", "nnd", "lpz", "1st". // -- "nolim", no limiter. // uns_vis_name: Discretisation method of viscous term. // -- "std", "test", "aver", "new1", "new2". -// uns_gradient: Gradient reconstruction method. +// gradientName: Gradient reconstruction method. // -- "default", "ggcell", "ggnode", "lsq". // ivencat: Variation of vencat limiter. // 0 -- org method, it is independent of grid scale. @@ -408,9 +459,15 @@ double roeEntropyScale = 1.0; // 1 -- unsteay. // physicalTimeStep: The nondimensional physical time step. // ifStartFromSteadyResults: The unsteady simulation is start from steady flowfield or not, 0 is for no and else is for yes. -// ifStaticsFlowField: Statistical variables for DES simulation. +// ifStaticsFlowField: Statistical variables for unsteady simulation. +// ifStaticsReynoldsStress: Statistical Reynolds stress for unsteady simulation. // startStatisticStep: Outer step when start statistics. // when the value is larger than "maxSimuStep", it is useless. +// statisticalTimePeriod: Used as time period of statistic analysis. +// when the value is negative, time period is treated as infinite. +// statisticMethod: Statistic reynolds stress method. + 0 --tau = - ^2 + 1 --tau = // min_sub_iter: The min sub iteration of unsteady simulation. // max_sub_iter: The max sub iteration of unsteady simulation. // tol_sub_iter: The tolerance of sub iteration of unsteady simulation. @@ -454,7 +511,10 @@ int iunsteady = 0; double physicalTimeStep = 0.01; int ifStartFromSteadyResults = 0; int ifStaticsFlowField = 0; +int ifStaticsReynoldsStress = 0; int startStatisticStep = 800000; +double statisticalTimePeriod = -1.0; +int statisticMethod = 0; int linearTwoStepMethods = 1; // 1--BDF1; 2--C-N; 3--BDF2; int methodOfDualTime = 3; @@ -482,8 +542,6 @@ double turbCFLScale = 1.0; double csrv = 2.0; double timemax = 1.0e10; double dtsave = -1.0; -int codeOfAleModel = 0; -int aleStartStrategy = -1; int maxale = 10; double dtau = 0.001; @@ -524,6 +582,7 @@ double lamda[] = 0.5, 1.0; int numberOfGridGroups = 1; string gridfile = "./grid/rae2822_hybrid2d__4.fts"; +string wallTemperaturefile= ""; int walldistMethod = 1; @@ -536,15 +595,16 @@ string turbfile = "results/turb.dat"; string visualfile = "results/tecflow.plt"; string wall_aircoefile = "results/wall_aircoef.dat"; -string probesflowfile = "results/sample.dat"; +string samplefile = "results/sample.dat"; int nDumpSurfaceInfo = 0; string wall_varfile = ""; string jetDefineFile = "bin/jet.hypara"; -string overset_gridfile = "results/iblank.ovs"; string sixDofFileName = "results/sixDofInfo.dat"; +string derivativeFileName = "results/identify.dat"; +string hysteresisFileName = "results/force_beta.plt"; int plotFieldType = 0; @@ -554,6 +614,11 @@ int plotFieldType = 0; int visualfileType = 1; +// samplefileMode: The dump mode of sample file. +// 0 -- dump out every probe/line/surface data for all step intervals. +// 1 -- dump out all probe/line/surface data for every step intervals. +int samplefileMode = 0; + // visualSlice: The slice of tecflow. // 0 -- Do not save slice data. // 1 -- comput and save it to sliceFile. @@ -567,11 +632,13 @@ int visualSlice = 0; int sliceAxis = 1; double slicePostion = -0.5; string sliceFile = "results/Slice.plt"; +int dumpWallFaceCenter = 0; // min-max box of the visual block. double lowerPlotFieldBox[] = [0.0 0.0 0.0]; double upperPlotFieldBox[] = [1.0 1.0 1.0]; +//-----------the optional parameters list for the flow field output---------------- // nVisualVariables: Number of variables want to be dumped for tecplot visualization. // visualVariables : Variable types dumped, listed as following: // -- density(0), u(1), v(2), w(3), pressure(4), temperature(5), mach(6), @@ -582,11 +649,27 @@ double upperPlotFieldBox[] = [1.0 1.0 1.0]; // -- vibration temperature(Tv, 33), electron temperature(Te, 34), vibrational energy(Ev, 35), electric energy(Ee, 36), // -- number density of electron(Ne, 37), dimensioanl density(rho, 38), dimensioanl pressure(p, 39), dimensioanl temperature(T, 40), // -- gradientUx(41), gradientUy(42), gradientVx(43), gradientVy(44), iblank(81). +// -- specific heat ratio(gama, 56) // Important Warning: Array size of visualVariables MUST be equal to nVisualVariables!!! // Variables order must from small to big. +//-----------the optional parameters list for the wall boundary condition---------------- +// nVisualWallVariables: The number of visual variables on wall. +// visualWallVariables : dumped variable types, listed as following: +// -coefficient of pressure(cp, 0), -coefficient of friction(cf, 1), yplus(2), -non-dimensional heat flux(Q_NonDim, 3), -dimensional heat flux(Q_Dim, 4), +// -pressure on wall(pw, 5), -temperature on wall(Tw, 6), -density on wall(rhow, 7), -heat flux of translational-rotational temperature term(Qtr, 8), +// -heat flux of species diffusion term(Qs, 9), -heat flux of vibrational temperature term(Qv, 10), -heat flux of electron temperature term(Qe, 11), +// -species mass fractions(Ns, 12), -x component of wall velocity(Vx, 13), -y component of wall velocity(Vy, 14), -z component of wall velocity(Vz, 15) +// -slip translational-rotational temperature(Tts, 16), -slip vibrational temperature(Tvs, 17), -slip electron temperature(Tes, 18), -absolute wall velocity(Vs, 19) +// -Stanton number(St, 20), -coefficient of heat rate(Ch, 21), -temperature jump(deltaT, 22), -transition gamaeff(gamaeff, 48), +// -transition intermittency(intermittency, 51), -transition momentum thickness reynolds(MomentumThicknessReynolds, 52), +// -overlap iblank(iblank, 81) + int nVisualVariables = 8; int visualVariables[] = [0, 1, 2, 3, 4, 5, 6, 15]; +int nVisualWallVariables = 9; +int visualWallVariables[] = [0, 1, 2, 3, 4, 5, 9, 10, 11]; + // dumpStandardModel: Dump many standard model data. // 1 -- Turbulent flat plate. int dumpStandardModel = 0; @@ -644,6 +727,7 @@ int probeVariablesInterpolationMethod = 0; // mod_turb_res: If modify the residuals for the cells next to the wall or not, default is 0. int turbInterval = 1; +int turbOrderStruct = 2; int kindOfTurbSource = 0; int mod_turb_res = 0; double turb_relax = 1.0; @@ -652,6 +736,10 @@ double muoo = 3.0; double kwoo = 5.0; int transitionType = 0; double turbIntensity = -1.0; +int freeturbIntensitySRModify = 0; +double freeDecayXLocation = 0.0; +int compressibleCorrection = 0; +int transitionMaFix = 1; # maximum eddy viscosity (myt/my) max. double eddyViscosityLimit = 1.0e10; @@ -661,8 +749,8 @@ int monitor_vistmax = 0; # LES Parameter # //----------------------------------------------------------------------- // iLES: Create LESSolver or not. -// >= 1 - Create LESSolver; -// < 1 - not. +// == 1 - Create LESSolver; +// != 1 - not. // amplitudeofDisturb: Amplitude of adding disturb. // disturbstep: Unsteady time step or steady iteration of adding random disturb. // iterdisturb: Add random disturb in every sub-iter or only first sub-iter. @@ -676,8 +764,9 @@ int monitor_vistmax = 0; // utau: friction velocity, using in DNSDisturb. // sgsmodel: subgrid scale model. // = "smagorinsky"; -// = "dsm"; -// = "wale". +// = "dsmCom"; +// = "wale"; +// = "sigma". // deltaFunctionType: = 1 - MAX(deltai, deltaj, deltak); // = 2 - pow(deltai * deltaj *deltak, 1/3); // = 3 - Devloped by Scotti. @@ -700,9 +789,10 @@ string sgsmodel = "smagorinsky"; int deltaFunctionType = 2; int wallDampingFunctionType = 1; int turbViscousCutType = 2; -double smagConstant = 0.135; +double smagConstant = 0.1; double isotropicConstant = 0.0; double waleConstant = 0.6; +double sigmaConstant = 1.35; int filterDirection[] = [1, 1, 0]; int averageDirection[] = [0, 0, 0]; double testFilterScale = 2.0; @@ -724,12 +814,42 @@ int monitorNegativeConstant = 0; // nm: Equation number of the physics, but is out of commision now. // 4 -- for 2D. // 5 -- for 3D. -// nGasModel: The type of gas. +// nGasModel: The type of gas. less than and equal to 1 represents the mixture gas. +// Otherwise, the pure gas with one component is used for perfect gas. // 0 -- Earth gas. // 1 -- Mars gas. +// 2 -- Argon. +// 3 -- Nitrogen. +// nEnergyRecycle: The type of EnergyModel Recycle. +// 0 -- not used . +// 1 -- used. +// nDensityModify: The type of densitymodify. + +// 0 -- not used. +// 1 -- used. // nchem: // 0 -- without chemical reaction flow. // 1 -- the chemical reaction flow is considered. +// nEquilibriumGas: the variable is valid when the condition of nchem=0 is satisfied. +// 0 -- perfect gas. +// 5, 7, 11 -- equilibrium gas, meanwhile, its value denotes the number of gas component. +// nPCWCycleStep: the maximum step number of iteration in the module of computing species mass fractions with the partial catalytic wall(PCW) condition. +// the value equals to or is greater than 1, and 3 is for default value. +// nRETCycleStep: the maximum step number of iteration in the module of computing radiation equilibrium temperature on wall. +// the value equals to or is greater than 1, and 3 is for default value. +// nSLIPCycleStep:the maximum step number of iteration in the module of computing slip temperature, slip velocity and slip species mass fraction. +// the value equals to or is greater than 1, and 3 is for default value. +// nSlipBCModel : The computational model of slip boundary conditions. + +// 0 -- no slip. +// 1 -- the conventional Maxwell slip conditions. +// 2 -- the Gokcen slip conditions. +// 3 -- the Knudsen-layer correction of the standard slip conditions proposed by Lockerby, et al. +// 4 -- the Kogan simplified slip conditions. +// nMeanFreePathType : the method to the mean free-path for the slip conditions. For the mixture, 0 is suggested. +// 0 -- the equivalent mean free-path is calculated by the simple hard sphere model(HS). +// 1 -- calculated by the definition that includes the variables of the number density and the molecule diameter. +// 2 -- the equivalent mean free-path is calculated by the variable hard sphere model(VHS). // nchemsrc: // 0 -- the source terms are not computed. // 1 -- the source terms are computed. @@ -740,15 +860,72 @@ int monitorNegativeConstant = 0; // 1 -- One-temperature model. // 2 -- Two-temperature model. // 3 -- Three-temperature model. +// nTEnergyModel: the method to computing temperature energy model. +// 0 -- the energy term is computed using the conventional method. +// 1 -- the energy term is computed using the curve fitting method. +// parkVDPower: the power of translational-rotational temperature in the Park V-D(vibration-dissociation) coupling model. +// The value is in range of [0.0, 1.0], DPLR suggests 0.5, LAURA suggests 0.7, while 0.6 is given as default value. // catalyticCoef: // 0.0 -- full non-catalytic wall boundary condition. // 1.0 -- full catalytic wall boundary condition. // in range of (0.0, 1.0) -- partial catalytic condition, the value indicates the catalytic coefficient. +// nIsSuperCatalytic : the super catalytic condition for the fully catalytic wall, and assigned with the value of 1. +// 0 -- equilibrium condition for the fully catalytic wall where the mass fractions are assigned with the values of the free stream. +// 1 -- super catalytic condition for the fully catalytic wall where all the atomic components combine into molecular components. +// nTemperatureJump : the method to calculate the temperature jump. +// 0 -- calculated by the variables of heat conductivity and constant volume specific heat for each energy mode. +// 1 -- the general method where the iteration is calculated with the translation-rotation temperature. +// sigmaVelocity: the coordination coefficient of tangential momentum for computation of slip velocity. The value is in range of (0.0, 2.0]. +// sigmaTemperature: the heat coordination coefficient for computation of slip temperature. The value is in range of (0.0, 2.0]. +// sigmaMassFraction: the species coordination coefficient for computation of slip mass fractions. The value is in range of (0.0, 2.0]. +// velocitySlipCorrectConstant: the correction constant to the velocity slip condition. For the diffuse reflection, 1.0 is used. +// 1.0 -- proposed by Maxwell. +// sqrt(2/PI)~0.8 -- used for "micro-slip", namely the actual velocity slip at the wall. +// 1.146 -- proposed for an additional "fictitious" velocity slip. + +// chemicalRelaxCorf: The value is in range of [0.001, 1.0]. +// chemicalSpectrumRadiusCoef: The value is in range of [1.0, 3.0]. +// viscousSpectrumRadiusCoef : The value is in range of [1.0, 3.0]. +// inviscidSpectrumRadiusCoef: The value is in range of [1.0, 3.0]. +// staticPressureRelaxCorf: The value is in range of [0.1, 1.0]. +// nIsChemicalFreeze : the flag to freeze the chemical reactions. +// 0 -- not freeze, the chemical reaction sources will be calculated. +// 1 -- freezes the chemical reactions, the chemical reaction sources will not be calculated.// veTemperatureMin: The minimum of Tv and Te +// nDebug: cout the Wrong place and abort +// 0 -- not used. +// 1 -- used. +// nSpeciesLimit: limitter of gas species +// 0 -- not used. +// 1 -- used. +// nTurblenceForChemical: the coupled mode of Turblence and Chemical reaction +// 0 -- method 0. +// 1 -- method 1. +// nViscosityFluxSublevelModified: Modified for ViscosityFlux on Sublevel grid +// 0 -- not used. +// 1 -- used. +// nChemcalSourceModified: Modified on ChemcalSource +// 0 -- not used. +// 1 -- used. +// nAblation: +// 0 -- The wall ablation is not computed. +// 1 -- The wall ablation is computed. +// isInjection: +// 0 -- The injection velocity of ablation wall is not computed. +// 1 -- The injection velocity of ablation wall is computed. +// nViscosityModel: + +// 0 -- Blottner fitting method. +// 1 -- Gupta fitting method. +// nSutherland: +// 0 -- stands for selecting the Blotter curve fits mode. +// 1 -- stands for Sutherland relation. // gasfile: Indicates the gas model, 9 models are provided, namely "Gu5", "Gu7", "Gu11", "Pa5", "Pa7", "Pa11", "DK5", "DK7", "DK11". // "Gu" -- indicates the Gupta Model, three-Type Models are embeded in the library, namely, the 5-species-6-reactions, the 7-species-9-reactions, the 11-species-20-reactions. // "Pa" -- indicates the Park Model, three-Type Models are embeded in the library, namely, the 5-species-17-reactions, the 7-species-22-reactions, the 11-species-48-reactions. // "DK" -- indicates the Dunn-Kang Model, three-Type Models are embeded in the library, namely, the 5-species-11-reactions, the 7-species-15-reactions, the 11-species-26-reactions. // "Mars-Pa8" is for Park model of Mars gas, "Mars-Mc8" for McKenzie model of Mars gas. +// "Combustion-12" -- indicates the Combustion Chamber Gas Model which includes 12-species-20-reactions. +// "Gas-Mixture" -- indicates the process of mixing two species without reacting. // For self-definition model, the gasfile is used to indicate the file path of the new gas model. // speciesName: Used to list the names of each species, while each species name is separated by the symbol of comma. // initMassFraction: Used to list the initial mass fractions of species in accordance with the sequence of names in the parameter speciesName. @@ -758,6 +935,10 @@ int dg_high_order = 0; int iapplication = 0; int iCodeBranch = 0; int nm = 5; +int nEquilibriumGas = 0; +int nPCWCycleStep = 3; +int nRETCycleStep = 3; +int nSLIPCycleStep= 3; double refGama = 1.4; double prl = 0.72; @@ -770,23 +951,73 @@ int nchem = 0; int nchemsrc = 1; int nchemrad = 1; int ntmodel = 1; -int nChemicalFlowStep = 0; + +int nEnergyRecycle = 0; +int nSlipBCModel = 0; +int nDensityModify = 1; +int nTEnergyModel = 0; +int nMeanFreePathType = 0; +int nIsChemicalFreeze = 0; +int nIsSuperCatalytic = 1; +int nTemperatureJump = 0; + +double parkVDPower = 0.6; double catalyticCoef = 0.0; +double sigmaVelocity = 1.0; +double sigmaTemperature = 1.0; +double sigmaMassFraction = 1.0; +double velocitySlipCorrectConstant = 1.0; + +double chemicalRelaxCorf = 1.0; +double chemicalSpectrumRadiusCoef = 1.0; +double viscousSpectrumRadiusCoef = 1.0; +double inviscidSpectrumRadiusCoef = 1.0; +double staticPressureRelaxCorf = 1.0; + +double veTemperatureMin = 30.0; +int nDebug = 0; +int nSpeciesLimit = 0; +int nTurblenceForChemical = 0; +int nViscosityFluxSublevelModified = 0 ; +int nChemcalSourceModified = 0; + +int nAblation = 0; +int isInjection = 0; +int nViscosityModel = 0; +int nMarsModel = 0; string gasfile = "DK5"; //string gasfile = "./chemical/Dunn-Kang_air5s11r.dat"; string speciesName = "O, O2, NO, N, N2"; -string initMassFraction = "0.0, 0.23, 0.0, 0.0, 0.77"; +string initMassFraction = "0.0, 0.233, 0.0, 0.0, 0.767"; //string speciesName = "O, O2, NO, N, NO+, N2, e-"; -//string initMassFraction = "0.0, 0.23, 0.0, 0.0, 0.0, 0.77, 0.0"; +//string initMassFraction = "0.0, 0.233, 0.0, 0.0, 0.0, 0.767, 0.0"; //string speciesName = "O, O2, NO, N, O+, O2+, NO+, N+, N2+, N2, e-"; -//string initMassFraction = "0.0, 0.23, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.77, 0.0"; +//string initMassFraction = "0.0, 0.233, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.767, 0.0"; //string gasfile = "Mars-Pa8"; //string speciesName = "O, O2, NO, N, N2, C, CO, CO2"; //string initMassFraction = "0.0015, 0.0429, 0.0, 0.0, 0.0, 0.0, 0.0777, 0.8779"; +//string gasfile = "DK7"; +//string speciesName = "O, O2, NO, N, NO+, C, C2, CO, CO2, CN, N2, e-"; +//string initMassFraction = "0.0, 0.233, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.767, 0.0"; + +//string gasfile = "Combustion-12"; +//string speciesName = "O, O2, NO, N, C, CO, CO2, H, H2, OH, H2O, N2"; +//string initMassFraction = "0.0, 0.233, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.767"; + +//string gasfile = "Gas-Mixture"; +//string speciesName ="SpeciesA, SpeciesB"; +//string initMassFraction = "1.0, 0.0"; +int nSutherland = 0; +double gamaSpeciesA = 1.4; +double gamaSpeciesB = 1.3; +double molecularWeightSpeciesA = 29.0; +double molecularWeightSpeciesB = 30.0; + +int nChemicalFlowStep = 0; int ifStartFromPerfectGasResults = 0; ######################################################################### @@ -841,7 +1072,7 @@ string zoneInverseFileName = "./grid/zoneInverseMapping.inp"; ######################################################################### # High Order Struct Solver # ######################################################################### -// ifvfd: +// isFVMOrFDM: // 0 -- NSSolverStruct using Finite Volume Method. // 1 -- NSSolverStruct using Finite Differ Method. // SolverStructOrder: Spatial discretisation order of NS equations with struct grid. @@ -856,7 +1087,7 @@ string zoneInverseFileName = "./grid/zoneInverseMapping.inp"; // -- "roe", "steger". // structhighordergradient: // -- "conservation", "chain_rule". -int ifvfd = 0; +int isFVMOrFDM = 0; string str_highorder_solver = "WCNS"; int SolverStructOrder = 0; double str_highorder_interpolation_epsilon = 1.0e-6; @@ -885,8 +1116,12 @@ int allReduceStep = 1; // codeOfOversetGrid: Overlapping(overset) grid or not. // 0 -- NON-overlapping grid. // 1 -- Overlapping grid. +// oversetInterpolationMethod: the method of overset interpolation while field simulation +// 0 -- set the acceptor cell value by donor cell value. +// 1 -- set the acceptor cell value by distance weight of donor cell value. + int codeOfOversetGrid = 0; -int codeOfOversetSlipGrid = 0; +int oversetInterpolationMethod = 0; int readOversetFileOrNot = 0; int symetryOrNot = 0; int readInAuxiliaryInnerGrid = 1; @@ -895,7 +1130,7 @@ int readInSklFileOrNot = 0; string auxiliaryInnerGrid0 = "./grid/aux-upper.fts"; string auxiliaryInnerGrid1 = "./grid/aux-lower.fts"; string auxiliaryInnerGrid2 = ""; -string oversetGridFileName = "./grid/overlap.ovs"; +string oversetGridFileName = "./grid/iblank.ovs"; double walldistMainZone = 1.0 double toleranceForOversetSearch = 1.0e-3; double toleranceForOversetBox = 1.0e-3; @@ -905,16 +1140,78 @@ int outTecplotOverset = 0; int numberOfMovingBodies = 2; +// ----------------- ALE configuration ------------------------------ +int codeOfAleModel = 1; +int aleStartStrategy = -1; + +int strategyForFaceNormalVelocity = 0; //0-By Sweeping volume; 1-By face center 1st; 2-By face center 2nd; +int strategyForGCLSource = 0; //0-present; 1-Ahn; + +//0:1st-Admas-Bashforth; 1:2nd-Admas-Bashforth; 2:1st-Implicit-Euler; 3:2nd-Implicit Euler; 4:2nd-Adams-Moulton; 5:3rd-Adams-Moulton +int methodForKineticEquation = 0; +double relaxParameterOfKinetic = 1.0; + +######################################################################### +# motive information # +######################################################################### +int numberOfMovingBodies = 1; + +############################## body0 ############################## +//mass of parts +double mass_0 = 1.0; +//mass matrix of parts Ixx Iyy Izz Ixy Ixz Iyz +double massMatrix_0[] = 1e-7, 1e-6, 1e-6, 0.0, 0.0, 0.0; +//initial six DOF position information of parts. xc yc zc +double massCenter_0[] = 0.0 , 0.0, 0.0; +//initial six DOF position information of parts. angleX angleY angleZ +double attitudeAngle_0[] = 0.0 , 0.0, 0.0; +//initial six DOF move information of parts. vc vy vz +double massCenterVelocity_0[] = 0.0, 0.0, 0.0; +//initial six DOF move information of parts. omigX omigY omigZ +double angularVelocity_0[] = 0.0, 0.0, 0.0; +//the object that the parts belong to. +int fartherIndex_0 = -1; +//the assembly position of the parts. xc yc zc angleX angleY angleZ +double configPamameter_0[] = 0.0 ,0.0 ,0.0 ,0.0 ,0.0 ,0.0; +//the move pattern of the parts. +// -1 given motion partten. +// 0 still. +// 1 six DOF motion. +// 2 three DOF motion. +// 11 X-axis forced motion. +// 12 Y-axis forced motion. +// 13 Z-axis forced motion. +// 14 forced pitch motion. +// 15 forced yaw motion. +// 16 forced roll motion. +int RBDMethod_0 = 0; +double amplitude_0 = 0.0; +double reduceFrequency_0 = 0.0; +//string uDFSixDofFileName_0 = "./Bin/UDFSixDof.Parameter"; +//additional force (system axis) fX fY fZ +double addedForce_0[] = 0.0 ,0.0 ,0.0 ; +//additional moment of Force (system axis) mX mY mZ +double addedMoment_0[] = 0.0 ,0.0 ,0.0 ; +//the deformation method of the parts. +int morphing_0 = 0; + +// post indentify +int integralOrder = 4; + + // ---------------- ATP read -------------------------------------------- //@int inflowParaType = 0; -//@double refReNumber = 2.329418E08; -//@double refDimensionalTemperature = 288.144; -//@double refDimensionalPressure = 1.01313E05; -//@double height = -0.001; +//@double refReNumber = 6.5e6; +//@double refDimensionalTemperature = 288.15; +//@double freestream_vibration_temperature = 300.00; +//@double refDimensionalPressure = 0; +//@double height = 0; //@int nsubsonicInlet = 0; //@int nsubsonicOutlet = 0; //@string inLetFileName = "./bin/subsonicInlet.hypara"; //@string outLetFileName = "./bin/subsonicOutlet.hypara"; +//@double refDimensionalVelocity = 0; +//@double refDimensionalDensity = 0; ######################################################################### # Old Parameter # diff --git a/A09_ThreeD_M6_SST_Struct_MG2_4CPU/bin/cfd_para_transonic.hypara b/A09_ThreeD_M6_SST_Struct_MG2_4CPU/bin/cfd_para_transonic.hypara index a56ed7e..9bd6090 100644 --- a/A09_ThreeD_M6_SST_Struct_MG2_4CPU/bin/cfd_para_transonic.hypara +++ b/A09_ThreeD_M6_SST_Struct_MG2_4CPU/bin/cfd_para_transonic.hypara @@ -56,9 +56,9 @@ double refDimensionalTemperature = 288; double gridScaleFactor = 1.0; -double forceRefenenceLengthSpanWise = 1.0; // unit of meter. -double forceRefenenceLength = 1.0; // unit of meter. -double forceRefenenceArea = 1.0; // unit of meter^2. +double forceReferenceLengthSpanWise = 1.0; // unit of meter. +double forceReferenceLength = 1.0; // unit of meter. +double forceReferenceArea = 1.0; // unit of meter^2. double TorqueRefX = 0.0; // unit of meter. double TorqueRefY = 0.0; // unit of meter. double TorqueRefZ = 0.0; // unit of meter. diff --git a/A10_ThreeD_CHNT_SST_Struct_16CPU/bin/cfd_para.hypara b/A10_ThreeD_CHNT_SST_Struct_16CPU/bin/cfd_para.hypara index df090b7..b17970c 100644 --- a/A10_ThreeD_CHNT_SST_Struct_16CPU/bin/cfd_para.hypara +++ b/A10_ThreeD_CHNT_SST_Struct_16CPU/bin/cfd_para.hypara @@ -21,6 +21,7 @@ // 1 -- Grid conversion, from other grid data to PHenglEI, such as Fluent, CGNS. // 2 -- Grid refinement. // 3 -- Grid merging, merge two blocks into one block. +// 4 -- Grid deformation, achieve unstructured grid deformation. // 5 -- Grid repairing, repair the original grid in order to remove the negative volume cells. // 6 -- Grid mirroring, mirror a symmetry grid to whole grid. // multiblock: Multi-block grid or not, only for structured grid conversion. @@ -72,13 +73,15 @@ int dumpOldGrid = 0; //----------------------------------------------------------------------- // from_gfile: path of original data file for unstructure grid convert from. // out_gfile: path of target file for grid convert to, *.fts type of file usually. +int numberOfGridFile = 1; string from_gfile = "./grid/rae2822_hybrid2d.cas"; +string from_gfile1= ""; + string out_gfile = "./grid/flat_laminr_133_85_2d.fts"; // ----------------- some advanced choices ------------------------------ // iunsteady: The Grid is for unsteady simulation or not. int iunsteady = 0; -int iale = 0; int codeOfAleModel = 0; // fileformat: Ustar Grid file format. @@ -122,15 +125,38 @@ int isDeform = 0; int exclusiveCase = 0; // 0: NON case; 1: JSM-C2-NPOFF case; 2: CHNT. int projectOrgPoint = 0; // if project original wall points. + +// ----------------- Grid Deform Parameters ----------------------------- +// deformationMethod: Grid Deform. +// 1 -- SPRING. +// 2 -- RBF. +// stationalGridFile: Original grid file. +// visualFileName : The visualization file path of deform grid. +// nDeformStep : The max deform step. +// flapAngle : The max flap angle. +// rotatePostionZ : Rotate postion. +// rotatePostionY : Rotate postion. +// gridSlice : If dump slice grid. +// sliceAxis : Grid slice axis. +// slicePosition : Grid slice position. +int nDeformStep = 40; +double flapAngle = 10.0; +double rotatePostionZ = 4.00003; +double rotatePostionY = 3.05; + +int deformationMethod = 2; +string stationalGridFile = "./grid/Segment2Brid.fts"; +string visualFileName = "./results/deformedGrid.dat" + +int gridSlice = 1; +int sliceAxis = 1; +double slicePosition = 13; + // ----------------- RBF Parameters ------------------------------------- -// symmetryPlane: Which symmetry plane is used in the mesh. -// 0 -- without symmetry. -// 1 -- plane of x=0. -// 2 -- plane of y=0. -// 3 -- plane of z=0. -int numberOfReferenceCP = 10; -double influenceRadius = 20; -int symmetryPlane = 3; // 1: plane of x=0; 2: plane of y=0; 3: plane of z=0; +// numberOfReferenceCP : Number of reference Control Points. +// influencePara : The RBF influence radius parameter. +int numberOfReferenceCP = 40; +double influencePara = 25.0; // ----------------- Periodic Parameters -------------------------------- // Notice: Rotational periodicity only support rotation along the X axis! @@ -138,6 +164,11 @@ int symmetryPlane = 3; // 1: plane of x=0; 2: plane of y=0; 3: plane of // 0 -- without Periodic Boundary. // 1 -- Translational periodicity. // 2 -- Rotational periodicity. +// translationLength[]: The relative distance between two periodic face + which only support one direction. +// rotationAngle: The relative angle between two periodic face. + which is recorded in degrees. + int periodicType = 0; double translationLength[] = [0.0,0.0,0.0]; double rotationAngle = 0.0; @@ -180,7 +211,7 @@ string partition_grid_file = "./grid/sphere_mixed__4.fts"; // 0 -- Interface. (default) // 1 -- Physical boundary condition, used in Hybrid solver. // npartmethod: Method of interface reconstruction, default is 1. -// parallelPartMethod: Method of parallel partition, this is set only when execute parallel partition. It would be skipped when serial partition. +// parallelPartitionMethod: Method of parallel partition, this is set only when execute parallel partition. It would be skipped when serial partition. // 1 -- Using ParMetis for homogeneous MPI. // 2 -- Using Metis for homogeneous MPI. // 3 -- using METIS partition for homogeneous OpenMP. @@ -238,6 +269,8 @@ int compressible = 1; // 1 -- the flight conditions. // 2 -- the experiment conditions. // 3 -- the subsonic boundary conditions. +// 4 -- the condition that the velocity, temperature and density are given. +// 5 -- the condition that the velocity, temperature and pressure are given. // refReNumber: Reynolds number, which is based unit length, unit of 1/m. // refDimensionalTemperature: Dimensional reference temperature, or the total temperature only for the experiment condition. // freestream_vibration_temperature: Dimensional freestream vibration temperature. @@ -251,10 +284,12 @@ int compressible = 1; // 1 inch = 0.0254m. // 1 foot = 12 inches = 0.3048m. // 1 yard = 3 feet = 0.9144m. -// forceRefenenceLength, forceRefenenceLengthSpanWise, forceRefenenceArea: Reference length, SpanWise length and area, independent of grid unit. +// forceReferenceLength, forceReferenceLengthSpanWise, forceReferenceArea: Reference length, SpanWise length and area, independent of grid unit. // TorqueRefX, TorqueRefY, TorqueRefZ: Reference point, independent of grid unit. // radiationCoef: The radiation coefficient on wall, it is used to compute the radiation heat flux on wall when the boundary // condition is radiation equilibrium temperature, and 0.8 is the default value. +// refMolecularWeight : the reference molecular weight of gas used for perfect gas. The unit is g/mol. +// Generally, the gas is air. Sometimes, it is experiment gas, such as Nitrogen, Argon, and so on. double refMachNumber = 0.73; double attackd = 2.79; @@ -263,7 +298,7 @@ double angleSlide = 0.00; int inflowParaType = 0; double refReNumber = 6.5e6; double refDimensionalTemperature = 288.15; -double freestream_vibration_temperature = 10000.00; +double freestream_vibration_temperature = 300.00; //int inflowParaType = 1; //double height = 0.001; @@ -280,18 +315,34 @@ double freestream_vibration_temperature = 10000.00; //double refDimensionalTemperature = 288.144; //double refDimensionalPressure = 1.01313E05; +//The velocity, temperature and density are fixed. +//int inflowParaType = 4; +//double refDimensionalVelocity = 1000.0; +//double refDimensionalDensity = 1.0e3; + +//The velocity, temperature and pressure are fixed. +//int inflowParaType = 5; +//double refDimensionalVelocity = 1000.0; +//double refDimensionalPressure = 1.0e5; + +//The MachNumber, temperature and pressure are fixed. +//int inflowParaType = 6; +//double refDimensionalTemperature = 293; +//double refDimensionalPressure = 8886.06; + double wallTemperature = -1.0; double radiationCoef = 0.8; double gridScaleFactor = 1.0; int numberOfAerodynamicForceComponents = 1; -double forceRefenenceLengthSpanWise = 1.0; // unit of meter. -double forceRefenenceLength = 1.0; // unit of meter. -double forceRefenenceArea = 1.0; // unit of meter^2. +double forceReferenceLengthSpanWise = 1.0; // unit of meter. +double forceReferenceLength = 1.0; // unit of meter. +double forceReferenceArea = 1.0; // unit of meter^2. double TorqueRefX = 0.0; // unit of meter. double TorqueRefY = 0.0; // unit of meter. double TorqueRefZ = 0.0; // unit of meter. +double refMolecularWeight = 28.9644; // unit of g/mol. //----------------------------------------------------------------------- # Spatial Discretisation # @@ -303,7 +354,7 @@ double TorqueRefZ = 0.0; // unit of meter. // Using this when solve structered grid or hybrid. // -- "vanleer", "steger", "hlle", "lax_f". // -- "roe", "modified_roe". -// -- "ausm+", "ausm+w", "ausm+up", "ausmdv", "ausmpw". +// -- "ausm+", "ausm+w", "ausm+up", "ausmdv", "ausmpw", "ausmpw+". // str_limiter_name: Limiter of struct grid. // -- "vanalbada", "vanleer", "minmod", "smooth", "minvan", "3rdsmooth", "3rd_minmod_smooth". // -- "nolim", no limiter. @@ -339,14 +390,14 @@ string str_limiter_name = "vanalbada"; // uns_scheme_name: Spatial discretisation scheme of Unstruct grid. // Using this when solve Unstructered grid or hybrid. // -- "vanleer", "roe", "steger", "kfvs", "lax_f", "hlle". -// -- "ausm+", "ausmdv", "ausm+w", "ausmpw", "ausmpwplus". +// -- "ausm+", "ausmdv", "ausm+w", "ausmpw", "ausmpw+". // uns_limiter_name: Limiter of Unstruct grid. // -- "barth", "vencat", "vanleer", "minmod". // -- "vanalbada", "smooth", "nnd", "lpz", "1st". // -- "nolim", no limiter. // uns_vis_name: Discretisation method of viscous term. // -- "std", "test", "aver", "new1", "new2". -// uns_gradient: Gradient reconstruction method. +// gradientName: Gradient reconstruction method. // -- "default", "ggcell", "ggnode", "lsq". // ivencat: Variation of vencat limiter. // 0 -- org method, it is independent of grid scale. @@ -408,9 +459,15 @@ double roeEntropyScale = 1.0; // 1 -- unsteay. // physicalTimeStep: The nondimensional physical time step. // ifStartFromSteadyResults: The unsteady simulation is start from steady flowfield or not, 0 is for no and else is for yes. -// ifStaticsFlowField: Statistical variables for DES simulation. +// ifStaticsFlowField: Statistical variables for unsteady simulation. +// ifStaticsReynoldsStress: Statistical Reynolds stress for unsteady simulation. // startStatisticStep: Outer step when start statistics. // when the value is larger than "maxSimuStep", it is useless. +// statisticalTimePeriod: Used as time period of statistic analysis. +// when the value is negative, time period is treated as infinite. +// statisticMethod: Statistic reynolds stress method. + 0 --tau = - ^2 + 1 --tau = // min_sub_iter: The min sub iteration of unsteady simulation. // max_sub_iter: The max sub iteration of unsteady simulation. // tol_sub_iter: The tolerance of sub iteration of unsteady simulation. @@ -454,7 +511,10 @@ int iunsteady = 0; double physicalTimeStep = 0.01; int ifStartFromSteadyResults = 0; int ifStaticsFlowField = 0; +int ifStaticsReynoldsStress = 0; int startStatisticStep = 800000; +double statisticalTimePeriod = -1.0; +int statisticMethod = 0; int linearTwoStepMethods = 1; // 1--BDF1; 2--C-N; 3--BDF2; int methodOfDualTime = 3; @@ -482,8 +542,6 @@ double turbCFLScale = 1.0; double csrv = 2.0; double timemax = 1.0e10; double dtsave = -1.0; -int codeOfAleModel = 0; -int aleStartStrategy = -1; int maxale = 10; double dtau = 0.001; @@ -524,6 +582,7 @@ double lamda[] = 0.5, 1.0; int numberOfGridGroups = 1; string gridfile = "./grid/rae2822_hybrid2d__4.fts"; +string wallTemperaturefile= ""; int walldistMethod = 1; @@ -536,15 +595,16 @@ string turbfile = "results/turb.dat"; string visualfile = "results/tecflow.plt"; string wall_aircoefile = "results/wall_aircoef.dat"; -string probesflowfile = "results/sample.dat"; +string samplefile = "results/sample.dat"; int nDumpSurfaceInfo = 0; string wall_varfile = ""; string jetDefineFile = "bin/jet.hypara"; -string overset_gridfile = "results/iblank.ovs"; string sixDofFileName = "results/sixDofInfo.dat"; +string derivativeFileName = "results/identify.dat"; +string hysteresisFileName = "results/force_beta.plt"; int plotFieldType = 0; @@ -554,6 +614,11 @@ int plotFieldType = 0; int visualfileType = 1; +// samplefileMode: The dump mode of sample file. +// 0 -- dump out every probe/line/surface data for all step intervals. +// 1 -- dump out all probe/line/surface data for every step intervals. +int samplefileMode = 0; + // visualSlice: The slice of tecflow. // 0 -- Do not save slice data. // 1 -- comput and save it to sliceFile. @@ -567,11 +632,13 @@ int visualSlice = 0; int sliceAxis = 1; double slicePostion = -0.5; string sliceFile = "results/Slice.plt"; +int dumpWallFaceCenter = 0; // min-max box of the visual block. double lowerPlotFieldBox[] = [0.0 0.0 0.0]; double upperPlotFieldBox[] = [1.0 1.0 1.0]; +//-----------the optional parameters list for the flow field output---------------- // nVisualVariables: Number of variables want to be dumped for tecplot visualization. // visualVariables : Variable types dumped, listed as following: // -- density(0), u(1), v(2), w(3), pressure(4), temperature(5), mach(6), @@ -582,11 +649,27 @@ double upperPlotFieldBox[] = [1.0 1.0 1.0]; // -- vibration temperature(Tv, 33), electron temperature(Te, 34), vibrational energy(Ev, 35), electric energy(Ee, 36), // -- number density of electron(Ne, 37), dimensioanl density(rho, 38), dimensioanl pressure(p, 39), dimensioanl temperature(T, 40), // -- gradientUx(41), gradientUy(42), gradientVx(43), gradientVy(44), iblank(81). +// -- specific heat ratio(gama, 56) // Important Warning: Array size of visualVariables MUST be equal to nVisualVariables!!! // Variables order must from small to big. +//-----------the optional parameters list for the wall boundary condition---------------- +// nVisualWallVariables: The number of visual variables on wall. +// visualWallVariables : dumped variable types, listed as following: +// -coefficient of pressure(cp, 0), -coefficient of friction(cf, 1), yplus(2), -non-dimensional heat flux(Q_NonDim, 3), -dimensional heat flux(Q_Dim, 4), +// -pressure on wall(pw, 5), -temperature on wall(Tw, 6), -density on wall(rhow, 7), -heat flux of translational-rotational temperature term(Qtr, 8), +// -heat flux of species diffusion term(Qs, 9), -heat flux of vibrational temperature term(Qv, 10), -heat flux of electron temperature term(Qe, 11), +// -species mass fractions(Ns, 12), -x component of wall velocity(Vx, 13), -y component of wall velocity(Vy, 14), -z component of wall velocity(Vz, 15) +// -slip translational-rotational temperature(Tts, 16), -slip vibrational temperature(Tvs, 17), -slip electron temperature(Tes, 18), -absolute wall velocity(Vs, 19) +// -Stanton number(St, 20), -coefficient of heat rate(Ch, 21), -temperature jump(deltaT, 22), -transition gamaeff(gamaeff, 48), +// -transition intermittency(intermittency, 51), -transition momentum thickness reynolds(MomentumThicknessReynolds, 52), +// -overlap iblank(iblank, 81) + int nVisualVariables = 8; int visualVariables[] = [0, 1, 2, 3, 4, 5, 6, 15]; +int nVisualWallVariables = 9; +int visualWallVariables[] = [0, 1, 2, 3, 4, 5, 9, 10, 11]; + // dumpStandardModel: Dump many standard model data. // 1 -- Turbulent flat plate. int dumpStandardModel = 0; @@ -644,6 +727,7 @@ int probeVariablesInterpolationMethod = 0; // mod_turb_res: If modify the residuals for the cells next to the wall or not, default is 0. int turbInterval = 1; +int turbOrderStruct = 2; int kindOfTurbSource = 0; int mod_turb_res = 0; double turb_relax = 1.0; @@ -652,6 +736,10 @@ double muoo = 3.0; double kwoo = 5.0; int transitionType = 0; double turbIntensity = -1.0; +int freeturbIntensitySRModify = 0; +double freeDecayXLocation = 0.0; +int compressibleCorrection = 0; +int transitionMaFix = 1; # maximum eddy viscosity (myt/my) max. double eddyViscosityLimit = 1.0e10; @@ -661,8 +749,8 @@ int monitor_vistmax = 0; # LES Parameter # //----------------------------------------------------------------------- // iLES: Create LESSolver or not. -// >= 1 - Create LESSolver; -// < 1 - not. +// == 1 - Create LESSolver; +// != 1 - not. // amplitudeofDisturb: Amplitude of adding disturb. // disturbstep: Unsteady time step or steady iteration of adding random disturb. // iterdisturb: Add random disturb in every sub-iter or only first sub-iter. @@ -676,8 +764,9 @@ int monitor_vistmax = 0; // utau: friction velocity, using in DNSDisturb. // sgsmodel: subgrid scale model. // = "smagorinsky"; -// = "dsm"; -// = "wale". +// = "dsmCom"; +// = "wale"; +// = "sigma". // deltaFunctionType: = 1 - MAX(deltai, deltaj, deltak); // = 2 - pow(deltai * deltaj *deltak, 1/3); // = 3 - Devloped by Scotti. @@ -700,9 +789,10 @@ string sgsmodel = "smagorinsky"; int deltaFunctionType = 2; int wallDampingFunctionType = 1; int turbViscousCutType = 2; -double smagConstant = 0.135; +double smagConstant = 0.1; double isotropicConstant = 0.0; double waleConstant = 0.6; +double sigmaConstant = 1.35; int filterDirection[] = [1, 1, 0]; int averageDirection[] = [0, 0, 0]; double testFilterScale = 2.0; @@ -724,12 +814,42 @@ int monitorNegativeConstant = 0; // nm: Equation number of the physics, but is out of commision now. // 4 -- for 2D. // 5 -- for 3D. -// nGasModel: The type of gas. +// nGasModel: The type of gas. less than and equal to 1 represents the mixture gas. +// Otherwise, the pure gas with one component is used for perfect gas. // 0 -- Earth gas. // 1 -- Mars gas. +// 2 -- Argon. +// 3 -- Nitrogen. +// nEnergyRecycle: The type of EnergyModel Recycle. +// 0 -- not used . +// 1 -- used. +// nDensityModify: The type of densitymodify. + +// 0 -- not used. +// 1 -- used. // nchem: // 0 -- without chemical reaction flow. // 1 -- the chemical reaction flow is considered. +// nEquilibriumGas: the variable is valid when the condition of nchem=0 is satisfied. +// 0 -- perfect gas. +// 5, 7, 11 -- equilibrium gas, meanwhile, its value denotes the number of gas component. +// nPCWCycleStep: the maximum step number of iteration in the module of computing species mass fractions with the partial catalytic wall(PCW) condition. +// the value equals to or is greater than 1, and 3 is for default value. +// nRETCycleStep: the maximum step number of iteration in the module of computing radiation equilibrium temperature on wall. +// the value equals to or is greater than 1, and 3 is for default value. +// nSLIPCycleStep:the maximum step number of iteration in the module of computing slip temperature, slip velocity and slip species mass fraction. +// the value equals to or is greater than 1, and 3 is for default value. +// nSlipBCModel : The computational model of slip boundary conditions. + +// 0 -- no slip. +// 1 -- the conventional Maxwell slip conditions. +// 2 -- the Gokcen slip conditions. +// 3 -- the Knudsen-layer correction of the standard slip conditions proposed by Lockerby, et al. +// 4 -- the Kogan simplified slip conditions. +// nMeanFreePathType : the method to the mean free-path for the slip conditions. For the mixture, 0 is suggested. +// 0 -- the equivalent mean free-path is calculated by the simple hard sphere model(HS). +// 1 -- calculated by the definition that includes the variables of the number density and the molecule diameter. +// 2 -- the equivalent mean free-path is calculated by the variable hard sphere model(VHS). // nchemsrc: // 0 -- the source terms are not computed. // 1 -- the source terms are computed. @@ -740,15 +860,72 @@ int monitorNegativeConstant = 0; // 1 -- One-temperature model. // 2 -- Two-temperature model. // 3 -- Three-temperature model. +// nTEnergyModel: the method to computing temperature energy model. +// 0 -- the energy term is computed using the conventional method. +// 1 -- the energy term is computed using the curve fitting method. +// parkVDPower: the power of translational-rotational temperature in the Park V-D(vibration-dissociation) coupling model. +// The value is in range of [0.0, 1.0], DPLR suggests 0.5, LAURA suggests 0.7, while 0.6 is given as default value. // catalyticCoef: // 0.0 -- full non-catalytic wall boundary condition. // 1.0 -- full catalytic wall boundary condition. // in range of (0.0, 1.0) -- partial catalytic condition, the value indicates the catalytic coefficient. +// nIsSuperCatalytic : the super catalytic condition for the fully catalytic wall, and assigned with the value of 1. +// 0 -- equilibrium condition for the fully catalytic wall where the mass fractions are assigned with the values of the free stream. +// 1 -- super catalytic condition for the fully catalytic wall where all the atomic components combine into molecular components. +// nTemperatureJump : the method to calculate the temperature jump. +// 0 -- calculated by the variables of heat conductivity and constant volume specific heat for each energy mode. +// 1 -- the general method where the iteration is calculated with the translation-rotation temperature. +// sigmaVelocity: the coordination coefficient of tangential momentum for computation of slip velocity. The value is in range of (0.0, 2.0]. +// sigmaTemperature: the heat coordination coefficient for computation of slip temperature. The value is in range of (0.0, 2.0]. +// sigmaMassFraction: the species coordination coefficient for computation of slip mass fractions. The value is in range of (0.0, 2.0]. +// velocitySlipCorrectConstant: the correction constant to the velocity slip condition. For the diffuse reflection, 1.0 is used. +// 1.0 -- proposed by Maxwell. +// sqrt(2/PI)~0.8 -- used for "micro-slip", namely the actual velocity slip at the wall. +// 1.146 -- proposed for an additional "fictitious" velocity slip. + +// chemicalRelaxCorf: The value is in range of [0.001, 1.0]. +// chemicalSpectrumRadiusCoef: The value is in range of [1.0, 3.0]. +// viscousSpectrumRadiusCoef : The value is in range of [1.0, 3.0]. +// inviscidSpectrumRadiusCoef: The value is in range of [1.0, 3.0]. +// staticPressureRelaxCorf: The value is in range of [0.1, 1.0]. +// nIsChemicalFreeze : the flag to freeze the chemical reactions. +// 0 -- not freeze, the chemical reaction sources will be calculated. +// 1 -- freezes the chemical reactions, the chemical reaction sources will not be calculated.// veTemperatureMin: The minimum of Tv and Te +// nDebug: cout the Wrong place and abort +// 0 -- not used. +// 1 -- used. +// nSpeciesLimit: limitter of gas species +// 0 -- not used. +// 1 -- used. +// nTurblenceForChemical: the coupled mode of Turblence and Chemical reaction +// 0 -- method 0. +// 1 -- method 1. +// nViscosityFluxSublevelModified: Modified for ViscosityFlux on Sublevel grid +// 0 -- not used. +// 1 -- used. +// nChemcalSourceModified: Modified on ChemcalSource +// 0 -- not used. +// 1 -- used. +// nAblation: +// 0 -- The wall ablation is not computed. +// 1 -- The wall ablation is computed. +// isInjection: +// 0 -- The injection velocity of ablation wall is not computed. +// 1 -- The injection velocity of ablation wall is computed. +// nViscosityModel: + +// 0 -- Blottner fitting method. +// 1 -- Gupta fitting method. +// nSutherland: +// 0 -- stands for selecting the Blotter curve fits mode. +// 1 -- stands for Sutherland relation. // gasfile: Indicates the gas model, 9 models are provided, namely "Gu5", "Gu7", "Gu11", "Pa5", "Pa7", "Pa11", "DK5", "DK7", "DK11". // "Gu" -- indicates the Gupta Model, three-Type Models are embeded in the library, namely, the 5-species-6-reactions, the 7-species-9-reactions, the 11-species-20-reactions. // "Pa" -- indicates the Park Model, three-Type Models are embeded in the library, namely, the 5-species-17-reactions, the 7-species-22-reactions, the 11-species-48-reactions. // "DK" -- indicates the Dunn-Kang Model, three-Type Models are embeded in the library, namely, the 5-species-11-reactions, the 7-species-15-reactions, the 11-species-26-reactions. // "Mars-Pa8" is for Park model of Mars gas, "Mars-Mc8" for McKenzie model of Mars gas. +// "Combustion-12" -- indicates the Combustion Chamber Gas Model which includes 12-species-20-reactions. +// "Gas-Mixture" -- indicates the process of mixing two species without reacting. // For self-definition model, the gasfile is used to indicate the file path of the new gas model. // speciesName: Used to list the names of each species, while each species name is separated by the symbol of comma. // initMassFraction: Used to list the initial mass fractions of species in accordance with the sequence of names in the parameter speciesName. @@ -758,6 +935,10 @@ int dg_high_order = 0; int iapplication = 0; int iCodeBranch = 0; int nm = 5; +int nEquilibriumGas = 0; +int nPCWCycleStep = 3; +int nRETCycleStep = 3; +int nSLIPCycleStep= 3; double refGama = 1.4; double prl = 0.72; @@ -770,23 +951,73 @@ int nchem = 0; int nchemsrc = 1; int nchemrad = 1; int ntmodel = 1; -int nChemicalFlowStep = 0; + +int nEnergyRecycle = 0; +int nSlipBCModel = 0; +int nDensityModify = 1; +int nTEnergyModel = 0; +int nMeanFreePathType = 0; +int nIsChemicalFreeze = 0; +int nIsSuperCatalytic = 1; +int nTemperatureJump = 0; + +double parkVDPower = 0.6; double catalyticCoef = 0.0; +double sigmaVelocity = 1.0; +double sigmaTemperature = 1.0; +double sigmaMassFraction = 1.0; +double velocitySlipCorrectConstant = 1.0; + +double chemicalRelaxCorf = 1.0; +double chemicalSpectrumRadiusCoef = 1.0; +double viscousSpectrumRadiusCoef = 1.0; +double inviscidSpectrumRadiusCoef = 1.0; +double staticPressureRelaxCorf = 1.0; + +double veTemperatureMin = 30.0; +int nDebug = 0; +int nSpeciesLimit = 0; +int nTurblenceForChemical = 0; +int nViscosityFluxSublevelModified = 0 ; +int nChemcalSourceModified = 0; + +int nAblation = 0; +int isInjection = 0; +int nViscosityModel = 0; +int nMarsModel = 0; string gasfile = "DK5"; //string gasfile = "./chemical/Dunn-Kang_air5s11r.dat"; string speciesName = "O, O2, NO, N, N2"; -string initMassFraction = "0.0, 0.23, 0.0, 0.0, 0.77"; +string initMassFraction = "0.0, 0.233, 0.0, 0.0, 0.767"; //string speciesName = "O, O2, NO, N, NO+, N2, e-"; -//string initMassFraction = "0.0, 0.23, 0.0, 0.0, 0.0, 0.77, 0.0"; +//string initMassFraction = "0.0, 0.233, 0.0, 0.0, 0.0, 0.767, 0.0"; //string speciesName = "O, O2, NO, N, O+, O2+, NO+, N+, N2+, N2, e-"; -//string initMassFraction = "0.0, 0.23, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.77, 0.0"; +//string initMassFraction = "0.0, 0.233, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.767, 0.0"; //string gasfile = "Mars-Pa8"; //string speciesName = "O, O2, NO, N, N2, C, CO, CO2"; //string initMassFraction = "0.0015, 0.0429, 0.0, 0.0, 0.0, 0.0, 0.0777, 0.8779"; +//string gasfile = "DK7"; +//string speciesName = "O, O2, NO, N, NO+, C, C2, CO, CO2, CN, N2, e-"; +//string initMassFraction = "0.0, 0.233, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.767, 0.0"; + +//string gasfile = "Combustion-12"; +//string speciesName = "O, O2, NO, N, C, CO, CO2, H, H2, OH, H2O, N2"; +//string initMassFraction = "0.0, 0.233, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.767"; + +//string gasfile = "Gas-Mixture"; +//string speciesName ="SpeciesA, SpeciesB"; +//string initMassFraction = "1.0, 0.0"; +int nSutherland = 0; +double gamaSpeciesA = 1.4; +double gamaSpeciesB = 1.3; +double molecularWeightSpeciesA = 29.0; +double molecularWeightSpeciesB = 30.0; + +int nChemicalFlowStep = 0; int ifStartFromPerfectGasResults = 0; ######################################################################### @@ -841,7 +1072,7 @@ string zoneInverseFileName = "./grid/zoneInverseMapping.inp"; ######################################################################### # High Order Struct Solver # ######################################################################### -// ifvfd: +// isFVMOrFDM: // 0 -- NSSolverStruct using Finite Volume Method. // 1 -- NSSolverStruct using Finite Differ Method. // SolverStructOrder: Spatial discretisation order of NS equations with struct grid. @@ -856,7 +1087,7 @@ string zoneInverseFileName = "./grid/zoneInverseMapping.inp"; // -- "roe", "steger". // structhighordergradient: // -- "conservation", "chain_rule". -int ifvfd = 0; +int isFVMOrFDM = 0; string str_highorder_solver = "WCNS"; int SolverStructOrder = 0; double str_highorder_interpolation_epsilon = 1.0e-6; @@ -885,8 +1116,12 @@ int allReduceStep = 1; // codeOfOversetGrid: Overlapping(overset) grid or not. // 0 -- NON-overlapping grid. // 1 -- Overlapping grid. +// oversetInterpolationMethod: the method of overset interpolation while field simulation +// 0 -- set the acceptor cell value by donor cell value. +// 1 -- set the acceptor cell value by distance weight of donor cell value. + int codeOfOversetGrid = 0; -int codeOfOversetSlipGrid = 0; +int oversetInterpolationMethod = 0; int readOversetFileOrNot = 0; int symetryOrNot = 0; int readInAuxiliaryInnerGrid = 1; @@ -895,7 +1130,7 @@ int readInSklFileOrNot = 0; string auxiliaryInnerGrid0 = "./grid/aux-upper.fts"; string auxiliaryInnerGrid1 = "./grid/aux-lower.fts"; string auxiliaryInnerGrid2 = ""; -string oversetGridFileName = "./grid/overlap.ovs"; +string oversetGridFileName = "./grid/iblank.ovs"; double walldistMainZone = 1.0 double toleranceForOversetSearch = 1.0e-3; double toleranceForOversetBox = 1.0e-3; @@ -905,16 +1140,78 @@ int outTecplotOverset = 0; int numberOfMovingBodies = 2; +// ----------------- ALE configuration ------------------------------ +int codeOfAleModel = 1; +int aleStartStrategy = -1; + +int strategyForFaceNormalVelocity = 0; //0-By Sweeping volume; 1-By face center 1st; 2-By face center 2nd; +int strategyForGCLSource = 0; //0-present; 1-Ahn; + +//0:1st-Admas-Bashforth; 1:2nd-Admas-Bashforth; 2:1st-Implicit-Euler; 3:2nd-Implicit Euler; 4:2nd-Adams-Moulton; 5:3rd-Adams-Moulton +int methodForKineticEquation = 0; +double relaxParameterOfKinetic = 1.0; + +######################################################################### +# motive information # +######################################################################### +int numberOfMovingBodies = 1; + +############################## body0 ############################## +//mass of parts +double mass_0 = 1.0; +//mass matrix of parts Ixx Iyy Izz Ixy Ixz Iyz +double massMatrix_0[] = 1e-7, 1e-6, 1e-6, 0.0, 0.0, 0.0; +//initial six DOF position information of parts. xc yc zc +double massCenter_0[] = 0.0 , 0.0, 0.0; +//initial six DOF position information of parts. angleX angleY angleZ +double attitudeAngle_0[] = 0.0 , 0.0, 0.0; +//initial six DOF move information of parts. vc vy vz +double massCenterVelocity_0[] = 0.0, 0.0, 0.0; +//initial six DOF move information of parts. omigX omigY omigZ +double angularVelocity_0[] = 0.0, 0.0, 0.0; +//the object that the parts belong to. +int fartherIndex_0 = -1; +//the assembly position of the parts. xc yc zc angleX angleY angleZ +double configPamameter_0[] = 0.0 ,0.0 ,0.0 ,0.0 ,0.0 ,0.0; +//the move pattern of the parts. +// -1 given motion partten. +// 0 still. +// 1 six DOF motion. +// 2 three DOF motion. +// 11 X-axis forced motion. +// 12 Y-axis forced motion. +// 13 Z-axis forced motion. +// 14 forced pitch motion. +// 15 forced yaw motion. +// 16 forced roll motion. +int RBDMethod_0 = 0; +double amplitude_0 = 0.0; +double reduceFrequency_0 = 0.0; +//string uDFSixDofFileName_0 = "./Bin/UDFSixDof.Parameter"; +//additional force (system axis) fX fY fZ +double addedForce_0[] = 0.0 ,0.0 ,0.0 ; +//additional moment of Force (system axis) mX mY mZ +double addedMoment_0[] = 0.0 ,0.0 ,0.0 ; +//the deformation method of the parts. +int morphing_0 = 0; + +// post indentify +int integralOrder = 4; + + // ---------------- ATP read -------------------------------------------- //@int inflowParaType = 0; -//@double refReNumber = 2.329418E08; -//@double refDimensionalTemperature = 288.144; -//@double refDimensionalPressure = 1.01313E05; -//@double height = -0.001; +//@double refReNumber = 6.5e6; +//@double refDimensionalTemperature = 288.15; +//@double freestream_vibration_temperature = 300.00; +//@double refDimensionalPressure = 0; +//@double height = 0; //@int nsubsonicInlet = 0; //@int nsubsonicOutlet = 0; //@string inLetFileName = "./bin/subsonicInlet.hypara"; //@string outLetFileName = "./bin/subsonicOutlet.hypara"; +//@double refDimensionalVelocity = 0; +//@double refDimensionalDensity = 0; ######################################################################### # Old Parameter # diff --git a/A10_ThreeD_CHNT_SST_Struct_16CPU/bin/cfd_para_transonic.hypara b/A10_ThreeD_CHNT_SST_Struct_16CPU/bin/cfd_para_transonic.hypara index 10953e8..24013eb 100644 --- a/A10_ThreeD_CHNT_SST_Struct_16CPU/bin/cfd_para_transonic.hypara +++ b/A10_ThreeD_CHNT_SST_Struct_16CPU/bin/cfd_para_transonic.hypara @@ -56,9 +56,9 @@ double refDimensionalTemperature = 298.15; double gridScaleFactor = 1.0; -double forceRefenenceLengthSpanWise = 1.0; // unit of meter. -double forceRefenenceLength = 0.1937; // unit of meter. -double forceRefenenceArea = 0.12892; // unit of meter^2. +double forceReferenceLengthSpanWise = 1.0; // unit of meter. +double forceReferenceLength = 0.1937; // unit of meter. +double forceReferenceArea = 0.12892; // unit of meter^2. double TorqueRefX = 0.66087; // unit of meter. double TorqueRefY = 0.0; // unit of meter. double TorqueRefZ = 0.0; // unit of meter. diff --git a/A11_ThreeD_Sphere_Laminar_Ma10_Struct/bin/cfd_para.hypara b/A11_ThreeD_Sphere_Laminar_Ma10_Struct/bin/cfd_para.hypara index df090b7..b17970c 100644 --- a/A11_ThreeD_Sphere_Laminar_Ma10_Struct/bin/cfd_para.hypara +++ b/A11_ThreeD_Sphere_Laminar_Ma10_Struct/bin/cfd_para.hypara @@ -21,6 +21,7 @@ // 1 -- Grid conversion, from other grid data to PHenglEI, such as Fluent, CGNS. // 2 -- Grid refinement. // 3 -- Grid merging, merge two blocks into one block. +// 4 -- Grid deformation, achieve unstructured grid deformation. // 5 -- Grid repairing, repair the original grid in order to remove the negative volume cells. // 6 -- Grid mirroring, mirror a symmetry grid to whole grid. // multiblock: Multi-block grid or not, only for structured grid conversion. @@ -72,13 +73,15 @@ int dumpOldGrid = 0; //----------------------------------------------------------------------- // from_gfile: path of original data file for unstructure grid convert from. // out_gfile: path of target file for grid convert to, *.fts type of file usually. +int numberOfGridFile = 1; string from_gfile = "./grid/rae2822_hybrid2d.cas"; +string from_gfile1= ""; + string out_gfile = "./grid/flat_laminr_133_85_2d.fts"; // ----------------- some advanced choices ------------------------------ // iunsteady: The Grid is for unsteady simulation or not. int iunsteady = 0; -int iale = 0; int codeOfAleModel = 0; // fileformat: Ustar Grid file format. @@ -122,15 +125,38 @@ int isDeform = 0; int exclusiveCase = 0; // 0: NON case; 1: JSM-C2-NPOFF case; 2: CHNT. int projectOrgPoint = 0; // if project original wall points. + +// ----------------- Grid Deform Parameters ----------------------------- +// deformationMethod: Grid Deform. +// 1 -- SPRING. +// 2 -- RBF. +// stationalGridFile: Original grid file. +// visualFileName : The visualization file path of deform grid. +// nDeformStep : The max deform step. +// flapAngle : The max flap angle. +// rotatePostionZ : Rotate postion. +// rotatePostionY : Rotate postion. +// gridSlice : If dump slice grid. +// sliceAxis : Grid slice axis. +// slicePosition : Grid slice position. +int nDeformStep = 40; +double flapAngle = 10.0; +double rotatePostionZ = 4.00003; +double rotatePostionY = 3.05; + +int deformationMethod = 2; +string stationalGridFile = "./grid/Segment2Brid.fts"; +string visualFileName = "./results/deformedGrid.dat" + +int gridSlice = 1; +int sliceAxis = 1; +double slicePosition = 13; + // ----------------- RBF Parameters ------------------------------------- -// symmetryPlane: Which symmetry plane is used in the mesh. -// 0 -- without symmetry. -// 1 -- plane of x=0. -// 2 -- plane of y=0. -// 3 -- plane of z=0. -int numberOfReferenceCP = 10; -double influenceRadius = 20; -int symmetryPlane = 3; // 1: plane of x=0; 2: plane of y=0; 3: plane of z=0; +// numberOfReferenceCP : Number of reference Control Points. +// influencePara : The RBF influence radius parameter. +int numberOfReferenceCP = 40; +double influencePara = 25.0; // ----------------- Periodic Parameters -------------------------------- // Notice: Rotational periodicity only support rotation along the X axis! @@ -138,6 +164,11 @@ int symmetryPlane = 3; // 1: plane of x=0; 2: plane of y=0; 3: plane of // 0 -- without Periodic Boundary. // 1 -- Translational periodicity. // 2 -- Rotational periodicity. +// translationLength[]: The relative distance between two periodic face + which only support one direction. +// rotationAngle: The relative angle between two periodic face. + which is recorded in degrees. + int periodicType = 0; double translationLength[] = [0.0,0.0,0.0]; double rotationAngle = 0.0; @@ -180,7 +211,7 @@ string partition_grid_file = "./grid/sphere_mixed__4.fts"; // 0 -- Interface. (default) // 1 -- Physical boundary condition, used in Hybrid solver. // npartmethod: Method of interface reconstruction, default is 1. -// parallelPartMethod: Method of parallel partition, this is set only when execute parallel partition. It would be skipped when serial partition. +// parallelPartitionMethod: Method of parallel partition, this is set only when execute parallel partition. It would be skipped when serial partition. // 1 -- Using ParMetis for homogeneous MPI. // 2 -- Using Metis for homogeneous MPI. // 3 -- using METIS partition for homogeneous OpenMP. @@ -238,6 +269,8 @@ int compressible = 1; // 1 -- the flight conditions. // 2 -- the experiment conditions. // 3 -- the subsonic boundary conditions. +// 4 -- the condition that the velocity, temperature and density are given. +// 5 -- the condition that the velocity, temperature and pressure are given. // refReNumber: Reynolds number, which is based unit length, unit of 1/m. // refDimensionalTemperature: Dimensional reference temperature, or the total temperature only for the experiment condition. // freestream_vibration_temperature: Dimensional freestream vibration temperature. @@ -251,10 +284,12 @@ int compressible = 1; // 1 inch = 0.0254m. // 1 foot = 12 inches = 0.3048m. // 1 yard = 3 feet = 0.9144m. -// forceRefenenceLength, forceRefenenceLengthSpanWise, forceRefenenceArea: Reference length, SpanWise length and area, independent of grid unit. +// forceReferenceLength, forceReferenceLengthSpanWise, forceReferenceArea: Reference length, SpanWise length and area, independent of grid unit. // TorqueRefX, TorqueRefY, TorqueRefZ: Reference point, independent of grid unit. // radiationCoef: The radiation coefficient on wall, it is used to compute the radiation heat flux on wall when the boundary // condition is radiation equilibrium temperature, and 0.8 is the default value. +// refMolecularWeight : the reference molecular weight of gas used for perfect gas. The unit is g/mol. +// Generally, the gas is air. Sometimes, it is experiment gas, such as Nitrogen, Argon, and so on. double refMachNumber = 0.73; double attackd = 2.79; @@ -263,7 +298,7 @@ double angleSlide = 0.00; int inflowParaType = 0; double refReNumber = 6.5e6; double refDimensionalTemperature = 288.15; -double freestream_vibration_temperature = 10000.00; +double freestream_vibration_temperature = 300.00; //int inflowParaType = 1; //double height = 0.001; @@ -280,18 +315,34 @@ double freestream_vibration_temperature = 10000.00; //double refDimensionalTemperature = 288.144; //double refDimensionalPressure = 1.01313E05; +//The velocity, temperature and density are fixed. +//int inflowParaType = 4; +//double refDimensionalVelocity = 1000.0; +//double refDimensionalDensity = 1.0e3; + +//The velocity, temperature and pressure are fixed. +//int inflowParaType = 5; +//double refDimensionalVelocity = 1000.0; +//double refDimensionalPressure = 1.0e5; + +//The MachNumber, temperature and pressure are fixed. +//int inflowParaType = 6; +//double refDimensionalTemperature = 293; +//double refDimensionalPressure = 8886.06; + double wallTemperature = -1.0; double radiationCoef = 0.8; double gridScaleFactor = 1.0; int numberOfAerodynamicForceComponents = 1; -double forceRefenenceLengthSpanWise = 1.0; // unit of meter. -double forceRefenenceLength = 1.0; // unit of meter. -double forceRefenenceArea = 1.0; // unit of meter^2. +double forceReferenceLengthSpanWise = 1.0; // unit of meter. +double forceReferenceLength = 1.0; // unit of meter. +double forceReferenceArea = 1.0; // unit of meter^2. double TorqueRefX = 0.0; // unit of meter. double TorqueRefY = 0.0; // unit of meter. double TorqueRefZ = 0.0; // unit of meter. +double refMolecularWeight = 28.9644; // unit of g/mol. //----------------------------------------------------------------------- # Spatial Discretisation # @@ -303,7 +354,7 @@ double TorqueRefZ = 0.0; // unit of meter. // Using this when solve structered grid or hybrid. // -- "vanleer", "steger", "hlle", "lax_f". // -- "roe", "modified_roe". -// -- "ausm+", "ausm+w", "ausm+up", "ausmdv", "ausmpw". +// -- "ausm+", "ausm+w", "ausm+up", "ausmdv", "ausmpw", "ausmpw+". // str_limiter_name: Limiter of struct grid. // -- "vanalbada", "vanleer", "minmod", "smooth", "minvan", "3rdsmooth", "3rd_minmod_smooth". // -- "nolim", no limiter. @@ -339,14 +390,14 @@ string str_limiter_name = "vanalbada"; // uns_scheme_name: Spatial discretisation scheme of Unstruct grid. // Using this when solve Unstructered grid or hybrid. // -- "vanleer", "roe", "steger", "kfvs", "lax_f", "hlle". -// -- "ausm+", "ausmdv", "ausm+w", "ausmpw", "ausmpwplus". +// -- "ausm+", "ausmdv", "ausm+w", "ausmpw", "ausmpw+". // uns_limiter_name: Limiter of Unstruct grid. // -- "barth", "vencat", "vanleer", "minmod". // -- "vanalbada", "smooth", "nnd", "lpz", "1st". // -- "nolim", no limiter. // uns_vis_name: Discretisation method of viscous term. // -- "std", "test", "aver", "new1", "new2". -// uns_gradient: Gradient reconstruction method. +// gradientName: Gradient reconstruction method. // -- "default", "ggcell", "ggnode", "lsq". // ivencat: Variation of vencat limiter. // 0 -- org method, it is independent of grid scale. @@ -408,9 +459,15 @@ double roeEntropyScale = 1.0; // 1 -- unsteay. // physicalTimeStep: The nondimensional physical time step. // ifStartFromSteadyResults: The unsteady simulation is start from steady flowfield or not, 0 is for no and else is for yes. -// ifStaticsFlowField: Statistical variables for DES simulation. +// ifStaticsFlowField: Statistical variables for unsteady simulation. +// ifStaticsReynoldsStress: Statistical Reynolds stress for unsteady simulation. // startStatisticStep: Outer step when start statistics. // when the value is larger than "maxSimuStep", it is useless. +// statisticalTimePeriod: Used as time period of statistic analysis. +// when the value is negative, time period is treated as infinite. +// statisticMethod: Statistic reynolds stress method. + 0 --tau = - ^2 + 1 --tau = // min_sub_iter: The min sub iteration of unsteady simulation. // max_sub_iter: The max sub iteration of unsteady simulation. // tol_sub_iter: The tolerance of sub iteration of unsteady simulation. @@ -454,7 +511,10 @@ int iunsteady = 0; double physicalTimeStep = 0.01; int ifStartFromSteadyResults = 0; int ifStaticsFlowField = 0; +int ifStaticsReynoldsStress = 0; int startStatisticStep = 800000; +double statisticalTimePeriod = -1.0; +int statisticMethod = 0; int linearTwoStepMethods = 1; // 1--BDF1; 2--C-N; 3--BDF2; int methodOfDualTime = 3; @@ -482,8 +542,6 @@ double turbCFLScale = 1.0; double csrv = 2.0; double timemax = 1.0e10; double dtsave = -1.0; -int codeOfAleModel = 0; -int aleStartStrategy = -1; int maxale = 10; double dtau = 0.001; @@ -524,6 +582,7 @@ double lamda[] = 0.5, 1.0; int numberOfGridGroups = 1; string gridfile = "./grid/rae2822_hybrid2d__4.fts"; +string wallTemperaturefile= ""; int walldistMethod = 1; @@ -536,15 +595,16 @@ string turbfile = "results/turb.dat"; string visualfile = "results/tecflow.plt"; string wall_aircoefile = "results/wall_aircoef.dat"; -string probesflowfile = "results/sample.dat"; +string samplefile = "results/sample.dat"; int nDumpSurfaceInfo = 0; string wall_varfile = ""; string jetDefineFile = "bin/jet.hypara"; -string overset_gridfile = "results/iblank.ovs"; string sixDofFileName = "results/sixDofInfo.dat"; +string derivativeFileName = "results/identify.dat"; +string hysteresisFileName = "results/force_beta.plt"; int plotFieldType = 0; @@ -554,6 +614,11 @@ int plotFieldType = 0; int visualfileType = 1; +// samplefileMode: The dump mode of sample file. +// 0 -- dump out every probe/line/surface data for all step intervals. +// 1 -- dump out all probe/line/surface data for every step intervals. +int samplefileMode = 0; + // visualSlice: The slice of tecflow. // 0 -- Do not save slice data. // 1 -- comput and save it to sliceFile. @@ -567,11 +632,13 @@ int visualSlice = 0; int sliceAxis = 1; double slicePostion = -0.5; string sliceFile = "results/Slice.plt"; +int dumpWallFaceCenter = 0; // min-max box of the visual block. double lowerPlotFieldBox[] = [0.0 0.0 0.0]; double upperPlotFieldBox[] = [1.0 1.0 1.0]; +//-----------the optional parameters list for the flow field output---------------- // nVisualVariables: Number of variables want to be dumped for tecplot visualization. // visualVariables : Variable types dumped, listed as following: // -- density(0), u(1), v(2), w(3), pressure(4), temperature(5), mach(6), @@ -582,11 +649,27 @@ double upperPlotFieldBox[] = [1.0 1.0 1.0]; // -- vibration temperature(Tv, 33), electron temperature(Te, 34), vibrational energy(Ev, 35), electric energy(Ee, 36), // -- number density of electron(Ne, 37), dimensioanl density(rho, 38), dimensioanl pressure(p, 39), dimensioanl temperature(T, 40), // -- gradientUx(41), gradientUy(42), gradientVx(43), gradientVy(44), iblank(81). +// -- specific heat ratio(gama, 56) // Important Warning: Array size of visualVariables MUST be equal to nVisualVariables!!! // Variables order must from small to big. +//-----------the optional parameters list for the wall boundary condition---------------- +// nVisualWallVariables: The number of visual variables on wall. +// visualWallVariables : dumped variable types, listed as following: +// -coefficient of pressure(cp, 0), -coefficient of friction(cf, 1), yplus(2), -non-dimensional heat flux(Q_NonDim, 3), -dimensional heat flux(Q_Dim, 4), +// -pressure on wall(pw, 5), -temperature on wall(Tw, 6), -density on wall(rhow, 7), -heat flux of translational-rotational temperature term(Qtr, 8), +// -heat flux of species diffusion term(Qs, 9), -heat flux of vibrational temperature term(Qv, 10), -heat flux of electron temperature term(Qe, 11), +// -species mass fractions(Ns, 12), -x component of wall velocity(Vx, 13), -y component of wall velocity(Vy, 14), -z component of wall velocity(Vz, 15) +// -slip translational-rotational temperature(Tts, 16), -slip vibrational temperature(Tvs, 17), -slip electron temperature(Tes, 18), -absolute wall velocity(Vs, 19) +// -Stanton number(St, 20), -coefficient of heat rate(Ch, 21), -temperature jump(deltaT, 22), -transition gamaeff(gamaeff, 48), +// -transition intermittency(intermittency, 51), -transition momentum thickness reynolds(MomentumThicknessReynolds, 52), +// -overlap iblank(iblank, 81) + int nVisualVariables = 8; int visualVariables[] = [0, 1, 2, 3, 4, 5, 6, 15]; +int nVisualWallVariables = 9; +int visualWallVariables[] = [0, 1, 2, 3, 4, 5, 9, 10, 11]; + // dumpStandardModel: Dump many standard model data. // 1 -- Turbulent flat plate. int dumpStandardModel = 0; @@ -644,6 +727,7 @@ int probeVariablesInterpolationMethod = 0; // mod_turb_res: If modify the residuals for the cells next to the wall or not, default is 0. int turbInterval = 1; +int turbOrderStruct = 2; int kindOfTurbSource = 0; int mod_turb_res = 0; double turb_relax = 1.0; @@ -652,6 +736,10 @@ double muoo = 3.0; double kwoo = 5.0; int transitionType = 0; double turbIntensity = -1.0; +int freeturbIntensitySRModify = 0; +double freeDecayXLocation = 0.0; +int compressibleCorrection = 0; +int transitionMaFix = 1; # maximum eddy viscosity (myt/my) max. double eddyViscosityLimit = 1.0e10; @@ -661,8 +749,8 @@ int monitor_vistmax = 0; # LES Parameter # //----------------------------------------------------------------------- // iLES: Create LESSolver or not. -// >= 1 - Create LESSolver; -// < 1 - not. +// == 1 - Create LESSolver; +// != 1 - not. // amplitudeofDisturb: Amplitude of adding disturb. // disturbstep: Unsteady time step or steady iteration of adding random disturb. // iterdisturb: Add random disturb in every sub-iter or only first sub-iter. @@ -676,8 +764,9 @@ int monitor_vistmax = 0; // utau: friction velocity, using in DNSDisturb. // sgsmodel: subgrid scale model. // = "smagorinsky"; -// = "dsm"; -// = "wale". +// = "dsmCom"; +// = "wale"; +// = "sigma". // deltaFunctionType: = 1 - MAX(deltai, deltaj, deltak); // = 2 - pow(deltai * deltaj *deltak, 1/3); // = 3 - Devloped by Scotti. @@ -700,9 +789,10 @@ string sgsmodel = "smagorinsky"; int deltaFunctionType = 2; int wallDampingFunctionType = 1; int turbViscousCutType = 2; -double smagConstant = 0.135; +double smagConstant = 0.1; double isotropicConstant = 0.0; double waleConstant = 0.6; +double sigmaConstant = 1.35; int filterDirection[] = [1, 1, 0]; int averageDirection[] = [0, 0, 0]; double testFilterScale = 2.0; @@ -724,12 +814,42 @@ int monitorNegativeConstant = 0; // nm: Equation number of the physics, but is out of commision now. // 4 -- for 2D. // 5 -- for 3D. -// nGasModel: The type of gas. +// nGasModel: The type of gas. less than and equal to 1 represents the mixture gas. +// Otherwise, the pure gas with one component is used for perfect gas. // 0 -- Earth gas. // 1 -- Mars gas. +// 2 -- Argon. +// 3 -- Nitrogen. +// nEnergyRecycle: The type of EnergyModel Recycle. +// 0 -- not used . +// 1 -- used. +// nDensityModify: The type of densitymodify. + +// 0 -- not used. +// 1 -- used. // nchem: // 0 -- without chemical reaction flow. // 1 -- the chemical reaction flow is considered. +// nEquilibriumGas: the variable is valid when the condition of nchem=0 is satisfied. +// 0 -- perfect gas. +// 5, 7, 11 -- equilibrium gas, meanwhile, its value denotes the number of gas component. +// nPCWCycleStep: the maximum step number of iteration in the module of computing species mass fractions with the partial catalytic wall(PCW) condition. +// the value equals to or is greater than 1, and 3 is for default value. +// nRETCycleStep: the maximum step number of iteration in the module of computing radiation equilibrium temperature on wall. +// the value equals to or is greater than 1, and 3 is for default value. +// nSLIPCycleStep:the maximum step number of iteration in the module of computing slip temperature, slip velocity and slip species mass fraction. +// the value equals to or is greater than 1, and 3 is for default value. +// nSlipBCModel : The computational model of slip boundary conditions. + +// 0 -- no slip. +// 1 -- the conventional Maxwell slip conditions. +// 2 -- the Gokcen slip conditions. +// 3 -- the Knudsen-layer correction of the standard slip conditions proposed by Lockerby, et al. +// 4 -- the Kogan simplified slip conditions. +// nMeanFreePathType : the method to the mean free-path for the slip conditions. For the mixture, 0 is suggested. +// 0 -- the equivalent mean free-path is calculated by the simple hard sphere model(HS). +// 1 -- calculated by the definition that includes the variables of the number density and the molecule diameter. +// 2 -- the equivalent mean free-path is calculated by the variable hard sphere model(VHS). // nchemsrc: // 0 -- the source terms are not computed. // 1 -- the source terms are computed. @@ -740,15 +860,72 @@ int monitorNegativeConstant = 0; // 1 -- One-temperature model. // 2 -- Two-temperature model. // 3 -- Three-temperature model. +// nTEnergyModel: the method to computing temperature energy model. +// 0 -- the energy term is computed using the conventional method. +// 1 -- the energy term is computed using the curve fitting method. +// parkVDPower: the power of translational-rotational temperature in the Park V-D(vibration-dissociation) coupling model. +// The value is in range of [0.0, 1.0], DPLR suggests 0.5, LAURA suggests 0.7, while 0.6 is given as default value. // catalyticCoef: // 0.0 -- full non-catalytic wall boundary condition. // 1.0 -- full catalytic wall boundary condition. // in range of (0.0, 1.0) -- partial catalytic condition, the value indicates the catalytic coefficient. +// nIsSuperCatalytic : the super catalytic condition for the fully catalytic wall, and assigned with the value of 1. +// 0 -- equilibrium condition for the fully catalytic wall where the mass fractions are assigned with the values of the free stream. +// 1 -- super catalytic condition for the fully catalytic wall where all the atomic components combine into molecular components. +// nTemperatureJump : the method to calculate the temperature jump. +// 0 -- calculated by the variables of heat conductivity and constant volume specific heat for each energy mode. +// 1 -- the general method where the iteration is calculated with the translation-rotation temperature. +// sigmaVelocity: the coordination coefficient of tangential momentum for computation of slip velocity. The value is in range of (0.0, 2.0]. +// sigmaTemperature: the heat coordination coefficient for computation of slip temperature. The value is in range of (0.0, 2.0]. +// sigmaMassFraction: the species coordination coefficient for computation of slip mass fractions. The value is in range of (0.0, 2.0]. +// velocitySlipCorrectConstant: the correction constant to the velocity slip condition. For the diffuse reflection, 1.0 is used. +// 1.0 -- proposed by Maxwell. +// sqrt(2/PI)~0.8 -- used for "micro-slip", namely the actual velocity slip at the wall. +// 1.146 -- proposed for an additional "fictitious" velocity slip. + +// chemicalRelaxCorf: The value is in range of [0.001, 1.0]. +// chemicalSpectrumRadiusCoef: The value is in range of [1.0, 3.0]. +// viscousSpectrumRadiusCoef : The value is in range of [1.0, 3.0]. +// inviscidSpectrumRadiusCoef: The value is in range of [1.0, 3.0]. +// staticPressureRelaxCorf: The value is in range of [0.1, 1.0]. +// nIsChemicalFreeze : the flag to freeze the chemical reactions. +// 0 -- not freeze, the chemical reaction sources will be calculated. +// 1 -- freezes the chemical reactions, the chemical reaction sources will not be calculated.// veTemperatureMin: The minimum of Tv and Te +// nDebug: cout the Wrong place and abort +// 0 -- not used. +// 1 -- used. +// nSpeciesLimit: limitter of gas species +// 0 -- not used. +// 1 -- used. +// nTurblenceForChemical: the coupled mode of Turblence and Chemical reaction +// 0 -- method 0. +// 1 -- method 1. +// nViscosityFluxSublevelModified: Modified for ViscosityFlux on Sublevel grid +// 0 -- not used. +// 1 -- used. +// nChemcalSourceModified: Modified on ChemcalSource +// 0 -- not used. +// 1 -- used. +// nAblation: +// 0 -- The wall ablation is not computed. +// 1 -- The wall ablation is computed. +// isInjection: +// 0 -- The injection velocity of ablation wall is not computed. +// 1 -- The injection velocity of ablation wall is computed. +// nViscosityModel: + +// 0 -- Blottner fitting method. +// 1 -- Gupta fitting method. +// nSutherland: +// 0 -- stands for selecting the Blotter curve fits mode. +// 1 -- stands for Sutherland relation. // gasfile: Indicates the gas model, 9 models are provided, namely "Gu5", "Gu7", "Gu11", "Pa5", "Pa7", "Pa11", "DK5", "DK7", "DK11". // "Gu" -- indicates the Gupta Model, three-Type Models are embeded in the library, namely, the 5-species-6-reactions, the 7-species-9-reactions, the 11-species-20-reactions. // "Pa" -- indicates the Park Model, three-Type Models are embeded in the library, namely, the 5-species-17-reactions, the 7-species-22-reactions, the 11-species-48-reactions. // "DK" -- indicates the Dunn-Kang Model, three-Type Models are embeded in the library, namely, the 5-species-11-reactions, the 7-species-15-reactions, the 11-species-26-reactions. // "Mars-Pa8" is for Park model of Mars gas, "Mars-Mc8" for McKenzie model of Mars gas. +// "Combustion-12" -- indicates the Combustion Chamber Gas Model which includes 12-species-20-reactions. +// "Gas-Mixture" -- indicates the process of mixing two species without reacting. // For self-definition model, the gasfile is used to indicate the file path of the new gas model. // speciesName: Used to list the names of each species, while each species name is separated by the symbol of comma. // initMassFraction: Used to list the initial mass fractions of species in accordance with the sequence of names in the parameter speciesName. @@ -758,6 +935,10 @@ int dg_high_order = 0; int iapplication = 0; int iCodeBranch = 0; int nm = 5; +int nEquilibriumGas = 0; +int nPCWCycleStep = 3; +int nRETCycleStep = 3; +int nSLIPCycleStep= 3; double refGama = 1.4; double prl = 0.72; @@ -770,23 +951,73 @@ int nchem = 0; int nchemsrc = 1; int nchemrad = 1; int ntmodel = 1; -int nChemicalFlowStep = 0; + +int nEnergyRecycle = 0; +int nSlipBCModel = 0; +int nDensityModify = 1; +int nTEnergyModel = 0; +int nMeanFreePathType = 0; +int nIsChemicalFreeze = 0; +int nIsSuperCatalytic = 1; +int nTemperatureJump = 0; + +double parkVDPower = 0.6; double catalyticCoef = 0.0; +double sigmaVelocity = 1.0; +double sigmaTemperature = 1.0; +double sigmaMassFraction = 1.0; +double velocitySlipCorrectConstant = 1.0; + +double chemicalRelaxCorf = 1.0; +double chemicalSpectrumRadiusCoef = 1.0; +double viscousSpectrumRadiusCoef = 1.0; +double inviscidSpectrumRadiusCoef = 1.0; +double staticPressureRelaxCorf = 1.0; + +double veTemperatureMin = 30.0; +int nDebug = 0; +int nSpeciesLimit = 0; +int nTurblenceForChemical = 0; +int nViscosityFluxSublevelModified = 0 ; +int nChemcalSourceModified = 0; + +int nAblation = 0; +int isInjection = 0; +int nViscosityModel = 0; +int nMarsModel = 0; string gasfile = "DK5"; //string gasfile = "./chemical/Dunn-Kang_air5s11r.dat"; string speciesName = "O, O2, NO, N, N2"; -string initMassFraction = "0.0, 0.23, 0.0, 0.0, 0.77"; +string initMassFraction = "0.0, 0.233, 0.0, 0.0, 0.767"; //string speciesName = "O, O2, NO, N, NO+, N2, e-"; -//string initMassFraction = "0.0, 0.23, 0.0, 0.0, 0.0, 0.77, 0.0"; +//string initMassFraction = "0.0, 0.233, 0.0, 0.0, 0.0, 0.767, 0.0"; //string speciesName = "O, O2, NO, N, O+, O2+, NO+, N+, N2+, N2, e-"; -//string initMassFraction = "0.0, 0.23, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.77, 0.0"; +//string initMassFraction = "0.0, 0.233, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.767, 0.0"; //string gasfile = "Mars-Pa8"; //string speciesName = "O, O2, NO, N, N2, C, CO, CO2"; //string initMassFraction = "0.0015, 0.0429, 0.0, 0.0, 0.0, 0.0, 0.0777, 0.8779"; +//string gasfile = "DK7"; +//string speciesName = "O, O2, NO, N, NO+, C, C2, CO, CO2, CN, N2, e-"; +//string initMassFraction = "0.0, 0.233, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.767, 0.0"; + +//string gasfile = "Combustion-12"; +//string speciesName = "O, O2, NO, N, C, CO, CO2, H, H2, OH, H2O, N2"; +//string initMassFraction = "0.0, 0.233, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.767"; + +//string gasfile = "Gas-Mixture"; +//string speciesName ="SpeciesA, SpeciesB"; +//string initMassFraction = "1.0, 0.0"; +int nSutherland = 0; +double gamaSpeciesA = 1.4; +double gamaSpeciesB = 1.3; +double molecularWeightSpeciesA = 29.0; +double molecularWeightSpeciesB = 30.0; + +int nChemicalFlowStep = 0; int ifStartFromPerfectGasResults = 0; ######################################################################### @@ -841,7 +1072,7 @@ string zoneInverseFileName = "./grid/zoneInverseMapping.inp"; ######################################################################### # High Order Struct Solver # ######################################################################### -// ifvfd: +// isFVMOrFDM: // 0 -- NSSolverStruct using Finite Volume Method. // 1 -- NSSolverStruct using Finite Differ Method. // SolverStructOrder: Spatial discretisation order of NS equations with struct grid. @@ -856,7 +1087,7 @@ string zoneInverseFileName = "./grid/zoneInverseMapping.inp"; // -- "roe", "steger". // structhighordergradient: // -- "conservation", "chain_rule". -int ifvfd = 0; +int isFVMOrFDM = 0; string str_highorder_solver = "WCNS"; int SolverStructOrder = 0; double str_highorder_interpolation_epsilon = 1.0e-6; @@ -885,8 +1116,12 @@ int allReduceStep = 1; // codeOfOversetGrid: Overlapping(overset) grid or not. // 0 -- NON-overlapping grid. // 1 -- Overlapping grid. +// oversetInterpolationMethod: the method of overset interpolation while field simulation +// 0 -- set the acceptor cell value by donor cell value. +// 1 -- set the acceptor cell value by distance weight of donor cell value. + int codeOfOversetGrid = 0; -int codeOfOversetSlipGrid = 0; +int oversetInterpolationMethod = 0; int readOversetFileOrNot = 0; int symetryOrNot = 0; int readInAuxiliaryInnerGrid = 1; @@ -895,7 +1130,7 @@ int readInSklFileOrNot = 0; string auxiliaryInnerGrid0 = "./grid/aux-upper.fts"; string auxiliaryInnerGrid1 = "./grid/aux-lower.fts"; string auxiliaryInnerGrid2 = ""; -string oversetGridFileName = "./grid/overlap.ovs"; +string oversetGridFileName = "./grid/iblank.ovs"; double walldistMainZone = 1.0 double toleranceForOversetSearch = 1.0e-3; double toleranceForOversetBox = 1.0e-3; @@ -905,16 +1140,78 @@ int outTecplotOverset = 0; int numberOfMovingBodies = 2; +// ----------------- ALE configuration ------------------------------ +int codeOfAleModel = 1; +int aleStartStrategy = -1; + +int strategyForFaceNormalVelocity = 0; //0-By Sweeping volume; 1-By face center 1st; 2-By face center 2nd; +int strategyForGCLSource = 0; //0-present; 1-Ahn; + +//0:1st-Admas-Bashforth; 1:2nd-Admas-Bashforth; 2:1st-Implicit-Euler; 3:2nd-Implicit Euler; 4:2nd-Adams-Moulton; 5:3rd-Adams-Moulton +int methodForKineticEquation = 0; +double relaxParameterOfKinetic = 1.0; + +######################################################################### +# motive information # +######################################################################### +int numberOfMovingBodies = 1; + +############################## body0 ############################## +//mass of parts +double mass_0 = 1.0; +//mass matrix of parts Ixx Iyy Izz Ixy Ixz Iyz +double massMatrix_0[] = 1e-7, 1e-6, 1e-6, 0.0, 0.0, 0.0; +//initial six DOF position information of parts. xc yc zc +double massCenter_0[] = 0.0 , 0.0, 0.0; +//initial six DOF position information of parts. angleX angleY angleZ +double attitudeAngle_0[] = 0.0 , 0.0, 0.0; +//initial six DOF move information of parts. vc vy vz +double massCenterVelocity_0[] = 0.0, 0.0, 0.0; +//initial six DOF move information of parts. omigX omigY omigZ +double angularVelocity_0[] = 0.0, 0.0, 0.0; +//the object that the parts belong to. +int fartherIndex_0 = -1; +//the assembly position of the parts. xc yc zc angleX angleY angleZ +double configPamameter_0[] = 0.0 ,0.0 ,0.0 ,0.0 ,0.0 ,0.0; +//the move pattern of the parts. +// -1 given motion partten. +// 0 still. +// 1 six DOF motion. +// 2 three DOF motion. +// 11 X-axis forced motion. +// 12 Y-axis forced motion. +// 13 Z-axis forced motion. +// 14 forced pitch motion. +// 15 forced yaw motion. +// 16 forced roll motion. +int RBDMethod_0 = 0; +double amplitude_0 = 0.0; +double reduceFrequency_0 = 0.0; +//string uDFSixDofFileName_0 = "./Bin/UDFSixDof.Parameter"; +//additional force (system axis) fX fY fZ +double addedForce_0[] = 0.0 ,0.0 ,0.0 ; +//additional moment of Force (system axis) mX mY mZ +double addedMoment_0[] = 0.0 ,0.0 ,0.0 ; +//the deformation method of the parts. +int morphing_0 = 0; + +// post indentify +int integralOrder = 4; + + // ---------------- ATP read -------------------------------------------- //@int inflowParaType = 0; -//@double refReNumber = 2.329418E08; -//@double refDimensionalTemperature = 288.144; -//@double refDimensionalPressure = 1.01313E05; -//@double height = -0.001; +//@double refReNumber = 6.5e6; +//@double refDimensionalTemperature = 288.15; +//@double freestream_vibration_temperature = 300.00; +//@double refDimensionalPressure = 0; +//@double height = 0; //@int nsubsonicInlet = 0; //@int nsubsonicOutlet = 0; //@string inLetFileName = "./bin/subsonicInlet.hypara"; //@string outLetFileName = "./bin/subsonicOutlet.hypara"; +//@double refDimensionalVelocity = 0; +//@double refDimensionalDensity = 0; ######################################################################### # Old Parameter # diff --git a/A11_ThreeD_Sphere_Laminar_Ma10_Struct/bin/cfd_para_hypersonic.hypara b/A11_ThreeD_Sphere_Laminar_Ma10_Struct/bin/cfd_para_hypersonic.hypara index 6f0b9c4..dfee8de 100644 --- a/A11_ThreeD_Sphere_Laminar_Ma10_Struct/bin/cfd_para_hypersonic.hypara +++ b/A11_ThreeD_Sphere_Laminar_Ma10_Struct/bin/cfd_para_hypersonic.hypara @@ -60,9 +60,9 @@ double refDimensionalTemperature = 79.0; double gridScaleFactor = 1.0; -double forceRefenenceLengthSpanWise = 1.0; // unit of meter. -double forceRefenenceLength = 1.0; // unit of meter. -double forceRefenenceArea = 1.0; // unit of meter^2. +double forceReferenceLengthSpanWise = 1.0; // unit of meter. +double forceReferenceLength = 1.0; // unit of meter. +double forceReferenceArea = 1.0; // unit of meter^2. double TorqueRefX = 0.0; // unit of meter. double TorqueRefY = 0.0; // unit of meter. double TorqueRefZ = 0.0; // unit of meter. diff --git a/A12_ThreeD_DoubleEllipse_Laminar_Struct_4CPU/bin/cfd_para.hypara b/A12_ThreeD_DoubleEllipse_Laminar_Struct_4CPU/bin/cfd_para.hypara index df090b7..b17970c 100644 --- a/A12_ThreeD_DoubleEllipse_Laminar_Struct_4CPU/bin/cfd_para.hypara +++ b/A12_ThreeD_DoubleEllipse_Laminar_Struct_4CPU/bin/cfd_para.hypara @@ -21,6 +21,7 @@ // 1 -- Grid conversion, from other grid data to PHenglEI, such as Fluent, CGNS. // 2 -- Grid refinement. // 3 -- Grid merging, merge two blocks into one block. +// 4 -- Grid deformation, achieve unstructured grid deformation. // 5 -- Grid repairing, repair the original grid in order to remove the negative volume cells. // 6 -- Grid mirroring, mirror a symmetry grid to whole grid. // multiblock: Multi-block grid or not, only for structured grid conversion. @@ -72,13 +73,15 @@ int dumpOldGrid = 0; //----------------------------------------------------------------------- // from_gfile: path of original data file for unstructure grid convert from. // out_gfile: path of target file for grid convert to, *.fts type of file usually. +int numberOfGridFile = 1; string from_gfile = "./grid/rae2822_hybrid2d.cas"; +string from_gfile1= ""; + string out_gfile = "./grid/flat_laminr_133_85_2d.fts"; // ----------------- some advanced choices ------------------------------ // iunsteady: The Grid is for unsteady simulation or not. int iunsteady = 0; -int iale = 0; int codeOfAleModel = 0; // fileformat: Ustar Grid file format. @@ -122,15 +125,38 @@ int isDeform = 0; int exclusiveCase = 0; // 0: NON case; 1: JSM-C2-NPOFF case; 2: CHNT. int projectOrgPoint = 0; // if project original wall points. + +// ----------------- Grid Deform Parameters ----------------------------- +// deformationMethod: Grid Deform. +// 1 -- SPRING. +// 2 -- RBF. +// stationalGridFile: Original grid file. +// visualFileName : The visualization file path of deform grid. +// nDeformStep : The max deform step. +// flapAngle : The max flap angle. +// rotatePostionZ : Rotate postion. +// rotatePostionY : Rotate postion. +// gridSlice : If dump slice grid. +// sliceAxis : Grid slice axis. +// slicePosition : Grid slice position. +int nDeformStep = 40; +double flapAngle = 10.0; +double rotatePostionZ = 4.00003; +double rotatePostionY = 3.05; + +int deformationMethod = 2; +string stationalGridFile = "./grid/Segment2Brid.fts"; +string visualFileName = "./results/deformedGrid.dat" + +int gridSlice = 1; +int sliceAxis = 1; +double slicePosition = 13; + // ----------------- RBF Parameters ------------------------------------- -// symmetryPlane: Which symmetry plane is used in the mesh. -// 0 -- without symmetry. -// 1 -- plane of x=0. -// 2 -- plane of y=0. -// 3 -- plane of z=0. -int numberOfReferenceCP = 10; -double influenceRadius = 20; -int symmetryPlane = 3; // 1: plane of x=0; 2: plane of y=0; 3: plane of z=0; +// numberOfReferenceCP : Number of reference Control Points. +// influencePara : The RBF influence radius parameter. +int numberOfReferenceCP = 40; +double influencePara = 25.0; // ----------------- Periodic Parameters -------------------------------- // Notice: Rotational periodicity only support rotation along the X axis! @@ -138,6 +164,11 @@ int symmetryPlane = 3; // 1: plane of x=0; 2: plane of y=0; 3: plane of // 0 -- without Periodic Boundary. // 1 -- Translational periodicity. // 2 -- Rotational periodicity. +// translationLength[]: The relative distance between two periodic face + which only support one direction. +// rotationAngle: The relative angle between two periodic face. + which is recorded in degrees. + int periodicType = 0; double translationLength[] = [0.0,0.0,0.0]; double rotationAngle = 0.0; @@ -180,7 +211,7 @@ string partition_grid_file = "./grid/sphere_mixed__4.fts"; // 0 -- Interface. (default) // 1 -- Physical boundary condition, used in Hybrid solver. // npartmethod: Method of interface reconstruction, default is 1. -// parallelPartMethod: Method of parallel partition, this is set only when execute parallel partition. It would be skipped when serial partition. +// parallelPartitionMethod: Method of parallel partition, this is set only when execute parallel partition. It would be skipped when serial partition. // 1 -- Using ParMetis for homogeneous MPI. // 2 -- Using Metis for homogeneous MPI. // 3 -- using METIS partition for homogeneous OpenMP. @@ -238,6 +269,8 @@ int compressible = 1; // 1 -- the flight conditions. // 2 -- the experiment conditions. // 3 -- the subsonic boundary conditions. +// 4 -- the condition that the velocity, temperature and density are given. +// 5 -- the condition that the velocity, temperature and pressure are given. // refReNumber: Reynolds number, which is based unit length, unit of 1/m. // refDimensionalTemperature: Dimensional reference temperature, or the total temperature only for the experiment condition. // freestream_vibration_temperature: Dimensional freestream vibration temperature. @@ -251,10 +284,12 @@ int compressible = 1; // 1 inch = 0.0254m. // 1 foot = 12 inches = 0.3048m. // 1 yard = 3 feet = 0.9144m. -// forceRefenenceLength, forceRefenenceLengthSpanWise, forceRefenenceArea: Reference length, SpanWise length and area, independent of grid unit. +// forceReferenceLength, forceReferenceLengthSpanWise, forceReferenceArea: Reference length, SpanWise length and area, independent of grid unit. // TorqueRefX, TorqueRefY, TorqueRefZ: Reference point, independent of grid unit. // radiationCoef: The radiation coefficient on wall, it is used to compute the radiation heat flux on wall when the boundary // condition is radiation equilibrium temperature, and 0.8 is the default value. +// refMolecularWeight : the reference molecular weight of gas used for perfect gas. The unit is g/mol. +// Generally, the gas is air. Sometimes, it is experiment gas, such as Nitrogen, Argon, and so on. double refMachNumber = 0.73; double attackd = 2.79; @@ -263,7 +298,7 @@ double angleSlide = 0.00; int inflowParaType = 0; double refReNumber = 6.5e6; double refDimensionalTemperature = 288.15; -double freestream_vibration_temperature = 10000.00; +double freestream_vibration_temperature = 300.00; //int inflowParaType = 1; //double height = 0.001; @@ -280,18 +315,34 @@ double freestream_vibration_temperature = 10000.00; //double refDimensionalTemperature = 288.144; //double refDimensionalPressure = 1.01313E05; +//The velocity, temperature and density are fixed. +//int inflowParaType = 4; +//double refDimensionalVelocity = 1000.0; +//double refDimensionalDensity = 1.0e3; + +//The velocity, temperature and pressure are fixed. +//int inflowParaType = 5; +//double refDimensionalVelocity = 1000.0; +//double refDimensionalPressure = 1.0e5; + +//The MachNumber, temperature and pressure are fixed. +//int inflowParaType = 6; +//double refDimensionalTemperature = 293; +//double refDimensionalPressure = 8886.06; + double wallTemperature = -1.0; double radiationCoef = 0.8; double gridScaleFactor = 1.0; int numberOfAerodynamicForceComponents = 1; -double forceRefenenceLengthSpanWise = 1.0; // unit of meter. -double forceRefenenceLength = 1.0; // unit of meter. -double forceRefenenceArea = 1.0; // unit of meter^2. +double forceReferenceLengthSpanWise = 1.0; // unit of meter. +double forceReferenceLength = 1.0; // unit of meter. +double forceReferenceArea = 1.0; // unit of meter^2. double TorqueRefX = 0.0; // unit of meter. double TorqueRefY = 0.0; // unit of meter. double TorqueRefZ = 0.0; // unit of meter. +double refMolecularWeight = 28.9644; // unit of g/mol. //----------------------------------------------------------------------- # Spatial Discretisation # @@ -303,7 +354,7 @@ double TorqueRefZ = 0.0; // unit of meter. // Using this when solve structered grid or hybrid. // -- "vanleer", "steger", "hlle", "lax_f". // -- "roe", "modified_roe". -// -- "ausm+", "ausm+w", "ausm+up", "ausmdv", "ausmpw". +// -- "ausm+", "ausm+w", "ausm+up", "ausmdv", "ausmpw", "ausmpw+". // str_limiter_name: Limiter of struct grid. // -- "vanalbada", "vanleer", "minmod", "smooth", "minvan", "3rdsmooth", "3rd_minmod_smooth". // -- "nolim", no limiter. @@ -339,14 +390,14 @@ string str_limiter_name = "vanalbada"; // uns_scheme_name: Spatial discretisation scheme of Unstruct grid. // Using this when solve Unstructered grid or hybrid. // -- "vanleer", "roe", "steger", "kfvs", "lax_f", "hlle". -// -- "ausm+", "ausmdv", "ausm+w", "ausmpw", "ausmpwplus". +// -- "ausm+", "ausmdv", "ausm+w", "ausmpw", "ausmpw+". // uns_limiter_name: Limiter of Unstruct grid. // -- "barth", "vencat", "vanleer", "minmod". // -- "vanalbada", "smooth", "nnd", "lpz", "1st". // -- "nolim", no limiter. // uns_vis_name: Discretisation method of viscous term. // -- "std", "test", "aver", "new1", "new2". -// uns_gradient: Gradient reconstruction method. +// gradientName: Gradient reconstruction method. // -- "default", "ggcell", "ggnode", "lsq". // ivencat: Variation of vencat limiter. // 0 -- org method, it is independent of grid scale. @@ -408,9 +459,15 @@ double roeEntropyScale = 1.0; // 1 -- unsteay. // physicalTimeStep: The nondimensional physical time step. // ifStartFromSteadyResults: The unsteady simulation is start from steady flowfield or not, 0 is for no and else is for yes. -// ifStaticsFlowField: Statistical variables for DES simulation. +// ifStaticsFlowField: Statistical variables for unsteady simulation. +// ifStaticsReynoldsStress: Statistical Reynolds stress for unsteady simulation. // startStatisticStep: Outer step when start statistics. // when the value is larger than "maxSimuStep", it is useless. +// statisticalTimePeriod: Used as time period of statistic analysis. +// when the value is negative, time period is treated as infinite. +// statisticMethod: Statistic reynolds stress method. + 0 --tau = - ^2 + 1 --tau = // min_sub_iter: The min sub iteration of unsteady simulation. // max_sub_iter: The max sub iteration of unsteady simulation. // tol_sub_iter: The tolerance of sub iteration of unsteady simulation. @@ -454,7 +511,10 @@ int iunsteady = 0; double physicalTimeStep = 0.01; int ifStartFromSteadyResults = 0; int ifStaticsFlowField = 0; +int ifStaticsReynoldsStress = 0; int startStatisticStep = 800000; +double statisticalTimePeriod = -1.0; +int statisticMethod = 0; int linearTwoStepMethods = 1; // 1--BDF1; 2--C-N; 3--BDF2; int methodOfDualTime = 3; @@ -482,8 +542,6 @@ double turbCFLScale = 1.0; double csrv = 2.0; double timemax = 1.0e10; double dtsave = -1.0; -int codeOfAleModel = 0; -int aleStartStrategy = -1; int maxale = 10; double dtau = 0.001; @@ -524,6 +582,7 @@ double lamda[] = 0.5, 1.0; int numberOfGridGroups = 1; string gridfile = "./grid/rae2822_hybrid2d__4.fts"; +string wallTemperaturefile= ""; int walldistMethod = 1; @@ -536,15 +595,16 @@ string turbfile = "results/turb.dat"; string visualfile = "results/tecflow.plt"; string wall_aircoefile = "results/wall_aircoef.dat"; -string probesflowfile = "results/sample.dat"; +string samplefile = "results/sample.dat"; int nDumpSurfaceInfo = 0; string wall_varfile = ""; string jetDefineFile = "bin/jet.hypara"; -string overset_gridfile = "results/iblank.ovs"; string sixDofFileName = "results/sixDofInfo.dat"; +string derivativeFileName = "results/identify.dat"; +string hysteresisFileName = "results/force_beta.plt"; int plotFieldType = 0; @@ -554,6 +614,11 @@ int plotFieldType = 0; int visualfileType = 1; +// samplefileMode: The dump mode of sample file. +// 0 -- dump out every probe/line/surface data for all step intervals. +// 1 -- dump out all probe/line/surface data for every step intervals. +int samplefileMode = 0; + // visualSlice: The slice of tecflow. // 0 -- Do not save slice data. // 1 -- comput and save it to sliceFile. @@ -567,11 +632,13 @@ int visualSlice = 0; int sliceAxis = 1; double slicePostion = -0.5; string sliceFile = "results/Slice.plt"; +int dumpWallFaceCenter = 0; // min-max box of the visual block. double lowerPlotFieldBox[] = [0.0 0.0 0.0]; double upperPlotFieldBox[] = [1.0 1.0 1.0]; +//-----------the optional parameters list for the flow field output---------------- // nVisualVariables: Number of variables want to be dumped for tecplot visualization. // visualVariables : Variable types dumped, listed as following: // -- density(0), u(1), v(2), w(3), pressure(4), temperature(5), mach(6), @@ -582,11 +649,27 @@ double upperPlotFieldBox[] = [1.0 1.0 1.0]; // -- vibration temperature(Tv, 33), electron temperature(Te, 34), vibrational energy(Ev, 35), electric energy(Ee, 36), // -- number density of electron(Ne, 37), dimensioanl density(rho, 38), dimensioanl pressure(p, 39), dimensioanl temperature(T, 40), // -- gradientUx(41), gradientUy(42), gradientVx(43), gradientVy(44), iblank(81). +// -- specific heat ratio(gama, 56) // Important Warning: Array size of visualVariables MUST be equal to nVisualVariables!!! // Variables order must from small to big. +//-----------the optional parameters list for the wall boundary condition---------------- +// nVisualWallVariables: The number of visual variables on wall. +// visualWallVariables : dumped variable types, listed as following: +// -coefficient of pressure(cp, 0), -coefficient of friction(cf, 1), yplus(2), -non-dimensional heat flux(Q_NonDim, 3), -dimensional heat flux(Q_Dim, 4), +// -pressure on wall(pw, 5), -temperature on wall(Tw, 6), -density on wall(rhow, 7), -heat flux of translational-rotational temperature term(Qtr, 8), +// -heat flux of species diffusion term(Qs, 9), -heat flux of vibrational temperature term(Qv, 10), -heat flux of electron temperature term(Qe, 11), +// -species mass fractions(Ns, 12), -x component of wall velocity(Vx, 13), -y component of wall velocity(Vy, 14), -z component of wall velocity(Vz, 15) +// -slip translational-rotational temperature(Tts, 16), -slip vibrational temperature(Tvs, 17), -slip electron temperature(Tes, 18), -absolute wall velocity(Vs, 19) +// -Stanton number(St, 20), -coefficient of heat rate(Ch, 21), -temperature jump(deltaT, 22), -transition gamaeff(gamaeff, 48), +// -transition intermittency(intermittency, 51), -transition momentum thickness reynolds(MomentumThicknessReynolds, 52), +// -overlap iblank(iblank, 81) + int nVisualVariables = 8; int visualVariables[] = [0, 1, 2, 3, 4, 5, 6, 15]; +int nVisualWallVariables = 9; +int visualWallVariables[] = [0, 1, 2, 3, 4, 5, 9, 10, 11]; + // dumpStandardModel: Dump many standard model data. // 1 -- Turbulent flat plate. int dumpStandardModel = 0; @@ -644,6 +727,7 @@ int probeVariablesInterpolationMethod = 0; // mod_turb_res: If modify the residuals for the cells next to the wall or not, default is 0. int turbInterval = 1; +int turbOrderStruct = 2; int kindOfTurbSource = 0; int mod_turb_res = 0; double turb_relax = 1.0; @@ -652,6 +736,10 @@ double muoo = 3.0; double kwoo = 5.0; int transitionType = 0; double turbIntensity = -1.0; +int freeturbIntensitySRModify = 0; +double freeDecayXLocation = 0.0; +int compressibleCorrection = 0; +int transitionMaFix = 1; # maximum eddy viscosity (myt/my) max. double eddyViscosityLimit = 1.0e10; @@ -661,8 +749,8 @@ int monitor_vistmax = 0; # LES Parameter # //----------------------------------------------------------------------- // iLES: Create LESSolver or not. -// >= 1 - Create LESSolver; -// < 1 - not. +// == 1 - Create LESSolver; +// != 1 - not. // amplitudeofDisturb: Amplitude of adding disturb. // disturbstep: Unsteady time step or steady iteration of adding random disturb. // iterdisturb: Add random disturb in every sub-iter or only first sub-iter. @@ -676,8 +764,9 @@ int monitor_vistmax = 0; // utau: friction velocity, using in DNSDisturb. // sgsmodel: subgrid scale model. // = "smagorinsky"; -// = "dsm"; -// = "wale". +// = "dsmCom"; +// = "wale"; +// = "sigma". // deltaFunctionType: = 1 - MAX(deltai, deltaj, deltak); // = 2 - pow(deltai * deltaj *deltak, 1/3); // = 3 - Devloped by Scotti. @@ -700,9 +789,10 @@ string sgsmodel = "smagorinsky"; int deltaFunctionType = 2; int wallDampingFunctionType = 1; int turbViscousCutType = 2; -double smagConstant = 0.135; +double smagConstant = 0.1; double isotropicConstant = 0.0; double waleConstant = 0.6; +double sigmaConstant = 1.35; int filterDirection[] = [1, 1, 0]; int averageDirection[] = [0, 0, 0]; double testFilterScale = 2.0; @@ -724,12 +814,42 @@ int monitorNegativeConstant = 0; // nm: Equation number of the physics, but is out of commision now. // 4 -- for 2D. // 5 -- for 3D. -// nGasModel: The type of gas. +// nGasModel: The type of gas. less than and equal to 1 represents the mixture gas. +// Otherwise, the pure gas with one component is used for perfect gas. // 0 -- Earth gas. // 1 -- Mars gas. +// 2 -- Argon. +// 3 -- Nitrogen. +// nEnergyRecycle: The type of EnergyModel Recycle. +// 0 -- not used . +// 1 -- used. +// nDensityModify: The type of densitymodify. + +// 0 -- not used. +// 1 -- used. // nchem: // 0 -- without chemical reaction flow. // 1 -- the chemical reaction flow is considered. +// nEquilibriumGas: the variable is valid when the condition of nchem=0 is satisfied. +// 0 -- perfect gas. +// 5, 7, 11 -- equilibrium gas, meanwhile, its value denotes the number of gas component. +// nPCWCycleStep: the maximum step number of iteration in the module of computing species mass fractions with the partial catalytic wall(PCW) condition. +// the value equals to or is greater than 1, and 3 is for default value. +// nRETCycleStep: the maximum step number of iteration in the module of computing radiation equilibrium temperature on wall. +// the value equals to or is greater than 1, and 3 is for default value. +// nSLIPCycleStep:the maximum step number of iteration in the module of computing slip temperature, slip velocity and slip species mass fraction. +// the value equals to or is greater than 1, and 3 is for default value. +// nSlipBCModel : The computational model of slip boundary conditions. + +// 0 -- no slip. +// 1 -- the conventional Maxwell slip conditions. +// 2 -- the Gokcen slip conditions. +// 3 -- the Knudsen-layer correction of the standard slip conditions proposed by Lockerby, et al. +// 4 -- the Kogan simplified slip conditions. +// nMeanFreePathType : the method to the mean free-path for the slip conditions. For the mixture, 0 is suggested. +// 0 -- the equivalent mean free-path is calculated by the simple hard sphere model(HS). +// 1 -- calculated by the definition that includes the variables of the number density and the molecule diameter. +// 2 -- the equivalent mean free-path is calculated by the variable hard sphere model(VHS). // nchemsrc: // 0 -- the source terms are not computed. // 1 -- the source terms are computed. @@ -740,15 +860,72 @@ int monitorNegativeConstant = 0; // 1 -- One-temperature model. // 2 -- Two-temperature model. // 3 -- Three-temperature model. +// nTEnergyModel: the method to computing temperature energy model. +// 0 -- the energy term is computed using the conventional method. +// 1 -- the energy term is computed using the curve fitting method. +// parkVDPower: the power of translational-rotational temperature in the Park V-D(vibration-dissociation) coupling model. +// The value is in range of [0.0, 1.0], DPLR suggests 0.5, LAURA suggests 0.7, while 0.6 is given as default value. // catalyticCoef: // 0.0 -- full non-catalytic wall boundary condition. // 1.0 -- full catalytic wall boundary condition. // in range of (0.0, 1.0) -- partial catalytic condition, the value indicates the catalytic coefficient. +// nIsSuperCatalytic : the super catalytic condition for the fully catalytic wall, and assigned with the value of 1. +// 0 -- equilibrium condition for the fully catalytic wall where the mass fractions are assigned with the values of the free stream. +// 1 -- super catalytic condition for the fully catalytic wall where all the atomic components combine into molecular components. +// nTemperatureJump : the method to calculate the temperature jump. +// 0 -- calculated by the variables of heat conductivity and constant volume specific heat for each energy mode. +// 1 -- the general method where the iteration is calculated with the translation-rotation temperature. +// sigmaVelocity: the coordination coefficient of tangential momentum for computation of slip velocity. The value is in range of (0.0, 2.0]. +// sigmaTemperature: the heat coordination coefficient for computation of slip temperature. The value is in range of (0.0, 2.0]. +// sigmaMassFraction: the species coordination coefficient for computation of slip mass fractions. The value is in range of (0.0, 2.0]. +// velocitySlipCorrectConstant: the correction constant to the velocity slip condition. For the diffuse reflection, 1.0 is used. +// 1.0 -- proposed by Maxwell. +// sqrt(2/PI)~0.8 -- used for "micro-slip", namely the actual velocity slip at the wall. +// 1.146 -- proposed for an additional "fictitious" velocity slip. + +// chemicalRelaxCorf: The value is in range of [0.001, 1.0]. +// chemicalSpectrumRadiusCoef: The value is in range of [1.0, 3.0]. +// viscousSpectrumRadiusCoef : The value is in range of [1.0, 3.0]. +// inviscidSpectrumRadiusCoef: The value is in range of [1.0, 3.0]. +// staticPressureRelaxCorf: The value is in range of [0.1, 1.0]. +// nIsChemicalFreeze : the flag to freeze the chemical reactions. +// 0 -- not freeze, the chemical reaction sources will be calculated. +// 1 -- freezes the chemical reactions, the chemical reaction sources will not be calculated.// veTemperatureMin: The minimum of Tv and Te +// nDebug: cout the Wrong place and abort +// 0 -- not used. +// 1 -- used. +// nSpeciesLimit: limitter of gas species +// 0 -- not used. +// 1 -- used. +// nTurblenceForChemical: the coupled mode of Turblence and Chemical reaction +// 0 -- method 0. +// 1 -- method 1. +// nViscosityFluxSublevelModified: Modified for ViscosityFlux on Sublevel grid +// 0 -- not used. +// 1 -- used. +// nChemcalSourceModified: Modified on ChemcalSource +// 0 -- not used. +// 1 -- used. +// nAblation: +// 0 -- The wall ablation is not computed. +// 1 -- The wall ablation is computed. +// isInjection: +// 0 -- The injection velocity of ablation wall is not computed. +// 1 -- The injection velocity of ablation wall is computed. +// nViscosityModel: + +// 0 -- Blottner fitting method. +// 1 -- Gupta fitting method. +// nSutherland: +// 0 -- stands for selecting the Blotter curve fits mode. +// 1 -- stands for Sutherland relation. // gasfile: Indicates the gas model, 9 models are provided, namely "Gu5", "Gu7", "Gu11", "Pa5", "Pa7", "Pa11", "DK5", "DK7", "DK11". // "Gu" -- indicates the Gupta Model, three-Type Models are embeded in the library, namely, the 5-species-6-reactions, the 7-species-9-reactions, the 11-species-20-reactions. // "Pa" -- indicates the Park Model, three-Type Models are embeded in the library, namely, the 5-species-17-reactions, the 7-species-22-reactions, the 11-species-48-reactions. // "DK" -- indicates the Dunn-Kang Model, three-Type Models are embeded in the library, namely, the 5-species-11-reactions, the 7-species-15-reactions, the 11-species-26-reactions. // "Mars-Pa8" is for Park model of Mars gas, "Mars-Mc8" for McKenzie model of Mars gas. +// "Combustion-12" -- indicates the Combustion Chamber Gas Model which includes 12-species-20-reactions. +// "Gas-Mixture" -- indicates the process of mixing two species without reacting. // For self-definition model, the gasfile is used to indicate the file path of the new gas model. // speciesName: Used to list the names of each species, while each species name is separated by the symbol of comma. // initMassFraction: Used to list the initial mass fractions of species in accordance with the sequence of names in the parameter speciesName. @@ -758,6 +935,10 @@ int dg_high_order = 0; int iapplication = 0; int iCodeBranch = 0; int nm = 5; +int nEquilibriumGas = 0; +int nPCWCycleStep = 3; +int nRETCycleStep = 3; +int nSLIPCycleStep= 3; double refGama = 1.4; double prl = 0.72; @@ -770,23 +951,73 @@ int nchem = 0; int nchemsrc = 1; int nchemrad = 1; int ntmodel = 1; -int nChemicalFlowStep = 0; + +int nEnergyRecycle = 0; +int nSlipBCModel = 0; +int nDensityModify = 1; +int nTEnergyModel = 0; +int nMeanFreePathType = 0; +int nIsChemicalFreeze = 0; +int nIsSuperCatalytic = 1; +int nTemperatureJump = 0; + +double parkVDPower = 0.6; double catalyticCoef = 0.0; +double sigmaVelocity = 1.0; +double sigmaTemperature = 1.0; +double sigmaMassFraction = 1.0; +double velocitySlipCorrectConstant = 1.0; + +double chemicalRelaxCorf = 1.0; +double chemicalSpectrumRadiusCoef = 1.0; +double viscousSpectrumRadiusCoef = 1.0; +double inviscidSpectrumRadiusCoef = 1.0; +double staticPressureRelaxCorf = 1.0; + +double veTemperatureMin = 30.0; +int nDebug = 0; +int nSpeciesLimit = 0; +int nTurblenceForChemical = 0; +int nViscosityFluxSublevelModified = 0 ; +int nChemcalSourceModified = 0; + +int nAblation = 0; +int isInjection = 0; +int nViscosityModel = 0; +int nMarsModel = 0; string gasfile = "DK5"; //string gasfile = "./chemical/Dunn-Kang_air5s11r.dat"; string speciesName = "O, O2, NO, N, N2"; -string initMassFraction = "0.0, 0.23, 0.0, 0.0, 0.77"; +string initMassFraction = "0.0, 0.233, 0.0, 0.0, 0.767"; //string speciesName = "O, O2, NO, N, NO+, N2, e-"; -//string initMassFraction = "0.0, 0.23, 0.0, 0.0, 0.0, 0.77, 0.0"; +//string initMassFraction = "0.0, 0.233, 0.0, 0.0, 0.0, 0.767, 0.0"; //string speciesName = "O, O2, NO, N, O+, O2+, NO+, N+, N2+, N2, e-"; -//string initMassFraction = "0.0, 0.23, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.77, 0.0"; +//string initMassFraction = "0.0, 0.233, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.767, 0.0"; //string gasfile = "Mars-Pa8"; //string speciesName = "O, O2, NO, N, N2, C, CO, CO2"; //string initMassFraction = "0.0015, 0.0429, 0.0, 0.0, 0.0, 0.0, 0.0777, 0.8779"; +//string gasfile = "DK7"; +//string speciesName = "O, O2, NO, N, NO+, C, C2, CO, CO2, CN, N2, e-"; +//string initMassFraction = "0.0, 0.233, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.767, 0.0"; + +//string gasfile = "Combustion-12"; +//string speciesName = "O, O2, NO, N, C, CO, CO2, H, H2, OH, H2O, N2"; +//string initMassFraction = "0.0, 0.233, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.767"; + +//string gasfile = "Gas-Mixture"; +//string speciesName ="SpeciesA, SpeciesB"; +//string initMassFraction = "1.0, 0.0"; +int nSutherland = 0; +double gamaSpeciesA = 1.4; +double gamaSpeciesB = 1.3; +double molecularWeightSpeciesA = 29.0; +double molecularWeightSpeciesB = 30.0; + +int nChemicalFlowStep = 0; int ifStartFromPerfectGasResults = 0; ######################################################################### @@ -841,7 +1072,7 @@ string zoneInverseFileName = "./grid/zoneInverseMapping.inp"; ######################################################################### # High Order Struct Solver # ######################################################################### -// ifvfd: +// isFVMOrFDM: // 0 -- NSSolverStruct using Finite Volume Method. // 1 -- NSSolverStruct using Finite Differ Method. // SolverStructOrder: Spatial discretisation order of NS equations with struct grid. @@ -856,7 +1087,7 @@ string zoneInverseFileName = "./grid/zoneInverseMapping.inp"; // -- "roe", "steger". // structhighordergradient: // -- "conservation", "chain_rule". -int ifvfd = 0; +int isFVMOrFDM = 0; string str_highorder_solver = "WCNS"; int SolverStructOrder = 0; double str_highorder_interpolation_epsilon = 1.0e-6; @@ -885,8 +1116,12 @@ int allReduceStep = 1; // codeOfOversetGrid: Overlapping(overset) grid or not. // 0 -- NON-overlapping grid. // 1 -- Overlapping grid. +// oversetInterpolationMethod: the method of overset interpolation while field simulation +// 0 -- set the acceptor cell value by donor cell value. +// 1 -- set the acceptor cell value by distance weight of donor cell value. + int codeOfOversetGrid = 0; -int codeOfOversetSlipGrid = 0; +int oversetInterpolationMethod = 0; int readOversetFileOrNot = 0; int symetryOrNot = 0; int readInAuxiliaryInnerGrid = 1; @@ -895,7 +1130,7 @@ int readInSklFileOrNot = 0; string auxiliaryInnerGrid0 = "./grid/aux-upper.fts"; string auxiliaryInnerGrid1 = "./grid/aux-lower.fts"; string auxiliaryInnerGrid2 = ""; -string oversetGridFileName = "./grid/overlap.ovs"; +string oversetGridFileName = "./grid/iblank.ovs"; double walldistMainZone = 1.0 double toleranceForOversetSearch = 1.0e-3; double toleranceForOversetBox = 1.0e-3; @@ -905,16 +1140,78 @@ int outTecplotOverset = 0; int numberOfMovingBodies = 2; +// ----------------- ALE configuration ------------------------------ +int codeOfAleModel = 1; +int aleStartStrategy = -1; + +int strategyForFaceNormalVelocity = 0; //0-By Sweeping volume; 1-By face center 1st; 2-By face center 2nd; +int strategyForGCLSource = 0; //0-present; 1-Ahn; + +//0:1st-Admas-Bashforth; 1:2nd-Admas-Bashforth; 2:1st-Implicit-Euler; 3:2nd-Implicit Euler; 4:2nd-Adams-Moulton; 5:3rd-Adams-Moulton +int methodForKineticEquation = 0; +double relaxParameterOfKinetic = 1.0; + +######################################################################### +# motive information # +######################################################################### +int numberOfMovingBodies = 1; + +############################## body0 ############################## +//mass of parts +double mass_0 = 1.0; +//mass matrix of parts Ixx Iyy Izz Ixy Ixz Iyz +double massMatrix_0[] = 1e-7, 1e-6, 1e-6, 0.0, 0.0, 0.0; +//initial six DOF position information of parts. xc yc zc +double massCenter_0[] = 0.0 , 0.0, 0.0; +//initial six DOF position information of parts. angleX angleY angleZ +double attitudeAngle_0[] = 0.0 , 0.0, 0.0; +//initial six DOF move information of parts. vc vy vz +double massCenterVelocity_0[] = 0.0, 0.0, 0.0; +//initial six DOF move information of parts. omigX omigY omigZ +double angularVelocity_0[] = 0.0, 0.0, 0.0; +//the object that the parts belong to. +int fartherIndex_0 = -1; +//the assembly position of the parts. xc yc zc angleX angleY angleZ +double configPamameter_0[] = 0.0 ,0.0 ,0.0 ,0.0 ,0.0 ,0.0; +//the move pattern of the parts. +// -1 given motion partten. +// 0 still. +// 1 six DOF motion. +// 2 three DOF motion. +// 11 X-axis forced motion. +// 12 Y-axis forced motion. +// 13 Z-axis forced motion. +// 14 forced pitch motion. +// 15 forced yaw motion. +// 16 forced roll motion. +int RBDMethod_0 = 0; +double amplitude_0 = 0.0; +double reduceFrequency_0 = 0.0; +//string uDFSixDofFileName_0 = "./Bin/UDFSixDof.Parameter"; +//additional force (system axis) fX fY fZ +double addedForce_0[] = 0.0 ,0.0 ,0.0 ; +//additional moment of Force (system axis) mX mY mZ +double addedMoment_0[] = 0.0 ,0.0 ,0.0 ; +//the deformation method of the parts. +int morphing_0 = 0; + +// post indentify +int integralOrder = 4; + + // ---------------- ATP read -------------------------------------------- //@int inflowParaType = 0; -//@double refReNumber = 2.329418E08; -//@double refDimensionalTemperature = 288.144; -//@double refDimensionalPressure = 1.01313E05; -//@double height = -0.001; +//@double refReNumber = 6.5e6; +//@double refDimensionalTemperature = 288.15; +//@double freestream_vibration_temperature = 300.00; +//@double refDimensionalPressure = 0; +//@double height = 0; //@int nsubsonicInlet = 0; //@int nsubsonicOutlet = 0; //@string inLetFileName = "./bin/subsonicInlet.hypara"; //@string outLetFileName = "./bin/subsonicOutlet.hypara"; +//@double refDimensionalVelocity = 0; +//@double refDimensionalDensity = 0; ######################################################################### # Old Parameter # diff --git a/A12_ThreeD_DoubleEllipse_Laminar_Struct_4CPU/bin/cfd_para_hypersonic.hypara b/A12_ThreeD_DoubleEllipse_Laminar_Struct_4CPU/bin/cfd_para_hypersonic.hypara index 02de2ca..045134a 100644 --- a/A12_ThreeD_DoubleEllipse_Laminar_Struct_4CPU/bin/cfd_para_hypersonic.hypara +++ b/A12_ThreeD_DoubleEllipse_Laminar_Struct_4CPU/bin/cfd_para_hypersonic.hypara @@ -61,9 +61,9 @@ double freestream_vibration_temperature = 10000.0; double gridScaleFactor = 0.01; -double forceRefenenceLengthSpanWise = 1.0; // unit of meter. -double forceRefenenceLength = 1.0; // unit of meter. -double forceRefenenceArea = 1.0; // unit of meter^2. +double forceReferenceLengthSpanWise = 1.0; // unit of meter. +double forceReferenceLength = 1.0; // unit of meter. +double forceReferenceArea = 1.0; // unit of meter^2. double TorqueRefX = 0.0; // unit of meter. double TorqueRefY = 0.0; // unit of meter. double TorqueRefZ = 0.0; // unit of meter. diff --git a/A13_TwoD_BackwardStep_PressureOutlet_SA_Struct_4CPU/bin/cfd_para.hypara b/A13_TwoD_BackwardStep_PressureOutlet_SA_Struct_4CPU/bin/cfd_para.hypara index df090b7..b17970c 100644 --- a/A13_TwoD_BackwardStep_PressureOutlet_SA_Struct_4CPU/bin/cfd_para.hypara +++ b/A13_TwoD_BackwardStep_PressureOutlet_SA_Struct_4CPU/bin/cfd_para.hypara @@ -21,6 +21,7 @@ // 1 -- Grid conversion, from other grid data to PHenglEI, such as Fluent, CGNS. // 2 -- Grid refinement. // 3 -- Grid merging, merge two blocks into one block. +// 4 -- Grid deformation, achieve unstructured grid deformation. // 5 -- Grid repairing, repair the original grid in order to remove the negative volume cells. // 6 -- Grid mirroring, mirror a symmetry grid to whole grid. // multiblock: Multi-block grid or not, only for structured grid conversion. @@ -72,13 +73,15 @@ int dumpOldGrid = 0; //----------------------------------------------------------------------- // from_gfile: path of original data file for unstructure grid convert from. // out_gfile: path of target file for grid convert to, *.fts type of file usually. +int numberOfGridFile = 1; string from_gfile = "./grid/rae2822_hybrid2d.cas"; +string from_gfile1= ""; + string out_gfile = "./grid/flat_laminr_133_85_2d.fts"; // ----------------- some advanced choices ------------------------------ // iunsteady: The Grid is for unsteady simulation or not. int iunsteady = 0; -int iale = 0; int codeOfAleModel = 0; // fileformat: Ustar Grid file format. @@ -122,15 +125,38 @@ int isDeform = 0; int exclusiveCase = 0; // 0: NON case; 1: JSM-C2-NPOFF case; 2: CHNT. int projectOrgPoint = 0; // if project original wall points. + +// ----------------- Grid Deform Parameters ----------------------------- +// deformationMethod: Grid Deform. +// 1 -- SPRING. +// 2 -- RBF. +// stationalGridFile: Original grid file. +// visualFileName : The visualization file path of deform grid. +// nDeformStep : The max deform step. +// flapAngle : The max flap angle. +// rotatePostionZ : Rotate postion. +// rotatePostionY : Rotate postion. +// gridSlice : If dump slice grid. +// sliceAxis : Grid slice axis. +// slicePosition : Grid slice position. +int nDeformStep = 40; +double flapAngle = 10.0; +double rotatePostionZ = 4.00003; +double rotatePostionY = 3.05; + +int deformationMethod = 2; +string stationalGridFile = "./grid/Segment2Brid.fts"; +string visualFileName = "./results/deformedGrid.dat" + +int gridSlice = 1; +int sliceAxis = 1; +double slicePosition = 13; + // ----------------- RBF Parameters ------------------------------------- -// symmetryPlane: Which symmetry plane is used in the mesh. -// 0 -- without symmetry. -// 1 -- plane of x=0. -// 2 -- plane of y=0. -// 3 -- plane of z=0. -int numberOfReferenceCP = 10; -double influenceRadius = 20; -int symmetryPlane = 3; // 1: plane of x=0; 2: plane of y=0; 3: plane of z=0; +// numberOfReferenceCP : Number of reference Control Points. +// influencePara : The RBF influence radius parameter. +int numberOfReferenceCP = 40; +double influencePara = 25.0; // ----------------- Periodic Parameters -------------------------------- // Notice: Rotational periodicity only support rotation along the X axis! @@ -138,6 +164,11 @@ int symmetryPlane = 3; // 1: plane of x=0; 2: plane of y=0; 3: plane of // 0 -- without Periodic Boundary. // 1 -- Translational periodicity. // 2 -- Rotational periodicity. +// translationLength[]: The relative distance between two periodic face + which only support one direction. +// rotationAngle: The relative angle between two periodic face. + which is recorded in degrees. + int periodicType = 0; double translationLength[] = [0.0,0.0,0.0]; double rotationAngle = 0.0; @@ -180,7 +211,7 @@ string partition_grid_file = "./grid/sphere_mixed__4.fts"; // 0 -- Interface. (default) // 1 -- Physical boundary condition, used in Hybrid solver. // npartmethod: Method of interface reconstruction, default is 1. -// parallelPartMethod: Method of parallel partition, this is set only when execute parallel partition. It would be skipped when serial partition. +// parallelPartitionMethod: Method of parallel partition, this is set only when execute parallel partition. It would be skipped when serial partition. // 1 -- Using ParMetis for homogeneous MPI. // 2 -- Using Metis for homogeneous MPI. // 3 -- using METIS partition for homogeneous OpenMP. @@ -238,6 +269,8 @@ int compressible = 1; // 1 -- the flight conditions. // 2 -- the experiment conditions. // 3 -- the subsonic boundary conditions. +// 4 -- the condition that the velocity, temperature and density are given. +// 5 -- the condition that the velocity, temperature and pressure are given. // refReNumber: Reynolds number, which is based unit length, unit of 1/m. // refDimensionalTemperature: Dimensional reference temperature, or the total temperature only for the experiment condition. // freestream_vibration_temperature: Dimensional freestream vibration temperature. @@ -251,10 +284,12 @@ int compressible = 1; // 1 inch = 0.0254m. // 1 foot = 12 inches = 0.3048m. // 1 yard = 3 feet = 0.9144m. -// forceRefenenceLength, forceRefenenceLengthSpanWise, forceRefenenceArea: Reference length, SpanWise length and area, independent of grid unit. +// forceReferenceLength, forceReferenceLengthSpanWise, forceReferenceArea: Reference length, SpanWise length and area, independent of grid unit. // TorqueRefX, TorqueRefY, TorqueRefZ: Reference point, independent of grid unit. // radiationCoef: The radiation coefficient on wall, it is used to compute the radiation heat flux on wall when the boundary // condition is radiation equilibrium temperature, and 0.8 is the default value. +// refMolecularWeight : the reference molecular weight of gas used for perfect gas. The unit is g/mol. +// Generally, the gas is air. Sometimes, it is experiment gas, such as Nitrogen, Argon, and so on. double refMachNumber = 0.73; double attackd = 2.79; @@ -263,7 +298,7 @@ double angleSlide = 0.00; int inflowParaType = 0; double refReNumber = 6.5e6; double refDimensionalTemperature = 288.15; -double freestream_vibration_temperature = 10000.00; +double freestream_vibration_temperature = 300.00; //int inflowParaType = 1; //double height = 0.001; @@ -280,18 +315,34 @@ double freestream_vibration_temperature = 10000.00; //double refDimensionalTemperature = 288.144; //double refDimensionalPressure = 1.01313E05; +//The velocity, temperature and density are fixed. +//int inflowParaType = 4; +//double refDimensionalVelocity = 1000.0; +//double refDimensionalDensity = 1.0e3; + +//The velocity, temperature and pressure are fixed. +//int inflowParaType = 5; +//double refDimensionalVelocity = 1000.0; +//double refDimensionalPressure = 1.0e5; + +//The MachNumber, temperature and pressure are fixed. +//int inflowParaType = 6; +//double refDimensionalTemperature = 293; +//double refDimensionalPressure = 8886.06; + double wallTemperature = -1.0; double radiationCoef = 0.8; double gridScaleFactor = 1.0; int numberOfAerodynamicForceComponents = 1; -double forceRefenenceLengthSpanWise = 1.0; // unit of meter. -double forceRefenenceLength = 1.0; // unit of meter. -double forceRefenenceArea = 1.0; // unit of meter^2. +double forceReferenceLengthSpanWise = 1.0; // unit of meter. +double forceReferenceLength = 1.0; // unit of meter. +double forceReferenceArea = 1.0; // unit of meter^2. double TorqueRefX = 0.0; // unit of meter. double TorqueRefY = 0.0; // unit of meter. double TorqueRefZ = 0.0; // unit of meter. +double refMolecularWeight = 28.9644; // unit of g/mol. //----------------------------------------------------------------------- # Spatial Discretisation # @@ -303,7 +354,7 @@ double TorqueRefZ = 0.0; // unit of meter. // Using this when solve structered grid or hybrid. // -- "vanleer", "steger", "hlle", "lax_f". // -- "roe", "modified_roe". -// -- "ausm+", "ausm+w", "ausm+up", "ausmdv", "ausmpw". +// -- "ausm+", "ausm+w", "ausm+up", "ausmdv", "ausmpw", "ausmpw+". // str_limiter_name: Limiter of struct grid. // -- "vanalbada", "vanleer", "minmod", "smooth", "minvan", "3rdsmooth", "3rd_minmod_smooth". // -- "nolim", no limiter. @@ -339,14 +390,14 @@ string str_limiter_name = "vanalbada"; // uns_scheme_name: Spatial discretisation scheme of Unstruct grid. // Using this when solve Unstructered grid or hybrid. // -- "vanleer", "roe", "steger", "kfvs", "lax_f", "hlle". -// -- "ausm+", "ausmdv", "ausm+w", "ausmpw", "ausmpwplus". +// -- "ausm+", "ausmdv", "ausm+w", "ausmpw", "ausmpw+". // uns_limiter_name: Limiter of Unstruct grid. // -- "barth", "vencat", "vanleer", "minmod". // -- "vanalbada", "smooth", "nnd", "lpz", "1st". // -- "nolim", no limiter. // uns_vis_name: Discretisation method of viscous term. // -- "std", "test", "aver", "new1", "new2". -// uns_gradient: Gradient reconstruction method. +// gradientName: Gradient reconstruction method. // -- "default", "ggcell", "ggnode", "lsq". // ivencat: Variation of vencat limiter. // 0 -- org method, it is independent of grid scale. @@ -408,9 +459,15 @@ double roeEntropyScale = 1.0; // 1 -- unsteay. // physicalTimeStep: The nondimensional physical time step. // ifStartFromSteadyResults: The unsteady simulation is start from steady flowfield or not, 0 is for no and else is for yes. -// ifStaticsFlowField: Statistical variables for DES simulation. +// ifStaticsFlowField: Statistical variables for unsteady simulation. +// ifStaticsReynoldsStress: Statistical Reynolds stress for unsteady simulation. // startStatisticStep: Outer step when start statistics. // when the value is larger than "maxSimuStep", it is useless. +// statisticalTimePeriod: Used as time period of statistic analysis. +// when the value is negative, time period is treated as infinite. +// statisticMethod: Statistic reynolds stress method. + 0 --tau = - ^2 + 1 --tau = // min_sub_iter: The min sub iteration of unsteady simulation. // max_sub_iter: The max sub iteration of unsteady simulation. // tol_sub_iter: The tolerance of sub iteration of unsteady simulation. @@ -454,7 +511,10 @@ int iunsteady = 0; double physicalTimeStep = 0.01; int ifStartFromSteadyResults = 0; int ifStaticsFlowField = 0; +int ifStaticsReynoldsStress = 0; int startStatisticStep = 800000; +double statisticalTimePeriod = -1.0; +int statisticMethod = 0; int linearTwoStepMethods = 1; // 1--BDF1; 2--C-N; 3--BDF2; int methodOfDualTime = 3; @@ -482,8 +542,6 @@ double turbCFLScale = 1.0; double csrv = 2.0; double timemax = 1.0e10; double dtsave = -1.0; -int codeOfAleModel = 0; -int aleStartStrategy = -1; int maxale = 10; double dtau = 0.001; @@ -524,6 +582,7 @@ double lamda[] = 0.5, 1.0; int numberOfGridGroups = 1; string gridfile = "./grid/rae2822_hybrid2d__4.fts"; +string wallTemperaturefile= ""; int walldistMethod = 1; @@ -536,15 +595,16 @@ string turbfile = "results/turb.dat"; string visualfile = "results/tecflow.plt"; string wall_aircoefile = "results/wall_aircoef.dat"; -string probesflowfile = "results/sample.dat"; +string samplefile = "results/sample.dat"; int nDumpSurfaceInfo = 0; string wall_varfile = ""; string jetDefineFile = "bin/jet.hypara"; -string overset_gridfile = "results/iblank.ovs"; string sixDofFileName = "results/sixDofInfo.dat"; +string derivativeFileName = "results/identify.dat"; +string hysteresisFileName = "results/force_beta.plt"; int plotFieldType = 0; @@ -554,6 +614,11 @@ int plotFieldType = 0; int visualfileType = 1; +// samplefileMode: The dump mode of sample file. +// 0 -- dump out every probe/line/surface data for all step intervals. +// 1 -- dump out all probe/line/surface data for every step intervals. +int samplefileMode = 0; + // visualSlice: The slice of tecflow. // 0 -- Do not save slice data. // 1 -- comput and save it to sliceFile. @@ -567,11 +632,13 @@ int visualSlice = 0; int sliceAxis = 1; double slicePostion = -0.5; string sliceFile = "results/Slice.plt"; +int dumpWallFaceCenter = 0; // min-max box of the visual block. double lowerPlotFieldBox[] = [0.0 0.0 0.0]; double upperPlotFieldBox[] = [1.0 1.0 1.0]; +//-----------the optional parameters list for the flow field output---------------- // nVisualVariables: Number of variables want to be dumped for tecplot visualization. // visualVariables : Variable types dumped, listed as following: // -- density(0), u(1), v(2), w(3), pressure(4), temperature(5), mach(6), @@ -582,11 +649,27 @@ double upperPlotFieldBox[] = [1.0 1.0 1.0]; // -- vibration temperature(Tv, 33), electron temperature(Te, 34), vibrational energy(Ev, 35), electric energy(Ee, 36), // -- number density of electron(Ne, 37), dimensioanl density(rho, 38), dimensioanl pressure(p, 39), dimensioanl temperature(T, 40), // -- gradientUx(41), gradientUy(42), gradientVx(43), gradientVy(44), iblank(81). +// -- specific heat ratio(gama, 56) // Important Warning: Array size of visualVariables MUST be equal to nVisualVariables!!! // Variables order must from small to big. +//-----------the optional parameters list for the wall boundary condition---------------- +// nVisualWallVariables: The number of visual variables on wall. +// visualWallVariables : dumped variable types, listed as following: +// -coefficient of pressure(cp, 0), -coefficient of friction(cf, 1), yplus(2), -non-dimensional heat flux(Q_NonDim, 3), -dimensional heat flux(Q_Dim, 4), +// -pressure on wall(pw, 5), -temperature on wall(Tw, 6), -density on wall(rhow, 7), -heat flux of translational-rotational temperature term(Qtr, 8), +// -heat flux of species diffusion term(Qs, 9), -heat flux of vibrational temperature term(Qv, 10), -heat flux of electron temperature term(Qe, 11), +// -species mass fractions(Ns, 12), -x component of wall velocity(Vx, 13), -y component of wall velocity(Vy, 14), -z component of wall velocity(Vz, 15) +// -slip translational-rotational temperature(Tts, 16), -slip vibrational temperature(Tvs, 17), -slip electron temperature(Tes, 18), -absolute wall velocity(Vs, 19) +// -Stanton number(St, 20), -coefficient of heat rate(Ch, 21), -temperature jump(deltaT, 22), -transition gamaeff(gamaeff, 48), +// -transition intermittency(intermittency, 51), -transition momentum thickness reynolds(MomentumThicknessReynolds, 52), +// -overlap iblank(iblank, 81) + int nVisualVariables = 8; int visualVariables[] = [0, 1, 2, 3, 4, 5, 6, 15]; +int nVisualWallVariables = 9; +int visualWallVariables[] = [0, 1, 2, 3, 4, 5, 9, 10, 11]; + // dumpStandardModel: Dump many standard model data. // 1 -- Turbulent flat plate. int dumpStandardModel = 0; @@ -644,6 +727,7 @@ int probeVariablesInterpolationMethod = 0; // mod_turb_res: If modify the residuals for the cells next to the wall or not, default is 0. int turbInterval = 1; +int turbOrderStruct = 2; int kindOfTurbSource = 0; int mod_turb_res = 0; double turb_relax = 1.0; @@ -652,6 +736,10 @@ double muoo = 3.0; double kwoo = 5.0; int transitionType = 0; double turbIntensity = -1.0; +int freeturbIntensitySRModify = 0; +double freeDecayXLocation = 0.0; +int compressibleCorrection = 0; +int transitionMaFix = 1; # maximum eddy viscosity (myt/my) max. double eddyViscosityLimit = 1.0e10; @@ -661,8 +749,8 @@ int monitor_vistmax = 0; # LES Parameter # //----------------------------------------------------------------------- // iLES: Create LESSolver or not. -// >= 1 - Create LESSolver; -// < 1 - not. +// == 1 - Create LESSolver; +// != 1 - not. // amplitudeofDisturb: Amplitude of adding disturb. // disturbstep: Unsteady time step or steady iteration of adding random disturb. // iterdisturb: Add random disturb in every sub-iter or only first sub-iter. @@ -676,8 +764,9 @@ int monitor_vistmax = 0; // utau: friction velocity, using in DNSDisturb. // sgsmodel: subgrid scale model. // = "smagorinsky"; -// = "dsm"; -// = "wale". +// = "dsmCom"; +// = "wale"; +// = "sigma". // deltaFunctionType: = 1 - MAX(deltai, deltaj, deltak); // = 2 - pow(deltai * deltaj *deltak, 1/3); // = 3 - Devloped by Scotti. @@ -700,9 +789,10 @@ string sgsmodel = "smagorinsky"; int deltaFunctionType = 2; int wallDampingFunctionType = 1; int turbViscousCutType = 2; -double smagConstant = 0.135; +double smagConstant = 0.1; double isotropicConstant = 0.0; double waleConstant = 0.6; +double sigmaConstant = 1.35; int filterDirection[] = [1, 1, 0]; int averageDirection[] = [0, 0, 0]; double testFilterScale = 2.0; @@ -724,12 +814,42 @@ int monitorNegativeConstant = 0; // nm: Equation number of the physics, but is out of commision now. // 4 -- for 2D. // 5 -- for 3D. -// nGasModel: The type of gas. +// nGasModel: The type of gas. less than and equal to 1 represents the mixture gas. +// Otherwise, the pure gas with one component is used for perfect gas. // 0 -- Earth gas. // 1 -- Mars gas. +// 2 -- Argon. +// 3 -- Nitrogen. +// nEnergyRecycle: The type of EnergyModel Recycle. +// 0 -- not used . +// 1 -- used. +// nDensityModify: The type of densitymodify. + +// 0 -- not used. +// 1 -- used. // nchem: // 0 -- without chemical reaction flow. // 1 -- the chemical reaction flow is considered. +// nEquilibriumGas: the variable is valid when the condition of nchem=0 is satisfied. +// 0 -- perfect gas. +// 5, 7, 11 -- equilibrium gas, meanwhile, its value denotes the number of gas component. +// nPCWCycleStep: the maximum step number of iteration in the module of computing species mass fractions with the partial catalytic wall(PCW) condition. +// the value equals to or is greater than 1, and 3 is for default value. +// nRETCycleStep: the maximum step number of iteration in the module of computing radiation equilibrium temperature on wall. +// the value equals to or is greater than 1, and 3 is for default value. +// nSLIPCycleStep:the maximum step number of iteration in the module of computing slip temperature, slip velocity and slip species mass fraction. +// the value equals to or is greater than 1, and 3 is for default value. +// nSlipBCModel : The computational model of slip boundary conditions. + +// 0 -- no slip. +// 1 -- the conventional Maxwell slip conditions. +// 2 -- the Gokcen slip conditions. +// 3 -- the Knudsen-layer correction of the standard slip conditions proposed by Lockerby, et al. +// 4 -- the Kogan simplified slip conditions. +// nMeanFreePathType : the method to the mean free-path for the slip conditions. For the mixture, 0 is suggested. +// 0 -- the equivalent mean free-path is calculated by the simple hard sphere model(HS). +// 1 -- calculated by the definition that includes the variables of the number density and the molecule diameter. +// 2 -- the equivalent mean free-path is calculated by the variable hard sphere model(VHS). // nchemsrc: // 0 -- the source terms are not computed. // 1 -- the source terms are computed. @@ -740,15 +860,72 @@ int monitorNegativeConstant = 0; // 1 -- One-temperature model. // 2 -- Two-temperature model. // 3 -- Three-temperature model. +// nTEnergyModel: the method to computing temperature energy model. +// 0 -- the energy term is computed using the conventional method. +// 1 -- the energy term is computed using the curve fitting method. +// parkVDPower: the power of translational-rotational temperature in the Park V-D(vibration-dissociation) coupling model. +// The value is in range of [0.0, 1.0], DPLR suggests 0.5, LAURA suggests 0.7, while 0.6 is given as default value. // catalyticCoef: // 0.0 -- full non-catalytic wall boundary condition. // 1.0 -- full catalytic wall boundary condition. // in range of (0.0, 1.0) -- partial catalytic condition, the value indicates the catalytic coefficient. +// nIsSuperCatalytic : the super catalytic condition for the fully catalytic wall, and assigned with the value of 1. +// 0 -- equilibrium condition for the fully catalytic wall where the mass fractions are assigned with the values of the free stream. +// 1 -- super catalytic condition for the fully catalytic wall where all the atomic components combine into molecular components. +// nTemperatureJump : the method to calculate the temperature jump. +// 0 -- calculated by the variables of heat conductivity and constant volume specific heat for each energy mode. +// 1 -- the general method where the iteration is calculated with the translation-rotation temperature. +// sigmaVelocity: the coordination coefficient of tangential momentum for computation of slip velocity. The value is in range of (0.0, 2.0]. +// sigmaTemperature: the heat coordination coefficient for computation of slip temperature. The value is in range of (0.0, 2.0]. +// sigmaMassFraction: the species coordination coefficient for computation of slip mass fractions. The value is in range of (0.0, 2.0]. +// velocitySlipCorrectConstant: the correction constant to the velocity slip condition. For the diffuse reflection, 1.0 is used. +// 1.0 -- proposed by Maxwell. +// sqrt(2/PI)~0.8 -- used for "micro-slip", namely the actual velocity slip at the wall. +// 1.146 -- proposed for an additional "fictitious" velocity slip. + +// chemicalRelaxCorf: The value is in range of [0.001, 1.0]. +// chemicalSpectrumRadiusCoef: The value is in range of [1.0, 3.0]. +// viscousSpectrumRadiusCoef : The value is in range of [1.0, 3.0]. +// inviscidSpectrumRadiusCoef: The value is in range of [1.0, 3.0]. +// staticPressureRelaxCorf: The value is in range of [0.1, 1.0]. +// nIsChemicalFreeze : the flag to freeze the chemical reactions. +// 0 -- not freeze, the chemical reaction sources will be calculated. +// 1 -- freezes the chemical reactions, the chemical reaction sources will not be calculated.// veTemperatureMin: The minimum of Tv and Te +// nDebug: cout the Wrong place and abort +// 0 -- not used. +// 1 -- used. +// nSpeciesLimit: limitter of gas species +// 0 -- not used. +// 1 -- used. +// nTurblenceForChemical: the coupled mode of Turblence and Chemical reaction +// 0 -- method 0. +// 1 -- method 1. +// nViscosityFluxSublevelModified: Modified for ViscosityFlux on Sublevel grid +// 0 -- not used. +// 1 -- used. +// nChemcalSourceModified: Modified on ChemcalSource +// 0 -- not used. +// 1 -- used. +// nAblation: +// 0 -- The wall ablation is not computed. +// 1 -- The wall ablation is computed. +// isInjection: +// 0 -- The injection velocity of ablation wall is not computed. +// 1 -- The injection velocity of ablation wall is computed. +// nViscosityModel: + +// 0 -- Blottner fitting method. +// 1 -- Gupta fitting method. +// nSutherland: +// 0 -- stands for selecting the Blotter curve fits mode. +// 1 -- stands for Sutherland relation. // gasfile: Indicates the gas model, 9 models are provided, namely "Gu5", "Gu7", "Gu11", "Pa5", "Pa7", "Pa11", "DK5", "DK7", "DK11". // "Gu" -- indicates the Gupta Model, three-Type Models are embeded in the library, namely, the 5-species-6-reactions, the 7-species-9-reactions, the 11-species-20-reactions. // "Pa" -- indicates the Park Model, three-Type Models are embeded in the library, namely, the 5-species-17-reactions, the 7-species-22-reactions, the 11-species-48-reactions. // "DK" -- indicates the Dunn-Kang Model, three-Type Models are embeded in the library, namely, the 5-species-11-reactions, the 7-species-15-reactions, the 11-species-26-reactions. // "Mars-Pa8" is for Park model of Mars gas, "Mars-Mc8" for McKenzie model of Mars gas. +// "Combustion-12" -- indicates the Combustion Chamber Gas Model which includes 12-species-20-reactions. +// "Gas-Mixture" -- indicates the process of mixing two species without reacting. // For self-definition model, the gasfile is used to indicate the file path of the new gas model. // speciesName: Used to list the names of each species, while each species name is separated by the symbol of comma. // initMassFraction: Used to list the initial mass fractions of species in accordance with the sequence of names in the parameter speciesName. @@ -758,6 +935,10 @@ int dg_high_order = 0; int iapplication = 0; int iCodeBranch = 0; int nm = 5; +int nEquilibriumGas = 0; +int nPCWCycleStep = 3; +int nRETCycleStep = 3; +int nSLIPCycleStep= 3; double refGama = 1.4; double prl = 0.72; @@ -770,23 +951,73 @@ int nchem = 0; int nchemsrc = 1; int nchemrad = 1; int ntmodel = 1; -int nChemicalFlowStep = 0; + +int nEnergyRecycle = 0; +int nSlipBCModel = 0; +int nDensityModify = 1; +int nTEnergyModel = 0; +int nMeanFreePathType = 0; +int nIsChemicalFreeze = 0; +int nIsSuperCatalytic = 1; +int nTemperatureJump = 0; + +double parkVDPower = 0.6; double catalyticCoef = 0.0; +double sigmaVelocity = 1.0; +double sigmaTemperature = 1.0; +double sigmaMassFraction = 1.0; +double velocitySlipCorrectConstant = 1.0; + +double chemicalRelaxCorf = 1.0; +double chemicalSpectrumRadiusCoef = 1.0; +double viscousSpectrumRadiusCoef = 1.0; +double inviscidSpectrumRadiusCoef = 1.0; +double staticPressureRelaxCorf = 1.0; + +double veTemperatureMin = 30.0; +int nDebug = 0; +int nSpeciesLimit = 0; +int nTurblenceForChemical = 0; +int nViscosityFluxSublevelModified = 0 ; +int nChemcalSourceModified = 0; + +int nAblation = 0; +int isInjection = 0; +int nViscosityModel = 0; +int nMarsModel = 0; string gasfile = "DK5"; //string gasfile = "./chemical/Dunn-Kang_air5s11r.dat"; string speciesName = "O, O2, NO, N, N2"; -string initMassFraction = "0.0, 0.23, 0.0, 0.0, 0.77"; +string initMassFraction = "0.0, 0.233, 0.0, 0.0, 0.767"; //string speciesName = "O, O2, NO, N, NO+, N2, e-"; -//string initMassFraction = "0.0, 0.23, 0.0, 0.0, 0.0, 0.77, 0.0"; +//string initMassFraction = "0.0, 0.233, 0.0, 0.0, 0.0, 0.767, 0.0"; //string speciesName = "O, O2, NO, N, O+, O2+, NO+, N+, N2+, N2, e-"; -//string initMassFraction = "0.0, 0.23, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.77, 0.0"; +//string initMassFraction = "0.0, 0.233, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.767, 0.0"; //string gasfile = "Mars-Pa8"; //string speciesName = "O, O2, NO, N, N2, C, CO, CO2"; //string initMassFraction = "0.0015, 0.0429, 0.0, 0.0, 0.0, 0.0, 0.0777, 0.8779"; +//string gasfile = "DK7"; +//string speciesName = "O, O2, NO, N, NO+, C, C2, CO, CO2, CN, N2, e-"; +//string initMassFraction = "0.0, 0.233, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.767, 0.0"; + +//string gasfile = "Combustion-12"; +//string speciesName = "O, O2, NO, N, C, CO, CO2, H, H2, OH, H2O, N2"; +//string initMassFraction = "0.0, 0.233, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.767"; + +//string gasfile = "Gas-Mixture"; +//string speciesName ="SpeciesA, SpeciesB"; +//string initMassFraction = "1.0, 0.0"; +int nSutherland = 0; +double gamaSpeciesA = 1.4; +double gamaSpeciesB = 1.3; +double molecularWeightSpeciesA = 29.0; +double molecularWeightSpeciesB = 30.0; + +int nChemicalFlowStep = 0; int ifStartFromPerfectGasResults = 0; ######################################################################### @@ -841,7 +1072,7 @@ string zoneInverseFileName = "./grid/zoneInverseMapping.inp"; ######################################################################### # High Order Struct Solver # ######################################################################### -// ifvfd: +// isFVMOrFDM: // 0 -- NSSolverStruct using Finite Volume Method. // 1 -- NSSolverStruct using Finite Differ Method. // SolverStructOrder: Spatial discretisation order of NS equations with struct grid. @@ -856,7 +1087,7 @@ string zoneInverseFileName = "./grid/zoneInverseMapping.inp"; // -- "roe", "steger". // structhighordergradient: // -- "conservation", "chain_rule". -int ifvfd = 0; +int isFVMOrFDM = 0; string str_highorder_solver = "WCNS"; int SolverStructOrder = 0; double str_highorder_interpolation_epsilon = 1.0e-6; @@ -885,8 +1116,12 @@ int allReduceStep = 1; // codeOfOversetGrid: Overlapping(overset) grid or not. // 0 -- NON-overlapping grid. // 1 -- Overlapping grid. +// oversetInterpolationMethod: the method of overset interpolation while field simulation +// 0 -- set the acceptor cell value by donor cell value. +// 1 -- set the acceptor cell value by distance weight of donor cell value. + int codeOfOversetGrid = 0; -int codeOfOversetSlipGrid = 0; +int oversetInterpolationMethod = 0; int readOversetFileOrNot = 0; int symetryOrNot = 0; int readInAuxiliaryInnerGrid = 1; @@ -895,7 +1130,7 @@ int readInSklFileOrNot = 0; string auxiliaryInnerGrid0 = "./grid/aux-upper.fts"; string auxiliaryInnerGrid1 = "./grid/aux-lower.fts"; string auxiliaryInnerGrid2 = ""; -string oversetGridFileName = "./grid/overlap.ovs"; +string oversetGridFileName = "./grid/iblank.ovs"; double walldistMainZone = 1.0 double toleranceForOversetSearch = 1.0e-3; double toleranceForOversetBox = 1.0e-3; @@ -905,16 +1140,78 @@ int outTecplotOverset = 0; int numberOfMovingBodies = 2; +// ----------------- ALE configuration ------------------------------ +int codeOfAleModel = 1; +int aleStartStrategy = -1; + +int strategyForFaceNormalVelocity = 0; //0-By Sweeping volume; 1-By face center 1st; 2-By face center 2nd; +int strategyForGCLSource = 0; //0-present; 1-Ahn; + +//0:1st-Admas-Bashforth; 1:2nd-Admas-Bashforth; 2:1st-Implicit-Euler; 3:2nd-Implicit Euler; 4:2nd-Adams-Moulton; 5:3rd-Adams-Moulton +int methodForKineticEquation = 0; +double relaxParameterOfKinetic = 1.0; + +######################################################################### +# motive information # +######################################################################### +int numberOfMovingBodies = 1; + +############################## body0 ############################## +//mass of parts +double mass_0 = 1.0; +//mass matrix of parts Ixx Iyy Izz Ixy Ixz Iyz +double massMatrix_0[] = 1e-7, 1e-6, 1e-6, 0.0, 0.0, 0.0; +//initial six DOF position information of parts. xc yc zc +double massCenter_0[] = 0.0 , 0.0, 0.0; +//initial six DOF position information of parts. angleX angleY angleZ +double attitudeAngle_0[] = 0.0 , 0.0, 0.0; +//initial six DOF move information of parts. vc vy vz +double massCenterVelocity_0[] = 0.0, 0.0, 0.0; +//initial six DOF move information of parts. omigX omigY omigZ +double angularVelocity_0[] = 0.0, 0.0, 0.0; +//the object that the parts belong to. +int fartherIndex_0 = -1; +//the assembly position of the parts. xc yc zc angleX angleY angleZ +double configPamameter_0[] = 0.0 ,0.0 ,0.0 ,0.0 ,0.0 ,0.0; +//the move pattern of the parts. +// -1 given motion partten. +// 0 still. +// 1 six DOF motion. +// 2 three DOF motion. +// 11 X-axis forced motion. +// 12 Y-axis forced motion. +// 13 Z-axis forced motion. +// 14 forced pitch motion. +// 15 forced yaw motion. +// 16 forced roll motion. +int RBDMethod_0 = 0; +double amplitude_0 = 0.0; +double reduceFrequency_0 = 0.0; +//string uDFSixDofFileName_0 = "./Bin/UDFSixDof.Parameter"; +//additional force (system axis) fX fY fZ +double addedForce_0[] = 0.0 ,0.0 ,0.0 ; +//additional moment of Force (system axis) mX mY mZ +double addedMoment_0[] = 0.0 ,0.0 ,0.0 ; +//the deformation method of the parts. +int morphing_0 = 0; + +// post indentify +int integralOrder = 4; + + // ---------------- ATP read -------------------------------------------- //@int inflowParaType = 0; -//@double refReNumber = 2.329418E08; -//@double refDimensionalTemperature = 288.144; -//@double refDimensionalPressure = 1.01313E05; -//@double height = -0.001; +//@double refReNumber = 6.5e6; +//@double refDimensionalTemperature = 288.15; +//@double freestream_vibration_temperature = 300.00; +//@double refDimensionalPressure = 0; +//@double height = 0; //@int nsubsonicInlet = 0; //@int nsubsonicOutlet = 0; //@string inLetFileName = "./bin/subsonicInlet.hypara"; //@string outLetFileName = "./bin/subsonicOutlet.hypara"; +//@double refDimensionalVelocity = 0; +//@double refDimensionalDensity = 0; ######################################################################### # Old Parameter # diff --git a/A13_TwoD_BackwardStep_PressureOutlet_SA_Struct_4CPU/bin/cfd_para_subsonic.hypara b/A13_TwoD_BackwardStep_PressureOutlet_SA_Struct_4CPU/bin/cfd_para_subsonic.hypara index 4408825..fbd5b29 100644 --- a/A13_TwoD_BackwardStep_PressureOutlet_SA_Struct_4CPU/bin/cfd_para_subsonic.hypara +++ b/A13_TwoD_BackwardStep_PressureOutlet_SA_Struct_4CPU/bin/cfd_para_subsonic.hypara @@ -57,9 +57,9 @@ double refDimensionalTemperature = 298.33; double gridScaleFactor = 0.0127; -double forceRefenenceLengthSpanWise = 1.0; // unit of meter. -double forceRefenenceLength = 1.0; // unit of meter. -double forceRefenenceArea = 1.0; // unit of meter^2. +double forceReferenceLengthSpanWise = 1.0; // unit of meter. +double forceReferenceLength = 1.0; // unit of meter. +double forceReferenceArea = 1.0; // unit of meter^2. double TorqueRefX = 0.0; // unit of meter. double TorqueRefY = 0.0; // unit of meter. double TorqueRefZ = 0.0; // unit of meter. diff --git a/A14_TwoD_Plate_TotalPressTempBC_SA_Struct_4CPU/bin/boundary_condition _ref.hypara b/A14_TwoD_Plate_TotalPressTempBC_SA_Struct_4CPU/bin/boundary_condition _ref.hypara index 80853a9..037fe06 100644 --- a/A14_TwoD_Plate_TotalPressTempBC_SA_Struct_4CPU/bin/boundary_condition _ref.hypara +++ b/A14_TwoD_Plate_TotalPressTempBC_SA_Struct_4CPU/bin/boundary_condition _ref.hypara @@ -26,14 +26,14 @@ string bcName = "FARFIELD"; { int bcType = 4; } -string bcName = "Inflow"; +string bcName = "INFLOW"; { int bcType = 52; double totalPressure = 118309.784; double totalTemperature = 302.4; double direction_inlet[] = 1, 0, 0; } -string bcName = "Outflow"; +string bcName = "OUTFLOW"; { int bcType = 62; double staticPressure = 115056.0; diff --git a/A14_TwoD_Plate_TotalPressTempBC_SA_Struct_4CPU/bin/boundary_condition.hypara b/A14_TwoD_Plate_TotalPressTempBC_SA_Struct_4CPU/bin/boundary_condition.hypara deleted file mode 100644 index 80853a9..0000000 --- a/A14_TwoD_Plate_TotalPressTempBC_SA_Struct_4CPU/bin/boundary_condition.hypara +++ /dev/null @@ -1,56 +0,0 @@ -# nBoundaryConditons : number of global boundary conditions. -# bcName : Boundary Condition Name. -# bcType(in PHengLEI): Boundary Condition Type. - -# Account of how to set boundaryconditon. -# string bcName = "Farfield"; -# { -# int bcType = 4; -# int inflowParaType = 1; -# double attackd = 0; -# double refReNumber = 6.5e6; -# double refMachNumber = 3.5; -# double angleSlide = 0; -# } - -int nBoundaryConditons = 5; -string bcName = "SOLID_SURFACE"; -{ - int bcType = 2; -} -string bcName = "SYMMETRY"; -{ - int bcType = 3; -} -string bcName = "FARFIELD"; -{ - int bcType = 4; -} -string bcName = "Inflow"; -{ - int bcType = 52; - double totalPressure = 118309.784; - double totalTemperature = 302.4; - double direction_inlet[] = 1, 0, 0; -} -string bcName = "Outflow"; -{ - int bcType = 62; - double staticPressure = 115056.0; -} - -# 'bcType' is defined as following: -# 99: PERIODIC -# -2: WAKE -# -1: INTERFACE -# 0 : NO_BOUNDARY_CONDITION -# 1 : EXTRAPOLATION -# 2 : SOLID_SURFACE -# 3 : SYMMETRY -# 4 : FARFIELD -# 5 : INFLOW -# 6 : OUTFLOW -# 52: PRESSURE_INLET -# 62: PRESSURE_OUTLET -# 61: OUTFLOW_CONFINED -# 7 : POLE diff --git a/A14_TwoD_Plate_TotalPressTempBC_SA_Struct_4CPU/bin/cfd_para.hypara b/A14_TwoD_Plate_TotalPressTempBC_SA_Struct_4CPU/bin/cfd_para.hypara index df090b7..b17970c 100644 --- a/A14_TwoD_Plate_TotalPressTempBC_SA_Struct_4CPU/bin/cfd_para.hypara +++ b/A14_TwoD_Plate_TotalPressTempBC_SA_Struct_4CPU/bin/cfd_para.hypara @@ -21,6 +21,7 @@ // 1 -- Grid conversion, from other grid data to PHenglEI, such as Fluent, CGNS. // 2 -- Grid refinement. // 3 -- Grid merging, merge two blocks into one block. +// 4 -- Grid deformation, achieve unstructured grid deformation. // 5 -- Grid repairing, repair the original grid in order to remove the negative volume cells. // 6 -- Grid mirroring, mirror a symmetry grid to whole grid. // multiblock: Multi-block grid or not, only for structured grid conversion. @@ -72,13 +73,15 @@ int dumpOldGrid = 0; //----------------------------------------------------------------------- // from_gfile: path of original data file for unstructure grid convert from. // out_gfile: path of target file for grid convert to, *.fts type of file usually. +int numberOfGridFile = 1; string from_gfile = "./grid/rae2822_hybrid2d.cas"; +string from_gfile1= ""; + string out_gfile = "./grid/flat_laminr_133_85_2d.fts"; // ----------------- some advanced choices ------------------------------ // iunsteady: The Grid is for unsteady simulation or not. int iunsteady = 0; -int iale = 0; int codeOfAleModel = 0; // fileformat: Ustar Grid file format. @@ -122,15 +125,38 @@ int isDeform = 0; int exclusiveCase = 0; // 0: NON case; 1: JSM-C2-NPOFF case; 2: CHNT. int projectOrgPoint = 0; // if project original wall points. + +// ----------------- Grid Deform Parameters ----------------------------- +// deformationMethod: Grid Deform. +// 1 -- SPRING. +// 2 -- RBF. +// stationalGridFile: Original grid file. +// visualFileName : The visualization file path of deform grid. +// nDeformStep : The max deform step. +// flapAngle : The max flap angle. +// rotatePostionZ : Rotate postion. +// rotatePostionY : Rotate postion. +// gridSlice : If dump slice grid. +// sliceAxis : Grid slice axis. +// slicePosition : Grid slice position. +int nDeformStep = 40; +double flapAngle = 10.0; +double rotatePostionZ = 4.00003; +double rotatePostionY = 3.05; + +int deformationMethod = 2; +string stationalGridFile = "./grid/Segment2Brid.fts"; +string visualFileName = "./results/deformedGrid.dat" + +int gridSlice = 1; +int sliceAxis = 1; +double slicePosition = 13; + // ----------------- RBF Parameters ------------------------------------- -// symmetryPlane: Which symmetry plane is used in the mesh. -// 0 -- without symmetry. -// 1 -- plane of x=0. -// 2 -- plane of y=0. -// 3 -- plane of z=0. -int numberOfReferenceCP = 10; -double influenceRadius = 20; -int symmetryPlane = 3; // 1: plane of x=0; 2: plane of y=0; 3: plane of z=0; +// numberOfReferenceCP : Number of reference Control Points. +// influencePara : The RBF influence radius parameter. +int numberOfReferenceCP = 40; +double influencePara = 25.0; // ----------------- Periodic Parameters -------------------------------- // Notice: Rotational periodicity only support rotation along the X axis! @@ -138,6 +164,11 @@ int symmetryPlane = 3; // 1: plane of x=0; 2: plane of y=0; 3: plane of // 0 -- without Periodic Boundary. // 1 -- Translational periodicity. // 2 -- Rotational periodicity. +// translationLength[]: The relative distance between two periodic face + which only support one direction. +// rotationAngle: The relative angle between two periodic face. + which is recorded in degrees. + int periodicType = 0; double translationLength[] = [0.0,0.0,0.0]; double rotationAngle = 0.0; @@ -180,7 +211,7 @@ string partition_grid_file = "./grid/sphere_mixed__4.fts"; // 0 -- Interface. (default) // 1 -- Physical boundary condition, used in Hybrid solver. // npartmethod: Method of interface reconstruction, default is 1. -// parallelPartMethod: Method of parallel partition, this is set only when execute parallel partition. It would be skipped when serial partition. +// parallelPartitionMethod: Method of parallel partition, this is set only when execute parallel partition. It would be skipped when serial partition. // 1 -- Using ParMetis for homogeneous MPI. // 2 -- Using Metis for homogeneous MPI. // 3 -- using METIS partition for homogeneous OpenMP. @@ -238,6 +269,8 @@ int compressible = 1; // 1 -- the flight conditions. // 2 -- the experiment conditions. // 3 -- the subsonic boundary conditions. +// 4 -- the condition that the velocity, temperature and density are given. +// 5 -- the condition that the velocity, temperature and pressure are given. // refReNumber: Reynolds number, which is based unit length, unit of 1/m. // refDimensionalTemperature: Dimensional reference temperature, or the total temperature only for the experiment condition. // freestream_vibration_temperature: Dimensional freestream vibration temperature. @@ -251,10 +284,12 @@ int compressible = 1; // 1 inch = 0.0254m. // 1 foot = 12 inches = 0.3048m. // 1 yard = 3 feet = 0.9144m. -// forceRefenenceLength, forceRefenenceLengthSpanWise, forceRefenenceArea: Reference length, SpanWise length and area, independent of grid unit. +// forceReferenceLength, forceReferenceLengthSpanWise, forceReferenceArea: Reference length, SpanWise length and area, independent of grid unit. // TorqueRefX, TorqueRefY, TorqueRefZ: Reference point, independent of grid unit. // radiationCoef: The radiation coefficient on wall, it is used to compute the radiation heat flux on wall when the boundary // condition is radiation equilibrium temperature, and 0.8 is the default value. +// refMolecularWeight : the reference molecular weight of gas used for perfect gas. The unit is g/mol. +// Generally, the gas is air. Sometimes, it is experiment gas, such as Nitrogen, Argon, and so on. double refMachNumber = 0.73; double attackd = 2.79; @@ -263,7 +298,7 @@ double angleSlide = 0.00; int inflowParaType = 0; double refReNumber = 6.5e6; double refDimensionalTemperature = 288.15; -double freestream_vibration_temperature = 10000.00; +double freestream_vibration_temperature = 300.00; //int inflowParaType = 1; //double height = 0.001; @@ -280,18 +315,34 @@ double freestream_vibration_temperature = 10000.00; //double refDimensionalTemperature = 288.144; //double refDimensionalPressure = 1.01313E05; +//The velocity, temperature and density are fixed. +//int inflowParaType = 4; +//double refDimensionalVelocity = 1000.0; +//double refDimensionalDensity = 1.0e3; + +//The velocity, temperature and pressure are fixed. +//int inflowParaType = 5; +//double refDimensionalVelocity = 1000.0; +//double refDimensionalPressure = 1.0e5; + +//The MachNumber, temperature and pressure are fixed. +//int inflowParaType = 6; +//double refDimensionalTemperature = 293; +//double refDimensionalPressure = 8886.06; + double wallTemperature = -1.0; double radiationCoef = 0.8; double gridScaleFactor = 1.0; int numberOfAerodynamicForceComponents = 1; -double forceRefenenceLengthSpanWise = 1.0; // unit of meter. -double forceRefenenceLength = 1.0; // unit of meter. -double forceRefenenceArea = 1.0; // unit of meter^2. +double forceReferenceLengthSpanWise = 1.0; // unit of meter. +double forceReferenceLength = 1.0; // unit of meter. +double forceReferenceArea = 1.0; // unit of meter^2. double TorqueRefX = 0.0; // unit of meter. double TorqueRefY = 0.0; // unit of meter. double TorqueRefZ = 0.0; // unit of meter. +double refMolecularWeight = 28.9644; // unit of g/mol. //----------------------------------------------------------------------- # Spatial Discretisation # @@ -303,7 +354,7 @@ double TorqueRefZ = 0.0; // unit of meter. // Using this when solve structered grid or hybrid. // -- "vanleer", "steger", "hlle", "lax_f". // -- "roe", "modified_roe". -// -- "ausm+", "ausm+w", "ausm+up", "ausmdv", "ausmpw". +// -- "ausm+", "ausm+w", "ausm+up", "ausmdv", "ausmpw", "ausmpw+". // str_limiter_name: Limiter of struct grid. // -- "vanalbada", "vanleer", "minmod", "smooth", "minvan", "3rdsmooth", "3rd_minmod_smooth". // -- "nolim", no limiter. @@ -339,14 +390,14 @@ string str_limiter_name = "vanalbada"; // uns_scheme_name: Spatial discretisation scheme of Unstruct grid. // Using this when solve Unstructered grid or hybrid. // -- "vanleer", "roe", "steger", "kfvs", "lax_f", "hlle". -// -- "ausm+", "ausmdv", "ausm+w", "ausmpw", "ausmpwplus". +// -- "ausm+", "ausmdv", "ausm+w", "ausmpw", "ausmpw+". // uns_limiter_name: Limiter of Unstruct grid. // -- "barth", "vencat", "vanleer", "minmod". // -- "vanalbada", "smooth", "nnd", "lpz", "1st". // -- "nolim", no limiter. // uns_vis_name: Discretisation method of viscous term. // -- "std", "test", "aver", "new1", "new2". -// uns_gradient: Gradient reconstruction method. +// gradientName: Gradient reconstruction method. // -- "default", "ggcell", "ggnode", "lsq". // ivencat: Variation of vencat limiter. // 0 -- org method, it is independent of grid scale. @@ -408,9 +459,15 @@ double roeEntropyScale = 1.0; // 1 -- unsteay. // physicalTimeStep: The nondimensional physical time step. // ifStartFromSteadyResults: The unsteady simulation is start from steady flowfield or not, 0 is for no and else is for yes. -// ifStaticsFlowField: Statistical variables for DES simulation. +// ifStaticsFlowField: Statistical variables for unsteady simulation. +// ifStaticsReynoldsStress: Statistical Reynolds stress for unsteady simulation. // startStatisticStep: Outer step when start statistics. // when the value is larger than "maxSimuStep", it is useless. +// statisticalTimePeriod: Used as time period of statistic analysis. +// when the value is negative, time period is treated as infinite. +// statisticMethod: Statistic reynolds stress method. + 0 --tau = - ^2 + 1 --tau = // min_sub_iter: The min sub iteration of unsteady simulation. // max_sub_iter: The max sub iteration of unsteady simulation. // tol_sub_iter: The tolerance of sub iteration of unsteady simulation. @@ -454,7 +511,10 @@ int iunsteady = 0; double physicalTimeStep = 0.01; int ifStartFromSteadyResults = 0; int ifStaticsFlowField = 0; +int ifStaticsReynoldsStress = 0; int startStatisticStep = 800000; +double statisticalTimePeriod = -1.0; +int statisticMethod = 0; int linearTwoStepMethods = 1; // 1--BDF1; 2--C-N; 3--BDF2; int methodOfDualTime = 3; @@ -482,8 +542,6 @@ double turbCFLScale = 1.0; double csrv = 2.0; double timemax = 1.0e10; double dtsave = -1.0; -int codeOfAleModel = 0; -int aleStartStrategy = -1; int maxale = 10; double dtau = 0.001; @@ -524,6 +582,7 @@ double lamda[] = 0.5, 1.0; int numberOfGridGroups = 1; string gridfile = "./grid/rae2822_hybrid2d__4.fts"; +string wallTemperaturefile= ""; int walldistMethod = 1; @@ -536,15 +595,16 @@ string turbfile = "results/turb.dat"; string visualfile = "results/tecflow.plt"; string wall_aircoefile = "results/wall_aircoef.dat"; -string probesflowfile = "results/sample.dat"; +string samplefile = "results/sample.dat"; int nDumpSurfaceInfo = 0; string wall_varfile = ""; string jetDefineFile = "bin/jet.hypara"; -string overset_gridfile = "results/iblank.ovs"; string sixDofFileName = "results/sixDofInfo.dat"; +string derivativeFileName = "results/identify.dat"; +string hysteresisFileName = "results/force_beta.plt"; int plotFieldType = 0; @@ -554,6 +614,11 @@ int plotFieldType = 0; int visualfileType = 1; +// samplefileMode: The dump mode of sample file. +// 0 -- dump out every probe/line/surface data for all step intervals. +// 1 -- dump out all probe/line/surface data for every step intervals. +int samplefileMode = 0; + // visualSlice: The slice of tecflow. // 0 -- Do not save slice data. // 1 -- comput and save it to sliceFile. @@ -567,11 +632,13 @@ int visualSlice = 0; int sliceAxis = 1; double slicePostion = -0.5; string sliceFile = "results/Slice.plt"; +int dumpWallFaceCenter = 0; // min-max box of the visual block. double lowerPlotFieldBox[] = [0.0 0.0 0.0]; double upperPlotFieldBox[] = [1.0 1.0 1.0]; +//-----------the optional parameters list for the flow field output---------------- // nVisualVariables: Number of variables want to be dumped for tecplot visualization. // visualVariables : Variable types dumped, listed as following: // -- density(0), u(1), v(2), w(3), pressure(4), temperature(5), mach(6), @@ -582,11 +649,27 @@ double upperPlotFieldBox[] = [1.0 1.0 1.0]; // -- vibration temperature(Tv, 33), electron temperature(Te, 34), vibrational energy(Ev, 35), electric energy(Ee, 36), // -- number density of electron(Ne, 37), dimensioanl density(rho, 38), dimensioanl pressure(p, 39), dimensioanl temperature(T, 40), // -- gradientUx(41), gradientUy(42), gradientVx(43), gradientVy(44), iblank(81). +// -- specific heat ratio(gama, 56) // Important Warning: Array size of visualVariables MUST be equal to nVisualVariables!!! // Variables order must from small to big. +//-----------the optional parameters list for the wall boundary condition---------------- +// nVisualWallVariables: The number of visual variables on wall. +// visualWallVariables : dumped variable types, listed as following: +// -coefficient of pressure(cp, 0), -coefficient of friction(cf, 1), yplus(2), -non-dimensional heat flux(Q_NonDim, 3), -dimensional heat flux(Q_Dim, 4), +// -pressure on wall(pw, 5), -temperature on wall(Tw, 6), -density on wall(rhow, 7), -heat flux of translational-rotational temperature term(Qtr, 8), +// -heat flux of species diffusion term(Qs, 9), -heat flux of vibrational temperature term(Qv, 10), -heat flux of electron temperature term(Qe, 11), +// -species mass fractions(Ns, 12), -x component of wall velocity(Vx, 13), -y component of wall velocity(Vy, 14), -z component of wall velocity(Vz, 15) +// -slip translational-rotational temperature(Tts, 16), -slip vibrational temperature(Tvs, 17), -slip electron temperature(Tes, 18), -absolute wall velocity(Vs, 19) +// -Stanton number(St, 20), -coefficient of heat rate(Ch, 21), -temperature jump(deltaT, 22), -transition gamaeff(gamaeff, 48), +// -transition intermittency(intermittency, 51), -transition momentum thickness reynolds(MomentumThicknessReynolds, 52), +// -overlap iblank(iblank, 81) + int nVisualVariables = 8; int visualVariables[] = [0, 1, 2, 3, 4, 5, 6, 15]; +int nVisualWallVariables = 9; +int visualWallVariables[] = [0, 1, 2, 3, 4, 5, 9, 10, 11]; + // dumpStandardModel: Dump many standard model data. // 1 -- Turbulent flat plate. int dumpStandardModel = 0; @@ -644,6 +727,7 @@ int probeVariablesInterpolationMethod = 0; // mod_turb_res: If modify the residuals for the cells next to the wall or not, default is 0. int turbInterval = 1; +int turbOrderStruct = 2; int kindOfTurbSource = 0; int mod_turb_res = 0; double turb_relax = 1.0; @@ -652,6 +736,10 @@ double muoo = 3.0; double kwoo = 5.0; int transitionType = 0; double turbIntensity = -1.0; +int freeturbIntensitySRModify = 0; +double freeDecayXLocation = 0.0; +int compressibleCorrection = 0; +int transitionMaFix = 1; # maximum eddy viscosity (myt/my) max. double eddyViscosityLimit = 1.0e10; @@ -661,8 +749,8 @@ int monitor_vistmax = 0; # LES Parameter # //----------------------------------------------------------------------- // iLES: Create LESSolver or not. -// >= 1 - Create LESSolver; -// < 1 - not. +// == 1 - Create LESSolver; +// != 1 - not. // amplitudeofDisturb: Amplitude of adding disturb. // disturbstep: Unsteady time step or steady iteration of adding random disturb. // iterdisturb: Add random disturb in every sub-iter or only first sub-iter. @@ -676,8 +764,9 @@ int monitor_vistmax = 0; // utau: friction velocity, using in DNSDisturb. // sgsmodel: subgrid scale model. // = "smagorinsky"; -// = "dsm"; -// = "wale". +// = "dsmCom"; +// = "wale"; +// = "sigma". // deltaFunctionType: = 1 - MAX(deltai, deltaj, deltak); // = 2 - pow(deltai * deltaj *deltak, 1/3); // = 3 - Devloped by Scotti. @@ -700,9 +789,10 @@ string sgsmodel = "smagorinsky"; int deltaFunctionType = 2; int wallDampingFunctionType = 1; int turbViscousCutType = 2; -double smagConstant = 0.135; +double smagConstant = 0.1; double isotropicConstant = 0.0; double waleConstant = 0.6; +double sigmaConstant = 1.35; int filterDirection[] = [1, 1, 0]; int averageDirection[] = [0, 0, 0]; double testFilterScale = 2.0; @@ -724,12 +814,42 @@ int monitorNegativeConstant = 0; // nm: Equation number of the physics, but is out of commision now. // 4 -- for 2D. // 5 -- for 3D. -// nGasModel: The type of gas. +// nGasModel: The type of gas. less than and equal to 1 represents the mixture gas. +// Otherwise, the pure gas with one component is used for perfect gas. // 0 -- Earth gas. // 1 -- Mars gas. +// 2 -- Argon. +// 3 -- Nitrogen. +// nEnergyRecycle: The type of EnergyModel Recycle. +// 0 -- not used . +// 1 -- used. +// nDensityModify: The type of densitymodify. + +// 0 -- not used. +// 1 -- used. // nchem: // 0 -- without chemical reaction flow. // 1 -- the chemical reaction flow is considered. +// nEquilibriumGas: the variable is valid when the condition of nchem=0 is satisfied. +// 0 -- perfect gas. +// 5, 7, 11 -- equilibrium gas, meanwhile, its value denotes the number of gas component. +// nPCWCycleStep: the maximum step number of iteration in the module of computing species mass fractions with the partial catalytic wall(PCW) condition. +// the value equals to or is greater than 1, and 3 is for default value. +// nRETCycleStep: the maximum step number of iteration in the module of computing radiation equilibrium temperature on wall. +// the value equals to or is greater than 1, and 3 is for default value. +// nSLIPCycleStep:the maximum step number of iteration in the module of computing slip temperature, slip velocity and slip species mass fraction. +// the value equals to or is greater than 1, and 3 is for default value. +// nSlipBCModel : The computational model of slip boundary conditions. + +// 0 -- no slip. +// 1 -- the conventional Maxwell slip conditions. +// 2 -- the Gokcen slip conditions. +// 3 -- the Knudsen-layer correction of the standard slip conditions proposed by Lockerby, et al. +// 4 -- the Kogan simplified slip conditions. +// nMeanFreePathType : the method to the mean free-path for the slip conditions. For the mixture, 0 is suggested. +// 0 -- the equivalent mean free-path is calculated by the simple hard sphere model(HS). +// 1 -- calculated by the definition that includes the variables of the number density and the molecule diameter. +// 2 -- the equivalent mean free-path is calculated by the variable hard sphere model(VHS). // nchemsrc: // 0 -- the source terms are not computed. // 1 -- the source terms are computed. @@ -740,15 +860,72 @@ int monitorNegativeConstant = 0; // 1 -- One-temperature model. // 2 -- Two-temperature model. // 3 -- Three-temperature model. +// nTEnergyModel: the method to computing temperature energy model. +// 0 -- the energy term is computed using the conventional method. +// 1 -- the energy term is computed using the curve fitting method. +// parkVDPower: the power of translational-rotational temperature in the Park V-D(vibration-dissociation) coupling model. +// The value is in range of [0.0, 1.0], DPLR suggests 0.5, LAURA suggests 0.7, while 0.6 is given as default value. // catalyticCoef: // 0.0 -- full non-catalytic wall boundary condition. // 1.0 -- full catalytic wall boundary condition. // in range of (0.0, 1.0) -- partial catalytic condition, the value indicates the catalytic coefficient. +// nIsSuperCatalytic : the super catalytic condition for the fully catalytic wall, and assigned with the value of 1. +// 0 -- equilibrium condition for the fully catalytic wall where the mass fractions are assigned with the values of the free stream. +// 1 -- super catalytic condition for the fully catalytic wall where all the atomic components combine into molecular components. +// nTemperatureJump : the method to calculate the temperature jump. +// 0 -- calculated by the variables of heat conductivity and constant volume specific heat for each energy mode. +// 1 -- the general method where the iteration is calculated with the translation-rotation temperature. +// sigmaVelocity: the coordination coefficient of tangential momentum for computation of slip velocity. The value is in range of (0.0, 2.0]. +// sigmaTemperature: the heat coordination coefficient for computation of slip temperature. The value is in range of (0.0, 2.0]. +// sigmaMassFraction: the species coordination coefficient for computation of slip mass fractions. The value is in range of (0.0, 2.0]. +// velocitySlipCorrectConstant: the correction constant to the velocity slip condition. For the diffuse reflection, 1.0 is used. +// 1.0 -- proposed by Maxwell. +// sqrt(2/PI)~0.8 -- used for "micro-slip", namely the actual velocity slip at the wall. +// 1.146 -- proposed for an additional "fictitious" velocity slip. + +// chemicalRelaxCorf: The value is in range of [0.001, 1.0]. +// chemicalSpectrumRadiusCoef: The value is in range of [1.0, 3.0]. +// viscousSpectrumRadiusCoef : The value is in range of [1.0, 3.0]. +// inviscidSpectrumRadiusCoef: The value is in range of [1.0, 3.0]. +// staticPressureRelaxCorf: The value is in range of [0.1, 1.0]. +// nIsChemicalFreeze : the flag to freeze the chemical reactions. +// 0 -- not freeze, the chemical reaction sources will be calculated. +// 1 -- freezes the chemical reactions, the chemical reaction sources will not be calculated.// veTemperatureMin: The minimum of Tv and Te +// nDebug: cout the Wrong place and abort +// 0 -- not used. +// 1 -- used. +// nSpeciesLimit: limitter of gas species +// 0 -- not used. +// 1 -- used. +// nTurblenceForChemical: the coupled mode of Turblence and Chemical reaction +// 0 -- method 0. +// 1 -- method 1. +// nViscosityFluxSublevelModified: Modified for ViscosityFlux on Sublevel grid +// 0 -- not used. +// 1 -- used. +// nChemcalSourceModified: Modified on ChemcalSource +// 0 -- not used. +// 1 -- used. +// nAblation: +// 0 -- The wall ablation is not computed. +// 1 -- The wall ablation is computed. +// isInjection: +// 0 -- The injection velocity of ablation wall is not computed. +// 1 -- The injection velocity of ablation wall is computed. +// nViscosityModel: + +// 0 -- Blottner fitting method. +// 1 -- Gupta fitting method. +// nSutherland: +// 0 -- stands for selecting the Blotter curve fits mode. +// 1 -- stands for Sutherland relation. // gasfile: Indicates the gas model, 9 models are provided, namely "Gu5", "Gu7", "Gu11", "Pa5", "Pa7", "Pa11", "DK5", "DK7", "DK11". // "Gu" -- indicates the Gupta Model, three-Type Models are embeded in the library, namely, the 5-species-6-reactions, the 7-species-9-reactions, the 11-species-20-reactions. // "Pa" -- indicates the Park Model, three-Type Models are embeded in the library, namely, the 5-species-17-reactions, the 7-species-22-reactions, the 11-species-48-reactions. // "DK" -- indicates the Dunn-Kang Model, three-Type Models are embeded in the library, namely, the 5-species-11-reactions, the 7-species-15-reactions, the 11-species-26-reactions. // "Mars-Pa8" is for Park model of Mars gas, "Mars-Mc8" for McKenzie model of Mars gas. +// "Combustion-12" -- indicates the Combustion Chamber Gas Model which includes 12-species-20-reactions. +// "Gas-Mixture" -- indicates the process of mixing two species without reacting. // For self-definition model, the gasfile is used to indicate the file path of the new gas model. // speciesName: Used to list the names of each species, while each species name is separated by the symbol of comma. // initMassFraction: Used to list the initial mass fractions of species in accordance with the sequence of names in the parameter speciesName. @@ -758,6 +935,10 @@ int dg_high_order = 0; int iapplication = 0; int iCodeBranch = 0; int nm = 5; +int nEquilibriumGas = 0; +int nPCWCycleStep = 3; +int nRETCycleStep = 3; +int nSLIPCycleStep= 3; double refGama = 1.4; double prl = 0.72; @@ -770,23 +951,73 @@ int nchem = 0; int nchemsrc = 1; int nchemrad = 1; int ntmodel = 1; -int nChemicalFlowStep = 0; + +int nEnergyRecycle = 0; +int nSlipBCModel = 0; +int nDensityModify = 1; +int nTEnergyModel = 0; +int nMeanFreePathType = 0; +int nIsChemicalFreeze = 0; +int nIsSuperCatalytic = 1; +int nTemperatureJump = 0; + +double parkVDPower = 0.6; double catalyticCoef = 0.0; +double sigmaVelocity = 1.0; +double sigmaTemperature = 1.0; +double sigmaMassFraction = 1.0; +double velocitySlipCorrectConstant = 1.0; + +double chemicalRelaxCorf = 1.0; +double chemicalSpectrumRadiusCoef = 1.0; +double viscousSpectrumRadiusCoef = 1.0; +double inviscidSpectrumRadiusCoef = 1.0; +double staticPressureRelaxCorf = 1.0; + +double veTemperatureMin = 30.0; +int nDebug = 0; +int nSpeciesLimit = 0; +int nTurblenceForChemical = 0; +int nViscosityFluxSublevelModified = 0 ; +int nChemcalSourceModified = 0; + +int nAblation = 0; +int isInjection = 0; +int nViscosityModel = 0; +int nMarsModel = 0; string gasfile = "DK5"; //string gasfile = "./chemical/Dunn-Kang_air5s11r.dat"; string speciesName = "O, O2, NO, N, N2"; -string initMassFraction = "0.0, 0.23, 0.0, 0.0, 0.77"; +string initMassFraction = "0.0, 0.233, 0.0, 0.0, 0.767"; //string speciesName = "O, O2, NO, N, NO+, N2, e-"; -//string initMassFraction = "0.0, 0.23, 0.0, 0.0, 0.0, 0.77, 0.0"; +//string initMassFraction = "0.0, 0.233, 0.0, 0.0, 0.0, 0.767, 0.0"; //string speciesName = "O, O2, NO, N, O+, O2+, NO+, N+, N2+, N2, e-"; -//string initMassFraction = "0.0, 0.23, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.77, 0.0"; +//string initMassFraction = "0.0, 0.233, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.767, 0.0"; //string gasfile = "Mars-Pa8"; //string speciesName = "O, O2, NO, N, N2, C, CO, CO2"; //string initMassFraction = "0.0015, 0.0429, 0.0, 0.0, 0.0, 0.0, 0.0777, 0.8779"; +//string gasfile = "DK7"; +//string speciesName = "O, O2, NO, N, NO+, C, C2, CO, CO2, CN, N2, e-"; +//string initMassFraction = "0.0, 0.233, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.767, 0.0"; + +//string gasfile = "Combustion-12"; +//string speciesName = "O, O2, NO, N, C, CO, CO2, H, H2, OH, H2O, N2"; +//string initMassFraction = "0.0, 0.233, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.767"; + +//string gasfile = "Gas-Mixture"; +//string speciesName ="SpeciesA, SpeciesB"; +//string initMassFraction = "1.0, 0.0"; +int nSutherland = 0; +double gamaSpeciesA = 1.4; +double gamaSpeciesB = 1.3; +double molecularWeightSpeciesA = 29.0; +double molecularWeightSpeciesB = 30.0; + +int nChemicalFlowStep = 0; int ifStartFromPerfectGasResults = 0; ######################################################################### @@ -841,7 +1072,7 @@ string zoneInverseFileName = "./grid/zoneInverseMapping.inp"; ######################################################################### # High Order Struct Solver # ######################################################################### -// ifvfd: +// isFVMOrFDM: // 0 -- NSSolverStruct using Finite Volume Method. // 1 -- NSSolverStruct using Finite Differ Method. // SolverStructOrder: Spatial discretisation order of NS equations with struct grid. @@ -856,7 +1087,7 @@ string zoneInverseFileName = "./grid/zoneInverseMapping.inp"; // -- "roe", "steger". // structhighordergradient: // -- "conservation", "chain_rule". -int ifvfd = 0; +int isFVMOrFDM = 0; string str_highorder_solver = "WCNS"; int SolverStructOrder = 0; double str_highorder_interpolation_epsilon = 1.0e-6; @@ -885,8 +1116,12 @@ int allReduceStep = 1; // codeOfOversetGrid: Overlapping(overset) grid or not. // 0 -- NON-overlapping grid. // 1 -- Overlapping grid. +// oversetInterpolationMethod: the method of overset interpolation while field simulation +// 0 -- set the acceptor cell value by donor cell value. +// 1 -- set the acceptor cell value by distance weight of donor cell value. + int codeOfOversetGrid = 0; -int codeOfOversetSlipGrid = 0; +int oversetInterpolationMethod = 0; int readOversetFileOrNot = 0; int symetryOrNot = 0; int readInAuxiliaryInnerGrid = 1; @@ -895,7 +1130,7 @@ int readInSklFileOrNot = 0; string auxiliaryInnerGrid0 = "./grid/aux-upper.fts"; string auxiliaryInnerGrid1 = "./grid/aux-lower.fts"; string auxiliaryInnerGrid2 = ""; -string oversetGridFileName = "./grid/overlap.ovs"; +string oversetGridFileName = "./grid/iblank.ovs"; double walldistMainZone = 1.0 double toleranceForOversetSearch = 1.0e-3; double toleranceForOversetBox = 1.0e-3; @@ -905,16 +1140,78 @@ int outTecplotOverset = 0; int numberOfMovingBodies = 2; +// ----------------- ALE configuration ------------------------------ +int codeOfAleModel = 1; +int aleStartStrategy = -1; + +int strategyForFaceNormalVelocity = 0; //0-By Sweeping volume; 1-By face center 1st; 2-By face center 2nd; +int strategyForGCLSource = 0; //0-present; 1-Ahn; + +//0:1st-Admas-Bashforth; 1:2nd-Admas-Bashforth; 2:1st-Implicit-Euler; 3:2nd-Implicit Euler; 4:2nd-Adams-Moulton; 5:3rd-Adams-Moulton +int methodForKineticEquation = 0; +double relaxParameterOfKinetic = 1.0; + +######################################################################### +# motive information # +######################################################################### +int numberOfMovingBodies = 1; + +############################## body0 ############################## +//mass of parts +double mass_0 = 1.0; +//mass matrix of parts Ixx Iyy Izz Ixy Ixz Iyz +double massMatrix_0[] = 1e-7, 1e-6, 1e-6, 0.0, 0.0, 0.0; +//initial six DOF position information of parts. xc yc zc +double massCenter_0[] = 0.0 , 0.0, 0.0; +//initial six DOF position information of parts. angleX angleY angleZ +double attitudeAngle_0[] = 0.0 , 0.0, 0.0; +//initial six DOF move information of parts. vc vy vz +double massCenterVelocity_0[] = 0.0, 0.0, 0.0; +//initial six DOF move information of parts. omigX omigY omigZ +double angularVelocity_0[] = 0.0, 0.0, 0.0; +//the object that the parts belong to. +int fartherIndex_0 = -1; +//the assembly position of the parts. xc yc zc angleX angleY angleZ +double configPamameter_0[] = 0.0 ,0.0 ,0.0 ,0.0 ,0.0 ,0.0; +//the move pattern of the parts. +// -1 given motion partten. +// 0 still. +// 1 six DOF motion. +// 2 three DOF motion. +// 11 X-axis forced motion. +// 12 Y-axis forced motion. +// 13 Z-axis forced motion. +// 14 forced pitch motion. +// 15 forced yaw motion. +// 16 forced roll motion. +int RBDMethod_0 = 0; +double amplitude_0 = 0.0; +double reduceFrequency_0 = 0.0; +//string uDFSixDofFileName_0 = "./Bin/UDFSixDof.Parameter"; +//additional force (system axis) fX fY fZ +double addedForce_0[] = 0.0 ,0.0 ,0.0 ; +//additional moment of Force (system axis) mX mY mZ +double addedMoment_0[] = 0.0 ,0.0 ,0.0 ; +//the deformation method of the parts. +int morphing_0 = 0; + +// post indentify +int integralOrder = 4; + + // ---------------- ATP read -------------------------------------------- //@int inflowParaType = 0; -//@double refReNumber = 2.329418E08; -//@double refDimensionalTemperature = 288.144; -//@double refDimensionalPressure = 1.01313E05; -//@double height = -0.001; +//@double refReNumber = 6.5e6; +//@double refDimensionalTemperature = 288.15; +//@double freestream_vibration_temperature = 300.00; +//@double refDimensionalPressure = 0; +//@double height = 0; //@int nsubsonicInlet = 0; //@int nsubsonicOutlet = 0; //@string inLetFileName = "./bin/subsonicInlet.hypara"; //@string outLetFileName = "./bin/subsonicOutlet.hypara"; +//@double refDimensionalVelocity = 0; +//@double refDimensionalDensity = 0; ######################################################################### # Old Parameter # diff --git a/A14_TwoD_Plate_TotalPressTempBC_SA_Struct_4CPU/bin/cfd_para_subsonic.hypara b/A14_TwoD_Plate_TotalPressTempBC_SA_Struct_4CPU/bin/cfd_para_subsonic.hypara index 0d02afa..4dd8dba 100644 --- a/A14_TwoD_Plate_TotalPressTempBC_SA_Struct_4CPU/bin/cfd_para_subsonic.hypara +++ b/A14_TwoD_Plate_TotalPressTempBC_SA_Struct_4CPU/bin/cfd_para_subsonic.hypara @@ -60,9 +60,9 @@ double refDimensionalTemperature = 300.00; double gridScaleFactor = 1.0; -double forceRefenenceLengthSpanWise = 1.0; // unit of meter. -double forceRefenenceLength = 1.0; // unit of meter. -double forceRefenenceArea = 1.0; // unit of meter^2. +double forceReferenceLengthSpanWise = 1.0; // unit of meter. +double forceReferenceLength = 1.0; // unit of meter. +double forceReferenceArea = 1.0; // unit of meter^2. double TorqueRefX = 0.0; // unit of meter. double TorqueRefY = 0.0; // unit of meter. double TorqueRefZ = 0.0; // unit of meter. diff --git a/A14_TwoD_Plate_TotalPressTempBC_SA_Struct_4CPU/低速湍流平板说明文档.pdf b/A14_TwoD_Plate_TotalPressTempBC_SA_Struct_4CPU/低速湍流平板说明文档.pdf index 00f7022ce20410f6abd043187c527a782dbd53a8..891e94c9dd0cd9e6ebfa2da4eaf0d3d66db7ef1d 100644 GIT binary patch literal 215094 zcmdSAWmKHmwk`~Wgx~}ZgisJ9XyNYePOtz$3U_yRclY4#E(rv82ol`gHTYMM&hGBh zd!K#Bxa0eA`SVIGnQO{3=X#$7v5bHa6)iP0A{=oI_zw||7C-|q*ET|g6wFvdAtSb0>I5cTwFj&kd2lucuW8tr&1?YlKygD|Yc;@AF91EwV`l(8)8j=Q@Yhiu8~kGw z@XEmR+WfIJIgquvtrb`bu;79YHp22YS~ei?y|6qZ;MdB8x2h@4(9v zGB>jUHxr@-Jk1Lfq65%A2?7+N2hjfNDZ~JvWq#@@#0a2$>IoEL0?;x1F^00Vwh>6@ zaTrlku(s*IKm8i)*CR84?pN<$k1PPXUt;`vWChUumPN+OTt^;cqXq;U7pMSou=zC} z->(b*uZ!rTYQWaeHPqrWcTfY1Km%Z8Wu&I31F$gAQnS*j1HkGvvjMBd8t^0`P}s`c z)&eZulV3bN0Of%SR$6A(7LO{_aRlFM;3mI3SQ0W^QL z$m77jEh1!SVgs@Q3Yma4E&$Ro*98G3KxX9_Za@yxq3 zzppPSB!tD1u+r&m>fPf{;W=T*zIb2{c~A* zo73IKRnwIDBFFWH=7U4GxVzicZBslqw_~NVlVz*(**dfB<&OK|BK(cU>A}REbH#U8 zVAJ;wuC@8_dYM(OYIP&f;wtrI?XXV#&YHV+aC3suas(Fk+z!{uHqHgrs@EG_#rlXMr-K-^AY9Xm7z}C&S9&;LMvS+tSJ5+DD z_Pw3EbltJr{Mb>4W-h;zmcJ<(I(EEL2~-A5_F}BHBJ=m-$Que# zkgLmfhDo*5vQtk;D%2`Oh^?4`i@i#cNH*A;lkY-jz{m}k%d%WBr1x{3^CKaD17aRf zsNg0ZFMg%w8C<|)9!k~g=QV2o$_eR^N(qOwjs-D+*wCc-297DnJXwMbPntHl~?a?LiWATuM8#+e42ssa^=K)Gt!zK zOffc1M|KFKmvD!MM;R64-}|(`+3tPWQ{c?y0roiX*3zOD&st<2k`{YPcDCvlBg_aK z2>8Wp-M>jOY!7)&{{edTlG;#PyB>}tBc}Ly3eySHg@=^)b970{GK0B(1i@e!9cx;} zB_>if>-He+juWj)SRI9MFD|;n7pYtz3P`P%`=VD*4L=oP-b82jH4;+<41!@ zU#aQH#|(|(G3Qvrph5w7_l+aNzj9l+Oj7G`)LsgA@aHE*u){J_!~~5%jE}k>ZB#EX zap=qnF9@L!Z{xir;tiX*!SoBz7~=3E^f2DJh{Q9e4cjud#D&+FrZ<`@x{oHg#T?;b z$&_Rk@e1?2u&+iZlS&U*m~40UP53N%SZ$j7j9vq7HC)ac6JeErY?^Y~X+{b#dO-U&6Lj0*_{+qz{4{UnpZc;<;uKdlSix05F zfXTJiP~e)-*JvnAF+n@n;5@|26!xze+v&dp?xqzB8%&z3n}mP^d- zjv-}sl^0lDvAm#)O~%B@qysR$qe5>Yfq-oN0{?6yH) z2H!=skToO#;35;31;0RVVS%s?RU9;C#rH9wb;KX7d*pMkT=jQOhnFE%#(eHsa043y z0!6>qbBlonZ|YBDRUSdjNltR5=b`Mj)9;;1mc#0-|@V z0WtEPg0^omEHT?ng>H=scbK6&nLb0pC(flYR+w-@qsnJ~vqi1-J|cc*g>V4-K0rbU z3!SDz+6 zd@5dzBSTo~f$uENBxnmbkO|(X9U5g&gU?SDFEemQ`DF9Meqxb?Alo)&`v}s zajF=aOX3l^1MhlJGYIIYnJM6l^Z7~$QL0hthDBzTNeao01bf5D=sk+qPP%TqKeDOnb2x0H6A+%U9O}aB7)>r`61^KzrJ+ztN?Aak zmQTc|X?;CtW3;Zg)KSeqxvjyL*q%co=htK0}r@C46ybD&h1UUjL0Ynw&V6W4gK&kHCvES<0zU{ECk>1_25b zsOu8yw=WA=Hp?X>+@gtsIRnGwy;cKe8ANf<1HDLIB)|6iq!l$9^irVhyLT`z@Rczc zk&cIf#CY3y7k1Vte|G+MWVZW_kv*nmhs|EoFed=E5R*K5}2$)sA^XCq3&~UpK zD3BgLKR=@*dk5~W$)^QFY6{R00-A(HSxt$R6c55mH4+w-5fnrvc7xVB$qc!oRA{B5 zra277kra=@Ln-Qv`t7bL7I$hY_q0Bc@dX)G!bzLVqa??ahVJU_O$GEiw?`c<#0J1z z1s&n<=4aswShSYSBuaAWN($S{r;KZ_`O1_!(RA@KuV8M_D(Qwqy6Ye%q!4r}bceJ# zRFHKCK~VarmQS08brq(N72<4vcztU7PTSt8!`DzuJtZYLO#&6uj^K@o<0le5Z!;3l zy7wV4%;F|puZ+hcii)1ed21b(i@gbf(}hHxRIAAes9!@IhO_l$=r{#$&R*4t zA_^>wr!&CJj5LK35lG0fIG!e}42R$^9Pp6WW3s|nnC+{9{%+8z5NK^{Jm<6C-KvMB zYl!&FNOa;pp5cWwWus>aK@}nN2P{Ors9>{@QbA0LAq%{&{wybsa04M>aWoQTy(S4# zW9$=5R3e~ugD8{#n^7Y*;UV^cCcgz0WRy+RHRQK`fH%ZG$hS8{M%%fEd@gxfc1-!pY?&bT-Y1awZfRvHn?q zjwCF{k#)cvcsC)p|-ECud5Vrp3u0bh0Xl&jCEa^GRU`L?Q1Kq@kg z82Vft0vj`%1LJ~Rj6S%AdPg|OHvheK48aM<2-y%fr=?sDzhO_(N@JRFtj_2m>_(Zl z>NmxJKp!D>fRd8c%Je~XG-X3~C-brI_!r66adagURp`v=o*NKsH;|p2pCjsrW4@tq zQ$z_ZU&&D+k|pn8G^6r7w3tLegj^jN;WBmA;X5(594Jl~!BXZ#Qw+8X1{Q%Ud%LSr zR)fW6(~k^4rTrZuI;>O2vlB7{1~rmjDHO(JV2!|TsbdrKk!}GkcP)sMU^etW8|QN~ zZjWqa^dncy>ZzP5tf{l1-=qgLZOtC2e(LhduH~&&rRlu&Z}_BlHPc5pfkVy4{ave9 zH$jnl_#33!=(;{rU(N(3K~wPyEUU_bFP|_9!u(HP5@BIjv+*Mynq*KZgQBtvtlkv8 zANtTGO(%n(H!&E-hN#((uK+I(=_h0$#LNu&X|w!`n^QT!pC)D?^EJU>%{a>Dpy_IJ zGY`&a45)!wK-MaTQq!#K-t#Eo)cH#u{9s;)tm@9CR3A-X}=URLd%v8@sb z^`38&&u0pBC7t-+IkTh95_hFnzhK|WEs7&q84zx&T1%Ru_Dtz6_MAe^E#jg1oI(cU zwN&fbWk+(cJ@(3_U|LkPd#wR2tT94G$!TZj`-E0!jBGk@}OTxUX+798P3u6qW@Eao(PpicF@8n1&_A#}(h@+Kic==K@||2Q+A) zu`Qp;sz!5GlM&^i?jfqV|8ypp|1ky|tL3)C5;2q&lgyL|(^jZRHeOC1Qz4S7t;N zr{L(Hdso7$EPoxHi<{c6k#CBPMGh{~KTsF7`cZLV7SY_l+%n4Wv2XShNpp3qM-dZ= zsm^iQ_hQ|kcc(*rv@urmOpS=^9CneF5z%s&dP1PeXD%yMD~)8x0r7Q;vNK-W+lh+4*2iQxYP~L! zA7lr=a%detZ^c^RoooLr5h6LL>)QxJpC45#(%U|ioOII>=4$6{0xzV3j%xw`AtpP~ zCNI<=>7?pCtdJIC1)kOT-PG7%l0tni=E}kV?MX#`qkWKU5$Ejr7GDNO=n}O?r6FFW zY_$U7)=)z6sclp5XcJky99&L>pjh{uU3hcvKrpI$NH?K6sy)DLJ2nllz=?=yv@aXA zr~}y=%jAyMovPP7{)0edHJh+GfwC{UDfEqRv}kPF%W0!^qT}Yu2pM6PY^NVBMtnS# zufx#-PT^Qdg_LaV667PigkHG_r{j|!;PLZX$BosYbUgQUv-P*%QSZbH&Zi3%)qylu z_#6<{MH%&7iMm{lpO>ik(jI7C;Q| zkh@#2-Nn8+sjsqTR0<)Pb+PAH82oJlCZ0r66DeX7=r>|BDZ=+ImtsLYFIexZbHD$5%{>~!}1wz_%@Fc@$v<1j=; zE!?ehu3TN?V&Q|Bk%zM&v9>Xn?JiL}|C3|Aqn~Ovh;PD#@IKCucwT%rCf@t?mrm0t zJvz0?v>hM+K=vBMtL+sDeo+t4%a`x$;xW&TJHhsa^Ggpud-u1Iim_)n(L6;XkZC_F%9iOlyO;oI%#iNui9^5fr1 z4ry5?IiOLa*}`egY@bEfqICsrEWr;hvTfPTx4OKH!^9KGVrN_{IYt&V4l&!oEa%P2zYqw&&py~fEnWb@xkCMK+V2A)f%SC>b8 z_Y|XnnbTFR@#(h1uC&*bi&NZzh4Or*M{G1SGJBe$}0G}#vD`dJP__< zpX-N-W>Gmc9l=_o3E1E*V2#XX3K7+$XOkz8b>|`he3kFc}C;>MJRixlO7+4=C{ARUit( z%^EiD@im+%X87o`qdYz-pv@)d@;$~>u}17A#Q2?_0Y6cqIHd`-ADhw(@D8em-4t$eBNh-vDVIC;2mufLt z@6qrxB$MP&K{nqau}{&ixSHTS8qzU&L7OyeZC2#8&5|cE9+w#j1shZmhuNrti=-WK ze;H-7w4>z5HK(7$${2;N9?RlXl%YA5EC`$0uQhWTn1&ofu^aIM=;p^>-MxCduVgTy z$hgyNNRZ2sWpHZAOPqU?$3L&vC|&m*$@_<6;*NnFVY_5%aDJjVSt$vsdIddJPD^k6 zbimDlrHP?YHPsHwp^(=ZDw@ZZYq~W-g25Yg3X?B9O+Jd-mWQ$I#lW_@z7rKjYrzns z6IMQZr+2orJG1Ofsxa_i4Ut+iV1nYboog6a!wV@4H`YqVQG zf0Pu^J;%eMHCBJ8YUtexSVF2hk2Llt$M80=oLKNcRI5opGs)>F4b$f7^e5E6Xxb!%b)^4`ZDPE#9(;zpdJy?$05iR?ehK0N; zy6+nsFJ-RqT|FK1;C?2uRORRfva8kcf7tl+!a;E{6?T>#Z@wu@daaQQa^?BgBCb~e zQS3+f+3go~@FWYV(Hi@xtc!UTDKoOF;>Q}xP~-P}R}b5e*9~nMlJC9knkkK`N{kCD z*0`Fiu=pK#XFUFD0L674lQck^a`wP%vK?|~dWbq9`zVVHL655^=KHx!8!VrOD}x`y z_}0LXtn2(f(vnue8yY_@23rr{;$D)H2hoP2WAR9xi;ym9x@A=|B$vQiFom1gf!#6R zk#DUOpy+LAoENcu4RaT*Vv%);>r^}WgN@O&_6&=6oA`B2}Yl4-g=LBz0iR9!~<4w4_5Z|OsDn&F$5C}6Lf4d=X_$Y_(%_Zrj zRQvrMf5~m;DRZZVT%vGvZHYC}hZ*!|M2noP5OY1tR}#_Hh?B!;=(a@F3v)*HD_Gs~ zV>6ui>BrkyPV|W#WW0fuip1(jc$HKgQB=C_W;}tX8o^tak@wQ~DTGJvIy`xRXMh=@ zQ9gG!$A<;?2gA#a`4EvdA{l&$$?yp){_VT#%u0%f(l#jRi&Hdc-zAhT@ zB#B?2+_#wH@4dY@z1-tISZw;{@&F#>;G}G`Y5sHBRZ&D+n!9ZU{O;7-HhEe%S`p4L z##MdZavuF%ySa=cMyEG2BtBI|dD2{^%FXPZKlcIJw=vo;%c^K16jX)bSfxqPCG7J7 zZD*XO^*{LDfA*u_3Uuc#2=54>;&8<=S2#~jPitc}NXEZgze-kWf&nhN9BVFe+%im@ zA{N2}X2|Bbm;9y}DDATdj6-eszf|W+J;0#P9j`$o-0yYPA+OvwmbS_JT6x3WD#FwC zcH6Sx6`jj-9*~4~85WJK50&z@g)HxJaFd1eOH-|BNH?k7NF=}R#%I=fV6fexUNGsP zw7TKN&5hfDegE1%M;5MbY>Pa7(}szTyx75VLfU+@*?ZrlZM3#q&ERIqUE|&gheP`( zB@SVKSTx*$yF&v0?a6ot@WgwQo11&tI#KS@SN<9okdq8-Ku$`a;f@w zi@olQNo zZLp5_n5)&-$QpOI*G+8?-zn}nUjP2_S7gS_x6ItGA*3j@6iVGfRPg&6yO}Pa; zWH%zWa#ac{LYPLaw3twsQhZ_A;Hf+(t&FZvFBcJgsKs8yUO+%S7`^8Re$rT z-51!{xBgYZI9;6xciZx{&%|0-JDQc~+^yV?Ul3n4Sh1F@mEfRXQJ*aMv!T1&7@w*u zs^891Sl{fg`{Sm=FNui~bYt^&0#AMj8Y>;^iN7^WIusj!ZJuc;mYI3PsaUgNrSzI; za#5?z>FTUF#wt=xTmt?01l2LeUw&pmv9mLooShE^a`nBA z)MTk2xJYMRVSawYdO8a4ns}&ISITK~)^-1t`R)3%d&|mg{0-X&2<@qJ+51sA+gRXP zs&V+67IT*)SK)xP+gUv~f3nWJhi}7-(WSdH9~ar(cD6!Ke}+E12;jEtdZO=sb2h)3 zyhkeRH{jtJ1M*1%rOd5NwM>9IS^yeqMjBdHroWO!k7U^2x;~O_KzUnjn@6Hj z0n9Hx4Jf5$3IY>xKt3&N&{GROegQ#2K?(sdnWSu}Wd;;91CvXJX8J%SLo;48Yr}s% zKeiSCS?gFCTG*Id0si3X46Uqf_zkqI0Q7WV=JU^cB|}{s129|3@W`3|jjep__zyw< z9QcVWe3J5iN(Sb>^sOJ~5e1X3hB~}v`X(R%4UpGb=aHdgp``)SYrpQP=)kS`wJbzH zhWZA-e&V&$e-a76z`zV9T^)Ws(9*HeJx!?et0e;s4N&=yUUZB!U~&#*`T^YKsSV!~ z6-Y%3Uee-%#djiehEH4DMyriLymASRKo{fqYc;!@l<|ev-I)SJzSht2Yj#MIl zC|6etyi)LLt-;HGv@B4;T+z(%k&gr~{fT4#>nfhwJPD)*pnXz|I^a*<`svMYasTR& z|4FRh-pns5@F>HhL(}~tT%Xnneyw0GEGi(WWdZyxI8Z7#T0jn;jd<@ZQWLHQ{CpJF^o^*aLolPdoAV4$U8Wcf=pFw*}m8t8!k ziUvj+mcK*;0|V>RlR!%kK2*R$`^bzx{`@-{o;3P5 zJ^lmZo^1EqwEqLB=>O)f!vD=({|jc({&D=^-+~q+9T@Wd0IjEXf0O#(!s~yq*?$uA z|6QB?Tg?7X$%WxhoAFv1YMDGiiloAypz`0W^y}n?(7&}37})=1rKc41H!J-EYX4JY z{Y|j{-7c&&jDHCwaF+Qqu`tuI{259N%&dQg5*-uxr^m_vLnujrv>uZzfS&$$j$!_5 zRDpYgqY4b?bYSQLfT#KUQJtsbG5eFh!4hg#;0ZdZ4rMxLG^!y z?N77(Uhsdz_J1njfA_@y;}VCF=}%9jrDy&H*#E&3|0r=7|LT6U%#Wb{RN}BQ|CXYeDfB@HcqW{@9{|ivi{c&>a-vR|K9qqr60$iv4k0SJ` z>pukk4|x7h3ICt9(?8PKAIIwcWvZw1a=#P@U}9ha{!t8r%L#sS6LTwh3oRWG7!Ln9 z#s=gww6T@}S@D~jT9}(XmEk~9@Ub{63-iZ=Y5+Yg6Kn8x<3FBVqhqCg+Qj_c2RWqd zr_R?D0Z@FU)iHJP$i6Zc^%Ol<7SJeOq7FWS%Q~U|^67iVfq7~?nq|UQpM8iG8ia@Y zJ6s6xUj!ry2z&uh00zMq9ul4yNC*gzVh@IA;KxJ=*%#nTrB}>GD~^VH$EJ&U8m|(D zyF2LAm>G$`i?rS{TlwSNL+cSes29<;=pgJ@x2`~2R!BVYhwwJ9J#e)}s%~R} z?xw;q>3;QjLm5h~fx$N&Hylr&e>GbO*u%j{s*m~+N)06FY3$`uiA0K{-VNg^w)ZLO zmsEVXYq<}?3`OSIa5!Bz%jaxtep3>hnHF6huFrLSa#bn82p?%ycwbDA=a(a6#5dWi z9iwWf*Xu22)$N^HNxr)~Cu&HCZ~8uPZLOc&%Lpm+biniU9pfFE_Pq%2K~f#cw-L=d z!44YREBT=b&J#ii3t9uijjhTb<8{7wy%uQdwSwIf3UWW2$JhmIe~8eBQmPbzG}SNa zwUr`J3N{uUCg}wodj#VnfzK>nxAw-D3@ynoD8}z=M2~RgRJC3Z4qn?jmW<@@U^Pl0 z)t(Y6-uKEL<^`P`e{utBvyxTQk2;w+R7J^DU|OGvS$*=E4DZOh;{g#+DKHlT&<6vh z{$j}tpc(dM3bfly!Vr?0PTg;-qCMllsnlc6A>*DMEn4A2WwzF(OBaR+QIFCS&u=oZ zPLSR5W1DVY>OF+e*G}%*R5kE05JZ+XtsMK86YiU9K&|b{P0@J|x5Lc-dyvX^)Zz@9 zC`cLc1v$cr{uPyt&r91UF6JJ_5MPK{7&L2@%KynariFvxIILaip0 zn->m0R%)fkG}~L*=xjw@|1mw%XiaNMSuFd&T5eb}Dcn1!U-BvmQ|I#?WDh=nOpf0* z(=!#fG1E*}jlS@+d6BujdimsCX?I&z7wR!~g=_MBQLVFmS_wtmoWAL}4t1o7*B27m zRG&R$7ZoO4J}T|Vm06&RuR>Q{$j#FE9F@|B1$TTqAZ`{3q^~IJDaGdI+YfJD+%Mt_ ziCZmw=~3jN#0h1g-&l(sy^b0^0`c)#03F0-E*g6fK;^}f7*7&pJ+0&wc_BQo1$xQw z-$oeJ7y>xZbfE-ZgD*XBBJ|)(1ngfzGq|-x)Aq&~Xkc}L=yBL97PDU3H_hSrtZQS+ z>c%(=>9T(Wk?#LPAiyQ!ZDCOAX=Ks;C=lXB9vrCrr$-J;u` zp$9(})&#GCw$okT)^MDRcy%pk4t&RJk*}g^Xu-At{F+SY$g6drw zkrbvh+}#L%#;0Tk{&;K1##@nGcAE+KLNl#A%CYelz0CeA`@1V=2kdaTyD#_vvc8k& z7uU{CMPpmJp^hSG#t}BIspTAi#hIdoX=8NV0h1x%8J_g_4Y^JV|AO|=s}Cy^(a;T} zngq>GtU%hUqk#NacWx1CO??Tw`vb+qX{g7(`>-2L-??NYby zF~l-+@AddY0k^KDH+Z7j!xc_qCSP7B3$C)${018~WP zanLZFj-pD#w)ban@int}<=j0&9ZF_*%M23HYWx_atz(TBSuT>E|42SP1rfl5-ep_W z?s760zdSJ@5XIFQ`77H zR3XIJHG^|Pl3#v^`xA=-vjA0#)srhWUXabcJ!N;c!DdkH_AS5rxt}1$#`nBEB0EvV z+u%YU>N-B`_%Nd=zA`gk1qHkkLD=;RQntk1%M#|>sIZB{y1Z*qE}z3wvW4dhUr|!T z1l_6mW^9NBPFolKkj@0oPa37|A&g&Z`i_c37Yinu=^Nd^YbT#p7vPy}AV&Rsb{lhg zn0l&HcLI{5?KNYQjNcC_|6G+&Pd)3uk0$WC@^rDZe@$KVwK}h$BVFVO0KqtKr?NT6 zA{<5Y#Zc$Tq#09aW~-dD{yU)-m&KuVfI3$IPkOE#R1rVonU|${Ei#Ps(aj_p{~qUl zDNnDzrO;yZ#0$O*@>Emv@1VX#t~9stwBm(wLXdJWUm)6q*II0&5>J(^JW;Lt=&DM6ExpB{VGR_4ad#JN)j6C5{k( zzU1;;ixxcmV)`+De_Tj@0qwTc@y$^wia566h5wSZt#$kBzW(+LFDa56)K(*27bo#j zf{=x%`3znrv{cQ>7q189RCX#4ZwDz7`9#ZJwJsPHuDe`9g}e|gx67qgYLrHjit8U; zcgU7dmpVdpczLPXdSEdNuqdR4ae$&(4wXDEAyl{@p z{UJKtbewkF1-Nsf@!qYRqVahXLWki@7v!Xtb-gl4HSb{?O*HUMzTqM+M&8+^ zHSQG@vD&;zzHr)Qu`8^hw`J8TjkBysh@`W<+C1&yD$VL2XR*xSIjLW9YkYGtIR3*4 zrnQVcOtPuUcA9BIHHJuCL)_V@nb+IJn`F>U#rj72qIf>B@iy94Q`h5rW1h^_(Wpm_ z{FLjlz3!|N+PYBRchDZ@roNlk`;jJ^wQp5O-HQ|ZIsLMWOvN|Xs`2iX2f=44sytZa z_*^*Un0JIZ+b47NT%=_q0F#YmYdsjyMt{GUmg}d{cd$FB4M|d*A>wd99UJ$!NQs?y z%hI9?DTBk}PfuA-kGHo|v{zZ|vTCB!qj5;=Lj+;)Xa|NGl$%8w8V4@-wGxK?#y~7; zQvI7BiZ`>pTqmU(2aX5bbVbP>f3g;2aCT5XuokFF3Y+0|n^6Tzo#U@IWNL8ce=vVj zD_ISejCiNg>dTbI74ysVTo=jUimSVbXkaos=TA&GMDK<`?I;nR)-+8fO4OU6t!_m~SIwyG7h0F1dJR& z*hwY>-H5?ji*H34G{bC^x-Qz5T?MOKXFX>YbwsJpOE^-};y+tov=X+^x0&o=^09Xz zYn8^#DG^Oizg1nRrMk9M{4$@K_?m1yX~C-%7&U5ey8QEklKgdxi8sx5(aQOy(kb!# zqDxV{?)%+Vhi$uG9Qg%QH`o*W^_F0|s{HX?i>-X3-qJ(Zdh@|zYg zYcv}NJf_bz^Od{oA4xs78gO6R6D?iOW(XkYx|8^9G=w97Lp~Qd2c)Q(dWWf^3#5!M zd+(l7X+1-P9t6a6;z*;J_pa{65)q&eoLPB3fO9gq%$4wX|5)a#KpH-lxpa_OPf7TB z_EQpu1}AZF5=MT2oU(J({6rh2*%>f1GO;{v(f_(L zn0?$C_{qmVSLvoEF#iy#1TXT+vBIm0l91E`i<+M1Jr3hT-9`V0HSL%yycZ5_i{Pz+ z^P^fIps^z%3LbADPy?VJFA-nTA1@v+Q$)5758GyMYOGCLdF{*0>KX^dN+UF(;702X zh0iI5i6J1~cm!}~CP*19x=&nxWFnF$HJC}NU$ZW6j4#3}|Jmc6>&C5i$H7Yq0rADn zgmWw7tgFJd9rb-`#@P#-_6?q=_j@Sm5UCJBP^sWan^uCM=Mkmdhr{Z>A&4d{T&si! zQg9y^*;Q6PycPGqXsUgi^~|iUu+<&z&FANZH_F$pVwqHqQw#pa8lYGyfoh`V~kvVmNeKIT2d5j#E?3v*`fbvuDHs1Oj! z5(DWYEx1CY68gzI^C9>nK$5h~3~pZc@~P+=g`~{F-Jsgzt|$r>T8(zM!(=oGac@3u zKb4As^e-`MQ%k4j>Ql^lpR(fiBXp%cgA@c|gYLFw{OLw2+Vlhw@?}VycPd!EB||}c z!I|cT36!!ZS*bb+Z-(E229c7D5B!80U~b*z+uAbU50J`$!#mYrIQa6Mrx7Mm&(;&` z^9F-(7LJ+~LMnti6a)nNryTCDyCs_Eer%o$vDkb zh}b$1yi(nCB8A6Kuvw>L8Si~KZK3r08&-*J__{YLNWw;&;>c6av=OGl1m{ZXeH=c1 ztMQNm8~% z3gh%}va8Cy5^)^|UIh{c*zl=6B=#c3w;)15l*6}j^Um6sS!NduyMCBFR>iMW(uZq- znJ;$^zcSvrG&a24FRS|gyyI*yNw{=-k5J2_H4-$bLKr>M|5lNNY6|@`d5^U>R)--~ z%TSbBL&dNq9($vq~NcojrS0!0OC9 zC3P5unJ6eG!$5oWf<@u@G5WrwrHBxLuMnT4r8cD>Z@#4QJiYLMzJF{0A>bkMc!7Yu zg?+pPKtw)XAff`edG}%NaBnW}w_1bsv(5ce`P`NppdmbTzFeUNZ9}(|oke;|u|VQG zj(k7VrXlwws3|wzVzcFY+sbwPcbdNKUX&Rnce+OJ zdK&Fc#rN0GMLa3A-{g40~)XZuff zl4U0^pu=F87#+vhu{8iwurY^O!MzDpmVZQ9j8^EcC{wb5GF|bfR~I7^ps%10QX=9f zm0^k+Wd}eXgDp^wPjLs^vhq`~(dZ@<7@CE(hJv>7@Olri!fe~l+l2=PaL+P%krAwtT!kAM81KeYX{wwOns)ua&@G=ab&^fA-w;e=M=z}R8KI6r(S<=() za`?o`8?BVeX*g)Cb^VUB`V#PBQH6;Nl830m7|t7p``9#g`7d@PGA}c5?G9<(CGXs* zc3MLjEaFH{rdX^drGnmAPwJdhgw`ID*7vhVdWMkq&q$rT!sPG$;O0H`)eLr0C2EPo zdJ>K?a#voYnz2R)OTnau%=W%T_5|$wWWm}w&+u)(!3dwL1m{Vel|Jd)!qnouHjqxgsq1IU z{q5#RFC^8i8QM4k1nsR97XQN5I(f9*JM5h%>pL5l0)_3Fh92p_`H#y4!nKLa`p5+h ziFT4~n@4j2la0u1868H2ip->YpXDalOYtW8k(;FqCQ2h8vmOh$9D2-pD2IN7KP?!M zU$uc_&io23rlv#<6wSTSl3ZqeVmY|p9reLXVC|E>Eu~LjP`*OxyafrjgWObRTHj+@ zG%n;sb%(NkcZ-|NR8YK|EKg&JHcQZ(B1DlCgo;l4J0S7wl0u{%CUh)cT0V#HU@Z4W zLQP$|7#|MWYG^A!bHU=%cg5SK;hpIknyNSA!5uqJB3^~Ut0<|CB<#0o2l&asG@z!~ zT$4*#6BRD2R~AS)gm4uopuBqo!Sb}&d+1^3qeA3dGzVjJT6epHQZ4)JPN-*n3I#=2 zyU=|(JZ}liedpPPm;{GiB3l)Q7oQ!2Ka7^M8sEZhPQXT1T@+NZc@{A{eoShcLfzRw z(Foa|sR(Flc_YX`y+X4kj8gO-jKp!b#ZQT`CB-COhBW2`XAdJr0Jw( zNHcwA$-{uI|L5nQz;#H&(H(3f_XehL()CR<0cp0Mvg0dC;oedZ$h*h#e0-O(A(%E4^!D2% zjw>stZpF*4dyRt8Q1gDUp6j8e6|Q$<0tog9573yxjtgyucP{LUDlWkVXfeqD4v!}& zAuwL=RV+?hE*e`+J8BBpsxmJEe9Fc~tMKUP1D%Q7BuO7b9r*e&)VbkrVQ*HS%lIVA z!)^yyAZk)V8@9fUdiv1rhAJzL#EnuvHNd)bHbWvK*YV=; za`#yOP6;{|)G(*LmCNysLPeTNTBA}EO?fRgwbX$#>A2gaxbXH&W?JB|TUo8J@~S~_ z`)2BNltEr794lJ>!9}@X>jZ8}(no$HKE0B^o#PtU=3~F0*8-QNWdjk+By5L}xbP2j zL;h^4*n8#5J5J=@pMKkQG>dPDX=Qo-U(-CK z<-dDov2#j5bNiMoqH+8q!0GRhePM{ zD?9pgC|crG&yeNVz9Ra`AkSI8us_3PvXkj@SISKfv~`)>x}s6tLtr*alZRVXbqRep z5IU<9AndUDMxvmM3-sEHWZ-@yFqoyP^t(uvJDX zLomgFaM*cupGGm-^_Bl+vBz3)q{B`=VXsllC~PhAoa);`+YP(#!k($SbIgsgck< zOn>vWd6cWoHX0B^;sW)ld|iQ+(5QmxhWSJd@_9=4ebRGJ;6Zt-+f|T@{PC!}p0eZ4 zMzyaCM}o%K8A>5O4p2){qdE@}PO-&oT!0@Zfds*i2L>YHm1U|pzMsez!rSqm4MC0a zoS#?94)LJ7)+W+ctN*<;FXuXjvdV>!UJL#U^_OOR$;$sa?z;Svd@1WIGO z#VxS%EWXncAJ5<5etS@snmlE^<1<1)zN{a0I7&|GP3b(M{>oLJloEfvGmoMt&s~&Rc6=$ zG)W)n5PiCCye(nX476|I>nlc-?x|QUd3=~xXaZVy4foKZVxCe*^hO=Dud<3u7bHoK zs6yvx+3o9MrEV~>NA_?lKTCbml|LJJzLW|(pih8Hov;kQ;jC(A!^I>>cz~P;v^uF} zSK}fAu+V?!&>~{dyy{}}^e89$I;d~sMaj(G&qaW`an@BDeIMv=t#C!5OX7I!ASt0+ zdCjUsT7FG#rQW4Oma(_nyv9l8L&WvaMJ5`d{=PiOmhS@bhb-y0 z%NdTLO?MT-7RV`Ft8Vcv==*nJ!<=%ZGNj5KdtL-O%v@isXh{ptFj7%eo660sQoqa& zE%z%BqNY%^7hGgrAvxLxcW89op}?ko;>PcwZ$}Cebl+<3rV|{Ua_n_hjaYMm!OP$| zI~{=~7=cykg_H7O8La15xJ&0J6-WkGU+31 z?-J<_bw=EdUHpq1iQgBZN%W*)$VT9l1u7LUaV++4K`&p!>Povyq<)E+(4HgUxV24{ zu`t?KvGKB;?jAxl=h$6;=&R>%hUH5wA7k(@d9~v+c1lQ=Kx>waa3i+K1PqJWj6ya; zW8R?ZlN*tX@>)eYOUzkC0%7R_owB60&?WEAyV#Q^G~?z8MWlXG18B zGHf(ydgwyH~1$}O2O{dp`NT+JMz~3GW9Hn6e;lscn5|L4mxF+$N<&y z>KvlNE9t{TH8!ACN;iw14*AT;wm+$Uu`PG8&=L^_XPli|MP2LOE~UG4mBB7I{SSh% zRXOl>?|9$VvHr*2K@hK7drv!OYBVhV5L2EF>T7zV%|p;O6~%Wdd^mjy{bV~WasNK> z1_BPpkPc^9pIOj~Uw|t1PI*jMXWc6{Zf2FThKOWaIzrXfT`P_Ydqh_$6jmS3;%ANS zr1^1Fm$1zKibP?2i}s$wLfJJ*1UMF0fhL(EugMf)G0n<~+rYiSHE^iPFx;nYK4Ppjw7LKy(TWr?S52?b*x^ge!?DRQqW|=+|fz z4wR&08sD_btd$urI0v)Zl-%po&??A;XMtAiaDD^o&*mahY12{r7uG756@yjAp&>{x z{kS!Jy_<)gJ$+Z$`F3~=PxzG*%OckDh;YeoZvf|kiQBA+V)x@2M96Ke6id%8#|Zc{ zgZ7ZmW!X=(#)&FC>KA4`fm_6~h!80O_>-{y&Z)E4WsP}7)}oP1o$x-+w0Ai51f=b_ zr5|x9Uwm19>4g-gOINoHRd#CrYr|BI65wR^bz03cMwP^AwK&6_ia$>7H&utAzq`zFlc2mx;f8r zWIfmAux>+agUccE{FoD|+$5yAavY=c!X6O6A#E1ZsmR1#_r9f#sw?RZ4_qS&*hGg_ zEt^nk)y__r=2zlPk-K{>^jfGiyy4D7W2!f&>k8$Tk5j*<=&_IEpjgGtUEFf9j`=ja zj~cfJNjY7&!@|y`Ym#bs5nO%2`BBT0E~p0h36p4Gh|24Sn#Dp}{w9;!hb9p`y`?e$c9>g%g%QkaaBR!QI=WuhSS4!9VaB1{kZfA7 zM_@_Y-&@*0TjWb0*4(!jBr9%STmh)vsPk5!U?cZ;Rv*NDsd7mrm^#NAVsgxv91C1L)k z8G1dbWdChQR~2v6X#D#T=#uKQkyl*hx|0<#^AR8iZSK>{b0T7YjxayBjxMaZpND7q9wJ7_=_Txl(7&w9fM=_6TN$7~_gF zFMQPsxNM2{QVWY?-?5HJC3Rw`+x$@;?fD|BQvj~CiPG2#MJjPXHeUPB?C~2mdIhCN zFzkofJ+TFdUc6Rco)gMr_@P7QK{e&HP`N|mh_!Hqr}W3?qA`?L_t5kK>e6vXIYBgFaWO@SqVqpXBb%}#2bz}b z?WWjb?0;7pA$KP6s{Fk)nz#P5G?LUe4y{g}yS*N_*SZ=hzkiHI+{<<#;z zq8sV!rUV@4%P7-Kv=oD{SS8!d&TmFx$L2OVRK-s8OzuC1vX!3+7h?KX-^EW#Lg~*b z*F>`)@NkbosZqL7p1#jU^EqsX0@p&&w8vNX(6YAUY+r}-5xWHfDjS{tKjz*tDvoXM z*9DRe(h!`+A%x)2xD(vn0t9Is0t88Lr-N$<65J($0KvU+cPGK!-Tij5_Il6z?zQ$l zXWX;z7`Hw&BT%WXnpLCfnZN%tXGJRoSBw;H-t#}J&lT8yETu0wbo;b{!|#g8v<<-F z+2X0(5i!`6C)0lS>_k#&-Wl8#^!TwwU=ppn*q|1yREd(3|73BUgI_d0In^v33-!Ib z$&~CvdmCTDEk1jF`Luhd1WjT3dncsA5~?XP!FZk6Q`($`0A`s^+RL^h^#bwj$NSf2 z&s?IDJo3+{P=7Gb{X(E}!9kZhtzbfzVxFbQ&%>y<(xmAgIeM8&!3SW%8jTb-oxYBg zFQZzHVwQWYbv;fO($6vkSOI(0umlN&G`1W1Y|<3)mh`+A-WA4MZvDwcGsf#u2Jrn#A|&5pzuXk& zq3~Fa*{@zcq3Ss6O91^q|Ijc#er<`H!@nftSh`!(UoeOsJOntF!o*)*4re=a!dK0h7 zB`W{p#@d?fM+v1O_bV3dH(!P3)Z~pnK?u|e_u)wna$8>Xgzj!xkpWZm@jy}e>Wc{O z7WzT>3=NE(ksC#~DQZDZCbO3NOY)O5!`*uwd+)mXvw;e6Gk+zcC4PB>NI7Ed#G)Bw zhVoq1CyA?qn=SnE%lT7-=G_)`+@--dxX20KOtkPrG_aJ*vW2=Bq24uK*Uu%@xCxGX zN6$Fiy$F={&d=Rwb$t@wI4aP=kgNRhSK@s>TsM z$rROdab!q&&B_R=_N4FtNv$>U@E#-jyM0yL)n#h@{nJM30z_Y2MEGBS!g+|+{d3_p zZbNr4<>n#(t&+SCGWgo?&38hCpyw$3zDO^Tr*MDQR_Iza?@%pXa3}kweubB<#F;u@ zk`>?AFT(W6{wX-d`n^8o6(&L{f9>B_k^kb~|GO$O8!KGq|8uYvE9d_wWn?xUZf=hM zSx4SY{h>zEgA;hC=S{hAg}?5~O6lzXxm1U#-B=j<{FYGfrgIiM=>1wS8w%?C*V{z} z?B(o*mB#mAJX{l}w{x1?_Yd3OmY042$-Lcv_;A>Lyn?0+``p(w z?53sMf+m0ekFmvV-JP|*{f>rY#Afxi(^Jk9KrMan4K$PM@+kYgr{Dq2uj2Zm^6K`s z?nUkZk)A24?m}@*i4hZmWp__c&oF3q4VJ+Qhy-u0!3+y?8ZXS}6^pOtz3+E_l!G9O zJ!s?OFCY-X=fR05?L#vQB%iTL(gz5HOOC9jlDRX>%==c}@+B~4(<>k=Il8`)L6S#R z>a8j00Tzy;n|;h&WX=9O@JUyoizZ}FN~Cun!k)=hA3IXNxTJ>D#PJK|rO8)P4g?5- z+;KD+h5Y_zR8IJ8BCc&XX#AAm45T@BQ+6+(z&dAJeF|`C90rAdYk7N+cR720^I`6M z-iCy*Z5b#f_Z@H7El>m|&HhvE6;kREpc5wnX=iNtHJRr|>RL@@A$7qH0A~d_j(6ya zA|ZE=et0mE?csKXuV_fO)Z$UIxeefAZHZhpoMQo*C5UVDuyS*@wD^Ki%XaCTZ+IWG}c z1Ke+^AM=VM?3~PzJP|FMC-4~;KM2&itUQIO%6~D7J2XY>izgQ>-Sw7I>XFQ-WXFXZ zKRd?A>INYywufVJHH~?VT8;+2*G%~+LrP~rKGf3;@_kmB@;Q)~c{05HMpiCu=PdEW7PswZ-uL zld{;)kyyHh9z6(YXdNFLf@e3TDSRD~Bd(BEBG?p$V5+(Zki#u?3)Y$;GEqx3PspM5 zDzK``Wt^Sy*=AtPhH<#}$}%|ybrFd?#4KDxg95X%RF!oG&s398-RhhFvg2&_72n~O z>{dk`tIe0MNX7FK5|cbAc1Af*-#t@YtxvX&jp4KuIZ~!cVf=;!Lr{23`~vso6V3@{ zId(~@Hw=CIJUA5G6^1ySss#Cvj}ppAc~Gav;Typ4Gt&@>sIQ?Fl-TniUn>!ssQz{> zNNb0FXjoQ%mpJvOZb$+C2A(JmRZD4!+@qsPH4n zGM`+Nc^Fuugg=Mc_P^oj^<3hkg9XMgM)o5K)+^W! z0lTd>FPgzkWbM*i_Ru> zFU%?yLKLXlX7!%3pR=&(p3l-M;;O3B;oMfb{x4Ri!>b$E$3)UUbcwksqD+>4N66Gk1Ukrmfe+#uyW#ys1~W|39$ zc00<@#?KEoj7f@>q1y%~3|t?M8k)1tt$K7cUv&obKK4W$Ice>KF7GfLO-NSDKd)E< zrqLb8KYh1t?@iSMO0WyJJ&yNm!m#sKYZ$@%u^>!{{-ohK-DiA_^m=cfw_f7RW2->D z5UIA|MjiV%Z4?8baD3_Z^jKZiNpO>Mm9z@IZ~U)dp5^dagcoE!OX+lZ0TvLT;=TD!sz$gopgdY+|9XA;62O^23O}Djq zatU)&$p|OOu^-^AOR&^o>39l=xl`MHy;^M6z~)ZWE<$A#m7_CHEbKi?aSa`QI&O_t zFx1p!%MKZSt*g~%vk4r(lajy9@Eibf>ba2eG3rdcTMuA-cG){jexO0+EzR)+V@mTf zv60g>8oB(|_XI%W^b~?X@S&UY6PpazE2JK}m+|OBft`JmqYD}+QH*!c?;S0m{`l^i z;438W3<G);HkI?S(!bd)jd$qquAU$)9py-n2>7)!gr1I?(Tp3KO#fv%x`xHF}=4}7I-ZI##q6N#xXAdrSy!3ku>FiKH+D`1!zK-Xu?RM$sREomiKyYX8Z4ANi}lsmIE3Moll4e}N2*LylDM6x#MZ01HTZSPULs#*^j&smxJdU zAMzI{RKOyNqWi#jtydH5B$r51WoBK4)u={H^@3Uh;O;XM1E#v~#i@2=9)n91c)@Xt zT{kxm#QR@lxvx!My$#CWl3&X?uOApht&_T)L7ByWwGwDNM>YD8r?6_-aHvSsR*AM&jMpzZdF&PfV7}9cL!btOw6~91Y)XSJ`=j#YyAWMt zIU~P|T0Ye_ZD-aYl-pY!JZ%N}YP7#C78#gNuD-JPU2eO~{y9>D<+v@G4t~koKi~13JV^v!!pT3XuW!Gn z$Hxe+`XL~&KGj-y4Td;_*XPg?e22ES-mC-PsbgIL#H|lkq&F^I=M{gMzRf186Ck@fyfquBaffIBxh&g97=u$jup{gJcifc=p! zLm=;+8P}yzgmm=`vsa5g_!RKm+J2^<{$=&uy_j4ctv|$ zK4g~RQarbnDx?9v-dKw?)nY->l88s6vdcq(`I32m1EX}+uu}0N7c6o5O+$|<;2gyE zeZG!@5c2VXf7{L#`Q?~{x2LCIP1Av@y8R5$t7Tvqw7XknG0hK{1F6Vb;eX98Q*^IL ztFp+sF~wu%Q{8^ldXi+g=g*mG=UMouIqRKM2ioPL(*9hHct>uW3gh`9%8P<-lOK2C zFjp2zys0PH4sE+Lg_$dl_h!y{08^QPL6MobX8zu2ieT88 zbAxnFHUodYD5vv(Xz|)d5mR5hfkK``zE?J8$LpYq^0W(01)P$AE-WeE%xPaUnB-(# zyMBp?fd0tyDr`+qGkJlRzd}AR6;B(C_urGN)J`V6C0m+?|J4@V&JzbGh1w zT;jqPNu-+x(w&!7KZMU4?^+oH@OCyGYrH@CgbM zqwfQsFWQK&CO{2r(crzN(%Rg3S=zQRyHz4P(W&(=$&kMOx_T-N6hk(8bM`Ssvlsd! zySb|J_DQt0p_eu;Hd3?0-sG<&khR#o0d0MQj^Y*diRb<>k!=T)8$`kn#z|dKW6H+> zBh-G;r6nq9S2{mD&gUWB-v!+j1SqyZIRyf)*P^Qf@s_4U7PnL|5uIc5@!rRjY&wMw z>{d^H5wfA5%pssufKESG_=L^--*WM?4Lj{cN>b+$Ku?m|Qy8xadvAa@yAG=_Ip7kY zS+!?m9i<_KW5vSqjeZ}vJU37g)QKHJ&$Ne}LBA$6Q>#vU{R@komcG|f^IffVd@$Bb zVQ-lG;E!$&X||aR`uwC^LdRj5Y~4jxmMh+A{tzS~ZE@rjce$N4lj|T4-&Ilgt`@;j zc#Z5r0r?t!-!^1jBonRumT^6Mc4NImVwFe(S?uK_4%{Dr%9Gq%!VJIhQr+jwLcb1# z0F~Y9RU3r@Q9T?w^@~%*Yxw7v5VjM_itL?WO+$%)y*paut8g1&d8^kUhC(`49QKOp^w zyf}dyYab>r#1L;Q<_Lg7jkKaV7)iV=`aZZbG){y)l#vzVul!5w6;$A^pfC>7aPk>* zDP->+x!_vQ}i~_yMx~G}*T- zqoVmDvQ(Mg=as`iNs3=Zp~{T?xxxH8tl2d}mR-kVrx4knmnxeJ-s_G%fArCxz%<*g z?+wb>5o2}~LitmZY|$iB>PlTNKX1|L0&^J2LX7kU;CMZErJk2LYfv`u0$_L~yO1C2 z#lqwZc6}HM8U@X+J5xG7&gKC;#KR2DDs$r#_klQ$$yMLAlZBpMoK$4>^Ctf-;x0=6 ziMUm?6Ck=hWJ-XSEK{TPO$#=CnAO;4Hjb-Y%A+Uv(ocIwRq82I9tSWd@DV^3?`q3? zuAuDo6;z$dsPG$2I*rd%xDHMgf`i1t{KMD*<`+;#9_0m~kFn4y5yKO)d_=*y!95wP zv#js^#4S`$c)jDeEaRV%wzq6F;$@=d%+eeFj{K^Hx6Vq#T+0hmi^boGdGK~@-!T(k zLS1hVWtwpUSA?-wh0Se>SUhWjl~aH|Jg#L@BHkMKBQpkd(;Uo9{N32v>6d`gT!gXC zb>L+HTSP7zzL?pO=bJ;oqQh`EX!!G!0hj9}!v8~VP5QR_Fr1)`lsd6~e=64C?34J2 zM?7uVTi7I?zY5jLX6`7gL}93mu`72!%@?fl6H^4qaU~9o{rMm{>t|N6@!=8t7W{Rx zwKl0ACMnaT{fyXN4;nlGsy2(L36O>mS3Eew%vGlFcnR3Nk^#T!BaV0lycC1~LZ)uJ z&v>F5?+~zvrKc%5k(rQ|CmGRmr3wO>JrNPg%?<`;yqnV9{DR5sy;=%$r%r6y6KJCJ zwS>>lA7Ksiwm&K5Tf{_wKm2}-&U?gs^}5**_5lyn_ZTJ#I_uv}&tU%MD_Z9n4}tnU z_udS@#npIXdl+{%nCqF+w5!|gPItxNCYKfvqU0H!Q%C8+T6f7==IYEA=v`EH( zKidnvA?`%FRZU4rL5D-$J`hcP@e*nPM;5uC9(L<yn8N$Nz@X2_eE#^K$WqQF& zzasY>{7sG{mL?F|7CuQ++o3z^f9O_2>M7U1r3Czm9DX=}`Xp?OYz>>uT0c65n$)ub zML1yQA^W+F({VHkbTKOTT|a_nix^H5Nf>=?`*v!tH)EmNP0(GsbZg1G*N*jb@H@|$ z7=*R#Np)lL^81+sO!$RU{?-sZEbn;LD6NHtAc!cUtSq)59BfIW5CoXa@2KRzjKppk zu-1}21>ja-qc+0t9yF4aq{ql1J|*OHeSIarL3JKi&gT<;ZO{XRmH=&?{b$l@>J*(O z^hsy|XBct00oHJMh6_*<$6)(bmwmo*WZtThs!@j_)xLqArJaXjo=)Kcz_!7##OeD7 zy#l4}!9eNSprd*6M)e=zxye6C*p^BL&kIu+;Qg2nH#g*5fNFToJqte}gSH-lMe4&` z_;ER}qWKwSs2O)qZKUdyr4l~j=4SB-mY_~5$>3hcsKaD`?|jD}c`;wA*t^rZS7OYT z!PHa|>F-N-VQwQyoaYik9Bc%!WNrz0dRW6){GVJ$aPWoPl%49AwTWoDqe#5`ylisT zNwHOrmxC{k!&W1BT1yG<=wVWN&!`$(GAIm1(ZL%QzrVlm3uR=V$i`11z(3)_iN%!4h~UILI)!lO4y|s3ZjBWhv^dD{;XyQr{{Vl=D@!{ za!Y!7n&bFdpOAZ;(>4Fo*e~#HXdD-1$qDgvc~5vI?+50aazzM{rSWo86w{sXUtEQ2C-qgD6QRk; ztsooQw}ob}uJdDgDp#Y$+wQjXA=Ecruxf~F?nmQ0Px#YI(@jT>FN<>o#7g_34*z9% zTCG^ba_+SGRaQJx!PDMBVnU#Uu|>NHoQDz{d6;R%O7^BeZaTk?hichc@4gnx=XEz* zwgZt3YMt7W^Ua4WxoRTwv<197@dMpXLI%c`w>zuJuR zZ<8$o32<)6-?H?l>NKjqnC)$i*Kx5*zPjY+F|l;F!FgYWFF|j%RG6Teg;Limr;_(Ji64h!VOEnyeDI+`&w0LcvFiWKS-{ibrKAxoo4`p*K7zv z0<3}`f-i%>+N|yRl&4dvcWb{z0d&iY8{wwNEVxU12TH8Wivxa3X)va{v z^x%BN_0~ge(F#0w&BsygPGYmHDQ+Fw&3%S=+<*LN5JW9d-afCPY)T9>JT@U@dZLl? zxNF?0s}x5@%Hb@V&G~1Q4f9XxS9se)`JD_ez2`p~jQQ>;V(v*d$%;{@ZdAgzwQCt<0*W-NuFiFTW$=7}NgHpIP2sXTDg{vBe%^?&`wP+8hKH z=pU}K8%YQ(zO)u$Fe{U9Wg4fkqg6(KRJF!oEFJGse~&HPDJ7TjED4EC-(B>`=On0C z8z$m*L0R4Ls@OZy6>?|^Pkd2b%)w#Ty;G+ZhSm^x;q5*hGZ$PluqU#KB4vkm5080z zt>l?G^wnR`J$q|Z`pt01E=h*P?Bz76bo;j1+3DRfhQMu3)dHA?iIz@aAK0qmK4TAm zIYDwDZV0D|Ungq<&$YX*`_%a(+{LLpnq0Ztz0DM!ndD49nwo4`xZ!7I$2R%(fxBUsz#G79+C`DJOX5n zS3RVCGTuv=du03p1Y3;8iZo_H8%QmQiUOS}#o045j+N^QUdlUGK-L`HZuY&_fv)O{ z@WC=5CgzeaX51qh6Fm5iXg|Z6uo!TxjpZV+S#l>dhB!T_P-3x0b{A25cjA$^N1krv3!NHZyulnsy6yn?%jdHxfP|4`f7qPj7; z%j@BnhV8aWtlBC2bWz`hI1Bv16<<;YUd7XM=MNrGqas(lehm4N)+WD}fOrYbkJwUj z5*^4Fj>Ywk8_Sy6i-#>1gRY^`Ts3=hccr&LB-yJV6V2@#{zT{9_;EfXshK z{%~vL-;=*5pmnaQQn&Vt(RfgpTA3$rrEFC~Xy8DFHSZ<#YbFEM9R9daPaZxR-HnEO z(^@=zZ79`+D~ytAE%$jl!L$LpuW*_pq`5Iv_wm0~Mt(;8Rz~nrNi+@qP)2ey;mSyb z-QOxBZw{4SLUd%}q;tADpCT;$HG{|9& z>@i@s5X$d&TbKd}3X+CbB8(oVybUH*AMX2AOy=gU9%tV&bv=p@Tw&h)d0Rtwm!RXK z<&TEQMAM;QUiZ~J-`cQ|(+XATgj(yF5@QUt5wZA<+jMFil#!?jx@2Zi_w46fr*UN! zp%OLDQVu$Ekz33?sxKfbVf~19GR9L>8|l4@YfX14vD_l`-2Rzj0TMM7Iacz5@RTT| z>0?YAyl+`|AI}6H0ef=hMUuGe+P)4y9V(A*(P$Dg^b%e5r_%C!lU1>s$q?s`dxtgB5Gly zE?{=pNwl$*eP?MuHh<se!51&@2y!9uSf^ zkeb{*Zq8DfFYkF70nf~1;ZJ1JSK@xeu!cp6XFMAvO8U9V_FO!2hNP`&#{!MfV3f`z zyw`YA3y;tI1#FL&-p05=4n*PG0M)pR#?a{|+<)L80{mK_}N6SsUiQk)i zSP9WxrBzrMzrdZs`=8f=uk&Q_YQ=&BGd;=|M+1eEz=VvE!NT;_h6P8IyDqwSueHjf}BiET;GmnmS2vN2UK5p-&H@K_=_h44P6 zm#8K3HWy%GV*$dG2(~OLDm3H9lVn3&eZwkD2RQ*?Op!?s%1zpPpRE2Fxo3Uk`sc{~ z<2M&v4|SpFQcu5klj@hKzO`yfUrFH6`}8650Imj62Yytb#Rsn+uPbD~(Q)p-{vkoy zF+}ptn%I7B>(m2^eFpr>aSVLwY8n8EYu!EK#fGS)UhuqmuO^&XZUgTFthBZW%Fac} zxMFAAGFY_yO&YI*r}O-4TW-#F&OYHy?6C#@)NL=3Og&m9hQ-0!+kIg8R06e0d^^F} z?>s)s(K>!I`8uRMDVjWsI}O}y43(rIUOzVck*~q%ry)gwxK96^yIA}ugPKm8jR%*p zW#b?r3B6ySC0e`VR`!eofGZgAZtKhP!#ZYD$TgBs>(H;H-uDwsncf4};NO5h-it3( ze}aEE*i3BduizgPmVxahT0`2-P0B=lmIv>Q56GMY?sb&UXc5fAVe|3xm3M}ZPeSK{ zX!;ToZ`EpCRMJ?E5@{##-nI}fsb?U%w?mhffmVVKKOe?SqDODt1EzC6_kYGc2AJKA zqLKZwQ!;XHph3M6fje*4Nu*Er?}YE}ecchQepTBV$_nCth~Tl2)R=Y^ejR6x*H0^4 z2dxrwXP|zu-q7tzdw+=xFn)1)bbsGe_HAT5Ia?s1=azNFs5KVQO0w#YpW`KE(Asgf7Ksgvd& zz46&jB2@crN!I4R;zwO|U&vCoq9!}zt6tOIF!Fp6uR>-!@(IS6WS!L6m$}~My@7p? zh+qgR#8*iC6^c#0TgT^fH~pZ)yk>{TabWG&2C98FRG|fS44bAlN~Y==+P~El$=sh3 zEdRj%477iZ{k;zV1N-|$r6$ROEQGGo5fVtEgDuU^s6nBI%tntd>_gDVn;dC|1*$4U z-hN6}@#5_GDeLJMR2RUoI*FH&-OSx>)2CISx6f|=R*T8P?9qzyvM})FGGr!Dp5N?^ z>`PC?#W$NkvFBC~no1FWDFle}0ug{xD~qE<(z!^7bXe6;BRVeKGY%*i!H55U2mE<( zLsd8xu01I1%?LkSdAxxe6Jw9z)33mnMcJ~M`I#SY?GAQr-yXojFgqLDB0HPnBD;#o zNiAJ##=@etxQX1gxZJ6}l6V7)yu}hNpP^qRgg<%<2)_A%iwmptcB>)Dmq(Jezb7F6 zz2*PQkJ}zkcmRKUd%L^4dwP1hx|%byM@~WE!k-GS!%Is`!=Hi3$U!$Z$Qv8!B_$6$ z2c5s?dO$$P6EjEKCwp>b@zIBU-v>VN*;?P{zP`S(vGSdr9k=S=eH^$|;x;%q$SyE^ zaB)yJq~GM?!gG7NZyS_uaK6w_VhUS?_cDZ8!1c7W4*^`ijzq-dzlHw@t^d+O$zJ;# z3q|lhV4=v-eB~(&!*awxkPSEIA>$QV{xkT8(*6qmHDvx0{3|dkhuJ?4CzP{4_f7Wg zOP`heGv!BQ{kUMU+}7U+a-feR`F1yNfWJ;l-wQ6tbCJ4}W;d#vv)uyjyJvz4bw13@ zD<0MET_D%*HU8jc4eS7g#~OV_gHwJ4obokd{-AuJ|DybPok-n3DSunhU3J~cvN`+3 zF!;)(xk)Q(e{D^R(=XE>`QR$6@P_K*@L{K2tVK^sH>Tl)I9KkYv8~hNFuICgk-sIf zTL^Xbj%TV@3juz4IF3?jJ3;J&FBpMgjZA`k_3Drb8Ha3l8)MS>IR=BH^`WlFe(mZd zI()7?^4W!pFZ4Bg0kB2$O`x;$42MlBbRYNyt3s|#^#_f-U(v02iF^)B;Zy@Id zATQ+^He6QW`iHE75b194j9Z{Z;mDGQW(aeKN9}bkPYz$Y$hR(qF8BPguU>v2Q9KwE zTme2G+}|b6&)gPN;wF|X($oTN!A4hOG}eu>w`Bb*@BCntr9AK|A$$NQ_U}|b>${rS z_kXZGYZRRAf%0&+ADIP7G=2?c`V-_4R3i7ox+yJ!99BqdR7ww5>`%%?m4J&t`1lF* zCl|HPQ55|SfZh?FEtBVwugzaH&0<~XMU2?#&1U=MIA!-1hDV2PuViv_qnRh47onNR zX>OF=!98%o7c50A=pFox6oAzOwl zi>fv~yS94Iz@5}^juc00wE1JZw!J7g{C;Iyzky11iiC3+yHA(!|AKZ(F|I0;4=Ihn z4j=r$1%+8oEhqL8w9DOLM@P<@rY0v4o_*fpdfp)*S$76rgBWJee8r5gHf%4< z-U;ftFFn`;8PMlw3sW>vYT^6FYedp1o&x%1Lu>;uvn`5MvR&z`bYN<S}(sXW(?tW0AxV%+N(<7*^dI~d) zCN%N#Bd-}~4Rxar{zB;9%5QRsM7bPpGXbJj*h<*_UPhi#bJDYu`9X@ygNuj!|D4sY zQH`F%S=}Nf#4yL&kO-TY{41U5=Sn@>@T z*QHRy+jwuV@yDq;f3EnYfeZ-nAX*_MEOq+Cff1^RVynz#tK&!QwI%-l)V(Wh1R<30Yg#OU=#=z5X|y(yVl254 zo-BS39e2o(N%ZXiK~Im}COn7leC*kRBB>y0g+EngfgGqQ^-FTe7#4`-f|eyEYgHMA zbxjcED;6LqE@7T`RJEib{woAO1#Ej~4~d~#9REq+l@0+toLZNC$arww8%^ggx_8eY zQzcKt4fc^Z5FskzxD@d9b)~wXP1~W(cd%|4cSzjD^~u-LP_0(Y421mV9M2Zy(MnwV`kTRsa}B#^AA9F(@V6KciwEX z5Zk9bbU0q3gynW5PYFidIj#;si$f#`1YV8Ia2w_bdmXOHs$a0Sz4$_1lBp?}23o{yGJv>q~m6UxR0kQrLsGC8oy1>79 z-n}J%E5#56kfi0Qds^MhnQuJSe}4b=@jhCigLvtFB-X(|MrOF?b7t%y0)!Xw8=>IP z(N{3Zuuv~P>S?Sri7j~|5<0Q4!!W_7?)hTVEoa9I8antWq*;*vHvLvEQn`&Vw-r3e zBJ}?-3wgOX7o4DKQ`bU6@629{1LItrA{*kA+25cfuBdMVrIU9Kgws6AN#4Dzc2r9Zg=^3siKO>P9((B%spOzp3$Xx zUW7YlAD9r2A`bM$se7vjaFcBQWy(O+wXa`!;P;MJFnKd%u zm#Ovv5UOoEmbY)r@a6{%ytQ#zc7x>Zx+x>)49E8OoSu4%hc?)}UhM}BHn`oeoC4aP zy22LEj%`R#%;np#C=i+}EJ^kFSH5T<&>d6QXT>7*qz(pv5pX4D5rN~ojczjs7aU-$ z(nrN$*UD4(e{ivHfbp@wEyAG;95!$z^)=Di;id+ArQO5r#zF2c^9A?vH*4O$X(mXR zetWRDTUG7iTwUb?&y{$%t0#H5rzUw`TkjMWRmM$B9`|mK9`}y!tih#m4)w#S!lvKq z_~IW!7MsVQH;j$4jD{49VV=ujv)q4+&G!rQiOiKnHb%Tdamc;;21_Y6NC`wSMzrW` z<}&2ZGzFhb)uOtLFX`o4A%`oLne~Zd7E0@uJzCHz*7#nhD{m`*{V=)x_uKxPFNC|) zCmTZ>8yglD7VtsU$#= z0}QUV<4T}GkS1?0xB$Mry$u(@*VoPGkA62=^DcbwCF8D0^-Lq!;9_p@&g)^KwrQt{ zzoRLDht3mj(g?#K`jyH`_d&nF+c&fZX4&BR1D4`Kh@kulJ{q(Y6r0z40KA@Dyt$Y> zI%*Jy+uy#@y=P~VH)bguHB4ySEXBFiYy=2=@Ob^ytHo;z7?>w=1V|kP*+f|GHzvAt zcQK!|Hw|$@XAr*nIpIduiiWWSvQN z{_ZZlC~Sg=mdjjd4sQkfE58JS*iYWF>fGEcV^bp77|Hl1;%doJ^d?kO(N^6rhy;s6 zMJZ6S+$-K3XGXyojd>CV^nNCJPtP2~W?KUKtaI@=e8IjyL+aE3Lr-sd6W;yo_jj%r zItE;jje*d=wdij+U)Jq7d(;m!x<5L_UI9M2w#`9SA2(_;&WR+I)ocM#)2U{+^ccyi zk{rB|=G&Y9Ky9^7B)987-wta2#)>ERHTu-Lk|tso37h$L(%)Ts4%7PL!LFBQuEkEod-=f)2=dAIH>ihfcIyck+&NGol zR#x+hy(0iU1&ZmXO(5}J)il00gf&*7<>@J%+XhIra18uHh#%q0$8ko@!`<&gatCo0 zXs?SV+d-B@66*p+nO-!`CgX}GrYpk0OpNl4Vc=*F8i+GLz zDr9v9aV#^L^0n$9WIGnW__<_t@lg5IZgh@SVE8A?1_qfk0BFh>BOOeKERfCrlX*>F zmq{1v;v-@P+NhVGt25lng!?fQJ3_IM&76Qb@Fm~jFF&S*yGu+((EZYfvMc44Cx>Do#e`z2VOWH^jwfg$sDx`v7oQK zalI{i3Q-~2f{A=vIR%tPq0yYR88(8n@-YrTcQ7WQ{Dk59dubY1Jd!dle$D&Bij+5>;-Z^O=GX? zjC)ZGxvYCHb;kpGU~c7Tr1Z3NKyl$h6uh2aP0@vG3e@jB{Z#svfH>s%bogsTH^n*_ zgKnLdNMDkvA&V~s!pC}&xnE<$p}KLtZ5V~F4~sr8Lp|x&3AeEY%v5NOACg@JSBp=@ z&!mnjf3z+@aiab%L2quIGc&n+PO4p`@E!0%@N?nECuM6?=83_VX6-26^pd0t4M94$~UrIxk{eCSgB0nO77EMRr2HJ**`${t?)qc@HpesY*CAJaZX zR`+A4FhF@9*}?X(IIMY%paoNfzUe*#befNVIEm9bEcs z6=zPd5@Jk#`o@aCC&*>gfgM#853`Z>53YM87F6Nxi&Ca&W~+kbsXy9&(f zef|kk?(K9HpZDCJfh{Mga=WjWVY`rXrczgacH>@mW3`7;sL=G>o9KaQ5FumJOJ%(| zJaV>H6n9xi^5}9vy^4Eabbf4p76)~$QuyjnGWCX%Un@vM3I-l_@8D{p6pHSij(NZC zQJUFg9d+3S5}C^x0NbaLVRN_^{4&R3VAj26Q>B*6v!S7xRuJdp9xtqPj1n#S?5E8r3LV!#GVp;=y$_+H>1CpzvFFL0)9%>F}52V1R0_m z3g(bUW4<;Bpl;!7Rs8p$Yz69ask4 z$B$4z6uwX3A5}h>mE(8?_LPnKY(3nwrH1uAdK%Nx zRn@ts?vQVATIr2|1#!8`!o^B?=`&Qd?^e33lGk{qthwM}@BRL}xc7?gsFL`_LBDot z!)3s~+ywFX*AU72nY|wd&D?-ou(p8?Mpfbx@bR9e4TZ2G>-!&bCKJd0dO{m7q!ty= zS)^&n%db8l!3a)0eeO!K3L1y=S*>RT74)Cbc9aC_8#_jvRAc8T^Cs}D?$~19&sV%` zC%S_6r{D9`Js?{&esv9#&|qA#8Q6Ma_z_x&%he)@@}y>OgCZ^|RIkn&hXVtxodsd=Awmie!!)vU z9i5x;1bE1t2x~5TlmvEd)U)$d0VmSGL{P#1(UZ$%k&Be`smy#t=4C|F$R(05+O)?> z)yy7&L9+?62ISCc>#RXMkf8+xFLRbdmXH@!;iUY|8 zGF&eo_^V#t3D?U_;CgxKf7i=f@oqOJASX|W3gAOfe=W+uEiLyL^XB`nOvirUcQ(I& z`G4`@gYbZ)%KJ>_@273~%gd(!-Lx&7@Hc+^`BuPRui3Wy&%YLsjf0cxZ{GfqO^Fw% z4uZe^gTAF&tlL-8W?`ZQM|HK$Uvf0@`7@wO@Pc9p-avAJgG`!iaBdtFCp$>BaH%L1W6B z9};B2gJ^So?F~|N`lO;cw^?nrY;>(hk*#X2uO-Jfk>}*{nN+i>`g|0>jK%lDLh~-m z)9V?=|HIr{K*iB*>!Q_-y9Nl5;1*nhyF+ky*Wm8ZXo3@*KnU(Zf@>Ogm*A4%p5T_; zCjY>C4tx`okegT76lc`{_r;C-tw8BPanL)F*yAx2P}Xs_rq}b7?NlPp ziR@Q~Aa(K*U;klaQn$G>{@xC6ZuG z1&*O_xMw`Xfn)73-0-QUq8)oL1xGuLFeEU4u6}^+f?~Z`vxGM5n}4pNS5DRzD^y2 zmWQ*vs0`rMqPr3w=OjMUksp(?7$t%arhGbx554zYY86l9BRrvVIxz@iDBwZ#cCKQa zrY%>t{&sqw2*gno7soS0im>LFDvrrDFJchpZ*b|9ILIMO2y6oqwY^?HUmBXAz)$R4 zF+&-4udm;=LS6BKD$x$Z@$!e%MO&a5U-0b~lArrz0+-zo|79{9_%QwbUR8_e-Y_eyUn!{ z)BAG6%q(tWcj0wnLnhX|hH?iYknmjvi5kzY+?P8ZP=GoTFsRN{Fk8HWS;p=Us)1La zhftdL`^vL-3ff>&c-wpQC-CW=e+Q=j6sKS&BtEI0=Vxoem}E%1ZPkuQ_syc`%F)jq zf3SByk3~MhbqHPw77ZkIQp{%I)7Y2#a(lIgSuTvl0!r31^RrJ&!e zjY~qOH!Vbm{#XQcNe86;_%EV*h8NVXwcb`LUlP;aArI4B)LMFw4@7(tVz;~6&1<7U z+oz?#f2r!Ejg^Y+rxuTYF3{K7x#eVAHf zQNts09Qn*4Cpm$rc$O~ZgiH{*j?J<3RtJ-G&4DaRh`hKUfJhAVZTQENq{iz7t^1dI z{JG@ZyUd0?8_ef6vx`3Hk@B5mKLl)ln@g0@_d?RDYSJHbaZCZYhU9K zr^b03MNTwJ3YrfavuUU%LF~Dzd~#bU?)iXcVqXD*%0xc9MV^`-pOe;;Mr4yY9t-6; zC7&^oVE*09NIEYW_8~@1GC{kgwN9t8!R}!bB+$8;M&!!seNv1&HO&o=8dVoyoYPJ6xK^RWD}hcS-=fbnrvn)tKX(Olbrv#+%vCqPuJ~_@6raN zF+Z`b?Uqucv$k5)R=gY!+hC``S@vrOgj0KDrR7@b5S+!Dwtp9wO~tB2$>N{3l_W|V z!tNyYDx-GgOxY(;0Z3Cm#-udFh1Q3bsat#7ufRzKa^V(?xX~8H8(n9yRD0`0lJ&Ob z*4@2U*qo{y#ELg*JDGV7vO_R%bjV9#Dv!0b6PGzI1Yf@;x>jaRbw{t21D5>0`p+5} zVnfM0nl`aC%1OTVf#5QVnV}Wx*<|%V?Ppkbd4LofDXt+z1^J01K6Y{V;c^??6u*hO z9x~-OyWa8sd_(XJZ^I7G;*wykHzpk?C;Y@mG~Noplac0`*%+Z{P{eFTCNkOvWx1+_ zm5h|X3h*`Q9`Gp^BvS{}$DLNuxL%^*>g)2+xSMB^ExNP$76B}z#V)t2rD=1rVFD$; z1PDy9eKe*hwwVdmk6e}H_2UresY#6ZLlCa%hijpw>e*<7qT?8@Nx)e63hetGz_H~{ zKph&>M*VxCK0rO{qK{oPLxrp%9#ljt;0n*S$GQt2*h{qDk7K!)4o(*?^w?pkPD{fu zG~sCsEaJqH9><41YfllTg_I)hF^*u?LKy@$9crOIG)FPHDOdS{?pX58bvf8+|TKTvLcIrQVt6e38@3|O)cB1_qw9L zeQgMZwvd{N0T$f?IoDS&%EJU1TGL1r1Y;6pzpqXz#UNkb_`L&!JsR$)iUoJFM1`bo zxj`{2CNY5E7NRg{rWg13Dm>Uq!PMKhoTPS1L6Nb{wDThn?pI?KY-*hkZoKzeU8@REkUYt2~Y z?N{XWh}spZKQI3lUJ0l2@tDBnB3fPGoTqp4O++r66K9xW+=S)|@?`i;eebEEK`NH? zRo>72E@^>PFWetWWMpfz+9k$3dQ9E+P~J=i#klv-_$maY7;B*#0^WCx0k0Nybu*?6 z7;LFkr(fpgsF`dS{fsdDwY@#Y+C8K{&jJb0KI#~Xa{~d+D%>BAjG%##mfhI~z*6OK z;W&Et$PEgd3fT)RJzOzCP0m$K?;jE5^?f!1vNQgsk6CaxQ#fp87qx#N$iD-%tS+Rb z`TRg$iLh-K$YI(ZUBeayu5~5RCXQd!ni`@2(8f>zEQ(?R0s~Ft5I_a20|5Xk2SZ(? zbO)qp0Px2MMzHbJ>;)kLL-1(WfP65!C;$+`!}b7}2}Ji;PVhf3u1)6YED-wiKI#Q+cW($d*q zCokG{mH*lM_r))0iU!eT+oXWZS&%4`=ruA@4FEU2zPc0849I_4RHy1Z)HBxwXsA@$ zD7Tq+z3E(2JI>fg@Y(W%RG8l2i%ypPU@8fFXzY0pM7YQkXPO($jm;a6yz_lmLPq-D zj2U_%e8>nt!E@7t&w=2~DsYlwXflJfo&#=L9QBtX^hP$HmhJhN)QDjoz+glJIl65k zgZAH0qD@r7FKm^J^+-zCykoX~S0cg(=0!Cgf{wh0kKDG4>&@Tii8^(81z(-f4$qd( zI@jJk(m2wcWi_65xY*khcL4VGw zN;?%daY;0n)MXUrb@l>n;;rV8pU-Wcaf(|zN1DMS;&RiTUn{J_U0jgwSRTdZ<`dWU zn2Dt;JaFEj{gdX}r11RaOP~$8o$br#HI8;xG2=Tp zo$^q7LU_v`Qg*>X5nBr>Q}8NREEDNLKzKDrtHFDKd-h|QSH>dPn}`W|MUH_N@q#G) z=G^^pQk;AGf8z%*x4_YZcp6Tz^ozngjxZGX%=-)oB(p`Y{xo_i$)o~?fNf!ZOAojZ z5W)P-Obh_!z*hqxz+mKgO5f9>K=)xE08%Apgu)@v?W{rwBqI=z1Id6n1hzCF^5Y)N zgrI?u0U8L*|Jb08Y=8>-A<|#2_+NM^natOHcmAl~^@9rIsvPG@bzjduZumR29(&%n z33pDbv_G}412Xpu_5<8p=|OeNZgsCBX!$(Qb`6-cZ2P5snmv^KUVijny!3r~e5rWt z+PVVwvFiIux!VbGuQ1mwgGvS9HZaW0IscHK^m^pHE-AX#+0}k$_+s0Fs;U4>n^jPD z&HIV~3imk;P^v+Z_xjDipnmVW7`hfK@vjt@nQ`e+}k)SyIE4syWX z^^bdLM>9{vrG?MK8i?#>jp}6>`{_s>19yO-v^`b3U8;5zED7-RX=O&ad1cV+0Z6sh zHtP~-?eG{H3BX+rDZVaZqwpiux48ui1SBtQC#dhwm9Q zXB7>7m>Zm`P(rLo-S5tYX#J#aK6qS6O%ysgA1}@6y%T}=Ev}U1S=9d%!KqtzznXosu+z^qRI|0Hq(^V}3NhZh=81^n zprNB#wN9;8=&0D&sOw}vUIZwo`S4x8+$gQ@IbuQO);*;kL5{7Yl3Oc}Bn_%e2ZGI# zR~5N=+n}|F#WN`{O)|5`gxJbPycwYhO-_@!x3$NjR*_wgImWDZEAyZ5+?zDEy$S+E z8KipkfGF-Zl)UfnW`u8r@07+AP%NG(=VuPv3evOvXtYG4n5HkDb670505S9Er!fet z;!6j+g!MJ!KXqX2Ts|;2HM<-7S|tm#f0GBNt2J&Vj*VApR%QBYUg{>~aYdG$rvnkv zA5)nVJV5A9Z?M9+zn(99g7BGN)I0W|G-n9=Zn(8TRh#dbh~AO7?X?r*`564fpdw<$ zg$hQFWVVnZX+DIR&=TWNjD^DZjHR!Gt8<}4kn-%cA6DG zN)XahQeYRNdj0LVnObs|6HITp`pSlHDbT)K;+U!#+>~=}^s=dnwuI~p{8HJbdR^ne zmY}Z(yn4Q=iqqz>IYD}}jDSJHnj~#_zAB%l$$w6CA%JHQ-01BI(Oy@6D6LPPBqv} z=q-&1^ZG%c(FR1?ZiR#*Q7^0o#VJcGT?wQkda zC?&R){fVFmK)Mk(n{m(tO)RPFA_wsNq2Q8*4!(wuLr9;CZ<4c$r)XCP*0@k`Q*7nv zo;^fzSbr;R8|c}O+6m%7IDK1g_q_Mxz3kKeew_*G7j@7NA?Drc&Jm zmeZ=(qF0HS(}AsM1URkmVpZRpty3D{fu8C$f1NF(l&4tWWI)6DrZ=kjlYuTkf*R0!J_3CQ7AT1Cx& zJv{flBV`k1=Yn+$udn+CA$$fT z_qN@Tz@oQEv<+x6)@8_m7!C;k-{Lm2acK}l4Vg)_mYoR`7U*eVO{<{B{0qYS(%N6aWB1o7?iHyE*41AdDp+qeF$mTj!Sn7x`!_ni$1j?aV4a~Yispe~;tfY-nSeHI zIJ;kY>shJ5SF%w&sMj>w9tDDP-2N}Q(b4;C`CKr44%Q3?Ky;JGE((9z+MLzGSP$x* z7@-mkiaddFjr!B;da=QpMAuqAs?9-5eW{3`8O6e)v9dCf8lTJHnL)JeUF%9I-c{(@8H=wPVt#%a}n~z)*nG6nlT&_qT>e+AN>b2h8sI0tIY3 z>mvBiQN@#IbJnF_&Zg&n?h~zlB2F@QMGcH41)Y=hYod%=8iVj>#&k>^;m$_|ShJRu z0zml3edAJuTWucvTrZV1YIRY;Fk7dx_HrJw%BfoJ~5$esp%&Pf2v8U257ftRPBPX zOznvyuibt&m{zbNfRSm=qzE2axM9@~k&zJ-l=@SYszI*s&iEb4!5Od|cJwQ0b}!2* zeV4H&B}DKN7i!X>bA`#dl&bSoI|+(Wl)7Rf7?eD?P>|TJ_!%BHmuI0#O?2EY;xtB} zfTOhiv9K^o-W!H^Pd!v?TCu6^k3ta_1*b_7e*hdzWxx7)F7<_fcW&bXd^aS||*V;r~x8wr+M=!ZpTrk*_}n2TQho$|o#5jRZtA*}u_u z?3O$lhd-X7WJm0en&czQYtU()WF|?VX zw-2-P0lVHLwKEI`YZzQI6 zzD(+Oxp3Rwe%JCwiw0d74cs^XTHWQC1@DnsyF{O2tDAVWEUK=D&p3e3QA(9ZP*_M$ zH_3Ni3}5|)zTlm1J6nFHe5@g7VOdKlV^#0v(Mz$3m{7-$9sL$n^ddQg`M8ZaleIqz z`gLx-H=(2WX2=}dlCa@!Vn92Q=E~cerYAh`Xy?;`=m^TVqUzd87AZ-ag8aIEPs)-C z-OKE~OK;ik?$f3D8Z4LOUR~T397IAK8p)~i2;{g;JoChca6bdW&&SQudAl=a1t#aa zAv5(^#unpXuGj%v$E%1E$&G!)(|3ZjNV}@?->$n7d%&qRg80+F%Al zaK$%UcQ?LRBm~-D4Tt0w#9IaEMeXwZ8{7`fU-)I%R$nnh7D#=TOUc-Eb#?8VvYN*O z6B&x4YdFfI4@nU3~=-IpMsJ(PH5_~97Gy6D6ZZafDBZ8tB9Ai@n+(ULmV`J zKJ6-1))iS)(UlZ>OY1nEX2%#QZItJ@YY7^OKF9|ncM|1H&YbJDNo zhlUt(NtW&tPMbusY*xE%lYrYeZVKa>(Ls(r_+fdDhI_mAi?pffpG;7&ZZ-n9gl>p8 zJ_{t9WRn(@g~q5D<(==@4gD?+S{@z~2qfg)OKhZ#Djkf2iv=Ner3xV;k5dgzu_Lg( z)2j6&oF5*JV5!d37nydo&~Jqb_%c3|0r02~U$`|JqS2%FlUN0ZQ>%e@g|mgw(93xV zO!P#)(PsR6t_-i7G5a@6WTC38T8GhOEtATrmuq&`pWF^)D{lfj8MUG$L z?ubPPI}>>i;r$LKt}0^OgzvCQdgIeBTAAH4$FSY5`$e;B7M57;ssL9<$F`ETmg>p4 zs}GV^WbQkL0i%ruL`%^Tr<;C1Vhep%<_x)OQg_9-BTBbM>Y;7}DJJH(k@e6YuG=!U zb{GAoO(KJjEZCPwA*@EY4jnYJr>=0{+{ zc3Z;s3l;$Z|G@D-LIuR~pAgF`dvY@u zB7lnYNMt>-Xa5myr59U1W3u&T$AW=EY#oS|xelobkfZPznDPHjU=F51t8PO|aHUCvBa`C>po)|k#<^8XFMlknbos#%-@z*R`0g5F?eB0`Sn>) zLn=RHupxUmw+EHA4DV+(D!nnaSEGHK#HkL}?VaBBIjEgk^GT|&Xm4zyguoQlxIu>N zm#*;Dmz9Q^-i1s0075+{LHZI9a5jcU*Qjm`gtz{1o0NLQV~V5dDY(-Xh}1CJ=}LQ7 zZ$}5>EQ@IdLX7P`5>z~7`riVnHoUvCWxOXuaA9VA1wfQmthE@;;TM`Yc(xezsd>_~ z&z^n1%!JpX+ayD4k;zFD{|yO7W4L}+sjdYWkHYY5edbLR%PDqW(Yv=IbWS9Fw`y(n zxIIW{*qDQax)4vA0Tvk#T3TZ9XnVP6$%jE4sOq&EqSYL=ESIsHdn$r6{)W>F98p?7 z6ce_8$dpLmU*k4)&U_|`*@@@i%hdSXD3=Og))e70c~0W2n6z{{^^d+CT>;UGnGwL! zqi$cd!4qU?w08)oQzfBsJ_X3vC|hbW9`_-%Syj=$Cio2S~0ULLMgn6+*qm7KRdjLiqJG)mmE~ zPxMc=1H$hbI&`&#Ejb-jwrcqrZQZmQSPSJ+ASyG#-%gl*oRIJI;h!AfpZq}@mfd*B zwH`v?fm1_t@W3~B;5wjy9ooRXgjXYq0-zQ=A|aqh*97LgQGb}{KMu?8r$KC;emlv$ z0|Gh_eP{*_(YwVA0TqJB#0UIu5}!vp3<|V%0;25IWPiD&GwmZ8_Ajpa57VF2uzY%t z{?}JpP9d4W3FRrH@t}ya`lFVmt??TTYK?)V1sf3etlaF~_NEHhrg_IE4PDW7pJ1X{ zr(!Bj@!s_yYtBiyH<)rvo5aL-B4DO@cU4w;TR!%8Nm{Dtk`e1P+|Jq7cA2IU3u(Y` z8TK`A!1on>0BhiH;qsxlK;g%MEo&usnI-pmSm#MpLYqKIcusb1;Ji%_QQJIWl3UmP zXdchoT)Ggn8p+1z71-YI9SF$5P3#Se8d+Z4M9;!B0f1&c+f&>$^xi>XQ8`r_>-Wk1a_pKDn{{q)^3V`)4O#cN(dIs*I02n;k}}Lt4@N+Ba~MU4~MAD zK>>$9g!c6gopzJF|4+2m?0-A0)gx4@Lwq`f4P_g74>WX}W6=?oWSy2U`kK4WK}jf6 zz6Di?x9Ioo#okfKCzZ&@qnOy7+b)2038AN+*P=FVisKH1qLX=Q2hv#ynS1$!!o_H$ zDZ}F-IL+*7tL5zP`f1kKLVi$!{9{N#=v*fr;3ogC1xx&({@)KD#*h20`>(2jkJO(5 zO(mo~RWvq6#se^s^i0o+o7~$nYj~BRwzLV?hKKoxH_I}vFcEdH{k5~PqKZf$N`vO0 z%pjg9tByQS*u3y2aTo_$U2OLo&tKsQfpCZj;_i9Ry~-PW=*(F&Dvc2Rwot=oSNYvO zZV_t1V=TJ&SI&#nkdA!Cfh&*q90(IBsc#fA_JlV1w=LXLkjVLc#3e zD#GQ@&$(!a+jHY}qziK_r*W(D#-M?A9t z>-OLHPf?z|?*F11XB#8qPzxL>-W4qu!=y#8({w;7=~)$?s5Q+1+jl$dkSwQP>Za0* zVmKeUfTJJvbRG{aJU*l_p~I_7aWup|ILLv^Fws5za>=looEv8fjcfcFbsjot?nUaq zQ4@))jP5pJqXIQC|OFIw{rh@uI>1{I~ z{&dblOqr+)E4yGB^d}h&4m<+_LyTmx7$9yM zSIT9c>ae~fZiFxvR=KeT2S)Dw9uH?oLsQ*uzNA$-E2xDJ-=R5`ka)AypxaFjfrZ5x zT}=E?HW?C$*GnpA~%|56Ibn-kZAU4Z=eE7icuI!bbs_ zUa8$5%XeMIHIER`hj>&e&(bq#p;3i?`m&E2-GP?mx}#EOtso8FUCclURYCfCS6tRw zG3ImNPSi(h8N$oQNt2){7@OTF{OaKYSz~G}V07?nc9E>it)3UowY+aLJqtDgz6@Y@ zvZxuZ-O`Srq9R}(+>9~7bJFJQDsX|I(nKOcXqbF9w>L2(sL8;tXeIhB9PC}%>N#TW z)WbRoHV1Xd@V-SLn)kcf{^<%z)~hd;4q2%0`wYlS=Xgtv=uiAm+GGmY`Tq9HYd~b2 z0+toN7DRht`kT3i7Gj!}*teaYR?m4!=r&+f3_Qblk$+d7l3lRNCwrbamM_wp_5g<=ry_y zssEJM{B2Uz0Y@zb?Vh4w;F=N z{7oP$ur!Eh9_ue|m>2J{g!NxI;(wUJah0=s?)bm$k}|UMEq3Ytr9Lc#YX&B~{1@_J zgC9&jtmXb&K3pZay>YcGv@v*=ZszvwyjzMFocLr)*|g~$(}5XI*a+>=g-&~?-7d+= zD%e{T#zQi2i|rkY&{#$pEBm=*ULN6cpHpb8by@ckB}-z9iGkXN1Jm#5WU7vB;ZYj5 z)w1^3EJ#F%3EkU~A2HO=eGHEIzstH5dz)Jo@R=c@TbysFCK6Z!1&*uw90Xc!g+W~7 zLevmlDcOEX>I7A%YLx#Ebiuln8kePxtSUY&ngSVp;~%SZ5LIa{c(z(($8CGXCZUZS zoAL{SiFx(Fnfm#Ui}=|HHpK6ymya=2BfH)?ffg@U7zc=)e(FBcm6)ejc-1$*@vEwuc3`x`6MNr_PuFcASKE_8!NfxkSwb5iU`<6|C%Q^>A2 zb$xutc*j37w{2HqEL4SihXt{LIzwf+`=ZsM&)h->g9~MVwDL8WNbnfdgk%k~iw1$M z5!vx?5M^B62+{AQh=2O_{}ubBtusdeD}%f+khqqU}m!Rdx!e0%~X-ku`D0v&G< z(kcI+At}E>6|81I#y63UpHOqSc5k>_y(>VlqHVcif)H z`>Kri*;{TUPsBO|%6c!8DRG@_)X4z>GMNdiyBH}JASH@^CamAvm{MJ||0f_NJdLpG zgU;4+!4JwRj;f7j>*JKN{#~2Q)%IL96(+Pr*1cb8g&G-gy9ci<-)5vzEiEFfPU`PT zfYU|Lm`2RphdG<$k=Jnv*h&p4|K**OIdmX)GsVV?_qno9OtPJm!e%$OmuNK<6ET~-j*|jG3 z-z)ab5~Y3x3v4*LRg3WH@HR7!oub+Wn?FgUloxrY3ZGfVShN}yA6r*{`#pInalwTJ zSRbxNTG5K39Qp?%l^lC)n8W@%O3LXY9O8B0W6|vRXzo21Ow>cnk4OFfIGsOq=jsoN z0dx@mRZOF@1nqB6Rpsy*p60#evjpg|AJqb|>@ku~?VofP>eQ7%4!gI1Eyw!X zJmp_(xfAd}($y-q^Wdmn+Q@90UD3T*gZxtVs9=3V^$(DR_@6-*T}x}pv4KZpA|uFz z%$Gu_02otU5h-0%EVKc&W$|mNb=CZ(>t!}+t~48AA)c0VeTT;1w93ny{8fy#9h^u0 zcQIB5Q7Euqq^54IIU7r_6+rIsGlcIpgAr1n=-a#4dKjm?Ut~0z=^1h!T;_+b|N1*k z78%Kf&7-mxHHdt&`HUdvSU;5h5qG^m3jc4>_PXa>f0vcXJa77sf~-KNy|S=h(;Z;? zk`Fb|WyIY~FC*UO54T|Y<=BtWEJHB-X7f6`EIFN)ll%uR=upv<3W8?UjzvK39~P>k=fL~SJyAr+ehBUg!f((wVI`Ys2 z!)k1)zl{$rMbvcQv*JK!7-fJB6aRMzHrgSFQ{nOoTww$Yi3E|iNmP*h(?ax-3b_QE zj%{a!Gjh(BkB5Y7YxG@jSa6`+f2n?%mPM23u9*LKC0lR`A?N9hFGqdrVy`Cq9|^1I zvmStTU6UZ^=C-&kt@sb{`qaMusQQIuyvhRG>samot>fowRTRoa(%4Ds*FQNCS}!>A zd4=U8kic4Z)j+UpvZ#0Q?8tnV8)zf`m#QsBM5GNk|4F^|kETAJgsPQgO18 zvynTQy~aQl6lB%#akgYtF|~gD=W6NbPR;>4sK%;h>E`6&YHsNUJ4MRdT}IvA)ZG%c zFQfjF{NMBp(U;_$f7*t%qvGmhu5RhB&#EFR&8lJP?fzE-;(u)<{@TbHlEY3_w6w4_6?gL1 zhc(Pb{*vz{3+$4-T z<2RAEwRg94WtFyvJ#$G*b0-T+Rs~B(Yj+!RZe9+ae_bcM-e4(?wEtZI9W-dSKNs|b zlj;PZFySR!KqHwDH#iJ6A)<1X#6f$` z%#UC0Ah{xIt8Fa-zqis_chU%3i;V-+J*$3S{m8GbOZ2QF6NzeOVm_$|rzu#87gqU( zyFd2YNN>4UEp5h23-MRvOS1|2zT`CF=2V*7B^sueH{TMx~FSYe`6K}*_*gqY@<-3`ri&Vbq6>do0*3cg@X11*<7<8}=jVGDg_qF#% zFSE@})#7$Ni#KW`L>=1!&Mb`IQOL^yr&O1GtiHfsD*@D6H2N@P%W zt2U^6IZa^wbcuQ(%&i~1mcTE zJ3f82ye`i*fn&n2a~(+b8Gq&K!T03H>pV|!y`SVys3T2=Cm?QcQSqG5`>`*WzCWe& zLS8~tCdiL(MU;j+m;_gl-yq6$v86d)1UI0kMKI1@WZzqiDTdJ|sw1BDZ^Gly8nfR- z8eD#QN8C}J8N~_=^@Ni+^gs>(>F-Db2I*R=xx2^0oJcSzkBw)Gv36`<-B+Zk`1WONsFdCUR^sKNiB0p9 z1dTF58~0S99$IBI-J(5ErvnIXr5A(t4ZVWrr$ljZ*ovRsW_Zm4xIJcrRq6hM%AFAG$(3jb|TC>U5bKFvuHO(hykQ2tgK#7UO zAS)qed+TsobG9g{sme`=$D}*fv=@sM6O9`ffeE0Ck#L5)F>>}@d0x6MPZNK+=dSq6qxm`39O)1wFE^5| z!DXWmwd5)|63d*=J^tA-ETPm0Y3%T%7WBJ=k$gOy+%!Bv1)~aZ&UqWX;+oe6H_U43 zNHXXaxe@kUI~pjsWiI1+gU=OBypO|bZ~~n(qjF*uK8n?6AikwIZ}RF2VR{i6LUK1` znDn6vwSPb11twajWRZ9N72Pf*#F=5tS>-KC2z?Mb&}nTM;UyT?p;ChG3t;EHrZ9ri zW*3D~L2$Dq#+y{M%&Ng?h1jB^^4UHupWNP+pyoaiPjw<8p{hDSm-*q%nI1V}6;q;s zDqK!4%WF+QLoJG}h>1NV3IsDF&@apmBV*Gcaf-6>Qf<)O1|K{(efN$|{l~z#Vl;P1 zUMIX+@Z@B~yA>h=991<@VP^DOSv|+R0JRQL{DRX#iq{-Z-h$}6<5O{K%LNj|(lRow z_INo`*}*5GKsodRau2SR`>;W9zAn*YK?wP&ggc3(ee@ocEw5tBtXEEPFE&mn{YEIJ zN*piiz0d6TZtPj9AG)h=OelEBh!k_BQOK5>S(k)&)Ow`TY*mmbg{apJcv*v6;k4=+ zls-wjTShW=-U;M#Qz9OI!qS;}Wl0Kq_n2eX1GtDml%Ky7-@5Alz!^e7zzBKmOBq{= zL+0~Bi9rDeZjHz`kFLu_#gVs%J7oqnfKmc4OA$HL)D)P+MV53Z8`KpW$F>toHv>!+ zwt|+Ti1PA~#8kH!`+m_lIy&aE>>V`D|ofV4!&U zw`lK!1*~?H;S<7}ad@Ih3D4+)#7{KZrpIw*MhUAb==f@~2j`oS3>3l;T}ma$JQw*Z zg~GF|CyZYy2e}s+J!f@QFUiX-q@yUS_fvH;#Vgni87tvx)z|BI^rH3wznNM z)YYHJP6;xjJQckR@eLj!W?);>Vs8pf5l`S?G-so4LahceJoLW4Dt)$)hgV=d z_iE6TK%8n3UWuYhA)ItIY+chlbv?kNJYPTytsP;R~P({eafCF z#)mmDq(DM}Q?4sPD9Yi-TMyVcnw@ORk9%~kBle8$(?8_MiSxfCUhN;wJWc89K|0Gn z#-edq&xz#~^c$*7OwfN%#!oegR~eDxOd@HGiT7I)oC_(Vhuctn zXEP?DAd!`_57VJ;GA+Jc>;x9Jov~_>tXM(K8+Dx^8&mT_xH9$kJuP~6sphJ8@Ecz- zS-vs#Ad6EWL1r_u*cus*(&;ans`0oI)IcBKpFo-y%t%^L1j3W|lV3(sQZCb+2O!HK=|aMl$5Rp~wSrBt5Z=h%DZN;0 zM%>KQ>XkzHO+kpo<(=h*jNkpla6$cPaG^ZrG9V2c{M3baM}Od}e8v*$ZE$bn?r~X+ zh^|NEzL;yLPmh+m??Z?f{;T-TaK_w&*}wNt&H-b=zSClZY%}DYjU8t+z6T&LCP6cXW++hu-w@yoGsY=$0icqlg1wO|0%MK9w1o|smeu;_ zbMg`gXfsA+K#9A1Te4*V#GFeL+x)|xwOP|lYPF{{Ih*!|ncWWBn_RrlTCRCdaH%*W z{epqtSwBA=if%yxG|-fb4$|7F4A~ieXo)L4i7|3hA*T#vYaklcDn=fEXj9z^Q|kF! zqLK<_%BA1|VF`qa{=%3p3w{hSZ6!`;;v{voMyBeC5kAE)mIhs-+WH9&n}?#{u^6Lj zJeHo9Z^hs5=3+>@vIVbJUwiqDLj>&jLFzUtmPJW1#bI#+gbCT1m+1^$%EvXxoqfn0 zVo#o!8IFf#t8hpO9ltnJ7b!?!%p4U+D40V;+-K_JV8BPVC*CHo{tCc3UN)E306i03 zdV&`0<&H0qmYpFS+vcj8RpS003ZmWhT#$;xq zirNH*qlS+$wc6Y0sl2ge3>ASdW>Zt{Nk46@h!c%_mf1~4C$peNWS=pmu>;o^HZ1-K)n zUebP#kb;~4`U%cu*jUP}!k%_|_T^J0OAVZ)@R+YiSIs3yZpnR3@`xk@~IT@HJ%)1*q!vpT?DS2NJ!g{@jEv~;~6BWg<@QtmAm;*lMj zSCR**jEUs`7|)2&j^fH*2tkd^sf*Y2gDQ#}<(QZ?5!e>w1UD6F>wsOZRH{wvu<(yo zv2tV@U`rJqV}E-#gc(dq5`D^4E&Iw5*VQ76OUoDDq&CI8$Hzxn+-L*Xr@1J@0V|jZ zDv%E`LbHTht7}8EzA=sr5E$y2Li+*L@KgB#wnXP%tG@Za@wH|Aa z-#L*W6%(*^2%F~f*He4PlU>)a+|;y>Bv_f>@JC)0>N1EO2CzXj_)PK(;kY*97O*Oi zdz%qZFq+Y}H|?NCD@QuxY)0&5TbhZ;Ps1^^*b``lHi>STD54XLw)OSnq!T>;)8%CMnUX@Hp0@S72lAwKH!57Im} zuFve2k6Y5kq(!}I%3M0HStAZsalf?{+kQqfZ0P){o-V{>kmRu-H_`iysoQEgD}?ODc3N6d%{bS;4dXCQRDWjKg~EudCL{m z5UkE-7@WKlnm$#&BcqMuvS7l)&U3GgwRVr-C6OS4I6d){E>-^#lVcRgzX6n6;xK`G zs@+CNKRjefVK^0t!JpJMAd%$7~{1NBxaZ)8==c zks!WDbY@L>|C}c{vB>)1=vjVB6)C4F@?nXj`X)!4>SZC4sksMjUmkV_R8^mr$RjsR z>?T;QfU7sw+ikdKf->$7helm9d)b_hxAQu z>d14sS~5=Lt_wblXibv`CX3Ga9FBd1JP@ybe%Iw zM7!+rz^`82~sqK6k3QK>v8D&L_~iUlVEm9U=;Q)!ukccxbir7X3(qXz6j(NJ?SP!fr-F-flEc+x`nC&OX#ke2}6NVh0F=1<+V7 zn6b7TwJX@qdR487>ZF4l)QKQa43TqeUa&HuMr9@?_e37>>HRJfTVO_ASS2^_<-yM$ z^%Rcp(; z!cWhLO-yB9vSV1U@Du1~$_^ACll3MR3~8Z&p(F-Dbtu`764WNw&MU?Sp9w>~bJfrdATKpRCJeG9D3Q;^Y^noyy(JYgyt{S3 zp^xZ#q4yS)Drk4IXOvs$G)SvZllCy02azQYql$}9g9uaEuA8Em&QL4XTf$$NW){d3 z80*R^+p=WY`u_@vApI7VZUycpzQN1qdaYCORAq_{1DsKw|lQq` zmp?mfr4{rfi+%<`Xo_x&Kde}#E8}TiB~AJ~J+uiC43qfpI5+Ij9F&{yeCPJDySEX0M0jS zk+G3?g0Mv0wv}24?zhwigU`dmD-A^V;NI(|5zO|8;u{|G-<6E+hP=)g0~4Bpb@LX9 zrM$1+8VQkVT)BpQ_Kh+z3bl`@f()TjP*gHWOokgTk#9iJ=aRcvoc6f&?ExQWet%EK z67-O-QnE|G)?DUta&VlJV~GS~HHgT}4^+s|*;jI(7)3CYTr)LQjke4V7HCZ{)H>W3 zB~-7;))*aU@!`-Nq~|dj(MmW5FX{N}g`BSJ#0s-gKCH-}$aFssMk3=s#N_ze@182K zw4A=7@=FGT`~)8{ka~=INK&lUvfV-oGa{7ma^+oh;a(8x(9rBBPr~K=gmm z_LgyR1 z?7h$LzW3qY^RjcaX)zzW|f1SN_$p8cp>rBW%{X=Y64yNA={1|q*Vo(j& zXccpi5y!U13$mEEa-^1-Z?w#449bEplNP7Gii{D^ySz1f>phDv_4caSqP0}(5b4XE zhpYdG9b)tW!|lMA;d+?Y=^4P<7^GxLB2sC-lCeU0j1`F;??``ibp1cm+{E*ypC~Wr zo763=gvCsdvy^IyG1gvh*V6lZIdCz0Z}DrKc&JAsujsvu-Z7rTo4EsCtL0hN5s@{b zISU4}Nmtf)KWceig~tZ``mDO5NCqE||CHAs*442-YV*sfG*oy0Ne_{V>;hB>3TIh# ziXvuR+|`JE2UL*aI{$HxT9r{9gOHBYHDYy;^ULh%&m*z-g68gLkn=GKR-*bHpv#qm z&yR?&DZ3an_xr*9MLUL{`Y;nat(Su!Q2rQl_r}hAE}iDh;7f@i^%N(zdX)xy*}B-P zW`vJro`ZQJ9(N+=j^TdKS0{q6P`ld8&B-nwkGG_r9}8EP2V=52-5&NK&MQi^EFHcN zDDl0_CrEg!PSm$O#{JWk9gw?BB%i#EnUoog7;r5ZX~62&4ip(KbWg&)1~ac6I; zTLZ{8pzG0`+-m33;@)aLne}wFdwjUMc)ZN=beK-t8MA!HU`yQje*Mq&QLE>yduaP5 z>(SI&13dHwx~!qt0W{}PTw1(0csjqx9D+lyg3{)vSzbowcFE*Eu-DHH&?mEAPH5O0 z3P>U8a>%4-TbnKMu9iZ-8rh&d9?Nlw{^0%C1(n8?sxATzY4_~xtn)C$E3njszQUfP zV=OUPd#vJnvxmTV9zC!8JwTFWl-x=-R&Uaz#IAS(+g{=whMz#6KI#BrnK z@*kiWk7Ed{4vDFmC7iu>)iH+CV`I^*fjIf2 zzQzs7UfEQ8-7`i)4<{=g02#2LT1^ zTJP3IK6F6Gm*omv#ETRP_gU7=4Xd+1)zgl*+$s$gKE|zDbEh1&`8IgFX#`;YJevHp zwtai#YwOEL88U-xRE7Bzep>s$B;qzMQ6Vq2z2sE#!R(ITLTtHfT}R)uk*c7O~gB?c`SjRbw06O~x1Fkez63rxgK4{W#5r z!=NPbzK&kM&Uk(8xYMr$+4uW|zQr5%TUey6@vce(YPaL+IDG>m8ED+m#x(&z&UQ zhrM+)N<7xpcfJrcP21;ngx%wi&V+b92Q_^Mn>(}$p^8AgC|kCEE@_X7PRVC$^yER> zv5WW37C!0i6uaeys&j3%zW3R8y@q$<*jj|0-OK$Xn3~{su&#Alp^PW&jE9}U^!Y}g zq!HIvPaYwQ5v=3G(82-{xiE%+z;@1ocCUx=%fNOp?G67&SwTbW8s{e=I)fcU;x~pk z57Nsq(-)_F?SAX;P=k|Q;Yn>zxDb7sN+c_{Mlz}|li zd;McL?SGrok&ErWayqi}{@=;z$jig}Zz&xY6H9sDhL92crq_lS% zmzh{%8va;Nbp-BhWpA8&bsG4(LZOeR&UISk8_9j}s$x%PMx3hBEUTz8b) zGXbZ5Sja0C@Zvxd1j`3sl2}uKyoGaI?}O24ro*I5$&XnaU?p}DqSLa!JZqC^SW3@i z0+X%ka0~11^9Uy9Yo}Bh)+Mp~-#idI9$=h3$>=R81EIN3G1H$677Vc>Y3BsuCFOGI zlW@U<29M-Yq1Ra8fwlKIc>%p*9TeAj3ga9H80(>XaY+(c=z3F(mA>`-C8w0FVNL98 zm*!(TC8M>Ba%zk2uZiYNl|`maCe2eqJyg~5eru^GsAWS*jt_$C>Y&526oJ+JE@*1D z!fGcozX`znG5qmt$t~)=tKD~P9Q`R%JfC;#6Vz^mA&ey#4y})}4Pb7jy$ z!Iv_hjoM?@eE4L?n*53Tt!59Qb&bXTWez=Y+_~pi!yiH{n-AYATo;9sqtfOMYBeSr z{ADWrMJa5c#1%;B>S~EsR+{D4I(;*xICCvCCwD26nkuwJs02&qC2Klp#aVO|T+ih7 z7MK)?-rA?tQ&1-);XFMbbTxO2HIKP6a6MXu9@UZ;2gGc;xu&@iJItGU zbI+Su_Z0;<=5pDg^}6B4G=Ity6y6#CI%a09M_zZGAWN5hO$*kW7Vrw}DpPVag}5#O zG_GH3n{n9rj6<#H#^1~R4XCeD*ddzHv7aH>sO0nx&1p|lwQbK zPs5aW!Tbnw5Qt{=Yu3wnH3`M?&Ex)AYU_0`i)0lyE|~vnQYiam$@S|RG1wWRadotT zjCFa&D0)X1qk7Ai7$a~w$(!Ge;?Ge>m(n&smDvvocCweLuf3km*G%S&m(MiA$an9A zPkx9|#s9^DR;)RYi}%DZ0L+Xt?PM?iB!F}Ol^HFF^MdO;VV&p_U%sy=O0gMCMd#`9 zgb~YTP=vC&k5-e}b&S6P0o7CkS)uNslC<)*o#GC6B3XS*2X z9UENK#vjABrnpisadgDX!4G4~U*EoNSjvA{g>3qCn)H}?cZjj;cnMKl z4vg&ybKhko51uw|8560gCIyW55V(QH7eIBSW z+qE_>3da@zpm{3ow(!Vi zPXK@^4hqa}o>GpULWEbtuYDuP>uh8FYdlQhns zT%pfGfhH51-lwO+;XEU;2(xRpm2=26DEZXLcGhm8)Jby2`oQ)pFU`C#SBySzgmU7p!!0Q};9AWz%an&fo-N!2 z4+qSDPa)4HC`5n5OY?=ccEGxHie!;Y;B%&U9k15u#Z;Cc&OOhmc$%rGwlBC^rLW{# zF!Y|q3k{)+;{1ZELT2v4N@_-10)4$XN)TK|!BV1d7AfiOW0L2f#a5!0S5kdG(G+8a zibm$pHaAWtMKq!vl{py62L?cw%5mKdEhu5l1a<`N5sRinQKU zVGOdQxH9wZ?<0O){OhxAvhK;R!ItCV?f}Ubj(dcPx=}(#4N2z2gi)*-n2ziG6!5;A z+6)RxYFPbguk8zn!TmHCB&97!yEaUPx2CQ`JvMR27@t?+<1VQ+a_fEQVJF7;EHCNV zm>22O5>JnMrbn_L=kovP0(pH&5@EDsFqg}sHAi&?bA!8$16z>G3>3ItXC*5N)2ZN@1Ap9 zZM04dOpltS2w+x-nvc*}oK9*PP$>&ceQq^9A`L#>*!DbTku`C; zii+(>#}FBjLNE+p81?c!9Sp|(v)o0s8f*VpSeUZ*{!lT)m+Gf^Q^f|BZIR z2q|N%TN8Iu1=8iXkorWkz1R}lKSb=5&i^`a*(!*p`~q^voBAY-C{MH4bgUt4Ux1FX zTo|?pO&O&Pdv|)Dt@>HM9f?c;7}GZ>2-e$_R+o=Bn84J=ceP;F3GQ9yF4K1+_j_l- zKN7vR@LVc*7dz*xrTT%(lBmA=rM#ff?i7+jE%=8|7%6H_SQF_tjhzhYnLc#wvoz_w zpisP-nGuBt7Ax!f+~Xk>h!U(0#G~qNni^lQ9bfrJ?1Q*+JdM{nS-1xED647-tNHoI zMs$Vil9%WiYL(pAn^Io`w&HBZ2~aF=00Na5Ci$@;ECV%f#8OdBp)8SWc$i{&Qg5<~ zD(BB`rGlJj(*`>D#Au9c(#X2(FVpZe%5yG}fdg2$_fSaijKCizZqayrFq`P^7@voV zBBS^Z`^Z{vas9~{^<9Bbr8{(`aQm-C@@+7{edWoVyujD zb`-BB{hJqdmW~1Klvrgqz-$!_!9E<*)30w|-Z1?PR(0=lC2@H7*`TsJT^Fh_)?Fb zMRR&SI+8kCSmt&~HO_+lv&qZT*(mhJ@lA>j{}zwM4dS1o9!ph!#tiMh)Lz#TSs8a! zinev4<;NZ%CiDfVcG$8TOg7=X_&6AfZDRO&UYH`Ob`ZF8#yAzPoP444S&!ZKbBrM>&W@T2HJX~tr#8imjd__J6T9dwuM?E$vMQ1VnmpuVIL+$4 z_2`^rDDc8%`x+C1IInMtU^*DmXog3&x5~bnz}3$$t3%UkfaIb}#|mKR`iigpnYWIc;D*L)Aj*7Y3QBmj}^jo6dOdlP@ zjc=BT678oPR0_UT9{XAtTYqT$m8GFTKkk=<23nn4KO0yc-zqZI+ayx8>1mi70SH zvT5-f*!lyg5Y5x3)@4o~J41SqG2`P+E0_p*qABldXUE~aJYVT%PhrI+>`I2PO-u7E z(ENCCUh4LZ(CXnF?=gqf`jRn=yGN>0_N#ScHG%VG)7gHSdV^i=nHnwzy;oByg-}Rt z>SZT7#TQH*WqA~cOU}03 z!NUyU4A%l?nexl0+ZJ_Lc9qyCh1r@xLz^Rf%V0;Gr-q6xtgvrmZ|QE9q~?jP?20uf z{lHZ6b_W?{$(f2RR-Jm9_6oi);0dg%{r~`n3+#-%|4kSEt8V;zJc2B!+`~qWvXMg3 zufCCzePEL=Ba9~r`~LRfq{vHK8F@(RHg3UnxdEEEKu-cSFw2yiDmiJHKMF8P2%~J_ z)4%~&zhzljjTss_opDN|-bl&kIMC=gCV!LX#rGDRcVYP%X#AicU#Nv2%_kmDGr-mR z@pL;5JDP7*N?4wEm!1anS@Yg)VRHk}+9vze_B!;zR4+*#cV`%_fkab?kWvfpn|qCS z!7@xrRHTs+V~_+J4L5hA)+k}(%|;3fL3A^9mI=SL0|Rw|cIJY~?pvijIWtEh=W;fe zE7@mNEAJoMPDQ3R_i_!;l@w5Pls{o~q+6V3P7 zwA-Q$%;zVh&a~@2!e24~RubO18@luEZp?*$9M!k6Q3KHl}4_o7hpK>8gbFRmZu2Z6{R+X4> z8Q9F;_i{e^>+pY4YCoDAKA=lz%DY>!!Vs+Vw9OCiFqj!1NorH%&QiCGB90#)j`@dA zMD?{(c{(qDn(Tb2pvpvvD?_U^UUcrf(TmHn z`(N>2>RD^;EL!VZO<--5WH&qOtLXE$Qm;ZY6>5^(4z3M-dq^bq_f(Q3aHk%_GEE&Q zm6XZjyeQMr(-&)fD*al}S*SrV!ZQ~Q=JGV*vY|d57Fx^xv015TDNP*Y1mHS)OR!fG zCJMx9e-D}zEY%`H@TK_gH5AB8^0#2qoa_mMIaD7G5=SeQ)MW}kdBd+Pa%Y!KD+L?g zdJzYz!KSg?m$kNxZ0>@F8pXQ_ljlLLyC!pC_;_e(Rpu^Q(iE8%=HBmYdpks1=IQSK zqezi2NtBaoWMmM`P-EK|3$is1D0cd7@1_*%&MOVpt~Ae2iQX?$M~V^FDn*ykxS^{FnA;L5wLD-1|QENR`#q0D5xkuIx-x7nSCXbDDMnQgBf z9$3L%y?j7E)JGUpCMG8GY|m>3SLZp8Gk6p~8_`b%f}F^~FQ;;%^ul8MhO5R~oI!Jr zpWmBPPham3YpYkfz1#WCx)LJ$8lvar{=pT5mr>s>6c4Wkoh-p!>U1_hcqBhaRlarM zf@6@?tELPm#0Lp*I*Dy}u;&z-RKymTM9zL2Xlf}YvK9BjE2$C}Y&LnJLhLK7g%3~X zgCeNRi&o9Y9ZD_&g2QQl1pd1i{1uCHL9olnrzDoBS_Hrul;nGnFrX_RYXI2D2bZ2d zp@03;-GBI}LVx{JlE1F4%P)alhLPt!<1Pe1m*mRg%&VlYSh#>LQSF$^ECR+6WI##? zn=-)f_+Od(rnA$0VbG89@T9u(zL8`n9|3;&3PZ^MCZGQ$uT8wBKCP=47ZzyI+?xV! z!cT-`6F2u)t~?^^&%9yPq1P~dd^b@2g-O3U+I0*8IHY7qop=iEqTDv~EUo$BxRr$8 z!JC;zSIuR%YODj5P+P-S4Sfy{ zj!8XOLiP#zSNQL>L@D|)O9y9a>5UYNc%^xsqCzf>L=kiS(E<^luu-9l?GJ(gsoYoN zRn2kYY>3Yxx!!+rNsi;P0-1t2Sq`3g(JzD1@w?r$GBxH}zEyN_-XKC)!`TZ2(qrkZ zD}1qDv3*%6zV^4vVZ5;34>xmvES**ICRmj3OAN~qv0~PMyTe8$!{f4(Rm|~ssWgGY zy@E4&B}DS$HMwPX8G9BQETH^M4Q7clqEh3=FFU&`I|`Xz6y?w&4noIbE3OsNvIzl| zNJ4KM6Mb1N=hOJ{Tzc|VLasPpN8_=DJ8b$da`q&2>G)s`IpCpGp6E9pTpI(NXxAzav_5fjTXEK)6kv#8{j(s$c&dPjF|KWxf?x5Ii0!+zCN~E_L~I z71vxj3>}+QWX%LizfQ{6AV!0uf1HENnPXz~TPACsBAm=UL}x&jU>?Z>mt&jL5t+Oj zAf7KG4q0(}aC%b*i(s=!TkS>^=Ff#a$;^mAf&GFJbo) zRV0}4lR3U}b)*EtgGOW=Kh=njskXlh&2_&nJ{*U%+Fr3p5(!&+cSC!FuYC2h+{}7L zpK>WWQ6Yhpr)1~}>wHf%lFX8UCc0Af^|Yd1k5Nh6w@@|e&&zti#;p3zeDh=Z{&I&c zThpX^8oIL4rpOWIZ<<6(YL7*i))dF|1`8cFR#Qi6U&u{7KKmpO$>PlRt_G{NhIK6# zY(EPpa|3pc9qR35_SZFCGfnixKUCNgs4Sg+H#t+#T#uJAE8O4hE{|mL$C-~C$5QsJ zY*%A(C$%)47+7WZd|jk-J{8cTN5RFIRue&()Dcqe#4Y=3?}h3$tpo9VT4rjWi!4K2 zI*lB*ErRo^2&7|MUD83^et5Tm)0boaBCDP7d$VrnRx+$(I{PpFXOC;DAn3&VE(n)- zoWmTpKYPm_Gvk!*Yho+_=rZFqjt9GV0sQn}>@m1-tp#94{uk?5wvWmi54LKpymd(g z@T2Awm_c!bPv#f90A};iP5=O9FaBTH?mZj;+Su6ZHd-M#jAW905fCLVs{5&yV!eU(oQqJE)S<_=F5#NIkJ)K{vRM0Fdi>4f|Uw zd&d7nB>#z;?>cxskHm2P8np|_(9=#oFM&gMkEe5wo-KoO!Vx#^omU^%7{x-?4K-q% z+GB;GH|?6{;%X+uD3&b0v9-=Q%nj$W2Rn}*2`tAukGv;5Ep4u@Cr_0CtQpcksrEWY zCtEL`%G{~nMe$nPM2D;8oibr{0FkcWgFq}WjsvFC_n+v(B7Wrg*SaAToYi(Wtc?de zM{4|3-?)9}crzaDu00pgEVZ_^)(IvqlqWmjBOOO(`E-(TWnV?L%|$?TA%#*qWP>jc zOy*K-xYDSWjcJSGf8f&|>IpB!n}2=Y%>+(2dpFqZiKh%!hF>c6V_yMP88ZmWB zGehsSwn|LKI$gxe;VWupE)P+S5nbdSyqvH|*puQWO2*66<|-i~evZ6vDyaH{HE4Bw z^fq1w_^CK)d;3Sa0UQ0Kr~B^9f3qQ zDhfQ#q2r$;q?ekFLR^}YK*JNkt+3K++R?cSYpOh~-2k;7WK=$5-3LQ|%#oASeU^y&v5!ec$40Lj)B;WuZz z{O`&V2%p9*gH(T#AKtCNio&)VREUNPda`4S<* zgbcd4clKN=xH_rA8S>G)Jv{c`W9o>l4-M8`5H|%aNzH$&)Lv({q2oZ*1gx@|NK21o zqecmL+>TA^O8vJpNX@cxr7lVK)#9R95~Su;JL!DA!g74`HOa?Z z(#o&t!JTFc8$k*@UF-@SwUCy&)w`i6gXCEDXV;Mh0aSn`WnQUW(B-Prt(GwA`YSRB zS)bYNy{8B>T=bNBuClYfdIXkreqVYGU&Z4;ha2JE!(SO1{4aWe5aaYiu;y4j>Dt0# ztU5V9N72V`Aw;d|qgtaYzq4+)D$!nlQ@;T%1K>u_!?zAr7Z$(KrY5%tojt-R^jr;M`r%cO#yNbmVMGd#e|Q~AyT4xQ z#A`<#e@)UoH~_?gufU83L2@%qoi5s*uKo{5PZBB|wC5UZS98&xhO$>KW;~%07`x=< zAIr@fTGTTL^NSS@Adqu^VKx+CzczBj7mz6kF8JQ)@NSFRCniyT+9i-Wt8+cOpXcFq zWH0MA?HpRMlUuHzLs%0gF$+8cE)YO7g=jw83 zW_)jrURKDsC7V#l@6~?HX!IM;qPRj9^RYXL3tty37vXELU96M( zag)jb_bh*XnA^T^j)$#ae&Q8YL`A9pCCmJ+3tzMZU4khxZkR$hx3KzSubkD=mw2=2 z*ou1Cy9O+9&b$U6lox%6ghGCsLnNayay-kQ!4p(n{pG$zc|Spv9+$Sh@yxC5*X0$b zZL&(%l5kvX3F0$M<>oskk7=CnXk7_B4XU(y@W#x|cuzk@94}^$3Bggg z0pVp+QF>-CoXY<|;jWsZ30=|Fz|shu4vI$(&2mQy6$HwU=S3|wG~#rU?B>nrwA0qq zpa|>hNCDG%{rC2tdkCZ%K(@kn_G^~-OO8V0TX71z*&i)boB|`(Y|J%JNT>ZUJwb=T zPQ?U;bSsLrrEu+lhGuyyT-vhzS$NofEuOK?-1XgGm|$B#zTCx9@9n9NTO=n*ur3Rz zgmpTNd!`-=Pa6-OTwt;as`DlkG_~4hzNvJJ@l-AtrS&=^4T6%ru{AI2J57@Iv>st5 zyYL(+d%XRI;)yHx-|@F^p`&~5CC8M+gUJbnCM7PLjR(`X&7?;i5vt&4?jW8-TA@wY zEgeRUGpwZ~*V}oOEA@)u zV?li&lexY~hk>8T>M`q0$C885#z4~vCK}Q{e2``YWW4g9v$wy)sVRU!|D-!NxS`bh_S2s58N{O zS6a61ySn_|?0=42`8x;w|99jHJ0I8oid^Ajg-oZDgR$vW?@m${$_uKk&#hHN5|9C(*im< zIk||4$OXE=CX&m?_wV2H^S4w~M4wlWor=5^DEk3DxAD2DD9sW9T=KF)*f}`hi`mP{ z$e^O4el^|-kATZB+SXRKF;7+AL^eEJ(%$t31r@cVsOaJDiUC$_l(XS^VQHBp3F&dw`83vyhAUJcxd3omyFme1=|?4u;{lyTg2Zp48OT77(ot zi5^}AHrlv)JDp;=C}?zI0QT7o!TIJUxCt72NoqAVutcs`iChx1&a{F;c57{6&JhI6 zx}(E#zSnw8&ro$C^i-AUp+vFz%c^6OphlbMZ*Nt>dC#>p{=D(|lP#=8BjfIXv-f#TYu{H6s zJ;oYiQCP;@!^x=X=GnnH%`(sSXVf!Nv+k)wsXbQ&O|BwCT-ghDMVL zn3lAyh!){r~K0D5YC;V>-Cs#qI&YUsrj<} zf}&DM*B=U6`f)jxF!RaC3wlI$ZrgFLjh%wtf*qZ7EAnW#yPlN45>9)@`WzsWQUp_* zXD2uC>r=WBY;sB)L|!Bg@FC^TfH6!x$H+NiuNg<5G2FDogf2H0*NU|*_6G#~Y1I{{ zb2He!ujV(=7ewqC=m`gV)OC*KoJk=Z`XuDZYP`F=f62$xDi(M3K{;Trh7J4!fiFTH zLF@%&?`$?BIcFzssxXHm71GxP@e;+9*e$kb5G>=kgVCH z)_$7~G;ci7mdn0ef>(Bm_`bZRU%B7KkI&6DE4= zNk5@!rwHM*Bonbf%R6t)+UA@zu)8aENPEc3Br}<9JTGWNTjW@Xh0c-vmZ+fxQ_;=(`J57D^mS2!WU7tdQXw3M<70n6mmv)9pkzFe#itz-_iIee7RZr!m^)=ljSl1A#rS1y~^X)%m zzOyA!HvlU#LDQ&y$KbmqbNyM5DJnMT;}X&o5x1S(2QTXc8mVIz}Ku+}QiT|Mcg0JvbFoeRSCAy3RqhR%oo=MXt$<(rUq#&m`E7+Bn zwD*iw^wqq^;{rKkG5e^_iMl)8yyTL@z?nK#xLo?$$RRDFv}@UK zy#Yh>w^7?mu!%}Kvur5}4S6WE7R&+Wjf-AQiT=83y7I$u40qvl?Pfmj^5*Lt zI&~RCmrq0Q`32Z5kzkAun{M8B3Pt*H$9%I&$~)RAGbc}I7Use|-LEy^M4D8=dwXgr zQv%f`Yd316Uu=nkx6alnroMj3s1t}!in86kZCOUoVHhd4;*|-cZHrk_UAuoyn=lo= z&;{Cf3Z9y&wB4*a7MmHw9H#H_S`TA2HaR;!D{DB+>F0}~xyF_-_f0;qk~+#*XC$2( zL`dqV-493cS%CsswY$;y6Z6emP#Y8s8K#IrcZIU$Ve2`YR{JnR(4p^Q)LKBjy@ZlZ zGY+KkEk^WSTdpEwHYRQ2OJP&r9tUiF#Wm-he52wn-xMOJqJ!qT@0zDHMH(Sy+7Uh{ z-urXa^!!PoqR`Yxck*3!C3*Afr)TX%+us(J)r114#)GmIOoY^23s0(Vpzls~K)n;v zyzMh`Rx>h{CIzRPg&;JH-ujSdj}A4+_4vHFnXH1C|8G=x%AM_6W22oUtl1<OT4(uvemAlP7IOkuQsc&e= z3x6w!q&bPOmgOI9sn!m7OxBaL`LN@bR*HTPlUqsWUdM^WcrTlrTK&8c-PNWw4>hl` zd&OZF^3KHloK_FJDUo$)=jkA$?TB+6WUQet$vYhJUMzVi&CClp*wLnnE0MH^b{-Jh zyExJSnpXLA;JY$xO3!i_NK*GXnr;q57!7$O187X+`v=lu$eK3QVmAf? zEJupg0>f?|-fIqzIK8nJgK2YlSy=Yau{iXPGySygAX=W_M|Mf|z8>n7;zD8F@ zEpboi88{1_XJ8{ORwGX4QC!DT2JA)VHPNf$G7R82AS5e3 z^4@swspxtFrpsUu;r4)Xw?Q34gwoDd-?&Ik4Y*&nOx9&(SEGWsYL3amdsgwC+$V zwCug~GIXWLX$SxGFM~QtV*C;&F6ckMQFPIK7p8(qw@j8_Hnm~@o;1weh6G*5l^P1` z_q@S8$&EC2# z1%IxnIM0m^KthVY;t~19m6WD7s6sKx`^m< zBY6L?rTPaA{#W`>*RQ^N7z^vEwawqf-O}=WklQ=)95}ChJoy0Uy)yIAgI`;Ltw+U< zJI$X(<7=%-^A8msj$Jksl}+$<3lvyc$*)cu?X@I2#VXFHBS0*iXd&;jF_14HZrO?& zPe*5zdems4k7QCdcv#rPrml=359O7S{O#Y~?I{23-6Ie0JAKM<^zE#t?1lD+INkG+ zgPs3T!Ud$|V|K;EBAX|UkC11yxc*HNZNMBt1 z$ZO9l4D@Qj|0GOmcL5pBc3(K860Xf&HMXpmH%%C<`3yEbLWEl0^kqDa0npQS@WZU; zh(Uo~{Oa$sqs?JXnu?8@1cYPe_7#-F#&orgpozuqWhQac(PY?OoJSP=-yy@C^l%b` zV<2^=v}H|7pW62v=Z;Ao?`jui(Jd8R_PM~Hh2d@H%mT?M_%Rgq9F`k&V%U{2N`Dm6*>rAAXdyI711cmr09TtF72Lp4$a z%zsejOLrRNC8XplMmO733nohoul%FtBtwN(o(>rTaQ6J(VtAYWY~hYZuP=OX;fnDn zO8#4VCj32ky#0@N#tE-R{Jtc-mU`y?UM*P?jdAct@gu-rGq5ETUdh2%@TQ2X`O=tA zW4(sHs&)9xw0-UfAp;|PB7Xrw1dt(u5dbj=5P;vHpA(?V*o_6=6(`>j1Ch~*V*dSC zhX4Wg_cnNM0Jyz@cSu0YhOMxkr#L_T@Y`kHcP-+o?WQ-W!I}irY@9cY-WrsEeTY3z zc7;48DV}(2cf*eZR~s);6cC~Z>B?B4Rm8HZE|Dj(XB&1Bwv(WwZ`_}-#OK&q27ZutcF4~@7ncyjBNDEqk z`U+d_JY2Y77GNV4XK8OeCY-@g2;K}jDTB8S&mDDJu61?nfv~pTCy2&r!uN%O7q>`F zX^I*iMj>t@CWnJ*OJZI0dclo}k${?(p|?HZ8p+=@JGoAEKi`AtE~t(>$#7?%(L<{O^v+`pIuaN2Da%wLdX>;2HR5;JE$yo&REw@P&Mt67Kn}qX( zEQl0N5jd3|T3psPSK=7uI)|=CKp`_~{+{#<-JUHQ<8ZI<_RQymDcz?69=D@_N;!0g zts)|I;O9i7Y%vh_CM0v#0sGo=WD^T%yCT|MT#9ghDxX7LJRYMD?C5E)9G!}pWbTdv zMD`-q9W6ZcfSlbaztJKYL^eYId>xo@#)@-{p0Ir`&NHA2Y%PK$wwE?CYSrA=rWUKA|t+^4DJB+bbS5} zG=4k|a0Ly#_jG3CJhs3Va%~fW3{`K{y}=@h#kj?==gP*YjUEazu_8Sbm*FHnWZgsh zL22UNp@Kt)yLYlZYmBsNn8^28eml<4jRSXK6u6~Tb9jJFOIo5;iERG|P zuta0Jgm*McCufNcws4R0#C6HIUNl; z0VYWy@V)n>la7DS{1fGaIaLdA-bK`g@uj=+w_bSPWB!ek`SgwiZ(DoL-!C-NAx7a*YVh9KbQ&UsU&d!lBHa^c33q}$dF?LV^7lCK^cM${b&W(=3 zZ~yu8XFx!}!a~#L=4MY%&+YBr0{YQDbdP0-XJu6geuDq3&=;Wd9Rj6%xAJfS$9H_rj?1J!P8NG0W|~hxjBxO9|be5u}r(eEpt-Y_}H#- z`8v0X!&_*wzF+cus552YCj`Gw)gOX1hcp4HS39eU-bZK?80@gc_k4rBO z22-}?kcRB@8`lYGt%QaN3or(=lT;=?w$$6!1PnZQ=a^oianok#uze1>)6=foQ?k5g zA+x|7D!e~|IT04p9H9Pw_M+*)6)C@1dV(rq>l^bJIK0n{f_-{W`^dtNpQN~wxMd@t zjqzKP)F(ss;kiEM7=`X!%k$YY>bY^ZqVNWuXlj#3O5d-S*WIM)LHCW(#^65HTnKQc zXU7Hq{F7XZMBbT!l-Y=4kcOcv=U}F$Nq7*gO-q)7PjeZVtCRQs5JkBA{Louvh}HxK zTSs{_Y6~Ssum@~Ud!Kr>T&irylP9=MY8uJuWh?Y0!bWETn~qu63B{ z=RM^`PR!xZn@EtQQL8IB;al7sS=4|1$NG*6is(zsLd!l2alz+4dkT^^9}a!vBZQ^& znQx6`&(bQgj-WZtQ@{+8W{{!9jcd7ZgP?Rnp+$E!;1%BGP>fuGev8>t#*^c0^ZdD&qCg|Hj=uT z%w3Y}vCigixori<2ykuF$qR$NWrEJG(Xl4NR^gxD(@e#i>+W@9ryu7TC6BNs>^q&l zFsIr`ak=L+#S+t&uhEV9#VO|{BVh}rKUM_N1+!Gre9tzl4uXZnk7_69vUa}@iT8voBp*b!w&Yl z495HMx0s#O`Lz|3KV8~ZdM7{pQfP0=tv?JD9F6-JTY(J!bnA{3j@+6PX|?-zW<>S- z#2RED>bj?H3HcU*`gG@GbwfNIy^|GGX{{Q`aq^A^zBcUSKfZ%}mKDln)#>cBXC&3v z$6tS37ESeC(Kh(V(kTMBFlPUX1y7W!XdcOF#~twQ(rsiP!D4%N*>Xmax&zIjho5Qj z71@T39O%!uG;ma?Yn!Ay)P5eqKV;tz>$?GgKe^!0H93w5{%{VAA&rM)F`8A;XrF{v zZ^jEFR%>ZL(uLIsC%Jp%M*kTabN!Ln;u=FTSWL;+8o%9fvT9r?eW%%7TDQQFVfx!} zw7@E?54`f92;WZkpnD%-*vSb`mM{~Af#CdvOH)wyMeTNCOOh-S^fE5%QF>TePb$B+ zewkg0^tIvxPSTqWj#$N;M<|3{L7qzu6uo~m(VsXeKt9?U7T7-&s+xQs;Xz~Fu|)G3_10`vR3yUv)nQ0ov`W%32zwejUj3n>9+QU!-9 zDjRB2{J~BFxaA2DM7sEEcEOEXz}dV1QdgOjV_V2#uecR=2lXf_iQFDd{#~`g&-l5( z-#*|E+y7k7bUni;sVXVoYVDKWV3GsB7db z(NGm5-`9D9{N^EKstzZG?1rQwFopF7u_-tddq1B(l6f3&j+6F|J=~Y70WmF0T)HYL{JU;EF`<6 zt1T8ovb+aOjb&lrK#CRfFfGR24dw{6C*D9H-Jh0m*7!<^VEn!)gf=UraD!cos$tdR zdNj+bnL|l$w?kY50dj&Th(5eso_Z;9eajQQt$M?H|T3keRfiz9cOSX|M4; z4p#x99wnn#^wB4}lAyy^uPH}SeevNNjy@4{(@Z4wu|+QG{6=ljMNN?vJByC3sh#r*h-qaNSsFI;P{wWJsdjdP}SNOiPi96GXCAekmc6RSTDnCb7+!5X!#kCn3qsT#~cdknbMMSYwl>7ctLKArk0nPys0O5K3&K( zUYG<-S&XIq&btuG*_ptGKZH@;^b;l7%dBL-l2#0u(x_Y>v4)?v-3>y?GiE=8cV5oSyG<7;Nn6&TjNKo3J0O;AE+av=;NpwFiKIrmce%Ty|xN2Y} zXk;R(Cdm%wi6czYIps3*duZJZBr)Xtb{Ma$`nmFr=R~rkqthpPrdK!I$L_xtR0?aE z*a#{=MPTPrxr^nn1}0V_Kov6Y$A`x$GB}0>Ig6?K8mroO`}uNuL5}X7{M8LK!uC;l zye`$BeOxj?V6c@1Ab> zi;{>IV&$`uO>_P7LzGAI=JHn+H6apSuM!duQ88R`9>3;XAbwf3@SlJGt6`{bHL%@| zhz2p7L{qfM9|h)`r!_+j2`YKM`7hF6j3n7fG{Ijd(H>|SG>nq1rRj67c~@{%Rfi)N zi_Ajde5yQ_`LyC^bo5&JWYNmL)%Z zA%<-UdEM*BgQWsiaq6(R!e?f-+CoV*3^}i{9o-+^3=@f)j-n(wf+LxpHH-Bl0~SM@ z5|pNHg!W9wlVg#V^5cgFH*}g!H8GXs^}=T24b?;AhOz7Kwd5VByuHNZzGU2cV;=&$ zpEfsh-ec@Y<}iNA`p&-pdGc}i?N~fxwf-Oqc|}w|>NhLVInNM#($RKCGbaI9ceDdU zcdi_?R8>P|^TswmvCq-I12bKA-;S6;=}c@C-)-NpS$mZgqT#U&$S7cs3duEB5BX-l zT@T@En^iZ26Cr_0GLuDE)Rj?HRtuK6iK>w~MI}}g1BgUBsB4#n4_pkujQrp12YbP$ zuzXjC^t-$HPHtv7Su9MwQ_C`fjN#<)ctgx6MvOs~*7quz1?wVf<;;S_nehHd#-k+# zqo&_|Xt2HJqN?h~SUZIbL#%um6#u&#nHR16qdgeYV;>howo<&x5jGFcU=32e0yJ z9&+hLx^1=v>OW8b;_^GnFc#6>GDyDl}Lswi}&u8`k6csCq6sLAMDI&B{c$ zfHnYAN`0RHPh3O~QR_yL_LTZMuZzRMicgGXL?g07RtbkLL5gT$)XiNXLv#N|XF$bsSjk-H9m5t=KO{J;%fOADL=wbl;hgB#vpL zKD)5*id&Pi8g8%pNMV1i?@Qj{#K(rq3SGYU_OxvEfO<(Bl%)8L#_!0z=^S2=4O8E$ zXT^>W=+MXGSp?eGZetb4u=T`wN4O3s29{UU*y&BPWd&N7DvBkq!*l-WsdM;Q*eBSk zP;I^I&VCwgJ$YwhF|iE$m;QUdHY~4LkM5!orxgC2G9_!3C=B=!ei=(V_6((d?ZX9^ zKaVDbO5R-R;)$!-cw8~cgL74{f0xq6udV$U9*zh&9E+F#N58O4fHL(DQRe0HL<+lF zO{%x~-vGKLvByv~&+eY_+^TJlf#3;LW6@I@by$NkQf}*ygW3X|PMI(|%b6?pE|^73 zI_XNt{f;1r4DA&Q3ec&OEtSV2C<7#nNJ%v1ZuB09BQ^?f#umbSxJx6Cbj{hCrS_}3 zGuk}~PvQ$}yibnDe&K!m=44eDt7ZR%U^qKQKIx)&n_+QzGu zu@b0iRBOI*!Km>M2@E4>E_R%Es7u^WBsf$U z7z~!*+|by^pUEenl{Fdiazpy{|LjJ%bnbAazi9b+HE=bYQi(KhmQxmvW#3!1B|6pOh@LVF#b@7?2?H{ns?g%!Q>?uY@>3&An7DrFZyk=L{pOU} zGZcsx3BQ@n z(ljun+RpjcC9XeMP8#Uk<6Mz9`(&ms?`U$yo+*C4k)bE%@bXhoc_y^zDdNYw@4%E> z@0rhGvgII!sDMvg7hl8JNperJOxian-BG8gZoMNE!O3mwHk6rQ=$p-#CF)bNx~|-< zua*@uPP4^O*BtG6s188!ZfcV40S}fHAzDQjz^eXa+&&mAz0WY!DJT&sl|d33#gT)D z5Q^B^Tl;*LHKNz^$EP2xE zz~rfb)h^kp2u8fD5CATqF%UHdz;;;AvVIv^*aXwO>q$W~J6*5m@73wG3JHL7fx!?9 zh%G2#`W|JQI+qs9g6(weT)dF)UcA`jc>PnpqeGx>=`{0j6qm8;EIX21yMGfH6nopNI?@eWDVfPxrRulGzE8%Ewypci!^qJi&;JIi$?cJ0 z&}*VJY3qie;s^|Md~QLB8T_&Iby;XfSi?tef~4mTKsi_Sb+jBr2LwlCrpAzc_dzfW zig&>I@M_{9=b%TZsjz(Ns0*~8ttPq7RLbgcgI0g~Ot-26X~E}SI$E}vIVC5ZWYhcI zJ_jhd*BIEH1UQ3Xbe(=*UkgRJV^=6K5(dEywLGmo1=T#@ni(RM=Mi?H0@k5Q9|KUs z_~yDo0bdZzJb_%nWF2%gNVpyCI>zi^wJe$}DyWE&ETBq+ax$*8N{W-Mz)=@MNcysj#S3g}>` z3O>O3T?gJZ*VAZ0GKN$z_ah2%C>!>i!v{OG>~sAT3Pv}4r+_W~j^w#@D>Nj_Bi;QNtm3`(t-UM3>;N`F$ZJ0fhY(swkjqZL=Qml~)aD ziv8zShUln1Q0z^&j!XLd!TNH-0hh6x9Vb#ljmF1l&2(iOMRkf}!{ey(*{bqY1&t3b zh;&)90WmQ?6<|}s52EENyL07#kl5Ws#Xy17WD4x_OcRXF0=J1i=;`_afP4P-_;7AF z>xP!&&iNX&Bgd)21I4suxJt%k(_ll`sq6W83m0Y;tp-JAQ@|{5xbJ2ZgjHAmYg4dA z4SNxv!J5v1KG9JqeOkBFZz89%!YuNN;D8KM8iqYsK$#m@bLV_-@fs2UseRq|R<0b) zDw!fWKti`*GDns=Otm7}sYI237TEdVsOjzcfo9V%&h5NqGB1TyV*Y3OHKLDEzeD7L zQC6H+pKSLNiov{L(5!Z&q5o0O2m(VV&Prnqdd(rawd3d}s8Kkqv24X~1O840yl-+> z+hM&_o;}AZq+C!!)!!@HZZLOnxO<4ILRf+ESUow%m*nknlRTQ35{!bWzpPU*d))sR zx%-RUf!XfNb{1c;(z}(8+D~tsA3#Yc5}r z7fO#7@wTPGSXe%XW20f9ZK^~=?Pk@+4_a+rwkof!1~JmvVoxWDO2JrMW=u3PIVDXL zZhuGmobf)ROU9`l`$i|S#2)ptdIat8?@QT)B4sY?I1*OKUVJPByw_wF!EPJ99TkH# z@niHm^|D5L9$9>kJIkKWM*z)tCNWwCB7kDh=jIT+)LX-OGS+T<;+LmoP{zqQVa3~) z)AKC(Jdao827an5 zJp5^Gh-$F+7D_!)zz_ztX3N%WWvr6ywWCiRa5NQ=gIgR*n@-)|G#YK~1(op+wUo$` z)!U93iZ7=#nE5~J#5I}BM-QrnfNw$_O*Qjmy%e)DfGtTSC779pyZU|GXSZ`x2kSvx zb9e?MO;u@^MbHf(KOyiiui{tjW*VR+5c!9Eai+T~Y~|$@Hwzd?RZ*5mx&tK+GMj8jBLI^P6@qWsDu! zA++1kSd6-_?&OVqY^U!dE&$n~Ou`pZK zxOp)?iZIyC;SbF8${B0oFVpDQ{}k~4-{1KC!R`Td^}m)YUcwgsAIlZ||1MW>aP$8^ z5iI!m_;~)~f|Aj?0znMff3`yXAtblS0?Yr}E!;ek92%lkY2qCV2Jbhoqqzz`*#mTf zAlD|t=O;+T@q-!I>_yhP^TPnXq;#8P05ND9%=Pil%ilpo2zY|C6-;D z4&zHoM!!!_DOg%KHzF^aGr$DGf=aODRsb2$7(Eae3z%cLzM|Ry^w~39R zRh`n4);sFo&q^5AY9LEl9b1aWk{xC&X-_}ZxJkA!E1#IwVLw1yI(XE;0R-;6O|(hJ z;ps0K56mf<02cAZ@dSv-f)tCGgs8t~r>IQ6bdH=2eLxSEgILR$rO3SZZ#Y2x-W%xU zD1ppXx5IQdk5(SD63^^>9+Cw1!nc206=`AV%x>(abWUdqI*7*2F0nb*$VKOv=oQu^ z9HA}FE>)vv-5%fUV;UmBz|;zfnuCbWU$bV|vrmik5)yv&A?erD`1#(UNsWIXs{HOZ zKAQ?Q4#PlHnL6N9jJ4w~&@^#NW~4}Bk)jFta0}sy%fmFbWxn9|^9b!ai4HNeTdDK+ z*33F|2aoi5gMU|!U)@p(QC`ms>G75{qaj24r7^dc?*I>-djo5;mw-pW)qnwD_bZNu zA8ip|bHle8w5H6oMpD6|)_SRxp&Oes2{D0BgAa)xh_vS`4Gh*2t)W6W|2s1NaXyN* zD%AD>Uz;7x?REM3YAG~@``@e|Qi)5%p;f#~EOR$oQK%{}ahkRvcy-ulwkYj0Z~*nR zsLk|RfGD1`u6JRj086HUGEb={iOxjOQoPp3i0iUa`4ICIJJaXg(dXR1 zSGVDxfc9eQ>bwc(li5mPf0;U=?hlh-D$^C{t7=5kYCWl64nGkca8FhDc3tEsaCP&~ z(xd-q0|>dRZ$Gimd3Y=NPtevW(+&SeA5vG}g&Ln%wS(s-&K8`+takGrz#E|+-VR@= zpL4H`!|qMH=xC+e=jkuS6M76`g6aCBPL(UwtIy*OJzM@A#!sw^+jIfY>N3}o1c(j4 z+wSlmUgNr*-X{AtbT-dWm&(jE`pnl}I_rJf!>nLk-A$t-pvq1?Jdj^E`Jv!*%*v3L zoLDn~>h&J@Db0Z#rG^X4BVk4>aa0>?Yq z&iHKDp%pmr9xsq*>HH}0_Jx5Xn%3Eu`6!*#&8&iG)|u%M_4;^hn;9nO@)?}9d zY;PfHSFC1M0=E|u(9L3T+vgJGSTdc02>F^R@LyW-yKQA7IHuS>VAGYn=r-WZ8#(F2 z#vJ?7)UKNT^zi3l;JeZuK3-Px*;$0mrx$Q?9p)*sNz;F`b#=;?A4o7bu~ARVJ# z&hiOp31r^jX=>8>2E?5JeykWPa%UAA2-<=~{B5^rvqo^!adiyp_-)xRB&Bf!WfE?NhCN8Z2Vt!pS9g$0~#jGx_Xe>s3%^SK%Sr`7*831Bl)p9)d{J2H8 zShJ~%_e>0ub|p2XZTTSo&oglVbUAtVFCs)Af@@#coD{VHN>k3g{~6 zO*|j>g?{gM+~`wa(L7`*_UaMJ+{;$2nc)*!Owh5r$_UEa(dlic;v-p&M{pb+65oUb zY_$`x!WPk{omWM{1|oOh#WYnbAtBIGIHn2i002l6eb`jMA^jHp9<1}1yEjAlq0i7* zco1GMxN4AdAdbI`H+f)lPH}>aV!|~uoK0*{cT_eD#2<_c4qmnRYjWA z)K*uic(Q=w`hxwg-yHNbh}K$B?D?F;ROki&-(pG+QQ1^ zX140Mx`i{l;^M~Sk5m^{Th>LlN^3-7b6s$=t502zopg{J|@&J;M>H~;(I+wou6p;h^HW)X9O8Y;+)Gg-h7z86-Wx4l|_a{XWtWN1?2G6 zG6kWiSnoX?8JAl&e+h65sb}4K+adWVE=Z5~wMc1(IyCA}p*J%!p1I!bzQJkUJdhX_Uk3Hk*uM}2CJ zjTZtn>{2s8vf#NBvnAV8>QS%&H-Y||eHJKryLd8Iq6wb$qkZG>gB&<=h>xj|*TXDT^Z2opSy^pSP2S?;@#(=up ziZyf~cY_nNP;Y5sBz8r-EO_xa?(A!aNZ?wyXaDMPtX09rBE3J8;OaqAF;NOi=dR&4 zOSxsgwAo?go9i1`9?$hM< z0AA&~O1p23kA$$85@2PD(1r4H9iHNPV_tLTWvm#@({As~>}jf)pe?^W`y^)Az?GNg z>9*~#yt6fP#ycxu3)dt(uk5=0Fx*wUGFu)5hu*J??Aygt2-)*=db}ENnRv|=*JB3K zXWWNxi%Vk3Dsg~r+%7tM4@=m-05SHnqXC4;?l^_nV3(Z$+o81t+4A3m1bFIY5Xb_= zJUDUa^7v2rnkSO#V=PVkqS@ly?4g^s+omZqcwUH>B?;;%;c;68_4v76$Iaa=vDFtX z`?%$RBpS__LUuLUVu%K0m)xj2iJ<=26+>74HAp|US2X;T?Vc9p7#qizg)BZ7>-kO* zDEip8=qf5#aAm>v3urW(DRes*SR2`k*~#^5%^enqqS=eNxSq!?=O6(cE_s;{QAevd z%5Wa*i>K#QKB?8d$8kPMuMsZ9c~BH#-j*+fB&~-c68}0YS*XN!18M2lL*JZ>vG{mW z(!i!$9*np|ugk5Vl*(=4)59_fNWP77aVS5-VXItaf=Hb1e*l!1JZ#^^07b)3%IJ%a;=0Qd`9-4x+gs?86F+0PsaqF zU&~fR0Dg8{IaukZFGlQ5XdNYtUvm0+I_nLVXZD7K_~xp z$gs6y?%q}rHH*pAXYQqO;Gfk#bcH=A_HHg>Xm7dRyQu3Tt!P@G1fmTssAn`WEQ@ge*hLucXGCC(ew_-)JNuU-YS5<~7`2I%S4rA`M*ghH`*Ny0U zYkTO$+Fk$#*U}&<*(&~pATvPA``i0wH0airpKrk|r}M1-ORUzb ztZy50V#ghO(2YQ74SPgy8-3rN;yH(yf?0SA8dX&p;%cL|P*n$GrU=y9H?NI|7_<6RU z6C;yXkZ~+p2H{;erf4s`2l-dJ9nuDfq}ba!#D%x3qrSQIcb@J-T0XAREg_8;rwK#v7oQP<_Z2F&Vy zP{0tY^^)vd?bA```VxPLoRC^|L-ks4p%g&j-d;aRy-4Q}aJONxPVlnJ98ZsZ5P`H#3UZ_=P=`kMW_U@d3ibCFc zh{}XxPkRRMYOU+6b(8DDkTcsMvQ~#7I4!8IK#?U&Kn3f|kWSFs*fy{=IE9g~D6gWu zL$3X1Q~a|%0F=>$Sm+qCjLf3Hq#0j)A2<2Uh;X|oZg9%ZiqSuD+Lx-N#%DGZ-#elF zOHtPPNDHv|3Daj9h-b-gDb_IPtH)*=w>pk`alCw@!8e^qa`irw9pk#$oAaWhx<^Ye zVg%b|Uu?(|o3+(=pOS}YS-?T5Nkx9u4G@8cHRVokIU&uVGI4w6ti*R{%F%q4VEbOF zDYUTORb%zIG4J{5^azrWVDKhbw=Bj=NDqszQ2eKUhqIGyx`F}NQYbFrRmKLkouN}1q|(qA&&tlj(-IU*yprV!9{D6uRYhuwSyT;mG(Zq;*auuoBT(RujXKP7 zH($~Jl07p>yFb<~>%Em};+Cfi%K9i8aau{*1>iLi?d#(Dm?08Cvlq7eeWXQnY}TvT zHS)aoUAfb(Z`%ssE-~=Julv{5)!D@$6hzPqs3}q441~0t@N{9tW%H=O;On=_AT;L& zT0@l^-5vXNd&28do9nB7_`qCb#j$Bk`Tq1KnI5tkxqF=w&pU4W9*8=xMi$8ax?-H- z5%=tJ6;o^ifo9)<;pC&@HqC2y@(Ca~@Aq^4G3h#Mk0XdkAbgOB>vj~KTVl}95GBBT zXS8J|kJQ{(IrHvL2i_E@_E#JY{#~;K*>L&{DEIgMaTY~p5BD7n`IIGVz1Yw6fNufj z^IzFj;rrQNVU_Vei?rX>I7PQ^ga2Ykx0BJc`LkMUkTtgh_*7VpqP}Q)J0=y^DW`84 z8h>$zPm7O^af`#s0=)xoncP}xq05_MP!z9uk@#2fnl%AGy3bEEO0{Dqp_TX(VY3VC zUGopuP05TzIYwU{1Fw(MuL7~=Rb>9C@8!^NOKx4&qtm*MdzS8f_RTMUPt7A*!l=mTBL|rPjNZ{+Kw6Mvya3#2l(j^>X$(hl$zk3dX8M5 zy@S^Dp1+dVbvqdiJUaIj(3Tb{2rcVus`1j#sXW1+(oqnyR{0y0?{$>^PF)1B06#&bvty6WIglnFNZ!|9F)xM+4qHVa6tS;#-Wb+jf z)6(f^lfE^@>r;Dke6tt&PG7<^_>U|YCWWUzZ&$Hhzre_SD2xokpi&_{{>@hcG2ZXp z0}FSoJaR1I=|4Yl592$SCg*|bcVp)K%mlKzSB2rhYg_KykD=FF={n=*MS+GiZpojHQFUmyNXxv(%pa8< zAl%U)$-jr2yKo!+mky(k&q(F7*>UXk981k28x|c!7sKF4%IM7M{&5$daD0wWg1DA4p$;+bpp@%DR24AB3DzG!r@b&S)HCyjI=Yo z36aWggbq0lU+|OzrVt()Oy5vBGuMACi#)SA@t=Wa%CGf-IL4 z{s&~qw)($8mTXkpZvRVU$=dMm$nv=C|2wku=cb}&?2!hDt>V?j0*yqko_3kL(@LP| zG6mZ%6^br-yOQcJEKI>Mf6=8pr}d$&e9mQ7%M&yhti7Oh%~H+pex>OFM^atsAj)iq z^b1-s(ZqjYOgo%InA-T;<=5u}ZwA5Tmz@sB5`Xx8wMnPbK2Ux|Ila2=?vR?U06&o_ z`p~BTgE6Cj9xD8AFlO@~1SrNdDf#ahQ|P~AOieivX!sQ(iaG(>3E&Xh1|04p1iJ%c z`xKa-gmOy9tQ|XF5L!=I)@%&EmvsM3wCfgCEOlE3fxEYtZk6L7!vHHMM)R5J%)5p> z<=$R_ZtM5mF&<^b;_e4JiYP5f#>6o1I#(r)KJ@{HK`N?ix71s{bs5Hoj-p(XcXJGU zb3nLWV}Zj!$jDhn7T7fHKcG#O<0u@BgRoB^K8?!TE62U>L707%-=wxFZD zG4e`G;24Rk?NLy-htHesu2B%Vt#!1BXgkN2kNj)VgI0^QSRJaLa=l%ok!%~dBWG7G zBu}3Q5l`)SdQ4CnNh;dAknMXs2piYwn#>rF*DU4&KYhH7&4WO(i&Ia(ZPMJj{O$#< zt5X)OQfEG&hP0_no*#h1Xu%0L_T-lWcorO3aKtO6d1?p1*C+M&a@yUD45G1}EXUlk zY6$Ay!ebX0x&v-q*Q=fGGgK^ikLp$PICU>q-}~n%rYnhTm9!stzr65MkM}&COF8ZCTv06p+<_n>#Mxkwn5fcX1<)Otk!v| zm|LUzc`L|!@W(DvC!eG01FDA4bH$Rl4Wbe|e--ksHNT9pl9t@MnJOKB!+FQwDiJO( zCJD4_&9ayMx@n8?eJH21^c&TC-Np6f?58C2?(F6dp=bYfL!7@~#yhMTV5FW(6%p>0 zl^GZ@y7;;2EZ|w~1lWhG5O6U?W!XLst{i5?O{aec)g~0@2`nMI>qMs>)BjRn0jm>2 ze6ZxHjI2P@zHT}E#PMtaCNG*! zVHE?KZn?mga><5*5oxq9)bcwg_3F@9!QZ_2D{SpaA|thM#m+qQmM@dk`v0{5{eIcq(9)^9UZEeFCb+ zN;=zt{Zq~DQ?1Cfy~FDRd?3vVu3mLn1*9nn_jc*toj0M8by=z0y+%h13Yr=%tzkOK z`9gSLYVwXfax+W z6qwpVr~WT#dMcTq4dpQU?%=2;ztJbwR3r0PL$B=fI{BV?_->WnuD9;q(THw~L{~2X3ifV?kFkSS zp4mXH7VW`JA#1LGvz+{|G3p=Wo+HC&lOwM4gtY8m9afp}fMqEozKTXHdp3iSzUCIO z)#>=qGdF2%nV|8pCmBSTV0<`0kM&Yb>2v)}TVPC0*0IKtXZ55fFn-oCAr&Q~5I_H` zGR>0F4;EKb0pHxSis%!<_{Fs*Go`w?f*sR@^OX6xd`QTPrG`AD3NMfdHR3j^zqC!_ z+(&St;5me_a{j%aKpRa)ylcAR7f$y1)cqbcKt5#c#fn270=2^CLAK(@%WtyHg(@JI z$E7%Xv2)B}w^0bEP!x`2$NadIW_=eR&(&do#)~yZb&h4X{d0U}aOkPy*LYS}&8*W> z6RuRl$|Pxm)ZBY$Ad9`F{b|8ps5u>;#ab#h7Hr>5Y2Y)DJyUsfuGo6h2~$F~5I;@6 zwP_XC*O<~K)zJ8RCeDmZXaHtD?5M!YP12TE>T zoZMJt&88-YCAJBS=*5&pHz69rJTAhA(BZ3+$40V%Q2`m+S_`k9Sa%6c*LLi& zTf=K%+J)}toAawT{GMze!BWn z0nG~F>7rpnN7NUh$Shw3*?AWDa+^r)#vt~sdTi~?M9)44gxU1hwrj8N03uT1AAf{j zQmegWnE}Rn6S0M(F$4)ooN7M8DRjRxukD|Yw!&NrJ4!7L5nH2`muB#)+hTf6mXtGlVr}5W`IV1j zjsDQp6mP5a(z?Zjmi@1;k9H{t)9ikg~>i`A2FuTJ0US3`t<+^!Kwql5@}BnWrs zD1sdxR6c0XlPfR1D5%V!Q#nz=G_dPwMQ0YepD2^F%l}{?3e@akX6+1e@=0eSzhZY0<~+XYg#3M1O7E4^<9u@@z2-1Wfj$IyGDdH)c8;D*nNc*y8 zPEdZ-ACV0Hc7GMv6`))x4g^qmiZJI99kqytelUw#KW(!L(cKHB%3TRIp>S7{|k+OMJ0xkQE-927#BY|^#4NapHl&Hu7Aq>J>_O6 zhyMTjU2YC?=>OkOImx;I`JjI?bCGkuY$f~h6m?HGD=iyuBQ|wuSvGB(_ul`Im;5J@ z`X^B^A%|vFv9WfrkaT-*1TD%=&LhCX%Ed{}&&|Oqz-dAbbq8|whE|*xIoCg*C+F$r z;|_iKzY&)Ip0H`LX?t3@dbz*Uu$3R1lop$`4Zy+5MpI4_N?zN-(hHhJ%iGh(%KM*I z@FM4Y@dmPSwf^g*^q2C#xhu&!ID6Z8vdKC_TSVH%%FWt_P1(lP&fA`xmz(o%F)wdV z8w(dyl=qoU#zt<&zv6*-xzFrz+AyeKAS?nrw}OBHbuiu>bnGTqw>IF#O~5fSsCco_o-jc2Xs^thThvf z-x+Z8M}paBeVFy87Tpg-2+wmSwOpioD{^M(0u~08sXk#D?UoEBQ5 ze`P%va^4mMr-S)rn#u-6&b(&Ce{5%i(&FkkO;3Gtuy7;6JINgEVXtg^x0~Ho=uVxG zW5L z#J}|_eZ-V~wEO`Z1n><`=8k1wia7NL9GLX?c+)s1SK8=eXy_T4$@-nH3DwAXx{E(Pme;8%VO zn`}~w1`A5_D6s^uSAK-e`=Z)CZ4ZvnliGb{O#gmYo%%}Smf#2u=iV^|Ai0*xz^MO@ z;#>YNoyV@Nb=eP}%S>X(n*IbUBTp>)}0 zzFm=ar2M4F{XumM+hQP+fG*@D0FS4RT^aGsSH(RzSt0=#k_mhF;QUYd*V4N{INKkqMLUY8 zQvnyWflkiRQ~K?YVsA(CAF%Hhx;O8?J(BF(IS^dst<9sM=Q&C^zO&Vp$B}_&mIMD7 zb2#Pgv|N@G{enevL4q$I^0o;yin`fl?1$h7Gd|-&B_x_pHaWM&i#L!BmF6m*6tDnM z6W`q>(_AT#gxgY#Lfa-$y7`_m45q_n zu}zY@^pO@1DMpkOYI{$ zTIc&ojALB2Y%V?CDl+nsaEI7@UWjf~cTRu(x)u@bZFq*Vs#fOPs>o7P{5=&q$J<{N zY(LuHE>07V;=o|`A~|rh_Xfxk6HB$hlu$NBW57?s2l0En?Mhdc(OOLm3(;^@nat5Z zwDhvgH^$K6B;X>#wG}ZbfrGCF(9V!G zFw&xFgEz9xrGyDiX!vC;NR~?BbcTlZ1qN-t6&`R#z=jb-`oq=j;r185y|P zV$&^y^Ez!&ws;*&OfQQ{GnnaxC2y|~psOa!owxY|*$VG*f;UDYBdz=E5fkcbsk;mO z5X63MUKzfDp}xc)dIeUfipgO`=J}d|2_U;8@sMC_J^s>Ogdf`D~-s_R}KO=_q9RVftm6?Eo9luCUV_u zZh@}Bx)M&Y-aA_EzOrOJOtNC=8mjRj3Iw7y3v)miAzh#=l9_5)CKD!In{tUD{viXb zJFIC4fUfc&C}SyMLTAV@VoeO8iGai2&1x#&lz*F@m!ir0BWTeEA^P`sp3B|#O{$bP zXoPUHm(m1Uc%qVwV*<>WSnJf2l4>E_h35Rdyec!Vg7PJ?vPNG^Sy;TAM0qXkb~M;8 z!NxI{ARh}G!lCk^1eHTt4*g?(v0lQ{?eQEOJkkooo88Os+A-q<*uYe~cnY-v@f#Rs zF-nx<3+PgG#AhlT^hARBh>}iRlJ3{$(w|RAWp*2rjdj|D+Wjs3tvJ+WII4yd@rn!Y zUfYK9BU@e-G7IR8iSbshl+!HR)U3?f*(~-|YGN~#|6pXU^9frh^geA>{RxEs)``T7 z46c?I4%fqe_K0O{{qcGXQXaFoAvM+L%Xcq8BWwJ6ubj?`^}W?fui!xBHOH1)C2ah3 z(YK>-7kI3^JNl%-pT54q?HFCtPv%0@p&Dhh>N*Qw$Xa7(M=gs=^qS02_!(*9E~iVX zAF-HAq+pKMc9C2E+4iLF6>3|%AUQXFGg`yX!BTNu@m{|QZIn1A-S;UKM1Q{GdnpAh zqOd8pD1T$u)5XOfZvLK387~9ZPrdQuMCRsQnvaHcx0_|~r&-3Y^^8`W_N|Jw;%TS` z^KUA$7A;>F;>{`%ut(*^yTGYOvqx=iwP~4?p?%R#!&FUM4A;4HW}1JOFU#~r(YPXG zyI3FS?8GaPGKY~HtL^eZ!RyaJ2$4E!JdTvP&!jnZ+s43wpf$&~_x$F21MRqd%$Ngu zhcCz}i>%WTgkLH{VFttWZ4+WBeX~E|&5${u5yHPe{@#Glf1On#s3=k}lY|G%`I#IE`BmE|6+_xnbDH#Df*` zO=pH0rnTmsACiP^-x;nvTFFbs%|AaV`Q>Ef2{ zx&OG&LsO#dt>pBhMf)8|E7nk8Z0LfSKYX+ysm!~JUr9N8;Z6#>n{TOVS86f(YA8g9 zRwAA8S6$?mv+W}-N&k<^_C<}7zWI8j*|) zRi(c1wV+;k2D9fg3~Ta5=l`TPNP0lA`9X|UEA9A3o9QaiQiLPWRXoMqM>(1Q?VeGL zIcxswz3b`+r+)0@(fH5`$ylYQGxr_Kl`5ed#fHyR%#+EUD{MvS3^xqF^G8l@Vcw=5 zz8PUatGu@PE{*8#I@hcC0&gB}#G|MV3@F#EE4I--&Nl~pY@ zM3%0hwAFYg_fh=W_|oM_JUJIe33kXs8)Xf~wb#P;QC`AZ*1M5hs%w=^v*>N90?D|T@B6BD!mEzG48%rtC0I>uYy-Hp^; zcHqb*>}=Wa5k9vfYA7a(G?vM$(k>A3KG%XITN{e7IQw7eXb3U{G9LU6lsNp+xUY!G zFJOuJN#)&dY8{hsR531p%Ry|&`__^1?QfRVCl0G0ty_5cCv-V7-`Ng=jKR-qH*Ta(5kMEZ5Kh)7u ze9cILAesEvuVY7_jNeyx0dt%1DyA(8YUAS(fhDF#<)q0c zYRxzw&Y9h4Qv4*{Q%8O#)+5`^_WiV`U5ibLm$DaLQ~w&MRGtcsATVZ#K}F*bbEIN| zI+-9}n3(5VibAC+GkWwIB@xSn1C@h8nkL3 zY7&2497lP_gr=8*S2;Wdo#NIX_8uGo-o{wa@GR%6KKv5Rip*`;R(y`eBI#h1{Hz^W zcbL{}Z0-|(SX4uAy+x(?nVSRRmshs#E_&fu-n9Tn!(n>?EGq~JU*>tG8?+y) z!xJ*QkMu87tQKVa7|zVF2JfZXQ}#021r>tjXY#ufjR+h88-aWg5c5j8O;WRjGbk1B zf2Us-3I$i#eJKzVVBU~C$jI^5O%~95Yjr4{&h=6h$x-GuGhC|AX z4?SXw5MUT3zWRzuFXgNLZiBf_YUK&v-!WY18&lCWjF2t|qdB)ett|q+8E8%*^7w97 zh_PE%bdC|qQz$_r%5D6|DZ#D_H z33930e^r9g+h4N#iSq@)mo2A<(VRep?u7*#zj5+#6 zOZq3ra&M(XEuKuuXk9Vy8l~R#>o=1*ew#Y#m-4j($mANtt94+iACMGwajBa9keTLC z9c!PY?@qSnN(tX8pP5PB{t=HwN7z~EY#U5daPDH$6PwE^RM+iH2mzH$GA(?a+W`7V%SEer%vN-Gr%iP(Y}?=YSv*nk zd-PS#eHe7RDr%H#@-G1j@}YT2TbWH$-ej3t%JkfDAY z`mi+WlO_X=v)!KD>_4SM`acoySV#9)>~xR6$9<z}dE|6@8SrPN}oJU9l z6C(XdM{R0jo4h)QrgG>QovzoqnnvBnSf6*d&Mx|JGqZ|XX&GWQQ7Z`>XsnM}-pkw` z>PR)_9?s;{^2NCM7ts?5&rpS2R*A)o_jG7dbujU+;Wx7U=K`TslN4EwS%la{_v9n9 z7=xdw%^315iAq}1q$vib^b(%_4B1HctJ@1xGiIst_N(w8%u(L|Fl!rcB2Lo7m8P-s z^>u(QnaVwj=N@6`Xc($iXLI}*W^u(U=;}e@WIr=6{cCITA{`!WgMrp-S8#}6qO`fT znVdWa(`9~E^i-VwAmNbO4vRdAOk*i0_zZusq`?14M@DW=7HdSaa`XUAp_hoXC)}92 z`N$H795JR&hE~Sa|g%sGNJDp*R)np!#uOM2lwr99$#;*2Qo|uH3lK61;Clz7!86QQ5R*Sw z+0~5nU4y6t`hrl9(s{?4*;qZ!s|kHtQ(jc^m6cX$T0Tkt##u8>0M&8P#kB?CZZ*~k-eKc!Eo#deEDTJ$7$2Gp>N>_R%+Ym^X z56|+zjfv1Rn@UV3Ml_*EjZZE+Q4GIe28lFtuh|qHXM39jySYwBxy2+)OvdIjxM#WY zd(hnb@6c9rGUj9BQ0PuRe=mfl(-|ubuk7x3F*@0Nk@?uTb`MiD) z>SMSnhMu(}dj+c5gDsTZ9n%}OtlvgOye}_0=S^Eg0qeZakwJ*%Rcin~ugVtC@~(|5 zXm)wu_MtnfLmRYffid>>^fFqqx;V@c`F30)dOT0i5iRfICEOnImCVC8#zX$&i=~R~ zxPB`ILLx0Z3}4qqgtT$va}9=WX8fzP4uAx9_dV^!C&bUpnR}atf=^e3**DKWWB3Lp zIqBjnGJgU~hV6V`_%$C&d7zE6vd(X7VuwcV^F}y9jhMsdh6QI^pNtm*v1tk7^)1Zv z3m%yZfYFey+q2U?8b59kJ}mh3+DA5QJe&Y@KweAQ%WaIo!5lJI4R2@ie9w=kx&4nP zkCEfDW-aT{^|7h21+{n;Q_ijJJ}Hvz4=48SF;m84AIYCt=R7VSryasO$}@EG-J*x~ zUzzLdu_~_i(@-+^N<4fofnQ}b2O1GSUW5{+@$6c6J+@Z-M44$fm;b!&`pFmbj2&i1 zov(L1c9eXocN*x#X4%wCJ>w`S;;1oyNguOa(PllTS?P1Ph2F%y`U&s?(N-7x;{80z zzs8I(Qv-OpIS250q>cGJK|*eg=JubSJR`CIj6OYPoj_;O{PNH1N=T9@G&8GqT_6cw-)e(BV;J2M55gLH^I zRMYqpvD!@(Yj2(wVb=eo^@Rv@M%?Qa)p1DBTt)sSgqz<|*vwaIv>JU?(|VQt?vkU@ zjX$|poM~5f;2hnYY*kWY6LIv)H zS{vyX5NeLk)SaGvgIyT+5PpZ=SOY_*(b?%e!`t~TaQQ=mXOZj!kpO?^*0v_2t7y?S z#>lQiOcO_oXry6;X~0{)dp-Z#)i}dCM0xuYP4w}tE{Fqwau;@%4Nk%=%X zJEeSHmso-fz&4iGX2h(sMu`0_4S<5$gIOxY}Yrb=F*Kq^j zkhgU99!_$73OVwO;1OfL*)V&8y}C@CAJ=UgF?7A{KJ(YaHx3v$N0L*P_0H^k&e`_n z{H^^UG`Srj+Aj?y@g)2SuOrBF|WSst|p3<`L^3 zk9|{d%%e1SyJa$bY8Cm`4&NZ1-INsn=QFWCCrtl3VfpLi=HE`C7!;iioZRh<|2_|5 zP&GFKAG9zrGX0Zcke&5^#UY%HgM;b6I)pDeOb=l9yVK(bbL;3Mpu})`;wJdgl8(KL z{Dv0U$;Pom@64&H1h0M)MWUIoGTh)S8IgYR7H?@0xOjMYI5;?Xd1+rU&&|cf#l!P*v3aqvp$B-=v$X}dx}Kk$Y)2Bjr8*n_@m&QI zSHR{v7u?Wz)(h$i2=w|qT_C%^zfVC?0L~MbZd|F zu)cZAxqKyeSDhq!tY-(`1_KhwCG@B|#i^Dh)z#8X3b_OQy2Iwkn|du($TEMX^-$IM zvvzUo^-L5D;@P~T23*bRpJ+?$Ch?LIFuLL8Y@R7`=j=iI^*xIBo#L(U+8^ICga}v6 zmyo{gamBqvgHzGzM)0e?g7jKirnBl3s>DD8L)0WREDJAINt0#{@#M%cnfrd-?bMs6@QkOIl#$8abk?DhEIXr}JbO&t+jU*PNq%5fa5?bl=RQg*k+y#)1ns&OE2w&F zf42E1i_G#-5zAWoD#9{O!kzolTgr`x%9OUrB`U&`e;}l>LB-Uu%9l2jnI67iVc@a^ z@a+oH|MYZHoYqBn6s703iNogcW3m-A_m~}kT2xfje|h5u zp*o2x&eeTR_tX?Tb}qi)%6fkJt4B+LSU1maR{{ZVnAuNyWx6H=!o@o@WY;Z8^*t6ZW4+IML9rx`DF#!f?U*V$hXK}N`=x~IV@6j8;rpAP-=>**c|_;3-R z8h)(>1)fWSDx!C6t!#>n=Z>}m!LtX|*53XeDrOH#W*#dbl>Av}nPsU$+UU3|SYcK` zA7JYa_q{Ew1UA>v;l23L`sbftAx9uMU46B3$n)V^hsEXv$Fgj~5O)r1Oi!|-@2TCC zdiW;-$5BrOx;0{mAD6hlfrf=9@^-40IE7Hnu#^!>&@e>3ONR^UN>P%%I&m8xI|KMURzmeOutBaLs;U_5`@`@=g-W@E#+J$ zzfr{m;N!gu0)irsVns}y&O+nNDk_1uFDOF1r_ycK2(`~R~UXRbwS$REO%k*L?wR> z53(Uq2ku)TzoU%XV2$(?i3;-nbqjWFDj=HAhaSuGg6f_gORn7L8>F1?nvtou)`1ea zVnVsUWSPSO3~(1^B1#gvNFW9?W*Wa@or)u|6(NLw&R|dYMN->$U`ku#5(S0!)+P1H zw0{vrIy1QIiug2SOH{d^;a!y1H{{jXp{(Eu@H>3jc8c!uB8xO>cwAcpiCyuwQNRO8 zA75wdoa>~Vy;vlK3!`f?@%DeQjusV#>?op%5S?ca!Wf9R?n%K^g*^^aD5+zBGo%!T zA*dqh40fd$4JI7`G(Vz@`WeMY7)1qj9SUT>_9**+LA`CAak-6f=Ygg9i z?+>_DTU=emfrF}DQ_X(3-OpdwRo7M=W)*LzQM5m(=inQqPtFnZ$+g3K%3AR=T#fCG z(S=sDjnt>q#)54q#~(_=vt{`TpVaK2v^+bUE;d*91)(l^hl2k6J^q)T1BZ}D49)tV zobn!okx>!@1MDGVByQ~7kl~Nq-=PL&3-NX){B|M>rPf`ne+Fo^5eF&5kRuL$Vt?2S z#0or~h_yNX&_$eH)C%a}j(eFnrLYHgaa}htV8>NOWtN$ROjjG`TD(w}d~iI?jRqHu zp{RNlX_T$v=nOAZuOMaDbWG%e#nU_|1W9;+kL>X@%w=B(*qjdC5M=L+_oVX?5l7r` z0H5=UqU7`7BvN3+8lSDC74l=+76E%#H@ys4;Chw>(5=Nm+DCSV?(Q82z&sW53fj`x zJI!|w-FmkAe@R{W^dr{qnNc=%-Tl>;``6BIY%jVU^x!FbR$6FGF4@jT%$EbbFa z#(J0=^HJyPJDc#d^38*`*2frIo_={|gN&0#AKtBu5cA{=P>Sw$e$!8KCSNQbr5?;D z?qO;R4QP2|dw>nQmIavkMm^I?@);uLfNXe$~crB@WM*8>&oujFTXuJSpta z;H$9fposBSmf(-bvfrJVtC+Mz|L)ULoY!&7@2I2pjr^zwDx$|MB=hMszlcKjcTIf{ z+!HR1W2p^qH_!fRCx+c%oo;WgPRAm26%ybO`g+R=zg8y*!%OPU+h6nTw`BNEg=om_BC`Qgu(}id8BqY%uvg!e#itNf>_Nn?9ch4&uXL|8M9_}EQdhh5 zIr1!+>wbh(ZNx&0rH!^WbGL0CujFwr1E;)$fTo2kcE)?DuR8b;Q4%g`Fz>W}kLar+ z5fxe$w3~uQO?yWzrGH?oWd7BscU}88fyAO4B~ICXuLwd&lndIzB~RZ z`k<>N!~B-(Vma66eSQGLNb{gx3K(vHLEXi|!+X3po0gWEy4BT{rL~0>jr9dB&2=?x zO|Y^#E-j^ZRY^$T21*XY0wrM?Fm!2KY2n@~FaYEKUI)bQ_kmB`WpuKT>9Tu|znkjq z7eI~kY525%P~-m(+@l&gT8~>+9uqf9dkSm6GG+ z<)vF`Uq4?*%}fQ|j*eb9dONbcXkon333o)jWby-i`1#NA2;ML<{)C(OL1lmW>-xq0 z{J1m~@^|L`!MJIv@;lMnkhZlS6D>D$M1>UX+n>}f9f+# zFHoL2LQbGsvviwZr=;>6H81$v!}CE@d#`$)d7lD)AnZFj9;NrilrS_c87Gx7KNW1r zG+aQRoL$o75^00mXzEUER4nH&m#Dsj734sz)0DLHBZX*HLfSn`+Jo&9vH4yO8QJq+ z4kP$6h-Y}yh;l~_-N$3G9qdePIu$W5smF3xq8R{Z@2?=O+h_mNGa3ISjXvT>l7?a} z+TM{stZ)QXb7G=LXmm_e&abq^vz_ecl&N#&F$X30#SJ5M8)A)MSq0Gg+QfBjyS8TR z_dvsut+-E>lss|XU%Uxn7-mA-eAkS92cS`)vZZLZhmNG!4I`UJm=aI)x*Ag=>zF|Y zeI!CE$od;5ck&vXHlM?-BU~NNY?$zIabd5l>GTHzobe<;yK+|z_26`eb&>RsRqE>6 zmP+-5o8%;&KZ6=_7bkuD6bSHDfpwyJkHwew2`U@qABCn)Cnu(e9uX6Puv2~hHjBpr zLZVX=Ne8Zt6yIx2sanowHDVP=a<@&83{_sr&0x2x3uJP3Ts?TN_F~8YC;Uh8sI_Tr zXstZmN;6q}5Q?O~j`4GRxMR2!-UkH*p$y)?bMDfAQMlr0sAsWEc~{J*U|<|aS3(*& z?Hv)@P_(F@yY2tk@)?CJvjd&gyx|im!AzsjmJ>ng?XVB@CIVG~0y8)msd&8`bhg_a zCf(oQxOfN9MCd3Mql+MvLQi_WyOJ?*Y2Ez>A?5EhNYR03EeQgPhJUAZ(S7#jbIhA1 z=_5|6rbTkyY?J=xueBact(7+4ye8jifq@U|lSTkD&+pH5U)8lS<%^ZN9_&`yc9|v) zbEmeCx(?E`3Q7SaU-mvQzTa5+=n#^U#C$ptV5ylow7a zk#ml822;l_1UV`E8kkKFu|Ug6i!Uxi2W<7y74gnzntT^VDG*OR$ps0$s! z{KEYgQnp(smEgNS4Q|(m=kE6R_wPJCjmP;Ziv`-HwC&l!~8f2c+|PaGn5FAh!6f zMPPc!|2q%enapdL@eD%DV6+!82FW9||AWkTk0CA&lppD4u!EoOrDJxk*CRHL^G2+v z7T5VP;cWU<&S{IcF+tAe55IOQ%4`db`=D6Xx*|nbz;Sa;>wt1(^OVV)NU@;rh7(n+ zeU9vHtQOER*Nv(lEQFI}kn@>pGXu3!$vI=Mu;665?Xh}>)BPRjq)v^Nzn>G5WwxNT z-7vlcjk-bf5nRc{yi|TLpt#Q4$R&%*`tUbQ_5s7>A(oNaiAbM5X3J0JJK}t=AoNjG zR9nbw0RhieF;BpCUf_cW1X$`*KMW?e<6Uaqm~dSEcYHi{^!XD$1#!>N;&{ZhLdxFE zjPO-aXin7qgwe+;QXNO~0JXlCU6kU|TfsScC3Lcx{{oOhb|mGcXFD_=X5WoO6u)0L#6*{$dG z?$oR!beATQu63;AN%$Px#d5wpU7uGB3tn;4lvpGu$1q@J6h!+Fwvaz2qu2)IZjr@% zpkzyYX2)9E{trM|adY?O8$SscCL8|+ldWZ2jfY)H2@>8e3ZYuync~Qz(ZtDwu@>C} z{{@w)wqClwU)*uF`Sc-Meo|+R^1A=Nt2#f3^ON=(FqtSRgJ`1a;KbkwfM4@)J!d^nvpnY-fRT8tr48@j0ZsudKcdwcP^1%Eu7 zSHI3cPD??lnef7Ru;Rj98~oak0yZ;|4OXC#(7$D8$v%d)=~ew@dS_nJ9ZmGh&4)XyrRI}+IeB3-CCafKOkl3bE>=f z?HBzQ4*pQ7aj{z=Nm>WCqI4TP_mR!6TLoyJuvT!E5zAI6GA8Su}kOdEu@XC zC)h7DSa-);-EjlMt4Tk9&_3P;mrF>-08}$g+(7StBa?5tp1)+))Tv3lC-{pLo_zMlKrQi%x2n1fasnGBak7+QQX?t_?SfLicf?2R}IqChYXD zBY13C`_wKTbJ)TT7QnAhK5JZIpeN2SJCb&+DWD)CcxH1+iC9Ss7a?zIDU4!?5AI6_ z_Yc26y>*POd)_>lS@0Bmehm|`sDL2LBjfD6j3+CQxlU{$3aO!gST+oe;V;6l=f0L{ z%~6+TMU_5dOl0)C)h&(@6%9XXg9n>W=o*0xqQ z)?PSVf~)Sjc=NctFHMEZhbH|KtN~nsUSY@d(iQ5&qfrK8nk7!qX{6`qVJA2e-#_%D z{|(ap_OSSWHlY9U$@srEpmT7r|0`1i6XXAm0iBhDmF2%0(3k5wKUE z6PI>i^EV9bLyO^s+*l?uy+vk5fLkiBWO%T(aIvBjH*@+f#tG0^AQj|LF&Hts(NRrZ4C<_Qxxh^m^CBzuAoC~O>bUR;)64W z=Iz^%grr}NCZ6}`Yw20$JmU&jus`O~ zW?eN}_>SR?*n}BA04})jllwSl4omwqq~$w?HncE!AWC=cUqlXa&TIC0uyZ~`K-BMz zH3z%bp4TMOdjuJVf=7zy0tw zEz90ekT;@f@T5q+^OJ)wFDPetieXTfhv>dN!ue7TIC()23GsViham>LuMTUQ(~Y(1 z&YP%X%GF=XBj_fUhg(ERt*^X{vfmq9v_G<)DYwWH_nFHAS`(b4K*|7|q(Bip@Yw3S zk$(^;qDijaT9{tb0H+UnbmB&c{ z{G|2nMFjloFUs=o0Ke$p;1Te}zY1iUA{TYa!3yi@_qZihCCMD^r zBK-oYz@A5*zvrl_+mI=l!*{CKSP2ay8JzXco{vcb(Ti1JKfyofm5j0e0s=x<&^_nG!qMGYX5(g51X5%Kj>CTZx>Mov(PXuED1 zR2I{g*CcGLg-9JrtK5e()dd!cB`oJ{LDk+Wenws|2>qPwfK&w3>5Wg1@`$=o)^+C>K@Dltpy7rF7^%+6r>QN2?u=s@BdO z(IYE)6;YiRktvAWBtn`N-$NIabe(asoLEG)Jr&bdIx^O<>-O94C2go*9GM<5{ph0^yql z=DbPR_QvGS(tW^-#5%mgA)dvvATXdm(;vBC5wy#ydF4R+Q@oru|P6n%vmhiq8wm4=p1E>MGiDx8OM$ zapJ+ZWDZT=ACx-H?tV7_;}-?y#e_(Q42_FZk2+YTJ6>RPA}U}+{+nq1hE^9|(PAnG z>uU&?O^(-pJUz+|ei8|O|_-ARv`&$(8*NkU;cPb-V@O1h6U5;?l(o~t!?FZzW zAuhVrUPb;$RjaXn-(+(kef5fm%h6bJ4zOI1BDA=g|LTzrG3q-uB*e*&3DtufTM{G8 z=Fe#Zx(v2&91sv4U0_)Q>!=^}?+B#n(?nP@8p9wUcE)?Gp48TX7NOFk)of=`KdChI zFWq&FDsgj+nmgO*fSXEnt(BPtb8{km`G?4}##Nji(qbR)o2(R-WWE|D!s;{m@UQ6u z*RdkKr%$o5QfSE}m(jjvB19fv)kgxE*j`7RqIJIXObu2_5SFN67YYrF)dh=M^d}DI9B`MAzO6kmcCtXecgC&7l0}8^2`+P*wA$66QMqB5uTD=i)2>Yls4j$=KGAia z90^|XrfgU`g=I;yHr8l!V@5Abnmd@kx|&jxkWM_lvByqF->%@WLlFBTm8==$5Gyf* zx}>^6<)fJWiF&b?>ljxw-W&tF6(e`oGd4w`^|NOj5?9>S4+CZgq5N0NQsELwWuwKqP3=g?a-_8>(=UxvT7OsLvHXVH=H1S|#v!l!dj_8q3 zikK+6g&+=VPak5%eV42o+sC5CQH!>X)3;Lv9asxSr{`o7jIC8rF%}f3%oFcovTlIL zI3LEjJvGu~Z{f_*I6Zxd|uxslyGmBLG z3&`YIbW~Z8au-E@D23I<4Vjf`hM=2gEY(zw28W5H^HwiJppH06mU-^|c)7aczc~<%cKaSGwC?<-eeBt2peud=>Td!c4eElQV1hJw}LrQ(=G- z)(O}7ZREg}1--(JbFnof3v;}VugwfyXdQmkn3_DQNvxX0BFFMyNJ6$!Af}Y8(Un-y zBX-u?P^yeb#Efs=`Vx^wXKKc*3WoC%+D5UC z=atWcr#=Uw3fo)UU%t0bB{QuwKgf4j^?(7%bo3Upb_#(lJ1}Nxy)~V*tRtW@a^UF0-!LY=YSGEHSu`G1Tu}j@6}2Ua zcCB-oQ!9N6MIG7|`Kz_1(T`~3IAIL)*+dpY4R_f~f>KhIJ&M+jjUB2x~s!L;#$QC{$a+2VK+U;jHu1Re$NUs>(Yj$myWTL#H{czQk2dB4UD#2icZQFL7#{&HtNKn>B7^ z_EY)#I%^<7JX812JqB!5i9-~e2%@GppMk7Xj_oR#!fmHXhxB$_y0==Hjx=?xI0rQX zJ}uRf?(6t#vyeFioq{*{UM9aWjbT>Zk?znE^HTay2Amg2$4C^+q1>+NgH_H znA8Qn!dqRNZAQc;98RkhRLsQ!&hmZAz5wuqZK9hVxrbGCZJ)iqM9JvlDaJx4is79?jA z%VU$xt11`WO5tE%lxy!j3u%s#aZ~e6!T!YzM+G)6cIR|hU6}fTa(-LddQ|~gL8lM3 zOnRMhZP8-JrRN10ID*U!dsdlkrYs$!>W#Y<+RyC~kQJ%%*U8N`6jORlQY3j62=NDYl4eD}u@YwegIVk>elZ87K4q%I#BD zmaqRU&*^G%2_dS8V&X^j{Z!pk+FS2Q9UTwj&g9a^u3N+3N-;RhzFH~ zgbs)Dk5iuLrBReu>s@~pV}Csj5|L7`ua7{(4BaW$UUz<5PC-aGDRhm0uzBLYKJO@h zYai6G-!bxJ3D#dEb~%4@g)}SZ^A7GKVinM=r!Q}o<1|NNF%0gwq4*?Q&;JX!F!Ac| zJIlDl^@IFiI50RpF)#R4rCY9ln*#F!_v<2Tt>aG%P|r)Bn4?wGx|{GboQr=)rt)S& z$OP1p2|{{t_BkJ41$IS}wx{gD2X!C6J$I)VUwt`8*lQO1q;(iSa48Shw3YRA}Co z%tku>v;c?2#CX9-78+(lPW6yubE3IE9~$9x-lUyztF8B^HBUJLneR&ep4e{tY52Ro zIxD-jw8T#iLA?6Lcsi^{%I1D+B=MlxWujgq|69iGpwgI0i_~Su_wcI>2QJz2?#sP z$Qnwu5H|!POJf<;0McltE)6V zRv@dNo{u|iCCA(%8=6#X1tgwZIE_!^1zMn$aNa>80Tqjbp^*}jS3;nFB;!cpVjwB^ z(T~y-qw}ki7z{yu>zS)I<$NUJ6+ziwKukTs8$xAL7tHBmrd;5J0%l?Y(}~kThQ#&x z;EMBg{RKFi5_m;U1}rJ+H4QEaV}o}!I`Wkus-7bw-;o74WXQs_@z;a+CJh~flj6Li z&Wo$*5VmJ*u^FoXjPx}N&LBFqOSWM$gEhwy8?`VbzC|ti2n9%u{lm9bsVwAObN2yu zhVW_(K{}p~14IToX+O1TG5>c9) zq>EOJVv(22Mhxc1x1GR2s&H{}A4hFYVK)HM&KOm;KGd7uNl$)w2RB^GM{p3kZjNsor~e;+ISBme*39&kY^pyRo>**CaH^icFDc(^^q7_&r zU@Kqyus^fZid9>>YAdSBq7^RBrEO9?JNa`ip%N>ZSLLf_pLW>3x=z0(zrBvW!8cis zv8Z#9qQq0!Ry#5U>)Rj=i%_`iAgdoN`Ku^NbK?O%YslSeW0ShbH%SC94A`QHsc^t? zdx=-c{5d0Snfk{|s#0E(1zZeh8t@z8{#5sAMp=;@Ft5?nU z-R{W`oAtw3`}M9l@Co>Z_BYP=>*VB^m<)(VQ=!?*Ac~9IdO{e<;S|%wPE_ENKPK8x z@4u9%j~C^?H0Q^ZZ=v@b4U>POfROT*kI~jtdN0ex%s!Bt-_2`QmN)Cjm_#}FuH?Px zeu@g)s?^D{;@SC<>_nY#0CXLtEia?Dr3u=vt-Q=N#gvI zBrF^wOz<_;-1c-WiRYZHEP1i?#@lkGHRT&nNV@UFf`d5oR2{#NsLZRkY0@T|X;m*D z&zPlk;s_u6ynW`r9X68VFulZ;4DlX;&Iup$9u9#H1rnsXe+5+;i&gA*kr10*9p(%% zCW<{uS>{wF7-#>a=c|c%}B?O!NGM78?`mTXpG3$O1h<^;Q9bm ztVGIUd8)#ZlpX>T!1!36&`wik6mFifR>I+7@@QbYfPql|#h#n*-7s+iWvgR^_PgA( zYrqFzx)0Z83Te5EnmsO1NHwO-PO%~>nGO|B(adm6Dc+YvJU)^=Cq2_rv-$AIcnTj& zI32=!ki*aMJ$x|osj4sKiX!2*VCF~+g4K**Xd<{6y>_TUPq34j$!7riFmsZMuii#|e1_HAKZ46L50zz#d1A%!DA-u(SZ_T z7snF4tGI-WUCXFVd{*f?hmc<8P$ctH+A7TX7PrH+!OH%lDg%?-f?3q5m@>u{$L8Is zXW^z8tfePQFV@G&btuKc1(;b;c^{hNYY*D;TXD*fJ7BTvV{yQqY8)L?(aVbpcSr`2 zX3|A+SsSZ@kJUcyVw$2mEJXqg`8;{OUXe2lTil?IU~|3zxwvb|7jK^A5&?Wi0~hI^ zz2$=4B7q8_DKa67K<(2lbzd)43Y$Ji^_B>)OpM=eDM!cP`*5tSA1l?}qZy@-D82y!}g#ILY`cL#j(%0PvQmbF# zj*Cqja<2(iFGCY~pLraOV=S3s3t>)mafGA)FyK3uPSNZL2Zc-HY>;LdEb$-r4QbaCD|(REaohJAmng*f8a z@5nTc=CC}(Gv71!5l1$?4DQSj_p`$hM`t!(+N6E*-#i%CE0#(77M31T zjN=~{GIpxj8zGYR1vd!|Fg{&tQQ`@oZ0Tjd?)tgY|0jln|M*4)W-^4@kWNbah~qHi z^-2t9qC0(asUF4kilpD)tUl{`8nvkC;oED%_=xoUp@3!lba=hqPSb^HobKZYn1|jK z0#`}C<7$qA zGt#}>yR9bdKd^uB!Z|)%zQYZ}3BLVq?tG|V#1Z%&shfx6+dAQ-ui=y{vx!t5N1RlF zDsG0F=kfiv|6WtCZ?Jv_PFBYVv@q?w+cCId@F!)N5S={toy~Svvp^dR851pQ2k?a3 z`px4y1aqw=Vgp$reIly19a_=|OXcewx3h6xe`=WV%-PsLQ;t01xX%I}w{;%X^U#uJ zSQ`|6oJH#xwgyn{iCKo_LO+@+m<37u_!B&?%?DEk^UkiFx+fYOQvqmftG?c&j`qC) zmQh-BP-Olz^jhzQPf9mJVKE?)xM>=T(?N_lGDzE8uS|mlM?B6v zgQlZ1!|f|x#t!><0Ox~@kDtS+W4E_sb1el7CUfe(APjh^jk5$xf?mo7r?k%XO02It z{a({K+W^<~$^l>fCg_ceK+`jmvF26P5l_Txk!L;!j)9#lX+PqRQ0yd(^KhK0Zk=-# zHNh%&^D-=cuO9@FeoWe5>JPQ+RrYhY0S`}-qRO>a$JG>Q{0JDjJAR;fgZ-z(|HIr{ zhQ;x1>%NU!a0>x~27(8I6P$z~jk^YS8g~os5F|JuxH~is!QHiScXvOX{Fm&#_S)y{ zbD!rv_tuxDi|U51uKJC4ymQPkiL@=Lo!r1wgZBJqDcgv)mM>{b>(CVWw5VJ>&T3tc z)P?`LXM(4l$F10KsqeN+8qtnYXA!0?Hr|c!GX%ffs)xB7Xrj^ACt3dNe(D(UOZxrFRETGRB_!-q@^f6# zF!WpqU=XZ@7D3C-(|Z}T~QNPz)rNk0${tTB-&w{+#U4czf28`ak5(}Kc| zyOIOihwLAfc75dc**6e;hB1_~`9v0O#owI{yKXVzK^N1QC1$=k-V>!`h0eDzVtIK&O8pXNh_RkQ5V zl{Nb5V;z?Sij6_S>y;Ow!Tc;~4!A1rxKXa`P9l1`5?w=Xcp?U6sm8HG=PcIFDGAUE z(mprjVB`n`21kbAYfFKLr84m(1CvpF--f9TiE*Krw9**@mtGBn^@d41L-n5V(2pAl z-9&Znz+hIKFvZe&`4)B*N4w$b#*kg`xwn{jtr3}KgmUz_!qt%Bn%@^&eO;~A7*5jB zhPAy+ufw6enYwo#>0x{yw-B(Uu7sB_9EVMkDTy(ezEi9j6tP-KAC!YI(;fQ6Dk3l(c+13qeW#wp9)mF0s7D4mFy8T6;Y>dP!!v4cIA9*j85OdB}_tiU`)fd(}u{f3?b zXj(KLkrg^iv%1lBXnk&Hgq_m5dWUSZM-XccR5!hgRC@vBE>OZTs=RLRQ>sO|9ow>> zw6Vj*HVFCnsh?xS^L@m`sl)sJ$4Mj&6Xa=0Px1H^bA8?0v#C%+5bz+3G5n{B`f2y3 z_p13>=aYO#U)cQOR*u&B0@s9#_AgD>cg(7&s(kgadQnpbF$rsxQC3+_>B>a+docl0 zj5H%lhhoyY2qW@0^#mPOJexzj)xp{$zrRyxKndB^-?vCfSGeL^8o!fZ80mSTMjNg- zDNq~H?&>sbKi8x3gRydU%35EK&UT|9JGc&BL^a?`g~j6MvpR>WRL!yq)g|Z!_|wM4 z4@v2ZGnzO8HXQU~ZPyd-6oPXC+X&gD|Cd_;dP`v4VunsPo&I~1=XYP)|FOx#!SRn7 z#;nj{DN&Fm$WGBl&%o%Ptz%h4%pC0HjO;`~RyH8(-@SXeStOvnXzgr3zk9=y8|zux z8?pTN?P9rE-~E>gskw@MdaRG639t$z7{cC>?X9S7!l`7Gb(`c4=%!zG0zZB7J8a&Y zEOKV*%=lUo7zmv_u>9`D^Po3$G|z|s>mBqQ%>M8$_kli=z)wOO61P2lX3P+Ouf=kA z4Dv($(8zl3&hmLND&%lk)JpE>qn!4<7C~}uyq0gt9-GQ$8}GZ+I&;ml85vBs^DDp7 zK=<{HE5#Y?RMKwj5dFO@v!WTWOG25BxlMMpU0N?eel;m2JAc6$;G-u)MD#`#UVX7)q|Sa+;K**v~yb;;tFi^-pT;-1Dl zKV9zFUFhZHDa=!}McOo)!m!1#{zxY(l0l7To-}J`s7M=obnkE|e=ItB%4J@X^i2>V zOUCcGibpR&az)F(zH`{7y=Lc&og5~uU=zej%P(=+o*s5;{~4%e5=_T8;s35t0_}lD zi~!3FNB)v*yWLV#+SUBS+I|8@qi;U~VZ{!!;jtOP)Uu;)+Fc{Q)T>*=p5sCD;$=*} z)YBQ6c)_nP{a9$LeekR*m#J8|-9D4^YBLLUmRFxq(+P;7MYB$?o!T)J7ZLH99H%Mu zAA5!D|8g{?gvorSeGgBV%%Kywo1GgW%$u2cuC7zNkI*}yFYro>H%m!=0xpTZ2`$N; zegzI8e?$iG3l`RWO+#qG;I#+)8{YFT`58h!nT89yuXKEHKzn<(7ZhAwzxHA6#b|_v z+vdl&(cpV!V;IAjx#oO6)-I%~qDAMCttMt^zIA0HP{obVOWG$xU?secU~~??_wEM{HG*lFGKM+~y}b-BS~Mwba_k*x z9sicJYxsMrdz8`fXg~PgboM;D2DD?eQ5sR34XK+W1N2K66Y6rGVNUowG?U9H1_cJKCxq`+UZ4_V%_XGJ~2EAr{fHCPh_hqmZA#cgc zoRB~WS$+pWq0syGCKU^(6b%%;Tg-i2rF7?v5G>7kSibU@xYtZ|eJmDYZ|y~IuS1+J z?JDX&#EeUBY#;nZ5%E@=dlyS)j zlZ3`?i^8DHVkefC<`6pHtY_zt4HYeXO1r~jX-63)VrMrMKD_A_j}w{!r_@O-b4atY zs0D(lPUHGB38Nv~eta?)e7+SNm!+hI)KR-S!rPZrp9S_YO;$+`?{Z!e^B{B#oDsT;|3HE0_8Jb@-Z6(jpV*l5$}*qH42$znQ_ zh9DBBa$G!&{JyOuA?>X*!9!iZ=w+gp^Ndj>+WWa?zK($WvIZWcMYsA$tEZ@^7SO6C zp56)fz^5VlY*wk}lb#{-Q-j2+v`8+iefH1gSRCGjp+~#&pSh@j8baPo_wA!lS|smp z+VPD!0(8;WU|;~BCbL|V1g$(}_wY;Er-fih^u&@BNyDNx8br~Fh7zSDb z1t=H%3&;q60r~e402@5H-wxe992&HCuucB=I{*$a8Ofm!;@^~ixVCmMIqjTW`3{WJ zUVFo_A6(g_q#-YTY9Q2_TG%5%6~ZX^17rd(XPv+c>sj$tc=4j>V&)>Sm%wrQ*mBq+ z`uvf^iO0P<;g$+m4qzDEy-Y3y>kl&)nl+;g1AD=W*9BJ?uem4!g9U?@Pl*NX+SPz9 zA5gE1*@5cw!u3OjoX_~F&(;aQjM$_rZwT_|gb1V!!ZZSMF61$iAX5&`LJSPiRmNN|43r=94mZxmT399hu|I!)po9q{2r_}I#Xd+d6NA}ilc&njohXRN?t zukk+6&bxsW{Dkpplz zAt)OXT^k?$w&)O{mnE(MapM z6%_pflLquDW_T;C;8WPbZu~-WB%CpT?)_Nc{Gp*SXh46;dvDbQ4~lN2^wDTGaqaTRe4O6MF+r8id?0Kd+GXreW0uf6eET!a8VlyN$~sOLzNFne%- z=n3#lZU^UF2JHXcJ^wdQ;Gmf<9ovMJa5XirR9^HwF1MgKgKHOS^%xkd-zkXdBk^NV zEPgLBw{}EB5c27T-2>y0qY+0(QdOxR6UyUV(8fo#KAX*7hm?y|ip=<;9yj*z)TmRpMacon4wko)ZqMc2OR8ZW@5}<7G5SHYphHjj4^ZR zI1_FGg_ zYSVU1;eTS{IHbg2eAOPdNtBbaFhWmKOze_FB#0#91rdJ{QNYHP2+OP2G+(qzg7X{X z@=!YPV57nl61uustQJoh?DjewAT;K?csI$Cgda&g=``nQ8t$_Rq)+9x54v6QzY0NM zxP>)82B5}vohs`BBi4&hQ*2}=@sg6C8}aAeH)2U!-#gkfFkh6VL6H3jifO8Sq>LCIJnLXeuuF^pGSIq4%Z5>1Yl9G;g%1hCzl^nT#G1FwL|ij|0}Q7-iTv zG}i6WBl#L3xJfMQaN|K|)c^fi2P`}q^5m}?pE}xMUa9B$XG7leHgguNjJHJ24WC}l zE#*O?Ipd^zx2)OH;RuW%y3N(d0?=2OhnyZB+3XQGSz$|q~)DP+DD1$WSvH-K(=I_ znySuqMEf~cO%+bpZ-#3%>?`1_ZhMW-FpbbOejGWSkh1P8{geJdg;WurB{m!!3^P8| zQSo`6lo!9gv8?jRAjkX;Lq6ecu)OnFsm%E{$fa9am@{1}uYLDt(0@tLO783?9=sTS zEo$?FZKk6l1n>);_yH%KP%8u%RM9eOmK&WWwl~aPr$?!PEfzR5fJ#Si(XO1gcCP513$Uf}KTH2r>hg)prB( z?X8ECKy7S2YSSeJ~mp}WlcXrIEg>lPcdhj_CbE#wy+v&t}(uH(jPla~w|9>=sx zcAaxpMU+0eS=e{B&xr4Hdx9*A!oAqq(Ph+3B^DC{^5w@ZalNp1TQbzq@~OGZevXvZ z>o9|tA4LH1LLV~TpX}P7u7KsDwv3*t=dFeiypZ!p#!dtb0I8Tc2^sAVF!(+Q4(#;1 za7b;tJM$J3wzx8YIGD>hA`px0`kIYH1hnoG@CB-10Nkkg&{}Yx$FB&`D(scF(0RxJ zz!ee!w0*o!md~G5l1xnqx-SwI3O2wO@Bg2_2!~*_inugk6?9E6A*XF$U+vlT08tHm z4_x0`1RwpBQD(sR!1pfk(!0=o|KTJKx@uRIPa%q2*>Z1#5ok zdw1;@DX}(dZ9w0~wYaP7mgC z;&bgS)iMPiuL;u5>xbTJwzsbz7iSzZeRp5J&v0U0%zj@rQEjX5#7(z%l~x?9T@0N* zu4B|dWh`UsMWYzumni{L>Dl7!^h`g&6!$Vm6ZPGio=lPg5>xL64Sq(B7`V3o-t{S= zMY-92GdVXa@YQ2T!>8r(ScjAB>F7fCF=z0=rkmMoBrj=z4Wb&_TmBfU$feYTgQ%qU zkWN@hi?2M89lZ7XMcS=!b9JGzEU%G*ph11-KtrbS)^K%hJf8WDkn5 zhIIMxowIq++QzcCe5heJTJ<)>mxW>RUK`8iQwe=Ds!XlCV6D!T-bQK{rjhylQeEH0 z+Vmnn9Q)hrvvY)CdKO-;yRk&!(;UU01&(GstWuohyqkExA?x$anK7eniDJ3l5B}}J z$Cm-n_X|lMr6YRyuh1VQhuCG7Cn9bO?X(P==p_YB`@J`O79gB z=i^)*-h7B8>+%J_loO~4L9wZYes0f4niZG`zb^Hub0G|9fNWg~$>%mmkiHsJhsi9eazZX;2ebAZ;0b6EnWD{By{`;wbtQLyG4dpKAxcle=w-Yyigm9D7QekDR@siv%&hflekb!;>$2-_2Hv_Vqz)}!Wg*loP~5Vkbid114QAa4!N*A(XPNq%j^$8imh^aM z3g>yV9l* zX?x3CFK|eB4n+mxxmrG`*bEpGWZo4iA1X{fFr*`=w@maO}*)fUVwaX#j3+y%7M9wmBQN>1+ykO3tkC(ZkwD+}03sGKW0h=FU{ zhP{ND`k5P2$zV0IDg(9I(Ejh(*jqT#bUshe7_{>Ro#vc7165e|7?6VgW0fXHmBc~LNLX@?FrD+X% zi;YE2pG0jrN=S{Xz{Pdq3Jv3d_^|BM`mc-<4USxBMSTh>-1+^#Dz=g*VTr{c#NB;x zr}dD1|G{kwU9lreySu65t)RW>Pp4a}bQ#q2MtL74C1!CMpY$}s*&Su@HYAAmWv7Pk zxR^aBJ*p~hRQVgFuGLmxR6|YnZj;oz=cE0U52I1#DD90l z@N6)Yjnj3wPtY^aZ@+)3v&Q><8O546U&s>1tjx#w8xF%KFpXQsZ_f-vhYkcy9%*0B zQ;=h%79#Y1?)GRHX2Ry+pcDEn4S5lZu=_dWPiQPb{N3DX_Xgq|xjvavYO=%~vFTuS zBbY8)6tuMJHbFsp5q-x9a|7eDgAdxhso|8hpgR+*$ zH!Bz+*rTyGb(!N?cnv+WV5V9vt^A z{=A6+mpn7Vs{^%co-Sy`t-mA219hay!67Ul|8a+)SA#tOO+GIwXo4Sh1>N^QIAUCb zxi6M^bm@%qto4ygOSS^}rMDX}EB|JS-Mnl(>WJHixERI*x&#MMBLa*x8gVUaSEl-l zYg|vev9yTm^qeb*oyHvbasa@_q~>((`?fhIBkOS0p)+YTelvmhb1O1EXUUW!z~#px z$FF{0FF2z4C~VN=J3vVnB9lDeFRq={^gROc|0+F+MHw`n{$AEdGr&TavNzj^hS4K_fE6fXo#hTG=k{|M332f)o2EKFp8jn|)KcpL5a zScHtsvQA25iUjNr)W4jq|2sP@suMQ(8gD_L@CAsaj?vTZ8H_3FN}RDvIyw!iQg0x> zM&U8QZQ|dNsX8XP5o;plbY5VR>!k>IB}O3E8V^vP^>H9c^0Xg`dc_q;bG=3F%(&@v zrX|CpeyrVFkkWRfGi)7ux1YJ`PYO>18&RcxUZ>0J=y`Cpa#Xt)!rxcb=TD-LFZ^e) zLW+|_G*!rG1SaJhUIzJxE{}tRV^!PW?jNG^+Is}@NtGlDJFtuyaB37nekfKpI#jDg zUjg{AF#YH1wq{@yT}?d9w|E&2A2N76qHq%}(q$-N$BouuZa?NB^rDNf_fTl`u)Q|s zO@8A9WH-sm%;!8s)}*WiMib7t2OK-P#pu5tu;42jKR@myN}}QZc92@lOX_&&@Ghgf z@4)de*vDa|imy6hXq%VSOnFOkB_s&8=(=p}ORCKI<)iFJlD-mNvjS0@vAq_bysvxhy-y#GZUg%KEmcg*xZcgcz)$=boD0t945Y)xo|-`>wPR;9 zyhv5XBN`9$<*r#@QVt6)L~~4jCrxqE>*6Y6DQ*Dk7+I#3fx!D!fV~H)=G*M623<`P zXp47GubCl_*fdu*dnWpH$8Vg!;*2PBBDb$LE+UvLcQY)7lv?I?EzWrNoXdF|XKh7Q zz!m29PV`(bUDFZ4SbSt?uw#(lK2;^&Uqdtq_`lBuX?ZPDLx(X&u1{%0i>-}V z$fJ^By`i=rSezn}hrCiTtWipjjY1RuZbn9x(Y9U$tye42CI9fX>#wm|Rfh&GpWggj zv2f5f7L!o7S{M>dNqK3v*Uar>nnp|6;Qp^Z*l&yGFl#!a;eeq_&a&OO;iB{=lvucc zd*aI)*=qi&gGmmFYTiit^fF>a-seo@?PZ+z$CU#N&FWd&SgH~M1nPYTNv^#TiTkx7 z0A&vt*IN9H`+(PQl^*eck_w-?hvKS>ANR7k?=dYaVPQgJZ1XJqDfT^=h{~l$T5Lc= zsLj1^)ZPgF;%YdPp|^&e+Q!O@QpV9eb-+!urv4zV296m&7k`Yop}HMlXi|qRoHl%s z=*8m6I3vx9+7p^28K)r>Qrxf8W>B%tcYR#zBL+_}npVaAz(cM=m??@NYNJ$NJbns$ zVdHVQ-pZzm6m)Sedk4f7U6y*3r4>Q|MmwK9k;r|ppt2NMTMG)xcC@$PoMz^LyQ~GE zuzaP#RYw{0nMHg`Jo%>&y^#^ zY1=-Au+&!V8VnuMuqC@27HH8#!?xRKmOTv>010N0BMiM8qdlyW&EgedhKAEHv%OGY zojvuv?l_rHj5PF)mVthNzuT98g29jHwVzuxu+{ns60>>u?0T2)R2vrE(SMC?T7H11 zZEA81T9G7^>Jw#dvgSjR`&f2Ng|KrCbspQ$N;^@$maG36G)WQRqo8K2^oN=dj;rWw zWI;SE^z@IYFbbATO9UCdG{Ge=D8c@6MyXhJ-v(z?rlG!S`=DVVL6VUUI0U8V4yZ8L@(N* z55Ez<%-Ng9y&=cHa(N8QO@*AZJKE22GA^{ zr|mmxnd=Lt#~o8hoE8ZpTju9cM#&qRj6`kHyn(&VY?7}B21Ruo7Q5Z~WvwFyoGI<6 z%reyVIu`@`SyoE($2Py{gqiYD4Ii8DUi!DF^evsNGL~#~X1e{nv(_p>)4GE6{E0H6 z_&^r1G<*ALe+a_Q^+2aBHk8?wzC9hk9FwdQIDs`V zkxEOD`WA8%kYIV)1Yhe@!C!kdVVlQPPvi2@O&yVE4x>Z2wk{JzXKheK$#${Wg~@7? zXo%yK1lG`zN-?I{Xzh$(saU>X;k!*Ef-#xYsVH-U^{~;Yf+F)wNeg?4MKLD+ zXhCNy54-Jz{(E0zrVJ)jPp6?vyLzJ>vQrXK%16-HZn6Yg)aB|j`jbQ;sPEH&UgRXeq{{Weg!M=_Y4wo$zILE*)oD?%Hc5l zg_^Kl^bF*|7ca2E$q&mA%xy8!=(pa8h+D1CPws!8W*>cv>4gh5gMM#@Uzeed(Vxxr z%xfacU591scp35I^AgRvpx@eo9`D>Ee>Xb)g=#qX$ZnT|t2xzrRJW2y)LVVW+T@9# zC182=c7nq_==t(oYBufu4Ln&}c|0eN&RO0#&B#rYcLJw+_}gfy?$c@KFr|x*lgfof z$dr3%Y2WrnCIO1tIanO*H5=ElbbtO^ct4aTd$T|x4kicRnU!a38zE? zvVdDzN1W13tB!l@km|&rKfo0_>O0%x8>Fwp%Pvx$;e7<*ArA1toJknpxfQx8?vbr3 z)6uI7@R^oYXTscQBd*Q^$|!HBa9aB?Wn`)P$6eZPJT3+fMw-2!h_kYso%3}C&J|Vr z-~`MjKKIAJHJdoLV)iVZKMn<(kbIY~D&<<-{BU1&k;dg6h#zK~C=O{*`!E^H5r&|; zH^4;+>AYGJDYLMqe0l$Vm_V6R)0AB#(V{kn^J7*-8Ko|;C#^UR#c>hUIhp8_VYk`@ z#RM^vGPLSU8qG@IC>Wnnckj@vUW-Nh$O;jvI%IYT;%#{y^Um|LZr^#V=$I^p+#47J z?@fG(D==6ghEtuo*2UN;VUh_oeR!`H+V>5)T*MGwIg{W$Cx1#>yIvW^*Skub&aeF3~s?QH20|Er=Yz0DI3q6uq50Xy2s`ZmBS*X z2HSk5CMijvP--8)h@a7pLY|Ua1eV_h;o2Q%URfzjL)XegUB&9g3!qo=xP<+Y4?IZ` zBF@em{OI?Yv)%COd{Nju(d5H+kX#H8ml=YZDb#ztV3N@Q|)=d zTatv|udC^ec7RPr#u8P$D_K@Qk;!Q!^Chg{X75^$%nJ4k`V#2w+d~|*{^^Y$N#V<|IbBavAGLaa>W^Tm<% z;LFNi>t}l34}-Pxn41-`o8(L1bFq}Fii5?Qx{77sR$uqE&Br=BOmKgZwYl&eVDm(y z-kO$dg6}IQMIgz+M<65o`fl`qy6sO)ZZfoQr|WDLSV_pCTrN}u`Zb(p1{B$H9Cr11 z)`U*259zpIuAYm++GdxL0KNU(`iU-6;hsH_&jR|=pv3Pw!CrEkka=}0%*A&rZT|Zy zrZ4J4HjNE>4Nz=Max<~Qf}=j0bYI*Vvu=#sLQW!V5tnZ~69Vn$k66e=OTk4^6vw$l z-<49BS6i?YvpKcz-Xl4P=XH^F!?6wAMP@T$on{~Raw^-`*I5|H6ny3L&5lvyw*pCa-qKq4yTY&r&7cp;k zK5)u`>O(e~2CW+26b%woae%RwJGAO|NOD(aF?5uA+gHhb3o4%V>0*!OwH5 z7b%R8W*u+PA~YnCWs2tVa&a4znl`^bLraA3(R(B2UgjVH5{d3CoMVkk008vQxp*XzwwqF^MU4XKlZ}4Lc8w#+0NQP zf8(^zhyTwHb#2`p<1ZsTzXthbdV^w5e+b)Ny-PcIdcBT_-_N>qcT_p**ql2~_TtsX zLpXSs;i2+)c=v`T4H?`S7Xbd6TGioTf+WNeQw+^y9j9n&zI-8GQOu zH#l80|8-dS1z2x0Ewx4%(#{TYo^MoO71b>s-^a5OW=zJm?IPGOK^Z zlL5~Mu215}M{=zmTY051jj7dU)SHrV)w|c62?8^R*NZgaJ&2W}T)Q?%?=5S?1!tW- zNVXUf3zBVj8rxED>m~04UHbFf@%vv?R%m0+jF}ei5@(xQrSH2aQ*qCvid+Azsrf#1 zKk4)}g4j^4xL$E9&!RBo2KX&c&rL|us8Y~GmkbeK*L^(d4MktKE z)j89hQ>uqnR4#7#HmH6wCiz>$difRf6KEME)p&L?t98p^j}*3Sc<1L(BcGUg3WQRg0<=|QfNjPn*MfT@8He#>8dRhTPux{DO_V;()I4M=M5{uMyEbQAl z6ot~f7OOA?!WYw9(V-_*lMb2|Ln+tl9v?K8VUN$*((=^wH2C(|*uaLeFWe0<3MedsIU)B^Mj^73x!qo|N^xNqPlQjZJKMOlWg;oPX5*WP>M3j` zHRd+ePZCb$3HX86j&NdU9@so0h|W8`q5&Kq-!K&0F3Q^}Xj&YmsOnX@`jtZ;Qva4ZW7V_6xZsp+$4x3ZHD zeW7jz$*#dD07A%2I>|jviaL@cp*w0b8N5a`?zcSq;l7-kcu$afmjK(lc&+pUk&=FH znWS;v5+p99hv%sf{o=ydy`3tP9==)axlps3Ed*X*mmF zDrDN}TBqGjF{ZaSkZQ#jw<7zWV5!YQbj*Zo3Bo3-gD%NEF2q znvL1kZWemVb{&_z78)F8CMB-t0t1k0VLwv?3ihWcjT9x!dKv-|59;MfntRQG7r%yn zq15`6-rR=>z76xfOWBn(aK?FM^(t4HE0avA{>n*ZKK>B56qL!jLGwK&f+FfoTUt`6 z2qUEcWg5}Meo9xg;I>7Fu{|PJXut{Wh5U>9Fzju5wb#nYS&Gdybi5ooFlz!~i0xf3 zn<~ZVOMv2%=$X~I`>wAvE#{kK12}710yb>z7pb3>f&5RFF)7sJ787q;0>%)^dfu~c zAzDj3eunE>Zd-UtP2BMY`A>XUr&d{WR~e^aTj@nHnPR9SMzwN-XOMbRAA;C~DkUBC zwC8&P;q4eNfM|l4)DZWl+hpz$Ae_NhZbN0wq*qLcBh6~zZLWA)&n z-#k?>8_lx&W=BUxvDGdV4RAvAmH_;OGMdX`!d_%e%ng*i0RmFfzeSDD!@9gAJVZEuHOUugkGAtOimfWR}&0u zhS#I>sivxIjrPzMGLlXR=yqPc1Wrg@$7gfd#N$V3NKUy2Ts5BoF~WmPZ{=srV-81CYmCkZH=jhI0t^%X<4xqpxqe_>|QQL&&$pqYMwNTs={i( zS{06nIgy*r#10`BuKg{1&etPEiN{*!vteS-;@<#6aiZpL2bmi+suXRf%8C~?NcBs-&odzwNi+i~GznrtPjVT#Kj zTKwf!VW<>B16(@oxq4D?$R|{IC7$8dpm#&i!H0;+#4>aB zLgHNeRnX~8mL~`IM|4zPF3nt`{yof?D*QdnSpKIl({F6!=H6nq>A!(^kOf>pe)#Mq z`5+e@BaEROzH7S~O8M3z_Q$yX^ByI0CJvf*MK;H{=8p-Q#X)v5l3|&*orrU*$*2~Q zmVQcViVj^?B{iTW1q;hDa!b8~?a^Fh(}{xL2(Rw@=*(tVV-}lt5Dm#bv=qh8b z#8pdJSbbD|NUymXy2sO?dV2$UW$0|h`z!JFe2>+Xg^w|bmGlUn5>GDJNk?MM#lS6D zfL2jQ;nQEAg|1=kci1X3d~bSH3nu>{=%M0dstB*&E8B&Wr;3aA%Y}EtPDN{H;@7{U zJAyzR*jP0I=a2_lE1eSm(A}GM) zJ>JTSE6bL4sRUE_q!o(h6I5yxbbUZ}8$~sGo(omNZ0G#Io7XX(6xlW4-KcN>5y*@X z6I#eVN9&bS`1c7KZ}z7T#q(38KiojKCEQ^{jNh3`nui!QjrP7XV;q7~Q<(;w6DHbU zHf28oD*(#QJgTH-F@5ph zH1#R@SAzcDEA;xGu%$ibx`lolv-MOE*|Of~MNyD_rgq;!i=l2yCOkT<;X_L*kQd_+ z!)0Z_^c(jZzeG*B%yQQg0_jGcC=++4o1xE15vCSA7Jlr;)aY9Ai2GEmeTa8Pu{)Qf zLGwHdhodKr9RrwGnID$nt;XME^Sxz9Xn$+?ecXNzaSnEd94`4ywnUG7k}Zk{{%EeE zbC+iJHjks9rO${|uoH?zlA^WgwKi5M}>=P3rX8iMw1tHZa4h}EMsDuHUh z&T^6;JAfiW(%xP;?8hYoN&_3s5t|*<-`^ZXCACrW%w<)_eh(UYoS{E1p<}NL*iIda z272ayjJ>W6i%D*2h?EJ&u+d=M>>?#RAER4*a}Xz8JI;=sF|zb3)$o0?9S?dv-V!@s zY4<+_f5RKr{Wc>OkVT2@xq#W7V}((uZgZs^*F5;)fv8BK7s+WWb^UDFvuhRvwaIiH zAtC-fTm4j=+XswZv4`ioSr?*f7cL3OTBXow-p)+18~ogz7O|ehJ95<%3)gfGUG0FR zcSY-3QEK4s6L3Ye82@i{#^l7FiP-BeImOqU_)L;Ri}yZ%yiqrAD5=>Rl6qmBoO?1g zl+Cj655uWQ`=5rBiPIF8V=cq51L=X0$Z|eC13P7^SY)&wH?Opk z9#Fmy)j}&OIdyUxDqwRY9xDk=TJH8h6op+dCJk3(G$*WoQ{LjzaWCxh^`)a2RPlt> zQy$_7?o|nGvE$WV=Z}%mn<}oJz>|@@9x^*YJbWo{-rAl_HBXK|jb}bS4VfNFVWHA> z83JRCBxoPV(Nv>&ycM6IA!O)}p2`KL&xxAH*3wcU7G$YDLYMdiYFO}EnVUidXy`8r zEsBp;b`gBo)81VuvCn#d0h0RqbP9wU7UHf%hLw>=_p zCNokdET36b<(G4!2FE+2XS!WCiN!#`BAUbE8Y>-Pzibxu)2eK({2R}7JE$Wy?f!R1 z3OoB6=Kp9&tvdcq^NR9zpLJ*Z3BF)Ibd*{-atWr*JY5#v$_;c|fnj5- zJZ<8`*q4Ww$-3@*p9aig1z&l;o<206k!=P)sHCPF6AXNxUNZh(!saMN7<9!|Dyund z!<-ku>LT&jSFQM<-lt*YH#s?^{hCw$75dC1ATLDHxt)df@@Tj9r_DhDmy5Gz*4mX}+O3fXC zfwFJ~?&aTIC+M%HVgEhAk8m z+55L63iA|FLT^*rf4;YHmY5XX`jSZ^z@oX%)@j7{u!0cm~pwWq`o-I!Q@NqsZd z*#+;Cv!!GaKTVh6xfgSjLF#K>Nv4X)d1Yah@hzP>xVewopbt<2ZpXl`$AVdzbMF!g zbT;)zmpq4K_J)A23iXpgN`ZCM4X-T5FOy=GXwhi4q!-SXn<2yoWNddg)<%cAf~rsC zUetg_y?YN{r)wzTZhj*Fw$o=9YNTVXSFp-}(_LAjH!}9B*cQ0<;j&uH)S|N5IkvX^ zH$@8{FCm7qF?NNqI8em7IYSXAq;4%;(uhAH{l`CV1Ft{Q?0&TUw)EWojQZ%oCMN$+ zqB(mWjDLkj9$@oZ z@_m4=+JnfW#G2a^&k&kX4D^x=dn^j8`y5?Em&Fm|Vc4Ko!8H?rPEGj>DM-9Zr-_G8 zAwi?8d~4J!md}D)!vh8Cm202=QF>jozm;B*^J6ts=^cmg>|v@D1$|2KwO_&rm^GA+ z@+6z?6k)GMY~!-6X609u+f3B)bA1zHAGvF^mrKW8;2ltN;+qNyw=Dn#MuRec1L=$E zckbroe?Vzj{y#v8fv!{JGnIx2qgZa1Qjf^V>0-!BIf>ZO&glITlqtG|dP9qnAb@LR_*6pX)872W&=SD?7DVM5j@ zUd|~SL)^?UG5A}j1v>%0VE#?0$+rIoq1LDk;o|;FsA(OH{*ym751dP@OkDeAYVIlO zQIdN!#mz%ZevW#MiWDJzy{VckeEzI1eL$RRMyOhgc$J--<#buIDY%G#cvSqcwV)qz zT;gsv@rcC)#Rd^ZbqeNe;^|m(YHoUD8QjT7a_ z(lW+Fu0gDfBB{YEMCgm5Kstu~?=#xp2MDD%EpJ?xFX%tVnF>NzzjMOmw~@=VLOeWj z&(jbpUW5T*S^zwFI#eJVf8oXkiW{!|?UJvXVB_Dk>9SseOQ0x8JM)+zgn}Xa!+}UtZ1+zh2ia`-&q6uk-&#Xn3rI(X_lHY)o1+5& z(B;{#tsoa#-`*_BeAZ(+g*P%Z(3MIodsKFx_706?nMp`gV2`3 zAZv#L3n*o}@Q%%)j3E&iyPxl8A0`^yY<0g}p}vnE>v3kVfco-h+o-Q$GVuSnp#KNX zd>iOv4);Kr;26#ecC^sa!hE84mT%^qi_LD@&h{ToO$2KjF@2E3Bi={60$+RP%1+Wi z<+k)^me9ZZnXwe1s8*DD5(&hHR{c%;7C~1=Rygj)dK&aUf+cu)-Hs{UjWdCNGS0x& zoiEw}H96z-^*=+FuT4N!uqy*lK16Ngb)Ew=4WmWz4cxTqGm-nD!*12Htqs9p@KBRf zgQ`zF7ni`@-Y)4=%FW7&>2w&EiTIwvKK?Yxop1vckR2$L0^mmct&a=_p!%p}>2d<9 zk9ugg@&(mO$h>oaDdD>n#~sOP!GY6&8`!30hyNZjvF5n?y)fL!92HpMd7{iFT>&jw z9*kn$Q3IVKhLmqr6oLbyKUMpy1xt$;Ln zyR)BoV#+cW(`t6Ol-2K>9a*dz$YhFPZbYM7cS-OTnNC>$5-$!Oq|oIH5UY1B{>trE z=D#jGVEm0MDeM-|t`OqnY2SEsI-$g<{@-|He~9u|hBq9r++i2?sF?Y95&B|||DsJe zq?V|<@i@&KrosuSiN6@;WGwD6SC7HUF1Q}y4XP$LSY#pP@_f4OOtXsZerj5uEA()D z;RsEHm@LO?ad_1_C~$cyN?X$c;KMSV`%c0&k!n4fh;&-`TI^K-ypmgJ5=-JBm4s6# zX~AIKMIQ9Z@mS$P@o47cS4I2S%tuO9Y&Y%jh| z`?x$`xM~Tol0oE87N(}EXH`%wlL9|AAKP4m0$90$4)D9QNc_8W>l?X+;wR`LiM^(= zvnjCy?2yiX5i8~s6z4P|DS%mgXnF)p(F$i0RY|FJn~^O7f}#rKy~}xd<@11MeV6Al z{|O^Bk({|EsD&gG7VrKSdv6(=N3?ATI&oshOffSvGcz+YGc!{hQ_Rd1Gcz;eXNJ$r z%#5F5eDA1V-+ptuNBuPOW28AMII60nQk7J@_C9OvwW~=SCmB0s)>*!j-&fb5>BXjC zYT0$7H-`NK$p59QxpQY_M2I0Dsxui5<17BG@h1{LB`kPEM4_Sp5r#0z0_qdkk5ER(fAFm8dzXuK$cs3gS|t;qP5@odCOAnf1gdVem-~B+}BFI zSO0WRD#S@$QGgo<$-QkgZKbgTCMJ`WDY&1LN_%8s-e~@6bz*Q*vgDBJIKmm(FYB5S ze#%LWo7(Q3Iv1gup|D_JUx%;BdVv37O@7gTea@Kt@*f5T>=!eb?F&}O`^tKaAm@|Y z7CUZ+OZo{%M(+QKuwU{16Ki*1d51*8?~DBRY%u2k9X1#X!+%K4u>HS724nh^u=&qq zu+gL-0>qFgz^}-B;VZMBdQd$C9f-X=feznvG@u6xZ3jQRozu{ki%xU$L{2U*t3S15 zKAZYAv2Ga2=4aUJY< zuC{A3IH@e>rBI)17Q`jnrSUNuvv`9MpG>c2LUI9O z>ZDorK^2Z>nC4)`r1#rDrfoV9bTVevbbrl2tbFh*jOL(aqhr521nJ48l4b5j z^irJk(6mZ(xjKtHVOMN#YyOC-zo1d;1ICYS9d?a7turkHV~I(NWbup7aQvGKxkm2u z^}94QO_#|58RQt75EhrzJeXFcS@h-SKon~4wntHJ)FNE$tH0PpQEc>PARJis;zX0! zIGJVzJ~S3>Tr1`%-9#*!3{6+0EYm8ps>g|WdGW40F`jyZspyt+igB|rOcP@yTdttg z{lv+2_(`i=?A)9ahXxnchXpic=Tb2aDO=hqqn3r{;EokUgYbzx#f9b~1~#qqm1XP!+I*P%w-Xtjjj$(e z%*ZQ`V`iA|gXI2db&WB{UL2kTI&9)a9i+j_LEgRj^87-jf8RA<1-ft`_a8S2IUTDr zx=O6&QbJ}r8I0Zi`Z@qZe(9^4^l zx*y*D2ru)8{Y~#Z)vOOb@}Y0QC6XWFm*+MxI<|_w`>zJn)G>;L`sh93@_Kyl$7u*2 z`dd0BR~XMBrX~OQpko=XKFg7PwyJL%|I`TVN$LUp(+0N0gFN)1aA;$D5PR6#ie4nj zicUdI?-t#hrtM9oqSss#>>ecAWP9c!cpNps-)#5;2%o0e(zQaD2RhrbXc7XXB-3pd zkxQDY%F680n-cbwldD^xI3s*F7UvM+z(E-MRAd=5+DBIF?G~r3`ox~kD_n&9U^n-2 z2PkcBI1X7p5`jEFgBDfy1G|mc;UkcGC zmyzl45a?%xN6RAR8xAfjCi9EVsFZ3UFrPcRaMiXgtl(IYpTtGcb(Wtb+gR=fWu^?! zvc;T0TuS>k4m%5YUTyrLF}_KimXs&EB9p3ny0P-bUykCXl~0qZ zleMZ_)qNgUC#PS>V|r|coep-6^F%JngN*gxcjqoC^t(VYd(a~3TDZPU6|aut+KU?c zP10Ro!@iv@+%aE`sSDV-bdOPEif2Qm*3#RC9Z|EOb*vJL!su7cK8}3e_5{N}(6dH` zVpC3gj|3t-rMljyB7+`}SU0VDBqa>iPcy2-qXR8P+3CUhS!?}KRBMlSACOad6$?cm zTdBu+Ju+hxh}XL@xErSJVn?TM0!#JoXHVjb4s46nBik^zE~zC|w{+RsmU`ymcj0Fb zWNB31T+^i&HC&Sg?(=zsC06fkn0&Iy;=Z~#9c|3vGb4+mDNPZ@j4jswY)gM^Bvn6t zdY&i2cXy5Ba?kQ<#U|f#|8NjeE-1xy{D4?V=4k^dAD*)r@0ZKd$l5wY6+cK~#1&8K z=4Z7z3LR%R(zpa!uFU2>NFaf%a;u zymX~mQV?8pa1^P=0N{%y@G$7A^nFn zLDvUApg8f*52g*<_ZNTdlOe<)BnBO|HJ1pwKMr=UI6R=#V3?EvQl=jrI#aM z!5A@0m5BO-TjN66g0m5g%ZX!p9da?0EJ6<;){_b7LkbsmVgIXFx%I*(8yrn?}<9rl@fQKl!4 z%-jC!6{Tju5Ugh;K@P1;I;{Ac=#ogA>W*02i&)&5#Vv8w0|%!B$Cr+{o54dMT&NaYBX+Z%y=g!mvV$4nwfVH5geXf7KFmzaKVaigs- zf6Kw26YswLk^7_8OMR53HLK5w7rPtRjs2BniJBbejwS;onh-vbV}wE+OIS!V#*D<} z)RLowIE4@rYzCJSEcQG6Iw}Gz9>3s5Qt~J7-|qZ@5k}4Nu~yN$83q;dPLI68X{z~g!-SFMfv`eFC&pY{D31Yq#%hv z$KTNuLM9?enh&I66p2zq_pxk$NSWK@^Ht*4kZHqf17Gq_L}6 zh)`-Cv5tyYjQ)CW9AK1;D>ccWH%6I(^A$-RP<|@tp%T3rWs=IPm)>ce|LID?IIhuF z6c)lV7T?J!Nf0&-oM!b(&p(VG&R5=^`^nos$1x(QaG#w=c%8r^iB~!D5MccyN?b&% z@JOGCNK-6%9{5vp)H|`(l!kO?c04z%Pff9-&>#1tey^1sLk9L5MKgeifWJ0@4F2#a zQv}sk5w|Gwi%O|-9`Q44FuHMU`r*{0nx)a$fR_C<_8FXbXSw@h_{NsQhsEtxF!!L{ zW#7T}%+=(=PE>#K$L*2Rhq*j2u~$k}*jd|Ar5%i@ZjSebwZ3gQizx#||6x@X2V0lIaC2wF(NO*xgd?5!PtXf|Zqo8EvWMOIbDU@8j zFXN|K+sBXgv#6UV`CIB+ua7be1&UgK#8{KYlr_zcjWrKzyBmj(1{%eFH_cbV>RtX7 zrx)I5QW}lYUvWpbMWT^C0K1pa^eL$X8nc#%G+l}oV4t$>(tmCFnEG|VmAg)N0fDgz zb+D}M{ulxhHZw~+f`eG%cfJ9+i@i+&H$c6e>T(z?V~=Ei&8er%dMMVd!Rw6sjk>DE z))^6bri6`!cZHN63Ru0C1;#EbY$%HD=!#`;Y-cYAv(EG1h=7{n3)Zr>-s>Dq*71*se0TVc>9lLm)ypFGSQ$2b+ay3q^Md2AxMTT()VT z`LYSDGh862i1DCNoX%{*>622TiQEF))E0s|pZ8TUh?-|gd{^1FMO7>eqF{vr9g|cl zVTEGQ!h1hB1*0q@IeJ0u!RA`5*I>qDMr0o{P#%b1W%|>h+VAa2cV~z)!ZdNPaeEob zG_gq5q>YLUF=0aFA#l9wh5}Jup-KQFM73KL~UMeNoi1$xbFMu1mmt4 zZadV)b$jH`D1rMp57g2;!V>R^jY@`SimB6eH52zRBh1e$|W6&5)8{fuL{u_0M2THjmf&F&y`k$yM)TvpioO zxjx9n?F$hKV@cqw87gr7S>g;5e?y-$tHP9sj`jMedVC*iMM#x1!foIHv4HcNCA?s| zaO^+21(xuZ>B8v;u|>LEBC;YS-0>X4DUkyvl29i>B|(A{eOFw^)9pc!uHL*&wtAr1 ztuq~9ejLU%iwu#%d`KBGW7r=9GS37RDhOEaFhg=ip34c9!vn+e2^}8X{vCQYW>S-$ zpgoPB#=Sl(f3L#5>z2o|rGn~KQWJKvrM^|JNYt+u2RXB2SbvP`{Lbh7DLTWzKEBVn zA}ptlFTCs!t`vqUJQv;)UHw_Xnw0JjxcUI$p+~wi&;BftgDsL%dk-u2T#4Z4Ln?I$ z@xCOt{5CCaJZnhK0@lr~+*N_u^!s$%H44`sn~LL_%Zg;L+%G%}6<$D(6iQ|N(QI^V z(Xd4J&RpS`+m}kv$e4%7pw&qKmXkq|Bc1${0*_uZ{o7QA+LUbOiZsuh3~}Xz+y-C`LXB3sjgDxR!W6yr>0%JQ|0NLwQe;!Pxr+TO&xFnmyldqcMi$I z3~Q1bp~3&a#h0tSg62VOY7SIf&w1Y@k6d4RN2XG^*gV>7LSdCsZ5OKMn9Xj5 zjLe{a(E?*6xz=o=#@{N$*70y0rQh*(=#9|rZe1lejppWDB{7Y5cz-3d`qDcy)a%ip z+&d(!o}ic#)+xz`ydzivW$>{k@5iD}X@MZNmNs@a?5U4mGiE+a**z{Oydv%7s`-@} zDpj&a=Iewl7qavSwiFHmt~3e6YM2s~t#H4?_sX55ajsFk=9)y=%@SMGv4Rs4?=_$j zTV!9|M7-RXogs&vH6`|tblRVkMn|{i11Wsl0EgD6?WCO-aeF?;*XtMePb~9Xuv{cr zW?+Qu=IvF=@xJnXlN_-8&HnV%u1aqP&DVF~ZzeJn$M&4VH3$R0-BR%Its0}aFDWw)<>@4qc7Ja557 z&dZLv}H17NLC1p^A1-od^-%^^&Vs-{)n1WwnPDte;p z`}JXJ4ehF{dYbC_$zW=!(RBwCN?p3lLvAp!E(!T^rfrZ4UDuDwO6N}z?eJPqs^ z1aIqI?m<95FH)IT=fXB0)}MFO+%9w{r6gPOkB1o~dQ|sdqa$=AYZg8lFW(nW!vDLm^Bi^nZ2tAd;Gn>m2e=6-R?9M&a*dqkl1w##;N;LOw^mcQ>n&KKI3lA!Jj zi&s0|?!B%j($lF^-Kmo-K=|{xs~P*;QyW3ndroJmawq+*XUbwZ(PQ11)oPux>T7An zbM?)oZGBcTV{>?Ig2qX4B!DheqH;ktR7EqaDWls8M$Oi|tWvOX{9S*lEFsL8Nl*o) z&xELi3{0EyvKv|RH{HLDZdp10CAyWTm$7tq`R7K?^)r{($)CUt>m2 z*8jqw&&c+_GK%xRGKz`iKScGl37FVfbP4`@z{|w)uQ~Dma~XU_1~yh^dYR8a-^GIQ zAF(hq=YIk#&eEVfP!?W3rbrSBKpRRDgiwT*gt|qbzT~QgU?Fvhr4<%g>D&xkDN1YY z2Z9kQ3Ib706_HsYjc=kNKamu_p|Z0n3aBB8ppAZHNoql(cW!Jt`+ioG%6_~(AJ4qa zejDe!OasgPK}hG2FS$^Y8C#PRI*5)e6a{V_(50j9+IH>&p38Rxc}?;rlFvfbF{~(* zOyKAnV}x1(=Q+<`!kNR+Css%h+VMMD{KN5$r^+L(KimO>4Ia`NOW z^rRPrOI?`G+gK$Uce!$jhO~;59MkkvN4W=JNJ+uVeA$imO|;+@>HHC+5umc22nj88 zmLm9~3Zkegl2ZxOkap!bHl^+-wj&7|5A2ai@tW*Aq%TH8`BIy2SQY?ric-bMvqP|> zDAZT1kq%{VKVGbCsP+dTgOQNZltdAQvb5+Y5#oPv+$x% z4oEv97Rcc8kVfJjf3ryff5urwe7Bi>aM))mZ$W08w|tixT;r@apRlpANoDk1nWs!R zC0~%OUaiL69Jj<93CDFQsK@fVjUOozH>M-?-#R(hF@?fSU@&p;(z+^0 z{Ti6)<%_j)bdg9T$HMvjRWc%w_#1BESIT;Z8JeBQ14F7(&8)&WxJe)hd6+3vr3M{y z`9uRzTBnOBnXmV6w6b4H3TR~*nZ)>+tV+bPY^V-l2BW?tX0kEI67|939RoU1oTA@r z<*o&FI*8L>G@P`&>vXKh(#Vt*VYaDzs?eGhbOd5s1Yn3~#wLQPT4kyj1vb#QcSr!V z5<#)b-hblZe`6Ke+7%$uz5VdSHie0rPc8gDxS}#5>jBODm@+3uw4YG1{k2|&J}EsI z+S9OTh=f`ByHhP~c4Yu&zKc^deYvRY1OT&ic^{(M zPp_&dN&Ffa2DyQ@lR&m!8u~J`{zik^+Jsn%O$b8y%1q1CO~>z=j+GEjhiU?|r3Fu{ zclm6^_UBCVr}N2fEi6?<$VwyZi)|~b*nC*jYi8ca>c9q{3YqHN7${&{+@#KZo$1N2 zT2YEhW8dr4SUloJK9+{uEKq7QxhBTiuv9(>#DR+ywmskO=m?cPjGDJ`CsK%P7Z!%1 z5eyim?Z~Bi?!Qkh46u~9%MB@mZebl&Cy_Q}O<&-|VlxlGP%}|dAZRBlz-kqwS#0v~ zOe>4eh474!E1^+HtAGjAg?DP^(2(&FP1nm->N)r|2(=oa{hm~sMac*QDZ>^9bxx-r z(Kw^YqqwDvoT#G_dknc&jgpZ4XwvsuwUXtBWEf+@ixLWdw{j6`TM_ZvnNeSiS{fxK z4Ffu+tqdNgcbnpe;Ra*N>t(Yi*@k&3FD#`}$k7GiA7)Y0o@-i6W{E0YePdiphe ze{Lyn=Kf|rCmebj1Q~V3vwkQ_?XoAF@85#lBH*IN+ z$+xI`3Pu1cD``u)CID@Nq-D4@WWw7}P|+N;t3z&1@0hW_F2lhJvv*dwP&cva2vf18(SQCo{((+Rc^} zCmYYDR=b%0Ozbw45m{5_P6SH#=KnqfnmcZO%Qs*jF(tY(X7E{3RdSAoo`kitajvXS zx4VZwD=SdiBl!-Dr4{h`lQyDE`5Xic*~zaZbx_lw!h_YL%*KgS?Du_H>Dt z(ke%in{8q~j$*5SB{hqyiq$Pjz03x`d~T_EbwG8oAYMv(o0~fB zcQq{sh4ga1)Yw6jvXk88H+-H#F5JV=7JTfkE83(9zwJKvwl!I)d*ZhWe$BlmeQ*be zX=qt~#|pHr_f;D7w+1!!!9ZcWDxCzClLL53vQo%b9EPcbqQzvgLmP*1n4~71vma*t z2Mq_iqJOg?Fo?at^qpS0IoSO_`$78WUS z^u^@^=!g8_f&NFle=r|3%Q%3pw6lc?F{Qx;Vf8`PMLt03#h_!UpwBfA;G6rq;jM6~ zTk=R3RE-$!57n2_JH$sXs2%6RaSX{SI=x*f8b9xWIY7x31RtWmhMXP}ca=-Vm*@vp z`2I`DU*HLT-UYj_J21+317cOwXj}i+)%Qlx3{;Cald^cyeigX*T&f5X;YLv=5mq%O z4OBwO%Q*tcQ{%XTK4%5{2$I4_2T7+(L`fxken}&NMiRmvqA&!D*b?v;X^0nX67WPc zN&jHcS^3<=yYu@nlByI@@93nvpZ-K~uJsZHy0plWF^G}~_z?x4vGf2!_RdmO zaK6v3545P%r;JPiMtAstRX^qG_IwL z)BFnI#{VNH@LXB=M1r#<97DjSCHtsVRy8Vf-#2300!d^ApuUvRWbZ`0rp1|P&7JKWHRD6sla zNABA&bG>i+^NbcpEOoiR^Ai)FTz8qQmEyCT1JpWeb9aYDb2s z9C_Y;9dWRiQr@{ApB+?T*h{N51lQigd0*wps^sg&B_hljM!5*lq9FQ3e;u$5-d`Fk zFT__1?A7bY6~(*7uK;>a9(K!O;`7L25?<0pXkx%O{*kmP&yP5@<4SJnE!L`736Sqt ze~yl}(_LSEO3@0-(#BrxbSPOQ2J)`)CPPDYBY%RtT$Bzmf6$;s6El@wKu;d+fc1XL z96CkC8I_iHgZAlm>AS$bQiPB@#p@^LjUu-DvqOMOKJaX^0I~#a=pn;fUn0Ua!Pwg9 zQWu3~!yUIvlh>8tW3ioi>EphpVtX@?buoBE@&X>6eDmkdyjW<7t_bhh^92#o=6ZjB z(k0?0bT_NccJq&%nr@A;ANXcH*de_ko!iZ00;m>$xn*oQ*qe2is@i>fg1p2$dQMM~ zt0IF4Jze9diT8zaJILu*0OUM0R7^sYmz4ARFFrd(7U}%`c6H#qTS+TZlM_0ha|-J0 z_DeO{D^3w7jAa}gLBrjP<|`vZOJhD`r!m6h-JDK$<;o206KKr#oFBM5l0;h1Lh?s1 zayul*&`|svcz$F^M|I$i`)$WPT`Z`NFWZB?145T=E#gn1AdgV-UaZrdiHE_}H&jqq zv-i1s*pXYuPop1p66(L8Vfj4Nl-xN-H0L}==5YrM{+Qg6}!F}dZT=VM*If0hu zOhrv(C=T7$(EOceEC6nG24VF#gQ$g9Dec+}TF~=AdB2?d*xY9~m)0wR*2b1PP9>g7 zNxn>ylJZML+&4ttV>n+~0*IQZ(DJWJ1ti~{fI=-l&K3~m$xIPvg~O~QN`LuyDS^8+ z4H+Oyga}9>1@-+97TV7K*1DX|5~~dPnF9|Y4K=R`ac#wvS>6nxMBO^CK!Gilmy3V@ zF}NY&+y?7QTO0x0tg-&x#pa}97WP)3rfJIAod8<}tK9}sWi&z`tUx<1hdQqd-H0Ag zm|DI*0u*V`!7nJld6{~sMZ3Y?vJCR1+1Ik4npmOQo&?(eS`%x56zcc`P#>HS;5DCd zG>-pWnT}l^M{Qa;Xb^GQ(pKIQmm*9@oHCS5wfEB7H1&`liH)RP)~OFfwmFuv1L8IQ zbdMygA>PniOfV}Bk3bj1blU)LeKz{kX0v9m$r`!A7R4^uY^IR}S_i8?`}K{#mP`jp(iwk`L=Z2kM%{45U*jzu6xv z+8>L4_vZ}|OK}>*MtdveJ7&tm3--9yNE#pSt-%rW<#%2~&{ay@=5@T+-);3*p?nA-i8-qD#>&P7ERB3!HUGLOG#U#1 zO>FGzY|w&yJb@Y#u=Gl*B2wVeQ2&xl$YuOpoqw?Li~3{Z)mAKP(<);{DWKZ=2q7BGWuC&E*WKC z)ia)X!iR5RL+QG_nQFQ%o?9Eds`@XPCUH9pzfD(jRb{;LXdR6L08sZPYs-JKiu-@) zPPEL1BO9BFmSFGpVToqv*$69onu;n~APmJca(H-|C!Um3TT?|u%?^y6l#N+s)&7(k z!GOw`e7y5b&DPek`!U9NGFD!Y7IrNYLpPbLC_{sSi-n7cG8!3VAyZ5-xAYQoHy-9_ zFo(}ZLrGB)k;rHppl)##6ri-LB#x-oQRB;_!B=Hxy)b>_~n_` zQGhe#B&^U2d`{&4jHfs8*Hs3E`d2qdJrvP6m|He8d3gXa@6nQcu|2nDgVRcpE^8^K zGcSNWv6+{hcmDW|_04UFw_DT70E{#i`}PvX=%`Odk10Xdnhm%bSpcBr+c-sY@TPIB8SbW z5SRY2%FHhR7?a^iIOssqdGdO8=6g8I*YaVttE74}St&kIH-<2L%)c?U+t21z8devI ziNvsODAnFR&DW6f7Tw8MEb$7>6%?>Erz&TWy#JiVQsB~pb_ zpLnBO+N!5LircxHIxWK@a|L3K7qB8&$z>;SOj=Zg!$8fbr+iOo?k+a)HT9HO2vP!K zDXHpes+6+>gIqeq9%!BDko8B9!4uSiv**aDG|FDk(4bRss(> z=`L9w@u+)KojyZuP#tadw&A~7R-L`C@N!>@6+{Prz*$RZIN!x}N09xq#$j&tizz;7KPr-QThUh4S% z8Ojw|2_(9Ccv&R-Soc$o$H|)aBmcTyy*rC+<49G7b2p&_77&u7MGgaS^3qdfk`-EFdWFgASn^9*$dGUF zbLWn|H3D%@r4xJ99)J9){$Y>^l%+q;)H8`aNK94{sI0(G2w}|4&18-+GZGT+$504b zNaKxU8uBmjZ*qChDfrN~Z}1*aXB5{CVxIl2N4Z(0&;DGQjQ$E5 z=(19_TYpuna@mu>)zu?+>nMC5`*G-Dt!CSnBi6r z8j6Ep^z8ON)4six8f&xNvz+9~$M;d&{LRW9p7(Y8?baI?8{)pn=S9*oBEh(~Fh0jD zOx^rdk&oh{zxwgmgK?s7_8ETjY~(myI?5rt-DKNa z*?%-^&Y|dPwJ80|Snc8hUe2&z?jHA4HhTKyR?FXY?1^8PX-2N>(7<&UoN?i^lIX0l z%e^W#@94OZgG1ddecxQ^`6+g%Ls7T&A(PtC3l@$@I7*pWV@TO=C__Wvvdd~5LZIN3 zkBw9R^hpHLQ4lpT5K$1(@Q_iE@ler}P>?Y-XrQB^VJcSm4}ce`{d`NMx85uJn=Us1pdBXaXyWIR5 z{b&ksBY#4d#lR$Q+RgrHn(GPcX~TY-;qh}+gOkSSgN3ucvSu;w-8*pGu&ER8KssN__{-qhh16i_)*M+-hLi zZ(3_NE+%)hwx+gpaELg*w%;0ybO?Vz3hAn4Zmv42KT^2;-pxPaQ3WvobD|4leb&fvqk@ABAb)ZSp_X{TKFA9?eN7JF(itB>IZFC|S?z z5YwcUtAkN~hTy3v?l!N(_9-jyjM7X^mG>x05LpI2K7ZVswx6wW zJdk{d-`xG6+Bk>H6;xhvDb#&b6mwSZ^wPF-^eTVbSKWxWfE^lf$Bu3p=BDJJ{+U;Zxk*+Ae?y7jpoWOM_?C$K+cJEuX@;#PaTN<>=>l?8)wRuQOue{~rH2{x3HKBAr)gZB8|Lb;WE$pw zw9_B?A8ssG(pz)h+n&twDU*M5=e>Pc#)s!gA)Q+D+VkGb?bNBpTlaApQ6naH?Iw94 zau0T2adPaNT~v=UOWcfwLNDs@_3RqCZ-VJOd3o)RkLmZG(DmLm3)A0vqdYux{dj(z zP61vf9O7tsus&)k7DC}hWV;SW8l!OlRe!Znrm@7aI|$*ncRp@+_*nVVKeQr z;Db^>_7YNY#q%10-Orq`&gV_D4gM_rlqaAFdz(togM_ad!~(L7kCjSm!eKJ;rHp40 z?NiHegnSBmQ`D9(kIG5f^V(y=g1PwFMv>>nrHs4Pq;)&_y2jP=e%Jg${Uy&X0Y?kN z{n%OAxarMnPAsfc6i5M$gh6iJnnYIbDte(H*;UT z(x!veW-t^Wv9Of#ptr(2!Du*kooThKdN6$<88VY!LI9*U+m+M zUnAY)!^`bzsXh?W9P+G{cJWfJ{rS5+ui~{;g0|RzHoKdZ$tm)HFPRQb+Ot&#LlJh? z12FPUj<+i&`zl}moqhYD|V&kyTIKZPil z1QS>U4@aka%a|7SxuNV9CsN1J@#^9RxisQ;F9E=uG2J*mTls3#J>iOT1PG!NuZr{P z;1{IfaMLZQxxr2wi}~%g5iX!P1YVygLgg%`k|I6s7KpW2sk>j#*Y%9%KiRkXyvPsO z0NvfRdT%6QqCR(h;YI*K4p68K7K!_EHJTou`rS-a|I`Oc4&^{eXlL+WRv3*lE^mEV zzP!X>tU>>HnHkL&>WckPU>#zmF0=z(?u}FbaZN8t37MD*way7E=w}LNj++ts!j|ZnP&!$djqh+=6SgkjKHZvloF0_|9_Qz7x zA#&tTJC~Ua<_;`L;rP>_$@iN>#$T)k(r3I+zkc;=RqEp3O6xJ7pXqT@`tH-GTGp4lM ztmxLDZujvw(KoRoN8D9U%Jr6bOPxs;y5rOW1HL(q1k9%oi2CR-#qm@Hc4|`oR*a+i z@wI`xvAy3$ossc6;E*j}WFW|##Gvb7`L+!2MM7{wJg!{6nuM1ikATbSkO+}u{SADA zu3O?VI?h>1p7cOeqAYZO7L#n7wYjkTjgUY-;gYWAT^euR*E{dQi`$ML8bNo!_OWXI z@%uFK-tRFfg5P{YZll_y&Be>c3J|nn*ZgZ5nLRB5h3ARp=rLeqsbJB_$l|5BR>A4`K*7P*%o_I>iWp@oo z?o@LNGOyz?H`AMsw3JWp#yR>pEAqXJxex9vy1Z3cIz z@^8~$4T;0V@uN?&BeI(Z=i*N>7ITfQ7kSrRZksH`|5^tHE9SPTybaNx@LwEjP?}6G z{aj9qOX>FU9yNqiYch@0!g7;+=4Y zOcXV*ci%q`lh+2<&*Nw7a=rDnFPRJv&zw20oG*-q_*7mXBp4ZfG)W4 z4(B}F=~X`_?(AWVi`ETVnx<{-_YRMxIXij3nX!%N8%*=GIX)tHIcm?42RFI`WW~T7QyAn z%~M33Sv^cXDl`2Z?CtD;qkoMIH_Cq1hse@k!=`Hh85o(cSmbbz!eKxb1V&aSg1blx z+u*VTnd2cmBe!${>I5EZAwCczb$JkDKcZ+tdh#aho-;(<=ig;ocN%K$(yW#)8fh0% zVU=PVt}sF{gJ`C$rhB;bvA&L5{FO<8&mN>U7%?c(DFOcd&1@d3g0@$TPKsutLiKlH zf<`tHcD1q0Ei=1EnWNUZe??S2UAq8VzT%jwNyo!?xZ<)MVN;9N=LvA?D;XS#t)pHk zdGp>;;r|#W1W1p~;L>km@u$clQmp4yDR%C&9d+gPhF`F8%pg7J8|c$%zd{ZSS^9Fjw+0EZ$^c9oi*)FyCm*lx7AY4r3EkkrZRoa^8kp-0u`3r>pKy4#(S7 z0h3~(&^Y~p4e$32+RyF9TCX`v*!hhe^23Jmqx8Ao;ioF%=h54m*w=JRGDy}FyF0nr z^f!|2hs67{j!iWyU#}NnldBaXVk|91dU{?)si7wNA>nRNyps zw)-e3+!6Ovey03H$s5DJuV3}uuJ}zP?!|-?q2y2OqE)Zn=p4>5(NERO2Nm*)EOxhB z+t1@ojAE`c4)2(CiIKWTP1A&+JP>ZmoqPR#E899ffJ*4pcB@cHZ)xZ$OFZ7_aC@+o zyJ7Y?u~O$49K$T0rxvrw?mnBCca!9=(K!(t;{NdbcqlrTjLv#iZeyh{cG}E9Jz1fa zt107I$Fl{Qh#isg)~4}<_{1cSb7Z(1tlP)nUcLfM*EqP=#;UAwPuk<0lyfdy*UO(& z=IY4~BIH8`hro%!z#_^cf&Z54%Ea=oT+;tJ^ON~MXEW-~YFh^~`~=%__ZP)$4$Yg< z`57MT5x{rW*Y*ZhUYu1UCV4LW@#Yj=82J4s-{fFwLd(hmH#;4T-=lJOXfUogyGM(R z`X)GckEIKe{1U?hK=fXdDD2#q?EI$*ge`G* zBYFJ=J`ew_Lwt@vZ4KlkQtT}ZtWK9(Yj+4VGcz+YGcz+YGsE_`v%A_E z>HV9Lo>Z!mQb$#xJSkOWorpL{R`E5GO;-KXq_+LtuGC9){k7j$p5oID1&-EZM8xMr zvkl<|aLP0|iu4k#V`AI4U2GR$;ki3#S+7jegyMX`{^lQ`wf%H>PybP`SK zDzRsQ3wu=&f%E*8gI*Xzp+vo<#TI{Lpu7b%c-=dQfvrz!*ZtzBIJ2~N;rRi>GU>(G zyG_M! z)<&AlnPy4oU4eG{U6o}tt5u~xC%Mi-iUZ|G+qTAM#mysu1T`8CseS7uEukjIQq$z;NNH;@Qk>P3|?w0r} z*rV0Vmd|8HAwJ-lj}P_;H^6h$KicwW#T0l>$*Z8J0Dx;xrd2uC)q;2=Sn}T8 zav=B|YKxML&0{8CCo?ajTw<;>ERpt-l81j zQIBMUJn?=SOz))XLBu)A*xpL3h7ZC1wYkN<=) z+&{lT`g#lbw0DZj<^*bq} zf5Q78aALlzcjJjsvskf&WwjtIen}R& zI69;CAbeHLNxQMG++r)k(gIVu#rflIl7_MxyZZ^sWvctWln1eTdi5FP{WD6MpPjUxpe$w1NdOezN@@=to9 zs!|#7{$>~rMq*@(VpRLfmp_ahf+Kg6VS0Z#U`HhGRI zg~slY1QMaCx&vQqNeVh-M&2_1h`;*BR3cIcSr8IiXp%T?!>7f?LVq*{ipMjg(>Kee zGIqIbth}TYy|rnU7P&hvmi#Npgx}R6&(7_V$L>i*^!3wI(T+^RK{$YYWn5H9>jp3H zJ9Ev?<2k1<8n71@VZpmAP~PB?i!9{3o~`2?Q*XUF52F2rUi%0)-z$Yd4&wCm%h@E1 z8cF`wBB8BDXf7@BA*qRH>3`Y)9rV7$e358eGv?0rzd5}X( zE0RA3Pq|AD(W}M>dQB3rI#0o~JL|yntgU)`%gK>Dv+i6!KFgZdixHQ~v}tg0wpKE* z74oYKP(r|ls{VdcRLmtyME{Km_g+$(W&ty`z*z?*g=G1g9U#*j8`K)!(1efD3%SBk zBEh3OFVNz%8KeTPgDY7`t{5iq%b+t)PP)&hk;LhjQDt|vna_2bH*V@C0lO0<4-dVK z(hGvwjMz)ZP?aiqeXB7yTCY6PTKk9e2K-t8%=Grk;dKzNz$>Q;+_~@H)iO+87(Y&ZJ$Ga-2M<)8 zo2HGGvetW(Rymiq+nuAE7M#}Re(QclIpC`6G59~lo8LS=G!0eh?Z1NP@5b!hcfDB? z<+%1=3~p_SvJXbfrg#~Q$=i8V;M2n zdVfz~){F~VX?|%t-DUU<1#HzjELpxI9hrbe9Ncp--OnMa_7<-gT%`0#7d7^BwFu2? zT!I`MQafH5QU)d8<5Xv*Z4k{274$K-b8urVWR#~d!7Jk5(!`Qyfg_WGea?rS>&W}uhZa2G`Aza^` zXV{aoSWM;3ahimb=2-`YbCRdup9s4;1N|rUTF(+by{@h|b^&!l&dT`4!0y@Y!NAIw zb=-g3g?D<|D?;9_t)2-2=~T8`@Wje zG7!HE^85yWJL)27#|)qwQ@@k<-!Q+sMnAGX z!Kj#$*kDaKc@y!3M>As_uRuC!$yo`=(O;>YEXU{h6=swPyztvNqLR+3C8=+3JC#(L zb^@2DERtP+A_&Zg$xT{J)?RaqWo*{}vBT4z0{zagYJhw-@pQIAdXeKP-32c!-bd$+ zOz-6*`X>3_K2-N$Kzx^07T^~O!MIwB=eU}yE+6RWc~!_T8{95aH!i_FMvLb?Mum1p z?ZcX*>5+=VuHE6{P0D=YRr-9RyF#!_*!hsV%?>1VqtnB>BP{2E{#&IHFT4TB-jWe7 z8@8P65Z$ONEPiogc0wd2#XiiaEAK!Bz=4?{J#v54RhoogLvHwzb)DK0&=9s{X~Ryj zA8e$Z9BGNl)S=Kl4{O7!5EdQS2|u4^q@5WlCOolKA~}>FXJ^bDO}-DSS=7iNH$)m| z$BLaiheAh?6-heU!ilY$78zj{_P~VceeFf>3EH>hF?iFNuGqJ|odahRXp0%x&H=p( zpFVJtG^y=6K|$;(5O|q>`Zn2M%JOJa)HL~!CF6;eH;F{I@rR@GsNd2Cv%k5TJ(pefhSPMmP(s)87kr9GW5gv1q9)M7tmG6OZE#G^;pgs_^UG!g)@=^D?$PPHR@AM1O zZsKD46Uq`kxRx;RuIW+H61j(-6H2d96P^)kdnALP4VcQ1c!8K=Gx~?GG2OLJn^0MM zHjUp&J>gwo`P+~*8^5oJpJOj;1iteoAE?v^?-{p+Yoc{~r@oRhe6h3rz4(P8^=+aS zK;v#^Xw#(NdMeIs2 zAC^ELo{@$50D3qgo5gYVN57aLxU@m7jxy4SN4_))H89qn*K73K0->4b**K*nP0A-9 z@`Q<#w!q=$`N8GipAD1{Bi6g{zm8!%dY6Hft$Y43&h%Leb$Wv516S~qm-WN4DQxMT zpR~jucuYc(WKzsZo#GF9u~mmH3urv+9Vc)FNAgtZ5P!3Non7X_dPlc4pWQT#C$k z8HFjZ+XIwU`=E)^>W~i)(GL%eN&Q>hc_y@dQzP6J3Wi(Zbu(g{`CO;#ToCzR=X%~3 znC{x@ivskmyF0*S`VYI|^7Yd1r1+5JD=*v8K3skFXT&d^li<~ZIQCP;KDQ_; zsv(cV1T^~1=}nsVPG`%uM;$JJO*5`Tz4h{`km&QJiG!$hFcZomMTymKaDp{nD+V%? zvoJD}bvW|=dF@%nl)v7L>KKo@jOOW6r~WdSpsf(k+s|WkTF<--?Qui=Th7l<99u;Q zkH-R@vRuqi z5D!}W4@{fR!Y(exFEvMv_BEMns#Wr|X^byHuefL)xA6N8&!(6N8Po11CFi+^<{msx zql|=WR^))mU3B&loh|D%qII|AEh5*>u0%*&VhwgNi?YVyB7C$ar|7Zx*^%6l+_8cb z;uFqRNKa^y_IwRWbogRHpx%z&uDTp*7EAveaAhDm z{C5m5!)l+7N~f4&K^q^#Spv4sq|zN$r-?MCH;6u8V$OXO0Ta(*4xv#-$P#0Pvi!oy zwGvCM6Q`x8=?BW`iADsCb?pxT>UkQ6#0?aZJ*@h=ZhkFbBi^|kI^u%pm91w7^u zoodgfR!IO>im&DY@9(;vvYXvrpIY3S#r!_&8RynojjlS^O?-}6g$tsTfA`t5*cduI zuAk@-KaJ=vjyG-BG=sSGjQ!&RY~71{(+mP^xay+{Ld$m_k_mk8+4Iq+_)9PsgAL#J zBmH$+UzZdr;jC4&3m=8X8K~=Dr5p%5J$8ik$9A_|6dA z)Zd9xPJ3kj&2*lDI_W$@df+ue-RUU=#1x&qygE?Iwz%uuzr5ZL1G9P5QZ|{2Y7L!* z=P&B3r>refCKYR@SI>suQ1^hp8DK}Q3&L_^IA~~C;?)&HZ);+C{uYSlQyH8#RWx)M zAb((t_8~`1?lm`PVQ9M3hS0eiP}SOEY#A_}Iw`jCRK+Xe>orQ?*zCQZx{gw;S5Tah zQ=IL~SQFmX_NCxKJ96ZnYM;bc zC={}Fcf{wz+?|2iH^ainEYTHdT0NTuS$G=ldYdk$ic+FS)4gCXx!mzxRTyR6*y@km zGC-i3KqfC;f=8g1kd3>u(xUjymQICMZ49+VM4A6yIT(jsxg$AUHJ=B?*tXkqI7joW zldYjq3FYJPpxE!WLnAVL8f-x?Z0oUhnT#+^M~d`8gMiB|I?SZu zvG-F>^Og+E`kE{+rZk*(T6Tsf^^3w4ty+PB2X?6ml<_kJC2QlCsT(l;C%%;a5d9uN z)&yrnc1_W6zXtkeg9P(vg1CtX9)ganuhT`WgS~y-NiA)e(dG1BK}Axb2jm#Fl`0qomT`GQ;8Yrjle3usX&US5jGtwcD2WUTfT4`wA*L zTh&HUZhV2OPJQ#i!JA>Z;Hp3kIgix)(cu%YhxnV4w;&}UR#KBDb->>rnUtQ24XZCX zFx5gE6a||S`%sD=2CcYVJKCFD@NO(t(xNg$nXA06U9sjqF|kTqN5`D8y@61fMybkf z*02f)&<0v|TDC_}(s!2+khg;4UK^Ad(bGq@*8x^_GU>6P>jXi`#L1~-ve0rsMvbE4 zed%@(Z=Csi$Wr5RO>eD%3sA`#`^DVp!fQ^tOp;#+T*gnS{yoWz2ur0FnJA>Z%~rlNFkI3Pqzi;0XReM0~H2 zHWpK|bfmo=C`$H7oU#y7g1-Uu{{UrtF-CLzy#V#s);v*-@l$V!2$~v9Efr1^()=SJ zuMDva=PxkD(<%lj8*2`>tMhJ%NasMyfgeoy6fht)&b3ZU*W!wqCGwU5Ob$) zawYv%zCS!ji1zKcjZO32f4xz&$GRzz{iWUdS>?F7M_BZ5Lh$W4RlzV-0>_a3ox*LX z*?$7j*^siurq_P1;AVj;a5dp@ktM744e*il3`LuD9A%-!n;I{NQJBKXGeOD2;73F0 zFwjEWNu9uIgajXM6w=bi z-P{u)w>H0z5i#7aJS4)~fKA&&Lw{z_6x6Z?fCKO-@$84OWNq($e0 z^r<0zmM*>S<9MwCt-alV{lY{m&g!B&;=MiFoZJxTCr(9kgnCV8e*+p)`OB8?^$&Xn1sfql6b9K6t@~!G5E_t zA4sDr7RjE!y<(_s!)wiJyujm@9}8{WR4uz#^r)DXv0tEiOm<9b+I)|G%yc{~+nMPi z*&n_yOO=AC7LdikqH!fb2cd8V@#38J3w>m>PjXi`NDaJ~`T#mU5GoMAk7?IX&}I)J z9pK;O%+tbHVO3TU(|^F}`21VaZeiz0tmF>pB~A$?tNf9=ut;<_6$(1V^n4 z!mD4n;Ish7?YfP6ECE15;AJTnDP;*Wgxa(mGx$lexRqGF1vcMThUS61GT+A`A>OxB zsdFAv9j|Y!kEpi^Z=*a=3yI(E54|oriaZE}Zl}xdWzD>H4@B?Zs7y}3ebf_raUJ|A z>&5J)nU(5Ix+d7`w|^duS5(qsnbsbFyc<8c7c5+~3=7ZA6)M~C@@2MouCcrC^Apyt zvb{rNw`Wq8s@^bFPV8_SgYuVVix)s-pv?Z%_3h}X$BE#DaZa&BUV{+Xfk4q<-Oq5z z(^;5Tz5kJwZI)tddFrFMM9( zF$eSV3BNu*y{%!MaV_NK5D$b}BD8vvx9qg}8Z(pl^Sz&LsL;XB6~1%6qh1UZWzHlr zq<5s-ha#)7x8-o3N4T2sY`g{e3&`s)EK+(f)gwyN2@xN`X&1_A-9P9u8kPgFS(x7E_gk?S1&R)>2)OOYXN;4 zuTqYARfN)NMHwXF`lE1$g#xO=980|F{V;4|mi(2wGHh#f$%nvr9GpFism<7Z=KwgZ zUBgw{y?oT{nEEmq@^<1`*)at2Jn&Q_W}m-5?X zubJnN5Y^QG%>+DoE7g92(*I&1x`J>MTeJ}n>k&s>h?6%uA-oz_`cC7oJt zi#W1zT^}+z(mcA`Q{EP*ml)a~?_9Qb!|m%V>CfciEf=h5#xUDTy8*bOY`eG zkJwBW9&KzWvq(U6vKKRRtkO?2yQFi~YgCiE|5`kKo`bQilKeetkppJwB?=_vd(-ZsBq{bMAD)Q=(C~_+Bj;S}}M)xi(3>0f9Dl zGu6cDh?7)yYm7%j1jnxLa6hTie0Z*9p`qczurXm_&Em7MBcxj9j5^}EXHZ9~o~3RT zhsCIwhccjQf-|YN(Uf-LWK^E{$@D~%*=)#dS!UjFGBzY)2eiI=6VkfKJ9fZ}DPZ$n zqVnMnMy4EdqcI1#D`Z8yqzqdsq8{Ph8(U{o@8dPvBdF3SuV1N=&fXVvp`Spqst&U4 z>~CyNm#H7~vH&5TaZqdG+^#lQ!D7tm3r=CKHePmvos_pg_vSM^O7RHSCz$5!>1f!|dT<^HlZi6?^$5Zb|(#Or){gQWKr{J11{j;3t zVW)uV>lSj0PIJIwc>1{--8jy?{ozK_I3`{(yIUQ%!`R+Al(W_PQ`7(Na;h zqub_to`$>m%ESHn=~Jxdhe^P+i_peT-SoIqqHFNOCW?%&geoYCraO<%nwepZ zW5nqyv>v%5prLDz`vf%-dDLR(&epP z+rr3%!Fz$k15A_eD_yPx4Ag- zb4X5%yu16Y5pSjS>s$uEKZU9B_}u%?(nZruyuhCC9ZdP_FGmio#Javm z&i5(5?8ooyroBoCvNj*FpY3Pi6&`!t-^9}7L|(KiwsNyp`Tl*|_Vv{R?E~6fc#CP2 z1u79Pammgw9_O!Bs@y$K^AQ2<*5=E>*;%Rt_^t|_)*_g62llP?t-2cvK6_~IpbsTJ z3xt?1vAif0hqhA7v)-fFun_j5QLxI&>R?$9ToQ)xI8k>GyUUTcv3OM>$G4I zfpAxj&(JOb?TcRJ9{E}fEy6LEfd?SZ3eWAl{ik5UT5c@ciSQs;V3NFQY%XL zy!H(DbQEgBCJNC9m1&${mXMcJEsGyj&jXe=m%vm5fa<%jO`1V-37w84>XUQ5N^%KF zN#v}al)pG7HqtK;I(9;cFP|2?Sva3bW4%U9{6H-P_y>Zo)^n3F$fXxap0b?jC>LiP zz9@?ss7w;5jP@vt3MA{=8+h%K>vTza%+N#IK#OwL#HgHF1wl?{FwJHp8nd0jWS`v5 zTK|dE1QZdwo&ags^hZlooG&ZccYJ5hvfg>tb~04u%9M`pK^Zh^-{PtP7W=CJE1AdJ zwlb>)ib#0@Y}f4jnjVPX9028<%d;o8>)D39r7%kGPI6V-{WJ*<`q!nK@(5B>!oBh5 zN5X^Zb=J?bsIvA7eQhmmi$ny^T7L#UkAnIL+*b(=8e2Wz&sfCF(E377Cv0ywdcG6Nc$U|;`0c5*v~1}#o9vs#h# z+rVSDX(~h;aB^hc!Yqtw>uKz12q3#JZ(azTJppiA?q?|G>uuz|UA06G!4v-Q{)i<9 z_a&tri?oq=x5BLY)Hsid70EhkjmV$&t89oOK@IOfgvoF`&8tCDd8k^+*<71~%^=@d9oSjd>BAloPdhZ*`@= z65AtV*{AJK`)*V%rA>!C2d-}a`Yz4$$p?$t;kLx(3K=IC8L9R22<34#pNsQFBb4*? z$SXSsfZh%InBZgQ0icEO8}HQ5*$0#NiPbER)>eT`Ipk;ubvP)7bRhL)hPh~{&nO+g zNQ(;MXAO}bF+XW1B_I(zq(RGFbdOw-f`&n~c?WsEk~Gn}@Mk{s6=#!uu6${wbsJh1 ze#9dBma2*hR+FX`r9eB`YENnHs$`}~#9+!0oX}fEDyuB>u*p;cs3Qh+4=p495tdXA zRSj)V`irku+dR0Jx(lr}Gj^1osoor;Nmy4!{0sXiQu9j(e`vTD!JyyM&MD;{wuHH6 zpx#wFgn}4R{*0EUcm|R@Xm+d|16?JJ71g2CD4W*c1Qs>AlviO#GRkNZUkJ_QIC?s7GG|l10Jtxutp&b}FpSpzzm#Of=`}Tp@{53vilG zas-zyYlP}p$ph3LZ7Z~1*m;gstZVPi_m#-)Sl&5_Ca5T@$Ewt~lv>NTXG&I8TJK~1 zl!rn?!itEo@F(jya+K&;trFRqG2J~)1P$+~jM^UV7hZ;%>IBzN($5b{dM?Ggr659Y z+vk&S*X~0z5Xi>1m{t?s}=S-tLYW- zDYVzm`Dg9pCm_74%~1hdovYjKnA&YtXa4%Dx>GNfT2=tAndrUYCe#`avFeymYY9@K z-ZN7KJmwwy+&)QNZ%gAa9m&-1f4T*(j$afI_JG!6J34jeW*k*EalaOhe9nA|{luRj z#^Tt**c}1WBaG>>!GV=XVcZeFTP=XYa1pSQLgYk}=(l>}!XL&q$X&{T=|U~RABchU z!LBk2zmyAhqgbgd?A!n$+DMpfwiMUQad1+gre19cFtwXpw)^Ig#1aLiX}x6d5_8%h zYPxn7dHZWZ6v%CN;G3J7;s!L=iAaVT`3j2@GXqI!2L;1aQ_N;!2@|0I>NOh)cd%y* zs`3%S9e}<0o{E_9#8;+U8~r4tEp^Ag{Y5O95(3{wlN+;-YXLTLmc4R1iNb4xbztYW zTiEb6U*cW9Tcn-+vh&oqBI(Prr=PeqWG z_$VzXLV7x< zza}8ViFyu&Mv3NgZF@Gq!u*pxD4A61Ij2ZXIvru$Ti+|(W8XtKpuCQxHny(BMmW^h zNBMpAoclF{`7`YxOu*cT63?KlAh#g3;LL>n`ccHXGYxwKQR3Smt?6lfbPnB|gMWhU zhz9t5om(!xTvRYBSKw+O4DArANqNIeLI#s%KVN`mWkp_#0sg(YNe1!5=8W5vMq`(R z!N7Fn%Zz;BabF+ZYb@djJg;HSRw9T{8=-s;E*`B#Y4b(N@$A4vC3!g1GVea#s;AJ; z>UX+p$mn$S2{BAl1OJCA3d1*bx2@#8#*L~_>&sv+WQEN5j^rUCwZP!~fr6)I7O@XE zJMVj66Ta~Mq0N11wtem*Za^0Y%MDT0V^Eu=Xz>o7*cLu~-zlzX&{!CzER^n%p=T}U zSTp43C8D)Yv(DS?Q?iMSKr1=3`}dgstD5WBwEJ}$pjFY8Mo}s0sC*t(cK`c9q+oRy^j;5>Q|no6GXiFW{RE>ii=lYrKM@CZLP zl*V%^C>?+mDV&1Vv!iy;PtcBZeYgG>Wnh#Y*OeHb9^&ov%`brG-ZUQiNX^>2!ci1-|)&XBCM}iJ#naN0qtWZ`9wHr_jH{t^+WPTBxv9S`2>MtUHPD znkj4P1|eZ6q;I_zA@jJc(d{!e(X9HM?epA){)~oE;bSo0Bre@mCbj)h^dZ2fMBwIl z)AqrE%kI$h794Uswe*ii)ctUFssDPKtOFp?jS+~0YqPa|G3!waZvQ$}woCL>Za(04 z-_w}>nmn@V<6$_6wDx?os>uA>Lp4mlaBmlCy|{hZuDSlPTQX&@?GY!Wwq1eljZaG$Kr?T zb0@ktcCYFzA35M7%(V!R%d3z7ceS$^MUre{jPNJ}&8IBB>Y^4l2YAD^M7AIn=qv+C znCs+#J=Nz=0EHO}V2BH{eQJDq!g_czLkG!5J629dXMXD&$zD0M5==Ww@rJx(~T z#wS9mMS#y!!Pn4oSmxP!?j2cnI6DdSI{(7`PJcgs>8m0%=$CbKy!i4GsJrEHPA5FJ z4ynb8^Fd@8yWb&K?`{4p#^kfk`%Jy9f%4#8lh&#&A8H&Qytd~%+>4QN3<7x8MHG1h z=%GeE#gn`+1P|yiLMH7{rjud!ivL!xw{Wr3uAKel`P-pqS=+ek{_kBiwL-sAwe~<^ z%h{1Zw_4U1=O7d2Fvxr4RwBKRY*3SQ`nr2a1B? z>kdaFlFqx*#d8PwHOPB;fBY=q{X)kzLPxkxsoQC%Y!=h5vt`?PEbRowy6q$oMtQKx!n>a7 z`OY;=t-~qgszV3CE((bR72inT>? z&>+*JFeM~u#zDookPAP=W&Ew7#Eu*JT;0oC_6>n24VHrJTCLgW!7ed*F@P+?-kkk& z5hD)jTXm4{$%ZM1;hZ-ZuapbZX?{sOHZP1>9&viV60Qfe3IruT-eFeT6l3JrHB~9$%Te+wY#_`)p^Nirl$3G(@0W z=4m1#PvoKh?(ciqznem-kZbDx82z^tX1%uS9-q7&Z%MK!yKiQ_riz5^dUNvH_yW!UD|FCI3 z4(!*nFGRhq!9ozTzaJ5bC6`^Y_iROiJ~%QFsWT%PA@rSux!ENhIxspJ93s8V6Jox& zyp0$oq;%*qx{yMklp5_H1qC2B{H}@7PS8$hqV?Yu$UEvERUMOk93bJ3XdmsI=tMr! zj2da*G*88Dyfse6GB${vo@gj4DvWyr*wI`4==7h;jX2OK>^JW>CpGs>D`PY#BL;cX zmmw=fnXfP7A=55cO2^9hxQ%%z68V$1Dp@eFON63+=bgpkpt0Z_|7a`CvZu;cGcYr( zk*mjkL{qY8_v-b5eX-wagYCFfWqPQ~)A!xl#FCht-85n~|FkDs{sE`W{B#o#ko|Bq zV?_ra#YZ#kqn%_rp6v{1k31}{MgP`$Z}=#q9r-8Mvx&KOopL1jwy)6PSNdG3ZpES9 zF=xnLW%*}`a2;!f<2{M<%H8#8Opl%}hA0qx^7q3dB}y0kJR5vTAl$}>s=4Hsc)mB* zo=B|x6IBP&U$Ialw~Jc&k!z@Z)?;zrJ<13tDmx{6`vIfgj%9y3)wUv2lnvE52IhfL zVZXJXE`t202x1!%Kl6G`&DfzuxAbg_xd5_d#CU+x2?)9HV?dh;hbV+1h^ZrHi#CL{ zj!l@JR3KIeAhwtUhf)r0H-!*Qs5(Ey^5o;P;J#T4I12vN_GQ&6Up%qK08ww~_!PX_ z?dJJ3rM4uMu9e#=Cbimps&GNIHG*&CmkF2uBdLO`jN8I_<1g39Wzp(_D6g^eU!C%Twz^ zzJnN6be3+5j-LS*qx27&6xkMX%?p!Q+|}S0;H&r}2h_W?hU_R=$c@QIMI*J}s#%J$ z0N)v9*?q4RA$k0~2P`@QVd@x~hfFM4nDYY5*%l!WG4(4Y;O7@X9*C;JMxt`vSw6#g zG=-yIpeu~&6-7{rYlFX0wi&FX48@Q7sLKrX9~>LWhw1-3 zxhpDSc6?dRfJqRnq$`e2whwf#CmxEp&K;!BJv-jX;|Z-hD?BgwT))z9ke=(!b8F-4 zgbBFjKIGLLhLJsO>pyy@*gTS|Hu4^$qN7u*bdRZ<1YEyvbzW($UnHjaw2m`(3*M{o zcwG;_YIlbZ2Py1a+IJVpJ?wP;!l;46+CTX^UkBwoNNscSG&yYZ7Zl3TdgcIplX4Ii zg4|~@Scx|58qDk_^U~s5gvO#7G#h&A2HOi=$Cb3eQMdf*%*OBN09y1`$Q4>`s?#+S zJ?vf1LlV4~>K#o@7CZcVyP>y-=bh(FHX1;>zBi{zsZ+4TA@RSbb1Ig{(^@=0Wx64b zs?L_D`o<4UyUR5v2OLK-I7!iVIm{)%+$}VFKX;1#NIiRf!NLpiBu$z_8j#IjWPj0C zRfn{&%@FiOtTD$C9lh|+DW09O-|qGR2Q)gm5LkCrsX4v|Bvt4!+g^icg$;P8RmXmG zkw%}dVUBfXxGgI(#Z@MHo?=HS!go$6w9SIj@7~97#)?xzc@1{u$an%@nxy9MIprccQ8s9 z*8_(l`aXSx70(RtG?KJ9rFcX4Y?T>hy<>Kxi`_d3Y>+UaEd6DAqk8>zT6YF>rmzMC z?U`K|u~3+6k^Rnp86z0OI;Y@f$_m$+Nm2~A?~VUlshJ4Wm)2zlFxiF3^ixC+=_(Z+ z2z{W#_U81n-%St~^SZWdY#(;-ExWr;$t7XYjtP^g62xL0AzAJ6U_Q~2ZJLBupVn_g z06d>NDeb6SyE}k8IUk8F|q#2E28BTDn_(+`2_C2rmfFwwDFw zss%p{y20Pu^p?fH3%$L%Lpj564}!V$4Yz+2s%@yv4`-hB@AA_=!av)2l9Yye1a<|G-@i1Uq4U{Nd;9cOIp+)X`S5>#y*S7=D z5iR+S%W4Y8w46%L_NjXV%WNrhjrn9SFDunSdCVw*IV(L;O~osGr>w?V(Y!NJr?(EL zoS7z6^NEjc`ix$`J|(%c`Q3ICU!q=h#Z?tO=E3SwI;eYbgT5ux#L^y8M#yv>4Y(qM z6ABKL2jTFiP2&Fb?)Dj~m#>VE!j6)SSWH7jsJ(lEUFji+`*nSl%LTcI-6&fDOG&_? zRQ0E|$9geXwMmv26sIw6VW>{^{AHgl998DS*5AtF_Ql3~^C&I%R#4<=& zO$T`lwA~^oxs!Hh;1C_5B#ptz*nbnZl;`$op{>)0qs8laXX|Zs8NtW#MR698KfLVO zd_S^E6<2C<3g>Wz3=qD@SpTC@)+PVY{CcNaRq5ENlGYn#>oz!!Nw@mk8I&n>b;*1f;wg_nJzkzdKbU)P>)!dC5OeYL?h z3D+L%O~cT3`#DL6pZ?suKN;K$l`L(O?6bC+gS}?pfgv#QX@7yU%*5`OGYcEE=8(x&Ov3zWTx5q$psYFy1qU$adVas< z7U&uWUf=9XhN}0T=rR7*l`|L2I zd%=^NGI$*#%Zr|6hAoTsMdoiEl{6%NjTEO!n|sQO!*oV|`zqeB-NoY?+o~7ODP!Jt zos=g|wC~>?d{!zLXU@P%%ZQ)V!yT+rtHCOuWp1C%Aj`n2qw8@)!h>{<)=_u|BQ?f7 z64v$QS3!!1=k+)}ov@^V8LoS7?2I%Gx_{1!dEbW8?!#r(A|hOKPSfEJLL-TNyB2(o znqpjSe3cyE?aXePHpZF*F`yB*zh{-0*k3+5(g2|DtCJq9;xBYjPn;1M~q~g+}W%KO$&gw4`@>LUN^I1&q z7{w3Z?4H1F1llBJ_Pa><)hENN2&_;mM=iM5G0h9{A^hLr^qX26*yN8Wvrkms2|Y%v zpFXcX&uF^}0bORg6In zdpZ6r^?B2+<&A;D<_;<^^?LKUD<(oD1T-mVAim3-u&H3kgS-(Z#_#Yh&$_7${X*@| z9g{~~&L86)+ifaiUKpKJGKQBtd@8TQ2x>`I(Fh^Hsun|B{-~m+BxdOrON7txYcCiR zRc6puHAXF4P%gJ;{`M_WOPn;z(j5A|Mok4s%&mM_F8v$$*;J514fiW9LD(3zHMyX& z?B{Z}BWB`cjjl9z$v=3Mmj!j==c{F71q6j1nGJ4pJY_$vvK~;Wc}5^6V=XIxgOv=8!s8GML;5EPIge28Du5Gc)*i62X+NaT>2 zLsb%z!gE>mM}(dz++_ zs`9g1r;}Qozkk{)!}})se*VDzLU;8+{)Fy|$YG=wL??RfdRWnnahJ#R(gpEY@@oL0 z1tQ9b;rk*^26$O2@OU8FwJ@4a+9CVA;sgG_$U00%sNL~kyhgoxBCX{n%qIxXrg0Z6I5l0*8%jM z49~^qovN0Uz_VaGxn#A!6{V++V0E_kbY-;xwnO_G4&TGO$^&fy$MOu1dAg$uevN66`$H#DJUhwfg6w-z z!!ZRnxA=D4+emHw4y>d+xtTDUPLMJKbiC!sXJ2FN8uw|}w51eScpETYBVAOSmhYh6fK92F)h>E1&Fa=I5P{1lOmt z?>cW4-PO%W%Xk9Iu6o0-;&K9QE!-mtNs{diUDQ_c)P#SceX13wFL>c#gNJEd447q_+hu1;~T!H$k3^2YVCR+aeWvq8*tKDz-O zK3zfLRX}Ih()t5BTUBdmBT8fJCFC!Wt?r6u_F22ale9UluzR#wJHfMu*;#kOzwc(* z)O=-;XJP!85Tjz}x-wSl7B@kj@}yK^XKEJm4U147?q&kdWp7=61iAlmV0o4IJS)-I zq}JJ#*bp7a@3c{1&aWAcR~we)M!J|9<^{8!yCK}WT*nJ|aKObAcC7MkN;Y^+V4rqEeA|Nc0iVN+WWWZ&(Z@kf?IbV@PxtA4T9^_H2x%uHT1jG^MbRiv&7Z z(4bxtFSo}vJuIiwp=M3DRUf`0{S#kibM!YKgm!5WFhw-oQn(j(K4jTk!hb?)8u7J3 zn!ds(w5z-ZH5_RrhWl-RuvNWk7N)Cstcb1KlUlvo%*8c#NcGZe&@00<3bo2piT7Fc z;pv~zP0!pleok>6Slf-Nsqdys#n~-ETzZ{nnddBpx&Gr#>-}G>ynHg(Fj(i{XJ8Dn;6%mHs z$HC?0nxthC{GF*C-z6`$hdwUreKds;!|%tjT-g_<15Xk!@|@vyF`dw!;Nfo%S?N)@ zEizyBoBeeTmMUdq{X_y(IQABU0g}6dBk>O#g;*j@RQ3d~Gj4!ufr9C8$eF=~-T$H% z@o!e0CLWz89t%6GHXa`14;7A`?I*zSlf=Nr@{iC@8Vfz^e}1&_{%>v^%fI+_|NQn( z5h?|-Sc}UJ{_e?=B(!b_1JGp4S;?LY(}33O&4yj^c=TqE zjy=`5hP`hp`oZ*~D}E;Bz&b9;abpjkXWww*xSm)f2jbeMT5{O@>~d?=o-f5(b!nw) zewJs-$eubjzqLr2vro=Emg)`|9*?BnzshoyylO;RG?te(&4l+{OzXOiDAmF})nzw) z+I4durupLV+MXy$+9?i3m6B^uchXaLzOpM@#`9)+VBec67Q1_x_KI>}j_h<6Yq08s zTvP`>-1K~ZpE=8}yDgcvdZF)DcXU2;m%HUEqw;RqriuAU{RRetz(ArVQ^-d^g+~oA zipVENf&?xp^CBT^$g`jZhF25>F=8IAi1kPyaFBgv_`}(AIo6YzWc8bpxgBN2ObJM# zK(4;rz%pLGg}W> z4C1z_ktZi(j=+z|!6H0s93<{hDnx^XU_=PP$T+`X2!)zvVrsDhMX8~QSn?#V%2jSz z*zE~EN09Hj>z5Qf_G?&7*U<04q2Jz-I02EtP-REa@qKubOrr=Ipcd4MgFXpzv*^{o z;7#SF2VA4>ynmB}Dxe4jgAs)%#}j~`=_z7cVRR?*UrT5nGNG_H2bS6oHPW`=un=qm zHVkUUUDL^iW3{L{=WrHmJBp4=DuE?XngJNM_%l=!yBgg$pjhy?iE3EF&SxoNjxaVJ zGJ(y+5OZ;I$U-8)uR!FaU;dtva!o6}q?g^&Tm^y5d@jQYQ4v9EE)GUec+tht7GgkJ=OYZ-Z5#X$s9C%}iS1yPKI$iL?E zhP;CwjT8{XzY2qTsv<_^8pS(#`pE6Xlg%E{>kE)jSy1&~Rsr^Z%{DGB+W$VI7}*%;nEsDu z3RNxVs|afyfem8IY6cOTQj@OQ+eLdyc&(t!1`A9*)1aGMn(ue9!cp z-#!z5%DU?8xO<;u%_{uJ#mwFG#Vb2vFgR{+{WSv5*T#Ena`jX#=I%0w%^%4j3A!}X z?OopY_IOJS`l<zZqhrP9#ozah2JAavR`m6Va-&;wylV#Dgk7jNe*1E( z&cfRf>i1tMIJFMW6%XD``udQgP}%ZQF^xVJ7`jJDiS>*5${!&LiJnke$uury|&S3#@Ah7PwE#C zV8C=>pn-MVQ0a-aW#n_|mrqg$xtIMdk0!;NCnKfG)}fD83nPw$TlBv!r4?vFV~;7U zhz!862rz~xN&WwceE7c@l6TPjf@X)QGlExsrYpUwwCWGnhu=|m5i`c_qrSX!qy{tc z?CH7qlH91qgkTO=e$M1x!CafKvqzaRBJPA>0bbkyK*nzouPnKi+HtlZbgVl5rSFnO zGd#I(S(JRTD<`Ae-}=gNzI`Waq+O{#-F~;D*w)z7%(Eq?BATK1&`tK&?ms%vJQKLm zdDhFcX;+dvOTBF{O^*}Bq}?ZyskCygQ)G+buFsCYoc7!1mVX3me)Gr8oMgJ83dYew zOnyiGq=5q()_XKL^Zg@>7UDuvQdBdv7V+iU`k%zipB4B*j(eR0PZtKQ@#9}6zH@8u zJkR1zhVJtr?{>f^L$Sa8IjnN=-xsg52}fJO)qqf=TVQlS^Kc79H9>!)gB%;Kn4R0v z_&+hlw7~or9&JTj4TSiqY388!(=@bqtk*UYZ`8c!?{%(k=AUm|I zy5daOaOxW8Qcjz`!~clh9D3dD)Xfl#vI3}Cewdy6{d;h|7}-{QNm2eO<8!z%yz=S_ z^*_QdKlf?imuHuM$Kq@O?RvMKfakrczg%$t5=Q;ARVP4owxS}MpohAJ_)XW5#RK1g z*#9*4kFJ5;Bu4nhkNK(p9QFb==O29$hxg){^gm?LZydWE32sU*%O)p&5m>b6Qjz>= z+lw700TIv-AKd@f%D?OXpFo@~5Qad+KaIvY0Mx{Mo8=X>xwy;%l`ptR650@L0+nX(06uZ_2qZ2K{%r{}cG=Gy`il{+}`a zUrqQ|^i|ai?3#Um)~mhCsQe?#vA74sEUW@{-R1g}?o;ABmFe)D%T)uv5Fin92Eri? z8&9*>3@0Wo_4NHvz(rl&p2me!^lXK_g;%V6-q}S-TbNJ%;eIim-BEurj+&NoRIWXg@?=fbcv(%#L(bo3t7g+PIKJB)!y3*{lTb}e~ z%U*lgKg)ev>0buE*F0|5cFfGgz&x`!S)8n?$xvo@6cNtI zgNDVF1tsjC7;KoniMlnS;{xo0M?WafrM<62&i9QO*mqrSuTp-jxjQwfT(U-~_9@M6 zOrD5s9a!PP+6y7TLp=;8sK6Mk=y0czY@aC<3Mjfo%-8dp6VnnH3>Hx*We5sgIQEq{FF00FlIYG2?ILyoPm%EZ*zNBOjdnWO07z`x835z@fqHr|cI zdXk@jBAavIlU(05&!xo4!{6ab-Pu<^%mFV4H@v634gn(4-GqDa{77+$9Gck}Y|%)a zIV;7P!-81p%o{0NxoC_~iQMqUvoos7(r6M;ha$&DIz4g@l<{yM;9B9QPD`4=)P6@B zPjZ*o3M7X+;V|>3S1pR7N)C4TLjWp<92~zkVwUu994I3IlB6aBPqyb`7EG`JH9=<1 z`{%dux}LC0F#)MQUI^qcTd1NV-okHVpa>~|H-NWo^cn|?Ed6OQk_i9p6ybM12e1@v zG~%B#JV?y20yQ4OUVbo8A?#CqNI-G@=!-XZB@4=|Q;wIhL~+uuK@k$h48y6g49qaM z4_;M{{H>|5^BAF`>4{a01XT zHO`S6K{RE@K7>YQ7k`1(I}w>sq+>+w9icV8V5uzU`ms*RB2GQM(H#O4+!~&trAH#110J=kGQ)_y) z=)o6pD3VMkR4Qs!wDqVPxPunO;o64g29FsxJGBMg2QE@nzB?k$F(RnzNhSAtuZs`h zV?gl#+UEJ*mj&q*2|&I(@Yl(N%cAs|rkP<*UFu!D(7kerBD#G8U8mxSRLLS6$CWrn zzdN|C{KGhVl`IWLJHrh(3Ftqx1k#8KQFZeYVv1#Sa6!oYs>;SAPlU#^4yMe=($4tAvt8x@}j(}f#QBNMvOVKuIFjdClGk>$jqm+A0jd3!@PPbye%^a!GdgL z<68G@jLkk9!_@XMcyS-j!wZaTjU0y-(faQ0S$y%wGgiL5YGyJ!>>sKQ(N07zuOiwYGf4S zvTnM>Bbl-!K^ro%G`dL=(x8v=jjL-HC>ps98Ofw)2~oOw5pravO4nD*(8RK2RyP&S zkEn7mf}`ODk5wQxOtp(F*Zdg5>L{RBBf=Ix!zrHDF6fUZSJd z62;)A5d+Ds8guF~kSyYlV==Ig+kJlqh*lk!;qJ2HHQSk+CCJemC?b3N06atHTdMnXvXPr$?y8EA3CjK0k?!CKZxQWD zl6k?XsO?K~{ddD;H%H(q;3JJlrKm8B$}pJgLTO?*fGG)h=5MR7 zc7-a1aRK~`Z38)dFXu$&YUlFAvAJ6rhYL$o9+x{S5dl^`KiXL3Q}(i(7UIpIfJH8~ z{dXuH;b;~wIw+CCRE0mvS2>fMGm>YCp=Ke8kSgY3>b%`N< zW+4{o^j|b#BHAIw;#-HE%24Tki4nW)Js-^?s#Ce`#-ivNX}o05v$U?n7xFfWPGz4- zhZXYXF-NarLMOE?qS&h;342sdsuW_oX^KL-^?+!H@GfQb!$pivgF`R7UG@D(3Ky|< ztHA;F3LT!kes=9e4Kr|Za2@r*S?gahm7-apAvv;%AE*@G<58`pieAsv|3_z_mjsN!o-c;Vze^XcVD z=lt&J8x>>Q@<^fyXn^?*W6k(Z+0yx`A&Z(#mg_QpbRg!P%v)14RBSb-y}kREMWK-& z-x1H$oQnv3Z=eB)D#F1AZ5}WJ4SVEvQ^`-#$u-)gMLC8CcmmK0w;8N;-h+T|tw9wO zxvSsiuEjVOgvQ!NyxZ}o8rYR)rOP&OH^U_O26sT$9I*44gFBt(_Y@#n&Q5uvLbd#Y5=^=xD3PfKb zW+GRMlc_Rel*}w>IBaonEb^v|hr$hnQC%-x_N<69wEh?%h zC@@I|(4d;hvHpE<0R6e3A%T-1seD30yrx)KFzW+X@a+etz5_KvDyIv04Qv2?eh2rm^%bgQ#f1 zDZkfD6TCy{6{B3IA}6A(=Z!5g4Yo8~lL#Bck9IQ%wz4=&m^;Y(;kS!iZlsw4nS?tB zwz#Bf=t4`vo#~`8SPx9HWsteWY6+raDuB*@Q5j2HN9O8WwK9+9+S%XVr@o6XbfK)^ z6{~i%UaayXNLGHRGPga||L(F&F&#hC3dHg(&SVQ4*u%?DB|OCaDl+W~AwRCC9e^Uf6hwbFq_dB5tAY_7He9jPvFfd+a@GgiYC(W z`4cjTi12c7Ll_O|_1l5)We4E?iN-yb3#67eA-DhB`%dzPSM&>F56C}u^gGVw4yiqS zlm99(&2&t(D7Q-xW`RcR5wsx(i;$PVHV$)C`HEUQpg87yjQUXK4zcVA^>F2|_0X8?(ff{m@yYTI zqi9p`iulL3K7X4qPN(J-!~u0p7UwrK4ruo_UbhkGD@{AL!dDVjF(b0IOM)f;Gj4#) zGo{Ao6Yq^O@ju=&vlx}Cg@AL{2KiXXa&!H#la2s-KNy(^bFUEy){?r`i0&49{)C=L zrT6xKz2jW82W>)k-c=i+Ueu@d^LVlNh9>r7+97}qV+G#_;yzsf9deo$C&~iS_Koec z=HGbNseYr$U}^5j82D*_O#03of~Iqbs<@yqWr#@h?h)(s>>0ͺlW9-}!F6j-e- zgCjPvP>)SUQBO}!Es^84tFJBUQIj1maTJPEku{yUt<9-NlMq)mmSRXRe{?A&&Y8_t zx-VBW4xd(W)I@JL>l;ED7wASE7D-ijt4kJZkwoOvnyZVrj+u05K3}*wdyNAr(0JeR zzx7r`>K52Gozv+i;7mHr|`7M-;}dpD#!PwsCIUdA9un@aM5z}e0lab-Lj|eZLO3N ziDA&<+TuLmTpq1@DT@J~ubs#dt3@-68HFppn=lvp+`gng&UTdjJPHW*r0g_gn!lZf z2q|IYjgUjn2{R$6{q!&OjglA{CW=sm+Q0LrS89DP$Y1gOY$PyU%>eMv2Oq}Zh|CGY z$*@)H{7yi-Pu|*`ak&NQr()&&>?I^x=a!a2vgIeVpFkw5F&w z%zk?2xhr)p?k6#n0oH+hn(&Wq}AmMI4oRVy^bwG#_eW`0qZ(&VV zmLm}67>n{8j1sIwlRuxLt>1}4&A>s^fgKJ*I*w=wf|_EHe||r6Td&EMxN-3ZJQ_IH zW2Bhw%q3fT* z!oz7zVyUKktcru+{AEbnWEzQAq*w1+YTe5+HJG*DzQpW4t$f~lp*mRbwe<)|=C4*? z4097M#~c|wrmF6&U~W47;t~Slm_vm)J8q54>qe1842tp2sFq=74>A>0c=DA}?ye~! zc70&-+|IQaS>9A`WMHDGPINWo3&JH6j+~jW;N^aNl7Y# zhB+&BR#zYH4?m7kF(nQx)@>A81H6)kIMiWSsO9e6hy5LgNVm=%PIo1D_AZ@Gm<~bZ zMdytzD(VTBPVRn4(v*fz3qw)$%Xnu4rOi9e4LeJ^De3VeEULA+I^qlEtgM?jwb+Q9 zEcj2wL#k;@PlsWf<-U6RJ|KcLkMwV$1Z*<<5-v+jQhB9l1My@jg__Sg>>@g?<@5HB z_J7$CtAOXw52|W%=mW{=WSM8u5vPQF8+MY237$1ZVM0;-8pxC)#^hB*Ylcvy2uK7; zi7CmAA(N||*4A1mlBc^rAKg0B(o~CKeDMX4OKK&x$AUa*3bmiVh&v0)Q+OmnT}CPj z5eObb+Uf?QDBsMbZDUQ|_!638AtYI7t~nq1b)O@knRGjRh#jM34DPhzH3SRln_SPw zEU#?ZrzTiLiK`~bw!YfpuMnXjJ6;S~&kg&T; z`%ESg`8_ncQI~_`*^+W?ED3ZN*4SH&xDuHPo0!OJ3kb$8Z;7UCtfUYS5#|>P6AD7A zwd;DPy^zkmkFz)n@5>BI13g#j>`xAahA{Y}y4KL6`p7MoGNY>cGHQ*$i;ZS(Af2AR zbk$bt-BT{YE9y)KUYb(umXty!x1?F0tGAl0=mKg>(N&+VdiEDVBV)NRrz;73+Wfw{ zEqsF{ke|2)grT;IjtSDH6>Vuca(Y^=&7YSP_Mx*UY6`C(Yqw@8hkQfb(@E$XH4738 zouDa~bGnXRV~A(!TTZ*@yjZ+J9E@~*&~b#QeR>= zH{t0^`t_*l={H4j>4~33>aG`7)>9;E^$QJzpltbcPRCyWoc^Raqeuv?GmQ==lSD;~9L z;K70>d)J#vS#leVmEMu$wFHg<8KRP+CL6EVHW3Tp_TYJ1l zIO!w~lq(ENjHE9OJyzg`7F!k+zNnoBYO-gdFIFWnic zoOH?v$DG*OsD&}uXi6&Q{$iiYggV)t&dGYWtC8etWf&7$3(`mU>YPu9v z;U)=ki`S|+5U2zV*OMZ@y#r8Y#@szL*f&#@PzPf9ydA;ho)Q48M*ox z?TeV7nI+xg?^(cv$3(GY|96s;G}{D5!7>R9Y0KKJ+YN|XpZ!C05rnXT;V_}};oYdE1WeM0-M^Qp+^lQR2 zByPm%&1oifm5(_LDxa^at3>~G^#FpM&B)3`qeU{>m8Ql!4ky;ADDq09<4{y;60uwK zLCfh_EfC*SpW>)SXT`adDHc3%jQrwC&8JxD1x9g|$?>nN?%fK7kZ@0;l;jQ?i;GYR;@pR2 zg&u8o4Syb<Ow6u761FF}<8oU{uY-!L$L?|yagN$96 zCv~0fv6>cv{jS;aMYtwY;PP4YQpbhvhcKsL$IO(u9*TJ*#A5D_)C;RSw2+$R?j)I! zp}AE~h~muC$aPXkcN#_%nM}R2)3IJHcVQ;XdpDgIH*D$zojLk$`_FFNwhY8*|38N-u38wD}Agd(+ZMc3NchB=6- z6?4#D*FF260VFHq{IyO4Tx-y**%kzBg${{(PVn)0CTMNPUi`&mv{mP9sW@lx zsB2!DI>DZzog!Cw%1uC7&&{ol1*$lQ5ci0zw=7TGT^102jT2;OyH+c6^M_R@Uxk~{ z$P06$5q=+fwLEA(M%I~-B&@zeNb6xCM22$mt0NJV(O}ZM+tUAz##F1#65!NCtF%(+ z@(-4*mEbW1zQ(Kb(c{N5by!SCwYu0kv@WRKwwDE0B?GIpDSxJ`2?=R^;&Mi2biTcl zR0$dinW9d{5wBS1b`J-Jfwp^1Wx))EX@%aLvC?abq|pJ6ly`NmU!?f7F!7G^SgqXq zy}i{~N7c*0OKFJ@Y0~Ykf3L2qNao_#zsZ6wiqb93vJ;$N$w|BOaRd_4U``W6$hrjF z-N)!Ys+DC=kt!>m#gSZi2RxNl!AY15L!mzuz-SDDJ#*PLhJSe>n-|4S%|6F2TolT1 zj7C`d`Wdo8;B>qG9k1iz^ESD(Km6nwQPW+Lrp|CQp8xs0+SBPi??ZCsA8s*>AzDkh zrNZu`wLUe|oe0mJ^w8>&G0Ln_X&aSY>d$CQFN+wRR8Gcw6A+`YwMURca#~KIK65BC ze71CUVej0?I0ei+Ji5)h(@waYVLneva*DfxvgH&sjJ+%`;%h+SEXTds4Owy(6)Ff_ z*?Ly#SoWmHHX>nrE}7D-lG-~i!K>R!ma%zmCx#B-lxgw{@q?%)U!Scta+D>Z%-mY=9TJC)j-7LbqKE`Ag_ zaKe}qa(8qbBtoYKuUw-8Jh0-7J#$E6vGhjvh#mD5?i3A{nhP7fQA(_dz*}-`-_1A- zVOYF^Yq1U{7?Km?+(RBUIcyXZxU8 z^pfhCLY4c#@Uu#|@mNYPZS{LfZo_bQ_H8wCk1OZ`%P_n!%EH^pql!>|qp@tINWoE|HoMEH z-GBQ}#^Ir8q$PGZ?d)dy+$rfeYxD$@b=Cy>yz&C~CwLb(JB3W9=bir@x{FDst6{)+ zo-9Nz?_oOiwP0p(?k%lfvOQcPBNd0gtQ{K~wxb7@{^B2#B8r`A;9l*>9Xdofp*rp(H#(XI1!12OJal%i+a&qv(f=ZiqI}J<=4LR!R#pUTK z#xo5Jl({orJx@o?UB%l3leOR7t{{tFeV`!64E>)!u9`bXS-Cv3QFnPk-<5&4>T}j5 zX_a_b9wi7V29h>4p*qFm&!fFF{0_^|h_Zjla)Lp@kp=VMKd9~J_IF{iI)Nfcq4=Xl z)qe{G#5incPRsK@isjvT?JX6w@5n=aq48$&z}E0d`i{L7M`LtSo-%$!DT^)ch{>F&j!C=~DrQ<(dMefN**jNj-2y-AdGl)S8 z67ej~S~pI-yyE(Lc|^r|d<8O6Op=q&)dz#2yJRwZ6V+x00Kt!rRmcuCDZ5TL#H$7< zAJp4>`$e(JM}wp=W$5_j>d2t`5^SUOO@9n%)u$!YoNq4e@Ccj7#TdFG1z|*{7nSzD z=a13h*_7VE$2~~7eCp_1sVHa-Q@#Jn=+nC|rRbtUnNBP_FfU9cbODf)!DQFQ6S#-9 za#hW%${PU#dof2kyQr6^tG2)>+MX}uK1yHNhfjg@5M;)&UT7k1p#mHiE$ zFN6YbVfZO55~ySW1p`JWQdCrgZ;0V*dlA?X(aVXL%b`V&>_++{o$qGniWIN(SnptmuEw@FF)-R%5D2zFl}VZ z!e>xMnnV$NJxjHMwWQP&LwhGFNyWhD!AEx&S$Rf=TC8WkqT9(`Ao3Mm+#&w>p;1A= zQ329f$QYCOzI)a|4F<`Jh2H>dFl{`$%}5r{Y@2_FJ*2WzS()e3s+qtFp4HF*ax+j` zH@4XM)?Tk*^5f@saARzWk}dB0HJJIjXVvMf0Rv8|@8`hG7{JOH)2Q|cf6$XPa|h=M zU?>M9-+jqbH+8X&Q&_FVaqE?B#h;$wMXh}r_USq|-Be!1{f!-$NTvzY#nX-7hu(Y<-lWkhQts;b! znq=|FEzi$w`&+kzv?CYn&Vaif1-s1N0K@X`a9|74>|CLr35vzuQ6!N^IzhB&*J)r<%|E=*8S0u<5|=n09*^P) z5>utFuJH2>#FsQN5Wd%wmhaF9cWr&B(z4SQkMbA7@qlQ_uFCWH!>3)#)gtUm<;uKG zH=3BtJPeA6I3c?*l_4}l6Sc73_P)bx7PN(ap@y>bkC1@h86p25+sDE&g!jGYNUL~a zXZBK0!^Mk`KDh-(VbM zOwnO}2lUR=V+DHe;Al>YeXlwJeege*fbb#KS!m#G+nv1JLYEGF-`-7@55xgj-xQx` zY7l8Y0P2K4?|*k0)_f$qVfDtu2IkLD<4GbHCb0!ub|@SFz2Im>KWWb(>-!X$FycwhOgix(A}nE&6J? zwi)mj8qH|TNRC!Iki4Gh`;Rh}QQLvtViKFj{(f|T=82^rKk7>-c%u9PM(72l>j$zHjWd>~8Ys49vNB*+rh?EJjb~kRpC!UG4ME zHPUuS>Fdh@B!??^oKVxOCbv_;+}HK2=n9X5cA$t~kAV;zk@KFL^?r={xkrrG$IKfJ z`l-u8Fph7aLpQnbUA(|*@JT}XQ(z@ZmFA1OC92QsIOxm$F@%{#FziMs|Eq$!df_EQ zL=Me@nYK86jAf>FW;*>71u^GdaBV9sR5lB>@jH~*60TyN_X|i+0*)ZE_C(ydCSE^p zPI8_}0ExiueL*Ew?y`LaSE}Jsqq~Zl4HE_T#CTH5=|VCwF|mPt62qA*CrUsABM2m# zi*5W1@qYid6D<~$#mJrCulKBggSA~EQabP~KlveW8_rZ-l3kzZzZMfsk(p=j_4@oX zJ&?iCW*kB}^z-{-by3`k3*S1Tl_+FOsT6mLmnT#N&pYy#ohJaAEBS>A20f`Kmr;?Z zd)N5GI|uVA-JuCm1PD7{NnXP(c&$XD(TmR9jpzGUe`Z+HJ3FCl2L(Bb%F+7-JxgT5 zrC3v|f~3_C29%lqzPdYe%(_hXJ4XTrc%3*?o|e~b@i^l=+BSVHrsKow0bTh|b!A$= zDU){yen+B_h=fTGsu+;khpAalXf;`H95=(mW8S08__G%m-+Jrp9-X9O;P&ppY3k-4 z%6E5HTkn)D$~Ba{?Pm1W@Vi@96wjYAyDRmb9ZjHw%^qK@#sLP1{+#ahG;{`^+tf@> zkQS4JkfoG{5eh?GHBCrtwXOvn@Z!+ zsf$5`x*HGXRd(u>3tNDBKk|bKIC-&-0>J0Z8}50*wMfrlp=Q?IzoeO;{Z5#x5FRQ; zTvzMW!jJ}dA||%tTY99i@LMeCb#(zX_AnhC;?8b;>rjGoy|v=nXuo+&Xt|i398Bq( zp*-%0D{*Il-&aftHv8eW{H~XdE_8l`Kv+Bmt5(6Tv(SkbeVpWm9Qk=|JtgIM!FV?L zCe~WmJ=-Tx9c5C_0tr8SIW-`O3B#v&#hRiaC#O;}8cInf_bT#NsAp4xf73)XDL|bt zgrW6`mVwD*ya}FUS_3;c0`I8h285~L*sFoCO1?I|k0l@-k;8Z?5kFiBo-n!87OHrW;JqTEspD3L9)%z!s7!v5a#X%KA6?% z&{O<)xoyMVDu(l*HXQJH$@5xSWVs$u^}l24{0I`ycYK~BiZt%YxiAO*+S7g7-S0tW zC*wAiAt}qrY?YpIlS}FZZMn9OAe{lskvKF-9I|#1_X|ecY?iHICU5TSs=7gu#3HLf-mMvhq=r|G zI=bNfEjb1^Pue69MPbfhGohoz6Xn7sP|)F_piieA=}?|=L6w%QQV>si^Q8zE;+c~x ziy$+(*?`O%B}}9W>h9qeT1NfNo?aK$6cd(Os+;T313>x?2FJS;MDPOwDg)`cH;Zq3 zc>upDpNICeeT6Eb*^MJE@7rKuoJVw0P6{6FDF>>D<{_~aZl;Y6RE^j$_bFz{?V?DD zqwa)J=@A{w{DQ)rf=G=95g~bcuV*S{LY9h_Vh@$5m=A;)E6G4$r_eaGf@DUwr(xAv zb8~oc`i%BkM^FNI?Dxd0-?m!$@{$Levgw+hx zkdmxIp&S~)53X^!1AWt{b>Z+KE%1@629$&R(WrM!pIHNY3#8PUJ)L3mG4Guyb}s)w zXe@NRo>T~bhyfAhpf+}mH$u(N2-m>zsE^zErV+;OGHOfk(eBrn&0t#ynHh$Q3yf9O zur&d20_#On?P;1l!!LOeU1J}g>6g1~AjzCE|JEcwAjtLcoKQ$NxNo(@M(i5=A$RuI z((3?VLblF}G*ZMf!rMoxv~sqQ{ZFkS^3C@(EtTr{2bXX3H#Kb^~YGpW&n2qC}!{m_N5lE;%N00EHwFxo#)nG^Wup z`;E0DB#iSaj>yWjzaKtVZfoE%#NR56k*Zs2zldt+rz}TW+;^^W5nJ87geNfh?42%g z*~h4T-5`=S#{&>@Kc1k7JMoAwW5n9*F@QCvK)p z85!opVLLqsy;hr@pc!52s&C0D-bO!$wF{-6K8s_g+|ih^ns(fbf`N55SI3Mi9%d9Q zCPNc84^5eJDENlMa9~+qpx)KB*^CVyS>8k4hp6q|7qdhJ)a)1`8frI|YfLAr;+$y(DArG=i&d?*BdTJK@xiwjmwWaF%QV==gtEUp<8dd}8K0>?dWUU; z(q|Rs6g=QdBR;JZV4GzG5+MXgQ4=}%(;@yI&KC10HfF=Nhz3V(L=<7IRoARZ`*e5r zm?Nd)=Z2nZy2O~nPF4RtLs00=7s&I;7B& z6(Q+-C4%#Z4;nixf%hDV6lWNxKJz)SOn_yJA2_|1h9ceMP1lp-h~EZZ@c?aOv)B%j zV(RC|%ke3x|G*mG-f|Tt1c!kcr~bXQH{1t3s`>DUteObEwm*~KT?8hA5kevA@7u~AzXjCfQV@#>m_&Gh~^takwQrXjRe3uiM0FZT)7w|$I1 z3ewF;QQ*v3cJ4l4 zY9=wmM@KbkmJ^$+%gdXysi~V4IXJp3yM0I6GO3iNDVX_U-3{#s<0lJp;9Hz8Mo z@myLvppW>y;b3qvIQQwO#JqG!6_HW;$7><<9Z%Y9^h^F`8=jIpcGdY091l{fvF8I^ zvf;bBiYF1Z0u9i`<7mWDCM)$Oe4}-;xikp`na&t2pOtvyH}L};s&C0@wtHj#-dJi> z64|)!%HJ~&$-}#~{0VVMyxVxvk908Hzd|VQ$VUFAp!}Z@-v%%o~e)<%tm;4fs6~5{Jim_eI04N3z)!qV5#)@bFDI5Eh%f)2^~_VL?#}1(i6^!4Tt%-lz1e zerW)8*4Yc;ZX~9_ZDGvA_ah0bfDm-L6#KSd%Q=T;J4YQ>RD$T&S!u122N&$ot3$O4 zKKZG~Nu;vjhwlY9G!cT$w4==JpjJW51OkmTwnZQJIwZTGZo z+qP}n{MysDZDVKutNrixsxm4f5hp7uqAJgM-t9wPOw-2r*k?251#ABun9+Vrch>_< z2S-I&wmv5AfO#H=?FO7Cy)2)Ftd)_n7rlRSnSVNegZA)Q2ci8iZXpwB3!I2>#P_05KQEC)SdS~JD?Q8BK(O0at~OL5 zZEyQ}u8|b6q<$)sJSa}hM8N}0=t-lt)V_(n2Uvw0CzIMQMy&K~+5})o;^^ZGxLn0# zU=Z=}Ho7`T%Q8Q2A&ig(i#wFJm`}&t6R8#AJjC{pv7C-_U0|SoT`lZOu;Zmxd-}Yr z8QEOfrNmlkVQRS(;XyW~{a5_t^GQ7LD~%tzoC zOfoYS3Ei_`I(qjz2k_2MEm-4Y@*--{t4AdULB@dmLYu8?elk=638xbKDH;#NWO|E9 zfMO)f-!8Z2exWI#tZ3N0Eem=~EYyXQLB!hKR#BY4oBSYo{rhQl`*y%A;KjiB1xg(0 zit=W@4}NpgqKA>%sZW460?QsBI};k+^t-(ajCh=I3PhHoX< zsBwte8(gO!D43;PERXih@Y#oBdHeE>_(|?Q&>WPO$s#>K0KU7VYaj!0OJH3I(lru8 z^EsfRrTz=p#qnA*q)*P6oj$8^UZ$~H-vKz!@Ox&O{1Xy%2WP2?R*|3o``b!U0C8^+ zig6vQ$7-yAAL2umdkuVI8Tn7mJLM_OK(|{D2q$V6k7UTwTxwirXUIW^ZgJHk!wZr}How7l{w_Cb;tfe?RXzDaj85)gR4t6k z<(4pWpM1Zf{Ik2bcluo_{IPG2E`#>&%VYu&-4NEr&JGN(yLwaELM&BRU0F}&5D}%# z0-TW=;3B5tKRt^{6(<<;*#AHPq0V7zk<(?JTx8W(yG85V@UbR6-EYH2X3f(Vc%oi+ z*p+tGc@^&gX)6hpka_Rt_VKu5ukm{=%G4N;a?P^(b{4qFn9=#7?NGn?q0OeI+B21@ z>X%~9;P@AZcWQSJMM1qdJ={xv{g$F<$pe`{^snQA6~9ZE_jdzX)b(mJqsyn6-2ZhuD=PRXK;k#|P$8+Ggk zvU|wO$lE18g1NrAG}x$|3XTcd+pF0A{`1?>5ry`5q3yzVE$F|5OnydC8yCpT{GH=# zdbPu^X(o=NU1QL#|Xy^!8>H2b5>F;zx zzx-=H1VOT{i#B-nn)t*kDH5#Lqawz}giFp{a@3;}J+!0tu;r#TS*wEdLKM$u-ruOc2Kur{iCf_Y!kcJBUi{j={E%4DBt~Zd z_f(J`2$9!3u#s)Uwlmv3$)=yYe9eR~gw99+)hz*g83zy?ZSTiL^=las+~LV^En}TK z6dC+;ZpH9VIJIwis3VM1TirQq4C;*C$yil|YI{{&VFJLJh-~iH<#w#tCfp4>l2k;RaI98BrGfj$ z@5=4R=So5qD=Q--Astsw&w%Kq`1yG-v6&e)wRey&(4+lJA#~KMrR~KV zd6@PYK@-jCFS4ohRjp7$0)OY{bcU&IDzDNJ{z#76%>)K7c%G*xpiAI@a>tsp2Vfq@`PO@l zu^e`tq&U>v*X!XPSLu1i9Q6(fl%-2V`jA}Vyb~9a(ede-uzT~FK4%;nS%7_5b;}NX zA$sWn4@ElDP9;ot=@w1opU<+GJi8oaRX1Fmq=}8zm}%oUh*x!$g~8aaH#6*TH(IZy zG>Pa#WuEEQ+NC;W_xX=0#)OfP4vWywPTosON!}9jW}DLzoL=<%7)SG_NgVb($OfpB zoQ-q%QUj2O_e|;;(We?b%TD$&TTMI8Elpj}(b&9~fdYE%lmc##nwO`X<%AUULkqD{ zdOg2&d3lO}>Ae@bD9KY2QRO0H2Ha)?+e~o#nk~sejwU1_2RS-dYAiMj`#^WUm}ZVO*holy z%XV5{V|;_|KGv~u4xDusVsRtlU|=5~Xd)Oq7#9edzwvBH$0hGMiQTK=F*Ym9Hhyn%e_uP^FwL$`aWW4Hw>+GttZIv342n^`DKucS!5q(beA1+Hll zNTjjyYkF$k_dzimB9^T>q<@sys64O|l>2i93_pl32Ic&I?i_4s=~5#=i^NYf04XoO zi_kfe7Sd4XQd3BwjIq=~69xR@6Sz&G_*Tvbl#3(b(X1D2?n%V|AYsmq`R?h ze&u{T&DaB&!}7ETg_Xm6pG%;}`}NBbgqS#zI55OO=5iF%IGSlxG-z}fe@2Gs=-o-q z2-#lGvx}pHVx8itiBix{VezajPM{NX%Bz`Pzx@=^hYWe%6cej$U<8AM;+&ggWY zc>hrJz{4FCb{6g*cePOIBb6+yKyQ^Ep7&YXZEJj4`Id5^Bh^;n8jnu@XVfD%d+Q>_ zm7h3-$?z{6C+^dnWFf)Wb*aC12y^g{hSQ6QDsB_NgHlG>-!09T+piAh?D$kPY7!Y* z@o}g|3gVy~jzNa7&56)Kcme_F_-!1LpqMWSN%XgKJCrkgSAQIX;2WEQz>EAD>ENRZy|x$eqmV3+<5c ziNX+)=FW1=VTM~y-m65xk_tIIdihK8sF3vyPQpvmzI*tPle=d5XCqo?{EX?Ybr z;9vq5$i4e^wO>%F-GbiIq-iWv`#n%|DhpjqJGn*L9O?+W)&Jg{>x-6P`2Dk^$;tEC zHoaunT$o!8xZ-I_Lu2*?Zw{61UKm*Z9QIfvL*@($nr*9m-o*oD%?Y5sQu%y3b4i)N! zY7d-tdXf<~?zo+#rfvz;)k zK7uj3TL|npcl?v~o(s|LB?;!l1K+HH>wCPZfVf=MltjVlWZH%}0l^!GyqUZ(lyFB+ zoUn=#VLu_=C9VDm-L|#)8oB(uaNMh`_|4LEpCGED0*+s|srZZDA%mcpXKtrnpYU-0 zP=e6wH+Y*>*q`LQqT+j)VqO@>cyr{}aT9!Mdo=x!9nYV11!I(vmNZP7yCRwQkxY-y z+mRqV#nmeUjm&*Q4IcNbDl6CO3*jvQU()q6N^-|5NMe3%h%wlRM&n0U=0le!MIEUj z);6%M*Z5%M8(aT&Q7M++AfIFxOGk5p(5$bxhaiGRfrG3+GRQM$0b! zZ1kaVD^$2$Xwh>xh&Jp?!pvLe4D7CDJ{xK|FC2m-72P>?3%L%;tTG;Sme=6@@>wF5 z7xul!!*}Uk1NV}ov>lk@_!v~YrNvpl{~PVNKJ^f@gWbCb9B1sS0 zFp-ZAi=Rm41@&ASz2h!pl%Q%c1=`<~Lwhdm)`Bd2%NQ(I+& zV1q+%H8n0|r$uGh6!6^R?y|c=kq^u!`HQfP^G8jC}6mCn1 zzw#J&0UZG6YZgrf!Es0dm?3P-4)Zy0^b4hLMgdYm`j`8}PzdXE#}^r*C3}j7KUBt z)mFm?`JQ5v!9^O$4yb7WeAN(;L*1G7x-u!?$r3rn%~%fp@7HaSUva0S`pytsd5p&6 zPRmi@@P%oo6yOoEMP9xB!Pm2`sqdM+#iSO{P{1#v;+UG9sEw%%46X$QuR;?Kn*}X% zWwdCw`6xhZ?A|cImF7~|2*WKC0JYZQ;G8FPYvu=^RHdi%p}Izm!Nt~CTAcheFa&K2 zjVTs_3+v;_dI*9C_o~Hs5qe%~zqe@{hR>nem4CGTnB+pb% z?BV_Vu%!H6fy4To=&puNlE>^uyd5Fs_P6Fh^bbx7{DF)+6D@wx2L=ZlNZsly+b({ImD*zYZI77v5n&o+)wcs!qwnz{c6Qx-C=d4tl_Uvq zBKi!vFxEi-)M8<41+@ivuVtEA-^PV+cN%T2^2H6%S#uDw^(t|>5`qce8oaL)vl2w# z`jYAwwWNWQf$yxhPsXTM>7vHC#a~vU?#We;gYP*hJ1IrSr>7j?rs$^*HkJuE8oEN5 zjd#>$*O{LK-Ca_KcNh*RT`R%E8}2m-H6$eDGKr?2Oh4vSeKal&my%UBu_kYqinm%3 zxr8@!dSapuy9yW^A3u^*k_Z4cj3kKj7gTzYGZ((pm?OyZqGU?iOxsmm&A+wgqJ&y` zraL(SLrksPvu`|gaH@jjzK{Z$C=M8B^LvGG z&=1m|Xq_BfJa4DUB}xO86rWETE_v;>M0rzCyhd zqDLL5Dt_338BB^*#k7SaHP`%6+yjkWYwd3iG=4UFiZydVE7KMTPpKV-wsZz`p$;~! z42_r$qLO&Lb;U^C{3)y87Xstd+7xJnm^OqAsC9`!#B`jD-5)-yo7nCLjpx>sfYEc@cpJ4To^)~2C0epU5@%{B0|B;d!n&saWC6xg4x95dNn9ynw6sJy|uRkAe!jnKp-( zokp9B*DAbcn0yMP{EYY zhc_&FDYl_CcO!hC>4sd6AfRK4K&I4pHq#*NqGHYq>_L8NQ#RY^lj_ug`x~>{0l629 z|8f%PAg{ya&+T*{OPovF)bBW@`X+UpYG)_t*vGh+mwRY&J3Gq(KcZmoek`6CykvF~ zWLvPqNUk5y`uKe8uRl}pDbuBu>c2rUqH{wo4>RuIIr~gxCxNV1I!(SgB<&_!lt<$NBf)s3)sZ|lBCMv%fsG9Z8$=&ugRVFl8ve)XpqubP27zO3(`qOM$#8i z5BJhRF{7p>Q}~$O0_Z5m_Ziuim6`;W9;}*V^Y{qRb2W1AsOkX;kzy$7_O``sp6t98?}d98cD7M%=w|oHQLI3|7xGw$Y%!+ckj`SRwxuA z5GdMChBc|-lt^}#Vg6l~V^q9k{d8vlsPyxwoeSQ$sBb>X~zEz#^nsX5hX);dwf zNYmqJ>t}Xf?cN45ugN)T*=tO>xe})2Cis%@4N0%)r}_=yzV6(!D92|fI`t+=6G(fz z-yyP`q}Actrn{ZM!vn2hnH8x*Ms-;tJE~tRNd>!l(~DKTy`npl_kD*^w4G#rK(D;8 z0pa_QtUa&=$}H_AZ9;X%lv8AetAoEhA%PBq@7s^oO#QjLE9eakAa5HMi@}?*eqSP2 z@lu=J&5z!Z!Aix3$03JPExMYh1BXw+OlW7lbJ#Z_J_!@GFv%^t6os_l{p;S75N#2h zhfS2_5qZrv)N;&_rR2+!AOBqYynIz0{Pw8Bld;oV^2Ps9iJ|@yNYv2K(bLw})4?<^ z2ocPJL`TXiYTwct9IWc5;r6nm-bAp)cUg9Bw^n^=m)WFbFk;TcfBgTB1*ZfVK6LV9t?Ikz% z;DWBALxd6fAbp8RvyW+Mtg&^C2Kv@#4Abp?3E3trv=c1%7qwi{*) zhtg5tIhaaU)P#l!H-eOUHAUfOi&3jc5OCgcZDCOcZqP(|&lSlgiLh{_lA4g2nN_7< z!%sE3nO#{ZmK)>9o~LI++IT5a&hc{1{^yxzAzHZBx(idS`AN-1KDd(KAd034h7glpohE@KDK@qtt+O}AaDMzXIj=dML;E@es3Y8Xj3P%+}Iww*Og+n`ameItbcg0PAC8}PTC z&>#K7${lv>G_Rj1RQ&`+b9I+1ZzrVJSG>Oqv+~c~Vy{u<@#c9K&I?wOk!u+~*H!IF zvaAnekFvSl;cE8m%W9^kbUNi#wEs9DNbvC7;4l!UAm8zLfO%to-&#*J$Fi(^F{DL!6kC(Qv0c_!HQ-9=!2wU@+;tR5nJvn-9pR5iheRP#$Lc z-9Xpt#i{K$#t+11-Yq9{QaMu0(vjBGs@$$SLn|R zTZX>W#>+VzXb26(dtvgRNg)u`EbV&a5Z&IF!_-=agFNax$2sW=eVZDW+b|6d2Cuu# z%CgV}8Fg9P03SjgK;`J{h7zeA$jB7!y8G_|oe$8@Awj{gpY<%83qqU4k5^m7=MJ?`{gT2Wm-v=d#UBpwsmPG`iR8g!Pu7ne@~1 zvrE3m^G0@_gtC)@FoF+t+c3WYilcyKA{r2VojM1FzqPi0iwW=!t`&O7J?uPtxOw=I z`b>}zp&usU%HE|ww8@*Oz#j0vBf_7x!NWB5YgD+!OUu2paNOL(YrQt0k_?o$sM?NV z3lGZq@zW+_DJ8oI{4H^m7SGf6R7xhjibf}@s;H+QXrxUaN#aD3ovxAiJZnOWXXn)F`LW*+Cbq815ry_>0DVGcjs3Pp)b1vhaGp&P1N4n(E@&toN- zQRC>!jzKabgDq;MkDP?Mo-;=hB&;Ye4HHkzeZB3Vj$S$0Z!TNjK)dO>9fpqM*v{9Kx=DQ?>jywrX3u++I0(aKfc3o2jX z^w9em&yUifKOVumO4U^io^_6ALI6>7Nq1Tb2au&I_FHQ~7efdmhVsIP)9>fqzKl=- zij384U2o}|{*LX&wU3>`3d^}8KcuHuu|$dmOA(wN80VQVi)~2!bYLvYS|_c=_Fm?@ z&t5O$+PnAHu`DVJ*X3@EV8rMx0}CuHI#Z3st|?q(?W^~5cf&F3dv8Y&AY*U2GUy8yuOG%cL@JDFmZoLRyk4~)QKuvSuE8^y zLFDgfb}oIIhSE&jEpXn7o(47is}23Fs|&%4NV+?A_p{%Z;WytpARy=n`%?*UMBfMC zTiW=-pYM0yhOCg;v|DL=fcJgKF7AIVZFuqUwC+XSxIEGT%U!ui^4C}K@*Q|N|7aZ3 zaqRADoN}RYhMO?+Uy&sS?iXU_SW#*@9UClLGqJ%fY0h;AqZ5#Kb<>tist7Kt@Xa-7 z20bemE;=P9XD86tor`=|H-#2|g-R z=cpV$A`d+8=~KT*OTnuGFai&W&K&iE&U&0J{T+J79?r5NSCud!4keLK3zeuKKL;t0 z)612unqqdntsdV5orm52=DkB>vfQ`1#oK>SkeeHJYa73v3iR!$p?!lMpQI3tn$^a~ z%U=H=f6&k``^ZkSOEJ*xV|4P3L8v^YQpNXm?m)rb)^)HoqpiB zzj>M+L0yMoae_-7h3Ey?G$n31yXM7gY=&C!DdJvfwN?IDb)_>=9PZLY1at=qD1Iwf z)`3BX0gPy;>y*j9cD!co%|I1((A?6Sf&UV==Q%@h&QgH%@{u4@q0zLwQ+<@SoaWUct~(#7x22epFfu=7IqYZmuxf%@$k<7 z)(jR|&6*iwIV(;RC-A*Sa!tY5ed)M3Ga-(04_=+J;!o=^rmNzg0G{l_`yBgW`2uF_1`WmAv?iW2$w!AGmgQ z)JZ#Wa1F)`CALwa=JK@}Ov*GRv9dZxEZw@y$d3j_^!U>?CO2e%`nTj}uVXncf<8^T zW2F2M4|hokd@>uuF{DYezN@`)$oxMbJdcwbhQmnS(PNG55NQ}g=<-pN7qmmpbQZZG z=f?zs25)LF><{PiZ3xTXMXCMr)2eejy+7&u5pQWK9(TmI)b?i+59{r}XV>a+McYhx zm9?iJ#vGLRpa)v2l)xfR9(bi z06mE2W$IOI9{3~qy~T+ajm9Pz&4?QeCqd9RekFX*a~hBD-a`Ib$SQ`4djF7>{KHBU z2oH#*Z2|X@*tNmtuC5(mdbsD+1Uuyn0I`z!P7gN|zWKp9jNBx>; zgrA%b1@7c<@)e}6h@xSsebzf<#}G=E_ZA8ZF@?)Jy*}$S*Tk{K-q%5x^{JE;IJotE z7V~C+ru!U3*zhQ17J3OHCu1tQvFq}_D8io(f@Kx%pTaYCVg_lzVC=OW>l@+3Y;H8A~?WNEIS>T_8GX>r}SYkcbn8-%S^o;F|O#a|H%s@Lu zpQEAq4{%h~nG{T#$a`QMxK%vuP5POng*?A!yp__bpzru|$h zPby(|7wtf|6i&npLYvc(E`S?JRz*pmpe}8!wCV|9!VK0XVJrDzPLGI>?FasHnS^g= zl^ZJc2bg9^>^oa{^=nw@%&kIDsL^>@5macKjSg1ZBJ0u6`fF)w4cd;KxbE#_eSeVE zWZA1qZ+zaCg>^=1SDteVm#*A+I39B2-3+@JfC#6pcKG4zPv6ljxO~3LT@|fy+nT3^ z21N=%Z@eCJ+-ZvMhLz{;Ljxu_N$fKb060v2SIQO=Bf!ixRwZ15(3c1m{VZ1Q{U-&I zs=q3uq;GNh>g^AI;ba_KJ9kKM-k{(T$FD(D{)UL9VxxhfmXR6QQmP463@QME{;niO z;V+728fRn4;azJ*X*%~o$gyRJyKmf%8h$V3(WE4++K4#a}3*v3NVj)j3+ewD&?sYlR8#T8Z? zY$1l3;NxBdpVZsFugaKY-0(L&`TIq~V205uex>mV?&s!8KWyBGTT#Ufa^n;Oeaq9Z=C2Uo zD(E9cHVV0_!5pS#$;0(^2G?BR58pWS6@Eo18L>3vtXhhRdrXig5w7m&Gb*W&tfJx5 zySv}$4V*712cSrGc0h5r+E^m9ez_R_AcVF2i{F)TaRjgVU;gpXXOsIr%Xqb*;}n~u zB_;Giqx(DN%EDqzXzWJ9=7j(gTSCZHbJFZ;dw^Y?%Sk`Ai@nNud;n*&O{{V;B$ct* zuhnI0Lv(&rBo|9&i`PLXR6AyTIjG7@Zo~zu)KgpoowpZ(<CZ=ffw2a@^xd z!VR+^-&yuwBH{tZm8PDd0ULZ!9R(-Cns2u@)CG7iVPPF;;#k{R5+~??8TD>yNeKQ` zKb{+8#={0b`VJEzj$}#(2!k-ORVW9*%o5x`ITQrR7xpq{u&>2@h(; zd+O@Mg}lz~$CzP^pg`^<6ji`Fx*_V#lxc`p6-ev#sfF%!whU6CoR-rsm_8@EA*R`m zb;~@qeUvx?3Ez$>RpSTU{HMS!b-PEqRPC=}l+*3!1dnlgL7QM)YGsW5hB5?)DNX1! zC07uIg;l4^R!7iY4Bt~%=scL+u|rY|xc^!9O+A@Mqsba;d!-ZH@HfjOpY@bUH6?Wq zugP9F$H-UX%obPZYIOIc>f+RG2AQ z9(IjB!?rr>rv<#4a5W#4@a{!t%X8)^{DxUtwDcYb1>+ z0ECm4G{Z3aet1DUeGf@6K))2a}8_KHSecH>Q3~bW`{Z7l`d-p`wQ&EQ^U4 zsT-Vp4e+I+-s;oTE#Hz7MF?XhE6x>G@zlX$e+|~asbim`+hAHCuc0NS=eCnJ$D14p z{rYB$Xobg}E3MOGJTCIv{5-$&IhhwRr-+%F##D$kRA+LYaBdm*0!td2=6U73#&eG7 z7-9?u^q%lk7sRLf(~gREF&kGD2nNNcE`GH^EiFUYDitxV6T%8%E(|D!22Vm24Z*9i zeMAsmff~SSaD;~9D>%cI%x7L)p@RxNJ6>VsdgNYy0t~Mv0Urb6@ z#P%-C#^0q|VPt2=fTVP`#*^a0>!uTz2xI23N&cJ7l6z`C3hJ@pE}iLJy)N~X#@SMZ zP(NEb)n+wdrtu6zsfkyug99^@9MBVuU-NK1F!BP9&|F4VDm(ET8!MAdfd9OB0Ppuq zK;HF?c5@+62OgL6tv@Z5?_hd)LyB>sv3Oo$GXA^2QCD`cK6 zaj|?=fs-d8rD)_EHa2OVV%gN$-iFcA(z4XI{5jNxbmdxs%|W%Ye-??n^p!~cR+^^N z>P=%}zp7B`QhU{tvy=cS_rxzI(7CpgH3aCZQuXDSRjHWDfB7aapx0caM|<%{`lBgW z$RcP@!Vk9YM}KCydW!Uni>=|{1>>0s_zrwXA*6l%43&jb(B*XqO{IAHf#37dHq7|? z1|z*nA`R%pG3gp{2)vAaWgD*UClgqUqpsLzo+AOwl?<%mn+~V+nXXZW($FT~TUV(w zS-d;5Df>4@Kqf(=7!l-5Ks$)vWqIW=+j0V9T5f#cD8vy8lp%$VB17hkrlt7}gn# zuID3Nid?tKJ8ruJ+*7df7%kUVPq9pZq=i(>Yg)C2AwPcc@whYv2nMlFSB+21YViiO zcnFCQxd7YHlYdSwS+Hg9Mon7gA&cII95w&6Vy-sC^CEWPgi8zKiUe0iuUafpvJWR( znd2!a&=YAk-h@=(FNJhIpep?!fAv#JwgKs_>yevbENU;)05UF?OTv*g=J*X5fv>cM ztCZ$^UKTJT_Y0s;<>8(^<`SCH5-%j6S{>C#I2>qJ`bfbTCg2bVRuDpuFWeGxb`;3Q zRse=+BkF#7_}!zbgqcu&s3#S+xYCD z{lHaBH4Eu#sZ%uhMDLlbRsV2COP)6&t+`=UEdNe6|h^4D7M3iHeW3wLDV0zCe2*?;5Zjfr@kv_jg6~NI>`Ob}( z#;O_KL0r0|litmw%}lvi+H&X)EprR61;fmV#wwm~%9L@q<)81bS$gOrv^qH}4uWG{ zzJx>*TcG){NmW519x3-N8(RO82j|ldEYg;FC6C^^BVX|mW(DV;;pevn&*<59tAf@v z3K$(A+Awc!62%Kge8J+$mC))mx6pc7%1vISnCs{3)+NMeauaoZkEAWK#F8!v?3Zi> z>pZ4U6bWONGW8KXANoyd*jiLIFtpEw81E@#<`J!mk=#NW(MKHY&X-wx+7YLI zW1FS3O_OLm*X5tzSKF-VM>jZv1$A+NhmYPy&c@}Ub}`1_ddSIf33$4E=U9V%i+sFV z>#SrUhW58V;mXkh67@#(Y50 z52#%@V}TR~)}++>>u%GKbzaKo+kB&01R*m+qN6_sSF*H)EuM1(zepy!PRa>5USTCY znYywQEB*#mX=&2$GhBOA8U@t0&D1-TW(v)FNkh8^3cQ3lt^yt8OEhl@Sp>X|B+JTC z9$uUyd%J`~SKD~UClUT>XP&1#fe>+CtOh%Sjsk+I@YhDHC+6z9NGd+g=tA%l9!h>0 z7V#bx9TTTz>)At({bP+30h`gYke|PQ#WUrG!&qWtcaGrt2+RXbv;cnPKkq_|eumR{ z!6pZ#kj9)M$tpWD9nETzjTh4&i_LhanZYW^4>PW6v$l`ox}+gIxW7UlW4IjX6hH>^ zk-&#DoByt^SPybTn4mARa``(0_TlmSY#5g#v$%4}PIxZ5-Q}E}+OW5hl74%D);mo0 zBc}esHmr52Q$k^3lCe^BJs;SF;~Z{PSv(!_n+zm_Xuz|DoTvzID*DyCVHi0aXLtulZ_BbZ^>}!_INHwhk&*P`Vik(>nq-07854xSEE6uE0Ff zTf57#%E)eoaR2=1BidS&8sQ2_tN^R3_lnD1(4iazi{$wOlPx`K+6yI_!_UeU9S4w& z13kgg%^1H{7ENx->_SBgnJxWV%-sPYOAC@`V4fZB3A6`VTGYrXK1oxyEofkUPz{|b z&CbT@Xe6BNzYHVGRMONN?F@!R3m3aXLpSpqWqHe2FfH~krP3C-m4mO=tWgY_(NB52 zx9cSY<4QBah;LCeACg`%XcWEXZ6vE8vc0Ww0G%lzB4mlOtuYFUvmpi5qdZa#PT7q1 zV7A3X%8ZbnEhD@3N~vWEj)P->OORP^zuC4pgoC3-V_%k7kW9O?)ZgWit;iUZ;;vRx z6?lAy2i1La2(5!i>>*x5W$w+EH4e6J1Wku6I^ms|lu7mMeZB4m(V4Wnxc|ALQ!L6T6;|0q6X)pCk+1faqsL3t#D2OoA!GQ@~ok0i@ zBXX2%T#sD~rLjJyRHm-Cdn6bH-0Riz#9Qjm2~+*;?B;UQ9YR{jkYOk-9C_$aVGwIZ zH{fc@g{FS}WiKB(KbR0hG-nqI6qoF$3Zg|S)M9}^sj5_jM`kphdk6aCPT7>+)?x?F zJ@HuggYKCHk>Soh&5lFt0AVP?BZSDbsBG+_h>_WtOTxOin5tx;=5qVjXi!#Dei@@J zJ`kk~bqrH_>UUG4JS-MAY*n2qn9fRCm7kd|hIUDAbW^QwQcO+etg=~`Qx$Wql%5 z?zz4Bh5T9g?CpiAy`54&Q)(+h&LfR^WXMA6dj@cl0ke@O0w^no1)2K%@ z9A7|F2-&=S*0`#KVASs@iwfrmRY)d58E70jy6_)+gFN9cA^fjD*ewk$%5+WGSHpJ3 zStaulWy%_y_p9Z8azXfapJ6nB^CmNM^8j#Dm+6`U&@0b1CaFKZOU32%A3~qts4Y$9 z7G+kX6H|mes4F2>Mz>65%(QLevzE-IAYhY_>a3Ss3 zoxT3uzt?Z!`EEvfpdE4Ah<4&>KG>WB@v!-Ch zMfn}uD=+<1_^VetR>77x9f-5$2O^F{ayFbt{itzMd>67)T#9I#k3xJLe3@^@AF;M0 z`|VeXKbw0pJ!X&uQyX{n(5VE^M<-eMX_CA$$nJR(E!bQl;?GdZK%fm5Q<%REGTx(gWNu@4v zDoJTvu`oa1tQpWwgyE1{gkkB7ltd%MjUb&zBEOD_OV2}ybIFt&{Z>b2bSp{CMZ_m7 zxz^=rn;SXri2cQ%te;!#kT|ko&03KAV^8@0W~Q_$7K<-<3&TaMvU?y#soAoF8@dKc zra-b2U;2?5;V(0DSqRfD_AmX-H!)k*ZlseoBz;m)L}$re5@rxo2fuGcUH?m>{j)=-!1CH!t-crm#SnYu^KCkQuuqW^S#X>@=+r=$@T;r^84 z;T7@Hiy`YU#uwdU77@CbpSseV|Lr-4bOXK6=6d4<`CRE|1PdNCV8Dp^|G!NC{EFzC zpke()SbeS&Y8_*3JdZ0__uYj&&I8H0)4nDC_S)MpV9ZPT?i+HMmiSfl3&0<;J_m@K zJ0c;j@`F|3CuaW&t3S9A?m60-Efok0{o0va)Gy+CR#3XNY>xg>p#5>1Z+-jmKfr`N z&I>6_CVFSj#u(#wsl&Efj zAhM?p%YuJWd<(}KeE$qt;r&OKbb(S+-hZu6H)Gr2|J7-FCkig+KY|@In7=bLln9`_ z{ks{K^CJ-7(pRd+^B*C7qgLMkEk3RJEar{Epf2=Zho2+wxC#IVM{J|}MZqR@+-7o3vhkkZD4}~n^KePUD)9(W!F7g3kS)+MICuI(K|7X|I z0TB}P|25b@b=KA<9G^Md_o&`*8eTpFjfZa-_x${M0bhBC6oB(q)eXD;LDzEKGFO`Q z%6wiHr()Ev91fJOI?fV`Rf$@ z=CuIJJU9LuZ|yg6!+)}z_#6C4g)jaRBh-RCQo2=4K`MZgsAQHZM@qt;LNydMVNE?V zGsQO)thS?lDCj-Y14a@{W=mx&w=o$_T|SNT5yC=Z?I~#ZEMTBi2|f<>jD1TIrIN}LvLv$0mLz+WNXedTAz@JV-S15GJfE65 zpYQMcd|t2b_xsN?y?Qz4I@fjG*ZVs6eZTMfIYlp7xaW_LZT)Ee2xfY8r*5tJ6ImwTgZ_3&#XT|E7God#@7l>R zWuLrg>4oPQ&Nl0^G%&W2$KMlAkPK_aTq!xxs(Ng|iKX3@>7j@Cx$x)r%qCff291|3 zhl2ajrjypUPPj08xye`-#99 z=B5uU55bQO2MlX;i6@`dnj1yDJ$RRQ{ENo>xKfeJVx5(e%%U|zdjJDh!F5;&ekkaEPp;uxdTVZ|wo$!@0xPQI{OM97WyJMxB=|ioVR~)=`Ny&#qs!ub`+g7S{p`+EuAL-RraFq`yQCVCrzFROV=s_#o z=gn$Z;uLfE!;)lgE8-fX*(rVqT@%t`q`2d1NYlohTe%lzEpfQ@lGkBf8~P&8Ps3-dgR_2ZRyf85i8Q=zgx4YByvpg zfIfv|CjSc?wY9CayS=)yIKQg(X#ZG$(xV82v|Y%>2lD>guMFI;78)E$Rdn94U*Kr+ zehH>gMRO_n=Mkf6cY8}4PYA%K+kJe*rBm(aAI++gaSC@gi7x|H2a|@^Vo*j#huoid zDkNN4e!%ThDsxaE1~8r1TSm?}TuTs{o6fHDA(J(pKe(6EUS3{ksW98JGjXo{z1o~a z9v9D{bgV%7l6_t5%k4z2difpLEw1Yq?swsVD`RY|x*DPSo}HvGkqYk`i(*mzmHu|a zIp)FVH)W%I)qHb_ndp%&72cD*IUhV#KK0gW9GXA>p#Z!xRn#8$sET< zc*?|M@~qp0$M;H;=K9MTBMs`SSSC>%ZuJMV?(NKzPfhZ*t34m;d|bMTGe;o5IKfZl zP?V3GHfbvKMEb3*>Ts#G)U-dcV4_h>EYa~^(F-N#M zg>2)4Jq~Su6XqysZmr1sayDf|zxY{cN70Fksqaf%&)KQORIO$U>reSoH+?E7e-`x2 zV1lRE_iou~6_qV^_hPGdnDLp#)YbvwvTdR!6tuzEotwJ_IHbz4Q$zV-|JOLeF>JozOG^JIzRX&-QMW|!Owe11Qki*P+`hh9$VX6n#(ob z56-~vdS%%*CW`Vrysm%ty-%A<(F@5{Yx|)gf(6NqLk82?F`|1W-nA=!#yWgei9%F= z9p%Om;LzK1D|a?kJ$Z~HM)-}mG<&37)M>Ps2(jTR%c|B3>vui&>o@i`mBqKdvSW60 zcp7`x38qc3>UlhsHt^B#MosGB#fevY0&6>_WeG`^u?}*2FoQhVjw3R~-n|!1j#DLz zSgCH$O?JDy>)j`+=ev;Hy%1P;aKqb-)JP{bp+KJ~*OMYQdPZFu(x!-BV73L26)^-^v=VU6MHJBbsx5YuIh-Y26!%BE`Lz~dML^{uCEUm5KX zqYh%zRUCR&yxlJ;8dJ>q3SQL$Y?j6Hm77p*#X<7@;>_o?E2#sCG9&P?oUbyoyu<5= zy*gX*lTP4w?ia>X7v&0@*c_ya+t?5uP&(TPmhH(y0&22W>*(&1*|~y>JCP>J1!E7q zHV=(U!%AP&Sx@IJk#dh$9(51OnGrnpLE8`Ar@uNqwfH!^u6yiO$WG=6e(F=rJ+Gt- z-J6zF-*6jz`n=$_rF78Noop78xLU$pv&?^;k4H)^Znf}s_tEJKZ9FJAuS#a~T1t>;7-n4g4VFNmkyP*>|;!)l}!YRNXhK^gIR_+!x zlHNFD@6=wiReYqpLexS>vvS`}WyQ7GK3TjO<&~bui3+#o&YnuHZji9t-2E^vv(3$G z;l9!13={unoL>6!3KeJC6?+zWuGA_{GzffsU>6%sF0Lw8j|%!A+=3B$URi@`si~|v zJJR2mNO5*$nRnE=w$;hi)n(6~xqOxmjO2>_ZO?CZDVL)rh_bAm8W4riT9r#rz9Xep(=K3De9OHrrl z)n>zHdH>-S=_%KD-0kR4@f(@JG2rn>m+9ti9{VWY6y9RD>4>8mJhpEHRjfYE7RY)f zTSr}xu^8Ub)abkvQIj<+P+ywU)^=$G-&E2iv|bGUh=*GUM@ZZ?C%FRhldcT!_{PGL zJXTDZbE(yBt`FN5TO>zbixVX7a(O%p8Vf!hp|d>9lEP_JOlsXdt&5ef>(m>uJXx|u z->!6Bhq{vXyvgCR%wpJ$RKpAc?8`z35oMGeCLvQLx2+9#iF!C8qb}pU`8~6)o>poI zNA{T#)%~7N$CF0*)sKtK$u)WV!m4p&SA>Ez@EY&!0h^%c*6Ovu&6Xi<^#Ub&LGgPe z_GfXt*0d-*T$o2K5e}d_pElmi>I*ncUaERw37_%dkBx2fxEU8@XRKIJ-*1*(PUs!J z`Z4x&l+9SOR@*fS=h{By#e#(nNw19S_g=@fD7i|MPUaig=*Ihd7{1&VQ+YXDf#>i- zt#qPw@U!6uB+Cs#(`{f}Ehb&lB?GVR%l2CBHUd!C*@&7WW0$23PfT#hz~@qCOE$*p zgq}^1UaZSC$g#`bQ7{>^IQdS7@B_(QYmKR*Bv6c~VyF`@`Nxp9iw2bPk>F zI$^fdrsGRcn!K=Dmn%jV+^W?zHe6Ju^U3T%Fn=5+Rqj$frR+Cyg_aJ-w!qJd#g2)+ zgOO|<#*)!jFBx?Gt_K+fPo@li?Eix}~XC(78D=XTt549;LUp+sx~45{Q}ZnPlz{ zt!DETpGlnVu?s%C+oNYfHL{|rL2&ZDi&H^&Y^QW;&JzEtGS`-s#i=KmkpY7lJsOK7 zQk_qIvQ|%AM45J%!0xW17KgRy>|^tAB~@F4>nj!`_fRVZ6CRVuDPg0}tj+D_+RVvF zt3c9)_gm!+dXhbtF&UCv%zR5(qKFgY50nXIQ=TOwZ0(nCcBx^mj`n1VD~TA)d~W}8 zqsT8l@QLU%2d0q0`a;=bd~vZC1z%S!itt35&J}R02dooc6)slQ-hnCDvhUL{NV)o& zG(ALeP8qSbKPlMX-RnAHXhSj_i@9G>6EKl!!24Ko5bpMdGXB+Irp@(@VR`a!hd+iX z&FqrQk?>tl>&kB~4=sIieKoVx9$6!JQbaz~_K)Em^5qs=5;OSn4Dv7aeYK2uo+(h4 zuDf0{gy_)s8p&K$NNcp$6TD-uQtVCk7WC5|j6z!|XFjDg*B#zD94;N#S{K95t1o+D zr7SWKZM@jJrKf1K_O7kxOvufP&&_D+9&-wK|tK9J5N!5eC(-oT0K9e2mH2gD)Muo^@P>wj~}NB;|O6K%*$4? zTlq(mi>N2qatxUE54*kK>V6?ARiLs<&?D+?qRC}tPoMZd%qQ}vhn7M;eF(D&HZlE1 zda~~^XQ`;Kw#N5|b}r^#Z3#|PxLKyGH$5ZVP0V>exts9ld1cyY_qB!rpQT=-@JD}G zSn9;+H~b)T4@K}wRsVE zr#36xKJ~*w4eH*)(%D9!reRk0xP<{ff3a6MDdHr)vog{6?XxNA2)80G0X8x9@fXrv zb%62o{i@lt7*%rQ0bawELnop?RMjo=7C!l~FF#AnIo^UVe`O@>>|~Ny9Hr#zX2s`k zc4^4&@EJV+p?W1*gez+=nv-LXXJxPZc;NiWj8eXU870ARUqiSCkJ`vs)^WMre2;QtCrysIbrD?3pLXiZ zHw957gX2A@290o;j~*N&hrAmbTEO)shS(Gw0c^@B8IlR!>$|k{s=_pEb?stE@8eFX zqh}m_>k`cNUvuYFx=}Lup4JdrQy4*FSuKX;q z+10D4pC>)Thexd(pX+X#^0nrMVt!C}e5Z8v=NkQoN8LUZId`P#S=79!zcD) zE#SAb>YvY{=B@NK`yAXLsS!WjQ63}X*Zg5DG$<2%yQMyU3jCf_(#{OO^oi50SvqAc z_6lo*FG=$jfhn7Lq=~VDH&F%1n#Kta7piZG$K3R@Zm-EwLeg}@hN?K`H`((ps`@Jj zC+yN|j(Ckc+8&}up=LEa(T>XUvvbLb77i?VI#??%?KAL@+9^o3#0)kv$1D2@-X0d2 z7rrcL|5ljfg4(`a`M}P^OYo+VVUJlomEy%4B29@BX;G6U3X$z&pQ=}?uWIR{3r z>aP3zUg(zXXCK;N?>CAOj4DFdnB@6(+}T(kzV7flZQUzUwLvAcGaA72xGZtdx2w6?4{{g zaI&AZfz-fJ<>Wg(L%hNxs`I(K4K;lrD9#xyemu#is#2m*Mde^CCAI zZKi^*9}w`tr+Z0y_Hb*Q$Tm9{bR!E?ZhqZ$pWi=wJGWBcsOBthdFuL;hi1t)31(X6 zmP+T>rpASX_|J4k0M?`qOefoNij!amb$QmruT-tfDr;;i?;(eNS_tQh&BBHJ5$f2O z9@q7@VZr$4+>M%k?ye&Oqvv*Q{DzFMR!KPx70#^`++3=#qY&l-VV@ z%?@Y1mnM4QuhrwMyqxT#;@8(MJ0=HmT~xZNGs$0!eZPL*$wGx%8OWbs%~ri4bB+^# zFV>Lzb!%VPY7u#@vb4DPtVqDsK#vTj#=Y2FTZEPA+3M#n!5<=UNf48yCiw@ag>AZi z{74`tdb=}{cMA5VfvqT(vk9#U{w|H^jZsZU?n?5@+}5kOS$V4XRMyc=mW>=~;x9Ges^TwG zwU1=PoQ>YSr$N5d_3O&YmsDwo`m#B@kc;tZJ7YgCbyXki%A1eAvGRVxFW=!xkIa;+ zh`L+JsR}pCAa*9v$uXbzXBxe|#;8uul0|Mi4aM^^X|Cw@y5kn)JR-<7BWX2Xw=NUY zO%mN2&d(n5@yxR@=n$C5G4GZ3a9u3B_0`o^@rbVjVL1*v zCJ^{%9-5jwMK4CXp9Q>66MIZN_XUsa#3cJ*;sd{!&LubZ&Wd)M-!M5-INHSe$-~-T zUEryu<(993)LYyqEj>%esE?o4lo)0Aza1+4GD5XK`F=TNe!1&X=iOnW;<+H))YyF6 zgFEn4c=?mUMneU$oFf^J=K@|Nj&Ucm#YCYmyxz%mj4yW&7P!I`xUo_t-=RY4W5;mk z&3ERR{u{}+29+9kkW3Om^^f*W1zZkeXJ=Qxe(k!1I{STu=7Y~%4lm5=eCt&MO5e=3 zoNF!o62G)5tA3-Zm}pP3=5gt<<@y}i)w((3Wm2_~#@NL2n(-2Pzw+`_Ysxd86B}kY z){Oj0)u-;;wLVuZqh#M!^J>)SoHinygn#yJX&I%o+I&&YXQ6kRR!A$gS*w=KAQOghsQ1-$N_p zM8o!_xsjlg&X?Ce6~+%0SVsFiK3`H3A!34O19P$r7PzMCN4;~*t@zIzUjC4_Nhe&|fBSF0ja(U=WoISYn>$m;L=(GjhYqIJ z?5s!(0)~KnJ2ZeH3}65PfiQ%@ka!FhZ2&{!FyBvbI0G04fq)^=01OSFVHnJh3wR`W z0fV9c|IG?~C<$H!@IOvKe>fBdh9n?=2=E3lG@kJN1fcoBqraaZ!Pd~g_ZF~70(b?9 zgkcdV7#fH8_7{T!U??=^`!OB~Lt=sNmZ)#aKP=H;^LRWK^oxRF2soPdcP%v50EPlx zp=oZgz;^`%?)yayEfNGMM1X-C!hTK_@UK*XnE_9r|IsB1)Pl&+zp?%95lq^*>p$}K z?HEke4;wH~|D`pUI`H~`BWK^VXu5P+0woaXp=tk_m!GqO1TTE+Kr%9LZ4XBxT%AZU zF*l)@z_naVDKxj)<659jGVipiJ1+N0y8Co&j}6-O_r1k z!ARzZh4e7$2z5sVq7_NmlT6g|JgIHwX=6q(7m|~eahGzpbF>4Sfw|k++B-|R9~Lq( zcQ7SNfyXp4TnP3}g<^A92qg(f;1Gb2EUOIJ+(Jt8n9>g;@a(XV6@}s`1&6!2xkaDYG{z!69|5-9;{NH}}gQ%u|??49@j>ERgB*^Eqbq>vo!VKk2>rVcKY!$Lx^ zAATKw@@wxb`7JO>GY303cmWPbqTn<~;IY&xvV*yc8IdfjPBJ4qI6GKSsXkX!`%sk%80N`l;<7cz%*VMq_UF7f44Jvh6pB=4NoBEzyo>PjLnV0=@-gZYE_0 zP7M?Xvh24!X%U^iAJ~#)Pbq^pPfbw;_#Ol(`F`+C2mZ6=e;6cqH~)(Amz24iID!!( zzC{QsNhy2}QQN`6_TOcVUQOmN0r8j#g(!i=~n?CkzbhPt}cF$Xgj+HF)hChOutGM7SN0Rj?p z6eoehVNeoiGy)|7PULtAB`p5vQ6)u!B0vE9)wfoDwxt0Dy{XtcQ%vm5i2sSVpKKw( z!~Pdutp5vb!2W6EZ)N$Pbp4aAzmnhd zn~pP@L<_hU$&&~}V$g6sa3>2x!@!*;T+_jU0-hjXns60+3kMjQW(po3GmtroLt+2| z0*gW6a0nC{O>OC2V$;<@AnQ65*L?nfv6Ag%z@NzPpwsPE>x`6Fl(y3smFR zm;H$%A7j@7SA2VmdVL&?hU2`-=RYhL51&&!4gR9+(QySX#cJl#i@8cH@F0$TLK?vh zmkxd2b^l$$sbH)^nel5b+scdG8(Rp^E;j#8{Yc$z`a#}SW@XpMvMpEq0{J5Q7A3q* zW@c}Hd1z2=oW1P>QGV1i@pICts&lh$iA_QagVCG)u70UbGSPm&@wO*RQnco+sm)I- zI34;iGXd+Hx~)BK8VT;HVEKL91IaC8?;@jM+m@<-+YNrCd$)YW)&OI~R{vAGIjW5} zUb`HIV6CcP>PKuAs@M{?ZBvu+Cf<(9-*dNZaJreG_%`D>V*A00Gr>Vl2!WK!1CEvE zjtW8tDtAS(*4<=kHrXuhfA#7d6QmNxN#Zy~_Pi;0Z7PAe|?BI|# z7NK4?JjKCm%t;OOIraN;KTNx7AD%-~ZQKw;4IF(UyaSQh(L4@CfIGvqI}7$go)pBJzM zM=MDEqK8Ew2=w;@izhJj7aSg(Zs~0C03J&(BOvfddK?4*oZsne!Bk=B+653`1&c0b z00A~Z=MMl-NPwjW^izz!9wA$eFHqhLf`4u2l?$+e^?BGzQzOU5kNko)5GHF;{yjJ0FH%U^gtP!zRm#3!0HIS9v)9$(*g%7 z9^`<({87jzBwHexofUk;&5w#V=6}4*{k@QFLZ*B#JAxAh76Y)e3JWW0D6zBtS&Kxl mv;Ln%2R}t7x`J<;p#=q}JqpmG*ny|CywL{^F3EsD1OI;mTjqlR literal 421287 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

7yeHrka;_J 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�sA*Cl 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

28Deca8D~fww&|xU7uSxMh85lpNi+^9w2f6{n}_ zAM4uJZqxMd72={l+UG(-EC2~3vNjfqbgxplbUfBr-{%}bX$>q5D$|P<)qh&%euxBi zoU!BGfxukHOeC`9fjk>=TU83eyn&Lh8ix!s;yL+|+J;s&=)Q9;yyYN|=uCf5FZ&_h z;Zj=rNvn+^mL__tdSc@2K=pH@7HRpD@UK$P>z?z}V*;QobwlzXKSp7ELIY;B#Ck$f zvvq;NkWo z1pHU!!HmSCu#6a}^%MQj%NVJFApY$h@X23YAh&0LQUFY`A3;U8nJnItcm@uL)6{Um z`>xBoNk2_gXDERx%$Bb1vsuyVn&29dSmzmJW->qpP^ghC*R(FUHp#zHOHW!;1lKEX z!*Oaepqa|RQE!(^CN03OyFn(6Z`Il(5#JivC?N{_#DFHF)G7@t^0Ay4+$a_tY4`?m z$*)gx^bQJ8={4GaGxBpE;b4jTe>ZYB>Z7~9ANSs)P;8NgUsQ*L zJISiU^K2ijAZxNhT#js6nwAGEL)$STp_dG;zPwc#Yqq&GK`hUqHNf1!Z~e_+3ch_rKZ zIta-0Ctr?EkFGiDh`|(InK_V~q8QPn)|T>8(WZ(g#qLujV8HL1;4TAnocU`oc2UY)W~X}Q~YsV#^H3Ouc}toa~%`V9)%_$6Y7xYJ%e0*N#!{+ z^Xr(0qN~cwXl!{pTj`yccVEMjFl+dsTSr{&z=x#STO$jc+50rtz!W2@QCe!p(6M(5 z@XyQvxzR_n)N(!|wur2`6U00LD0Dl(CdwI=jwS=yR6cE_ z&G-Gyj8E#mHK%5N)cFujUKTE0Oq@Dlp6BIJX!LTWLR!5jd-^eEEc)H(t%Ncm$2CEN z5DWpb=8`2>K2-xnPbP`}AS%$Io(|ZG0Lp~e42slw^Yn?M_jM?_BgRKa9^peb!Q93X zsiaQa_6k9gv{Kiz((aElD9NcNZgV<^-Wr4E#{orNVH22b)*R(EJUu0!Z@@-+QA=k(_UrfEw%{6^f?cDt5%O(J(_+(%gu5iUjrh9OC0a-2BWK zPr~xDAp0S#+=j$LWEgjHCyshG^;5nFHqmvy8>gy2*#-&{5B8@%rq?GCVmH2PWf_SjUUb&J(=b=DKm zx#eEt2_A*`p?R=6ut~=ym+)kfK|ibrQUT{N7Uh>gNYzM|Dn;T%`y9BP4tlF9@M?m# zNty0T&flE&FB3_mHGg(yqvh0sjc{VkUULP$BUNB{9$w+h7ZpZ$QodrUPsP=$z<$R; zWr_t>%151@I%T0w6u(2ZPs`J7j{uhrj>%?phqdn}!VZAzacc>0i3dwP^OU+0;8sw0+J znbO#Yc&8+(_bqY?h&sZq%(-K0t&cAk7!qV>9hdaBKHP-?>WoVT30;tDg;2j~EZKf0~>xg}f!L8SB0~HF>^wPo|IfR-kSjG7HrjLTZIUPc@(O z!__0{{H^i?xsP#HbYNyB9`%cyxbJ(_KgPRHDSUW(%BxBjz1F$W#u7V8)R5LiAnbM? z;0B}>qyzhK64zz=QLjjgb8Z=e*%AM8^oKxc8j;>)KUdLz1BYtcuXKb=7R!l zNZ&dEw=#M!cWZMDJP7Y6J;`abcj~&<`dWp)RP{$1<;JTOFLWhtLDY*Cx(V{TyCQsY zK;161Env4I?V9I}8?r)@TKqH>hD?;1Sy*cGMMFz?^3i@?{>+!i^A9@k6?IBY_vW2X zh`F&!vGK=))XW!RoRNXn;n-@Eu(i=`Jx*LG1nr=zjy%&V4s8W=pM?LqSU2}AE|`(? z3KXMZp%GCe-iCP?d9-y!d6zJtwCw*IK=8{kpo{)QRe^r9`J3@pkuygeg(qMMTfZI z@J_YOR+%BL43a^IE7A=71Cz=hzI>AZh8NIQ>d_Cr z{fbJLk{Uw7(Y_t^smAzy!pCwyCy%ewAmnTC@xj1KC)@RS+io$09&c%k@x;NeD{SKBm9R*zf!=+tBujeMsdn=$Lt-1f_P1GKacW3;+Ji^J;n&5 z=$f=z!DUfA65{Ap=C-0hvU+xms4x9QL_uFxa9qYi#MDApK5xEYOm=c?h?Y$!>_ zPesGHLVmV|mt82`I=Sp=|Co`?5(2q1YW5tVJN8%F-;QY0>0+^T*yE8sy1(m|%#8z& zvkG;o%G(LGshe`hHYB}CN11v=NTrG`RLZ8$2p0BqcWzLRumELkX4af)l1Y5Zd3C+x zi%4Bi366hkPIZ!f{$v!3ZmYnok)?BL-S0hG!98}Sd?IJdhRD3i1IovTQatrkFtah){m7CjMY~Y$+`YH5>+5kx9hPPH5o+)(!{&VzC zNMm-nZbE8kFXk=#S}Mc@s!Bj7e+8#>g>Gt@7QQ}^|Ffujm6d$DvIyz%3L1cdy8_!u z{2aq`-Y5)2!Xs|#OsBm{Cb`IfmA1Fx6#e|TSOdU;q`rk~=QVsnKh{7y?3kY+7@*mi za*bk2f0~OB}gjT@1(MpD$ed0*`)sj`8EG&fll0AYQ{C{R;EE_(;!j!H&APP zQsZGyHdQaBg~KK#Ch22J5Jk&F=z~61@3#uSPbp`8oCw>@vkY$}Gl#8FJ{d+kIgLKr z)%J?cOk+TW3zSB6Cl}>L^BWoC#TutxC0O<~x{a^qciR$fW3gA|%AuS$mmXuI%;{*i zXdbDTR{eW|#tA8gamG8vPWP<-82O5qX4osc1a1;L*es6*cgmd;5VF^2eRo&;IB;CE zl07Xa+}QTpx_E26gJPFMgGDurt_T}kTRaVl;b?WbNxU)kIa>>ig^JmEZsFzh3 zX0o^r0e*?aAvTTn+AY&h@VWtE!m~9y^TfiDvWm-gHQKcCj#Ud_=<)aUV9t%jx^+G5 z+lZ-)Da@wO>aw1ybb7!JMCxay45SJDwiE6UHd!aT?3*|AshfP9;Pi^c>Ui08=$?aP zl>8MAUKls$r|&~dg+2Dr_P~wr(W8IP_9qsNJs&W7_kjJE>FYD$SN<+?kns+*4!h^q z;ixWo!xFHaBHA{Jh9JdsliE?9B4LiJRHw{7h{_;*;$7@ zD|J3&u@1e>UqW}Cvc0YaWQT+ref{d(zcGq-7^fEti$6a=<2t(w&?~1ZN8*h9^MWd8 zWvX*SY9X^=YKqs>VBn%u6X_vq{@2Yh{&jP!0q<1J1&<(A@;lKR5mk?1;uascwAf_G z1H=yNb4+Wls6+06hl}@JStj$WWx?(`-}|{7Bfh*f9c-s&qRRtB%K}g>*5^yh411qU z2R4_Lu-Y_kvE!sZb;65_PnP+hTI{R4faEly5%*Znv9#_jZ;v@@k;wFhl6!&g9tegk z`2s&Gup5AHt#N|up9Q&>_jL<`@Aqwlly;AUf}7gDbc6gAzWeu_?dTOUfdnT>pB`J| zTq1kyp1C6q4?uI5i|bq>#Ay1Xt)4f7%hBX;85jM`{QlOlM(MtbLU@FryLdkfTO;D-p7{`Cf~>m4W$Q`qn%SObKn=swlxFpOBrYQ0L$P zYM!*muAh!Ltr#g6zQRT_Y#=O7U3E0@|5VshPO zc18HCAy`ZrPh;J2OBBl;VlMmA$YI)5BI&hmKnBw&s1Mf4!As!L`YEnr5E&r1o2v)( zzgNknwf6!Pn`RZqYyAOSk?3!fNv!yz{ahAX>)=>gG_WIb>Ksl*`)=P!G3A=|`pfNV z&X^8~_q1GBkVxm8%M3%k;S9MI-S z9=tqsFyceGax26P_c5))>h%grpY6uKWZL+|D1&<@6)`$=LddN!H$&I)iqOon-ifv) z6N7eoq9WQ#$)S~(YGMw#xs*ErIpKA@I(#4m zuIqvuH(n4%veb63Sz0DpE5mCdW}2h>$&O|MLL6@U&Hu>W`Be2~fE$D%{8h$YGkI(KpMXo4|z?Se`r1&wal?xrKBk z4^P?q?!D+_&jQpArJMZuTbD0^bpLOyeie3fl=8}xvQhof-2j0=)OsPWgvNu5=9UFZl(x#HCM~F_S7HR0%eas68L2w8 z25#+p-;C0iMk_B*$i`vg7iN^1)O3s_*G|Okw$N9VCOX%ultAVt1k82B#8tf99+gRS!Uh-D&tq%5Ip zl+l*OTG~MoFx-+2#+$5i~%ly{@A*M0VcD(Xx-jR1rV zxRpW!3p4p_hFbcQJWzwQkuR}Sw_5YN`ltIuNbjCOG>_JPCd0*@nR$+1Y5cM`4N@I$mx#@(w)YFo#tys3 zYjt-FN>Qyk)O(UfPY0upQwevliqdPQ2R0b!2aIIqWLLHOizPi@`8C7#fSs*dw3mw$5N^N1U;MW-|4sBrd zij`m3kp}6M>xt(rjMDauDyOck20X=TB}X6sp}?2G>@PuzGI-iY`j3!%1ymjI%1$2Zy!83>=c;0n2Oqu z&or`9z>8r5!}Igl~3W(#kowF8oSr2-WdxnB_&BqL_B_>FQL{=xT&Y zI;i#pQwvXycIReLxbe|y!#_YkSloQS{K?P5?2abtFgmIzvjebd&|G*E?2wnR<}e>= zXk2@k)w2A{ayRJjB6fRVbX5^|Rq^~0c!gF-PN77*%za?d=24%+5|KGEcRy`=OF@|8 zJqjZMibR8pA?9;t!a!e+r$bntD6ws^-l{YueAS;FhFLnc9P&il{%i{+^s~=M z8aO09$e^ACfQ^k^AYqQ_2%Jt;3h-zP`Vns*@`P${A3w7v$_f35MwpYNT3MXk)#9NQ@FZMN%0Yb&G_IY z!7GfElK(n69$qr(j0PtdjHD0jtEJ2KKg>gM{fl|1|9@liSeV&Z|7lu}m6`p2r}bD_ zx&P&~-oIVRqpOspy54)6bqKW3GV%7cVISDAt(W1S#n(Ye4qbWo zfsk9YPP;X?l=o^jt(OkNA;J6o!@Ik(s=ty^#-r<2J3THe0_qlLklx};K?ZIDP((Qm zaXF02W>%_UoQyueD%GK?ER$|M&o%#HYv{Pi|)j^k{EM4);=Hgut z?<_Y}&S2DmY&1Z0RrWnbF}4}0{)-K@AjxT85(S;=>^ADoj<>|HhoW-B$}ogfihIS| zKN(TvqtJaYrIxY3Cnwb%ZnRF&9Qk@y?V~oeyF;EO2)nneZM~sJ)!}QNLc?@LbVXIM5jpgCb?GKYa!}Cs;Gxbel+u%C2{T&Au~M>ae2>)@n%u zvExcZ1;cic+(+L0=xZDUvwB-OIXkvUjh6Y$YuIYT#28nIG_J(UY}h@!!JUCJWzF9_ zVh`ODYa1uDx-tt>jxck;%#KOCgwH$UB$S+KYrwvlc+k>-Y+_Z0!mb6=Wy>@;85U1D zZ1F7t3kr(7bw~N`Av2fh1xnre&$#Uq$lIfm81A zEVFus+xk+c%##u6c{}=keOdB$UC|@Z0tM2Kftfn)?iSz^#~qa9$){t0T)LZ9XHBWH zvKpjuCN&`wH;$>rDXMQajw!AcYN3raRlj}+<%LrzMV?7Fxw+H05QYpl2@0>_9OOF$ z%E&wD`++6%H^a#*j|{v|zoz^4A z{ncER3H>QBP4aBAr6D83x-n?^F)Zx(S9NUciH?n;^-LRD4kir;?)u750N8!dR?QsI z1c~||aICO2n{t2d`Iy6#((#Q&HAnUv4v)f}qC0RtX@NeZW9NaMF|jbJ;G4SD$p_(N zt7$&%!*0|{-=$M*_!Lk)`E?9h6KAz;it@nz_v^8;38QgzMBX8!3ulvD*25?{Gqob$ zK>h+@L9lDnrrD;6hd`iN^DvU;uDXwtAELf6sIPxoQA=O`V2xt^V* zTNcV8RlcB|v|wN1@$X(O_jvo0Njv*Z9UCk5WN|HGC4XbT4>`87#og4xVZIrl4txd< zz|g?g=WMt7XPeE!SQ0#qH}Hg9K*aRre)SR#QQnareqF`7IEN_qNJ17r5z;q&nyyoT zlK2DO)zQ9O0Fj&-c>(d381(RNvw+@hP`8@Y#!{UT~AJq^-S?)KFUTtlD-~GaEF~7mFhmaXhsQ*NN?z7EGOkQC^Bf|K9%) z_;uN?qm-ZItAB%BZ;1Y9hmp-1$?C-<-ouH`0D)L4W8!hD15vaR_=u;_n`N%*kSn)@Qnh=!dN3$sSN~+@{+Nrf^4dy$ zt3vvyxi{cRpAJuqR->+7_a!VKsIjPfjNG(|jV#%DgV6G?!F^&KU~u)Y`mVw07Kz?z zZ%x;H`^I2+gC5CfGR%Ja_Td-%RXPzH6%?x2>xvB73)Nf2j}R~S9)eo1I# z9nLKQwR=~@AdHCsdAG(gWf2Dg`nNk5rU(5L{y;k;r)_$T53>vh3R`2Q;J)aFk$@Ws z2D08X{Tb!FGZEW`VB~G9q~Pg-8iAyOd7$)N=%4u5kN7Ll4d0KcudWp2-sK*@^gLDS z9c&wU4NmB-WJFy5)j8keQ|V8BJTs5)DQy*)T7EMB|^y9hA z(alG%Nk}aRE)d1{I=SqsnN;&QYi06e^jb9S#8{DQ=o7jR7i39f%k~o(+MR3ZMT8KM zfU!K7?!+! zJnypcd3afPINa>KExdjAc26$4Ge3~ZI4>C#(-on_JsBq_$4kupIP~m=B8_@Ck^o#t zTUD)C?(Zc_PMveyZ2^T+eESMI8$F#-JHgKUOGaP25{KU03^&@=#jR#&t?K>1STTv1_zZ$J}{jaC}}&0|w2+<(4_ zDzqRCWbx_h-eD#_5mJUo^64hGl92;HVi{&hboMu-?AlE4|;l^~XBvx#7TO6i?;Kr>*Ge)6L3bODlActM$n6lW=#GF@Xwk z;6#mhkS*f(e6qOU(6u`npsvW{HRZQfEt+qy`mFWQg$*K$Em#K0hC={fVMUo|uyHC* z7cx!LK)?@-tq7iG!A*wdyC9smUxsCKr`GFfl4VoSu|+83nhy6|(EAX@GKyItReHZd zsw%La7>|kcphz|AKi@Uk%DxSbpZtcAYM#Tl*t!b9Qm6X`VThi^Hv8{HbwtN*$#}BD z=i)5#+-JCwoWxALiQZzv1hhtrhll*^DYA~vjl+r{FQgiZoUT0~(9ZvzlUeMj&-Yd# zpvXv2xa?|*suTBtw^rcI(N>W-pHX^kU`ox`$l*}>m%Nfqt=Dv45=>Q$8>$$eU;Yo? zO?{sVcSb8>D{EO(K~(W`i@?TT``)>i9!AR+u#bCeFu#zAVgE5a{gnKN@N{Q*R~1%K zvjcAk5!qG=ZmNg>X}GxNp!N2foPAlFOcuNG3#xD+bFWZFu< zcbDI`9={FrKL(D+o84uBuld}awp$W!04>>k=`8n28#KeuwoCw|Zg<;XrOCs>x+)1Ar)cc#MJP8{?eLHfl2iA(wS0cel!tAaTx{;`l zlt>PEnz6$b!zo$`pt>CkS4>{;^S#!r&Swlt&_h(EJnB}~e4oo$ky4SjV`B;`7YE^W zDfl|#>enZ{q&IO$uuPazcp1QOM=K-0LC-9S)6WGVu9n?Rr*I3t=KN&24U|oM&0D<}PlQ`!jvm>KQh#<3fb ztT$90m{Js0A9iweZJ1%g z`1^HU+y2ODaG%G>BdTUlNm|@VQ}HJ)ZOA+DAQ|@vdaRSw#fRA!4AXb!P7npq@N1teNQJJEUFcQS^Dk>8kmQl z%4Q-Y_X9R020_Tz6XZjv{p?~Y4CPs1+y)^yvm;K*e8_mb^z!2TiD1gjtpeo%vhFiW_-BRRxW%^b5={R6yJvQr)%q5|V6V z5j0OBxrt3VYd9~K3HXm5M>4>6;Td?!W&g5-1&f^xQJoxP-8t7> zpiu#lPw(zcY-Lo_Xl=VxA?L&bkUrPKPu+qEX%ctmJ+_h&ULFT&V9+YCouwdq ze#JTpJP{hAnP(uK!0kEFCI{LwJ*)E7J(H7GIsc33l9OkH8auIf6Hn*B7XzXbI&u_VzM1Gf&UM0Po_+q-s>nH1K)NN85w4c*gItT-Vc!inYYk$`kKP}lP=O{m z(^GY$V}S1_^3@QNybVa%If8vA!QUaC(7MIiH%?C#m(2iI2|nO{9JU}|Kq5xBDvaLy z71YM3akgrnl)DwY zM)1kUrF-JXVAWV(%*Jik7S+$=t_we5FG|A*Y61v(1Jl5_KhH!WYYZ}@LNjx^Io^!U zU47v-s%eQn+Su>ehQo``Pz7E5UY?_X+2=03xx`K;bhm4#=sf(;Mo;=`;t3-lu=z(= zy#ohmK;v~+Dyu(pJDdeB&=6@=v>Jl3`Qgr`kpPpQFc2t8C=K|Y4|(Is>ISxOl_lHU z;a9tyx1R%>kL>HDHX=y%(hK$4W(W%{_2ag_4u1!S?A8ptt=@;sb<=6{woOfawb(!({j6siOaNkufy}s$(?GJXb_c zzx3wbEW$xHGXL}J#z(OO15JOb3T^0mI3(%v-Qe5qME22_{myxQdql{Gkab~N?eeitS>n+zCYn=M^k%k z#ml%k$xMk2DCI#2pX@H|4<8B_rl~Te>L3Le8zDP}8CQ5Xv$=B{2qCcs^47QAjQ{yF z`VtXBS=p}abCYKEwAq`c?lR$%C5TFRS-pCbM~{P;Mcqm|IVbpt;YqjamcJm+{4$;k zN%+lcU>2|Jay)M3d*{%Z#jeQF#fjCLGF2VKP$XKfT95X^le`j z+rd}pTv9@=*$p?6KajA1vahL94q#uqA(UAa3&JFw3Z^9 zPnZ@P{{=N$)BzBWmW3Y|hdx(*K9u2Q{&%QhO$!^5i`aBX%?gQeQwszNH=z)4sTjAB zSE0knBKbutMYvwH*GQ809x%_)90k@369&1;7OZZX?3{pE<=`qdAj7VGgqH04_^kV_ z4g-NbEADN`T^*FBu51hVixz3ASlZC3n)E4;pvsuI6B`RfYYVi?ezau$Qk0dOh$&uX zzxd@M+~uFV`PEAmGN(+}4db=@+V|MWwD@nCo!C=Vhk^2}GcgGZ;Mn~OPY^L~;_*h0 znw1BxB-XI91ls0IKb1~0<%?Qj+yb4`6?F8)ZE9%d8&uXC7zU<-!gn3QzeJufw_ll% z^BPq>6_X~BwuaZaI%CT$!IT;~5!B#=! zV{3e{N2zQXvh=qI%~b}A{DwP@CaGAAxH@D)Bl`XX_4#S*q9)%yDH8C!*W>atZW(xr z{RiP?rA$Iz;W7am;aZ};D`u(hC*b>?v@n0?B6d1n;iv*et^@=97QA)S)iwu%)#%%y z7#`)IJkij-1Up!dHWc;+!TsA|@B=UgU;q=dMkr;~udLA4Fpdo5As+Qk#xo-^ zvQcJsLK1t=5@r?xR!Y+d2a{|rzgNItIU&pJKGs6wl7w%}{=vcaiMiJgLHSE{Kktt6LpPNXbOM0uoO+$z*X z5RV-Kc^U9d>Bt1E3+uDqyWiv)XvW4le5>ijWi=cwuJ@%+F=t$*`CR*wP&U~43H$iF z>(B=Z7$p7Zr@%d-E*N>in(lAI@hPW-thsLn^2kHgJ(C)N9SK0;^UwP~lELhUyaP`E z17O*EVt~1Wfn#!w^W>HlRDN<5==(h{bz#|4BMsB#osXHpL{^YdCj$fTnK>pG<~aFL zXAWuR&-^*dhH5Qi2(;gS`L{T7IT0Eg^QCBBK^Vikzo;ZSCv*O4)<>oy3kp=!RZ-3b z7%>H^5>Exuvn`Sh(3k`TaS4NC&Eh)t^@fw0ccOB{@k_0 zzO?5uOA8BSsC}7|nV+T$SO?HMrPda!`Ruxv9n4%GJH$=p?@nYhmP?s51u$80TS8S5 zGt-noKzT5IgZgUPHQa^(YVT~fh@HwYkPB@Ga~Hfxw;jgw)Sw9dD3EKS)=18fn^>RS z1=RWh?YZ+>3J(im-(-!eFb~p+`)H>u%*~gY=m;l$3+F>3C)*HS#It>aOZ5cyK(l=I ztI!t8HkK}MIr?(DN7LAuFFVjPACQM2e`6wF`~i9O)x(@!;DeA@e}%U+_x#Cuh>9XJ zJK}n9&uKq>C-CCe8g$7E@RVcIvlKRjfv%F}kxy_XBM1fnW9U>{K?_iic;PA2E|-^i<$F#o{T~~F`1kyiu>|}N*J2SV$Z|1xU4GAZE$87(;z)0367qHJ zXyBZRON+M{^d?sF8F)@Y)&hj^FFSyKvjj|l+mpH+lm$>U)K3yE z|3E`FScYDG_IB7?PYNaT_6l9UV>q_@Q)MBuh4M?T+#9PBFo+akVZLR+j(A&9bj+ot ze@sod+4*_XxxB_8vSw+4o2$?a%+<*GxclfRWBc};Y?D{X>veJUa_C*qVgmC5;3;+z zXjxMFo(pC<#b00jf>`qr&C5k}A}nu4LlkQ4&W8Xev{^Ofe!m&65q9$6|5HWZ{?Z#8 z>=u^M1wLHVXhFihl?65{A^-@P}WPL<3779Ne>ogLJ|${RRXPjej=?{_G#UE zA0ymva_ka93_gFDhQfiTmOd9ygq~8Wej|4LZbR>Bv%Q3cQhaBwE*I3tq+Q> zsPGEYHUgoD20~R0c^u2Z9UE#Ed~`_6_S9nY+H>o6gR^xG+*#yfxDG>l2Y85AMO zW(8FxvW9Ig$1mF7x=2ks5M3)veL1A15IrZkK{>~LDbJ`~SYWUJi@UdsinH1FeH#zf zkl^mtxVuAeYZ?nqaCZpq4#C~M8+Qqo;O><9^xlkpNY-tQC6x1wt>+|*^HUlWdKsrW@O7`l2YbG9O zKq{>K!tfkAU4v`5qs$tmBX6JKE}B&xtQ!q6tVEA|iVHL2e^@Sszsg5T3aDsUfEFr# z2o#Y_YA+Ovn&A8JE$q$VmVM$zO>Eq!LQ@s7*ZVHxNGq5@@k@vnBD^f7!zH;tnz(0! z8kHLG7l@dZ=t(+QJOKR|tIK#zC{;HBVG(ORvRCbIGAqj5$wtE0u;>0bTUMg_gRy=j z3ndztd9|83xY)S6&W-h*7+eDF^n?1vn~_lhO|rb9m0`^_mCM0_ei(*@uOD7pF|#na zkt1O42uV0%h#!(j@b0i`p-?aSTVr+>12LXUA2WUWkceWx$P5|I@S|g9Gj|Jq)Mx3d z1#G}$N|NzQO*(stg9t39Ab*tXY2KmWG=19|raOY+OUkR6#L12D~!JD#f<5 zjMF#td3O+0{vv=OdR!-D&$J0$e1dgT*4(wsvWB;F&eVV@G0S> z;L5T{LdP%O;yeQkP$KxLbHsvmOA#i}Lh%zHkrc-l7DcWuiIL(WdiKtc?qD8$$XPq_ zg0%=!;oZya(e;uw1cfPOUtLm*{%9Uz8CL^SkF)8{ybqeND}|Qpv&gVW3l&W#n!BQY zyh}0;2Ync9H7`Q&AnVO)1Ws(k%cF4cq_Wvc-}jfv9ZPhrE#DS#sc5nGSCy2a`d1-% z`Zx}*?Tit^g3^OK5N>tXLux-ocd4Z4rhTxU)LxuHnlsM^98mM8$M8v$np(1-Vu$^);u@q=cki)RSI;31WD%xrkq?+zo@mlIg@c^I)cjjF$ zBvj2Xj^YhLEZmp|J5Z;U$}67-&6;E?koDPyyHoa|Cg)3%w1y%#SE59nmy{uHquJ%KDZip0F2xaw{l7; z{psZ&R4V#L*JgI=|K|g#tcedYEVyHC0AVS;G+5>9NScQ+N@6=(|GP@lLK5QRshF=H zS|io;mexXo{Fjmm1+k{bf{&s?b6p&d5qex)n^@^%vWjdU`Md^8o5##2L1##$r z(&)*XS_Lo(`Bk{*;S`&Y>d@T~UfhzHir*#-#b^+S;RN&1>Y6ywDA z7$>>NB#7_R+=`-&s-xZe^ib0A>LU0HGyApyyyx9M-+%m&liNu8e5>PGcKwt=?2*sc}w&mU@t-IuWR zFVqQB#3j;(J<8ENNe?ByVp!JtqQ&(g6J`>SSOUIxz%!_4m#s@JAlD$+2N#YCL0IqF z`Q0U;+v7A(F%I!gF{+3XDEX(5dZ$-1ijw>C9ps+w@BPrRmp*tDwrd_Mk$L0X-Sl!B2QBh0kVA}5>9FT z861B^=7ybF-F`8WOzOtj!PRr>pzpWNH&RatAdsOSs^hgZ zso66-@GQnJMC;=3>UcKz8>t9EiCd?&we{?Vzl-?%XQY5weWxAg)}h5?dxn`T?%J2; zoLq*<`N9d~0Od?=bF;N>a=8Rhh`h;qbDMDW_Ne`1H0JCSzl_sYE>hoM;N`XqQ?7$4hnNp&4!;yG z&E=0IYI00ysY8cpx|#qhUqgs8chsAqqc!#76HDx^*+!Qs9`$@#qr`wK?_fjCP#h}r zhtX^wb&eu=OlcBq%0x2LRDiqGM*T$GQINWL%ZZ;fOR)9?*rseoQwaM@9TrgF$a^C< zTaHK|RHz=@v1y#Cj1rZG&+nF#JKQm;`=%THlUt6&B$v>45kt}6Bsl$_?rog1TdKV1 zofW~|wQoN5PJnbvM&Kn95aM1d+e_TPrU2~>M0~S}hN6Vyl9@;UAL3 z!P;CG2cuY{ZQG$56eIy@sYy`CC@FcPV84f2Ev^N2Kh&9dx&~<}GiQpLYdXrfQ*O#1 z0p`dHt+AdNeyJ2QD8{`BVG!3GPmfhmC>s_BmQGZRONa|O`}zc%13XMxekNX{CNFR6 zCdLQA&8(G(@z@Xy>cw`ZGrqE<>Bwp!maZbzN2IIZS~y$s4ynW++YTQw^_Z$sHzUdg zCaYD^NcZ+XGoHhY^lt#s=`U1wT>>O~CG^`~nTK*_KMqdty~Sv20Y8@zN5kxE_sX+Z z>qD=3sZy?kblqkT0BobQ*-A|moMeox)-~qJO7;wA%B*a*M7nx4B4++tCh|p??xPNG z*pbo_TX`=teV?h@B^d5sTiKmt?usB2(|ZJ!Ym7;r1Bk0u!5)gg*$*WQ?c7_twZ?l7Jk{7%=LG?+~4Z8YmwHyT*|9fy16r(8rk7 z?9HxurR8AUvQZ#B<8w?+7!Wb(8{-)5Z3sKs`$5ZAQRkq_Jk#5-zhF(nUQ+Mtg6NB; zCm&h3Ng@-!3Stv_%(`d;UjBg`RLM<%?`CFtofRtx1aI9GWYc}O#)n2ODg z4BN*g(Zq8R_u&Nvxi(HH!1A1p#!`UC zRWJ1L`glhO@T+)7&qQYfG3w)6l$T}OHd~aH-Zvd@g^)Wix5g6Yd&X4Mj%BnG;fubA zHDHfZO6=Aq8x+OM32F^oNosnC{f@a-9e_c(+L%v$}RNVB%iL zLxSS#NRO!g3z*4pp_>uTsF+Rb&gK=|T!1Fu8DiHj+mcD(OY19BlDZ_$1)G-@#Kj#4 z8Objddi8oZGz*x@(vz-<0u5FRbn>#P^Jqau=SDEqBwGt?NQCn}BqAR!^dghN7^ z7VMB+*i;BHAY~$xcXXG;!10bahJ!ce6MKG4UbNUJ^^jP-pAFvZt@pb*L4)-jt*xz{ zSXHw_5#n-SIWP8TVOLdE%Ol!x6W#Oh!ZJl$Rd&3G2la0 zxHfj%XH*C{aE_W;u!$5T+ z&*}TBgx>cJWQ81oOyW*7?~vhhfm*>lH9+WM(Jf$8;k$dG+E)B`-T4(W5qHXiQ+08; zv#GVad%@oGQfHy9i@?a}_`OS2hW_pcEON2?t^SWnz&=;xb z@Z9+KWnF;4e+@}ZQVm)Zp0D&iw~Vd|mLTjKe{frY6BH0(&h_!I`YN(ZqVnh5tpwrw z{f~`}*ei4?lyu8ldk2TFr%v9y-*&NF{7gKS&HCoY?_JmjV;GymZTJP%vMVIBdjDi{ z=$Q*tD;E91a*Id)CrrBgx0qz`v!vX1;d`YHGirfBGM}!=JaI{-+D_Q}9t{dBBU-SWe4`(2~J*Un^>WIe}eH@%-mI_;J;ZH$kCEXrz~*qI&o z_y$G7`R+@-xoA7|kLd|L&36hB>MM{4IEEz!H}CWL3k-SN7GG zevZa&d^A@PWpqCX!U#T;sBEE91pL6%2B4GklhrqU?m-M_@GGg<{r1l&gz0yKhfP zLK2$TG)i0daqg6_R|O6LaB6nNwml6FdZMZyzEx%Bk(#8|5lGcxgQVoi{P*Nv478IAFo56hO6u~Z~sJ@i(Je9Y9PX_Z`n5;9TmtEeyYPTQVb zg7Y!*n;s%?MwlCgI8BVg9nB~5A|SFY8ntQ)&M=x3OQM9R1neJx$J9r7@U7kH?7G8@ z{z{duA!3iYZbfqe3G7UQ(vB`bAp8bJ+3xPP4GM%Ysg<`#o{Sb-S4OD=5ses8%o4eN zyo~Q(1Hqq@O$);?mbU;cA=@`mEmG}YStz!+?!sIHn*+Ghnko0T7rwx;fHM(34$-?F z$&E{wGXlj0x*n$(&Mm5@;S5m?IG^gTehu=L_njH_Nwi({Z8VVrn$&%OAqxrtairG5 z1S32+;iI%RNaxz+;!}K4i`}QAZ_cIJyCU5FVx?fhQVhXE1IpRR&FAv);bLZ5>pvTZ z9TM*(J4F%kD&gD0`9=YU2H8iQ_Jrjo>};=4E-W$;yvBuE3Uj{~Q+ACTwmie!By>Ww zStK8n{Xbw*)qg@+lxSQ2V133bSO_Kg%C8_8G&Cra2f{#btfz0l`?PM4^%1;mD``Sr zMJh4f?~zIAJ|Ou8Za(L|3Qf*v@Y^5g)dn%{PZN;-{rB&YzmkVv@;N0)eN5ykw0EZb zEVtIoNE##%hA=tM#`))1)i2!S*^JbK*o`Inh%_;63(s!5OV-$spK#^egFMIA1DHt~ zPx}g)M>Sc*sI3SJZ!apb{P-MDJ=e+yq`mH=9bfn)XYbn|Oe+s&Z6qQUIAVYOiVtg{ z?pIa=3rCIK2Dy#YR!DaC1b{wtl}EOzkoJ}ph_Y4STzGS{FyHm%egUEJjn((QW*Dw!3 z(7XAn8U}FQ`kjMzlPd#p%`;*h?$^vC%+M>tg{w4)nFYCRiTrwu_YZ%mG-!dsBR3Vy zji!d-ma`-=6`b-*nqhH#9B7@8i@>)0`*`0t;PLd<_m)D$@6V6JrhRs!rw^-elSyuU zyYJ8pKWG&h1$sj@dxAL(*fPdiQy!uJ4-doT;o|=< zqh@)zx&C+5EYE+0YX092!~Oeb|2b&(KMupipeX#e;ivyUxf$>hMQaBkbon>Wl#7Go zzaK^WSHSIm6-E0`4~CPAlZWF!N74Q@eEu8RIR5j4(usG&8OAft!_uS^z`vgH>BQ;n+WN=ao39UF*Kf7q;Njup!{4;NTpdv8>=6(V*MN#E$gf^Cli{vm zSjzRU7|v~J!wzAKmZzVkRk6F;N>)iaG!}g~^|hy@L*m1Q_!3ZD-!IothgC_hDN-(y zYF%CfJ|TtVu6$)##85mvl%#-A8Dpcw^$l)4pcI3&4ane4+UxP-KtNk`&D~&1$l`7! zB}C!FJ?lVB9i0~1{k7$5)%hnAKH+;8KHma&HA^C~mKdn>af<%IL{5e15nwNejR#JL z0dT{_QuH>|d5|6yyl;^b|NNF75ob*YqL1v)?!Q1!3?CXn4MkP>g>4f)kb)C!Cdwh+e+Yc=qgt3{Ew-gxko zfK;+qG;^CG3f_2?D!E$@vNdrA6Zt6m*jfmpb~eA!%x6<6(ko6YqeE@8NjX-2Xs@DA zx$4BG&^kjill`?QpHY|w>$gB)ua4}_z0)(MzD&^2au;FDIF^6KTR0O@aYXDmmGn#u znU#+6Nfwaklo2!fO?9nw@_<_p9vq#qfh0Ru;F9zkKjTzm@6w5a72d<>Cmt3cr^;!c z;QiBTe4r|e(_ZlP74P7BVk)UG-RELKM_6OQiXZV@gNUXm*=@^XQf6tw*h?`p%9Vx) zuLyqgcT9DusVq)GI+!KkjoZ6g8E(icb>?u;9E_4dKbH(O(@>`-e|(MybxWCO(5Mud zBNk|rR#Kx^HmN|eZe4URH!5AV0J^osdMuRR{Mvv;64r=Xzsin_6sMeW<)&#=HDq5E zBOL0y#ry2675C!9ADNMX;jZySfKGCKfD+nkg5*KEOgT}6ZmqrSuY>0E3ZwxMGdPWQ*ag!e+EHfPx$(h$=r z4?6NjiY6U%5PFN3&Dxle&STK=@=kf>#zoVC@H2UACGB~q{FtZ?l50<6Do>15!Aidcgz38oTG$1*guaTDQvI3N-B+X$rN{DS=bTcd_g_yA+MWl-QWz}m3~d3b@(zWl zEjASE8DgktWx6<`{rEFC$h+h5$83K+T1M(46ZY?;aNhZDmQ>_pJNP)EqO^;pCWoQ}wxD>iPF*BHv)jE;KJpmx& z&V+ZQCCk&+h7vP!gjjajy^SMpY(VerFdFj&6Rlc)MoL@Co?U8|!|V)-q7Bvbao z%gY(e`!qb#c@VGJrQ4!ZAT)eRAy8NIKHH~d|E%(IQ&4pnnUEJE`)f$9^XyP+=XLQeonjc(ui0#4V@wDQ=wJV8tH`{!Q z&TrSGiR4phn+IzkT6*6sm#OSN^)_wPR>wUM<@?^x4CVt)Orofdyiq-m-$^&*i&RPD zwfCT5Xl-I0NZ*l<6L6^vRBVTu;T#%-Bi-3&@_Dod$i5V`W)7JSRuaF(?_*E^n91I4 z>en|$tzFaR3&zNRs-$^O+srWhvu8WjbDJv9hcXee`nxK*NT+P}ngzjl-D0*Wag_PU z?r20fJEU4b?e_*Rw(8QC8Sn{3P@xl1XCz7xHdh9XM}5ztJ<}0|w?vNM94+)tR;h0! z(3N?KzrUd=EQ^-g75M2-A~KVf3{jb44GV*0#@hrLyjm=1+IF%`=VAO6z+FX)o+Sn= z1GB4M_6*=EIn09@)Nu4kE{?J2^LK?bi(tJRZY_kxO0(DU6`3&3`7A~H+GEoJ{rE+3 z#ta9ip{N;BXo%WO??8`j0_ez}8s|Yw7O@CHi)YGAwu=dsrZi3#@9+wRaxqkiK(JQ| zGunxcEDoL=a(R&1b7gmW()gbZkdFU`C^(N&5!^AHB1HWH1k3+8L_VH4lg8v zHzHakg={bZ2W^-UdtI zXi%C^S8}VDEP)?EC~3GoSQ5x5uQLn=WB80aV&?ZUtA4qLR4Dc~es`=fzyp9-JC4Kv zyTmAkNA3VK1u4As)$aiJZo#{<7%lUK<0-ttC&PzIfXZ6XA#kucZd#YFD(*%{9360% zcbZm?gL`6jU+Z$jvBYs#H1?^wP@k~N^ce^C<4;>As5RPF9AG2*^G(!LL+r%0Mw@RM zv)1eN?y*vpTMmoi7Tt4Gemccf7kusE22@_?+P*qq?DrUWuJTYl7Isk^TfH9%dRJYg zuR3_&>)aqV5pyllBS<#(eeuLv=9asZ!AS4RPR>mw{N?t0TAFy=BNpajx2)+z&2P^; z=Qd6^lm{Zd=Y)AxDvJ+++0YtRF0pkip^uv1JXlLNcJjn6L5R^9VE=u>i$dGRKO#27 z>h&lYY_&zlET1Yubb-b~4Z=GtWhr%{+CO{*zGjSwM1OwG(pzDLs_> ztQah%)ogVu!1w>mLAS0CV`v4tlB>YXE6((>$1w!E;wWV5p7&VBZ~{f8Kjl@rIi=ru zij*J-E2}ZC*dYA6oFZa(NZP6Fx9K;<$@?U{#+e88)JrE`j_t;(rN()hacb-fhK=a3 zAF=s#e}9MY3UOF}I-ov|FRu)Zap39_or2F`9(#Atz4#04} zlwG-^Y^p7i5ZEbJI9~`XJ-E>JLAofu5GITL`=RNl*~;5j-V&b!Mf5&GjG)wxv(J)fsD;rEYHFaZbZNL1&qsWqPR;>M_Gl65`~=qtLZR@pdg8L zNz`=!TySgXU&M#mZ{o=_;)?fW&@u~*KDQn{;46;#eqRT9&@PzdWg#|1sdd;p#RoPLp6w{Ls)nK;8{WcnhpZ4J0yJPAg{f!11(`Zua;8)12ZRRQ%?Q4 z6B<0adStNvZ^ndwW7%SniLmtLyZYljo1MceJ3y{U$G9l0hlvG_158^)vtK`sWmCD7 z$P)@8^q5m5(OPzPOZc-~ z2;=&gqx|kCSw#GpejrdJFnMFOm3?m;hY5?>3S`srbufPst6b>uX zHT@={R~8eF_h7{ZvYls18O364G)jCh+EkXs&IR2J?o^r-X(GwtWxY4}DOo|p>tByk zeVPUC!e3C)+6V=`Q9lXd(b(0dSP}!Q=QBAi_`hsHLZRH#DA>2K7gUr}fqk<+W?p<= zWq+s>sO3u7Bolz@qnb24sW&dIg@%xi8oo)yuvJUr;lr1nC(sq~5h+`+%~20+;0ev4 zU$19U_{54W`Khr8Zo~AP;?T|5(#vua#VTuc^hz+dd#ydivvD%t*y~xyMaD0j8hZt?N@$Ph6%l`G> z@Nm~QhK2_ETo?07dWfiS3r+~wwC?J?m=cLIl8<}@P zkugp`q}}?Bg%d5aB%$zFX{d^ee1(wDkzRDTc|5QmGwk2&50&YRYhV5tk;e)pU{M8CMh1RQWynoY$>vcdW??L2zZ6|lSV-nqU z6kB<+bP9AqsvW=VbLAkBH%Nn!ZMDk1r94x^~0y;D`5 zOq<>_Xr`Nq$=*pm`Zo2(CLVIJQxIy1lcN@)W1f~6<0M897Rc~S#pfq5>b0R^&4>rV zNSl25j>j**sg=)bayf}A9N{bPLq9tO^7P+S6k&(1eMu%QYUsT)1jjyJEUZ3WJw6g6Ij$uh2U0^%X{*(lNUytd~u63l@{JB6IP)oQ_*BT>Vx-a z$Ed#rgY+d|z3Ha*ku8q_PbL*ZY|+;3r(}Z@*p=rWG8IuxA!#uVpLH~QZF3;5w}YAA zo|R*Rt79N@(>`t+w%^}!Wc>tbv{D4Ql9PA3*E%Umn?+uN-X6~Depht8@JAGA~?dJ;_G&>aK$RA!?X zDy#GkB2fB<%>7{P_ii!|ZBaQco*d23ZC~j6`O^dlSh0Xb;T~=D$a|NZ41)wQqg1k` zMFBP+H3sd6!`rJ`7m0R^K)VTp3lVtQ@>p4HcEO_-W$gniz36ygq6rr-@-!TFws+@b z%xGIjiO}A@%d%1s9`T38Iz^S)Y}H-S=1dYTu4WmSt`^ipNMp5Q%88as`%p`(Je9{E z0E!VlPlSCGPiKL~AUzn;p$L~Xn&G;3fmdfNMm&BX)HhARRq6->e#=v(z3Ui*)4kfA zsfK{GnNOk8pe#K`W?YXJTBeK`Wv#mdPKn?6U-R^upB4Z5ZJBN?{$-j_FRcrLsDH7Gr5V}wG`QWV*C z2=I~W>uRKtnnHJuqWcHu2n-^Y5Mzc?l+@RB=P=zwVRPx}RrJ45$1i@ed3BVm=X3$^N4!B0Im1!g9`p z-XCgbfj=_z@(T#u8H#I*@mZGuTS||5HQxtmNW-Q)EE`r!T_&$4uGC)t9O%0hEfB!S z^<>B68MyJrIxkDM4&Ah!osbM7_b|aOqn`G!(BekPf705r$P(}F6uMkrTof+8n}cm* z;k}P@SBq!}{fDuF`{kx+!O=>^N{Dts!}>+g+%BEUZT4( z4*g^Q-F0=qYLfalEWax44EC4t$ha6%I{|l3rzmaf%fY_9QS)*0t9tXPShY!2mMU$6 zOf};T?^~P%FG2#cUuHV82+({I(q>t_kDqi<1AU-L5HML0_Mtghdd{XbF-6-epMxg81eWN0SiZB(>YBVZ+;D7xM7+(KW>3_`^dWp(>O(l@E=_irs4!mAe>Z|%qe>10GQzha{-;YL*lUjOe_l_!kw*w0XX^t~$*Wj=6 z!}ft5ceu-Em?mi_DCW8M~VlFXPjY|q05e4Th!G)Eyl;9J(jX${gg^?AO@XMsWwO< zZHz~!_p_dDRSdO`!n-yqRl_>j@H%A0lYF;aglJT&F(qBc=Mk~#iIerO-`0K3J#R%Q zqI2@vtSI(AO;2$5VLno>r!P+yB4(iAD|A?->c$GgTp!TomaAJA@}aV}=Ywuij+f!u zrmwQ@JJn&FSPf0VijDc^a2bA5-0hGF!VJY4d&`lap;nni0a6|2UCeMTH@Rh0BHc=Z zDlR|SHUVh#2B+@Vp25gs_$q$-{MF7JW)>d8rjjvYZC0&ket0y4z+2ee(~DL<%FFsb05V}XN-1@+D?8#~}dr{SP4j#kW>FXYiI(fS4rk(#LvJCqdULe{zgow!vi+&};7=i?@P><9I}?bWJ*^VUEQ= zQ^#+SU-B8i!Hh^Kr_908{J!=<9!|hh1v>2Sh*jc>)y-151}fYVVtuJ-BwvY4hKt$< z{sgLAA>o7<;z6@3@c!VXJGMV5!^|(46zPnLmmGscC_d1Uq6@M(iW)TXrCfJ{=>|}? zEK6}vO&WDqM|1_rQWL|mHgH?COSeZmeU8$q#Xp<-gK3Xty98BmotsyPzXu?D&ZS}6 zi`T}3lG(%~1;-ZhpPRodnJlHf$|kVc!yBK7-O~ z^(is1S-m4YJh4+tBjXi0yVVnq{mgW*PE;qT3mHLbb;=%6ymRyn`u=Cf zcc%R#S;eaPYay+h@}dXiDWcoo&)2Mt{iwYUPoK6^v)?m)&HdUVv_tszgvLP@qt(_E zsg!s}?fJfC*%t>()i2P%u+R~BLCn?uz-67nBcQ3sc{eH8sw^j1nYv-xm*bY3wTZSt zi#ebOoUT8WP*$LAh>SQ5l9_XxsV7U6_W=^OBD_(UmX!Tqar?Fs&G2-)FS|8E5VB3J*aFHsr&{WX9 zx{*Bee-?rfv+$hvQM#`Rk)Z0(&JH9WEEN_cQR^UnFs&gbA13y%H3njy$n450A(M2 z(2^~tdFIU`UQH1?Z%{tmreAd9PT*)7IwECWy8iI!cZ&y3{+gE$(6*UBEaU zXyv%A5dUd+(du9HJh@>1kip24wqQt_1q;~10Jb4!r#WGmq%c^Z+T=;K$H;P_%55KH zi;2gRdK5_z6$grhu;hPpqQ}#Tgr=_PdwQ*bqwC-FnkArFsOFlFvRCc#ZJ((1$c@!=szabpu@;MJ(?W#m8YWY9G)g#{#LBH zs9^xmEfsncWuL&h*cFgy)8tN#R$b@t4|}?@+~M;EZV_iB0#;q!&p)bnsue{9Z1k-Z5LN<)XW+lpAbS}j z+i{@HU~krtXXij>z$)W~Xt;x_eh6KTws$V1i)> z|0vAgj|Os?3RBs<+C?fo?(BLu2v4Ln8~IZzU#me<5zn8Iy%h4l3!HG^>y+L4yhNVh z?dh$v=q`u?t)%43M4&ztv|a(q(~6>CuERx_?*G-bLyRMv)|&4T4d1BLh-U-&d%1*i zrr8I_+%>ILlrhiz=5*L=a|y7nl7yeBuaLP#?g z9ffE69cJka&E#ZDd$&4~2p8`V4RaBw)gB{3tJ+Jb#o?;|r>Xv)Qg(A&y6Gr2MpU?z z*jJaEvB5fDW+ggw&tw_rQLFqR|Imk@n}I59k14GIvp41rMh3oIv~mM)TCU3UOM}R* zpj=PlEOC9AQ6OzE$Dj>hIoqgNv~aT6q_==9LX%E0W^@Z6PesE{7L;FIRbe!GkE6WAAlqm(kTWj>Cl_1u`pn9N!Em+jW@oLE z`tYY)W{L7CQkpilG6S&^64Pd0+elW`$8Q#HKkZ5W-0@wS7>SQ~w|K$FFt@v0AsJW= zil&vKc^?k!D#y~~`JX}?OCp9J#g45w1(5uOcX&}^(N_D^;heg=rWzx6ROWS2Hz$D{ zxq*II#J3GQJUJ{<6=UCc+&B9KcLJV2uZmb9;RU&(_M=@N=$oG!1b1|yYFoxk9L$)N zsQz(*u?`$am3ia)f0&mS%Lhr-@$4OsIQVP5b~jYSb75rPyRK3Hn%EroudDjY@-DS~ zW#}(z&p@kEc*o7EdEHJ~0s^WVjWqoSCHw;y2D_fLD*uLx^5dk)n4ixl84pgl%Xq_9 z!{{UN4Fm={4wK+loYfBqJ$CPh<7mpj7_Z*|*%DV`7yd|LgF}uGGa|S~-q?3}db@w- z8?&I^2?K85BEAUL z*u4xvltrO;qHqJ;5nMQq5zL)E3oz&cWwuGK@Q?nsTXe9K1TXZSpo*|kt2Cze0ND;x zwbrFL`hETb2B!2`SxCYiA6YP%7r|x;y9^Egk!TAokYdc7UToYPU+>!W?S(~FeCI;S z;`LXQF8b-0(fJ}`lpWoBf|Jc=KE0i8)5w{WwPvZs`jlmz1>tY0vC(<9y`Z{AcK_OI z*5mJ`mdqC2ROJH^-PBDlZ4g1vvrcFG9fj5rQJoE*ZO191YXbZ0A?B2Hv9`D&e6xyO zRw6Z?QAR6EdfC?RNtq<@-V%?jj%V`YuOXci@Yj+--kWMFEth=!1`$Kp0=->I{9jP9 zc~f2^wKBqTag%HxWCp}rNI$}oqlHe70kC`^4c?swYM@%6CQ~ct`AKu>8&kUcFK>gn z=u{gIj^C^!-#tFmsz`FM--f>;L(hR!t6AG%2`x?>emyri&+~AY6HD|#$W8|t z$${|I%|hMfwOGZgTj0>7ShWnZzX8&ONGKO)58BpK^E8k#$89cb~6bd&%GoXFc{Q%sOua=!3M%%zm3J)8*r>X&BF#`$K4t znVqN#NJh`1Cf3=~aM_7r7l_8R$CrOd>XU{QX&UkUqf;VFX%MX9?&Dh1>^C|^DO-d- zossYxCLR;xipxJ<{J31W#_I}raEV6ke(|2vHvMGTu<|Ns@bcM2;)`!+w0%_}WbZ?M zv|zb1`RwuoLY>56rWhjvYFDF3I;ww6DDvsj_t^jT;h5tUHbrlZJxR`A4wU!mA7bpw zc3*UjrlXo(2?@XZ+Aj&L`FBi9%pqZb|2!UFgtsuUPB)~F=YOjiHb`ABYQ~rRr1KW7 z!2MvJF$_gK?^o>VuvWM-G_f#(7g>X&7B4{gUKF*IK8zr-*3P@d7M%kYg7qCKU&{eO z5zp^mYUco;KBnK!6(~I@f6eAGZTH(NnpTook@^1K`JkqIAfKb)s}>G!glijyab z=377m!LZjmEGD~Ec4)rSgi=isTEJtQ32MQN#6kO{j+d)xJtvf2snk_~qcrA%VBPB` zHb3y_{;Vmm`m>!PK|Qaw$KB~i%j-Ow%7LO5foWD;|MO`q4}Uqx@XyYke8{9Djt7(h zy@%o=TO_9fue_i$wb+!dlsKH|z$qmecl`L-zmg!Ma6@%2Kh^|nK;ik9wt>~{mQeFp zs!l1DW+MZNPyt1Tjt+BR|9YKZziGO$&{}S&vVbR3JdO}c8(37=fNupU? zuE*QrCY_uxg1twb;4xe&a9QfyIIFFWuoVncR7bWRH+O7S!I9lx@e&Z9}NN zSL^~B3Qx4ZI&%DQ785ACNCEW{*r8CJ!`7=GgeXy31u7+pm+)-qg;2Xcn9fm}1d}mB zQfX8rN(?1L7t@Fn_zmtp36OdrM9-BR|5#$vrIUxkiY@cj=;75r5n0L>N7r@}FGRtY zA7$msihcvZSt1fdyd_=xp(F#TsN2V~{Q4`MQvqD2o(njl3N1O_LzQ{q6k}sw;m3ryMHz@6%{VAWI(~9O|iCXFo z$JzaePiN$P)zD2d67Mm+B70!_>s=*cGA=cY5h%C1`(Ljl&UhFzDrao#KqFQ!d43E^ zuhz2SYWvCrdX*mL%2)@b|3*aAl`hWSMBf$S@#T_L;y9c&SzNM9?{EMwnuR!%s^d(N z+R_K56i0VcGJANezf_t4Mu6C8aiO`FZFeB4u6Hd)VB51sRkF8eOXPIAN>#V6^w|wf zM&s_=bl-*HU&Z@}sZl85i~UFXgB_MwU&b_30_8T6&bV25rwpk1*96KZB%K_k|DN(# z2yY%U8hvBi(C#j=fP?~ERajvE2`9VyDm1{8D_;?|r_B7`KV^yuV)s3E z-zLm^qYG9b3}OAZi|{|@#_NdO@qqN5uqr@<1*Ox|J!EKqiy)7eCqBVFgi?H&Pi>g5 zhH%+Ym`%;%_OEq_=>mF<^gAJmsfth_2FE6LT;}hY1o3_vZz~134~{S+@Bs>EY9A zpYsj#oUh^Ji?p@nYNG$P;0gRutIvSv>qQo^Hj1h0eTjQ#Ew#9z8wSS=we}4%x;?x) zb77txnSi88;mc1b7Ew1%i$jR^ssEZcB)&a%)J?h%QAyuYbzH-@DLtCmMRHq;DQ6T5 zQ_Ch(HjJzq8LAp7TsL)?mm{$-z_xb~W9Os@f`0~qIH}$dZo0No;32uo)VQ>($o{;O zKwC?3an|_rPC`~cpDz`KO#RL&)SBjHGKP|HA3X@|Gd(ZpPS7ll;m5L~ z!my>-Fz|$B0$c^%hMKI^%B=DfRlnOR~ zSSZ{B5L8%@C_u(0XyE%_KEoluWWf@@Rc=3rXud2%koyp@bfZGj0as9>k3qK4URO*< zz4(!y<`b#wy1_oLi#dxLZ9110xX#E0l06ZrNB=eORIp;1V<8FhpB8?^s*Iayiho(O z1}CR2F1g z(4V`ND`x4d`i=aYK%*Z0=|Rk3mO`#wek~hnQ+Bz?Y(nq{y1rf;ZLAe{qgh~sNGu*! z(YR<(Vl3Z$fd%U?zN9=`-VMz*=pYh<`u7bR3WXzN3-u2X<0zj~_38;BtUlx-L!}$r zY?|;4^I1pp-UUxAe>_LYH~0$VlX>yqqhL>CXQ*H+p3g$S75KO{NcEF~k^g5jZL9xH z!T29XL&ubTIe5dDyht!i<1x|@~ z20F+90tMo#C;<6KeE|Kx^#S}=j>h&j`i{o`S{6+~Q~)4i{-+WkV)a=qWNc__Wc=US z3}#j)fD8d656{0v7a2)zN{TKRLq4`6Suu$~D-jmGPG&*x=}wN=>M@q0GQY5iX3Cfr&0XSOKC(Z$ zTwZQ$bv$O?0_BhumNhKU!2(4t=1fUM3}B$685BSRfx-}gAOkVDRnpRM5<+gr4NBH% ztV6$rXX!x3n0F9Kjds&reT3319m50hVX{GzCp6e+aN1Rsu^vf1U}m@#CXxopqn=)a z*)=lNT4Z$`dLFQ^_QOP~_|{RFW(wrfU7Kg9E@39JeJf>iStw1sXVV>6DI6`4-+Nm} zE0-U&0OmU;ZR4i^46PuVw(^ik`rU#64LdGyYP}#}C%{9@6%sGBigaiw+jOt*zrxa-9$D3mVr*z$BuobNuxW@Vm=l1jn_~6fQ2EJ6McgYoP zPR_-Tw`B3Z!P;8$9;$M~{BXsno_J|$oTUMZs0Qo4InYcWdj+Dq?!@hUn)G@qa-(4V z>Zsq@d4GS;V^O$1q%_U?l8w;CciBEQP{U5BnO0a8<Y+&a2kSv_fmahi5%I%?z^d~j#8CYLe-<<# zM+pm7$fYg;qV!dY!C(-enT9EWJP8iU#htb}dYqO&0&_%Y1@i)z=10uA%t@vLnbXI! zf^6&Qtoa({tGJEh3SHr6xlP)PssoAGlYhnYMCS>@gQ)9IwiA3s4T6N#D~f|mNF+im z#-R|BKDUcY32TfaI=sFCmuk#NkcI76K8yzr{Ps_3UYIh9G;U8X1&clh@&FndCE z$qNF+xW^b?5?#`*Z(VscW+h-a2%x~a!w@H_OG7=Nejy6}zC8~=mggX5zx zFjF`paMmDlz&m^lV~X0EI-e#nX(I`ex>~)nzPDnxlCqLTEmCu%R-}@^y>&1X(6#}anvZAoo5&fKRjwnmyM&=>*t-_3Iym(&<`*+ZH(*r z>z3=H8`bVe-2Hfoc$(aucLCh~Tw~m#TmbhTogN*F>PnsDcIeIAO^r+WOKgEwIuSLp zb*hY;o!5dF$ES!_t_P=Un!Al{kHyCZ-5A}(t&}YqWYGlb6C_+zufxk@z$5;37gjfv z7?c?-8_Jb+j%p6Wcg^i=|7L!3{&GJVi1%-7#A^8Myifcgl49b+9)zs@Ty{ats&8)O zgiI{;GDL#g*ig^Y+%|0KS7A0GL< z2G!@y=2>SZXTpv$XC4i>3@8mA2DqZ`!xx6U(O#ucNYzQ%@q+tF2Azha`yF;2_Ja4i zWWGztk(^1Vh{H)($#7)}iAjjB#yAREkR?jGNSek8#wC+v%j6at6~h&K#-F5?$#N$_ z6q6KNOSN@OJLNj>xN?Xk7uia6#S;#fj64aF(ldT@Aif2t=T#(C)UB+a?VfS3$T}D} zyx809w;p0S$R5z&hTS+Ha*suiT~1|d{c1B?$-4z#1V8cn7Ff{R-kTX%7ryt!R)b3$ zO=(`)(JNF>yf4l{vNBnP=Di?AotlbANq~F=u%dY5Pp!>Dnf`eRcB*oGOCDw&!>7zc z2MvQ9g);8C(NPyt_gV2$4zS2S;dfJd)_eZeAjDnqyOF5Wz+<3p^llW9%BNzqnj?qM zQi4ge0mr)V!Lh;1N${Q|Gr3BVRUK8OuGB;%J8w%Jc7e8(+hBW#SMf{4#bDxKY3p!n zZ0q5@+kG(BGW==~Y-CoXCDtV~3DbKKrgai)ww0ZgxoxTjMxB)?)x5^4`_GA%$~tRz zx7{1<^ZAF-2VSQqr#lzVE+U_STA8-V{Y)2C(yH|}=x>g@=VBi~EyMW?;+4 z3b&2Qqu+T$)uuIv!8&f2Uo3?!gBO1{S6OWc>3-j8yzjqXyCkY1gElM$Nn zm}!(bo5hz^m5rMnp8b+zp0k`Qn%kI1nwOLhk?)*;P@qyURLE9XT7*>;Ui4mUQ@mZG zP|{z@T3T9$Qx;tgQtniKT%lDlT`5%ATt!orTa8g2UISF)RC7|RSG)LA@@H=yTU}K> zNqt5GYC~8faHCt}Rg+oMcC&i(Op8QIZ!2eOLmO>daXVpqdIx$(bSF$_K<7u7d)IyU z_wKVE)1JLv-QKl6wZ8d&`TofP$${ZPk-@$p{-Lg6?&0AM4=jVH-#rNt-yEd0P}))!QuF9Xmoh!}{Zo!uT=Z_VpjU&HwN<1#N8{ zjcptq2pIknjSAY^eiyKH)uf~S)T@4enAw?W85s!JnCNNQ8MFbS_O?#n2^bjuR+vf~ z8=33>-yAKcZ~xge0X@r~{uBTT#tybl_J+m|TwDM_TPs_8#qaut#(#Dc=|0zvW&GO! zMS21zrhjcRd{+P0HX{Mke;vU@!1R~3pXy~{S4UAr$4{U5vl-F9n)%x_(a&ZW=>KSL z75-?PKmX*Pei(E=J7V~&_Rr3rLzw^SN=fO@4}U|Tr1V+O@V5q6N$JxBhQCcvQeynv zX8Bi>YO)3v#)f}d6}P4%_lzq=Q=W+0&d`(KM&GZN7MWjW7h0Vvr1v6g@i zpy+7tWa#)eL=FV>0403`2Y@0#$?dx_Ku+J(n1=`6*v81#zykh{S%1Di`})6r3SecR z|6Bw4-%kKW$shpGg+x7c5E%(RO!)==^{-*bfru*-B-M5`{*-PHe_qX4N(Z_4HTW=R_ zcTfAViZZo(7R;48RoZjKF46e2LqoSNTZeZymZM7%Nwd{}_80DI@0a^)NlNjpL?w5v zx=1mnGt25E9iFFtM8r(CxjDB4&&bZ%xp!(iYj4izWYM0~ihH+3`^t@3)Ty7MW#=cz zI*mFjI(uR2??ldJw^+Y1IUU5oNHNBKR+ZLic3NcXB>zMiYhWD{e-p95K@Qw+#?UwR z==iBSUViOoEOc+bFIK7j%u|6YXtGb2mA|{t`xcw^Wac13p_=uyUaM!-l1dNXwK`Z| zmGVouqoR&vr84o%#?)nDr=8r|>@n@@BAurTE?#OMb`YvuW0NJE_9lRq3iq*5+FYn> zhbcXDqUzNuYSFDWMDM6ZnY|5xhzkYd$ZS_9efK?JX%uqJU6HQUFonJK_1oEJ&afIw zhfbJaw1I+UkRgaV=$vsX;z;8&2Nst&2k_-i7IxMu?cP{R=3nDHrnd%&z84nKu{2A= z(iiaGZ{|-6H`K7#+NcJ0zaW2Iy%r5}@Pv+QwW8}7T#*ha$k4+Dx25-l;n zcLnNs63De9_;7$m0RL_g8WLF(Sgw$)S3>&Le;JiZuB2DhY?wS?y9*z$nH9q%{wE5y+**3B+5D3T?F2BXPlrQ!`?DWc4s$wWKAgvz@bmwT}+;MVot;<_Y_zfs;n9kC^za{c>y^PNm72c1WAXY zoAESbf7R-%Heg1H4bH}AA}}3(gb!Cr{P_JQ@JQND5Y6w-a;4{5sH(i5^J@5ONgz8G zh?RzPc8CW^>#0#$Py#f<`NpvVk>du1ECC#g5E4$0MT25SV#w!u76{2Dlgl1&Uz*T< z3c8t-NVzslStK8CJ0LC!u7Cwdnm5zS5Gp-(@mILxM4dPHx8kD2`RBi=&M?v$FT6|) zNp6+3rB9vUXrw*`u88>`=r8s63Q<2K4@y`GCY~$jsv62;_U=IFQ?#aWd{m)rGfnjo zzjcoscEe$VAA-s zyK@EP#Y=qZrjO@Ecc?CY<+7X^MJYm_^i>QovHI)Y@D!yAauJ%Md0J7}M7XLzl@JWI zRY|Ovyq&-N64u-RxYJK3YS0hzj5!1Dsn*)c1xBH$ukA__OP}|Ik{=bB@rt?-U`r1b zULXUS$%}eDz2h)Z$nVeK?vo7O^WN;JRQc``q>ikX`IZ$S^HW&i)`a9IZYm&Bl|93- z4Kj;gmY4{Z?3Y>C2RsSFZ(&BRgi*LzWDX6jUs9Q%grt+XJPA{qt#naE}*KJ^< z#MC!7T&zHmfY#&6nOqJ_>ly;Ggr#7h*J!@3&QxhU8h}(a{S0Lmy05yXj4kNvaZ0Mn zu^rdH!AC)u%_X$2CUWRSw!v#p@s?kg{$yn6462{N;bzfjG^vYXRgBD1GBkQCJ}O8i z380Erd8K)vwuNssQs}#>Z$u5WKPq&k@dfZu)c)`jXqr|3MFz)uRy^W|!cFUn;0cX@u{2vnw6%|%jBQ$Sfr4Ka z^Ymx5%H9*Y;+xkY@W7Ylgor|PXc`L7n}0^4QkMkZF_({#+JD_urU1I{ut?lom9KiH zUOE;H+t4AKpK!Illfv^tfDNF2m#aj*!1K`w8K}Rz98e6K7jBNdJ?(5tKHf2@V62q# zTc4MiA}7v(^&OI3z>8Wi=BE~Vys*!vvT^%qlsMNeFBC5V7TDurF zYipcAl5vX(#7qSpcSxuvhOmi<8Lxf)2+C3pcJapTe&gdPMKbRy9$2aw5O?kLD?wsE z(uL0GY2BK`-+<;9)S!V~L9^})jYh2Ni~&c(ryek#G$t~d05SNM36 z@$AmSx=Ns!;J6vwjwfE9HDcfni@`USx5+YfJZD5kV4QqTxRH8;$qJ7L>r~HkGp>v}I!!p}l8aJk$SKw92b9_I|rQTK`!ef_s!RC-3vj@R{91NZBHky$(Tr+}X zYZF=CQfkg;jgewkV5VMOi&|{FM~sh|3&p;h){WM@YaXK}#vqrk`vXztL3Mf>CcJ1) zo4e96oRRueG~HalL&2G5uwr6cIO_CkXGLePg5XOz`yggu1dC#wA%7=vWaXFSL?8i= z3BHjtkBY<#hhc-|r;@W`4vOWZ>w&Bm zs*_b{xp_5GVzMq^=^WFg-t9z`cFhEr-b}lr!SG3>JS>)S%J>w&8(T*o;XjJpm}Kxd z;uq_GVP9lYFO~DulqjPn=bG{)NF0y7sGr2w3DF6^JxkaVb=U{7Uo@_62502v>r_N9 zv6a$_CR@A#K@BE9D|-W`zZB~getVs%S20ZcQYg@i*n@Oi)FOSo0V(UKDk;47~bVTbf!?7Db#6Nji8XKokAE`K=(? z_iz!^_3Xspo2bxH26XT9?x8kg7IaxT-K2PODsx$%j`J$xcBgYo&G!PdEoPW}?Av8b z(MSwE0fFKj>XBCJ5s0PY)a$`EX3=1F(my?s=Lt)?(tGXvLN41u z?XF(fVZ2;}hS3%th*C#k<-NS_%d}0QT?DPxr23Nk&am)c)-83?Oa~3mSQPlM3W6TX z94x^9Y0*;(QxDBr3dC43Tg;BinrBVm(ED<6-=Y0st!ICfcrfeUR{|YiiRoLGn8%Xh z0rftkKqGpWd?ZX~ZNYT8x};A!2!~85Dnt&JhNJ=h+JvGHjScUC9J5x5|Htog#j~%$ z<&_AWP`FFcDip|Ihu>P%szT1gHAXqp62x7Po=5A!VzRa707+BGFuT)@!J#$nHz_p& zn=ommK{++tT=nMN2FouwZ*w-pa7Eumh{0AUsa#fWmkzGO_#FbtR1k-Gp~vhxK(TwR zcZqDLB`w11O;KwgP8yX>SXzAG0|IxG5pl<0(f45-uyDAy&NrBv2MPrQ2|P@|?zKNK zGb(hk+TtSNeFA=-UHBBMxoKQ7UpKs}LBt2K6HNBN1XotENxWC{uTGki(_Rj@Jh3P&Z1oV-FrxEL?nukH z)98X!#g=AmK&tDkIj$rvj|k-V*pQ?(`PLaj@l;P@;6P9hFSD^w&RA7m_-X+(H(#NDj7Ws?tP-Hr)knq4s&b79-El`-20c8NhI#jZ- z@EOCELzv?8EJ(+48sE1a_Nn^vX*T6~4JwCv7^BBB508~xSA)F1denr&G#37$OKA-t z&`6%c>&XRVeS6@8Gw@amKExSE0;x+c>g=}TIv_UZ)O@ssnOGLtvaEbk`Doe%`y(po zRyNEIaFh9T`Jaqu2wlqIf=#Cz>V0+@FxoC18&WdFh-ZcX)?7k&K5d@FygUE)luGMsl^-g zlfMVpRdOinysT4(i6|HKkL4g}e9_f&Cd#%WcIMGd_-vSPb5V_5-=(f;D^4!#BZKf1 zmV1^OP365>PiE(485VF8s?wfjE%lC1FSSeX*k(b#q;wT&j9+>BFw4){I$(c!Tr>=j zE=SP?`aY2u?|K9*Hd64?Lk^a(;M+aj3Zm&s-uU3Pu9DxV-A@t1EJeuCU)^#7_n{=e zNAF3_0m!`e`FOHN1|C==GkhN|?!)7_R@3-)zjV5b&vTjF3*|{&2Z| zP0_=`)}hr*mkC=L>$h1VRTt=pIzO2ns%)7L#T7N3IrmVZ_Wh9|*t%i>$hR!Lp1;+f zI!Sj|gQcF%4BSHU0x{MTYM)7J!>zj=W1E&D6BDl%#?8W9YVYB~W+Mw#y|t z@!x<$*(gI`G}FwBF`<=lim*&z(W;r*n%v9AJ1#rN(C`LVI=McN1)D7xafgojD1N)H z|M|W2zUq)Kwq{2JK&i5i72)T^5@p3KCG*~*|G+QD3?F)`d|66bhqj`*hg+=GnIC0Q z{b00yq{0w6H0G&eo0FBzj!SEgCxhdG zPuBc_U6uXc@Ze z{F1uRC*?{8&T%T};0=x2Lrdl3f5MUxw@#z%5(j&iWKbG;ElXrGxgk!fXF34#;d}%E zft&oQmmpys#qUB3ZZcK!;PA*aIe`_;sI%DGbP>>lZhXx|7KJuTv|V~TI)=)8%$)1w zG1k?SKp;W)#)TM?Ndqib4a)z?o>WW;`K~4&zpe+7tqCYLe|a87k^@jp?$1wC20I_( z<4SNaASm-@O6n;wPj?-%=f1*7#{bqfiUgF+63z%Z`Ks3BUzRylX`gCmG4GU7zM+@) z5EUPh&kHE9OG*%k>kx-9cA%gsHLE)}E*-J$ityBlNAPbJ$73ZBSdE~KR-2m>y?p>D?!4ld+quaHT1}M&!gFrZAHSgJk_0o*1fo^7nYv9GP zA}Aw8qz@6%dSw=4GLD!vBHl{ag~y-cm)#qAXW+M18STn5UvkBEmiaSxn}jm$$`o0% z%_!NldoTMqO0(c#^kMt{ulzCu0g_U~4#1+^G$}Mvvu!8Wl--Bg=)=^YmlA`ZhL;*5 zoBG97%`PVRzt|o)q^8G^Wn?9d2v|qUALgfrstFC4x5wPyR$nE*7M*MDc!*RA_XXuE z26Ev5ev7$X>^PuUMqHIHD)>fmm><)Q02ip;C2tCP1LfXKqL6>zt}msmb%r+iDZ*RT zD}0P4P@3BUEw9MERC^j6mn67Nv@i2`@|j3t9dpjQj_t{y(NSUH40NGFs2G{>&f%R( zQoldK@!dw)VA(&tww@-x~N6z62oy6hYBbQ@w4VjEwQ`k$FJ6j#DQCb>ADDu{c)ICw71X-ONr24Hj zMAJ1l$y)A=zv@ykm~~#h0Q(#g*Z!V$+wOJrOsg<&>+h0z z+skVGl?lCCitJuJfO`*y%QQAl$32(yg!J~1-0r|)S*dT8A1@ZcAK;*>H~tECr9 ztPV@|v!|wtBZpVpjo*(a`f^$22oxL1UfYRe(ObJ`%r4=%%YQ<%Atuqu%*#Y(O}!@YZpO@NZN@ic~8+KYu6aBOeunp8B+_ zN=L7XA$8nRy+A?c@NU>ZNA?GIj8Mj+z|Z2zp&=8XI-~1B*Fk@H>ng7eaxTLacRbZ? zXkWNrE>I=ufL7ATfMNBEBJPITNVhYuSN?$9wy+E9tK4@l8L^NfloDIQT~Ro3t6`jO zi5Z-UISYss)jKZ83%1WhS{D;nyulJCwFBV3!YjC-D8M(zNyVG?pa28W(Ss*Eb;GBT z-VPvSBhvZzsQd za#?rLs*=%T!4DPB+232&VTA8^`XFTo#gF_>Rx3av0wI5)0zv%&*g;j4L(GE2-lxC0 zejYpaTn^bupRn&>58KJOv$d>NWbK}@M_XjbfYiAzrL3y@ORm)a) zim=O8UEXWECcuN=F`ApE^>E5jYsOdiVsR}Cc>@*q$zto2iVJW0o)ycEhx)i*7vPb7 z(8W4XhV3k%pciLA6niTy_w>r7T(^F!Qj$9PL^P5ZF8h<3bur>uWDKl(q+*QJaN17A z(~y*dRgrPdkOS0K(Vc&HEOMP-CvY_SykFJ{Wr!)jrm6`ufjaM;WA&iwg4xFs+xzu~ zO5-5j{SJrCZ-G*3%!TVJ5o*IJVBVcrIAml3DZUZuetZb0`I@*%Jx((jl15+Ze!knb zEXnN6iD}{tYM&2Gk~vbnCmEv^-0Az-qx^>^bkT)gO5J=WeczR)wR|}Q3%xm7K9kNH z8the>tkQA=q4q|QJKBL*7wmlI*W>vJ=yR#3#un_FklBnRM-i)WO`NRIY|c*ITRU;t zXw%N$?Ys1xSg2bz9${itVdcBb(cCsiBTM|%wxQPr$ZxxH>5YkxWud@EU45{Pj1R?n z4_2g--N*B{&Pdx*liUDmp`lNnAt1Sv7 zPbdTHIoCJPvbGRRye4#jNAL^DBy^Q}@-mkD%1VXm21++TA6qhyU~$SZq$??X+!Y|A z0D0BF(XaaaeoEe_xEi$8s{El^vH*diWoS0w`}O=@y-sL)ulQx0lq&j|@FQUGhbLM8U+T+EZK)>&gRM#WDpwt+kzsXa0b}#R!iJz!>c=yW;aK zTbW^z`PK2oY-r$1H{Zgy21Tt1xW2yW z3<W^~|HYC?P{>CM=la#gRxZR^Q*kS@JbuGJ!}u z{%sioBj^-vW7W$L1Kp2Rd^>^6e7eST7bDR<~4~;bECffj~D}0l-T!zMj zaS53dy<5wDGg_;={dz z8)4zZE>22UHUxk#>pXa*C*-NHE+!%ngx$L1ZzRqL?B5S1{d3VW^u1!Tjae|?5aD_} z_#Fxf3rbbbQvFqiTQJHmGk4Z56~-SjqX+QYBT9(+hE_F3UwjK&5~D0j>2lV929`wT zH24XlJ{MsU_XjL0G%ZS4_{h%gf&Lnk-$3^=TUY>KpPQ}pk9>ttIUt`c(W>xf5vRA+ z(%RBkU-C)lN=C@?5DhQAv*9PM9A`@QdHHFPKfqb{LS*cmCcmvE27Lnbh&l zc5neTy**%1rWnz!KJ511HQlyxxFWjH+VT^ANcWZ;h(vNhnnQFx42Bp#u>is(I=^j* zFKm6#lyX6{(t;JYgW_y0fExC+{4mX^IT<07ud3iR{)87bPCQ)-brXg03Hh^ z_&19D;G=RJkwYCF+H1A@mQS8Mx`87jDfQx*x3%SO^OK`_wr56Et?hdXT`#Y;xlO%e z4Zlne&k%0JCgzAE6`A%ag}=GybChLml{9}xT#`dvsJm>?Ik!{4+z;#wypvlxS&P`R zXGu16^IrKEl6Wh9c>BulUZBJPQR)FH+LS%kvb38?tVofGujCf57oitp0z;k(KU$;@A@l#s`L${G*=`j92~% zh7XB{Xc;BobY)dhdmJt;i*tE%LVIhU^Wu|Jv9W6bV02Jqbu+9k+ta8zpsfBXooq+( z#jWRyqs^hcOtJlF@txtuX4UyJ2+n%;)S)OZyJ0*%G{BGtV#;-l%4d3eN}|6e7QcVz;G z0BT-2W2RF)W{Dk-0XNnTG9_7*AvdkS7o~0~lJ8C$O@i zxX0;ZqZ`m!;IB%GJh0`ovhSl8=UolVy1~aC6x@hg(=fZRjIN1VdHP)`AWF;-zZcBf z3<=l{g$O-2iXL;E!!DPoP)nFRXN<3^2Y)$2UfO)qZ94AA4Z5V;O!+WCPJy8Wl?Z>x6U-F30BEoOZ;LTN9c8wf%Zc5e;S?JglBa+c z->x;SkeyV-+8uMpm|D}kbo>w@@yoRyDD^h^IQEl;x9C765 z_o2++8tKm%VzoO)Z5K11fb2Lfc1Hl12cJ$_p4rM+&H5LwHIlQ&#wqI4)w=xT-oq&8IZgx|Nepe#9-to`wLP8^YzLY4|gOcnGY8u!tSHci=Ky(vmi)uF8qu? zFWoLXSU~g2NgT)}9iuau*It&*eZj{t@;&<@O)VB^HJ5v*iz*wIyXk{NRl^f=u0O9s zMEvziyJ2EE{dk-j_xn{LtfN{PPlg_1+&1YkUoFa$w*+?+fL9lm;u&E$Nkptw+0diO zr0CftHMslAvt>_HmEXi`z|(G;8FX-kKzjVie6nw;JIXzWEpXq`jnW*+^uk|Io_}G< zMupW>6{S;Nw^J_)q0BtaSU!5m$4iO<9W%S{HgI6U&?oi6dfkw@PL+d7Ej((i_YF1V2I~Rw#!4n{J}5pjOG?rmC&=Ps#?h%7M8_V z5tW~?c#SfjDk4rcmcgVByY67j1$oh+87M?@^GFTG#9y z)7!@*+@K22|D=pQ^^T@GsBUV{d#_F6xW#hIu$^b5Efze&p?)>&W;N(VnfTkC*hZbi zVQJH2_qu&Dnfi$w2J?>wc$>5&dFaH z9j1P>s$H1IP^Lzi)Wz9?Te7{DtVa_l3y60n(u_3yBzab8B;JxxS?J0(HXVCMQXrXg zbK@v86aT1m9C_1RiSwk=jI%YCys5N;H~rAO5RIYCjT%K&Fg|seBG#q&AEgvV*|dyx z+#YvtMS)uauM|t!1OA+1D95b;F1i*Hy}!wrRL>u|TUFXnF?{XTEYI#dXF9ZDAqTX! z(YkA_ykPRmQ=h0+L?t1`mXV~~EV${Nr8>r$e(S3xYm?2ZHKjBS#Wcy{g;b&YmTaMk zSrhL7^T~?gI19C2JN=0Js92CAP-}d(@3jU_F4Q<}T*d~?SqqSV%YGFd;>q@y)B3Il z^Q$LaM1!ih(_V7LVrDv2N8hbo&4+gfL$I7|5Jzb%A6q7K&XEFKINR zaz`n8f0q3*jdcHqz)Sg(aNEIS5HEQ4#O%xTS0oFIYGjeKJF0h9H6q=UmUqo-V=;== z;n4tx*@H3Ml#d&34lPtJ&T>R;4_LW6WyW&)R4-Ts*Ut5(kPkbu29m2nhc{59jkTI6 z`5i-xbBfIvS6Jm4&wS0R!m6>oCVyKwr%V8kL#ijqrk}E-=VDXH6j&!a;Ntq1wj%hI zwSgxhREsKQm)}$4xZ{)Ub^{7G!pb%qQ!F51a@`B}9-V5uS9}3s=6&3H!!>&JhFy){ z)0|oR5uvIw-5|NYWb3~<*ucU@$N9Uyu)rcP3y?XO7n^!WM z>7Id^FEK2atVGQ8tsGwWN_Pm9VawV9?*TWji_%<;aW!2Cnt40VGzbU(EYSzvixgi} z6=9f8Ej||uN|G)=&={aI$ByELccEXILqCvz#GPY`1h$@SX50E4AOY3=g*rM+IEt8s z5!uzeueAY-g&>91srq#Vo>P*KG~sBk#7YXCebEwTTBEug(gPJ%i|0iN|5=n)m|`UE z4^lrbE0I7ONf^gcVnmdIuZN@(2JYC7+bPb|P5C%;^$&dy0YwdIiqgGs?w}l^?ar3W zRed^^Rxdd&isTKy_F?h6OX_r4b%3^xG@dX6h^R8E(*~7fgBm**WR8|Yzm?tR;o|Q9 zA`}QDH0J@%^r~fHS(sM=#YHG@`5bg9iw^|5CG3SL`m=^}9?(R4h$(Vc%+fB&_pxj;$Y5d_*VeY{OIE# ziT?CR^1_(YUj6~kWE05(e|09K&K`*HJ)u9wv;H)5-vC(*zAh@Nj-M{LCv7X{mxE_Y z!U!z~KO5Gg?*f zARM$x)iEq0U1Kl>LhrQOJ;}QI)HG`@2xp`3Y4*u(CFq>Kp4t#FDj_fIB10LTGuYp2 ztd-xNDT~;HnIXJ}o*G@B(te-j`#pW$(~hzkj2<; zKUc7I;+)wL@;P))enX7^Iy9hvi+xqAQvcC|69JSE4K14jX1{=yr;hwIWVnG;l({I> z2A9$8MXl}`4_=uk{V?ConD6)B}Rwpa}UFaP?t_bSMLmV#__|fR7SU-9l4pzLNYrU ztEd!$Lk;)byw~AG&tJNya)RCU^4nPiwBpPQU>ukq&Kmrye{~0!?W=Y{5*Js=<%!(I zD-w6@2Gg~;!ADL0K-hC(nbT>Gpn^N!Q@}Cr@~RhV|trrs%z>k5}yXY zswI49kVS?YU&n7@8j12WIA=5-(`Przq5bJhHoy&3w$XAMPUSq=_hYF>UPf|hO=#xp z#SC@P?AarDyNJqxtVdKDwm0<$t(h1R41$AY4p125*@15tbz8A!8VcEV8r3kS`Zmxp z-nU$zABz%g*-F|Lzsa8DxjOsN>Ew9&!-8#Jfxs{RqGT3h=zN@;X3NMr?4$II@8_p8 zmtpe?r$=!Ye(*U{o}7s%=f&mMPW7`MdB(y_2Vf>pdV}JRNTqrbLbr3KksmI>aZuiF z-C#M^R`W4^Tj>4dnxxBQiE8nOH59Vo8lu@Y@&Hy=r&_Gbdu-LcZy%sMIX7m>-7{35 zvYuL$?C(!idzd(r56QP$(gpIzllRAZ?kbq0ZsF7Y?^v^(IKDj4UBUWeyf{f5@9g51 z^d^tW_!B{XL(dNNr+~VY))}h_Sj)MlO(R4p0f?)T09CqKTsI7rY+5bstbGZ$%aQ2> zUOG+AT9FRfB1Rl$+p%O!Bd%oFQns1$vF=O)JzYa0u?p8Vl0WEODms~5TJ?O%C5BP) zy=f5mnUg|@o#~L3c5UfGzS({%b%*+Lx{V#unmL)t1Z>&+&N;LfyV-@or4sXO&v}Yk z^V|zQQD~$mwkqf`rN+OmZ3uC}_Ex5qZVLgcTGY#`TAMf?)32H}gsQucj))nNKe~hq z=!%O5-m3AhM(?7%>1VCszhGn1A@eT8X@$@wS*WT}IJh2c(%98`{9Sm7Yjmif;;jr0 z2pddU_rQ+Xx@E7*nzDJUB9T3GFi76CyPq^Y7OM8r}><&w7@){N^}# zf6=fI@T7cGuAUp4pMiEu#kpzS={&ffH(d38lpBp}RLm-XxHTb^dCQ*gX&L9 zX558>8=gM+JnqO6uBWmsPyf^*P>0%zF1jrN)@kyf(vuEH!QF~Ge&O?LNH3PjFu8y$ zJALPtvIlr~Xq6A?Ri?ttCb?K$1i$v)FGgW6=U<2;zphIU)m z(%dRX>!yhJ`6dMK-bLlBg8~fr*IIr1ZizJt;6;7XR~7@)Z0FMPc^5G>T64L zhI1L3nk&}vhJ73|h-@!{-8u%Yp*XVRc$=lKXzI_A9QnHt%DWHb)LkS-4^x)Lw;m}R)Q^6K#sI!a) zC@Rd#c*pUv>ov+dNAAtXjGE?J#t_Fu0D+TjxA{G4blhsp<=1xR|8=;#RjK~_L_xHk ztnr_Wg~dEwcm60kR z&5FMDq}`K7UF(29;cigt7ZGA|AlE{s`vhXL@6K=@M{l*?ej9Zru^_ky2YcRft4wAc zd6`sB0MT)Ee#{#tBYYZvYj!X%e|29yVB?kHqQcSzlXRIug%NYp$Hrg>{8(#Ai(uZe zNWh2L`g;CoPL-UICtdts{?4?$LR_ziArqstuKMBrb2=e&)SwUL69P-)n3fWw=FrZ%_#*P?dh*&DTcOL zm?54CsIET5P2o}Klf6M^j!XU5wsi_F%gx1)MK9OY3ju29>IZ3QpM*n#z4dBth9@(9 ztB=tozC)PGOpaHDCcOMvYg%3Lgz+VQlIo{}LshoJ)?-;Lr4O+<%BnkFbFM58<+)e)p9dPzg_)PBKi_#wXcaqITwRi zF~Rn4im-mToOgl}V}{LVZjb8EdXGJf4q4CBVcU2pqs*&DZ0UHFv`eby!|tyM`rTVA zCGOy+*~RECL^3K~3|M%cJHtl!h?Ti}VlcIfYVccLY`N@fsycAvAHQ4n8bYMeH`o9A zmO-yIqa^`pVs&N9q43Xk!Vgd-;CG9~#`MgjuGa@e&{+tB3WYy)` zwJ&w{HoisJALJRma&8)p+dvsD$kM&8_d8TYxJgpYm2q!5ba-qk59#R zo_Zx7ToS`trVF9(R zHUp)1DW$L%0Vrd+_2Y7z9-I=?LsHpFEg{IR6t*af@nFk7jKR(`ccpw@7gV1W%p#16 z9pco;WX2xL&|8~W2~LJ8PBUl`2ujh~wkCj>jc!m{0tlG3HglG77wmEgWdna!`gVXGH6!HC(f1_O`iDLRu44XYB)8dCem zk#oR*H+%WVhb|fNHMNbkqW3`+dVzAclPA$*xALXj1tDq6E^FG!=FXz$re@}?hsAr~ zhmVLxCv;^ojE-25Ryk(g0`u{cwe9iie|#tTU~LoVxu$-_xvFb*|Dz$j_~QIs>+5Vq z|Jj^KB=Dr38Hd@IDvIW3jxSZS;k{eyZd85xIc=&dD&Agg<=XgQeJmEaX;qAx-E(BS zppE}rLEH>ryfJU1v0v-$>mJo7C3VlNLN&uQ@?*Bc$qr}?tIB@Jm1TW+cy--yUq+y^ zJiUBvJu?Atd*nNh5!boVP{<0HuHe}p_{-jQufx2Y=f4u3#)LYrk`CN#9hJVKg}Tt> zc0`wdY+KC@ao7qP((>{1KAI^w+n8$Rq1x#gQ{-dzhXYzT-`Gc=w}thHqG-TAU-GH)FLxF z6ExvX!B+g!6k6cVH6##s2mZ8}Ztnf2N}%j-Gz=~|TCr-q=?}~&AULnXIT$NU00!Q+ zkUn5OXnh>kvrPoV}RQwnC~+rK9u4<$VRbb$zZFuWd3nF7Yq$j_v=Em$f02nZDYW{JyQa ze@%R4JTgP}##12W`BWE*XnOoP zG&YkP?alrr!Y=^Z$ePEyQmhC8XF{+h3{%h}Emyb6gM=xB<;t@*HiE``VVTc0xg*5oNQLQ0LEqS=V*xToOrjj*Gww@J{-cO~9I zHAF9AV#ENoGOqE9Mo&@^eL1f|CXhu{Jy5fd3wtO!z;fDtef;S3aAi1FmEDzj+la^D zmGL35SO2Bw9SaY^{q3!MaJJnm(2;d|oiop~;MvXHX9Kreg83EQYW|z(SxWv8ZcZ1J z=<+LpUWkInr>xIsAksU6OmlbZ7q8;5VEPlJyZZ_6=aMYH(*h&YuBJ}Zq0Z3zg{o%S zbHp@^dd9(qU3x6Hil)5Inx0lry+F(&4>f!A>@N^Q$@%7%krBwimRiqIf{-j0W79e2lKK|jt`}{sJ@h z<;9m_YMN^1%eMJ9>$RH&Fj1qoTyoN(i)G#7uZc^d!vAD@3A zHvLLh)(fgz||z>+D*HVJ$I2Ls669X%-dF zkYzDpmv#L&ND&ZST0tpVtLXxc!X|=M)2jJ}mE5z7lZqZH+h})*LpZQmWzGUrPcB4_ zNfnavp$ApHG&T{gNL!)M#i~wMbDkq!Dh}z9 z7v|G4H1*YQM>1WIMCHGQVfv3iH|k#@G8FBYy5}{43HHVLXQ5rO9vm9+&1_1yF@R~ox4Tz)OL0#e^R8BtIRg`HQnskjz6Gty{ab@C(tssP}({+y5@O%Su z(7i4aV(EW5wQ87RO(fjL6@3XW!W;Oe?%Won1H^T4>4e$R44JX~3 z7mFl4dVpL^ag9)3@hr%=8l2gGUh8EmZKF%gabvw$j=&6SHcQINxtG3S3bKukV9oYg zQX=ZINEvZyu6dNeP(j{mS}FK|>`>|3jYWtSM0*xEp6Fka*RAcVP!eX~Ee|pGcHZS7 z96!{9xE{3Nyd(Mt71y1+mFMLpF#ev0b0JxM-5))o8g?L^cqTPCEjoLqSR)U$UaKod zH96A$llC&~ykE1@BpQFZGcx7x$)r3*+79Rtv7K9PLoa>A`V5BICigkxY#xn;3|if< z$(IwM@0>`rfGLBO27@VOgoLK;8uKo}QfXW9=|4?hu$EY4#BJs4jWVTf_`EaB+|RL6 zqYuy1K_rYjIt&W01*r^-eGi3TTjj!4^1SdHfR6(Ip~467H?@gzy$#!cUdMlmmmvnbZpZ0+uYBH!QkS?5H@>i$Zb9Su1stqe-ophetbqYIu7>YkV zHMy>VwOdS}@;HB&^y`fQ-SHBW-UH9UQ@vB}x6Ib0ib&||snv6SaihpnOqJkWJmMA( z6T?oo&4CrXZ%d%eXn~f9qA&V^G(#BEV(2)|fq&4{uNbWVA|K*vLofxzVifU8FES+M z_^Uq`=}hMvkY|$K^@9lFQU1*}!{|>DG#JVBY#)fG2tio*ip+JA@!2bLiPyAyxNXAU z@VkS0Ip09Y;hDM!$hQx!_nd4@ZUM!J0{vxk_)FU~$V&9Jm?xnMJf93z%-Gzh+Sj-` ztj`waFH^7ZJKJzMgI{qSt35@HtC~U@?fK_)ezc4~ZHitD+7aK(KcU)TQx$XMu|&Ie znJ8KNnGWapF7oX7!Ck3?HTOldHFNq#m@?7G?V0MP(_N(HcyIh1!k)k3ij}}pzZ$x;O zUe_-~x&3`pI+3^>KaKY%#z+7imrsVhvW54>??clZuO-qf3?Wc_?~=?ntI?rdkB%M5 z&@8?#zr%Xk>nK9u?s`OA`F8&&o5SZ3WnF1lHjXir+OE2tjU7v6EqrtA2N~C1+{P_- zpGMBVAHho5S+Khiy)6tRS54if>Cl4Gexw z+|(~(FzqTg{Lo{G+nXzQA%y?JJK@jM9h zuaww9w~BepzH#Gu08jA>8T_?hJrncVt##cI*k%a3{z(an%Tg}@5u7<7?+-q&>-|gH zx!@23wj|Cq{3{Dip^u#Ba!%2NhZ}fJK-k6x7^Q}9U&#O`XfE@=F0J`w33xhN^JJy72_b6}-d_jLum7Gry#JFtlsiG@c4*`vnvRBB zl4R~DA;MW#^e+-H+6q9RJ54C0Um|l>E_Ifk!pQj57j1(3nISsMRro^vnVXY$ZWNrO ziXiSI8sW%qf)f;YfX;CWG(i!x9+xJqLoN@4UzIdXp?5;lKx+nN>O`#x38D~NK<~P+F1Xi^7H>kDf>t7=1T#{ z$=c>icZh@Kf6EPHWM=qxZrK0AX!`G1O#gP)|C$;GN1yx8FaN)_zouXO*$|M3=>NiV z|A+wnPdxV@@<#ttw=w;nxa}tg3j^bS=7Rl8-RQsNg8hHJm;$AwsE*@H|AR2M#vejH zojq4U=r{6OkcjJ4;SsDDWBck_~4*^e1yo*|NUX4M6hHoARvH= zk@3fmANl$Dv10*HNM8y@&q>e~{*J<;qKEtYjg5^_+2iNO(ha;ySA_m+8}CIANPeD9 zgg|8_CG_v#8PlY2qLOoTd-NDiPEKIqB4S~Ino3F&)lbjQ!-IphYLkM3f^V(Z=ISX{ zKG$oeYb)z-##^AE&*6MlKN3beJ3HUOz`iEo<>eKC)d!n0F8m3P@C*e$zoKd?T`7xryQcOZypL0S`MSuEk7w@U$InkMbBwkT;eSf_TL_vO=|BN06gI*2FBX2g ziRXHB<#xK91og#Rjvx3=E=6EncHPPRVrx))b@Bmn|IO$Z_&gndY+is;$dG-{;J(Vk zUf)@B4mLo=)&3#z`swrf*58v-RTU&?TpJhvUd#+0;_>n$3D~pK+@VWxKLMoZ4`0jW z+;FqYwas71b5!(;5f_zZuM?Nw7^5!u?FyNAQQwymeOr~W*;jVxn0m2tdU|SUX({O{ z$*(a)d4_2Jupi!zy1y;irnzKHo>tJ^k}O-Evj zhlRta)`}W4tf{HF^fPsLKN;-2vhmqvA(fqP@*3;tbNLZNf(^qLDE;#ZD6jbk8&5${ zw5ZFEjw}md+gjz~G!ZlH`c5T2w~x-WDGvHrv@DPD`5PmPahPC00D*cIeHOVs;r){q z2PI(-S?0nh1|apcidoaWg+MKkVKva)@&kK6?Qe#nc~n+kNo@fQM#(9jNAD3|h6cff zYCNb%Kt?=wGJQN6O)XdK`ZDcJD4R~3#f|^w;IM+mT*uu(n1tw+dgWKQ->}N1>xQcB zsyf{A#KGou*YA4GDvGEe)~c#d(imwF&P1e9KTP@B?z4*bGQnKJPk3E*`;KIsK5rGU zdlMGhhm!0AwUyb&8{vZ58Ge0#FLr7ve@r@5L8!TTN=WtXUt#XPg$t(zwf=&X8-3Kf+T z`S1)$XxA^KtS-v?xD4iMjsP|b1&AjL3kAEv+QG;22v=znA-UehYt2F^N`8PfJ)@qA4tB*`QYQ}fe$QFj zElB~y02=pui>X_cXjYRp)JiB3zOxGE8omEs{O~&vC-J@kn zx`dZsgVwybdaAE2SN)0Qaj&yK_?6ZW#~=<<&ydRDFujn{IKt}{>bMG0VYfpa;&0aM z0Hfx8MECvt#lAzju}9%`?dc%S*u3`ZrWL4ldyi~#bebzr$Su9rkiAxyJ^$m`d`{Rv z1d)hzWE}Aa&^i&^!sKE))&JuIC{}X6Be53q%Wu|(Ce#tb=mu@aM`F!->S8GP^usa%=9Jn2y6z;($_2Pf zTQs<6r!Z3uI+Lv$Co#tL^TRgrl>Xwe{-W}A<*7tpX8SG5VRUtN^S~H=#)r;_I)*`= z=Md~61*oYbwZVqO1SihT#+1OEq_$}03zDWmb&9$#g`kAIsYBKPEY< z>Ph{KDe{#ZQjckVdc~Z5HK;F2Cpb&WDLzc!ygLTc%7a+Y$(Du6lj=yC5dV&zA#@+c zr3Um4+s#MWJn4`p+9cI22S=o_WEG@PAgL8FT5qhNPqbAP5_8^gZ6r{0x)MN!IatQB zyZq>S>ttU_IB1elpPS%{qB4+@9ZI`YW_HnayXHSetcXilar*^xZ2F5+kEF!d1&-c* z_>~8kXQ;FF%Pd#_jyjs+hVlXJVhz^<>%;ys0O+Ri2P^=rS>K=IJ547ERM*X<8RNJ~ z#_>`4KKd}((%HD#YQ`uIB{qD*9U-;}#fVqc#p{jH7u#V#5-k6MS^Inc}3j`JwF5jS~g4~VqZ#?zvupQYwD_Y zty01@+$6~_Cv{SpOk_r$?fWl*q!7wR<^6;Nn~poiHRaz!J}dM{rNwpJh`Lzv;OGGo z@{s)KaMFC*c93xX%NX)umfDC@@Fr=?KI3_~S9*LvsmoDCiSDWqo8@GRVKj_siGG$EjMB8S^B?pi79t$8F2+{YY z*rFXJ4?r5bhvuP^QULNzIQDwGot{)boK^3xg_(R;HZp^4yxYZqwe5zo=7tSc*G}U2 z#U~=WoWmxn-0KZWIQ3iPf_FFeDcO-zqvQ~wMPQV>;x6;x#MZ}B$W-*NOgt6IeuJVN z-HvW<<{9B*D#NahN-&8wpmv4Cx}m>zwM{M*yME64;X~9;Z9U?P@`0)wdgKr85C&93-qi8GytIyIOi+U>tF^n*EPcaiHy> zCr4f#2hN#MH;%b(ba}r$k7p2yu2?Oy1f>wX_Ao*nB++AEW;^v9k0sVW3&|i@TO!qU z>RJ~mu`{3dbH9`s4qbt2MWmPmZN@o`HYHVOQq;|RFL7i89NO4`S8@o)y<%IM<3Dj3 zFCzt(48V*`m?UB*!YTcGk{(9Q?oVY-XX5R?MYs4Nasl4e)0Qb~he%ri8^~Nov~N6f zaiio{!Fws)oK$iK)6?_TRWTg|R{gnqGX2tr+Ct!T zi0eA_d9SqhJVd4fZ91I>udn?$=DxhS+=v((6ZqUI_pd}S0qxJp!6=9(D%y9dhv3^H z>WFpVigwH#wIDv1G7Z>wMyl7CUHec{Jq@5f93Pcgs()XXVM}-F0}`zc>TFiQ&R5#n zyR`e|>$NYS{^6?Xu-IW1JSGFD0))LC#%?@}l08rs92!N|`ouQcPMC!3v6LuCH-TfR zE)oKhBGhzF+7r=a4EJVv4G>xN8>+V6@inr~vLiA-T)$R>`8y%AljhT}Bz1+3#d39H zq(=&g<4`3X#^+n~mZQ?q+pU_x>OXA#f}-+v#ex*hOu&Jw)#hhq6q^c_B)sMhA)=S` ze5m#w|7(fym{QjU!z5TA7G8FdB*rJ&PTMMVi}9O`L~HJN3yAh)Xduy-T6~)26*+?= zH0j}&5GmJCTJ+@X#SzZbl6(z!Of}!fElOaK;43<0wi;UmFa6M&l31MHRsc{My2??L zpn?ml{YG#7sMbwC6oHLfN-ao>AY8X~)e@#Pm?qwF3v{Cvku!BLgkWE~hhu~dLA8yb z6P|U)Q8k?k-%Iz3Y!ZX8+@_#*6XXgzXx4QUi5UEI-7kh zZEfE%F@45?Q832@-(MvDDoSPPpr-lU?R-^*d!Mi%dU|@la47)r6C_X)P+&}>e!$)y zDf?VU28M)8@mNIA=OI5JKVd?otC(n>oWH;SW|tQ(K7Mrnc5FmVO-*Ph^o20{A*gxZ z?sZyPniSdXZf(WpFaPuF%o;lt*=bdEUho@Z6x`zxBYPVg8$(0GuhP!h88J!1+RSWZ za#D~kcCn+w^CBoE#pSDlj9TR6=AHn&vQpkdKG5rU)M!^$>KeZzkE94&6%xmZeGUF9 z55H>2_xE=}Ja9~!?{M!wxzEmb6*V<6QT)DY9YILO)GU-~Xw|AVk^wS8udcBdqFDNf zWie5bxD(A)%XCdqX>IDxt|S?A)0d|g5m8a%H3L08If%4WRDvVt$G#{{Hp+RC-c2aK zP?jAcfPy$`m=LUiisUO+UISCS!z~(9-AtjWY0(hLi^X6IMfY^7pSY`1gPa zXG4ck?F$s75WJ;bs>a>)>X#--Rc?aH7`|bKBnLS!#?c#3NrCKJQ(u1j_yGvh68A|6 zuRE!3#>-)orHMKIjZ{gV%lpcv8V|$d*$y1=@1aP|4FMigd@Lgmnhqy}+i51Wbt_Sc z>NjwX_pD|Gp^s*I86Zo;&l9tAF(9mDfS`a*mrRAX?C!5;<^}1fB6i{%u&ay7m_HKz)48vG7SQs%?HtM8Bib_J1&qGkt<)@vP7 zN=nGTN6=PPh-62`KgcMo(%SnfxgF)>yOU<{6idr-{^nC_lhxaQ(Rb<<$Y>`9hOq@K z1X^ZbTBxn3);JiDYOC6^DX<|TB2_amjEs$~cKi5%HU4f`wXX@#$pF;k{sf;d;zB@- ze0+rcnp>_T=zw@zTa$|t}1|VnzsK%cfgyj+!R} z1&5Ts*5@sq^(AIGUef161hd3Q6tZCL{u(=($>mdf(zP2g^XtTS;R2Xh5H}r*L8fR& z;&g4{eL#%%%J~84@A}*6%3G7RRPDCxmt426wZDd?m`gxw24-hvZauJ*410wq1-5*T zx>X!bGQV1MrT_BK*_lajb?aBa-puf}i=;A!PX8nDkUoJ~(f35t6+2~nBH3!5_YHpP z{V;8MR2ruPzZ}osVKtDfI--H;uz9MnD<$36MXj3QhqmCnY%wg(vd1yN%GvJ{1Wa-_@UqhT{rr8TA?mk`M+z(_-ImX}GFrEJ?%t@lp?G5_9e>Pw^j8NV zH3O$>Qm2V(-B2L*RGH5*Lzof~J#hO_u%Rycd0 zsJxKCd@)W#Qah0`LnL+-7RG+E*h=&i)1h`m+Rul9Gv{f=m=~UIUX#vlmrl#c_C-^# z?ru^C-{u~Kd5ql8!W8uIcC!TyVepOaF&-KKML4eE=r#;yDo?rZ28K|RP1KscHGGE^^ zRRusBHZo_o)5xPlKPB>(A3Ss6iw5)!cAIWR+MQb#x^@xD#WIIOAi_p;P*VLbAD%!g z7pL59yDn5WQup#5p2i+ehnPFo22Q5LsfwJ2DER(JS^r?W0?&dLz`IL1E31w_JB0P69j%6pJLHE}BZOxT z7<<{QHC4h-MuD*SHn`XhWkS-3$3C0q9QvJ zqz0bYzBwhJxpSVh=VT6?^N(}X=TAix$hz#ZLb?NO_-!wzgMcJaIQ4mi{nrx-I;YO3 zQipIaH{HLsRB(}qCTv}4TKS|lec|C;!ATAE#&x7C;<{2+b7@f4S9;(AC5XP+(^&Rm zd}kHPev8?zO6MX}0_O|9!J=BqNFFN>G}Q}mer+BTW?eySNBM6% z$w9?Es4}11U0j6*a64YX7#Ule{8%@?XiZr*nGNN@&@sMIjvmS~2jATQwIGE<-E{<) z#usSW2OwGSBp!N3Lef<;nB(W-g-2Pupm|!sGRu%l zXKVv{r;d2FiJw@N=4+7$7OpxK!KPlN(6uV+b-#{SqYSUbc{X%|FCad)a0~YV{%|@n zT27H|``KY6Mn1?Ml%~7W2GPB)&wm4V4JakMk8>mJlp$6#$QhQTLsxr8@pi!wd?+A=&l#YCc89_mPBmLEiCpR z+FI*<9W1tHD2DBVcuiQBJu!YPBv|pL$g-7oJn{@H@GRkxJk@>(Yv&+l{UMRNYnKcW zS_mpN$emi~-aES{6I3NIVb3ctd~l*Ug5P_ZkWFmp%4z|B_74N?UWo%uY|G=ewT3zE z@jM~i-Tme?1%9$Vy|Tx9yl$uOo0bVn*AP3!KVkR#iV6aweXiRFos$g>2IbVyt!DFg z|D>AMBu`U#{qQT-43R_VZ?3zfs7JCm_Us+AcVi?$<9;6!PxLm$j3nPK&Gke`wBzGs zJ(`DgE7NFCvo5cBZ=%1b5|%tB@Q&!Pq{YnnEpV!vA#;n$6{VwNw(qqq<9US{S%dUe z;dJ4SS`dLA5-3QBjUTi}sS=ME{A{tEqM9~{H+r2+Wt}5`3hlhGYfhHJ%W?ze(J(X$weKm3sAF2TxKIFGgLC$RJdYKxu71>t7b-0sI9 z8L`tkz>C~|(YpjvD>0!v)+C{{QL?;7g~X1{jvZ&tHT+QOV22!*$K%HAM3<4zBVX1Z z7<*Jy7KeBVI3n(za|0e2-BUPcdV*A=?RZU1_(XXU&oLLw-26JCEr%AXCMD&I2d2kl z)UhNr_PyqU79R@Z*p5hqL3;2*=4(rmKm8d+U8DZs66yId%)nEfdJJdFhcUW5tMk^K z@|0y@LW735zE~c7e=On{hXzXufB?)1hCoZ4n+I~{WG*h9N%9@cljiww%kCipjypyT z_-n|FBs@m33S`{Vwz{?Ui#GgkDHYYnYklX3m~6%pZqh<}vt%!6^du5gUcqU8Xt)UWscswaD9zh9BuI zbA-hcX!clEngKH-U#3*;`1tpPz@I?fZnA#=wEXg-T85!B*3|Vb?zzcwv7yNXKS@Tx ziq&9PyXp}!&*PJ7RL0=@45z{h?*w-mG9fLjucE;rNZarRWpt`~&-KkM+pgwjLYuHe zXr)uYGrWuUuBI)+sre05sk*K8WT_&*(rbAWBcRk9Av6QA_j!M0_Lw`$Mw?PKtzKS zTr+Z{#7vo}vJErs{F0wJ9q-#7S!U0-0wL@ZhKu=p?vuQ>k(v`z`JoQoe|O3Z_tQWC zL2W!RhuU?0?TH>2<3FQ1chIxyXG;dGd{$sjUFXOvkvSP-9u(*UBOeFF2V&MK+>{S85)tNrw%tV1EvC@?p-R&W~AiYd>b^l(0GVahTamy>6{!H#X{bTb4T} z>V9F-$_C*yQtZR4KGtN5YY+gudvHk+qr*3_9Q2c2k4;{w*}0!`XU=JP?ZoEy4(?2E zH`^R}f(P?D4;m~nt#l^mABCLB7hWbuu}4G$=PY_U2o&lUQ)Y(ACeV(ozst28qO@*X zN^YgWQj`J!Py1KRnq6_f3ppE;#?TzM1mO2yj`Wf*#9ZGnQ(y6QDZ0pxCWuoiCHrsU zlaJLJk+ChPi{d5%I^Q7kDOZ)`^@Q!dMUh)R^K@Bx3eT_@PE(BMs1Fz#_=8i@N*mp{ z6bTwlNeZqXTwQiJIc)7p4y%Fzio$MiDVd^D`^Fr18sSM4^*0H1rUTV8l7oz1Cfn{R zUK&)~PuUPRkT;jaV9XVlGHG6TUyVT*=97l5B~gTP=}Ku9{n`C-p_NSkC{~tS=#}>< z^)zMIPNmIJMay{1@A|eRhokp`aH@RcR}n@*2d5TxhW3Eo3*sU1jYmf1YvSwcNP!wb zMF`^HzkAL4E36OGtuZMB2q z9;?6Beu>c=6nej(U4gJiY+#@U-jb!RL!>d0Qo>#U9xIGnoIjrKYU^_>2bv{0spa9x zSyH>r<8_rtv52mxghgl#jSe^v_x{QB&KEa#cMZ+WB}vMEMU4Wt{EJ!{Y)cctX>Dw& zPR{`jX_nCId3i=u!yI2DUkQsW&t3fzN z)sAI&HmrABn8ctu3Sxn^IMkL9k*2go)RU1#z?IoC1*V&vw`9CQbAvmCCsHQ?$n#^Q z3O<%U%^J$TD}>%SwIN*(Y&j&QvE!B@*qra}!CWlY+R_zab4B(JFqP( zta_979%d-NP(dF9Iwt?3$O=7bwHri>N;8KJ_E5&ERa>O@S_aj zipp=bl8>eMAw><;L2n=t{MtVNI%5|O#aBD9)t>+1p6KKYm{bpcBD9dhy}&;@~Xs%`GPaQBa~+7zF{k0S~FMZ24I*(?z1 zuS>A)Ix_j3KA}sM+H4kkk|jlv-`}yO&Ap$c{6jn8iVLjKU+SH)CDVyN^>h7L-{VD9 zxYA##I?c^`{h-M%lWZ4o9Lxr-8a}k_NtL+t&c3d#pJ)2BUhegPMH5S_;;(ksYdoVE zD&`m-Xp$c~>vde6@mT0ET@#%J$`=u+HW_tlMer3u*^c+#Yf5p?X=lkYVUhLyg}a-p z9J`%K(W73cp!3-bZR)5{rxv7yUsk1M#26_fQh2Q@kkU{i$Q5s7qGo;8I;{JJpWL9f0`H6Qvhw^Rr=zPnC+y}G1SJ8A!A&V0 zvGj+fe?8i28&jU?g44x5uL9B^HWx>{+%3$?p(?%ge8^=v*IP-MW+79)q=SfJ5ubPo zlcL?YPeN6%O)lf5866t+47FmvIU7nS&2*Ft<05X>(^u0`C({G;H{>NZRRo7XoF2>cfkFf{)LdU^GCrHKF zlEb`C@FB3;5<|vrq^-lu_cDhm_q5j3CQ_~;qBWN&m-Rn$9H$T9nu)3@(fPpbLcBR8 z!I3>FX9p+_w%*=teo3ZT0mKxSuy;fa-yUl}Jcwr)7QFh*)fa zj##(lAmst0mPo}TQ+`J*s_&l%Xr1qJH@X0YC5?48MU@~)RYurjXoZ+b@0=%Z$y&IB z#_+-rQHdo%L!C(8z%Y44}JkNVuU1k7bU3qswW zdsC-pqNXYq-OjQhf{$8;%q6yAL73lnZ$<@-&FKBE`6W!jd%&~~93KC9>7t7d$t4t3gG9I!F?=)r<>gR%bZAWh zVguRiwyV8aG|#Djr3!Y(SXe4^J=N}03E1DO%Yv5%w&6OxJikb2S9M2+hq_~L1h4ym zMWy86>wdYyGV~%f=-klxp73z$F=8qTcIZ%{Ons$HHyX7?P8vEUDg%9W6n^w?MWLk> z#Dm`wW%xi9z+gyY<&yZIg*Eu<9uML{ej-Dft`D7aEO23F~#Z|>D$hMNS^Hck4? zF-IEO@ouwg$k`pP^HuZo{Ht$byYo3!B^f^oe$=A$fV&E0n2He1`Dv*MqiN=WMt?_s#4Lfie>nYV{px|`ki z3?&Yv*Jdym`?Y2505`U?2Hyw2s}MgM=kx;NnJG3#%@txC!axN)c6yiI2=whUVq zaS1m8i_UPLidAG-puhyx6$HVP;FA5cf(F)6_OR1Ev7w@t)=pddUxBM#Dbc8!Bs8$` zjk;B25QmR4tHxev_qC?px4bzylXoN*8FE&~IulHH3(7E%#$9>}N27qnn)6Rrr3HpD zsZkbyaGr2T_TtRfinDDPJKL9BxYJ62QF4}_`yR&eUQ^nJ)=K@TUHK!wg&uEC#7%3`{De>wx5J#5XOBQP{ED7`? z55&~9-PPf?oJpQS$cvL|yYTizr!4pV9%A_2XkejqKZj*-#nf7cm21faW;m++c|{?4 zUyK#=K!~@dQ4mb5*>4kl@ltR(MYcD*L#{R;b;V!oe&Q`h6YTxSALS!?kOsG0-aM z1yTAaie+`vIf3 z9pSS!Y$%~R;mu-RbG;QL)O-2>au>-a}xgb79NC8`d%wS-$uKcB=a-v}#483_S6MDDc2*6b(ZV5%LOFSZejV@9&LFUw(kYgtBB z=U&zE3ln{M8R&ce_7lH};=D__(Y7Vs$%uTr>eQlRSCl0IfpF>C-ghX|63=BF3-)LG z)Bv52+koPmKdI&1xrXSQtCiIzo)mb~yB?G?B`|(;+@Cr!8MM(h&DKM_D4L<_G0EByE`oLj^de@Klkt7*C0r4{d95=M2c=oPhSm zI!~1ecV+D0-D+{3&B4oB;Y_PlD!qj}W4bW|#|%H12rO6@Jjj?%?BNG&?HTE{O0uj- zIYP2YK|#zIrDwX*|3lkbM%C3V>B2aH;I0Yo!QI^@unF$&x^ai#?yzwW5Zr=$aCdjv zXmE#*_w?82_U%5m&$*+={kO(gbJkk3YF5=VrK-$Rr&s>P?3ZV=<~#N>SD@Bk4+s|P0NGl3+2_g>ea0Y;vslL z*urQbBS5EBfVwdcjXmT)YYm=NcHY;~y;*#u4yE)10&u}heB>Jk`f`b@T4vu@A1L1{CY zALRv{X)-6-^Tfp4Y-4hp942&$uB9rGLFw%j!7GI0DUBToDqM_OxL}jAKm#{?sGYUC zbNA(ucI$mB?zPciissKoMFc#~O$KXw9R9zgIeXwJiNfI5WAgO6Dufy`fp z(%G|Hl=ruXzBXro>m@@Ad!E31z-50XzEw8))4!JRB5z+j3Cl#-uS&r`u~c zuH-O;%6TiNb7372z7tfzv0G+o!Yi$5zDof)$(OS+7aOJE=oo%{7WjpN3y9`=kd)`t zf2PM~#In+3v!7AL5!kW+?mXDCLRiaZA2@SslTBGjt-}-G$_6lLfb)-8Xf7&5M=eH~ z9LZ)ErC@_26Mt|K5#p$Z(lfdkw&N=Y@pvzJaeX~g30X$|FNj*r$d%0ywoRyf2DOrgPc~Av1CG4gKnF--Ts$;rX<~G7 z1Q=K>)jrsGVo?)hO@Co1Lv+y(PaW6o{7~V6;n{RW&Yf2|y<@HC>u#TU^k3if%VAY@ zDh-<}kN1=aQ^{b@SA7DEr!~i=HjHkwY#wB$&Q1ExWkw?{4P z0AsY2Zr0XR8aN$9A5njz-|uKD5hHohBpAilG}=+}@;0or$7lyL;)j6<8sMzzifsTMwK55qe%R|= zAAPR|M}vq{w&cOjK$!L70RC!);S1CtTby(_f53G)e<2{j2#_)NTC>_nOn$-`Kt0fK zPW^CIh3Oj`btk0TjM(&DPbO8TWup6DfEebo^8?iyZ|0I&U=2kLl;iU@1Q`(f8uxUfLk5;dX#;bE%)Jvp{BQW6H^ z?vlJ9o`$3^7adz04;vu@1KE($nDcp zT~*a-}e*JS9(T*+HoNZ;^XtJ49wd<|>*i2ZBid$KaX1F0;D#%SZqf zmG_XD_ZS=2uAPhc`1nPVKq2Ac_ti^nU7fa;*7t>5mpcj~{-ns*!{Z~+&nqz!0E##- zZ5)ul^?d>hfB|h=>%}t(PNXRoZRGPe+2}NFMDT3yp zwPj?KBDc%_bR;!XoEO!T07)DzG#PQSWVzL*TE|utA%mhbc1ik}Ey4$+sK`jMX(MTA z3)(EuEqmX<$mw%%&JssMK{F~;Kp1Q(MX4$sAxn9{Q?`M#M`>YO;ZGuV)^Hy1g-ih4 zMJl_V!1dYjar()7z)Uel7|_CFX<=bygURq38EFpdb+}D{e2%c5BOz2s1hlhBtZEw2 z9ZQQ$9E7AFjOex+z*E`SuAj;!s+hQm3> zd0P)7e{WNnp2^L=h8#37brSYo*N0+UIgA+EA;N4vIkRY+x;}w&wuhhVHVB0yoxjAf5505xBd@`&;cwH+)@1TFX~``(DLiY<;t~Jyl7%oCDg6m zdXG!y41YV1+hFzv{|G*5D;u}w5D@uY3>OA`U%BJ+C=n4g`C7KVnx(}C72K$0xF{u_ zu@EpOo*#V+4cLuSz+$!h+6HvVYebyx8Vp)o9_!@VDLk_2@K@Z5E|@N*8&1o>17(lw z0TDSzc_`_00pANAk*XKJJSgzJrJMkG`8Yx3PbY1Rdc0z%ONZn)on9JKqx!m=rumc~ zfiZ$K2S%tiNExUyHQGijAB0e= zWYj3lcDZ~soxR-{El)jk`*4{7m&jPbpFZ`z+v~i(sG5@l)(OKd>HSRH7kv7~@>&?a z>2~^;P-0|OS+A+|Yc4lmpe$)*awTJ***yCu(a`DP=hiTHYE=J%IG{6jQCBShtdM2A z5-$55dO-*6x^BRE7j-Ijsq=#jw(%{4RIkN@Rrq|dKz4ocwc-x-h}Qp$pa;j!w?W&B z4Lq6vWZb$M8>w6E0wGL`PZ1Pc^7lQ&;R6cax{m-8hK)gC(D5;f1p;)w!gemjF1+~Z zNBQaFmiBbLfIX-PYon^Urh#OjjX;SoQ6ELW66?CaGWlB$z>)UbIy7pOJ!4}8wnK1 z7s%?ZXi>|%RZ!*K#z%f=x?24MFWn@KZ*xOmd5+PnbJ(DYZFB1zUBo*TgCZu)>#R_E zb1;*B+C%vDxl^O^b{>ONImg6PLqz~m;1YXs=_OX5CM}Uyoc(Y;kb=t)^x1hWz60 zsq;(gYt3A|MyivUX1F`}>#<2dyagbXyClj4d*F{`coAXExI!OqACE08gsYBuSn{|- zHqs>Dt@L6G`hn4iN0^9XrM-;$Nvo_joJ||Mp~pidaJEY!(%hfJ+`t0?{p0e?6nI0N zm^FF)uPPrgCB%tcbu~s} z{02J-dQ|MM$7e@Tb>*(hE@rS5g}?~4VG_LDsEF^?6cmVL^%C`DA?6=Mn1!8sd(kex zk|2chi}_b?jD3U2Lp!GF$=t}q7j(K>+hu(|;DhgV)g^c>bk;Bs^DeY@2ft?yFO?H) z>x0vF;BS^S_Vh1lFC}N4PkLk;@W2dB2S1inQoaZs<0u5Cqojp?AZA=wauZ5vc-6Sw zbYY*PjA-Ozy{TiW<0P8U>=aloQVA5LW+w+qkIS^u_Ptey8ym=|hcL-5m5%}`^tyV| z6LU5OvTh664o*Y~>&$p(^%!qQWNx)zaa#|bn)JPY*qmNbi3}d~PcWT@l_`GI;X7~7 zGvgJ(%j;l07I57?^7NbT^L|;7rS;Tf}}x9^jBJGZ1GC6=ZI&h21aS$&&iuO z@->*Bsa#@nHttukbMW6$+KhLdJO+c~;=Zcl4k99dq&z0OAxp+mL_TNY=GGuVd#*`8 zL#BE39a^Pb6y_tBaIqzS+54}1*iqcgI*J8T@5j}NLnbvE7TpHS7#J9Xuru|-sqe?h zsUve>pwAt_@{MI^EEa28NMmFC<10iIFAdPBCT-$?K6!X~S?g2P*SxQTCai*;AHGb^ z<>$li2FfBUDJt4oe8rEJbYh}rqnjCS3Xs1LK|~SI0Lh4|Di)-V zRD)7f=QPT#lB|K~@$v5|@DDYj!t=g`Nh~!Pi~3$8^Sh~4e!b21f$%rXQ&f3BBv-CI z;t)&HDHz)p8XROIp^JUrY6hWO=6L#!zvKiV!@Wog!9WxsAQDgM5g-v~WtpYqjr?$T zZ>AcjqsOzhqB+LjP8)eWSN%AeQECbHj*NxrYK=z9lCMbSwD`K0lGHy9?tD#Aekly_ zHZ}Mrq?S^n7Rh87d*(N{Hpeo%Mhb*L5)M&ZS*B9A{%oBgxUq+WgR{T0L;mBZWEGMM zh>HI%lY3bOud}eCrnba<&=N%yz6-+S5VWHGbz{+#owrIy^Xu2my*)|*4gB$!)@;uC zKl!+H;57Dgd3Ez+X1CBuNM;Cp-qOc-QF_m5)r-8k_Y2(Xfy0^4+pV3ZMT3MA6F3BU zD%2ROLZs1k`w|**!!uE9YrU&4dy{*QW7RcX%%KpKjqi8ipJ(c9E10L9-iW@@Uw8(* zWe%mi&?<__bt-Mbj^;#s;qkb0oN@S!)YUqI#XBYT5VSm>gY`&5ZSIA|Yj1zP8mOJ^ z)$}rUvr~SJHqoAAx6*Op`upbSF}K$G^WdR|*{GQze&^Gi=pBV?$teudmC+9n^6p+6 zV5Xwl^tBnpxh=VBzpvQMtOTls?T=)&rweHw7_9d(lho^49a=m{rL=k>d^Cpm!x@)1 zQaSw7?m@2%73idA!wdFykEOZjBr2Z1OXl*HVlcYf0@axo>D9W+`Esibn?`&$H48hOOepF~Iu9NCrwKWfK)~`5K$l~pGUUnZy#E;F` zN`o#SK+M7$@S|$%R+YiQ=qXj=r!kLXey zZG%;{NPB|KLhSq!UdO}n=f$^Y+r!yR?Z_IbE0y*=3AP1J7?@E(`3R;_TRdYJ&c_N_ zATZAu6f6912v*=5ec@gyzq=M{D7GJ!SZc`mpn7X3O|+CR&0fb*2OKl$8<3s0#P$&MPYS*Sf{53+hJ zz?9jEtO@JWMlw&uEUunQxU@cT*T%2dn)b5dp65iA;L4)J`!5S_yhk+3X9R<* za|5R!L3FV%W@}eCY{z}GQ24k701JD_79yF+w#c5?}E|B->a3v*& z-;5cKdQ&RM;wVw1G{9dUIyFIqbTQ{&Tv>Jql;u?yA~7+PldBWLj5gc{6)~zQRE7wV zvm&;5GSXg{C-Bl6jqmTEnIi`GF5^CulIHzjjKe0tk)4+~lAxo_Bv{vXaHtk0aVKOW z{;y8y&+@JlPqgHY1GhX?V!u%yY*4qfv@{8>{0x+?QQeXbqk75A&6>5vLJ6^;%Af(k z^0MU76EyQt?qqnskzh`hD&2cnl1H0puqbKb(ET%6y|8*@#HYBAbR7IVJk5C`rtAbm z?U|#Q!Z~89N;zi9Rwg-6{>m^#2m_AodK*h~b8BmBQ&Us6)2+;SNPVaUEc|5o`)?0rLvY@aK!wV9-#co(Mi>%VDnw=l@YW0X(9~yToOJ*F!1$4(tSMoH7lr6;3 z^P(#9yJ<)aU}5uy{e?B4YGD#qAxL2`uximhK+=+>dpR#fQ-%)b&fM{I3fXn+?dzc^ zt>2a74*dR2i-qW2P^Lhfk#;*5zuDS!zHR-!l>o6>1eqEWYl!?sR=G~czVC7#&ZAs> z2?rfNJu@>Zwg2!iat_MZP7-*?1s_9JXO&bG$y^_0su(RP@U@WFl$!Ws3LARxRRPXy z>Q+v{Hb{YGqT7x5ZM|e-ZHpLANrMPMTd!$F zuX1#29KUS3X^VzTH29CZzGZEei&e0pXJ$&oI={9|91F}0WPP0Prk4f88~)uv8u*X`~9xL-k$12gWl?d^54 z;?qfN5K3DbtK$P|^A|44WV7)|vVzmkayA}lT2JFEF-?i5a;ZH1ZF0?q zcJRfdRGceUaj79GV*iy*gk-^ok1=b6e|w=zfTA-St%BTT15u9sz}U=`jR-N|LR29 z&#&#9-?8pd8DV>19Dy1wV~gG z<4mP$Jiy~&fL$ZN#;xDj=~?VO`={RKJY3>1`sOl^%G6Q8UG6gE4s5ETzhM)dy=ucu zwc=;$1z7Q-tEG7IYZC-FvkSr9vi7Uvut?cCuRF}2)=ash){I7u9G`da$=)#~-1hhl zGNG-R4ajg8BW`1v!&AsEvw=rq!AKUqu#Q8llP`^JK%pGZ2pdBDnu#Urv{4sgu3W~#Aw z?mcU8uT9F1p~u-xr7{g`T(e#RkrNIJluF&Y6)Uj(*c=EpeB&W`l$gG`OJx}&XlvA6 zx3ZL+ZQRq}qXi!P67{3U+~t|o3j}t(;eQ80o%F@(Q_tJWV!R`>AStK)TC3lxV@c`I&7`A`QY-zghDGR$^=wQ@r-x>bB{AdMD|E^Umj*?f=-zDY8K5qa@v`w1NiG6Uk^hf;rB%n=EhUEnyBrU6$YZZ_T^5AKtC~1!=srs8Vo9_HXBiQE>H)$@upi z1Zo~aUsnnsZ&vSC)R%vNIR1`744B`r4Iq5DSHJ#)tY|FE|6*FS|5-vgP7c=pHlZ9R z=fCHZ`@bkP`ZuEgF`pbH^828Ba$igBQQ@)vKK_69@SFw#4e`CwqxK)Mhvi>n4+;BU z^_f-vn|iAMYly5ITx|b)>bJj1LFJ#<0sYS-PL1|k>BAqGi1ze;g6jqchdc3GIEvpJM zorE}|MA4x1dn5DKBqZ}dMv z*QBkZV9~F^@(eTMqeH#y-cc<~B|qkI(S(nO*VXkk#X>=ink8GVw0G*D&WT=+O~ zZN2|OPS{@%DSdFb8Q$Ly@YB#~Q)1NDH+eM90314;KNEfDW4pc_g#O^BE?ByG#r}Pg zVrPi%*$xFHclax-U!8+pBM@yv&0k)Qq6-fZVxjKL;(Nb4{%xM^Y={lcMyb%r3hqT( zWO-yz(>Ubui9Q#Ed-P3g)_ni&{5}ChDh=rnU5|7t41HrfOIh!!^4d>EYsx6YJW05Z z*PI=UNBgokM2yOckpssvw8`4ZqwtD>-RzcC&SVwLcF8JV)?V>}a>X>XUO~PP=;r9rieL?RpV*kjLkT;($;p0?}6A(#o+DBgswlrjK*2xIB5KwAnrqIp4MS z*sC|*S=DDi)YdQvMDcH$+}hZrd6c8y-qfE03;C_=BT?4R{m9cp5mjy9-rI}JKsy^X zlEXL`tsceqZs9^_>P4I+t@NnM4~U+EGLgHaYYDeg{vB`VhO-vCv{ztBi3N$gC7dOc z+Vwa!`R5PQNtWEnjMUnp2I}|wmLIdt*{_c)z9oO|WxMgp^ps6&Y-zE2=k}PMvbv2K z{+V{rVzpL`dfR*7255yUZ)6;*Fy`0ue8_8NR091jU=tW33B#EA{VYAsT=}>NUmQni zj3?p9?R=i(C%-+@_$fedq29`$?EGP`5XzD?B$_8*Qw)ZKhmGo__Mi*a{rf+aLOLiLv2X@=TqV^w z%umRd`;Qv!#8o6qykWP`GzjY8Wbo5$=Ef zK3r58P3UbCgu{n1OC7$`tbnT(JL<1+3zCbOSLB6Ywo14$h5BEg=J;+xy<5!-(thUO z73&6Kvog&0i`qIJ1PbiO#jP&uKyPB$?g4=x@!sC7`fnm-bJ9m3h#1i$?J7;CJjRH% zYQy@KemOBBzH855;y$b!uMRu0UF?yWizaz$pb|;DPScHr4CgkLjlpnC&m&|vm^|{DT z)f`JqAld9ib!NfUu+8=e(m$5Mj4ISi$6CEx6=o(< zWC;k*YH4ebnk$u=+en^=92(AymnNgGATcSy`hDLBwr9>ErZlpq4b9WbF0Da0n5=!j zI@f!@>hYnkIKs89PY92hXNTP8ky6k;t3RMKbFZhFwK|y`t5$SO3*PesD8nLtR~xrU za6e?PWl-Po-83O$AAG7f=_Yet$YORyVqv#O=rIaVzMXt$ zB)~`hOeu8yYK!4w{fB;LEZ^jvJi=vGMHks;1q0=G!kJA*r@9P?&ziue!fK@xB&*q| z^t z$l#o7r$Msh1ixsq1BV{D(G6X5*Eg__Y`IV43hteFm}jFNu0CuKiymic-K`oH@d5<5 zcf2mFA^IU7?w=T!xuE_xn=b_xCXVtMhu1}Ox_=E{L<0tVL@=yXAjgsugZ39c5w!7p zt3P|kkdwZZWSm1e*esU`_%a|0o*UAq7f4HasZDACE+4(o2|3P&%> zU=vFlefo`T)gJABd>Vb9fwkWzr z#WwDo$$o6?R=9)(ZSTtn!&M(>eM$$R*kFB+PsH{?SdWn}+@Dtyc?37_*##vk4<$;t z{V>qh8XZpSiCW_KCNmC`@CuQB<@oDPuF+EKFbHjE*|kZiz1w>gj=0DEm^p)Ur>>-C zuIcAuNx}J765fcV9N7=e0xvgB+ro=9R;FC;@QM8z>+QG}W7M7uW+y0Q-&ghGM~nuU ztzZpj#9Wv)Pjupqe**1U*t!25+yC{bXlQH7r18(8 z?%&A%V{nhcmHW>y{r|i79SZ)C5Y?+))c=U%f2{%jr5w}jf63;*TP^$tu5od)bN!ud z3Wmt^aoS`WR2YIm zPh0dojue``qWg?Hm<>fk+!c=su3+&CV~qnjPwj2ziEr!78n{Dxo{n|r;Hr1+biLzz zUFK=E?%dER4FZB4N(M4Fxfcx^!ZV-{VlrX}5PB)K!V%i+GQP&naCB+`FXU6}r{8)2 zL4vkY(!)OIR<}nh-}!yImR#40$K`|4>-NFWtIz2$iZE8q&1~L0$G6bwq$N%TmR#CN z+U+A+3q=3oIKjD8^UMT+(94H{s@*Fti7Rovi(;nnLZG30`1Bb5(kEJ#7Eq0a3kWT8 z8o9?VrP*mZDMAqem3HETf@!HyKv?rERk2?As~mOR}A;j|haaum?UU$lS4{ zEEy@RC6nbf79S#Z7Pa+HB@v|PR4ybfqYNkVxp>lxJqN*#Ss)6+ej*VOq$D~L&n)KL zU0U7jpkRzP9Vl5PCsr_>vt`T8PAD#nIh&=UdKd#1R8b7vom*S+Lx4V9m;Poi8YR_r zaZ!}!saWnrNW3a9DFmKYIMlIqO{)ok+;9|RAsm?bMdr=6o z#md4!9A5?Om2TiL{Tj#`q-Wla#w7`=@ZubG?zw%sOTzzm_(w0^;g>jKv=*fKnc_Tp@m>KmOJ|TY9W;) z#us~icYb`$=D!xU126;~wLU=PNKz}E3RPFlOhC9&I%;={38^Ru+{!^I1Sq0uE4@f_ zm=fLNv%~TR#i{CNJIcBe4IjjIBus2zjbVE9XRQBFjekAotzfKnrtRemu?NVi_Z1CQ z;z)ytKR$c@o0g!PDYuAdw0g%hc~;i3l<%+>uqf~L{)82%x>=m*t0-NdyBi0~APFPI zyi1W*p{6{x65UB>PTf$@bb2~Y^9v)vJe>VEdsFGyUnbFS4z`r3!Tdj~$|B_j)kH!} zxu}MB`WR|PW(jbY|A6pPbhL=cc0D3Ff0mMChd#N8NWKX+6}NO$sR;7{rz}=W z$T)89eW7xovPdUOzKdmrP0fZR1ZxA1XO7Ik9+b5CZE{i6F|J|sG1_UErJ+*3H<+Sd zl>)}mb^&A7vZ`W01y77lx#YqyTYgL0JWz2ay>I;bv=zCMV@6=Hu+-!ZU}*2M{HJ}N zE8$L}Un=Wmtt}{G`HA>2^~9c&7NVk{zeK*2#0%csyVk<3!TuaqQwd=ckc-*(sJby0 z&?OvOoTMV(e8(n8iza2Ba-^Md+)-RwcqFs7hqEVLrIytouK-X|rR%PR78ZI}F@gT^ zwSkh#hi!h4th(mI_49PG17Q#$YK?@cPxJWM%@4uU;xw)ckhO{K&)eNg*^m;N*ki8- zQ1Q6>nd$W&ED7QkU=82_J2R*0`WSd!Qvm#N=C-&O%JiN(PC~Y6oHEriAT5b!>VviY zc=bARF^Vi0N(LYpxB&1)3f30`RHPVXO;s|yT%iaG3E{FHcwj>AQglzc)P+aZ}W#Bex zmjh*xI(6%b=)VT{Uo-&v-CJPaV?luaau$f*h!A7KDi9X1g0TK(B(xCq?{XDpi^GD@ z3Q&T~#s5Dm(!WmT)CTT=H|yOrB_^;ojaz2&^J|k|719>Xfz_xv7znsi9kWXGF9vL! zr_pZZ_xIr>otx=N?^+o{*GgILAC%qLSW=u_*b};LnCr4*4yc^3{7}5hh|FIL=`Th9 zWD!hcrjPEe6MseZpgJgw33HrT=}P0iuWx>EBOmB{p}c^3P;J2y^rg0ph}X)o^O*)t z>V$kFKn!0RFC?wLVV8q*wvw1T{SAgpu~p<(+(yM++S;RMVe!3vCf5M8BYQd;*_;{J$gk>8LqH0eN?KTj z=9zlHThWo#Nh(k>zB_CC!#l32?<2DgmSsaQpA=l$eWrOlFUtKD@XBeQJo;X`mzH4& z*yj#k=ZQZPU|yxN3&$ym0H)G8tRkXn-n%o7%6q=x%%WBPpu%)#FH&1OOl~n0#HL6~ z<@iCHtgx3P!Y2=4@slB!mN{)#0Pk1$VK17d(Ba%8zq@4CHt`YfrDkh{M7x*xZ$zeZ zM1OPGP_ogV^iqGuBo5lF!=PUw)xj6h>eqh~lshhTn+ z-e1exy$1fka=)w6YnmWNUphFW?E5-|^t#y8YGsh<9iI^)9tdt$9JG zo!p1+o5{$mdlrs(&O*sMUf6RiscOttIeu#w8$5Or0NH%Nf3Pe4$|YiD8$ukqfRkVM zfcbq4(4I^xFb`KsxZj=n#c6tL#ri^U&vK4n>9YLf-98hedVa|G%Yc4-&1l0rYT+lu z8o(*9Na-dVNUL1$1WIs9nd_So-x^g_u(O;jH3>Sfn^NPAju8`O=Cq~Z?XX3!-y@Tv zw)6YRi!0S8r{7oT+!Zw6#n$jj{iYXz$NHq3`qtB5UX1<3BL%4B3pz(et1`hT%U)*l zh~G#>w&&zB_RBKgv7*d6Ryf$$oJ)UPTdloo%Zz2txqOCu?JPV#mMuE7kCePm(y~*_ zeFrvt1V`E@TF3o?n29a)>iiWms+WX3deI+7)KW>@KW*bH^sw(u;0Rbcd9;FL?PYqS z))}O%=rFv-P99n{c7tx={n+mq`KV@_7By+DG!{&y0OR?XBfAkgGVNB{Xkv&IJkFS>fbA|*D8~EDC9bNd`j0Em@Hr?jeeUb}z8DydbT3{) zH$8Sf?)u|WX~q1VBE%~Vfkih<=lb86i5{gvKuwhD9JF|fdPAC<~aUTKF0Q=R2S zD&c!!4hpopDoHc3x<5L5CnjboZv1Y`-%6r)BhHs`?nBvA{CM9+Q-QEN*jk}<(M766 z{VExpsb~p+ojRglL?yq43dt%)ArD?i3(I0ss6^;2ck&^m7T+${N88e~(z7(ZqLC?X z4&eWcw>^wztlg#GeKPpjb0mAmR{Og=eO?+(9ja3ssDN-9LM^Q5%8fkFPuUstN%*Lw z8VnW%@Q1ULfiTK1LW94E8ceAkF|spvXCK;)f~J>7Gm2fAt??d9$JysTB(2vipiOV# z(!ANvC;b|i5TZQ6Qb_hGO3!WYyNqhf6;r5T@1Fkw+D3p;InJ;Bj-5k;!Ex3PLd#5Q zMYHN@hty5%oQ|@P<;&c!mH-U%aSKp=RfPfI(c`KE(ut?LxMyrHXVWd|mIVnWZBJ7x zuBs1J0HgtBrCPu$$KQDth@YdrVeORAZ7R3nq(i3ecW%#RlRt$liK81~C=`_!S|?bI zI)raIY~gS!C`S>NO`I{4zA%20ul1`H30!7!US4LJDZUkh=ll7>`cnC_{X`RE$MFqA zpSXZ8tNQjM0+s^4#P-ypI(x8dCI{krE7}haMDx`L35pc6%HVm#hSA?Lwhf;X2&{yj zkT>gRlFqCaay{sRxLgB*8D7PJ`LxfvNMxYxSqnqsNVGnyrp4mhnWb&6u@hiz*T*z_6H+eC1;W%9-f2nGA zU}Bx{{X=B8&T;aNPRm-v7=u*~fWJ-R?CI2kCCRIGFU|`2rM3nPv+sjQEqn{URnFiq zs_VDoom)Ou11RR*Ag*g$EuTm@xp!>r=Co7z7}^_$6z0exmyCjp%yw?Di)q7!r;-w@ zgaYwX)fB;2&W_)|8!3?eevbF!hsx87Y)P+TislvDLoU_m9VMUmQ>3bDXNq6eu*K>; z=HtHM7_y&YW0QFuNuAq7x)sQ6*@3WQoUGtIKL0sj$;A`y!C{&38#`r%@hz%Jn zVg;u8gw0LS;hji*z>>Cc%uuvV1Ox@2xj~QJ-f$3fn>zg}z*SFd2hta6C+lY;sULN8 z^2-L%$G&_-PPWnYb^1-;(aG`=ha=q|&&TbHZm@DJ0m?*o#29=5Fr)u?BTm8se#S!t zzLoPl|N&r9PtdiCuN@;v0| z-SBV?GJKz(cZJ^MT1@g&^JPynYdg6){?@1%G*Uqo#$r5m8?Z%Yada>=qpC#N;1E}R zdGfagpDR}lU-UQMUyXNSFoC~iYmo^2KE9$jBwu+b5GM#Iy1L!A*$VdAh7ZZU1wbP) z3oAX9I*V0eOCRP(@^W-bMcb^UPId;K{JaHo3Bt)BGk3xE48)hf;cY@0l9WQi9n!*i zSouSGMgG7Ym(CSCNR~=LIIk_GHEsqI)Oe353Y7KJa zhr5|fKaA%G2i*)3k$S9&`}jJWXYFckM(`=VaaRLw6adS`(}K6@pGbPtn5Rkz;MKoa zJK5)C8+nD5a1301*+@AwE&LK%OdBR>nTr{SMkxV!7$_M3+Kj^?r_SLgXT9gOpFSBM zy@YO{U2^v8D)P^PWW^W(@e;L}!d~l0e~&e?orh2T7njjgw!KoLsNzSsr(*Nt7-axU z4^LL{DxD6{6V_eec$1@5@?L-YM!1eP$5WCF}qlxpW%N`&t=-w(50jvfG z{eX`s_Jw@PJkgs=9mt2l)orwUaHynd%dNXel^VX*VtD%M5~co(OorPq;;-yy%!!3T z?mzvu!qe#y+X!KDU(z+N^ZU{4KJVOK@E&=sv_7RGE;`NH##v0&l5P;XTml=c z3xywjhLK=}T>_EbDR)d$kPP;T+dXZGoKyn_)BJH`g^8Sz^VPQ&c4{M+tv?Yr z@sHPraD^#3t!f2Zvq1iAY5M`X8fejG0}iTUJ;xsNwW;`$ zIeo$0Vq73LpbIhC%nNqpQ^MN~(lw8b0OInba$&hX+QoKbeKsa2!K`h7JcbS*_o>vz zCw{aJK3PHXAy%RKqc$(Na16eXulJ5>M2|-Y$)t*7@iOVM?3yX{b>M=r-sO?4<}(DNU#&(sj+hr)RYQv`ZJWeTg+NDfkNS~pT8*E=|%!mBJ>KJBT4 zT3Q=Uwg!7qTN$_fccBty{>S3dQ4~v_Oz`?{X=HKf;SzpJ#Y?TrYk%vks&uYZ8P1w@ zrsKOUfcL`gSM4fr|H2B*IOf-1E+BP_To;ZpEyJE%nNTTH#?ng}(wlB@spW1ogVp~l zPx>1RX=Ir@^U&)M4uVyue8w{B!$i^T$aU*&Mnz; zF}fopP7UhW=oPQYx zIG7-ul2pi4e&iMxBG&czCx!prF?PW69}K`uge~h|h-jmZ!iV>NfQSy0%7@Yx#WRJtOMGR2LcnXg6)ZbZ^nc>@@~$n&66#(!wCI*X?Re1E62eXFNcX#fElw zWi>f1NH$VYAPwRQsEH2A3Y)SMOfF|I{&OK_3m+oI#>oMsfNi2W1kNKVfkk6g)zk+@ zOt%=l=Rx1*w?+jC$JHA$wb{xg3Ys|>p(M*6+GG}7xB-1s%B0=09>7l|6zr3?ACnQI zE!ZF6WyNNojDi^yC|i`7w5N-k-}c6R7CT(+))hem4?nDIHm)2Bu1~$UzksX8#+do z9iDGeM-(TU_kn~cwRXN0o)f7S{$4814qTY$FqcItZW`=Vg(GohGZ*-fY+OJR(7=G( zc+cnhn$3NOHp8-^~nY!|Fi&hyTZ$|9jk&S~uteQ$%AOVJViZ?NR3F__~G_BmFB zMa7~~8z>QO$EId<3m+Bc*g%Mr=06s)vUgV#OV$O4lnwmB)0*-7`l&_U&j|$df3v<3KnG~JF8b&$UfM;^oO+>BE$L=mhMSSD@Z4>g0X z!7Z8KGLA(Ow96?gE*+}4#n3>uvf`KFz`}HE`4;BvCR%&aLqVYr#ukw0P6fbj$XJ5{ zna3=S{y*N{0xGg@Nf*T3-QC?C3U^Q33U_y>pm2A0cXy|7D4fFG-L24}?tlCB?VkVj zeQRdTiBm{FOB;E$qINFJ!FKu^dV zSo%J!nUqmNU69LVmtD*To?9FXm_4PgAmw5 ztS+3p%_*GIK6^0Ly0V#`BBIRs(W)kE-Z)y@7CB*I|3)V@wt6*sXJDgnhT_;b*;T#D zw0+)Tq^p;)PCh7BPVQT6R{BkU(r7xwbmJRWdlGv?Hy@rlAR6}T=4-|R9@%<~=2=)K zn?8hsltUN4oR6O8MkX(dd#jJ7wVXLjwXfbxBd%dj`AUgC&gxtvqX%@l_o6}908vn@ zQnQr$p|%3z?`fgNUw`S)$*d@K)SzC3OYWUfGIv$}mg-wyqp z8+o{qyotA#40tltv^gB<0uzBgoSoy-}9g?X5_)B@OD9f@~2uJj$spFiS2c<(#ea*8qD5PK;+pI{ry)!4~( z?qnC-z8X+O!>^UZawy%GDYBElx6I*2JT((E71O*Vn&S6L|0*x8to#5}QM)}`+vNzy zGTc#@sKM%K^0w~lI^}?T2H>Ln?&zkxpdt!J+ah>y&fYNo@WK&^uc&>yfNz zAhd+Bh;H|>bUc-7Dp3G*b{!=P1NOoA!xig9ZTyrx_s>;2HAAnrKL5u%yj~R|jr^@Q z#f^Mv5xbI(Vj3sQ+puX>6ff*L6020B5LMN8xD?ftlv|(xsAMxE6i_oisp-e(s!v-^ z?1BucnFuO~co-wfkd2Vjm zcE_hSfrO2rk%OZx11qTBvbF1GgW`LO!2ZCm^M0o{Jwp<>XD~+`cpq}gLHy#7fVL4F zkuWF;u@WFO=7(C(Unes%!}FLf8PGpN=pbiQjkYl?s9>KK(N+f?f#^Wwf8gusVMs*c z7f7{7eF;#4kUvO8JhkaA1a8p0Vyylyrhi(|S235l`1^e1`>yEjSALdKohmyPER86c zBGpNLkCkgY$tfon4bdVqo}Oc!evTk>k+~A*hUwpOX1|q&0YqI>On1}?7qV@0zOcsT zSl&{^lIkABy+8?y0=9n_j%NGMaI}b>t+R=(^JkN1_J2g4MI7zyh3(w6nHW9+z@LBY z-0TdjEJR#v%naNtx{MNzb}sfrEG&PTCMz?_nHXCb{0~=uwwC^+O~lOc2Q912sBGe7 z=i+E&@~7MMXGdu}M}WP7k;$Jo0H)9G%6|c6MF7l1Y=5;p76Gsjv2pyx7J!wAjq{&} zY(#ATWEQ|q#P$~}A^;8|_CJ_qppHMM z{^#Z_UqA2uAJb>~`gsYfht7<0vSBA;{l~D+ zI*I~}%65NdLBzxeaCUSta{f!6pKZ7qRSXQB7y*nb9`+`TiUwvT0s`{nBjX?h8n9=_f)$o8_1WdlFn?++>FYOS2QVM5Rb3ztBKAsV1_f6|ggnVdOsxWzkxFLiTp zb5`sAh_hnf`zc^{Yl!H7VJR0!zc?ay0dIdZe_FJzfxFs4JGg_1jJ0wt5$xiN$attJ zj@QrZ5I_l{n;7c&YZk1AFKPFpFyPz4y6VN$fJBEYXlZm(?NK01jeiW?$VPYdgd2Xp z3x}Bns{`3D1t2$1)evEjHE6s8CDq&VwiA^H|8Lc}DdYZRCy5LZ5B5OgT49kV6EhGOiwfO4(7!@Cs(G6Z%^93+A%6t|0olYCvRsq( z#~qBDUdEy=fkFe)`Syz`!^w-Z6(i0VAB?^i8wOEqb^y7JhAt5+j&e@-sAs?^u)%(C zLc6!=g4h4178$B8-KxWaJAEX0WMH1f>{s>HbVj#rxn^kJ88G8kR&Ik8EBdefZ@@a& z1ZdO!L7b&p$l9E3Xm6zW zg37{F)kA|6$6Tu}AP1w!E6x@nnNYrFKFv5@wfk!fn$zHda|xOXPe&XP!j+Ld+TR2n z$vKFi1>9LJ_g#xtR}Ao8jbN1qapQnkYsuw=dV#c`8kYwrLL;27A1jkMuTv`!!EuNp z;q_TI0Wy<9{atzyQc5S6yk0R|(CS4zEXZZuo2D#Nj<=i;7eto90%a^(ndOO99(#l; zJ@KN?TL;?lQR2TBJgd*JGMW5(o*0(dEbqveI>FOQdkR{X{C;4tIPgQ1?jdDJ+FB&( zTs2SKND2GLHiQ9ndpgfYHQE;2R6p5k@91GK94`1F2$L@4@=o3e1YT$?FWwh00j97` zV{h0uFf(X8v6j%mwYwEHl{T8-F~`{R+~;)Kb{kE~%W8_ItKJ(;QBdt*MnV)@b$7Vv z5cb}2k-8a~HF_9J-POWDgaBynQmfu8jAzs~r`> zV^DP04y8$DzjsAb9s%qG#XShHWrxbokb$jK#h)F+;;~Vv?$6-vlMUbUUma-G1@9AO zkF1vjmjI9jshn`DqDm7tl@MvF-r=~0StZYlY($HWOB~#T-b4|%Fryx=QL!&2w^Z%a zbhvkP?W0;#`A`?97d3}c8RyJvwy@EXn(OOs)}Tm0Yw;CqZii(JO@Y~BvM|uA^jIr1 z)mo2+Ak{7PVeF#!)z>s}h5dal$yXak`)0p#OE#-ty=p!)-X}07#M1jPO6P z2s1X7Z~>@3#_~+E`Jl{!O=dED^r0M>#*?ZgVF~;DZ1gNcW~#g?d5Yrx!Zd zcy~Dn2%i^gjk`VVZb>=bHmzi>k_}j!m!F~{%Y^kGR`^8_{mVp%PW17@F^AUHquw}U z2o=0bBTX8-(PzwGsz6Obb5){lA$-=(B$GVz78{727CQcrSVIzF0}(qx_xcf(qXO*W zmEZHm&smmy-d!rFOgk|C+GQ_MdO!3iJGMU2pGkmC8SeTbSaCHkORejmDwN@;db(2J zX>IRPG2X;Ch}Mv2Ra!4;=%+)ihHC`Tv~gb74Bf1xN!0B2gnsA-Ev|RYe$VC zVnRjsPqODyU`X{UaCK`<1NO=vPx9Wq`8ZdJ)Dt{6Lt6=CYqQ2I{Nb^L7D~3+X6~m2 zgu+_o%qXN$Djm2v$8y0{Ua`xz+G^0IhI-B}&cjPai0>m{FvD$?yGM))1@oJHm#QHI z;!RL`h8;lx(D|BlKZDgcF6!1;e+bO#p6g2Oe;7)Ris=*k&{N9{ z!c^nfRGO1JT|#<|CWZX60q=ZG8GGd!bEZA1Ryz1eH7C|gx6WowAb@kK@4XRUP8Sm| zvY-l5EinD0X6XN6L>NccJeNojGQafX7j6_5R9;M zU|F>aX6fQk21mr(EDxt@Q%d;^%oZr=huLe&)W=sJKw4S+xNd%-PnE#&{WPCuN1?cY zL(&D8Q$g%5gwSyabb-fMX8K6&D3YCRR7G2vg`f>aszaf!d{t90ZzhD%ER`b1tW~AoMU*-;8A%oG;TwN)zvaa zr1l>HWWNr>hbm5GW+j~f6%=bhoR;d7)o6M7wX%{5ZeSTa(`CM$Bs31KM3=s7J7Xd6 z$rJ({R*I^G)bGvhV~_A3#U5<(ggglgjeEEkS#*mP0=1>8s40170*TVc8QhuxYGEQTb=ogW`%rvSQrDGNe z|3K_Rx-D*#yIzM>aQ-T+R4Hg`-aER$a=Pi9BIUaO*VYsrtcYA5Qj=;xCgW?!2B*1pvA%evmw5%@sJZ;` z;u^PXGCvuZp2+uxrC9!P?fOim&_(B|S=42+REvhu5fOyaKyB^2wC2yYMXg&5t%qKN_N0{w8lJT{=wSr}J&rv@Sm=|Zr&P8+`qfm3@e;1sZM9YJ+MwaLrIP+b z$HO}BfoQ1^&Rr}bJz(kSTaMVr(vm^Ve&ZlxX14+)Y*$^848?|I(=tgO`7%_9TpTSK zL&DVwfFHf>mjgw1ozm|g?-hVEtdNQ-1YRio&+Y`&$Y6)0Z5q{~=Mh?Cyy=Nj?nl4J z8o^?7bmkb7r;uTGrkg{;YCCUIYlSyp(#wK#Yx(&aEqV=?o^xO4Y{}q??ZwH!mT73+ zmTwmiuET|#f+*DxN4`LhJ9L5K{;=60v745$jA%4Nt%W#gRyE~l^Melz+DSpgABRQX zhjGHeY{;e1x?gswcU8luVah;0}6hR?kXz6mbcY@cg4C@U_{m zZU&Bae%y6pK}^j0A-HK&?~Tftfpxpt4XK(d-NumOv*zee6*(nDpn%7wWSz;^?pW%l zMyeV++98%2v5zJ7oq!rQCuBpJ(NaN*S=KdjDaQ07014F)YlVC>!jm)pMxz~CT*y6)ZtG5Q;} z;^@btcn3l=0_p>dR9tdRv~PJ@$vX4o`yjVkE=_}vP3i~<&4R(PA_ToZx@PV~`Bvoi zJi4i%EgOCws)_rX>@`E>$%SK7FoE(?-(s_wl27}|?A$ENFZ{&n^ru-X{o~V1-BJRs zSrE+Bo?@+^SKfZ?O0#xOxR{R%MuBn_C|`l>Cz2A}kANjd3!nR_z!HD?_fEHiXuDH2 zKlrSv6*TJ(P=~V167vkyw4K0xs3`3+dsFc+W?lPzJUJo*53W)gy^WOg6YyMXXp!D8 zp6(C|oTi89sxjtpV|R-W2yW1QxLv=b>f_+*F=%JVhcAy0*e+6N3U@`HpG*%|watg& zOPI}^d#Ta+f6EkUUp8bcuqwNrzcrXT$?(*GrJK$Q+C=gJG0_+8oJsD$Z@3-jnwF)M zl&TTK&&FQt>=Uvop>qZFIWvhlZTh`viFVX2Ph_BcN<^ ziN<`vvnR?4V}chU4MR$JXeHPU-M3jdxeWT2%`DseV#ve94pk#|Gs!UVZ62015*%Zd z!O4v_-C?2jHZjmlac-32-}mP?F|Ky0v|@d#W%KP^DBaA&WkAm7&) z2`;`PEQy>9H485B`O4E$;1)?y!U@2qXn(_PNb9T}h7^3+Hz{Gr&YDB`kgyElp792}fSaCY`27 z3hYgWMP>A*Jc-NnhAg>}?EuJ+_YnjHZW2pBQQ9V2$c+KqbgJ~h>5*-60w;!5Z=t>A zBCrqL2^09$2vkREQna0+1SNuOXGN zrVo*$%~)db{Cf;Zk&$+Ce}0-K#PyI6Uz&#nLG??PjJ^u{bk8Ao-V2OO!n>|<6l3`; z@r;Ozzj|%KWw}eW?x}7z`*u0aD|%TUNy!n_ys$F2j5Lvy9$6@B7Ydq6tEOx7;t|)5 zxIlwcq|io50!|{4^(fj{jfDltvweLo3U%*s>iviABujbS`susaDIdJD6||*RuX`0e zP`n)vkyz$R{%=#xOLM*^rkQ2F!Dr{n;LKFaZXRDe#7`7=-3#B$xLR0Z>mXod89AIEqa^N~OD*vYgOci2H&enrt_L33>2YLv1sP)^&asMz`RU;r zVng<=anIM47a6SLbDeE3@hY+Y-~vDpA0Feoq{qd!6N**jRoQ~Fe>9K9F~cZup~hXx zhKMgv-pwQmmHk#@8BLulv}wKgm+Bv4$2h`ed2P^20RF|g(~$UNku8#a`NtC|zsWW1 zIhzKqC&OlEZ@>-mI(AA3Idfeh;v4%>?Dh zjFa6|6&TGq}75wWWiwkEbTVZo~cx|0nHPCg7HOzrGaz>c*ya3&3kk3T84(3#A+s6$4wx|(=MAq&KKa~-nW*f&F;z;}vaxbPnnrV^!1 zJ?+-5K5!czrV$#|9mpL15rZhP>vFhe6B&8?RMd6k8ll`x7STI;IUe7X#mYB@yLh?1 z+2tOsqeX(EWRpbK7d=Ll-OWQ`&|XV2U3-(F)=?~ttSeb!^^hqHHjrA5a;kNoRycKcoy^hz1BXU!n~Js3XQ_)jMO$uze76;vQq zBX(x-&izM|rQ$AFZaL}dFNSz?7*QX7#&(&}%*Y*EdCzYZVl69MQ}`9$VTV6_`YbFa zMrU>nyp1UiO@25%1O%eEq)yf8=*N+1!cx}v)mHQ5e$n+13J{37Tv9s%#YJ+|bs=By z)$JR1Nc`P)q3l;F@8>=mAE}9*DC$L+Tg`3FkTBQYq@rDrPsh(lMHi@uzA^ZQS7s_y zbDjQ7$L9$z-Xst}?$@ZmEC%p$?vzEAN#DxH%7W(_VlB_+=1WVA)!JGg! zt*iyKI?W=6l|gX+2z1~#)f!_(nc~6d z?mLXg!h)mxG}NQo_`Ya74~vun!|W)8c9I5{w;c<8gn>&O%m*I5jNRPPXXfB!f;#Pu z9iX(FZN&{ehtHY=%2q0X4%4E^A9_=={&sHI21t-fymXD&f4rAo7rlQ_@(D9-I9G7l z1s2WBO|9Wdi+#f3n<=>K_1G#!i(h2ibghZ8Lif>NR6C_a|8?Ws)Y`F0=lZxBl`d~a z-Y7oE{?k2}{=}mVThwJDS7j4HR*-OrO3wu6xwZpv->+XPejlUn;yjq_OT!=|+3dB@ zWWgciT(&Hh%xn+kO0ov@=Em!jX`^1VZri*r2Yd2M<{_i%E`Bph-JGcBW!Y9_zc|3?5wx^c8`!qh?akMc}RV@Jn^#@qqS;zrhF zW+&|-?v2B=%LsI$^N}wlq{e5Ld#w=DL@GzV@3L)JkEiyaUo-eAsvxOy4pjnfl8bgl z@_w1{8*pAFh9S>y}M?1gaeBiK#(xU6|t|K z2)axLCbyp*q@(PBXurVb{3JM|LoHC@vFzb%x-rToNFB^0A29Phx_QtIK-Q{2pjThsqgV9#;V{V8}c=dMUn4Ha#A`Qg4HAW%s5-ny-(%Z07+NCT-8>)+qtl(VtL9M zIN(AB1jKe5^E7CW09T)1lIG3>6Aq}~;85I|w6;^$=*~uZ3o_ z+C#MIRr3|NMELLU*Ko#cfFGo0@tl2W#{KrN%#;}V%UGa4iMY$aDNBZs+$ND;C@Ld0 z1%~!;KuyA^%lU0!1$gAiP(iG40q#0njo=O8GP>n)mwm}ky~$JGKftko@HXLr{w`Yj zC(!qA18S_yZ2uZhLz|L{|3QQXq&PX~zvK{P8wHA>*cjx9Mrf1$FD*sG_C^-$RN}@;6$Sq05 zo@VlwY0?)j#^F^|>K2bst%tLNd>>av;AmKApkS|;e62yhPpr{zRd*ljut zhqu3-g-dp?-MMo6eS6d~(7OA=Sju7YxHivSp{3)`Il^|`8^RV(<G$19$ona%u}81%$sqfcxUhl^mJlJke3#DedDpX<XR4S z+p>)rotB3tMq6_41%ltx-R#Hh9HQ;?siU3Lhe^QVHALi@4!}{#ch`>dM-wH%60-je zo0$t&RC9H@c+aCp@7?qzXG-1Ik%huWdC1$Eb+feTW_q=amA1XpD9@(nc5^2yLQkq@ z+L8XZTVph2+w6fw{1A0|eOf;9TRu;woFQsde_^N zTBByhBjsNd|GcL0OK}ASuZpjnE~6)mrk5IY)*eC%|D^)e=AL9F3x||X0~V{^Z`LA zkr{NMBP{4PRk0dmMdU7`Jd*mfbA}kmPU6?dEcdfIJ8duTAq9ww7VN40xDYSDn9B$D z?mgHz?UG*t`=|orkUotuHv#H4OA&P(7Hm8cc=uOW#XA!Fglm5GIz47>$e-zqr71j3 zdi^=L&BT=4Dy90Ebx=r6&uB&@0Sbbz&up|o_VPV zl@yqEX-t=*>gi&RMiE%8GW4FPoI`B8UrQ}~|En-mqQ|3vn4v_i399@8^4H;CJq>=T^{8q#;gqZna@gyvdAzd!C^d@+-(r5NW96XF_P*U@_F z`Em*UOAWJ%#+aB!!UWD+mvY(?&0sSw3~nh#RCHnVgpQ)J{UC~|SJ#)7W2I4LQ2 z@bI<$U@pmIjq2BY&Ky*iZ#{Gwxpy7-mv1xrDovbj;fbal^^#leT>~7CHc-0lk z${fba;;+088x|lD!OIrkJAThXoU4@tURh{!~iu ziZO*1&`(tI6D=$aalN}d=8D#Ae3XHTKy{3jtxn2%(g{2vGaBLG#WR^R8{=h+rwpPW z0zn@}OQ*{Hk2{MJC9%(d&^PbTZ`c!+X0_3?Av=zGZ zS-tJbuvWn2U@y$_8BPPqyu{8~-=``;PzE8Ogut;$QR3 z={m|}`*m%VwqlP8z@{(1oMkNZx#)PULXnZdT%Mv~k&B%U2sAR=O5_h&2bO;c2) z+E`n45ZYdb@yiLpA$&jGHmWf+M|IxRR}e-~=9?-SYB!1E+V12`5_kKiiY;-{XuhyS zQ*9Qq*O!e>sw~MZsf6GMd1vMy^KB#PJO3((A1e3@2Ee2T@_}=>ILvdvH}5(09=dq2 zq*_1X9a6|D;(5AI7cC#7YyqE0P&_%UDOscwsg`Y?)aZuyfj_z7j zX9{67;~X}x@FZP}Guj>e&Y;Vb1qPEpTxrejv<%6748CJkHe?N#`mbV2<) z;7j9YKecL_!qzwEUCbytBMDIj zgr!?mnCz@LNG}JsHUr6a)hI$Uq$^KnxLUK%Zz*0o^R1oO4{bn?99X+$*woA{^ttVK zP|(S6WlX#S{UUd3wf!_-{P@)a!aJzLSxAdhmOC(saI~g@BD_IJW|d@B1qUIcYM;3| zJ790OAYYYLJ2uQeCgOF;>mri?0Mew>wtwaoFO>`b;CO1Jw4bh3YavGpW57j6T>%9+ zm{hxVcNN{oNIu4D_H7~?KjZo8>rZBkUS~@;gFYRyG>6N1pRfVqm#}7dOO3jVI8=jB z#cKrBRp`6DM_E}z5n*oVBH>T;QzRoE)zKg9v|q0sNcw0bmbBvOmNEI|7N0w9@^uIh zo=+^m{;=b@obzMDCxHL}lUDhSUsDLe3jiH@VdwxP2MmRmtSq7wNUw{x zw6vOyAJ4cdf|ZsvY51&kv`2~Cv!?O9Y&R+96UHySx$`pgerXA&ckbAMw~n7OJ(Yzq z&nW9X_RRGlh)VwTX$#$if7`6~5&gGiI=zpZwWb;oo!L8=_Il#U8bCS^L2oHI2B{n& zR1LN8rF;_n}ynrgy!mg3kopf@6M0klY=nQ3_shvaCGaLI9joyJ%~f_;=lK z=1^Nm4QASnSR`%wgYTf8HCETp?ugeUmFV2?Nv|&-u6SuVyzp(l1`a!{3+e-Ul%|0; z<3j}85o0nko@$8==Rw+ir*HmUax`DWeHE80sD2oXohyE)?r>8OpAX-XlqiT$zd zd4H_W9z(4q;yRuSxc+UpoAeUnv(->6Ln zq8II|otULqZ#I?LlD3ei@x%dyjX}*u9j2Ie8N4ot*un?2 z!TkH%(s2pt)h*{FAJ9dn92RnHF6Aa-0u_t2D){<}5HI1>H(5lm^>uCmuC;Cp7sN#e z#=}dI1_gjqR{1()ZM8tPv?U-O-RGx~zUMLh3a;!dW$m+bULXXo^y8&x!WYqVf;B+{{%MrH`;^t8Ff#}`Z;jL6pU+M$4PRMN zVqcu`Y#wpQ;Uv!3k+?DzcRlz-zSYs>eQ5|?@|$>uS(-a!C|bmuW9ZjoB8gOU1Y^{r zkU48=%0@lsWmEHn*>g&oJHJMg(;X5l!x8p;rj0~^u&pENs;}b|ayqjhxsT>ARTlBB z*wK_{rLnT9Fznv~@pXqt93>zM-;LA-1@Z6{KbxQto0=R+IcFAktpwmF0}*EUMEM+8 zV|@ybRe33b@Zg#o?{c&Biz@u>w>M6S7m6vm_P~G##;KC5ORGyPs)_V7sm#~=_n{4{ z2a_|inH+`enV+B!n*G*!_BPYS;aCK^VgKVL+=-h&CUAv+`3(fzjDTnq53Bia!AA z`{!2X-#@}VUuO4d)oXNn9BvoRdEGWW+E%y0z`^mm7^0w}qNAgtV!G_Fo7}!0yYdMM z2}x9slTuPrloS`6nVJnTX8XK#sdwNjDoz`et!W**Lh+Z=lAjFm5CU zZv!)j>PC=Lq7=l~{dE-URcJSoeR%gn>!38rSopNKORqMZ(y1FVS*&9osf#vw6bI?H z&wJ%Z!R|8hpeBG_jVP{yQ|fd3v$6%Av4ADU6NMUGG&IIMkZr^EL9U-te|F716>3Eq z;MwbI`Y^w?c6{>ooqnXQ=F%4l-tNOa+hwt;WZNdJ%cQ89kb!CgLVb`=B;#oJ+St*f zvZaHNkNN5Q1@754R763HHq2pm`Wj4X`kbOId%?}2jJ^#^0z1%esre?R+Q`Hs5hFDR ze%?ZmhnsV(hq7)M772TaA`*A^?cLz6rkU52-mjJOS6vtPGt`CeXog?D`q z!zmv3tSS9)`zr)eJJCR)&DA_1={HAn(>h|y<3M&X(O7Wb{Z*Yhb0c)ST`i^1k7(t! zTV-ulT8{A$%` zW$?3o#=8Hu<2m(UK;VBv3|PRp-&aAB!3-)DD|dl}ij6Zdt=gY1-@8d0iU)|HZ9cfi zmx9w63KgmrS)xlbe4i7-C^QOv3a2p7tTXJv;zzV;POHxd@WIy@qEGfqWDl>Li#0BG zP4OKP1w~OsltjK_R(r;k`DF3d?<{3G23HIzBxD_3fGnQNciG&n%U9_38z?FGD^B1Q z>?1kwwju)cNZYRYK6sUoRnYH_vVw|^=PR55mgckHQXSdHWf#@QWi=J;Bw|Y$sG<6s zSTCBLvG5TsoLcZJARM%-X3P)uD4m9*Q}?6VFE7c@1$u|go*cckA?_jHHrocVKnO&S zk!;<3y&>hUh?kl3MUouZn?uz?`4LHferDcOMJ5k)gWYzqvXK*H_@z6Lt@2Wmaub3; z4q8OE;+`#B}LGYY}!>XA5*WpRWi2{OspXT`o$^G9w|2Ci-L{ znM^&56Apf7zANIq9C%ouGRBXNl&PJu5iK#B!Ip`%Exbjo?7>eRl-sqlFKJWmrnm?k z`D)^Lc`$c=RXA~~+{f7kdeO1e#e_eYYsqa+8q*U4b@_IK`MpRH-5~GhFFNRPX*8p$ zOY7R0F;^#yQ4jXs(}dGbaBH3iS8^@q^t8fuZ`ZI~&iTjc4b>@#;vo~Y!+6|0kISF- zKPXc50ZX{3U`cT3j%zSqdMehwPEP1^-15qhJ_O5vMetiAVt5@I-&N-!Vj4{`4lN-r z#yx}Fst5A7hM&Oep^TD5oFn7OAK;Qa^6*o^e08?xaP(YMl`L2Z@j9&2`%1FKjr!99G z9W;@Y7uA={1XrspCW{B~Xw9$_2)FX+pJgR%R}2a0XzYzg^u2xc9jwE!jQoB2EY{ta zZ_NhPP?(wD%OM5H%uuLua1Cb5{`s}Vp)AdfW1ZPy7_dhiVkO-4t!5-Y$PI5)gVks_ z`n~V4F#FkuwskLFZm3Tgo_&JKmP`d62B?b+zD~opKo_K0kvnCLJJ87F%RO3ZMeq|x zFERmPDO2|8X+ih&-^>paBaToLwa4Bz9^T>j!OG#p)RU>O|W2~V%iFsLvJkbp88tVlU zxGFx1rNdV`ys4OM^yYth37NH%F}O5&(M;APP=Mcu@tPV9?40>zK;Mr?gYyE{2sW#5 zKWs6*&HSpx3xMyGaH7uv5*7#asl57{Ny^{QelGi4S689A zm-jDk7b5p`1A2K>F+M!gE38WWxvwN2iGT(iXP^|gny-5mo?R0_@c@LEX4)H2O48p; zkn)T_2y8Luk!Y2-chaavw4U-{88@Za8ao$ssGx%lq61xzty|#O|J*u$ssGg5`fDls zJt&?h8sKyv!@y2$CxGPR6oGVV{;?xwz5(jxfIHwuyhV=F zS0m_=l=!)~_p^!Vr(V8%8OAR}m$kdH+-Zq1T~40R5Be?QF7Fp3nTp3=m;eUTH?=Sb z;J|Y#h{Dm!=^KSkAhb=?2ixSOdYq=EUtux)YusmjCJq&~>Ocazw&)Lye+(buz0ELl z%+i;#pUdi~cEU~XT__SA^A>gmDw5%pz@Q0oL+|K!>%WY~`3ygte<9E-MZNhYQvXb0 zv+=h)OX|LS_H4EcNiH4gR;&7`%JF^QUtD#&*y#A!+AbJY$QJPG{*O;x<~KB@Jb%A` zcF+|d`Sr-|u2G>@rPX9vmGh3Q4-`k}QTBIkuz$%${2$$5|L@8Xb8>S0kG?}@rvK$b zV`lo#HXJU7&VO?3q-;Ku?EXr(`)7_Hqq>E$vpLZ}$o_xiJp6AS#oiQXCZHV$%)hHJ z{Ez&?|1)3WUwMoFdtc(e2!f4?ljXlT6aUJ9{I|};|1Or47>0f~o5EVH+h;_0V`bgwbAW3&`ao1c}w9aq|mYlZzWxq5)`+j zUnt1PP+N1HQa$W0yxcZoUwj_B^#X{X0*C_dI6Q$rUqdN-y}x~)U}7R93KdeYt}TA| zrkOy9D2}&s2j29boFvWR^h6ImjQyRPioj#KaLTnOhW~^}xFX(6C@_EILL?`yaL;pv za;^j1J?Rsr2erdImWjxbhJbK+(DJ~D(}^$;;XLroDSsU`0zNxt(A53WTGp{@&pXJJ zQ67+9DyI{yi9h!HSk3kyhEwSO7{^5?}E2 zor~CP&!bOQ0E&T;9?4P67>Jw|M9ck}BLy*FT$vC??vdKlak8Y?vc;EjnC*Mhasa8o z=^DLu6(f7q6_&A#;X)r*hwheo3y&nllAOunmKVXtdn*9)YJf0=S-RcyltEAv|4D8b z^d}@#iJ-t%+LpB#4^kbW)E&o{O$KlZj69;%QJrfh^*l6hIk?$)*MA_TvH z$AG8>t8RsMT@>3Hgt3XpmqcBZr0}gdv*3{ia%BaMQjZYVJoi+#BIbF0NmAU#7GIk zVs1S|I`^s?2lT?5Z}6(lhDcM(#Ubg;(Um_RQcuVVaS8=U(M(fnvhtqA^aH@#@1Hmz zy?Du$A?Xnpa2k-nu90{*ea!DrknE;ckHFdDcT*9N0wcR^?_iK(YKv}xKlQ`#+ixHt zBrpSg0YM}%A*@uy&u66IpOE}@eM8mXpNgrAp7W2WmJNP$4P?tNT(GYqI$u<0aT+Hm z$wK0@x@dha`PiEI>e_G?|3tzn>Kf)33=x0GbC@<}L*_mg&6_ zl7Qo)eCDrP+WM_w9qcwWM7AjXtZ4o~qVkv~wNc#gcAHo&53T(HOLc|W-&v)cPNM%4 zZj~OHMzSILO;UfhFN`d8BNe7}tnOs1zL`bGnW}ytN;Z>K>v0&Gn{*2H;zr2c!@@t7 zHosKeZ{`qcIgdg^VkRdfFDo9Dw5;wYl+vtxgv(sZ-A$I{0g5}poP;#}L8@sj$0?h( z^YpXw989E8Gv1B2{(tJuO)h3$O?cND<`ksHRo9v`sdHS~b0!8S50r`6!xj&XG&#@b zveIBW{bm->fPO3}>Lhw3XnQS9V>cz{NM@3g*3dfRe}$O$S{@DxnvEC>f;IyA>qOA@ z2XV92%TR89iJeOcg7qgoMT=+}OYBcsWx~(;f0?B5WZC)&=^8lFz_p~&s{Z&fpaTJ5!?Z-Mc!v0~n!$#v+4 zGkvAaD0)4##sK8h(7#bfVBVf$NvP_|B_%Vr2|zo~pd6^w0vtu(BqWn443l;%M4SX#D;FNmcz|4JQR?##{Y*#xT&!s1ARLJ|9| zD(-`;E5Y*Okr+{R++U`Q<7&Oy8A-b12K^=(;elX9+}8yws8;i6SrWfh*g_otDaM+$ zT9Q@q!227I2IhIl(>W1EplLoSL?-HawubeUHyuZRhnZ2l)#+X3^x2?=G;2bB$0>MG z#gw0Pt!t=q`R!pJ*&CPKy=H4ke`QKQ2u+c-MxeB5+jn1kLCk)6I~~Y(uKN*YAsE3i z;MU42cS8e7aZ&bo8`{_QFFa^-+YE+=3|J3g$zE=X}DmGjGdeLE_N-u#o$I z{ucaH=TQXJrK$~g0W6J5+a`1eSyqjVrscg+eLH!`PwO`!0C7!ZiXYjq3hrB_2Ps8R zOw%(KtCq#HmEj>AO;rubeg0NEhdbx5tbnaj_-X$1{%QWAoQVw82Au7Ge^o2U0}b{5 zsE}&mL7J=F5MGWja!C@B!s8K4|K5HisB&i~4rf%va}`Ct?R}+&NBeonbG)1JHy(4I zlQcxIx3;4i4aj%*1C%ugI7kXR;^!R9;$fFu6ubr^3WPiE&}Ds=6uj`GZ(lC_>d1n@ z6JP_+o}%Soj-3L%xqI6Aj_-!pnXWdOt|88hw|K1!zbn}c($b2+%#IuKQvlQJd|PFm z1y+xP2I0*0xSZ$ds<5w=6FQftK3jQzT62?0G%ZdgACd2b^ND9~=zr&uLkgU#m|)jLe_83+ z*+0M3+W!A(rDIwCi&=&^0R1%1f&QNsI~HQ*tyI7XDMck2G4bpQqN+dKE?v2tapfzH zp#tS;eZYx%2d>Y&3lC10=D>z0KHd7vk?QI01?BfapBrv@t#_;_@tk*a=aBrO%z3Os z%GN9m*SIT2?^cGz!MCJWDZIehK^vD@|4-|V?qOlyhV4Ad2Gz->diqSPber}6qU|liBI&YhVH^r~3U^D~-QC^Y-Jx)I zx5C}s9jb75sKVXd-9O&9r>A@R_H@s8=efT!0y2YO$60%wT$&0zZ)Mb*FfO25 z{g*yP#oL!H9%lw=oNAinRpeH@Gck}vc-d~LJ2r3dWFt2ivZEo3@~K`P+~$cTdD*_s zU*B4WdzwweZO??%_}&Py-k!A9m->!h?Sk^So_7)CANbw}IYJw~yi+E&fT8Ya#eN)8 zuzS8%2|-qVWl#4-;CNR`7-n&_a>4+<<27>&PI+FD&*bqU@GYK-IlihCc|?j z%lADiuI8H1X58X!3mpf_hm8bAN9j{4@k)66Y<>Bpe^?{8#ghX?>B9Hc3A5bRl;!it zGJfK-+n8$J0W&J^U(8ptl2v@{MU?cCRkD!ha)!P zN>6*|(0yWK=Wpg;Q-jz3QI1Wy@P|a&-j0wgM+9l~`(PW9mj&R?1ow`5+#ix0%je71 zpF}6mYOPuA&Vg?CVb*o5n;(|{*xDh^`@NU9sV1GZG@d~p3?{g4Ixj3dBQ>E_cd|J9NrYbP0t8|#eid|EXS#8F1g z>r0>zpt<@QJP=oAJWp$61bzjud|E-5v5}m`D|@%|z$#aLkqgjD3pWC%Z_aDS#-BSU zDQAH^nB4H!A?}-aweHL-7-_U&UQ?T2@zgUGxrdWe&KrjCT6`44 z18pgJ(+&3W~|R=O2wLwP3J+xUf{AVJLCJrpz~u#Sj; zoCd?3z9%qa3j1^8B?r8s@(sXVvgy{N8h8ySC*U*LrpdIj z4I{Nsqyqa%pq?tu+b|IjvTwXKMfUgA2HT$MwfM^ViL`VvFLs?XnYF%kWo8u;%CnH^ z>x`sgBXF~Z|K(nvoH@d<5r&3)a(G|K)O2v)H7d>~DqMy%tG+dkFmh3pmMJRF$Jo?v zqa4J+f?D2a7E5H z*)2aUjtD}lfjR{GuA&`Dxf_kwfhb*p#)Nl%+NY-sfdWS{(mSkeFVP8S(^|l!2cl6{NJ8#fPDoTz?KO8XVLq+rO*E|dVj5r^)FPN zzeRwBjfMUnRGq(QLjP9P`Nx2yoM`f9>LJKfTp z%}pBP6+<*c0AJq!_^{tkH%^c?_dvVV|=b9 zn6_YFD@D?u1{>cz$+VE|WS)>QmdyxisT7*6|7bB-fZo)e?8DySsy)q>g40GLLBo0Q zE4mj~ zM_DF=2yY$dj`mNz_(IBAE4K!bhB3Lu^d?el`aDe=?C-dszI)5QdEAmnq>2yTCnLX_ zYJoVv4FuHkt}o^1bb(}FHo=BAUcaG#<9mE&&v znou=Aqo6@#29r+yOKlkBy3|X{$izWW7mv8yuaX8Qu$~FuE96V}aPPC5F2B#94{};& zBbrMn`q*{}hsLgn{LNXxGS=JN`Ze!ri~fwHQVMlctQdOV{Wq*YuOB)(0w0t0apg<` zO0>SO2)bX`OPxCuTc~4V)zFKhokf$|BNs0bIpcNL{g6bJ>dn=`(jA|6lAR(OvBjb} zjjx{Ej13k>vnUN+#%7-$qo>~9fU#ZN`zFp_p5e_DSSB)Vnxw-87kCa2Jl^bQ^6b~G9IDBVJ0*xb2vr%8YZ1%`7<|c z-hQ#6zv7m71*hHksSgRtXr^}XooMmh!ak7QpvN0`87&~gnd^&((Dm*eMC)^%>`%ld z7GI!7Ic~4~f{CI9$o8}4$@WV8cgH%ohs4~LTUU23j<|ui`M6P2u`F0N!_{Yd2@IJ9 zjDn1T3YyiIr-~IJ^Xv@ru?B2<4clC5sf`YvfZ`eZ#N&JVKaleu0Qz??0oc-$nNeq- z09&RAWwTRJ@iwJh?B?_3T8{Y08fCxRS$)9NtP*Mt&Tq8C{5-s9#q)S%*s z9FfS?QTOaaPz5Z`I_OnFvZ6xuhi6HoPWV|6A=5~5>08c?NPz+<^no=_#T-ww%xv)- zHpuG`UOz~+8Y+AP6rEzEv(V!}p3mCAv$?zis^L~>C3ZUQpK$C2SiOb1DLsd+v`7$ za=P;oNhlVt2~Vdv?~=*JyO5eCI$~KbJUpo3r%krH>8Ga2nc9IA_g9EdR9%568l?ai zI*}f2&5NdMqS42!4ogQF=b9#_SbbCgjwU5B_bWjQ9TPl6acwZ4ja!e$3TFjs=~4x3 z<$<`FX!w_CI9IBn!xZ%;q6TPAFts?p0O6QC23MHeCZ3zhNoG&S4zFnG-&3wmLu9u( z*708ikK}u4IqB{8U&9l2e}=ZTsXwl$XDMKR#F<*dp7+j=dN(E!K@P$mBCY-+%V*NY zee3IY0OLw)-jQ&hVJX3eI$J3-TQHXePr;y>0HNQ>$Ax{29F4+{4 z(+@1ZfnsaaJk}|SUQ=knWJdDPxIbm!$|i$4?d6b}J}Aa*7Ph1y`YUX@AEs9p)5J(h zaa;JfMdBsv<_^tLy3QNQ_jD)YW7a%BA5UBV1NfX=tG;Hb*~e;cUP$d}l+yL?-KdLh z#iWv%HQ{5=N3^}tX#!2){wBJ4(gzFm!s|}+Rua6)P}oL?ka%j66Lru|V0R^siUulj zRkO^B2dV^S5f7Q))(#&w*SBtZ3Fs0vS3W_{PgHS{dsvh=9u`ktczpVsUKPU<6*hs2 zCf@_{T=paPLs&b1H~X2Ky5qx)CU6JzM&qM_%(!t^v1^B%xUxl(!5!h2#hZiLzgQJ1 z9+Ye*nSf`T&eZ8@P=AMKr9^B>H?uvu2WB6=gdykng-gkwit>!)?g=x_8;rf&&7?+) z&K-O7PE_orb< z0^Y`p7mhYg2m(3>WS|}~Y#zw9!8ey_T{eH6Fp(G8KzvqluQGdzuujr7nm=8`{yB&> z)h(Ok9VF#K_t856{ix-VDtN8s^QZqOVy(;nC1Rc9dxVXe6FbeXBuu^t#qgxxzYa6l zdbi%POlCwX*l8T{KKQ&J-y?DkvLx&+@tM_YlWQb*x_W|T2^wi8|0grIrtOZ8Eb?l) zRKpR+liV#^3;vCD;aRXk$j3IxHbTiGHEliEN0h{pJK=I?dkov&rzK~KPg!^phA~V& zXSnO*P|b?nt%(w$U#rOfd(y41`6OMjd2>*m6cMVt#F;p14^NYkRk0F(Lg)TOQ+8Z> zER(-XdY?YqO}$lEn7|BujYU7=aT~CA5h%g{g9`{K<<6%#u&=f%1TWHb&ujuC{5B(K z@&18-KAtURnjmd$AvKVA5o$`t^toBrw*g-%)kBk_vd_7=`w~Dzi~%&n=NY0T16NEd zM0<*Q*$qF;)*p(ZMWV9TcJGJ2uVLS)$}+Fo@9~z%LcBNu ztYL4*YYiOIc8Y|l42!*tbq+!k1tJ;7Na&`)$16uTS;>o3&_Wf$Fkva9*a+4+hKGCl zb&#lnrCw=u+37TOZ;(4f^^?M#L8a(fp*W&tGRx&j%a>KQg(|STt*tjPp~a02OpPDD zsG+y6-)AJT8!!%~tm&P?dID!as#4SixLjgsQUS$6F;wzTy@PJimtKYt{RC zFO$q5vnp?fHmWx^lKh$tH}_{xvj|6j&RK(^;cjy}5GRpGkfce$^4V@`v-eAc;p*3% z{cB4E!zNJcwOk}m0l&m2z zRpsSP0-fA4e~S5+63aAnMgz*VJQp&u@T-JwU2~Pt1oiReU6SInA1D@W*)W`&lWfBw z*~vY3FPfORG?l4+0VVHf!RTJvDta6rp^SiW$!nME z$tNrZ8k*@8lVS^3^njS;$`;~L|FbiFv2<=8%Er_~yZdFbwKKOP5;9Hh9Ez_S%i^lh zyg0#FyWNsRobDu8#&w2CBO(?*lrv(nmSJsoeL~59$_f%PXecOvPCgGF zSr{}^Ej0!?GEM?WLk#rNrNW+av~71cyjcCnTR2~UacKfiJU#>at;xozUMwKFvx{D; zBXVwEg&1F6%W5SGzZU2MX_Gv_=?(J!<{bypkoa&#t&hE3&H)*GPAN5c5e^lbP=y)Qg6|OBiWy&UF-&kvER8RbZ3u_N)pSG~xRt^Rz%vB@fYt9`S83pcE zo$-^eXCl~*d8B$c&DdopL%R6?dMtD!h7{;49|bDeJ1+6~c}5NRRWFFwaJfQFgZC;& zl4TA3LS6I2@lEH|DxqLZF^Z}bacD)}3dVuzuegOM7{~;}J!U0~!-ixIDD5|`NzqN=`?BI!duO{&=oS0xRTRy!^i z>7oDYN(pE z4~rV6HCg7!JJ5?5jpYTTIU^J+)L5BW?K8ub!qthcoYP?z7XF>oOfnq}h|Z11KXDb{ zt?kI^+Vc@<$euHPHcPm2>2ijLqfe1T54Nx-s1zWG#Y3d|$gGn{OjeNVdUwPmp{HZB*SsA6$H* zt*j70IYI~-@R2J2z^NDTi;4fT+}Esu3A+tXn_fA;oS5WLi`uVzgfvom9yS6OTNI>J ze?jP9pxQ+y3Zq0b#%|`+)BhT&jr)zuJOQ5UdJjR58N#tGUJK)n;V(!{Lq|~=I)sX^ z$kKbeB7cF3?}(H+h3zB5ZyvoQ{5bJCfnM(J{%JL6*M~6}2~qH+ad;T-4T)>M?@zEE z6oKQz5Lwc)rax(x=tpa#bnys3m^%P2`E6#2P<3E!Hv)&&BB4@xKn77b@n}$sv(ceX z=(8y4e?$x~7Jj#X=wSZz+-jyl$}H`&Z9)7iA+gtN)X6(tyt>#Gu0OdHa07K=ei}U> zJzTw=uIGk%WB-L+4~c{^ zFHqFvPEm4NU)2NobU37^hXx_;F+s{dxt3ekc3g~17LJds`M#hL@oda3sXW=F5_!uE z=V>60V{tMNw@*Fl7U54~oyMvFfMzCFn*?*4ZnfxWR!%vm@?@ge8o#QW zY;!{hgHBOnNJN0J{W=>3YebX?MjvcGNo1YIff>0pNfeGWgooE+2fw8jHxEvRi9!!c zOpBQ&N+tNnV(%LaMbC`IZL;@cf;%ffgdtHRSN~SP8Qbm7^Lz3YD zUlL~IsT_aRrsDO=I))q*$R$HC@|4USIZwo5n?%zX{2-T%nQoK3^Q<5aCN6eti6^ua!D@2DgZ%FDcU9M%-u>Z!Rf+&rf47Og;BgD09fE{bQ zmqwMlSKQ38!It56e_kALxcakrG$-WW6e!CCo-ZSfrHra+$~jlaNGcN?2sD2H5{X*s zZpUl(o;6NmuSHaPg4*XtC=6M2;Y~4PUfkHDL z&&PmDuOc>a<vwK4)NK{j0~o!1yfhDL_?J=rYcr02;XV8nlbz^n+&wrCV2=yeD^P98nLRIw;j; z&K~C>8^Wh{#``sI-b*S8zf_R(N)eM;2Rh4r@c;}3bzpFyJ6OyS>^LEYX36ySbr7+% z^k3gZOf0{FcxPQ3h)Bez*(o-7d#|7+$X95y0@62BV|k9AHdeneaUo z@eTvc#J2YxjRh{Qf3`D*2_CDsf?fUz1)h0<;yz%M&){t@zt@kSNtZxzqrp$>&1($} z*%i%ZjCl-!9dIn982m%Mh-Ph7NWTAcI=r_S+F{-h5`dXit#R4;*{02;Eg-`_+x4W7 zmBUn{BrFZ9(L347SVFLz;d2Gf$fH8?8R7~-i@7zp&`C zZ)fkB_qDY#;i*TkZTB}PAOA<2nSRVP_;DsCRzR#4zQ^L@F^u@gcQr~{QhpH{1@uN_ zb#Whr{A<`GGfvFkx450nfs)y_x%(3;Ic%s?tm!BH^yUpuP#j4f<{}8F5FL+GgK?4(C*~HtMiYkudG11l$th^!sgWBM=1m{Ab!%$hb0>M!f zb6CFdGa)VgCok)Chh7;vJgAnTZv_Zon4Pc)Jd;$J{IT$iMsuxn+P}Kg z-Y6IM0pk`k$$>1mO|qtxgu7I|dYc>)P<;{|CYkWP(Ehh%5<05+z=6+>K(I9uT9R?! z3;26!5GjFf({pmuj_j!6#TSYlS^iFzh@we{)-f?8w0S>h;*~TwIeupnOOX76bGk!Z zw8`OdxQlwbS>8Y+l4C%1eX=_w_O3E&rb*SAAS>Wo-bu-%1HZ|UJP_bVqS0Qd_bl9Q zXoTV$TW&%irs`$8yur&fRq_FhhaCUtYS5b$c3I;dovos6%mR2=8?*zs5*!Cor1s@Z!4PPl(;%3KVrTJ?Jj$`8tZCg9FNx3H^ zd=rb7wwPCW0S?&GZr!oa3orSn1;Ha7DATV|JMhOWfA|oN zgM~&{f2CYbwn)aeSNwbxT;)f8!TtWxcI+-t?HwnQIEZ-x-WGvatQ?bq z*lwebjn?Sc-~vbiq~I&*DhFY@E;g}MC3{vVppc5pX>2b+C^s)X zH3%S~ecMrR$quttM&9S;>>ECE*I7{$zQ;$bNIcb$VALgi07K2Z6a7f~A35OLK z;5`SyMN=@qwWDgdh;p(O=D zqK&C=E0#})?bgi>s07io0Uo^H}ZGrvq#>#FLZ4;Usc-G-E3idJ0m0)Y-Q^5sd-MoD_ z5J^UoxDMiw@CQ;$!c|e)vP!r_MmB?wSy2Gb3EK{|5S!Qs2w1hCw*RUl%TKVYqtYwlG)ET0vwvzpbicz7{LT);F$b zhtg1BPZ~{GYHa|9n3YDq8Ps@uJ#YXPzJ`-<_DrHQLtB zVM&Od`lO7g<7TP!gluk&k`E#jQ;$IbAWyX|p_F2-MI$1T4uA)T^XHTTF6|3EwvLXw z+DKMUUn^0m^i;3W;0eZ`h>qxpXf{dTgTz6*BP^mL!AuNu%aB1Mei3>eZJ1CT*GpKAk{^dZ5^3WQ2Mvwc7Ax z2M*c+#2Xr)SB&6h6#1#cNndwGDe(VrhA{Qsb`Ly)577|vc+}AX_0}K5w4hDi`l?!X zH4G0ruurU*Z{4_%_Y08?RlDey|5`GFoW7kw;JV8{hcXgMYeacNe*;{pb;FHWAQ9kn zu;7>*X{nTC+}+J|6u2h53zBo&WwW=`CB$(tQ1TjtI}AHqvFPA@aTEisGefbcGz|N; z8aS7cwmRW}H9oI&aY!e(fCx}&1out8j%! zoNe%7s-|~#+NI+kR|%tv)2c2`0YdwBj>YAjE3g7!P|p4(Ak#7%9Stpc$aPaYtTRux zQu8t8^TfvzUufW!3AYM9VjIj^f2C?1PU7eWgSAvz>!tQxJ+%@6iZ4*cnh`c$|oqD@9uP&AFRb}A>2%8ED{$sgGQ$O2KSIf z{kRlYtw>!u zZkyV|s{Dz0i+$?{3?P+)iGJ%ji*@eL)dA<=%T+|=nN~s6k*5s%Tsj*@TZ$@-;EX1W zp$wf5*$$l#0|1`^)d8OYPYO8nuMRj2kQBJ(R}*j+C?fF4tsrRsUwoXsI-&l;nVZAA ze%7#ml{AR?J`b%Vnq2SI2b4Hnd|Vp#nKT6E2vAjsJl2xEq6jEf$#V6K?^7y51|Sc1 z%>5z)Rq{)?C$Y&_A|5h+&IY}oRAB_3y95pL)q#<%2B~Qibf-oxC%ue z3eIFYRo}@9fl!98;5Tkrxvg>B7`Kn0qM-(W_!eR{=S+OD3M+z~T(joylMP-eEK|N! zZ(9;LKE7!6J&MfJR%w%7XJ@Z}wvjO=rg{sE?59d{-WkYbFdgx;Hu>2+3d&7fyeA$^ zOI|r(?0TZI!*Q6vH#U#Q@A-3!F3_ix%Zv7LP&f%WN%84;!D9{o#;mVQ<%i-@ev8Ss zxg^Q7tO#jvnnL8~XtvK{FgP~i6JfUVGW^sLJjAz3pF104?8`3EQz*MMR?nqPxye_v zGT%tD#KCn2%+CSia*VhV!T7q(Kb13oVzuHk%aipCx7+(i{6pT;hJkI3AmkBM(MApARy>ORP&5c35=1L&eCD-G@vGJ~ zXp#6HA*H7yBEcVryG{NRWNtVkWO=LlimWOmj7(_4Y zl%)RdG1itPN!mY#jD%Yg08x*2Rq>EniYiAB{3M22);$y(b(`E2e~sbQ9%L$-Nwuf- z3dFglviKnXDE6+hTcA|N57TKt=v(XSSqe2Lq@9e2SJr=&az62M=Z~BGyh5pR@Lhr} z^PtLCx-M`!MhpZl3M-8yLs_okdR4yk6aD*vAOLA*12{p7Nh=SNq5Yl@@_Nwz4(Z1a zaShbSTS#fCA!wd&f=ofwBvkM8>_2tP@hY!LsY?~diC)^lm)xMIL{go9fGQaTw=!;U z5iNWRGS-w0po+Sf;a|rt$-wJMy*T_pmLW04Dbn_MZbQk^k;YML14nhfic_H_u7_(^&HnJci!LriS1kASWf6F zu@D5i_oEhNqEI9R;Naa<(`OG|J!Ex=!rk9v@xv}^yqugrbxCo@0$)~`| z6lzO9#k5SrmI@S}BZ@{mOu<&ggpB5_F7iU;P6UlPxr_|L$r1lKp@yMLC4C|?qV08#G>r&FKc>5dl48MhNGD=+ zzBE8nM?uohbyo=+Nx1N?QShtapo zWQt{Bh_p!&9T~p(4{)5u^=!w7{D3}Kmn5-XQuQh#mu~EGW#LTaL}D}wQ?Sn7lx@84 zA|$VBr>;pZ*}=c*HEVj2OC&|Uf}TA-JQ09xV61ZP} z1Bmu043t3;OR19FSX$+r${MBkL1>dI)YQekm#%$7)r^HD{H?+%!%yi8VyRgmz8ZLq zk=#?Cj9ZU2$Q)O7NJjAdyK4$Viu9T1XY>2zTSAQBN&Hq|TSQIe-g*x{v-vLr&&oezl!-sHt4&z0ZCZk}R(nF&>Q z8LL@y&1J}nqus`4=)~PdAlL_NLSH6jjN34kT{_8K|1z@_x3zUDd(GgL-ZyS{C^YPM z)LK|7Y&NMvqU*|X;&o1!2!^CG;BF}V0;A7_uKTer4EW&jf*0CTO!VfgQOOUd`XtC( zmYIzF`m{rZp;T!S9Gg<&Kc_FhT+cArT2=qV1V)2RdBCN2sT@Atm7g;FaswupFAung zRqDXZ!B%FaaT@1h=4+qE$FqZi-u1>0hEABX9gI^UG4vd?rQ-Ck?`0&bwc?nXq{rym zQY~Y*T$EDfA3=j7lBH0A7PF7|<9Hi^99$v3_#4>fjL$km@vTIj3hb-l*)H7G+t_Wl zw@zYqOM14j&)|qDpZN*y8BNm(w24u870Xmfpa>Sl$`0ZU!sg%2J!&ebSMIY|^C(x= zFP)88?OQt5CUgYFjk-p}pN)$;inw$MWcBtWTr=R)yS!4wNvel+nd4K_%$F6WVU=`9 z=T!l@MQ}~{lP=_Fzse_XRMY8WTzBO^ia>I zViZ^VB0li7B$Sz+Hbgn9VjPXEMAHS8xesb$KwApx78 z8LINq?LH^5r2jqEb_tO(@z1>UaGYu9&&=`k#WE{BZspNRT%Yc}Z&J02YtUT8xpvuj z5@ek4#fh;tNjXzyZo$7&!>?;xB4eFT_N{^EWwiHh1T-E4)Y!0sdT>Vs{^>YBq8x0*Ja(<&=)$sp>F2s4!JvMCL|eg0Db} zr4-TrZbvYKVe<)beu~({-|uTWE?Ss8e|DgEhCO(h+dX_U{q`*hY)$RQ&NbrZBq=eMvEtt=86}~*kaE3O%qqte6qzv(Z41*wWRjEO z*nbo8izSO$$37zG{Mu4pP9t`vFNi&9dG(vrft4k^`;_xK(k+{VkeoN02Zk0I zy*$uW8i#VM7DK+$O?$!KeF+FSLX`VX8>&Y5Ju`t+CC6i@WH+^eBF`Lm*qO1wbfWoe&?lFA(b_RXOCd*iZX%zuYi@i!Zh8 zWG-|RN+e)$1<~Fy@$_Q0thZvcR(V8SSwV#qO7#7Z7fGrDs2m6q7|n2`8Zode!IF`O zKbg238VXAg?JxguEFiF2H(oRN{1)~lYd=WAW6m0=A4k+!1@j&VunkHfUqJErv=hkY z2S|PHE+WHmf`%$Oh%}Zi`K3rW6b#d`W4?h!GI+u@+0+_N6y$L*(xV0Wmun2W$c>LU~y|1tP3QCRf$t^dI)MuP;zgq~a01F_g@G@)|8I~wG`Ycn#tnlWto_G~= zZ_lO}eTG{LhrO*VLwbHPj7$k9Mj5|W;C$~U9iFgn*z}=A&T0}>G(@xNnOmuX0liR9 z-uwAI%}uXz`k*aI)1_Hl#40`3=3us4`o zLW1{k8rJk%^z_P$X704*5OKfHe$zn<-Os1E%+%_NEuG59C>c`! zh!Cfo1m+M=Pb$DoqCzU5O(HFUh~WF_1GDO`ru`Ggl8OF*SWo+Z=>z}KY2sfLA!np# z_)j00>2I~T|E&-FUmIAQ_WaEUhN1g^>;wOUTkIG5S!gIXjS1|Z1^Mqv=KmX8_zweF z@qZR5b{5uuC^Yov!&Lkq*uwu1wv;nHlp*w?mLo->XbOu6X#XJnJe}}}g?m*}b^h&% zp%qe?+jQ1FfyzP#f#LTLy7RQ5@lzD{-LiuRqNS`fC(~~S9S50dEb{mc!GMz(Pj%Jq2;t@JX zZ}lC5H84G054)P%z4I3>Gn>r9%=yY>>Ov>hdX$9e7oV{_Gp-(J41wAk#lb@4Ta!Tx z!=#$EzWBzZ)QUPDwNc>fS|gL2=RnqQ%)U32nf8cMs;o)kl=b`O(B6-}d4FnyoF)}fyd@6+$B9jQ`l_jvmT zfwXWtL<&Z1=F(lZBR_7VeHA1urU4h*c~deuoc^21{Hdn7ARTo#y)AsNyiQm+L#Y)l z+0cnDF5~f1E?ZS7CF230G_`eYr9EE~w+{n*;GF`DKBV-UP5XY7fL5Y_Eku&$d> zEddy`=X2rXo8%9k5c)ol&+jiFm*lLiG-hK92U`x4TJpp(VR@DnW%KvIHYM3 zoWE}QwC+9RybAHZlSa%0bRcvw;KA=E-x!!CEii!rRfDXYrmp#nc{LsrxQuQ?Z5StE zPKZ7f6BxW-iQZJvDVx)eYlpHY9{3YWrN+N>3TwKUvOc-J)1@K7gW1`H^OT=kK4?3R ziLCV?DApa|6HIac3IR)d!o93&5g+}MI=UlcAgX&^uc2oidi*`Df;NoFiraSDLlmfo z*4gxt-9O0~0veB2E{Pg}_8SRP9pJ-UgGY$v`A2g_%hw-R4hUMjrq*gyvcK62mJipJ zO?P`A!5LAiY||u?mwYoYk<7e~voL)Mnl1~QHe;EZefSkqXRM!1id$BlAGDs?d~8zF z&Uo2OezuM14MCyx54yx>2ulcfHd!08IHqg7j4D-HN{H1Rv9a9^!iEOp=TwJsvs^~Z z4qvG&TIpk^kTBH)?nl%>A(;y1y2F=~XDQ$%jFsA&_NHWd2h9;!8!_9WkKuaZcfw_= zWI6p-jb)2Pv>8f7cj;!>)Ls{bw_*FkMf!$O*(jJ`{b2k24C6J{^v7QXv6w{S!%3J# z>sxtcqJOZ|8uWyt^@@?EW3pOzej848c+jWA|FJ^GW9pK#syytcY?Yyn_p%ceUyhXV zRZa_*Jsl8lwIZ+t9Kj-%#iPRVr6VKg=| zM#w&l&)@L=j_70reanOF;(JMh{MO(R`z#(^M16{(pv`EF>1#DcE(lL*0TSQ9nDX-o zx#e*dgPy~h=@-${-jerUTIRlbhVbTaowKx$Zn5Ti$D%Ui~ipF!z32*ueN1R6*cQ zFNit#pvE(vDU}(HhP6Q8k043+@#7Fp`x~0LL9Oph1wWkPfzs4xcJi&KpZt6=fZ2hC z4#sN!e{oWQYnF_2V9?)Pxl>8eA^~|@nuuv=r?X&l_R!iH>9`h)%+kWEpE7^+tB0e5 zA-)rBl_^}vT_c!wrN}ZF;^Mhd0$WG32sJQZaGXNG z^F!nSegp(40aas=)&`S+3FYA;m2f<2?elwbIyVYdQ8p$#Q+NRzZWOdiL}#Ufr`2UO z@$X18swm8c_7vh(XW+b_CqKWI3a0)s$m~Mf`^US*GO=4vpy0k^My@UL(4%mvnGRme zbaj}4V_}&wR>UazjHiY3`AhEI5w!t0GazW3=Ou<_B{O4CilLd7i0aa=I_PRwd%HfH zOe18^ScP@D7!rcjo8I@q(5LU%DpRG7V%z*&vWNW;K@|v6}^U9~`eB zVm6I9S*@Iq&Snog$Ql4T7(J20Nl;_)9lnvy>s<93%zp8g*>KByBHnCT&9`Ea>X3bdJib39|@Q!<6ciMBNFm5 z^iucPdxb2c<5-~nEXU)uPKrN7%@`Nu|JL4aU${^2Lo^B+!72XmZzma~Rolx05bjH7iYqH~T}%GzhdOgKXp1 zsP&rcvnF6OFOyhw3Z6Ey(<9ch_~B9}H+qW)DbW&%dX>ej8mn7crzx7}1L#XoiShfi zYRC3gVp;W;ltk8h#w+)y)!IMf+pD@($7w<)jA%CRwwikv1r(rjIDY8>LNx-5%B`IZ zNE2ULZ1!yinNiag*yW1TZ00KgBGWF$gg~XNDrZFO>|N zYs$BU(%>`E`{uz9MBSEAhs`rZ@n66kDSI;-IZsK~kH4>shq0p+o~O;kKvSk|yg|wZ zV^)!y8@+wrJM`3Ujvhlwpe|kQ*CRY>YYrNh4Bk#kq^8cWKb%D$y);}14 zvNi_kn3L^jB<-Sd_}Z+^^lWqm;UYX$nGrNGlxy>ZZE9F1-^+-1ZnYo!C3n?W)i+SI zLIKJsWa;_%Yu@_jD81ZKD*Qj_0X{(y^rl^IzWeMu?S^sS?|@?^N7K^i^#Xjd-+0kc z(|XM(UspvkVxXY1raIYW;dO2vPFzWe@7ub zLuANipWg(rM2lMm(hPu%ze1o!jvqr9?PJWQQbtIVq%kB6+*w$nYJm2U;xG}S-UL&O zr>d~?V<7-`FD(l#JvsI&3xSI74ok3`#5_NXDQzW|j|;Qc{(tR#bzGENx4#7l5`r{{ zbjJ+C&|T84(lAUAl0$b0NK3;Ag0wV{z#a6QqvyPO?|na?-~Ijd z&L1=L>{xrRwV(Cf>)CrfYlr2z8bWB&o~(5~Rj_PhA*8EgB64`w5SIezijgR_<3FvG z>XpvZVJkkM-&2F+S3gR)&)tU^8cxu{$7jL8di<5jR0z`ypDs`Jyl)tj?m`>V&BYxwoCRYUe`N^OZI?Q zCH=hBIr?xkMS~xqqEk)em{uTOsr*Hp{bY4sS+mpKeFeU`mz=lPurT*Pis?rSJI+bccf&G3}ZlFpys8b1Xu88bd z(sVT#l{%HW;%6XRqdLq@FuiM#Ao%i`3I}!wT`KBl%XujsCT7_&ep0(#lWTdOT9iDova+n7Xk9R~P{06Fejj1xlS zC*$M5W%7GBOmdS$Pr4S0K$S31x~CWX52 z(CGwj_oO~38dgu`LrzVMIqEml^QI9uB9`Kc5Z$$tH{8i-pHuoC^*69dT!gh5OS2Uz zxRn~NvSwKLvW<{bJwZoJpZ{{5MJk9Yw>5V~=@Su1?y4mxwmKJfq}If>Oa9s-|VZ&Xu7 zc^f`TMs<&hM$+i_InrCn!9$}L^l=eNjm@M*@iK#rHE$K)sA&++yPEM5^tS}n*~FO? zlOLMzCZ{UE5f;WE#!q*mQMHR`7|jk9pm{+pF&>mtXJwQ9ftYZY1QfyY$=n;$BC^lX z=u6$oC3HHEkox4C_Jaxll(|nm#L+&Y1p0#H1MA^bWI`)P5z8QWErsy5L%4w+K#qJ= z%=}9qbBDSmG_suG*-nm0yiTdI3( zxas<(MNy^a7{W%26d2_0Vn`ua+o}yOeu#;%(7%DyMR4{ls35%LG0_&xj;e9z<;MWD z&qL8#=V&9&Tg;UVvx6FB3Kq81m{WmI*W2(lB1!|5x5*BTg<(?q7OYkEH%$*pd0x~} z*S@#ce#xaAz(Kz2#$-gwze9eU%?|<+ssO57o+@-!q`e9S9?j&F2K6?hJtX<)16A76 zNg(f?K0txuyNqC*8@&%dfY;#?M2;2f2^M?SsE1d0t^01*wW$T_y =hwXi=d%cM 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 - ^2 + 1 --tau = // min_sub_iter: The min sub iteration of unsteady simulation. // max_sub_iter: The max sub iteration of unsteady simulation. // tol_sub_iter: The tolerance of sub iteration of unsteady simulation. @@ -454,7 +511,10 @@ int iunsteady = 0; double physicalTimeStep = 0.01; int ifStartFromSteadyResults = 0; int ifStaticsFlowField = 0; +int ifStaticsReynoldsStress = 0; int startStatisticStep = 800000; +double statisticalTimePeriod = -1.0; +int statisticMethod = 0; int linearTwoStepMethods = 1; // 1--BDF1; 2--C-N; 3--BDF2; int methodOfDualTime = 3; @@ -482,8 +542,6 @@ double turbCFLScale = 1.0; double csrv = 2.0; double timemax = 1.0e10; double dtsave = -1.0; -int codeOfAleModel = 0; -int aleStartStrategy = -1; int maxale = 10; double dtau = 0.001; @@ -524,6 +582,7 @@ double lamda[] = 0.5, 1.0; int numberOfGridGroups = 1; string gridfile = "./grid/rae2822_hybrid2d__4.fts"; +string wallTemperaturefile= ""; int walldistMethod = 1; @@ -536,15 +595,16 @@ string turbfile = "results/turb.dat"; string visualfile = "results/tecflow.plt"; string wall_aircoefile = "results/wall_aircoef.dat"; -string probesflowfile = "results/sample.dat"; +string samplefile = "results/sample.dat"; int nDumpSurfaceInfo = 0; string wall_varfile = ""; string jetDefineFile = "bin/jet.hypara"; -string overset_gridfile = "results/iblank.ovs"; string sixDofFileName = "results/sixDofInfo.dat"; +string derivativeFileName = "results/identify.dat"; +string hysteresisFileName = "results/force_beta.plt"; int plotFieldType = 0; @@ -554,6 +614,11 @@ int plotFieldType = 0; int visualfileType = 1; +// samplefileMode: The dump mode of sample file. +// 0 -- dump out every probe/line/surface data for all step intervals. +// 1 -- dump out all probe/line/surface data for every step intervals. +int samplefileMode = 0; + // visualSlice: The slice of tecflow. // 0 -- Do not save slice data. // 1 -- comput and save it to sliceFile. @@ -567,11 +632,13 @@ int visualSlice = 0; int sliceAxis = 1; double slicePostion = -0.5; string sliceFile = "results/Slice.plt"; +int dumpWallFaceCenter = 0; // min-max box of the visual block. double lowerPlotFieldBox[] = [0.0 0.0 0.0]; double upperPlotFieldBox[] = [1.0 1.0 1.0]; +//-----------the optional parameters list for the flow field output---------------- // nVisualVariables: Number of variables want to be dumped for tecplot visualization. // visualVariables : Variable types dumped, listed as following: // -- density(0), u(1), v(2), w(3), pressure(4), temperature(5), mach(6), @@ -582,11 +649,27 @@ double upperPlotFieldBox[] = [1.0 1.0 1.0]; // -- vibration temperature(Tv, 33), electron temperature(Te, 34), vibrational energy(Ev, 35), electric energy(Ee, 36), // -- number density of electron(Ne, 37), dimensioanl density(rho, 38), dimensioanl pressure(p, 39), dimensioanl temperature(T, 40), // -- gradientUx(41), gradientUy(42), gradientVx(43), gradientVy(44), iblank(81). +// -- specific heat ratio(gama, 56) // Important Warning: Array size of visualVariables MUST be equal to nVisualVariables!!! // Variables order must from small to big. +//-----------the optional parameters list for the wall boundary condition---------------- +// nVisualWallVariables: The number of visual variables on wall. +// visualWallVariables : dumped variable types, listed as following: +// -coefficient of pressure(cp, 0), -coefficient of friction(cf, 1), yplus(2), -non-dimensional heat flux(Q_NonDim, 3), -dimensional heat flux(Q_Dim, 4), +// -pressure on wall(pw, 5), -temperature on wall(Tw, 6), -density on wall(rhow, 7), -heat flux of translational-rotational temperature term(Qtr, 8), +// -heat flux of species diffusion term(Qs, 9), -heat flux of vibrational temperature term(Qv, 10), -heat flux of electron temperature term(Qe, 11), +// -species mass fractions(Ns, 12), -x component of wall velocity(Vx, 13), -y component of wall velocity(Vy, 14), -z component of wall velocity(Vz, 15) +// -slip translational-rotational temperature(Tts, 16), -slip vibrational temperature(Tvs, 17), -slip electron temperature(Tes, 18), -absolute wall velocity(Vs, 19) +// -Stanton number(St, 20), -coefficient of heat rate(Ch, 21), -temperature jump(deltaT, 22), -transition gamaeff(gamaeff, 48), +// -transition intermittency(intermittency, 51), -transition momentum thickness reynolds(MomentumThicknessReynolds, 52), +// -overlap iblank(iblank, 81) + int nVisualVariables = 8; int visualVariables[] = [0, 1, 2, 3, 4, 5, 6, 15]; +int nVisualWallVariables = 9; +int visualWallVariables[] = [0, 1, 2, 3, 4, 5, 9, 10, 11]; + // dumpStandardModel: Dump many standard model data. // 1 -- Turbulent flat plate. int dumpStandardModel = 0; @@ -644,6 +727,7 @@ int probeVariablesInterpolationMethod = 0; // mod_turb_res: If modify the residuals for the cells next to the wall or not, default is 0. int turbInterval = 1; +int turbOrderStruct = 2; int kindOfTurbSource = 0; int mod_turb_res = 0; double turb_relax = 1.0; @@ -652,6 +736,10 @@ double muoo = 3.0; double kwoo = 5.0; int transitionType = 0; double turbIntensity = -1.0; +int freeturbIntensitySRModify = 0; +double freeDecayXLocation = 0.0; +int compressibleCorrection = 0; +int transitionMaFix = 1; # maximum eddy viscosity (myt/my) max. double eddyViscosityLimit = 1.0e10; @@ -661,8 +749,8 @@ int monitor_vistmax = 0; # LES Parameter # //----------------------------------------------------------------------- // iLES: Create LESSolver or not. -// >= 1 - Create LESSolver; -// < 1 - not. +// == 1 - Create LESSolver; +// != 1 - not. // amplitudeofDisturb: Amplitude of adding disturb. // disturbstep: Unsteady time step or steady iteration of adding random disturb. // iterdisturb: Add random disturb in every sub-iter or only first sub-iter. @@ -676,8 +764,9 @@ int monitor_vistmax = 0; // utau: friction velocity, using in DNSDisturb. // sgsmodel: subgrid scale model. // = "smagorinsky"; -// = "dsm"; -// = "wale". +// = "dsmCom"; +// = "wale"; +// = "sigma". // deltaFunctionType: = 1 - MAX(deltai, deltaj, deltak); // = 2 - pow(deltai * deltaj *deltak, 1/3); // = 3 - Devloped by Scotti. @@ -700,9 +789,10 @@ string sgsmodel = "smagorinsky"; int deltaFunctionType = 2; int wallDampingFunctionType = 1; int turbViscousCutType = 2; -double smagConstant = 0.135; +double smagConstant = 0.1; double isotropicConstant = 0.0; double waleConstant = 0.6; +double sigmaConstant = 1.35; int filterDirection[] = [1, 1, 0]; int averageDirection[] = [0, 0, 0]; double testFilterScale = 2.0; @@ -724,12 +814,42 @@ int monitorNegativeConstant = 0; // nm: Equation number of the physics, but is out of commision now. // 4 -- for 2D. // 5 -- for 3D. -// nGasModel: The type of gas. +// nGasModel: The type of gas. less than and equal to 1 represents the mixture gas. +// Otherwise, the pure gas with one component is used for perfect gas. // 0 -- Earth gas. // 1 -- Mars gas. +// 2 -- Argon. +// 3 -- Nitrogen. +// nEnergyRecycle: The type of EnergyModel Recycle. +// 0 -- not used . +// 1 -- used. +// nDensityModify: The type of densitymodify. + +// 0 -- not used. +// 1 -- used. // nchem: // 0 -- without chemical reaction flow. // 1 -- the chemical reaction flow is considered. +// nEquilibriumGas: the variable is valid when the condition of nchem=0 is satisfied. +// 0 -- perfect gas. +// 5, 7, 11 -- equilibrium gas, meanwhile, its value denotes the number of gas component. +// nPCWCycleStep: the maximum step number of iteration in the module of computing species mass fractions with the partial catalytic wall(PCW) condition. +// the value equals to or is greater than 1, and 3 is for default value. +// nRETCycleStep: the maximum step number of iteration in the module of computing radiation equilibrium temperature on wall. +// the value equals to or is greater than 1, and 3 is for default value. +// nSLIPCycleStep:the maximum step number of iteration in the module of computing slip temperature, slip velocity and slip species mass fraction. +// the value equals to or is greater than 1, and 3 is for default value. +// nSlipBCModel : The computational model of slip boundary conditions. + +// 0 -- no slip. +// 1 -- the conventional Maxwell slip conditions. +// 2 -- the Gokcen slip conditions. +// 3 -- the Knudsen-layer correction of the standard slip conditions proposed by Lockerby, et al. +// 4 -- the Kogan simplified slip conditions. +// nMeanFreePathType : the method to the mean free-path for the slip conditions. For the mixture, 0 is suggested. +// 0 -- the equivalent mean free-path is calculated by the simple hard sphere model(HS). +// 1 -- calculated by the definition that includes the variables of the number density and the molecule diameter. +// 2 -- the equivalent mean free-path is calculated by the variable hard sphere model(VHS). // nchemsrc: // 0 -- the source terms are not computed. // 1 -- the source terms are computed. @@ -740,15 +860,72 @@ int monitorNegativeConstant = 0; // 1 -- One-temperature model. // 2 -- Two-temperature model. // 3 -- Three-temperature model. +// nTEnergyModel: the method to computing temperature energy model. +// 0 -- the energy term is computed using the conventional method. +// 1 -- the energy term is computed using the curve fitting method. +// parkVDPower: the power of translational-rotational temperature in the Park V-D(vibration-dissociation) coupling model. +// The value is in range of [0.0, 1.0], DPLR suggests 0.5, LAURA suggests 0.7, while 0.6 is given as default value. // catalyticCoef: // 0.0 -- full non-catalytic wall boundary condition. // 1.0 -- full catalytic wall boundary condition. // in range of (0.0, 1.0) -- partial catalytic condition, the value indicates the catalytic coefficient. +// nIsSuperCatalytic : the super catalytic condition for the fully catalytic wall, and assigned with the value of 1. +// 0 -- equilibrium condition for the fully catalytic wall where the mass fractions are assigned with the values of the free stream. +// 1 -- super catalytic condition for the fully catalytic wall where all the atomic components combine into molecular components. +// nTemperatureJump : the method to calculate the temperature jump. +// 0 -- calculated by the variables of heat conductivity and constant volume specific heat for each energy mode. +// 1 -- the general method where the iteration is calculated with the translation-rotation temperature. +// sigmaVelocity: the coordination coefficient of tangential momentum for computation of slip velocity. The value is in range of (0.0, 2.0]. +// sigmaTemperature: the heat coordination coefficient for computation of slip temperature. The value is in range of (0.0, 2.0]. +// sigmaMassFraction: the species coordination coefficient for computation of slip mass fractions. The value is in range of (0.0, 2.0]. +// velocitySlipCorrectConstant: the correction constant to the velocity slip condition. For the diffuse reflection, 1.0 is used. +// 1.0 -- proposed by Maxwell. +// sqrt(2/PI)~0.8 -- used for "micro-slip", namely the actual velocity slip at the wall. +// 1.146 -- proposed for an additional "fictitious" velocity slip. + +// chemicalRelaxCorf: The value is in range of [0.001, 1.0]. +// chemicalSpectrumRadiusCoef: The value is in range of [1.0, 3.0]. +// viscousSpectrumRadiusCoef : The value is in range of [1.0, 3.0]. +// inviscidSpectrumRadiusCoef: The value is in range of [1.0, 3.0]. +// staticPressureRelaxCorf: The value is in range of [0.1, 1.0]. +// nIsChemicalFreeze : the flag to freeze the chemical reactions. +// 0 -- not freeze, the chemical reaction sources will be calculated. +// 1 -- freezes the chemical reactions, the chemical reaction sources will not be calculated.// veTemperatureMin: The minimum of Tv and Te +// nDebug: cout the Wrong place and abort +// 0 -- not used. +// 1 -- used. +// nSpeciesLimit: limitter of gas species +// 0 -- not used. +// 1 -- used. +// nTurblenceForChemical: the coupled mode of Turblence and Chemical reaction +// 0 -- method 0. +// 1 -- method 1. +// nViscosityFluxSublevelModified: Modified for ViscosityFlux on Sublevel grid +// 0 -- not used. +// 1 -- used. +// nChemcalSourceModified: Modified on ChemcalSource +// 0 -- not used. +// 1 -- used. +// nAblation: +// 0 -- The wall ablation is not computed. +// 1 -- The wall ablation is computed. +// isInjection: +// 0 -- The injection velocity of ablation wall is not computed. +// 1 -- The injection velocity of ablation wall is computed. +// nViscosityModel: + +// 0 -- Blottner fitting method. +// 1 -- Gupta fitting method. +// nSutherland: +// 0 -- stands for selecting the Blotter curve fits mode. +// 1 -- stands for Sutherland relation. // gasfile: Indicates the gas model, 9 models are provided, namely "Gu5", "Gu7", "Gu11", "Pa5", "Pa7", "Pa11", "DK5", "DK7", "DK11". // "Gu" -- indicates the Gupta Model, three-Type Models are embeded in the library, namely, the 5-species-6-reactions, the 7-species-9-reactions, the 11-species-20-reactions. // "Pa" -- indicates the Park Model, three-Type Models are embeded in the library, namely, the 5-species-17-reactions, the 7-species-22-reactions, the 11-species-48-reactions. // "DK" -- indicates the Dunn-Kang Model, three-Type Models are embeded in the library, namely, the 5-species-11-reactions, the 7-species-15-reactions, the 11-species-26-reactions. // "Mars-Pa8" is for Park model of Mars gas, "Mars-Mc8" for McKenzie model of Mars gas. +// "Combustion-12" -- indicates the Combustion Chamber Gas Model which includes 12-species-20-reactions. +// "Gas-Mixture" -- indicates the process of mixing two species without reacting. // For self-definition model, the gasfile is used to indicate the file path of the new gas model. // speciesName: Used to list the names of each species, while each species name is separated by the symbol of comma. // initMassFraction: Used to list the initial mass fractions of species in accordance with the sequence of names in the parameter speciesName. @@ -758,6 +935,10 @@ int dg_high_order = 0; int iapplication = 0; int iCodeBranch = 0; int nm = 5; +int nEquilibriumGas = 0; +int nPCWCycleStep = 3; +int nRETCycleStep = 3; +int nSLIPCycleStep= 3; double refGama = 1.4; double prl = 0.72; @@ -770,23 +951,73 @@ int nchem = 0; int nchemsrc = 1; int nchemrad = 1; int ntmodel = 1; -int nChemicalFlowStep = 0; + +int nEnergyRecycle = 0; +int nSlipBCModel = 0; +int nDensityModify = 1; +int nTEnergyModel = 0; +int nMeanFreePathType = 0; +int nIsChemicalFreeze = 0; +int nIsSuperCatalytic = 1; +int nTemperatureJump = 0; + +double parkVDPower = 0.6; double catalyticCoef = 0.0; +double sigmaVelocity = 1.0; +double sigmaTemperature = 1.0; +double sigmaMassFraction = 1.0; +double velocitySlipCorrectConstant = 1.0; + +double chemicalRelaxCorf = 1.0; +double chemicalSpectrumRadiusCoef = 1.0; +double viscousSpectrumRadiusCoef = 1.0; +double inviscidSpectrumRadiusCoef = 1.0; +double staticPressureRelaxCorf = 1.0; + +double veTemperatureMin = 30.0; +int nDebug = 0; +int nSpeciesLimit = 0; +int nTurblenceForChemical = 0; +int nViscosityFluxSublevelModified = 0 ; +int nChemcalSourceModified = 0; + +int nAblation = 0; +int isInjection = 0; +int nViscosityModel = 0; +int nMarsModel = 0; string gasfile = "DK5"; //string gasfile = "./chemical/Dunn-Kang_air5s11r.dat"; string speciesName = "O, O2, NO, N, N2"; -string initMassFraction = "0.0, 0.23, 0.0, 0.0, 0.77"; +string initMassFraction = "0.0, 0.233, 0.0, 0.0, 0.767"; //string speciesName = "O, O2, NO, N, NO+, N2, e-"; -//string initMassFraction = "0.0, 0.23, 0.0, 0.0, 0.0, 0.77, 0.0"; +//string initMassFraction = "0.0, 0.233, 0.0, 0.0, 0.0, 0.767, 0.0"; //string speciesName = "O, O2, NO, N, O+, O2+, NO+, N+, N2+, N2, e-"; -//string initMassFraction = "0.0, 0.23, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.77, 0.0"; +//string initMassFraction = "0.0, 0.233, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.767, 0.0"; //string gasfile = "Mars-Pa8"; //string speciesName = "O, O2, NO, N, N2, C, CO, CO2"; //string initMassFraction = "0.0015, 0.0429, 0.0, 0.0, 0.0, 0.0, 0.0777, 0.8779"; +//string gasfile = "DK7"; +//string speciesName = "O, O2, NO, N, NO+, C, C2, CO, CO2, CN, N2, e-"; +//string initMassFraction = "0.0, 0.233, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.767, 0.0"; + +//string gasfile = "Combustion-12"; +//string speciesName = "O, O2, NO, N, C, CO, CO2, H, H2, OH, H2O, N2"; +//string initMassFraction = "0.0, 0.233, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.767"; + +//string gasfile = "Gas-Mixture"; +//string speciesName ="SpeciesA, SpeciesB"; +//string initMassFraction = "1.0, 0.0"; +int nSutherland = 0; +double gamaSpeciesA = 1.4; +double gamaSpeciesB = 1.3; +double molecularWeightSpeciesA = 29.0; +double molecularWeightSpeciesB = 30.0; + +int nChemicalFlowStep = 0; int ifStartFromPerfectGasResults = 0; ######################################################################### @@ -841,7 +1072,7 @@ string zoneInverseFileName = "./grid/zoneInverseMapping.inp"; ######################################################################### # High Order Struct Solver # ######################################################################### -// ifvfd: +// isFVMOrFDM: // 0 -- NSSolverStruct using Finite Volume Method. // 1 -- NSSolverStruct using Finite Differ Method. // SolverStructOrder: Spatial discretisation order of NS equations with struct grid. @@ -856,7 +1087,7 @@ string zoneInverseFileName = "./grid/zoneInverseMapping.inp"; // -- "roe", "steger". // structhighordergradient: // -- "conservation", "chain_rule". -int ifvfd = 0; +int isFVMOrFDM = 0; string str_highorder_solver = "WCNS"; int SolverStructOrder = 0; double str_highorder_interpolation_epsilon = 1.0e-6; @@ -885,8 +1116,12 @@ int allReduceStep = 1; // codeOfOversetGrid: Overlapping(overset) grid or not. // 0 -- NON-overlapping grid. // 1 -- Overlapping grid. +// oversetInterpolationMethod: the method of overset interpolation while field simulation +// 0 -- set the acceptor cell value by donor cell value. +// 1 -- set the acceptor cell value by distance weight of donor cell value. + int codeOfOversetGrid = 0; -int codeOfOversetSlipGrid = 0; +int oversetInterpolationMethod = 0; int readOversetFileOrNot = 0; int symetryOrNot = 0; int readInAuxiliaryInnerGrid = 1; @@ -895,7 +1130,7 @@ int readInSklFileOrNot = 0; string auxiliaryInnerGrid0 = "./grid/aux-upper.fts"; string auxiliaryInnerGrid1 = "./grid/aux-lower.fts"; string auxiliaryInnerGrid2 = ""; -string oversetGridFileName = "./grid/overlap.ovs"; +string oversetGridFileName = "./grid/iblank.ovs"; double walldistMainZone = 1.0 double toleranceForOversetSearch = 1.0e-3; double toleranceForOversetBox = 1.0e-3; @@ -905,16 +1140,78 @@ int outTecplotOverset = 0; int numberOfMovingBodies = 2; +// ----------------- ALE configuration ------------------------------ +int codeOfAleModel = 1; +int aleStartStrategy = -1; + +int strategyForFaceNormalVelocity = 0; //0-By Sweeping volume; 1-By face center 1st; 2-By face center 2nd; +int strategyForGCLSource = 0; //0-present; 1-Ahn; + +//0:1st-Admas-Bashforth; 1:2nd-Admas-Bashforth; 2:1st-Implicit-Euler; 3:2nd-Implicit Euler; 4:2nd-Adams-Moulton; 5:3rd-Adams-Moulton +int methodForKineticEquation = 0; +double relaxParameterOfKinetic = 1.0; + +######################################################################### +# motive information # +######################################################################### +int numberOfMovingBodies = 1; + +############################## body0 ############################## +//mass of parts +double mass_0 = 1.0; +//mass matrix of parts Ixx Iyy Izz Ixy Ixz Iyz +double massMatrix_0[] = 1e-7, 1e-6, 1e-6, 0.0, 0.0, 0.0; +//initial six DOF position information of parts. xc yc zc +double massCenter_0[] = 0.0 , 0.0, 0.0; +//initial six DOF position information of parts. angleX angleY angleZ +double attitudeAngle_0[] = 0.0 , 0.0, 0.0; +//initial six DOF move information of parts. vc vy vz +double massCenterVelocity_0[] = 0.0, 0.0, 0.0; +//initial six DOF move information of parts. omigX omigY omigZ +double angularVelocity_0[] = 0.0, 0.0, 0.0; +//the object that the parts belong to. +int fartherIndex_0 = -1; +//the assembly position of the parts. xc yc zc angleX angleY angleZ +double configPamameter_0[] = 0.0 ,0.0 ,0.0 ,0.0 ,0.0 ,0.0; +//the move pattern of the parts. +// -1 given motion partten. +// 0 still. +// 1 six DOF motion. +// 2 three DOF motion. +// 11 X-axis forced motion. +// 12 Y-axis forced motion. +// 13 Z-axis forced motion. +// 14 forced pitch motion. +// 15 forced yaw motion. +// 16 forced roll motion. +int RBDMethod_0 = 0; +double amplitude_0 = 0.0; +double reduceFrequency_0 = 0.0; +//string uDFSixDofFileName_0 = "./Bin/UDFSixDof.Parameter"; +//additional force (system axis) fX fY fZ +double addedForce_0[] = 0.0 ,0.0 ,0.0 ; +//additional moment of Force (system axis) mX mY mZ +double addedMoment_0[] = 0.0 ,0.0 ,0.0 ; +//the deformation method of the parts. +int morphing_0 = 0; + +// post indentify +int integralOrder = 4; + + // ---------------- ATP read -------------------------------------------- //@int inflowParaType = 0; -//@double refReNumber = 2.329418E08; -//@double refDimensionalTemperature = 288.144; -//@double refDimensionalPressure = 1.01313E05; -//@double height = -0.001; +//@double refReNumber = 6.5e6; +//@double refDimensionalTemperature = 288.15; +//@double freestream_vibration_temperature = 300.00; +//@double refDimensionalPressure = 0; +//@double height = 0; //@int nsubsonicInlet = 0; //@int nsubsonicOutlet = 0; //@string inLetFileName = "./bin/subsonicInlet.hypara"; //@string outLetFileName = "./bin/subsonicOutlet.hypara"; +//@double refDimensionalVelocity = 0; +//@double refDimensionalDensity = 0; ######################################################################### # Old Parameter # diff --git a/A15_ThreeD_ShockWave_PeriodicBoundary_SA_Struct_4CPU/bin/cfd_para_hypersonic.hypara b/A15_ThreeD_ShockWave_PeriodicBoundary_SA_Struct_4CPU/bin/cfd_para_hypersonic.hypara index 3468708..2fa0e25 100644 --- a/A15_ThreeD_ShockWave_PeriodicBoundary_SA_Struct_4CPU/bin/cfd_para_hypersonic.hypara +++ b/A15_ThreeD_ShockWave_PeriodicBoundary_SA_Struct_4CPU/bin/cfd_para_hypersonic.hypara @@ -58,9 +58,9 @@ double refDimensionalTemperature = 80; double gridScaleFactor = 0.01; -double forceRefenenceLengthSpanWise = 1.0; // unit of meter. -double forceRefenenceLength = 1.0; // unit of meter. -double forceRefenenceArea = 1.0; // unit of meter^2. +double forceReferenceLengthSpanWise = 1.0; // unit of meter. +double forceReferenceLength = 1.0; // unit of meter. +double forceReferenceArea = 1.0; // unit of meter^2. double TorqueRefX = 0.0; // unit of meter. double TorqueRefY = 0.0; // unit of meter. double TorqueRefZ = 0.0; // unit of meter.