def _createStructure(self, linkResult, replaceParamFile):
        """
        Create GSSHAPY Structure Objects Method
        """
        # Constants
        WEIRS = ('WEIR', 'SAG_WEIR')

        CULVERTS = ('ROUND_CULVERT', 'RECT_CULVERT')

        CURVES = ('RATING_CURVE', 'SCHEDULED_RELEASE', 'RULE_CURVE')

        header = linkResult['header']

        # Initialize GSSHAPY StreamLink object
        link = StreamLink(linkNumber=header['link'],
                          type=linkResult['type'],
                          numElements=header['numstructs'])

        # Associate StreamLink with ChannelInputFile
        link.channelInputFile = self

        # Create Structure objects
        for s in linkResult['structures']:
            structType = s['structtype']

            # Cases
            if structType in WEIRS:
                # Weir type handler
                # Initialize GSSHAPY Weir object
                weir = Weir(type=structType,
                            crestLength=vrp(s['crest_length'], replaceParamFile),
                            crestLowElevation=vrp(s['crest_low_elev'], replaceParamFile),
                            dischargeCoeffForward=vrp(s['discharge_coeff_forward'], replaceParamFile),
                            dischargeCoeffReverse=vrp(s['discharge_coeff_reverse'], replaceParamFile),
                            crestLowLocation=vrp(s['crest_low_loc'], replaceParamFile),
                            steepSlope=vrp(s['steep_slope'], replaceParamFile),
                            shallowSlope=vrp(s['shallow_slope'], replaceParamFile))

                # Associate Weir with StreamLink
                weir.streamLink = link

            elif structType in CULVERTS:
                # Culvert type handler
                # Initialize GSSHAPY Culvert object
                culvert = Culvert(type=structType,
                                  upstreamInvert=vrp(s['upinvert'], replaceParamFile),
                                  downstreamInvert=vrp(s['downinvert'], replaceParamFile),
                                  inletDischargeCoeff=vrp(s['inlet_disch_coeff'], replaceParamFile),
                                  reverseFlowDischargeCoeff=vrp(s['rev_flow_disch_coeff'], replaceParamFile),
                                  slope=vrp(s['slope'], replaceParamFile),
                                  length=vrp(s['length'], replaceParamFile),
                                  roughness=vrp(s['rough_coeff'], replaceParamFile),
                                  diameter=vrp(s['diameter'], replaceParamFile),
                                  width=vrp(s['width'], replaceParamFile),
                                  height=vrp(s['height'], replaceParamFile))

                # Associate Culvert with StreamLink
                culvert.streamLink = link

            elif structType in CURVES:
                # Curve type handler
                pass

        return link
Create GSSHAPY Structure Objects Method