Leaderboard
Popular Content
Showing most liked content since 04/01/13 in Posts

6 likes
hm toolbars
ravinder muppidi and 5 others liked a post in a topic by tinh
Hi all. i made some hypermesh macros in form of "toolbar" if you feel it interesting, please send me your mcid 
6 likesHi, It's fairly direct. hwi OpenStack hwi GetSessionHandle session1 session1 GetProjectHandle project1 project1 GetPageHandle page1 1 page1 GetWindowHandle win1 1 win1 GetClientHandle anim anim GetModelHandle my_model [anim GetActiveModel] my_model GetQueryCtrlHandle my_query set set_id [my_model AddSelectionSet component] my_model GetSelectionSetHandle comp_set $set_id # Select all Components comp_set Add "All" my_query SetSelectionSet $set_id # ask for ids and component name my_query SetQuery "component.id component.name" my_query WriteData D:/out.csv # clean up my_model RemoveSelectionSet $set_id hwi CloseStack

6 likesThe equation of motion for a static analysis is as below: [K] {X} = {F}  (1) [K] > Global Stiffness Matrix {X} > Unknown Displacement {F} > External Force Applied. For the body to be in static equilibrium, the net force acting at every node must be zero. Therefore, the basic statement of static equilibrium is that the internal forces, I, and the external forces, F, must balance each other: [K] {X} is nothing but internal force 'I' Equation (1) now becomes, ==> I = F or I  F = 0 (2) In Dynamic Analysis, the imbalance between the external and internal forces results in an acceleration: F  I = M a. F > External Forces I > Internal Force M*a > Inertial Forces (mass times acceleration) In linear static analysis the stiffness matrix is constant and shall not change/update throughout the analysis. There are many check need to be performed once you have linear static results for well conditioned problems. The equation (1) is decomposed one time to find the unknown displacement. [K] {X} ={F} After decomposition, a singularity may lead to an incorrect solution. In static analysis to obtain {X} (displacements). Using these displacements, One can calculate a “residual” loading vector as follows: [K] {X} {F} =δ F This residual vector should theoretically be null (equation 2) but may not be null due to numeric roundoff. In Nonlinear static analysis, The stiffness matrix changes in each and every iteration since the stiffness matrix is dependent on the external load. The external load in Nonlinear static analysis is applied in increments and time here has no physical meaning. Time is just a convenient way to apply full load in nonlinear static analysis. In Optistruct the incremental load is controlled by 'NINC' field in the NLPARM card for NLSTAT load steps, this is a fixed load increment method. If you add the PARAM,EXPERTNL,YES to the deck, the time increment method becomes automatic in which case, the increment (load) is increased or cut back based on the convergence rate. NLGEOM loadstep has automatic time step by default. In NLGEOM loadstep the RAMP load curve can be defined using TABLED1 card and then refer this in NLOAD1 card. In nonlinear static analysis, OptiStruct uses the NewtonRaphson method to obtain solutions for nonlinear problems to maintain the residuals close to zero (equation 2) In a nonlinear analysis the solution usually cannot be calculated by solving a single system of equations, as would be done in a linear problem. Instead, the solution is found by applying the specified loads gradually and incrementally working toward the final solution. Therefore, OptiStruct breaks the simulation into a number of load increments (NINC) and finds the approximate equilibrium configuration at the end of each load increment. It is important that you clearly understand the difference between an analysis step (NLSTAT / NLGEOM), a load increment (NINC of NLPARM card), and an iteration (MAXITER of NLPARM card) The load history for a simulation consists of one or more steps. Within a step you will have many no of increments (NINC), within increment there can be many no. of iteration (MAXITER). OptiStruct checks the equilibrium equation ( equation 2) for each and every iteration. If the solution from an iteration is not converged, OptiStruct performs another iteration to try to bring the internal and external forces into balance. An increment is part of a step. An iteration is an attempt at finding an equilibrium solution in an increment when solving with an implicit method. If the model is not in equilibrium at the end of the iteration, OptiStruct tries another iteration. With every iteration the solution OptiStruct obtains should be closer to equilibrium; sometimes OptiStruct may need many iterations to obtain an equilibrium solution. When an equilibrium solution has been obtained, the increment is complete.

6 likesDear All, You can refer to attached document which contains Tutorials ( Model Files + Process PDF ) for 1. Hyper Mesh for FE Modelling 2. OptiStruct as solver for a. Analysis b. Optimization 3. Radioss as solver for NL Analysis Students can solve these tutorials & can ask their query on the forum itself. AOC_2017_Practise Models.zip

