jwock82 / xlframe Goto Github PK
View Code? Open in Web Editor NEWA free VBA library to make structural analysis easy in Microsoft Excel
License: MIT License
A free VBA library to make structural analysis easy in Microsoft Excel
License: MIT License
Is your feature request related to a problem? Please describe.
Related to the Load Combinations request
Describe the solution you'd like
Functions available to remove or edit existing loads on existing nodes or members.
Additional context
This will be necessary as part of the Load Combinations request. To remove existing loads and replace them with loads from a different LC without having to build an entirely separate model.
Is your feature request related to a problem? Please describe.
No.
Describe the solution you'd like
In order to visualize shear, moment, etc. it's handy to include XLscatter charts in worksheets or workbooks; however, creating and fine-tuning them includes a lot of repetitive tasks that are begging to be automated. I'll start working on a PR that adds a basic toolkit for these tasks in the form of a new module (working title = "DiagramTools") and if appropriate an associated class module once I become more familiar with the ins/outs of OOP.
Additional context
Some initial ideas:
Describe the bug
Member point loads and moments applied at x = 0 along the length of a member are not reported in member shear and moment results. This is because the results are always reported "looking to the left" (or "just to the right") of the cut. This causes the reaction and the point load to cancel each other out at x=0. This is rarely an issue, since it usually makes sense to apply these loads as nodal loads instead of member loads.
To Reproduce
Steps to reproduce the behavior:
Suggested Fix*
The fix is pretty simple: change the code to report member end forces at the starts and ends of members, rather than calculating the internal shear force or moment as you would away from the ends.
Is your feature request related to a problem? Please describe.
n/a
Describe the solution you'd like
Ability to assign categories to all types of applied loads, and to factor and combine these various categories of load in accordance with whatever governing code is applicable.
Additional context
Hi
I am using code in the documentation and have hit a brick wall. In the Analyze Sub, in the FEModel Class, when we have no load combination defined it tries to create default load combination. See code below
If LoadCombos.Count = 0 Then
'Create and add a default load combination to the dictionary of load combinations
Call LoadCombos.Add("Combo 1", Array("Case 1"), Array(1))
End If
It is hear that it appears their is too many perimeters. Hence the error.
Also I would like to contribute as well. I am not an engineer, but a software developer with a degree in computer science. For the last 19 years I have been working with structural engineers developing software for portal frame design detailing. Please let me know how I can help.
Regards
Shazad.
in this example ( Private Sub FEM_Problem_3_27()) the result is always empty. After some investigation I believe this line has an issue:
'Define the joint loads
Call myModel.AddNodeLoad("N3", 5000, -10000, 0)
and something like this will solve the problem based on the definition of the AddNodeLoad Function:
'Define the joint loads
Call myModel.AddNodeLoad("N3", 5000, FY)
In this way, the load is being applied in FY direction and is considered in the default load case and combination which is being used by default in next commands to show the result.
@JWock82 Craig, Can I add some features to your code?
By the way, I will be happy to participate in this project whenever I can. How I can contact you?
Member sign convention is a little different from most commercial programs. "Beam sign convention" is used. For a simple beam with uniform load, this means that the moment diagram would be positive. It's not an error, just an unusual convention for finite element modeling. At some point I may change this.
I love what you've done so far! I've been fiddling with VBA for years doing similar things in Excel, but I've been reluctant to learn and implement classes. Stumbling across your xlFrame code has encouraged me to take another look. Hopefully I can get myself up to speed such that I can start submitting PRs here.
Is your feature request related to a problem? Please describe.
xlFrame doesn't have the capability to support physical members that have members framing into them, without actually separating the member. Segmenting the member by hand can make it time-consuming to query the member for max/min values at the end of the process.
Describe the solution you'd like
I'd like the solver to scan for nodes that lie along members, segment them behind the scenes, and then (after solving) reconstitute them into their physical members for postprocessing.
Additional context
A technically related issue is automatically applying nodal loads to members, where the nodes are at the midspan of a member without any other members framing in at that point. Once the former task is complete, this should be trivial, if not automatic.
Describe the solution you'd like
I know it's a lot of work to program in member capacities, but it would be nice to have some method of calculating and comparing to code allowables. Most users of this package will probably be more interested in obtaining code checks than anything else.
Additional context
Obviously it's a big "add-on", somewhat removed from the core of the FEA solver. But it seems it would make a huge difference in usability for the typical end-user to include.
Is your feature request related to a problem? Please describe.
No
Describe the solution you'd like
Add the x,y points associated with mathematically continuous “segments” into the various diagrams (shear, moment, etc.) to improve their accuracy and precision.
Additional context
I'll start working on this as a pull request ASAP.
Is your feature request related to a problem? Please describe.
When adding a gravity loads, such as snow, to a sloped member the user has to resolve the load into the appropriate "Transverse" and "Axial" components and apply both.
Describe the solution you'd like
It'd be handy to have a third load direction, "Vertical", with the T and A components automatically resolved and applied to the member.
Additional context
Taking it a step further, perhaps there could be 4 load types: x-local, y-local, X-global & Y-global. Or "Axial", "Transverse", "Horizontal" & "Vertical" if you prefer.
Is your feature request related to a problem? Please describe.
In addition to nodal and member loading I'd like to be able to apply a known nodal displacement to a structure, to examine the internal loading that arises from foundation settlement for example.
Describe the solution you'd like
At the moment I don't believe there's a way to do this - no purposely written sub/function that I've seen anyways. Is that correct? If so it's something I will work towards including, although I have a feeling it'll require much more familiarity with the existing code than I currently have, not to mention a better grasp of OOP.
Describe the bug
While attempting to import LoadCombo.cls into a VBA project, it will be imported as a Module not a Class. Additional header lines will be added, see first screenshot below.
To Reproduce
Expected behavior
A LoadCombo class should be created instead of a LoadCombo Module and without the additional header lines.
Additional context
I'm going to leave this in here just in case someone else needs it. This is not a bug per se, as I believe the code will work just fine if you create the class manually and copy/paste the code into it (minus the added header lines.) This happens because the line endings in the file LoadCombo.cls are UNIX-style (LF) vs the Windows-style (CR+LF). See this from Tim Hall.
Describe the bug
I am running the "TestRountine" modules and I receive a Run-time error
To Reproduce
Steps to reproduce the behavior:
Expected behavior
A clear and concise description of what you expected to happen.
Additional context
Add any other context about the problem here.
Describe the solution you'd like
It would be nice to have a Module that supports some graphing functionality. Eventually it could become a full-fledged GUI, but to start, I recommend we leverage Excel's graphing functionality to graph each member in the X,Y coordinate plane.
Additional context
This would provide a much-needed sanity check on one's own code when actually using the xlFrame package.
1.I am not getting correct member moment diagram. Reaction are correct. I am analyzing simply supported beam with both side overhang. If the support are fixed than member moment diagram are correct. Let me know if I have done mistakes anywhere.
Describe the solution you'd like
Functions - one min. and one max. - for Member Displacement, similar to current functions for shear, axial, and moment.
Additional context
It looks like there are already functions for Max/Min Displacement under the Member2D Class Module, so this request shouldn't be too hard to throw together, just have to make the wrapper function in the FEModel Class Module.
Is your feature request related to a problem? Please describe.
No. Just more wish list stuff :)
Describe the solution you'd like
Spring supports.
Additional context
One of the uses I have in mind for xlFrames is modeling treated wooden posts embedded in the ground, a.k.a. post frame foundations. Current best practice is to model the soil's lateral capacity as a series of springs with k-values determined by geotechnical properties of the various soil horizons, something like this...
When analysis software lacks spring supports these soil springs are modeled as additional nodes and members (with AE/L = k_soil_spring) - not the end of the world - It's simple enough to set that up, just a bit of a hassle to exclude these extra nodes and members from the desired results. Built-in spring supports would be a welcome upgrade.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.