Feedback for unidirectional supports - mkraska/meclib GitHub Wiki
This function handles any unidirectional support ("bar", "dashpot", "springt", "springc", "fix1", "rope") in Feedback for Free Body Diagrams.
These supports are to be replaced by a single "force".
Checks done by the fb_unidir()
:
- Is the object really of unidirectional type (just for developers)?
- Is the object deactivated?
- Has meclib found any reactions by proximity check?
- Is there exactly one reaction?
- Is the reaction of type "force"?
- Is the reaction normal to the direction of unconstrained translation?
Special name checking functions:
- fb_bar_name checks if the name matches the number of the bar.
- fb_name checks if the name is in a given set of names.
Example question: FBD Tutorial Parallelführung (I) at abacus.aalto.fi/develop/4.4beta
Point A has a unidirectional support formed by a bar and a pinned support.
There is no dedicated name checking, as the force name doesn't need to follow particular rules.
See Feedback for "fix1" for more specific feedback, in particular name checking.
Typical PRT
Feedback variables:
obj: stackjson_parse(objects);
[text, isOK]: fb_unidir(obj, names, i_A, "Lagerung bei A: ");
PRT node 1 test for correct direction
Algebraic test for isOK = true
and feedback of {@text@}
for both branches.
[txt, isOK]: fb_unidir(o, n, i, description)
txt
feedback textisOK
flag for test resulto
list of objectsn
names fieldi
index of unidirectional objectdescription
string with Text to identify the object for the user
Requires: parallelp()
Check angle between support and reaction
This can be used to check if the reaction is parallel or antiparallel to the support (rope or bar)
fb_angle(%_o, %_n, %_i):= block([%_o1,%_o2],
%_o1: %_o[ %_i ],
%_o2: %_o[ %_n[%_i][1] ],
return(angle(%_o1,%_o2))
);
Display in the function if angle is not correct
\\({@dispdp(angle(R, o[i])*180/pi,2)@}\\)°