5 likes
Update Hypermesh Extensions
llyle and 4 others liked a post in a topic by tinh
Hello everybody This is a script to project nodes on elems: < a simple script so i do not make package index & installer, you have to source it or invoke menu File>Run>Tcl/Tk Script ProjectNodesToElems.tcl I made a new function for Hypermesh to export entity by rightclick on model browser MenuExportDeck.zip Open Hypermesh, from menu File>Run>Tcl/Tk Script , browse to Installer.tcl in folder MenuExportDeck to install it in hmcustom.tcl Related post: I made a new function for Hypermesh to copy mesh among sessions hmcp.zip <updated for HM2017> + <update installer.tcl to install in any folder> Please announce me if any error.  "Extract here" package hmcp.zip, copy the folder "hmcp" to anywhere you want to store.  Open hypermesh and run Installer.tcl file by enter menu File>Run >Tcl/Tk Script  start Hypermesh, it should shows an icon and provide some information like below:  You can copy elements selected in any current panel:  Once again, this topic is to introduce extensions for Hypermesh. I let updated version of hmdnd (drag and drop function) here tkdnd2.6.zip <updated installer.tcl so you can install it to any folder, just open hypermesh and File>Run>Tcl/tk script to run installer.tcl> related post:  And a package to help making your own toolbars:tbopts.zip <update installer.tcl so you can install it to any folder> related post 
4 likesHi, 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 " } } }

4 likesOptiStruct can only accept one SPC and one LOAD component in a subcase, by default. In other words, multiple load collectors with e.g. different SPC's can't be referenced in the load step panel. There are two ways to apply multiple constraints and loads in a subcase. 1. Put multiple loads in one load collector, and include that one load collector in the subcase. The same method can be used in the case of multiple constraints. 2. Create load collectors for each and every load and constraint set. When you want to apply multiple loads in a subcase, a new load collector needs to be created with the LOAD card (=CardImage=Load). Then, individual load collectors can be combined using the LOAD card. The LOAD card also enables you to associate an independent weighting factor to an individual load collector. In the case of applying multiple constraints, create a new load collector with the SPCADD card (=CardImage), and follow the same procedure as in the multiple load case. Once the combined load collectors are created, they can be applied in a subcase.

4 likes

4 likes
Python
Pandurang and 3 others liked a post in a topic by tinh
You can find a lot of hm template example to summary data in folder ../altair/.../templates/summary those can summary cog, moi,... of comps or other entities if we loop through big data and use hm_getentity... to access data, use expr to calculate, or * commands, it is very slow but looping by template, it is very fast. example i have to check faceface angle of solid elems, tcl can do: foreach elemid $elemlist3d { set angle [p_calculateFaceFaceAngle $elemid] if {$angle>$criteria} {lappend failedlist $elemid} } => it's slow with plenty of solid elems now using template: set TplString { *elements(204,,,) //calculate angle... ... *if([#angle>#criteria]) *markfailed() *endif() *output() } #write it to a text file set fpt [open demo.tpl w] puts $fpt $TplString close $fpt #call template processor *usercheck demo.tpl demo.out 0 => so hm will loop through elems and calculate angle (very fast), tcl just calls template processor 
4 likesHi, it is simpler if you write a *.tcl file because tcl commands are not used directly in macro file, example file <Move2dElemsToComp.tcl> : proc ::p_Move2dElemsToComp {{CompName ^2D}} { if {![hm_entityinfo exist comps $CompName byname]} { *collectorcreateonly comps $CompName "" 11 } *createmark elems 1 "by config" tria3 quad4 tria6 quad8 if {[hm_marklength elems 1]} {*movemark elems 1 $CompName} } ::p_Move2dElemsToComp Now your macro will be: *beginmacro("Move2D") *evaltclscript("C:\Users\demo\Documents\Move2dElemsToComp.tcl",0) *endmacro

3 likesThere 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.

3 likes
HM drag and drop
Rahul Ponginan and 2 others liked a post in a topic by tinh
Hi all I made drag and drop feature for Hm https://www.youtube.com/watch?v=ZEjagCOMg0I Hoping new versions will have such feature download here: 
3 likes

3 likes
Predefined userprofile
Pandurang and 2 others liked a post in a topic by llyle
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. 
3 likes
Get midside node
Pandurang and 2 others liked a post in a topic by tinh
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 {\{[09]+ [09]+ [09]+ [09]+ } $NodeList \{]] 
3 likesHi 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.

