Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Authoring flow segments and fittings #2181

Open
Moult opened this issue May 3, 2022 · 12 comments
Open

Authoring flow segments and fittings #2181

Moult opened this issue May 3, 2022 · 12 comments
Assignees

Comments

@Moult
Copy link
Contributor

Moult commented May 3, 2022

The goal is build operators that can perform connections between flow segments, and automatically insert flow fittings.

IFC does not establish any conventions around axis orientations for segments and fittings. I had a look at what Revit does, but their system is pretty unsemantic, where all object origins are at the storey, and e.g. for a rectangular ducts their rectangle X and Y parameters don't always correlate to the cross section. It's pretty terrible. So I'm going to follow what IFC does for beams / columns / profile sets which makes a ton more sense.

When creating a rectangular duct segment, the axis convention must always be like this: the duct cross section width is local X, height is local Y, and it is always extruded in the positive Z direction. The position must always be in the center as shown. This matches the convention for IFC profiles exactly.

2022-05-03-121403_473x393_scrot

image

The user must be able to choose a point with the 3D cursor, and use Shift-E to "extend" the point closest to the cursor. Similar to how extending walls works.

The user must also be able to choose a point with the 3D cursor and use Shift-S to "split" at the point closest to the cursor. Similar to how splitting walls works.

In addition, the following operations need to be possible:

  • Bend (2 segments of the same time, changing direction)
  • Connector (2 segments of the same type, with a fitting placed where they intersect and necessary offset to accommodate the space of the fitting)
  • Junction (more than 2 segments, like a Y or T or X)
  • Obstruction (1 segment, with a fitting placed at one endpoint to be specified by the user)
  • Transition (same as connector, but occurs between segments of two different types)

When a connection between two segments occurs a third object will be inserted called the fitting. The fitting geometry will be already available, so the only requirement is to derive the matrix_world of the fitting.

See screenshots of typical operations:

mep-axis.blend.txt

2022-05-03-124438_761x739_scrot

@aothms
Copy link
Member

aothms commented May 3, 2022 via email

@Moult
Copy link
Contributor Author

Moult commented May 6, 2022

@aothms do you know whether or not there is an IFC relationships available to describes that an IfcFlowFittingType is capable of connecting one or more other IfcFlowSegmentTypes?

Unless I missed something, there seems to be no way of knowing whether or not a flow fitting type is applicable to a segment type.

The PredefinedType seems to help narrow the scenarios (e.g. a BEND is only applicable to 2 segments sharing the same type where as a TRANSITION is applicable to two segments of different types) The JunctionType in Pset_FittingJunction can also help filter 3 and 4 segment combos, but not exactly which segment type it applies to. And of course the class (e.g. duct fittings only connect ducts, not pipes) also helps.

If nothing is available maybe IfcRelAssignsToProduct can be (ab)used for this purpose?

@aothms
Copy link
Member

aothms commented May 8, 2022

@aothms do you know whether or not there is an IFC relationships available to describes that an IfcFlowFittingType is capable of connecting one or more other IfcFlowSegmentTypes?

No, sorry, I'm very unfamiliar with the semantic structure behind most of the systems in IFC

@Moult
Copy link
Contributor Author

Moult commented May 8, 2022

OK, for the moment then as an authoring tool I can use the existing hints to narrow down a shortlist, then the user can pick from there. Once a fitting is used, however, it then becomes very easy to know which one its applicable to... just check where it's already used :) Not ideal of course.

@Moult Moult assigned Moult and Andrej730 and unassigned qwiglydee Jul 30, 2023
@KakaoFelix
Copy link

Could it be possible in the Future to get calculations of a whole system ?
For example a AirVent system, where input the outflow on the exhaust points and it calculates the total Flow.
Then you could display airspeed and volume on any point with the dimensions.
Heating and sanitary pipes would be more complex but maybe possible aswell ?

@Isaina
Copy link

Isaina commented Aug 29, 2023

