Jump to content


Popular Content

Showing most liked content since 07/07/19 in Posts

  1. 5 likes
    Hi techs! I've created a Ball & Beam model on MotionView to explore a co-simulation with Activate. Many of you may have seen this on undergraduate/master class studying on frequency or even on time domain. I've decided to do something different, creating the model on a multibody environment. The control is a simple PD, where I've calculated using analytical method (Kp +Kd.s) with a specified overshoot and settling time. You could explore changing its values... I'd like to thank @Livio Mariano for suggesting me his own low-pass filter in a way to filter the input displacement signal (without it I was having a problem to converge). I've created a short video to show you how it works, and the files are attached. Enjoy! João. Ball_&_beam.zip
  2. 4 likes
    Hello community, I want to share some code that will help you to use a gamepad/joystick in compose. I created an OML-class that represents the controller. I will provide you with more informations, documents and updates soon. To make the code work, you need to install the XInput-Python interface: https://pypi.org/project/XInput-Python/ In the topic below, there are instructions how to install python modules in compose: regards Nils vrjoystick.zip
  3. 3 likes
    Hello everyone, Regarding some Shock's analysis demands, I've decided to facilitate and automate (using Activate) the task to obtain the expected Shock Response Spectrum curve as below: This model will be very useful for those who are intending to do some Shock's analysis, even a linear approximation using the amplification factor on a certain frequency, as a Response Spectrum covering all the frequency domain. Basically the inputs are the Half-sine and System properties: Sine: Magnitude, period, phase. System: Mass, damping, stiffness. After set them, you'll just have to click 'Run' and then 'Execute'. Besides the traditional plots (Acceleration (G) vs. Frequency (Hz)) you will already have the 'TABLED1.fem' to be used on OptiStruct, as can be seen in this video. Thanks for @robertavarela, @RoKet and @Adriano Koga for some tips regarding the modeling. Hope this be very useful for you all! Please, let me know if you have any question about this model (attached). João. Srs_curve_model.zip
  4. 3 likes
    Hi everyone, i'd like to share a script slightly modified, based on the very famous 99lines topology optimization script from Ole Sigmund group (http://www.topopt.mek.dtu.dk/). It brings a topology optimization problem, for miminize compliance, while keeping a limited volume fraction of material. It is a bi-supported beam example. This runs fine in Compose 2019..3+ I believe. Just load the .oml file, and run the script. Then for execution type a few parameters while calling the 'top' function. top(20,10,0.5,3.0,1.5) top(numb elems in x, numb elems y, volume fraction, penalization , minimum radius filter) 99lines_modified.oml
  5. 3 likes
    Hello all, I wanted to share with you a tool to digitize plots in images using OML and Python. The aim is to convert plots that are introduced in text books like Analysis and Design of Flight Vehicle Structures (Bruhn, 1973): Such plots are commonly used in industries like Aerospace to calculate constants and other parameters that assess Margins of Safety of components and systems. Finally, we can do a polynomial curve fitting to use these curves and compute these constants without the need to look at the plots everytime they must be applied. The steps of the attached scripts are: 1) Give the axes bounds, degree of polynomial curve fitting and image whose plot will be digitized 2) Hit Start in the OML script (it will automatically call the Python script) 3) Give a first click with the mouse button to start selecting the corners of the plot 4) Select the corners 5) Give another click to select the points 6) Select as many points as you want 7) Double click with any key to finish the selection 8) Plot is generated and polynomial coefficients are computed and printed Regards, Roberta PlotDigitizer.oml ginput_plot.py
  6. 3 likes
    There is not a simple answer to your question. The general guidance is to reduce penetration between components as much as is reasonable, without making the stiffness so high that is results in computation difficulties. Sometimes you need to try different types of normal force calculation, sometimes it's the parameters themselves. In our help section, please read careful the section on Best practices for 3D contacts. Your wheel geometry does not have a uniform mesh, which is important for accurate contact forces. Just search the help for "Best Practices for Running 3D Contact Models in MotionSolve". There is a lot of important material there, that will save you a lot of time and headache if you will follows those best practices in setting up your problem.
  7. 2 likes
    Hi @Nadzrin, The advancing front vs. Delaunay triangulation discussion actually refers to the surface meshing. AcuSolve doesn't have much of a preference either way when it comes to surface meshing. The runtime argument I made is in reference to the volume meshing (AcuConsole's octree vs HW-CFD's approach). In this case, the linear solver *should* perform better with the mesh from HW-CFD. Note that the performance won't be radically different between the two approaches, but according to our linear solver experts on the AcuSolve team, the more random mesh is beneficial. Would be an interesting test for someone to run. and report the results!
  8. 2 likes
    Right. AcuConsole's mesher will create octree patterns in large open regions. That mesher works as follows: 1.) Create surface mesh using the delaunay triangulation approach 2.) Extrude boundary layers from the surface into the volume regions 3.) Build octree mesh in volume regions 4.) Connect the surface/boundary layer mesh to the octree regions using delaunay or advancing front technique. However, the question is what you feel is superior about the octree approach. The structured nature of an octree mesh is not beneficial to AcuSolve. The randomness of the nodal positions in the HW-CFD mesh tends to make the linear algebra less stiff and can actually lead to faster run times on meshes of similar node count. Additionally, the 2:1 size jumps that are present in the octree mesh can cause a stiff linear system in AcuSolve as well. Overall, you should see that the HW-CFD mesh performs better in the solver, and is also faster to generate due to the more effective use of mult-threading. I'd be interested to hear if your experience is not consistent with these expectations.
  9. 2 likes
    Deb, In Compose v2020, you can use composedir function and in previous versions you can use getenv('ALTAIR_HOME') to get the environment variable that points to Compose installation folder. Regards, Roberta
  10. 2 likes
    Hello CLervick, this feature is not yet available, but you can still run portion of your script. To run a portion of your script: - highlight it - right click - Run Selection Hope it helps, Lorenzo
  11. 2 likes
    Hello all, As you already know, OML (Open Matrix Language) has a syntax compatible with other matrix-based languages, such as Octave. This compatibility leverages both the reuse of legacy data and syntax knowledge of these other softwares. It means that it’s possible to have a non-disruptive adoption of Compose and it can coexist with existing Math tools. Please find attached a video explaining the main differences that you may encounter when trying to use your past scripts in Compose and how to overcome them. Regards, Roberta LegacyData_AltairCompose.mp4
  12. 2 likes
    Hi @Soheil_F, By any chance is it your first time running MotionSolve? I ask you this, because I've searched the "scpxml.dll" file and it should be in your solver path installation, something like: "D:\Programas\Altair\2020\hwsolvers\motionsolve\bin\win64" Could you please access this path and search for "scpxml.dll" file? I've made a test deleting it and run the Activate tutorial and I've got the same error as yours: I've copied to the installation path again, and it worked. So it could be some MotionSolve installation error. João.
  13. 2 likes
    Based on the same script, @Kosuke IKEDA created an example connecting OptiStruct Activate, where K, M and C matrices were converted from OS to ABCD matrices (state-space system): Which may be imported in Activate then. The impulse response results match OS transient: Regards, Roberta hm_plate_cms_AX.pch io_def.txt stc_DMIGPCH2ABCD_rev1.oml
  14. 2 likes
    Workaround: In Python: list2=[(1,1),(2,2),(3,3)] list3 = [list(child) for child in list2] In OML: getpythonvar('list3')
  15. 2 likes
    FREE Altair Compose Notebook: An Introduction to System Dynamics and Controls using Altair Compose (Click Here) WHAT IS ALTAIR COMPOSE NOTEBOOK? The Altair Compose Notebook is an environment where you can develop interactive documents, mixing text, pictures, equations, and editable scripts. · For Academia: an application to make teaching more efficient and fun · For Professional: a tool to create interactive document that you can share across your organization · For Everyone: an environment to develop and present your projects WHAT WILL YOU LEARN FROM THIS NOTEBOOK? In this first notebook we talk about System Dynamics and Controls. Our aim is to provide you with all the basic knowledge you will need to work on your projects or deepen your studies. We will cover: 1. System Dynamics 2. Continuous Dynamics 2.1. System Analysis 2.2. Control Theory 3. Discrete Dynamics The theoretical explanation will be integrated by practical examples and applications, that will be developed leveraging Compose built-in functions (in particular the ControlSystem Library). MORE RESOURCES Also a .pdf version is available. CLICK HERE to download the E-book: An Introduction to System Dynamics and Controls using Altair Compose
  16. 2 likes
    There are multiple commands to extract CAE/Test data file in Compose OML. of which, readmultvectors, readcae commands extracts results of specific input arguments given by the user. I had multiple requests from users asking, as these 2 functions serve the same purpose then whats the difference between readmultvector & readcae? Which one do we use and when? As an engineer myself, I tried to break it down based on 2 key factors below: 1. Syntax differences (Ease of Use) 2. Speed/Performance Attached is the paper i wrote about the same with example. Hope this helps users to pick the right command for their tasks. Happy coding!! Thanks, Manoj kandukuri readmultvector_readcae_why_are_they_2.pdf
  17. 2 likes
    Hello community, if you like to instantiate a certain number of a model/class/component and connect the ports with a for-loop you can do it like in the picture below: In this example a specified number of the "HeatedPipe" component is created. One for-loop is connecting the flow ports and the other one is connecting the heat ports. regards Nils RadiatorSimple.zip
  18. 2 likes
    For your information: I use Hyperworks-X only on .... playstation :-) I work only with classic Hypermesh
  19. 2 likes
    Hi, First, you are running Real Eigenvalues Analysis using Lanczos solver (EIGRL). V1 and V2 mean the lower and upper bound of your frequency domain. ND means the number of roots (number of eigenvalues) of the following equation : (-w^2*M - K)*phi = 0 with w refers to the real eigenvalue and phi means the eigenvectors. Cheers,
  20. 2 likes
    There is no specific tutorial for this. You can find the details about our Belt-Pulley tool in our MotionView help: Altair MotionView -> MotionView Panels -> MotionView Toolbars -> Subsystems Toolbar -> Create a Belt-Pulley Subsytem Further questions should be directed to our Multi-body dynamics forum. Note that modeling belt-pulley systems is rather challenging and can be computationally expensive.
  21. 2 likes
    Dear Fady, is there anywhere I can find some documentation for vssBlockOutputUpdateFlag and similar functions? I still not get the flag paramater meaning. Thanks in advance Orestes
  22. 2 likes
    Thank you very much, that worked flawlessly. It also answered another question that came up concerning beam section properties which can be found in the utilities as well.
  23. 2 likes
    I've used pyaudio in the past to create .wav files, which is a package that is able to input/output audio. Steps to install the package: Open the command window (cmd) as Administrator Type cd C:\<Compose_installation_folder>\common\python\python3.5\win64 Type python.exe -m pip install pyaudio There are some examples at GitHub: https://gist.github.com/mabdrabo/8678538 https://gist.github.com/fopina/3cefaed1b2d2d79984ad7894aef39a68 And pyaudio documentation is at https://people.csail.mit.edu/hubert/pyaudio/docs/ - the class stream probably achieves what you are looking for. Regards, Roberta
  24. 2 likes
    Hi, Go to File > Preferences > Application and turn on "Enable CFD modelling" toggle. This will automatically set the skew as a default quality in volume mesh dialog. Please try this and let me know if you have any difficulty.
  25. 2 likes
    Hi Amasker, To smooth the curve in HyperStudy, you can use saefilter or polyfit functions available in the Expression builder. You would need to create data sources for each vector Time and Velocity and then create a Response defined with the filter expression. Hope it helps. Let us know if further questions. Diana
  26. 2 likes
    Hello I modify some things Please copy these modified files and overwrite the old ones If something's wrong, simply backup original files and let me know issuesReports_modified.zip
  27. 2 likes
    Crashphys - You can't accomplish exactly that, but here's a work-around. Create a DRESP1 with your stress response. Then create a DRESP2 with DEQATN. Pass the stress response and the property thickness (assuming this is a DESVAR) to the DEQATN. I'm not sure if you intend a linear relationship or something else. But your DRESP2/DEQATN could be written such that your stress responses is adjusted for thickness (or some function of thickness). Then constrain that stress with DCONSTR. - Robert
  28. 2 likes
    Let me add another approach that I've just learned. There are many options to perform it but I’ve found this method very simple, flexible and self-explanatory. Summary: In the example, watertank.oml is the master file. It: changes the input parameters (controller gains) runs (repeatedly) the file Watertank_parm.scm (slave) collects results doing post-processing (plot) at the end. I’ve created a quick video to summarize how to run the demo. Present working directory must be where you save the files (the video shows how to select the pwd). Otherwise use an absolute path in the oml file. Liv ParameterSweeping.mp4 watertank.oml watertank_param.scm
  29. 2 likes
  30. 2 likes
    Seem that before *feinputwithdata2 you are missing a *createstringarray Number 8 indicates that the array has 8 items If input reader parses 8 args but not found, it's crashed!
  31. 2 likes
    ... model and video are attached. impulsiveForce_IM.mp4 2_simplified_SingleBC_Impulse_2019.3.stmod
  32. 2 likes
    Hi forestis - You could use the type "Expression" and have an expression something like this - `STEP(TIME, 1,0,1.1,100)+STEP(TIME,1.1,0,1.2,-100)` In this expression, the first STEP function increases the force to 100 from time 1 sec. until then it is 0. In the next STEP function, the force is being dropped down back to 0.0. (otherwise the force will remain at 100 for the remaining time of the simulation) You may also use a Curve that has the impulse profile of your choice and use TIME as the independent variable while using the type Curve. regards praful
  33. 2 likes
    Hello @BG913 I guess "hm_gettiedentities" is you are looking for. Ex: *createmark nodes 1 248; hm_gettiedentities nodes elems 1 2; hm_getmark elems 2; Thanks, Imoto
  34. 2 likes
    @Joel Rodarte: use command "hm_getvolumeofsolid"
  35. 2 likes
    Hey Hyperman! Thanks for your effort, you understand me well. I was lame and did not leave the z0 offset blank, I left there a 0 mm value. Thanks again, you are the real hero, not superman.
  36. 2 likes
    Hi, with the setting Z0=blank, the plies will be arranged symmetrically, i.e. half the laminate thickness on both sides of the surface geometry (see image attached). Or have I misunderstood what you are trying to do? composite_laminate_edit.hm
  37. 2 likes
    Hi Widget pathname of that menu is .model._pw._fbr.content.frmTreeArea.frmTree._m But from v14, it doesn't come in a static way (depends on what you click on) so if you add a menu item then it will be cleared before pop up. To hook an item just before the menu pops up, thanks to Tk mechanism providing <<MenuSelect>> event. This is a way I used in menuexportdeck script: proc ::nexpd::p_Initialize {} { set BindScript [bind Menu <<MenuSelect>>] if {![string match *::nexpd::p_HookMenu* $BindScript]} { bind Menu <<MenuSelect>> {+after idle [list ::nexpd::p_HookMenu %W]} } } proc ::nexpd::p_HookMenu {menuName} { if {![winfo exists $menuName]} return if {[string equal Menu [winfo class $menuName]]} { if {[string match .model*.frmTreeArea.frmTree.* $menuName]} { set menuParent [winfo parent $menuName] while {![string equal TreeCtrl [winfo class $menuParent]]} { set menuName $menuParent set menuParent [winfo parent $menuName] if {![string equal Menu [winfo class $menuName]]} return } set Hooked 0 set Count [$menuName index end] for {set i 0} {$i<=$Count} {incr i} { if {[lsearch -exact {cascade command} [$menuName type $i]]!=-1&&[string equal "Export Deck" [$menuName entrycget $i -label]]} { set Hooked 1 break } } set Selection [$menuParent selection get] if {[llength $Selection]} { if {!$Hooked} { if {![winfo exists $menuName.exportdeck]} { menu $menuName.exportdeck -tearoff 0 -activebackground [$menuName cget -activebackground] \ -activeforeground [$menuName cget -activeforeground] \ -background [$menuName cget -background] \ -foreground [$menuName cget -foreground] $menuName.exportdeck add command -label "Only Selected" -command [list ::nexpd::p_ExportSelection $menuParent $Selection 0] $menuName.exportdeck add command -label "With References" -command [list ::nexpd::p_ExportSelection $menuParent $Selection 7] $menuName.exportdeck add command -label "Save Geometry" -command [list ::nexpd::p_ExportSelection $menuParent $Selection -1] } $menuName insert 0 cascade -label "Export Deck" -menu $menuName.exportdeck } else { if {[string equal disabled [$menuName entrycget "Export Deck" -label]]} { $menuName entryconfigure "Export Deck" -state normal } } } else { if {$Hooked} { if {![string equal disabled [$menuName entrycget "Export Deck" -label]]} { $menuName entryconfigure "Export Deck" -state disabled } } } } } }
  38. 2 likes
    With the last Activate version 2019.2, under Model we have the new “Finalization” tab where we can type an oml script that is executed at the end of the simulation. I’ve found this capability extremely useful for frequency analyses... I’ve created a simple model where we run a co-simulation between Activate & Motion (the approach works also using Activate in standalone mode but with the Motion integration is definitely more interesting). All the related files and the video are enclosed. In the example, we have a system of 2 masses: mass1 and mass2. The input to the Multi-body System is the force on mass2 while the output is the displacement of mass1. Force and displacement are respectively passed as Input1 and Input2 to the FrequencyWorld superblock in the Activate diagram. When you run the Activate model a dialog box appears. Here you can set the sampling frequency (be careful to aliasing issues since the value will affect the Nyquist frequency) and the type of analysis: Turn 0 to 1 the options if you want to analyse in frequency input 1, input 2 and/or the Transfer Function input1/input2. When you turn 1 the last option, the file TF.mat with the transfer function information is generated in the same model folder to be used for further analyses in Compose (e.g. LTI ROM generation…). For each input, the model calculates the fft together with the PSD. The calculation is made in Model-Finalization where we also handle the various options. The script is a bit articulated to properly handle every scenario (even/odd number of the sampling data, leakage, normalization…) Scripts and FrequencyWorld superblock can obviously be re-used for other applications (and easily improved e.g adding filters ...). Best, Liv FFT_PSD_TF.mp4 FFT_PSD_TF.zip
  39. 2 likes
    Based on my quick look at the database, you do not have the interface surface attached to the Rotor volume - only that for the Fixed/main volume. Right-click 'Air-rotor' under Volumes and select Mesh Op. > Find Missing Surfaces. This will generate the other set of surfaces, attached to the Rotor Volume. It appears you already have two sets of nodes there, but the surface definition was missing. This new surface set should have the same treatment as 'interface' > deactivate Simple BC, and activate Interface Surface with 0 for gap and gap_factor. If you know or can estimate the angular velocity, it's simpler to use rotation mesh motion rather than rigid body. It's difficult to estimate the resistance to rotation due to the gearbox, etc, so the angular velocity / rotation from Rigid Body motion is probably going to be higher than the actual would be.
  40. 2 likes
    Hi, you can try to add torque based on BISTOP function to limit joint motion. Please refer to the attached document (from Hyperworks for MBD 13). HyperWorks_for_MBD_v13.pdf
  41. 2 likes
    Hi Laura, You can merge the bodies in MV keeping only the necessary components to represent your system. For instance, parts represented on the CAD like bolts, bearings, welds, etc do not need to be represented in your simulation. Therefore it is either recommended to group it in one single body or delete them. Best regards, Felipe.
  42. 2 likes
    Hi Duc_Hoang, In preference you selected to run at the model location it seems, you can also do one thing, you can change the option in run option in inspire and also in run option in Inspire cast in preference, (try this it will work) if possible send the file if it doesn't work, we shall check. With Kind Regards, Sourav Das | HyperWorks Specialist-FEA| Academic Program | sourav.das@altair.com | www.altairhyperworks.com Altair | Innovation Intelligence® Secure file dropbox https://ftam1.altair.com/filedrop/sourav.das@altair.com
  43. 2 likes
    HyperMeshでは、Postページ⇒hidden lineパネルで、『要素のみ』断面カット表示が可能です。 ジオメトリ(CAD)の断面カットをしたい場合は、HyperViewと組合せて、表示させる回避方法が考えられますので、下記のURLからビデオをご確認下さい。 http://fast.wistia.net/embed/iframe/bfaw0qyd6p?popover=true
  44. 2 likes
    Hi, This is a lot more complicated. You can try the following: Create your derived load case 1 Switch on the needed contour (P1) Export model, including results (File->Export->Model) .. e.g. P1.h3d Create your derived load case 2 Switch on the needed contour (P3) Export model, including results (File->Export->Model) .. e.g. P3.h3d Open expression builder Add resources (Open first P1.h3d, than P3.h3d) Select the element stresses P1 (now scalar) and insert, press Minus Select the element stresses P3 (now scalar) and insert The result is simple: S1-S2 I can't try it at the moment, but please give me a feedback. Best regards, Mario
  45. 2 likes
    あまり気付きにくいかも知れませんが、各投稿の右下には、(Likeボタン)があります。 質問内容や回答内容が「いいね」と感じたり、「役に立った」という場合には、ぜひ(Likeボタン)を押して下さい。 Likeボタンのクリックにより、投稿者の「評判(Reputation)」がアップします。
  46. 2 likes
    Alex, It has been a while since you asked that question. I don't know if you still need help. If you do, please check Analysis -> Preserve nodes see if there are any preserve nodes in your model. HM would automatically delete those once you transfer any preserve nodes to normal nodes.
  47. 2 likes
    Use MATHE card.PFA screenshot for same.
  48. 1 like
    Hi, Sorry for this misunderstand, I mean the Flux project and not the FeMT project. I still working on it to find why we can’t solve it. Sorry for the delay. Best regards.
  49. 1 like
  50. 1 like
    Hi, there are many techniques to connect shell and solid elements: -using rigid elements -inserting a layer of shell elements inside solid elements -inserting a layer of shell elements on the face of solid elements shell2solid.fem
  • Create New...