3 likesDon't do that, Use hm_latestentityid to return created set id It could not be max id if includes are there (from version 13)

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 nonlinear quasistatic (NLSTAT) and got slightly larger Y displacement (0.21 vs 0.19). Ensaio_Olhais_edit.h3d

3 likes

3 likes

3 likes
Setting a Default Value
llyle and 2 others liked a post in a topic by vipin
Hi @Bachelor22 add default value after the string set youngs_modulus [hm_getfloat "Youngs Modulus (Steel)=" "Enter Youngs Modulus:" 210000] 
3 likesHi If you don't find an "hm_" command to get these vertices: *features_advanced (as vipin suggestion) *createmark elems 1 "by comp name" ^feature set NodeList [join [hm_getvalue elems mark=1 dataname=nodes]] array set Count {} set Vertices {} foreach NodeId $NodeList { if {[incr Count($NodeId)]>2} {lappend Vertices $NodeId} } puts $Vertices Before version 13 we don't have command "hm_getvalue", so looping through each element by tcl and get its nodes is quite long. at that time, to query such data i had to use an hm template to fasten script.

3 likesJust another way to handle this.... *createmarkpanel nodes 1 "Select nodes to which the attached elements have to be determined" eval "*createmark elems 1 \"by nodes\" [hm_getmark nodes 1]" eval "*createmark nodes 2 \"by elems\" [hm_getmark elems 1]" *marknotintersection nodes 1 nodes 2 eval "*createmark elems 2 \"by nodes\" [hm_getmark nodes 1]" *markdifference elems 1 elems 2 set attached_elem_list [hm_getmark elems 1]

3 likesHi, If only one integration point through thickness is used, a membrane only behavior will be obtained. In case of an elastic behavior, one gets the exact solution from three integration points – that is to say that the bending moments are exactly integrated through the thickness of the shell. In case of a plastic behavior, the bending moments are not integrated exactly. Using more integration points, the solution becomes more accurate; so it is recommended to use five integration points. It also controls hourglassing. Hourglass modes are element distortions that have zero strain energy. Hourglassing may easily lead to excessive distortions To control hourglass assign Ishell24 and N5 for shell elements. And for solids use Isolid14. For explicit structural analysis Ishell=24 formulation (QEPH shells) is recommended, due to balanced accuracy vs. speed. QEPH shells are more accurate for elastic or elastoplastic loads, whatever the loading type  quasistatic or dynamic. Fully integrated 12 QBAT shells eliminate hourglassing, but are slower to compute. Try with different settings to study the hourglassing effect by postprocessing the hourglass energy in HG.

3 likes

3 likesYou can use hm_getelemcheckelems command. Example: hm_createmark elems 1 "by config" 104; set fail [hm_getelemcheckelems 1 2 length below 1.0]; hm_createmark elems 1 $fail; *deletemark elems 1; Thanks, Imoto

3 likes
Splitting CAD file
llyle and 2 others liked a post in a topic by Imoto
Hi Vipin You can use "by block" option in *createmark. Here is sample code. set blockname [::hwat::utils::GetUniqueName block "Dummy"]; *createsimpleblock $blockname 11 100000 100000 0.5 100000 100000 100000; *createmark surfs 1 "by block name" $blockname; *numbersmark surfaces 1 1; *createmark blocks 1 "by name only" $blockname; *deletemark blocks 1; Thanks, Imoto 
3 likes

3 likes
TCL script
Rahul R and 2 others liked a post in a topic by Novak
Hello Everyone Firstly thanks a lot Livil for all the help. Really grateful for it. Secondly, here is the file which Livil wrote, in case any one needs it in future. merged.tcl 
3 likes
2D Mesh  Multibodies
tinh and 2 others liked a post in a topic by Q.NguyenDai
work with only 1/4 Split surface of 2nd by 1st Make 2D mesh on 1st solid (yellow) => Make 3D tet mesh for 1st solid On interface, make 2D mesh on 2nd solid => Equivalence of nodes. Make the rest of 2D mesh of 2nd solid & equivalent of nodes: Finally fill 3D tet for 2nd solid and get the final result: Here's HM model: peca.hm HTH, 
3 likes
LUA Scripting with FEKO
hans.kalaran and 2 others liked a post in a topic by andries
Hello @mustaphos, @JIF beat me to it...! Of course, this is the "more correct" way to learn how to do scripting and automation. The shortcut way to get started with scripting (in CADFEKO) is to use "Macro recording". You'll see in the status bar (in the bottom of the application) a button with a puzzle piece and a red circle. If you press this, then CADFEKO will record every action you take that changes the model. In other words, if you start recording and create / modify / delete a variable, then a script will be recorded that shows you how to do precisely that one bit of scripting. It's cheating but I won't tell anyone. 
3 likes

