def init_input_obj(self):
climate_file_path = os.path.join(self.epwDir, self.epwFileName)<EOL>self.simTime = SimParam(self.dtSim, self.dtWeather, self.Month,<EOL>self.Day, self.nDay)  <EOL>self.weather = Weather(climate_file_path, self.simTime.timeInitial, self.simTime.timeFinal)<EOL>self.forcIP = Forcing(self.weather.staTemp, self.weather)  <EOL>self.forc = Forcing()  <EOL>nightStart = <NUM_LIT>        <EOL>nightEnd = <NUM_LIT><EOL>maxdx = <NUM_LIT>            <EOL>self.geoParam = Param(self.h_ubl1, self.h_ubl2, self.h_ref, self.h_temp, self.h_wind, self.c_circ,<EOL>self.maxDay, self.maxNight, self.latTree, self.latGrss, self.albVeg, self.vegStart, self.vegEnd,<EOL>nightStart, nightEnd, self.windMin, self.WGMAX, self.c_exch, maxdx, self.G, self.CP, self.VK, self.R,<EOL>self.RV, self.LV, math.pi, self.SIGMA, self.WATERDENS, self.LVTT, self.TT, self.ESTT, self.CL,<EOL>self.CPV, self.B, self.CM, self.COLBURN)<EOL>self.UBL = UBLDef(<EOL>'<STR_LIT:C>', self.charLength, self.weather.staTemp[<NUM_LIT:0>], maxdx, self.geoParam.dayBLHeight, self.geoParam.nightBLHeight)<EOL>emis = <NUM_LIT><EOL>asphalt = Material(self.kRoad, self.cRoad, '<STR_LIT>')<EOL>road_T_init = <NUM_LIT><EOL>road_horizontal = <NUM_LIT:1><EOL>road_veg_coverage = min(self.vegCover/(<NUM_LIT:1>-self.bldDensity), <NUM_LIT:1.>)<EOL>road_layer_num = int(math.ceil(self.d_road/<NUM_LIT>))<EOL>thickness_vector = [<NUM_LIT> for r in range(road_layer_num)]<EOL>material_vector = [asphalt for r in range(road_layer_num)]<EOL>self.road = Element(self.alb_road, emis, thickness_vector, material_vector, road_veg_coverage,<EOL>road_T_init, road_horizontal, name="<STR_LIT>")<EOL>self.rural = copy.deepcopy(self.road)<EOL>self.rural.vegCoverage = self.rurVegCover<EOL>self.rural._name = "<STR_LIT>"<EOL>self.RSM = RSMDef(self.lat, self.lon, self.GMT, self.h_obs,<EOL>self.weather.staTemp[<NUM_LIT:0>], self.weather.staPres[<NUM_LIT:0>], self.geoParam, self.z_meso_dir_path)<EOL>self.USM = RSMDef(self.lat, self.lon, self.GMT, self.bldHeight/<NUM_LIT>,<EOL>self.weather.staTemp[<NUM_LIT:0>], self.weather.staPres[<NUM_LIT:0>], self.geoParam, self.z_meso_dir_path)<EOL>T_init = self.weather.staTemp[<NUM_LIT:0>]<EOL>H_init = self.weather.staHum[<NUM_LIT:0>]<EOL>self.UCM = UCMDef(self.bldHeight, self.bldDensity, self.verToHor, self.treeCoverage, self.sensAnth, self.latAnth, T_init, H_init,<EOL>self.weather.staUmod[<NUM_LIT:0>], self.geoParam, self.r_glaze_total, self.SHGC_total, self.alb_wall_total, self.road)<EOL>self.UCM.h_mix = self.h_mix<EOL>roadMat, newthickness = procMat(self.road, self.MAXTHICKNESS, self.MINTHICKNESS)<EOL>for i in range(self.nSoil):<EOL><INDENT>is_soildepth_equal = self.is_near_zero(self.depth_soil[i][<NUM_LIT:0>] - sum(newthickness), <NUM_LIT>)<EOL>if is_soildepth_equal or (self.depth_soil[i][<NUM_LIT:0>] > sum(newthickness)):<EOL><INDENT>while self.depth_soil[i][<NUM_LIT:0>] > sum(newthickness):<EOL><INDENT>newthickness.append(self.MAXTHICKNESS)<EOL>roadMat.append(self.SOIL)<EOL><DEDENT>self.soilindex1 = i<EOL>break<EOL><DEDENT><DEDENT>self.road = Element(self.road.albedo, self.road.emissivity, newthickness, roadMat,<EOL>self.road.vegCoverage, self.road.layerTemp[<NUM_LIT:0>], self.road.horizontal, self.road._name)<EOL>ruralMat, newthickness = procMat(self.rural, self.MAXTHICKNESS, self.MINTHICKNESS)<EOL>for i in range(self.nSoil):<EOL><INDENT>is_soildepth_equal = self.is_near_zero(self.depth_soil[i][<NUM_LIT:0>] - sum(newthickness), <NUM_LIT>)<EOL>if is_soildepth_equal or (self.depth_soil[i][<NUM_LIT:0>] > sum(newthickness)):<EOL><INDENT>while self.depth_soil[i][<NUM_LIT:0>] > sum(newthickness):<EOL><INDENT>newthickness.append(self.MAXTHICKNESS)<EOL>ruralMat.append(self.SOIL)<EOL><DEDENT>self.soilindex2 = i<EOL>break<EOL><DEDENT><DEDENT>self.rural = Element(self.rural.albedo, self.rural.emissivity, newthickness,<EOL>ruralMat, self.rural.vegCoverage, self.rural.layerTemp[<NUM_LIT:0>], self.rural.horizontal, self.rural._name)<EOL>
Section 4 - Create uwg objects from input parameters

            self.simTime            # simulation time parameter obj
            self.weather            # weather obj for simulation time period
            self.forcIP             # Forcing obj
            self.forc               # Empty forcing obj
            self.geoParam           # geographic parameters obj
            self.RSM                # Rural site & vertical diffusion model obj
            self.USM                # Urban site & vertical diffusion model obj
            self.UCM                # Urban canopy model obj
            self.UBL                # Urban boundary layer model

            self.road               # urban road element
            self.rural              # rural road element

            self.soilindex1         # soil index for urban rsoad depth
            self.soilindex2         # soil index for rural road depth
            self.Sch                # list of Schedule objects