Jump to content


Popular Content

Showing most liked content since 02/21/19 in Posts

  1. 4 likes
    Hi, You can do that using the below code: foreach str_compName [hm_entitylist comps name] { set str_newCompName [string tolower $str_compName]; if {$str_compName != $str_newCompName} { if {[catch {*renamecollector components "$str_compName" "$str_newCompName"}]} { puts "Multiple components with name $str_compName exists " } } }
  2. 3 likes
    Did you know that there are dozens of interesting examples accessible online for multi-body / motion simulation using Altair software?! See https://altairhyperworks.com/motionsolve-models/ These examples have been designed to help raise your awareness for the kinds of simulations that are possible with Altair's multi-body motion simulation tools. There are currently 17 examples for MotionView+MotionSolve and 29 examples for Inspire Motion -- with dozens more examples scheduled to be added quite soon. The goal is to continually add more and more over time. So consider bookmarking that page and check back often! Each example comprises two pieces: (1) a movie clip that plays automatically in your browser + (2) a downloadable zip file which typically contains: One or more movie (.mp4) files. Pre-built model files for the complete, mechanized multi-body system. Results files. A presentation (.pptx) file describing the model and how to use it. Enjoy!
  3. 3 likes
    あまり気付きにくいかも知れませんが、各投稿の右下には、(Likeボタン)があります。 質問内容や回答内容が「いいね」と感じたり、「役に立った」という場合には、ぜひ(Likeボタン)を押して下さい。 Likeボタンのクリックにより、投稿者の「評判(Reputation)」がアップします。
  4. 3 likes
    First createmark by card image, Then filter them by option Example *createmark sets 1 "by card image name" Part *createmark sets 2 "equal to value" \$LSD_TitleOpt 1 *markintersection sets 1 sets 2 puts [hm_getmark sets 1]
  5. 3 likes
    Hi, Deleting those files usually helps, Or you can write a .bat files like below: "C:/Program Files/Altair/2017.3/hm/bin/win64/hmopengl.exe" -nouserprofiledialog -uOptiStruct Search HyperMesh Startup Options in Altair Connect or in Help doc for more info.
  6. 3 likes
    As Vipin suggests *createmark nodes 1 "equal to value" inputsystemid $sysID => reference system *createmark nodes 1 "equal to value" outputsystemid $sysID => displacement system
  7. 3 likes
    I remember there is a relevant command but can't find it. Example to get mid side nodes of quad8: *createmark elems 1 "by config" quad8 set NodeList [hm_getvalue elems mark=1 datanames=nodes] set MidNodes [join [regsub -all {\{[0-9]+ [0-9]+ [0-9]+ [0-9]+ } $NodeList \{]]
  8. 3 likes
    Hi Roche, You can try the below commands to Set you need: set setHandle [$modelHandle GetSelectionSetHandle setH1 "Set $id"] set nameSet [setH1 GetLabel] # Can also be: set setHandle [$modelHandle GetSelectionSetHandle setH2 "User_Set $id"] set nameSet [setH2 GetLabel] # User_Set or Set are called pool can be found through GetPoolList # Refer documentation for more info.
  9. 3 likes
    Don't do that, Use hm_latestentityid to return created set id It could not be max id if includes are there (from version 13)
  10. 3 likes
    @JFormiga14 the sliding contact is the key for correlation IMHO. Sliding contact might not work using linear static analysis. In linear static analysis, the contact status does not change, does not slide and the contact stiffness is constant throughout. I tried with non-linear quasistatic (NLSTAT) and got slightly larger Y displacement (0.21 vs 0.19). Ensaio_Olhais_edit.h3d
  11. 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
  12. 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
  13. 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
  14. 2 likes
  15. 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!
  16. 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.
  17. 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 } } } } } }
  18. 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.
  19. 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
  20. 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
  21. 2 likes
    Hi, it is possible to use nonlinear quasistatic analysis as a preload for linear buckling analysis (see attached model). From Optistruct help: NLASTAT+BUCKLING.hm
  22. 2 likes
    Hello Holo, In fact, your problem is that you have made a mistake in the input power calculus. You have assumed that, as far as each current source provides 2100 W (mean value) the three will provide three times this quantity (this is, 6300 W). This is not the case, as far as you have a neutral cable (four cable connexion, taking into account the ground) the sources are consuming some of the energy produced by the others, in other words some of this power is coming back to the grid. If you plot the sum of the active power of the three phases in each instant you will obtain the next curve below, with a mean (ignoring the transitory part) of 4235 W. This match much better with your results. Anyway, I advise you to simulate some additional rotor positions in order to assure global accuracy. So you will have a power equilibrium as follows: P_input = 4235 W P_mec=4170 W (mean torque equal to 26.55 Nm) P_Joule= 13+45=58 W P_Berttoti=2.56*4 W=10.24 W The rule is: any quantity calculated directly from the regions should be multiplied by the number of portions in your periodicity but the quantity calculated from the circuit are not multiplied since the circuit already takes into account the periodicity in order to obtain the electric variables (i.e., currents and voltages). On the other hand, if you want to avoid the problem of the neutral in your circuit I advise you to try this connexion: As you can see, the third current source is no longer necessary as far as the other two are already imposing the current to the third branch. If, anyway, you want to represent it (e.g., because you are interested in its behaviour) you should do as follows: The resistance above should be a very high one, since this branch is only there to avoid that small differences between the current sources (i.e., numerical noise) leaves to inconsistent equations . For example a value for 1E7 is fine. Hope this helps. Best regards,
  23. 2 likes
    Hi, Load Extraction is also possible with rigid bodies. Keshav_Webinar_Load_Extraction - Altair Check tutorial: mv-3030: Load export: load_export.mdl mv-3030.pdf
  24. 2 likes
    Yes, No.3 is not clear how to do (i double click but its loadadd does not. Anyway try and reply me results: #hide all loadcols: *createmark loadcols 1 all *displaycollectorsbymark loadcols 1 off 1 1 #show all loadsteps foreach LS [hm_entitylist loadsteps name] {*displaycollectorwithfilter loadsteps on $LS 1 1} #delete undisplayed loadcols: *createmark loadcols 1 displayed *createmark loadcols 1 reverse *deletemark loadcols 1
  25. 2 likes
    Hi, With LAW2, Iflag=1 the UTS and strain at UTS are engineering strain values. But the output by Radioss is true stress and strain. If you look in the Radioss starter you can see the Iflag=0, a, b, n values that are calculated using your input. JOHNSON COOK MODEL : YIELD STRESS . . . . . . . . . . . . .= 355.0000000000 ULTIMATE STRESS (UTS) . . . . . . . . .= 470.0000000000 STRAIN AT UTS (Ag). . . . . . . . . . .= 9.0000000000000E-02 YIELD COEFFICIENT A . . . . . . . . . .= 355.0000000000 YIELD COEFFICIENT B . . . . . . . . . .= 312.9879880695 YIELD COEFFICIENT N . . . . . . . . . .= 0.2806664576242 EPS-MAX . . . . . . . . . . . . . . . .= 0.2100000000000 SIG-MAX . . . . . . . . . . . . . . . .= 1.0000000000000E+30 ISO-KINEMATIC HARDENING FACTOR. . . . .= 0.000000000000 You can input the a, b, n value into the equation in the comments of LAW2. Note this equation is true stress as a function of plastic strain and I have left off the temperature and strain rate terms. Or the pre-processor HyperCrash lets you plot a material when you use a, b, n in LAW2. Note that this is a plot of True stress versus true strain (not plastic strain). Please check if your output makes better sense using these stress strain plots. It is good that you are thinking about the results with respect to your material input to see if they make sense. Not everyone does this but they should! Thanks, Andy
  26. 2 likes
    Thanks for the reply I got the solution resultHandle GetSimulationLabel sub_id step_no
  27. 2 likes
    HI Create one userpage.mac file. code in that file to create button: *createbutton(5, "Deflection of Cantilever", -1, 0, 10, YELLOW, "Launch Solution To Cantilever Beam.", EvalTcl, "C:\Users\pdd914713\Documents\Test.tcl") *beginmacro("CantileverBeam") *endmacro() keep this file in current working directory...then restart the Hm. You can find this info in HW help as well. HyperWorks Desktop Applications > HyperMesh > HyperMesh Tutorials > Customization > Scripts:
  28. 2 likes
    You could run shape optimization for nonlinear cases with equivalent plastic strain as response.This is supported from OptiStruct 2017.2.3 or higher version.Please refer attached pdf and fem file. 62-Plastic_strain_response.pdf 62-Plastic_strain_response-conrod_shape_plas_mdl_start_dv_0.2.fem
  29. 2 likes
    Hello @LFM1995 If you still have the hexa elements, please try this. hm_entityrecorder elems on; *createmark elems 1 "by config" 208; foreach elemid [hm_getmark elems 1] { lassign [hm_entityinfo centroid elems $elemid] X Y Z; *createnode $X $Y $Z; set center [hm_latestentityid nodes]; foreach nodeid [hm_getvalue elems id=$elemid dataname=nodes] { *createlist nodes 1 $center $nodeid; *createelement 2 1 1 1; } } hm_entityrecorder elems off; set newplot [hm_entityrecorder elems ids]; if {[llength $newplot] != "0"} { hm_createmark elems 1 $newplot; *configedit 1 "bar2"; } hm_markclearall 1; Download --->>> CreateBeamForCentroidHexElements.tcl
  30. 2 likes
    As I see it, there is no easy tcl command like *createmark to solve your issue as the wholes are not of the same shape (like all cylindrical holes could be easily selected with a "by cylinder"). Well, all the elements, you want to select share one property: They are at the boundaries of your element set and they for a closed loop. So to select the elements you want, you have to do the following: - read in all the elements which are there - identify all elements with node ids, that are only referenced once in the entire element set (those are the boundary elements) - identify all closed loops within that element set You can do it with any programming language you like. Files to be processed are: the .fem file for getting the elements and nodes as well as the _des.h3d for getting the element densities. If there is an easy solution for this, I would be greatly interested if someone could share the findings. The above process takes a while (but on the other hand is applicable for 2d and 3d as well) All the best, Merula
  31. 2 likes
    If files pkgindex.tcl are there, you need append package's folder path to ::auto_path and then load packages by package require WS::Client refer to my pkgindex.tcl and installer.tcl it helps install packages via $::env(HOME) without affection to hw installation. https://forum.altair.com/topic/16835-update-hypermesh-extensions/?tab=comments#comment-30266
  32. 2 likes
  33. 2 likes
    Hi, in explicit method the timestep is affected by characteristic element length, stiffness and density. Please go through the timestep chapter in Free eBook: Crash Analysis With RADIOSS – A Study Guide. Also recommended is 2017 Radioss user guide starting from page 30. Timestep_Crash_Analysis_with_RADIOSS.pdf Review what is causing very low time step in the engine out file: •For an element, check the related material (especially its Young modulus and density in case of an elastic-plastic material; and its viscosity in case of a visco-elastic material). There must not be an error in the units system that this data is given in.  Check the size of the element, since elemental length is proportional to time step. If some elements are distorting badly during simulation it will lead to very low time step and the run will terminate. In this case use small strain formulation (in the property card). •For a node, check the characteristics of connected elements. If the node is on the master side or the slave side of an interface, this interface must be verified. •For an interface, the gap of the interface must be verified if some failure happens on the master or the slave side of the interface. Check the interfaces defined in the model for any penetrations. https://altair-2.wistia.com/medias/osd349gz4k To reduce solving time use mass scaling (DT/NODA) or advanced mass scaling (AMS). Any targeted model for AMS application should run first in /DT/NODA/CST with a reasonable energy error (ERROR < +2%) and acceptable added mass (MAS.ER < 0.02) along its simulation time. A model unable to run with /DT/NODA/CST will not run with AMS either. Output the number of AMS iterations per cycle via /DT/AMS/Iflag - Iflag =2 may help to monitor convergence quality at no extra CPU cost. Maximum allowed iterations before the divergence stops is 1000. 75 to 100 iteration per cycle is a sign of a poor convergence 50 still may provide some speedup 30 iterations or less is considered a good convergence.There should be only a few cycles where INTER is controlling the timestep. Use Multi-Domain Technique if your model has different subdomains characterized by different mesh sizes and consequently very different minimal time step. Additionally, you can use single precision (Radioss panel options: -sp) to speed up computation. Run time remaining can increase during the run even if the timestep does not drop. This happens when available CPU power is used during the run for other tasks (use Windows task manager to check how much CPU is utilized). Negative Energy Error represents energy dissipated from the system and this can be from many sources including plastic deformation and Hourglass energy. If you have included coefficient of friction then the energy error is due to coefficient of friction which is justified. If this amount of energy error is there when no coefficient of friction is defined, then it may be a case of penetration which is problematic. The combined energy error (contact + hourglass) should be less than 15% of the total energy. Energy error.pdf The following contact settings are recommended for type 7: Istf=4 Igap=2 Fscale_Gap=0.8 INACTI=6 Gap_min=1 Fric = 0.1 Iform=2 You can try increasing the Gapmin in your TYPE7 interface which will allow the contact to work sooner and prevent deep penetration. It is also possible to use /DT/INTER/DEL in the engine file to release slave nodes from the interface when time step drops below the value given in this option /DT/INTER/DEL- however, if there are many nodes released during the run the results can be questionable.
  34. 2 likes
    Hi, First some definitions. From https://superuser.com/questions/1105654/logical-vs-physical-cpu-performance In Radioss, we typically recommend using only physical cores where you set the number of physical cores = -np option. So if you have a machine with 4 physical cores using -np 4. You should get a small amount of speed up by using the extract Hyperthreading cores by using, -np 4 -nt 2. Or for your other machine with 36 physical cores use, -np 36. or you can try -np 36 -nt 2 if you want to use all 72 logical cores but the speedup will be not very large. Meaning it won't run 2x faster when using all 72 logical cores. Thanks, Andy
  35. 2 likes
    For simple spur gears it is often much simpler to just use a Coupler... it can run very efficiently because contact detection is not required. See attached ZIP file containing a model where coupler is used instead of contacts. Sincerely, Tony S. Spur_Gear_useCoupler.zip
  36. 2 likes
    set x [hm_getvalue systems id=52dataname=originnodeid] ; # returning 0 because system is not defined by node it's just a system located at that position .
  37. 2 likes
    Hi Try simple loops like this. for {set i 1} {$i<6} {incr i} { for {set j [expr $i+1]} {$j<6} {incr j} { *createmark solids 1 $i *createmark solids 2 $j *boolean_merge_solids 1 2 14 2 } }
  38. 2 likes
    For PCOMPP, the SOUT field (result request) on the corresponding PLY entries should be set to YES. 02_analysis_complete_edit.hm
  39. 2 likes
    Hi Please find the attached file Tetra_1.mp4
  40. 2 likes
    Actually i am not a tcl expert - it is used widely. I learned hypermesh before tcl. Once you're familiar with most hypermesh features, scripting is not a problem because hypermesh outputs every action of you, pick each command from command.cmf file, look it up in hm reference guide, do examples given by altair. Tcl features are listed in manual (activestate.com) similar to other languages. This is the most simple syntax language I ever know and much easier than pascal.
  41. 2 likes
    The big difference here stands on the specific functions HM uses, which are in a sense independent on the TCL language as it works as an additional package for the language. If you know the basics of programming and the syntax for TCL, I would suggest that you explore as much as you can the command.tcl file written by HM. This file is really useful as it records any action you do in the GUI into to a code format. Then looking at it, you can change the necessary arguments and others. To learn more about the available functions you can use with HM, please consult the "Scripts > Commands and Functions" part of the HM help. There you can understand the inputs for the HM functions and other capabilities you might be looking for. Hope this helps. Jefferson Vieira
  42. 2 likes
    please Try this: variable list1 proc framework args \ { *createmarkpanel comps 1 "Please select the components "; hm_framework registerproc getorderedcomps graphics_selection_changed; *clearmark comps 1; } proc getorderedcomps args \ { variable list1; lappend list1 [noIntersect;]; } proc noIntersect args \ { variable list1; foreach item [hm_getmark comps 1] \ { if {$item in $list1} \ { continue; } else {set comp $item}; } return $comp } framework puts $list1
  43. 2 likes
    Hi Vikas, try, hm_getvalue loads id=$constid dataname=comp1 #comp1 gives dof1 refer datanames of loads for more info #This method you will have to query each dof
  44. 2 likes
    Because zoom in/ zoom out not recorded in command.tcl, you cannot catch that event So I think periodically monitor viewmatrix, if it is changed we will send message to 2nd hm A timer is created by command 'after' A proc like this will self-repeated by a timer: proc ::MonitorViewMatrix {Period Callback} { if {![info exists ::MonitorViewMatrix(matrix)]} { set ::MonitorViewMatrix(matrix) [hm_winfo viewmatrix] } set matrix [hm_winfo viewmatrix] if {![string equal $matrix ::MonitorViewMatrix(matrix)]} { catch {eval $Callback} } if {[info exists ::MonitorViewMatrix(timer)]} { after cancel $::MonitorViewMatrix(timer) } set ::MonitorViewMatrix(timer) [after $Period [list ::MonitorViewMatrix $Period $Callback]] } You have to prepare a callback proc, example ::SendTo2ndHm Then start monitoring view changes by: ::MonitorViewMatrix 2000 ::SendTo2ndHm To send a message to 2nd hm, you should use dde facility, or socket (need administrator account) Are you familiar with client-server programming? Refer to dde commands in Tcl/Tk manual. Example:: Open a server on 2nd hm: package require dde dde servername -handler eval -- HM2 (HM2 may be changed if another already opened) A simple ::SendTo2ndHm on 1st hm: package require dde proc ::SendTo2ndHm args { dde eval -async HM2 *viewset {*}[hm_winfo viewmatrix] }
  45. 2 likes
    Yes Hypermesh does that for you. In case you need, try with hm_entitymaxid.
  46. 2 likes
    Will tell the logic, try to do yourself and let us know if you still need help. EntityPreviewEmpty will check the empty assemblies in your model. Use this API and while loop to check and delete the empty assemblies use deletemark to delete the entities. Check this to understand how while loop works https://www.tutorialspoint.com/tcl-tk/tcl_while_loop.htm
  47. 2 likes
    Hi, We can use tool edges to create feature elements all along the free edges of your model, these can later be used to create shell cross sections and change the configuration of these feature elements to create 1D feature models of the original solid or shell models. https://altairuniversity.com/wp-content/uploads/2013/09/Tool_Edges_TTF.pdf Plotel elements can also be converted into CBAR and CBEAM elements. https://altairuniversity.com/wp-content/uploads/2017/03/1D_Elements_Extract.pdf
  48. 2 likes
    Free eBook: Design the Inspire Way – A Practical Introduction to solidThinking Inspire click on the title here This book is a very light-weight introduction into the exciting world of the “Simulation Driven Design Process”. It is meant to give pupils, undergraduate students and maybe even designers new to Computer Aided Engineering CAE a “taste”, a first idea on how simulation, especially conceptual design (simulation) works. The tool of choice used in this book is solidThinking Inspire®. Inspire enables design engineers, product designers, and architects unfamiliar with numeric simulation, to make optimal use of the material by placing it only where needed to meet structural requirements. Become Inspired ...
  49. 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.
  50. 2 likes
    Use MATHE card.PFA screenshot for same.
  • Create New...