3 likesFree eBook: Design the Inspire Way – A Practical Introduction to solidThinking Inspire click on the title here This book is a very lightweight 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 ...

3 likesThe equation of motion for a static analysis is as below: [K] {X} = {F}  (1) [K] > Global Stiffness Matrix {X} > Unknown Displacement {F} > External Force Applied. For the body to be in static equilibrium, the net force acting at every node must be zero. Therefore, the basic statement of static equilibrium is that the internal forces, I, and the external forces, F, must balance each other: [K] {X} is nothing but internal force 'I' Equation (1) now becomes, ==> I = F or I  F = 0 (2) In Dynamic Analysis, the imbalance between the external and internal forces results in an acceleration: F  I = M a. F > External Forces I > Internal Force M*a > Inertial Forces (mass times acceleration) In linear static analysis the stiffness matrix is constant and shall not change/update throughout the analysis. There are many check need to be performed once you have linear static results for well conditioned problems. The equation (1) is decomposed one time to find the unknown displacement. [K] {X} ={F} After decomposition, a singularity may lead to an incorrect solution. In static analysis to obtain {X} (displacements). Using these displacements, One can calculate a “residual” loading vector as follows: [K] {X} {F} =δ F This residual vector should theoretically be null (equation 2) but may not be null due to numeric roundoff. In Nonlinear static analysis, The stiffness matrix changes in each and every iteration since the stiffness matrix is dependent on the external load. The external load in Nonlinear static analysis is applied in increments and time here has no physical meaning. Time is just a convenient way to apply full load in nonlinear static analysis. In Optistruct the incremental load is controlled by 'NINC' field in the NLPARM card for NLSTAT load steps, this is a fixed load increment method. If you add the PARAM,EXPERTNL,YES to the deck, the time increment method becomes automatic in which case, the increment (load) is increased or cut back based on the convergence rate. NLGEOM loadstep has automatic time step by default. In NLGEOM loadstep the RAMP load curve can be defined using TABLED1 card and then refer this in NLOAD1 card. In nonlinear static analysis, OptiStruct uses the NewtonRaphson method to obtain solutions for nonlinear problems to maintain the residuals close to zero (equation 2) In a nonlinear analysis the solution usually cannot be calculated by solving a single system of equations, as would be done in a linear problem. Instead, the solution is found by applying the specified loads gradually and incrementally working toward the final solution. Therefore, OptiStruct breaks the simulation into a number of load increments (NINC) and finds the approximate equilibrium configuration at the end of each load increment. It is important that you clearly understand the difference between an analysis step (NLSTAT / NLGEOM), a load increment (NINC of NLPARM card), and an iteration (MAXITER of NLPARM card) The load history for a simulation consists of one or more steps. Within a step you will have many no of increments (NINC), within increment there can be many no. of iteration (MAXITER). OptiStruct checks the equilibrium equation ( equation 2) for each and every iteration. If the solution from an iteration is not converged, OptiStruct performs another iteration to try to bring the internal and external forces into balance. An increment is part of a step. An iteration is an attempt at finding an equilibrium solution in an increment when solving with an implicit method. If the model is not in equilibrium at the end of the iteration, OptiStruct tries another iteration. With every iteration the solution OptiStruct obtains should be closer to equilibrium; sometimes OptiStruct may need many iterations to obtain an equilibrium solution. When an equilibrium solution has been obtained, the increment is complete.

