Exemple #1
0
        /***************************************************/
        /**** Public Methods                            ****/
        /***************************************************/

        public static BarUniformTemperatureLoad ToBarUniformTemperatureLoad(
            IFLoading lusasTemperatureLoad,
            IEnumerable <IFAssignment> lusasAssignments,
            Dictionary <string, Bar> bars)
        {
            IFLoadcase assignedLoadcase  = (IFLoadcase)lusasAssignments.First().getAssignmentLoadset();
            Loadcase   loadcase          = ToLoadcase(assignedLoadcase);
            double     temperatureChange = lusasTemperatureLoad.getValue("T")
                                           - lusasTemperatureLoad.getValue("T0");

            IEnumerable <Bar>         assignedBars = GetLineAssignments(lusasAssignments, bars);
            BarUniformTemperatureLoad barUniformTemperatureLoad = Engine.Structure.Create.BarUniformTemperatureLoad(
                loadcase,
                temperatureChange,
                assignedBars,
                LoadAxis.Local,
                false,
                GetName(lusasTemperatureLoad));

            int adapterNameId = lusasTemperatureLoad.getID();

            barUniformTemperatureLoad.SetAdapterId(typeof(LusasId), adapterNameId);

            return(barUniformTemperatureLoad);
        }
Exemple #2
0
        /***************************************************/
        /**** Private Methods                           ****/
        /***************************************************/

        private List <ILoad> ReadBarUniformTemperatureLoads(List <string> ids = null)
        {
            List <ILoad> barUniformTemperatureLoads = new List <ILoad>();

            object[] lusasTemperatureLoads = d_LusasData.getAttributes("Temperature");

            if (!(lusasTemperatureLoads.Count() == 0))
            {
                List <Bar> barsList           = ReadBars();
                Dictionary <string, Bar> bars = barsList.ToDictionary(
                    x => x.AdapterId <string>(typeof(LusasId)));

                List <IFLoadcase> allLoadcases = new List <IFLoadcase>();

                for (int i = 0; i < lusasTemperatureLoads.Count(); i++)
                {
                    IFLoading lusasTemperatureLoad = (IFLoading)lusasTemperatureLoads[i];

                    IEnumerable <IGrouping <string, IFAssignment> > groupedByLoadcases =
                        GetLoadAssignments(lusasTemperatureLoad);

                    foreach (IEnumerable <IFAssignment> groupedAssignment in groupedByLoadcases)
                    {
                        List <IFAssignment> assignments = new List <IFAssignment>();

                        foreach (IFAssignment assignment in groupedAssignment)
                        {
                            IFLine tryLine = assignment.getDatabaseObject() as IFLine;

                            if (tryLine != null)
                            {
                                assignments.Add(assignment);
                            }
                        }

                        List <string> analysisName = new List <string> {
                            lusasTemperatureLoad.getAttributeType()
                        };

                        if (assignments.Count != 0)
                        {
                            BarUniformTemperatureLoad barUniformTemperatureLoad =
                                Adapter.Adapters.Lusas.Convert.ToBarUniformTemperatureLoad(
                                    lusasTemperatureLoad, groupedAssignment, bars);

                            barUniformTemperatureLoad.Tags = new HashSet <string>(analysisName);
                            barUniformTemperatureLoads.Add(barUniformTemperatureLoad);
                        }
                    }
                }
            }

            return(barUniformTemperatureLoads);
        }
Exemple #3
0
        /***************************************************/
        /**** Private Methods                           ****/
        /***************************************************/

        private IFLoadingTemperature CreateBarUniformTemperatureLoad(BarUniformTemperatureLoad temperatureLoad, object[] lusasLines)
        {
            IFLoadcase assignedLoadcase = (IFLoadcase)d_LusasData.getLoadset(temperatureLoad.Loadcase.AdapterId <int>(typeof(LusasId)));

            IFLoadingTemperature lusasTemperatureLoad = CreateTemperatureLoad(
                temperatureLoad.Name, temperatureLoad.TemperatureChange, lusasLines, assignedLoadcase);

            int adapterIdName = lusasTemperatureLoad.getID();

            temperatureLoad.SetAdapterId(typeof(LusasId), adapterIdName);

            return(lusasTemperatureLoad);
        }
Exemple #4
0
        /***************************************************/

        public void SetLoad(BarUniformTemperatureLoad barTempratureLoad, bool replace)
        {
            int    ret      = 0;
            string caseName = GetAdapterId <string>(barTempratureLoad.Loadcase);

            foreach (Bar bar in barTempratureLoad.Objects.Elements)
            {
                double val = barTempratureLoad.TemperatureChange;
                if (val != 0)
                {
                    ret = m_model.FrameObj.SetLoadTemperature(GetAdapterId <string>(bar), caseName, 1, val, "", replace);
                }
            }
        }
Exemple #5
0
        public static List <ICurve> Visualize(this BarUniformTemperatureLoad barTempLoad, double scaleFactor = 1.0, bool displayForces = true, bool displayMoments = true, bool asResultants = true)
        {
            if (barTempLoad.IsNull())
            {
                return(null);
            }

            List <ICurve> arrows     = new List <ICurve>();
            double        loadFactor = barTempLoad.TemperatureChange * 1000 * scaleFactor; //Arrow methods are scaling down force to 1/1000

            foreach (Bar bar in barTempLoad.Objects.Elements)
            {
                arrows.AddRange(ConnectedArrows(new List <ICurve> {
                    bar.Centreline()
                }, bar.Normal() * loadFactor, true, null, 0, true));
            }

            return(arrows);
        }
Exemple #6
0
        /***************************************************/

        private bool CreateLoad(BarUniformTemperatureLoad bhLoad)
        {
            List <Bar> bars       = bhLoad.Objects.Elements.ToList();
            string     loadPat    = GetAdapterId <string>(bhLoad.Loadcase);
            double     tempChange = bhLoad.TemperatureChange;
            int        loadType   = 1; // BHoM currently only supports uniform temperature change (=1); SAP supports gradients in local 2 and 3 axes (=2 and =3).

            bool replace = SAPPushConfig.ReplaceLoads;

            foreach (Bar bar in bars)
            {
                string name = GetAdapterId <string>(bar);
                if (m_model.FrameObj.SetLoadTemperature(name, loadPat, loadType, tempChange, Replace: replace) != 0)
                {
                    CreateElementError("BarUniformTemperatureLoad", bhLoad.Name);
                }
            }

            Engine.Base.Compute.RecordNote("SAP2000 includes functionality for temperature gradient in 2 and 3 local bar axes, but the BHoM currently only supports uniform temperature changes.");

            SetAdapterId(bhLoad, null);

            return(true);
        }
Exemple #7
0
 public static LoadType LoadType(this BarUniformTemperatureLoad load)
 {
     return(oM.Structure.Loads.LoadType.BarTemperature);
 }