In the last days I've been thinking about some ideas of improvements that could be done, in my opinion, that would improve the flexibility of the code in general.
Could be possible to use different time steps / Error tolerance / MaxIterations according to a certain data set provided?
In my case if I want to plot some data about the elements/nodes in a file I do it through python but I think that could be useful to have a general feature to plot data in a file.
Thank you,
@pooyan-dadvand correct me if I am wrong, but the idea of the logger is to unify the output and be able to not just "print" an output on the terminal, but files too
@AlejandroCornejo for printing stuff from elements you could use the PointOutputProcess in the core
It supports elements but I am currently extending it to also work with nodes
Thank you @philbucher , I'll take a look.
@AlejandroCornejo were u reffering to the gid_io?
@loumalouomega , I think you are right. The Logger can Add additional outputs (file, for example) but apparently you can't switch. Is this right, @pooyan-dadvand @roigcarlo ?
Could we have coexisting Loggers? Like one Logger for console, another one for a file, then choose one or the other depending on the type of information we are printing. Like
KRATOS_INFO(ChosenLogger, Label)<<"whatever"<<endl;
where ChosenLogger can be an integer, a string, ... I don't know.
Another possibility is to switch between outputs: now the Logger prints to console and file1, now the Logger prints to file2, now back to console and file1. Kind of unconfortable.
Logger is designed for output messages and may become an efficiency bottleneck if used for saving many data. For the output in file we had the sensor object long ago which can be ported to C++ for such problems.
Regarding the logger outputs, as @maceligueta mentions you can have different outputs and filter what you show in each of them. For example having a console output (which is the default output) which filters for info and warning messages and some solver_info file which filters messages related to the convergence and iteration numbers of the solver base on the labels of the messages.
+1 for the suggested solver info
Is this solved?
This is related with https://github.com/KratosMultiphysics/Kratos/issues/2165
@AlejandroCornejo After what we said this morning, should we create any utility to generate output files for generating graphics?
I think that could be an interesting feature to plot, especially, gauss points variables because GiD performs an interpolation to the nodes and the values are modified because of that...
In my App I've implemented some methods to print info using the .json to ask the nodes/elements to be printed so we can follow his line or you can suggest a better way.
The question is which app use to plot. There are many options
I found this frikada:
Why do we need to plot the data? Why not just write the output file, and leave the plotting to an external tool or script (e.g. gnuplot, Excel, matplotlib)
Sure, we can use csv, which is a standard
yeah @marandra, my original idea was to develop a tool for printing the data in a txt o whatever and then manage this info with excel, gnu...
I think we still have not solved this
If we wan to create a csv file I would go for porting the Censor class from python to C++
is this still active?
In addition I'd suggest to think about an strategy/scheme that could behave as Static or dynamic according to TIME or any other variable. (imagine strating as static to apply BC asnd the dynamic to perform the rest of the calculation)
The scheme is responsible of that in principle
The @KratosMultiphysics/implementation-committee thinks that the need for an standarized to generate raw data files in a convenient way is there. So it is important to study how to extend the current Logger to support such basic function. @AlejandroCornejo will study the issue and propose a design.
Just thinking load:
DataCollector class with some derived classes for getting data from solvers, mesh, etc.LoggerOutput is in charge of writing it (or not). But in this case, DataCollector would select the data to be taken that can be used for writing or postprocessing (i.e. changing timestep due to some maximum value)LoggerOutput and writes its collected data in the format defined by that output.This was basically what I was suggesting for the logger manager :)
El mar., 12 nov. 2019 12:44, Pooyan Dadvand notifications@github.com
escribió:
Just thinking load:
- I think we should go for a new DataCollector class with some
derived classes for getting data from solvers, mesh, etc.- The difference between this one and the 'Logger' would be the fact
that for Logger each object pushes the info, and LoggerOutput is in
charge of writing it (or not). But in this case, DataCollector would
select the data to be taken that can be used for writing or postprocessing
(i.e. changing timestep due to some maximum value)- We may have a proper method of DataCollector which takes a
LoggerOutput and writes its collected data in the format defined by
that output.—
You are receiving this because you modified the open/close state.
Reply to this email directly, view it on GitHub
https://github.com/KratosMultiphysics/Kratos/issues/1926?email_source=notifications&email_token=AEYQZAAZWQMZHO5KWX3SZ4TQTKJIJA5CNFSM4E36MQUKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEDZ7NNY#issuecomment-552859319,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AEYQZACSA5NT6UYIRK4M2RTQTKJIJANCNFSM4E36MQUA
.
Most helpful comment
Why do we need to plot the data? Why not just write the output file, and leave the plotting to an external tool or script (e.g. gnuplot, Excel, matplotlib)