@@ -8,6 +8,8 @@ namespace eval Kratos {
88
99 variable must_write_calc_data
1010 variable must_exist_calc_data
11+
12+ variable tmp_init_mesh_time
1113}
1214
1315# Hard minimum GiD Version is 14
@@ -80,6 +82,7 @@ proc Kratos::RegisterGiDEvents { } {
8082
8183 # Preferences window
8284 GiD_RegisterPluginPreferencesProc Kratos::Event_ModifyPreferencesWindow
85+ CreateWidgetsFromXml::ClearCachePreferences
8386}
8487
8588proc Kratos::Event_InitProblemtype { dir } {
@@ -140,6 +143,14 @@ proc Kratos::InitGlobalVariables {dir} {
140143 set kratos_private(echo_level) 0
141144 # indent in mdpa files | 0 ASCII unindented | 1 ASCII indented pretty
142145 set kratos_private(mdpa_format) 1
146+ # Version of the kratos executable
147+ set kratos_private(exec_version) " dev"
148+ # Allow logs -> 0 No | 1 Only local | 2 Share with dev team
149+ set Kratos::kratos_private(allow_logs) 1
150+ # git hash of the problemtype
151+ set Kratos::kratos_private(problemtype_git_hash) 0
152+ # Place were the logs will be placed
153+ set Kratos::kratos_private(model_log_folder) " "
143154
144155 # Variable to store the Kratos menu items
145156 set kratos_private(MenuItems) [dict create]
@@ -190,6 +201,10 @@ proc Kratos::LoadCommonScripts { } {
190201}
191202
192203proc Kratos::Event_LoadModelSPD { filespd } {
204+ after 1 [list Kratos::LoadModelSPD $filespd ]
205+ }
206+
207+ proc Kratos::LoadModelSPD { filespd } {
193208 variable kratos_private
194209
195210 # Event called if a model exists, so close all the windows while tree isn't loaded
@@ -214,6 +229,8 @@ proc Kratos::Event_LoadModelSPD { filespd } {
214229 set old_doc [gid_groups_conds::open_XML_file_gzip $filespd ]
215230 set old_root [$old_doc documentElement]
216231 set old_versionData [$old_root @version]
232+ set version_data [dict create model_version $old_versionData ]
233+ Kratos::Log " Load model -> [ write::tcl2json $version_data ] "
217234
218235 # Compare the version number
219236 if { [package vcompare $versionPT $old_versionData ] != 0 } {
@@ -244,15 +261,23 @@ proc Kratos::Event_LoadModelSPD { filespd } {
244261
245262 # Open the tree
246263 spdAux::OpenTree
264+
265+ after 500 {set ::Kratos::kratos_private(model_log_folder) [file join [GiD_Info Project ModelName].gid Logs]}
247266 }
267+
248268}
249269
250270proc Kratos::Event_EndProblemtype { } {
271+ Kratos::Log " End session"
251272 # New event system need an unregister
252273 if {[GidUtils::VersionCmp " 14.1.4d" ] >= 0 } {
253274 GiD_UnRegisterEvents PROBLEMTYPE Kratos
275+ GiD_UnRegisterPluginPreferencesProc Kratos::Event_ModifyPreferencesWindow
254276 }
255277 if {[array exists ::Kratos::kratos_private]} {
278+ # Close the log and moves them to the folder
279+ Kratos::FlushLog
280+
256281 # Restore GiD variables that were modified by kratos and must be restored (maybe mesher)
257282 Kratos::RestoreVariables
258283
@@ -359,8 +384,10 @@ proc Kratos::TransformProblemtype {old_dom old_filespd} {
359384
360385proc Kratos::Event_BeforeMeshGeneration {elementsize} {
361386 # Prepare things before meshing
362-
363-
387+ variable tmp_init_mesh_time
388+ set inittime [clock seconds]
389+ set tmp_init_mesh_time $inittime
390+ Kratos::Log " Mesh BeforeMeshGeneration start"
364391 GiD_Process Mescape Meshing MeshCriteria NoMesh Lines 1:end escape escape escape
365392 GiD_Process Mescape Meshing MeshCriteria NoMesh Surfaces 1:end escape escape escape
366393 GiD_Process Mescape Meshing MeshCriteria NoMesh Volumes 1:end escape escape escape
@@ -373,6 +400,9 @@ proc Kratos::Event_BeforeMeshGeneration {elementsize} {
373400 }
374401 # Maybe the current application needs to do some extra job
375402 set ret [apps::ExecuteOnCurrentApp BeforeMeshGeneration $elementsize ]
403+ set endtime [clock seconds]
404+ set ttime [expr {$endtime -$inittime }]
405+ Kratos::Log " Mesh BeforeMeshGeneration end in [ Duration $ttime ] "
376406 return $ret
377407}
378408
@@ -382,8 +412,14 @@ proc Kratos::Event_MeshProgress { total_percent partial_percents_0 partial_perce
382412}
383413
384414proc Kratos::Event_AfterMeshGeneration {fail} {
415+ variable tmp_init_mesh_time
385416 # Maybe the current application needs to do some extra job
386417 apps::ExecuteOnCurrentApp AfterMeshGeneration $fail
418+ set endtime [clock seconds]
419+ set ttime [expr {$endtime -$tmp_init_mesh_time }]
420+ Kratos::Log " Mesh end process in [ Duration $ttime ] "
421+ set mesh_data [Kratos::GetMeshBasicData]
422+ Kratos::Log " Mesh data -> [ write::tcl2json $mesh_data ] "
387423}
388424
389425proc Kratos::Event_AfterRenameGroup { oldname newname } {
@@ -484,8 +520,14 @@ proc Kratos::Event_SaveModelSPD { filespd } {
484520
485521 # Let the current app implement it's Save event
486522 apps::ExecuteOnCurrentApp AfterSaveModel $filespd
523+
524+ # Log it
525+ set Kratos::kratos_private(model_log_folder) [file join [GiD_Info Project ModelName].gid Logs]
526+ Kratos::Log " Save model [ file tail $filespd ] "
527+
487528}
488529
530+
489531proc Kratos::Event_ChangedLanguage { newlan } {
490532 Kratos::UpdateMenus
491533}
0 commit comments