I can help with that basically in comfort air ventilation speed is 4 m/s , inner duct area is known , so basically you can visualized speed across duct, for water(heating and sanitary) is 1 m3/h, so if you know the flow for air like 1000 m3/h divide with 3600 to get m3/s and this divide with 4 m/s to get area. Now there are typical norms for duct size like round is fi100,fi125,fi160,fi200, fi250, etc and for square ducts there is 225x125; 325x125, and all combinations with y25xy25 where is y 1 to 12.

Basically you need have parameters for flow on all terminals or total flow on AHU unit on source. This is velocity based sizing , and there is a pressure based sizing but basically is calculated thru speed, and more difficult.

For me the main problem is if we have round pipe fi250 and air terminal fi100 how to detect difference put t element 250-250-250 and reducer 250->100 or T-reducer 250-100-250 and connect terminal with round duct fi 100 on this fi250 round duct. Idea would be for start that all terminal (grills, air valve, AHU, ventilators )have connection size and flow as parameter and then connect connection point on one element to another and if difference put reducer, and then later visualize speed like check if flow for this connection size (duct) is bellow 4 m/s if is ok we can then connect to bigger duct and total flow of all connected terminals on that duct must be bellow 4m/s . ( 4 m/s is typical but can be bellow in noise sensitive areas or higher where noise is no big issue )

@Isaina
Copy link

Isaina commented Aug 29, 2023

Here is a sample Acca is reference in IFc world also member of ODA so is reference point for MEP authoring tool but is close source and can’t write plug-ins for academic world

https://youtu.be/bZHbG_BhzcU?feature=shared

@KakaoFelix
Copy link

I think i understood 75% of it :D
But my impression was aswell, if you have the dimensions and the volume you can let the program calcuate it and give you the speed.
Would be good if there was no hard cap on 4m/s because you can go over that in certain areas. When there is to much installations you sometimes need to go over 4m/s otherwise you have to many collisions with walls or other pipes etc.

I cant really help with any technical solutions, only wanted to share what i think would be cool to have in such a tool, or rather what i could use, since thats what i need for my work.

@Isaina
Copy link

Isaina commented Aug 29, 2023

Basically you need to have volume flow defined in all terminal discharge points, but for that in each room, space you need to define ventilation method, one is AHI basically take room volume (area x height) and multiple with 6-8 1/h ( but can be one number from 0-20 1/h this method are for toilets, baths, restaurants etc., A second is define amount of person in room (number of person x 35m3/h/person) and with this you will get needed air volume for each room space ( m3/h ). Now you must check is sum volume flow of all air terminal in room equal or little bigger of flow needed for this room. Basically you must have small parametric database of air terminal IfcAirTerminal with size and nominal flow like (round air valve , fi 100, 90 m3/h) , (round air valve , fi125, 120 m3/h), and for grills size with plenums(round and square), ventilation box (fi100, 90 m3/h) -ifcFan , ahu (fi250, 500m3/h), all four connection point are fi250 , and flow in each duct is 500 m3/h ifcdamper, ifcFan, etc

@Isaina
Copy link

Isaina commented Aug 29, 2023

here is a good article for that, would be great to have implementation of this article into BlenderBIM so we can start comparing result from commercial solutions and this academic ones

https://www.tandfonline.com/doi/pdf/10.1080/13467581.2022.2077734

also implement library like this

https://source.thenbs.com/bimlibrary

also Belgium, Nederland, Luxembourg have one National IFC library with standard elements

@Moult
Copy link
Contributor Author

Moult commented Aug 29, 2023

This is awesome! We're not yet at the stage of running calculations - still implementing geometric authoring and port connectivity. After that, definitely the next step is calculations!

@Isaina
Copy link

Isaina commented Sep 11, 2023

One more idea , is possible to make like native ifc , git respiratory for hvac elements, furniture so we can make ifc elements as contributor , hvac element maybe parametric like

https://help.graphisoft.com/AC/24/int/_AC24_Help/130_UserInterfaceDialogBoxes/130_UserInterfaceDialogBoxes-65.htm

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
Development

No branches or pull requests

6 participants