3 likes
Finding a closed loop free edges
Merula and 2 others liked a post in a topic by tinh
Yes, there is not direct but simple way It is like this *createmarkpanel elems 1 "Select elements:" hm_blockerrormessages 1 catch {*findloops elems 1 0} hm_blockerrormessages 0 if {[hm_entityinfo exist comps ^loops]} { #if you use hm14 or newers: *createmark elems 1 "by comp name" ^loops set FreeEdgeLoops [hm_findconnectedpatches elems 1] #if you use hm13 or olders: upgrade => version14 #just joke! try isolate only component ^loops, and gather its elems "by attached" } 
3 likes
Ls dyna Modal
Sandeep P and 2 others liked a post in a topic by KevinEldridge
Two control cards are needed to run modal simulation in LSDyna: *CONTROL_IMPLICIT_GENERAL with IMFLAG=1 (tells Dyna it's an implicit simulation); and *CONTROL_IMPLICIT_EIGENVALUE with NEIG set to the number of modes you want extracted. 
3 likes
What is ptype and htype mesh?
tinh and 2 others liked a post in a topic by Rahul R
PFA screenshot from Practical finite element analysis book. 
3 likesThe settings file information is only a message, there is no need to do anything. The rest of the messages and errors are because HyperStudy cannot resolve many of the paths and dependencies on the server machine. Hand editing the xml is error prone and not recommended. On your local machine, please create an archive (File>Export Archive). This will create an *hstx archive file. This is an allinpackage, similar to a zip file. This package contains all the file dependencies internally and will automatically expand into proper paths on a different machine. The archive system is the proper way to maintain portability across machines. The archive file can be directly submitted to the hstbatch executable, please see the options in the help. Also, there is an error about the spreadsheet report, which requires excel to be installed. I'd guess that it is not installed on the server machine, so you should deactivate that report type.

3 likesYes surface is not a named hypermesh entity. If you tagged the surf in catia. Maybe the tag will be imported into hm as metadata. Try searching it by: set md [hm_metadata findall] puts [join [lsearch all inline glob $md "surfs $surfID *"] \n]

3 likes

3 likes

3 likes
Change tk console cursor color
jcd and 2 others liked a post in a topic by tinh
Oh, are you consuming your time to fiddle with tkconsole? change cursor color: .tkcon.tab1 configure insertbackground red 
3 likes
Templates for SAE SUPRA
Dhaval and 2 others liked a post in a topic by Deep
Please try to do this process and add your systems and add your data from data sets MotionView>Models>Assembly Wizard>Front end of Vehicle. Select your assembly and try to create your model 
3 likesHere's my test: ToanNguyen.zip

3 likesScreenshot of my script:

3 likesHi, in algebra math, with a given square matrix A, and a vector V not equal zero if you found a value "e" satisfy: A.V = e.V => then "e" call eigen value. a matrix may have some "e" values math meaning of "e" is essence of matrix A, if A has one eigen value equal 0 => rank of A is down and its determination is 0 (not invertible) also, vector V is a special vector, that do not change direction when transformed by matrix A, called eigen vector In normal mode, below problem is solved: M.x'' + K.x = 0 or M.x'' = K.x x'' proportional to x, mean: M.e.x = K.x or K.(1/M).x = e.x K.(1/M) is matrix A, so "e" is eigenvalue of A x = V.sin(wt+phi) => x'' = w².x so "e" is w² w is called eigen frequency, but not eigen value of matrix A K.(1/M)

3 likes
Error using Cbush
xrek and 2 others liked a post in a topic by tinh
Hi, You seem to define bush parameters for 3 directions but do not provide coordinate system to specify them Update CID card in CBUSH 
3 likesHi, this captures may help you figure out vertex angle: these are vertex angles: when automeshing, I set feature angle to 90D while vertex angle kept 30D, you can see inside features were neglected but outside free edges not changed, because vertex angles>30D make vertices (yellow nodes) become anchor nodes

3 likesHi I had exactly same questions when i was in university and no teacher told me answer, unfortunately my fe textboooks just say that brick has 3 dofs/node, shell 6dofs/node,... but do not explain then i have to imagine (actually similar to when i was processing of mechanical parts):  when I lathe a shaft (ROD), i have to position one end fully in a clamper (like a tube), so ROD need 6 dofs/node to be fully constrained  when I punch a sheet (SHELL), i have to position one corner with 5 dofs and one other corner 1 dof (inplane rotation), so SHELL has 5 dofs/node, remain inplane rotation dof is constrained by adjacent node, so you never let 2 shell elements connect together by only 1 node (cannot transfer moment). But some solvers may provide particular SHELL has fully 6dofs/node, like CQUADR in nastran/optistruct  when I mill a block (BRICK), i have to position 3 faces so it cannot move in 3 directions, after position 3 faces then it cannot rotation around 3 axles also because each plane (face) constrained rotation dofs. so BRICK have 3 translationdofs/node and it is enough to transfer moment put more dofs in to a fully position part (element) will make it overconstrained (too stiff) and be careful when connect 1d to 2d, 2d to 3d or 1d to 3d, you have to take into account all dofs have to be constrained

3 likes