Jump to content

Leaderboard


Popular Content

Showing most liked content since 04/01/13 in all areas

  1. 6 likes
    Hi all. i made some hypermesh macros in form of "toolbar" if you feel it interesting, please send me your mcid
  2. 6 likes
    Hi, 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
  3. 6 likes
    The 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 Newton-Raphson 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.
  4. 6 likes
    Dear 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. 5 likes
    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 right-click 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
  6. 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 " } } }
  7. 4 likes
    OptiStruct 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.
  8. 4 likes
  9. 4 likes
    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 face-face 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
  10. 4 likes
    Hi, 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
  11. 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.
  12. 3 likes
    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:
  13. 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]
  14. 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.
  15. 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 \{]]
  16. 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.
  17. 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)
  18. 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
  19. 3 likes
    @Curro Capi de Camas try with: 2D>elem cleanup>reduce tria elems When active, this option attempts to combine trias into quads. If you also enable elems failing QI check, the tria reduction will be tempered by the constraints on the resulting quads.
  20. 3 likes
    Check the below. *nodecleartempmark; *createmark loads 1 "by config" temperature; *findmark loads 1 1 1 nodes 0 2; set lst_TemperatureNodes [hm_getmark nodes 2]; eval *createmark nodes 1 $lst_TemperatureNodes; *createmark nodes 1 "reverse"; *nodemarkaddtempmark 1;
  21. 3 likes
    Hi @Bachelor22 add default value after the string set youngs_modulus [hm_getfloat "Youngs Modulus (Steel)=" "Enter Youngs Modulus:" 210000]
  22. 3 likes
    Hi 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.
  23. 3 likes
    Just 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]
  24. 3 likes
    Hi, 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 Ishell-24 and N-5 for shell elements. And for solids use Isolid-14. 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 elasto-plastic loads, whatever the loading type - quasi-static 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.
  25. 3 likes
    Below cmd could work: *createmark comps 1 "contains value" name apples* 1 puts [hm_getmark comps 1]
  26. 3 likes
    You 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
  27. 3 likes
    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
  28. 3 likes
    Hi Vipin example set t [hwtk::treectrl $treewnd -selectcommand "p_AtSelected %W"] proc p_AtSelected t { set items [$t select] #you may select more than 1 item so pls handle it foreach item $items { set text [$t item text $item 0] switch -- $text { button1 { ... } button2 { ... } ... ... } } }
  29. 3 likes
    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
  30. 3 likes
    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,
  31. 3 likes
    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.
  32. 3 likes
    Attached PPT contains the tests to be done to verify the Creo configuration in SimLab. SimLab_Creo_Configuration_Test.pptx
  33. 3 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 ...
  34. 3 likes
    The 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 Newton-Raphson 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.
  35. 3 likes
    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" }
  36. 3 likes
    Two control cards are needed to run modal simulation in LS-Dyna: *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.
  37. 3 likes
    PFA screenshot from Practical finite element analysis book.
  38. 3 likes
    The 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 all-in-package, 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.
  39. 3 likes
    Yes 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]
  40. 3 likes
  41. 3 likes
  42. 3 likes
    Oh, are you consuming your time to fiddle with tkconsole? change cursor color: .tkcon.tab1 configure -insertbackground red
  43. 3 likes
    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
  44. 3 likes
  45. 3 likes
  46. 3 likes
    Hi, 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)
  47. 3 likes
    Hi, You seem to define bush parameters for 3 directions but do not provide coordinate system to specify them Update CID card in CBUSH
  48. 3 likes
    Hi, 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
  49. 3 likes
    Hi 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 (in-plane rotation), so SHELL has 5 dofs/node, remain in-plane 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 translation-dofs/node and it is enough to transfer moment put more dofs in to a fully position part (element) will make it over-constrained (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
  50. 3 likes
    please locate your working directory by right click on hm icon > properties > start in field In this location delete the hmsettings.tcl, hmmenu.set and command.cmf. also hwsettings.xml
×
×
  • Create New...