[petsc-users] how to get full trajectory from TS into petsc binary
Ed Bueler
elbueler at alaska.edu
Tue Mar 1 01:26:04 CST 2016
Barry --
I am reading the resulting file successfully using
import struct
import sys
f = open('timesteps','r')
while True:
try:
bytes = f.read(8)
except:
print "f.read() failed"
sys.exit(1)
if len(bytes) > 0:
print struct.unpack('>d',bytes)[0]
else:
break
f.close()
However, was there a more elegant intended method? I am disturbed by the
apparent need to specify big-endian-ness (= '>d') in the struct.unpack()
call.
Ed
On Mon, Feb 29, 2016 at 9:39 PM, Ed Bueler <elbueler at alaska.edu> wrote:
> Barry --
>
> Will try it.
>
> > ... since, presumably, other more powerful IO tools exist that would be
> used for "real" problems?
>
> I know there are tools for snapshotting from PETSc, e.g. VecView to .vtk.
> In fact petsc binary seems fairly convenient for that. On the other hand,
> I am not sure I've ever done anything "real". ;-)
>
> Anyone out there: Are there a good *convenient* tools for saving
> space/time-series (= movies) from PETSc TS? I want to add frames and
> movies from PETSc into slides, etc. I can think of NetCDF but it seems
> not-very-convenient, and I am worried not well-supported from PETSc. Is
> setting up TS with events (=TSSetEventMonitor()) and writing separate
> snapshot files the preferred scalable usage, despite the extra effort
> compared to "-ts_monitor_solution binary:foo.dat"?
>
> Ed
>
>
> On Mon, Feb 29, 2016 at 8:53 PM, Barry Smith <bsmith at mcs.anl.gov> wrote:
>
>>
>> Ed,
>>
>> I have added a branch barry/feature-ts-monitor-binary that supports
>> -ts_monitor binary:timesteps that will store in simple binary format each
>> of the time steps associated with each solution. This in conjugation with
>> -ts_monitor_solution binary:solutions will give you two files you can read
>> in. But note that timesteps is a simple binary file of double precision
>> numbers you should read in directly in python, you cannot use
>> PetscBinaryIO.py which is what you will use to read in the solutions file.
>>
>> Barry
>>
>> Currently PETSc has a binary file format where we can save Vec, Mat, IS,
>> each is marked with a type id for PetscBinaryIO.py to detect, we do not
>> have type ids for simple double precision numbers or arrays of numbers.
>> This is why I have no way of saving the time steps in a way that
>> PetscBinaryIO.py could read them in currently. I don't know how far we want
>> to go in "spiffing up" the PETSc binary format to do more elaborate things
>> since, presumably, other more power IO tools exist that would be used for
>> "real" problems?
>>
>>
>> > On Feb 29, 2016, at 3:24 PM, Ed Bueler <elbueler at alaska.edu> wrote:
>> >
>> > Dear PETSc --
>> >
>> > I have a short C ode code that uses TS to solve y' = g(t,y) where
>> y(t) is a 2-dim'l vector. My code defaults to -ts_type rk so it does
>> adaptive time-stepping; thus using -ts_monitor shows times at stdout:
>> >
>> > $ ./ode -ts_monitor
>> > solving from t0 = 0.000 with initial time step dt = 0.10000 ...
>> > 0 TS dt 0.1 time 0.
>> > 1 TS dt 0.170141 time 0.1
>> > 2 TS dt 0.169917 time 0.270141
>> > 3 TS dt 0.171145 time 0.440058
>> > 4 TS dt 0.173931 time 0.611203
>> > 5 TS dt 0.178719 time 0.785134
>> > 6 TS dt 0.0361473 time 0.963853
>> > 7 TS dt 0.188252 time 1.
>> > error at tf = 1.000 : |y-y_exact|_inf = 0.000144484
>> >
>> > I want to output the trajectory in PETSc binary and plot it in python
>> using bin/PetscBinaryIO.py. Clearly I need the times shown above to do
>> that.
>> >
>> > Note "-ts_monitor_solution binary:XX" gives me a binary file with only
>> y values in it, but not the corresponding times.
>> >
>> > My question is, how to get those times in either the same binary file
>> (preferred) or separate binary files? I have tried
>> >
>> > $ ./ode -ts_monitor binary:foo.dat # invalid
>> > $ ./ode -ts_monitor_solution binary:bar.dat # no t in file
>> > $ ./ode -ts_monitor_solution binary:baz.dat -ts_save_trajectory # no
>> t in file
>> >
>> > without success. (I am not sure what the boolean option
>> -ts_save_trajectory does, by the way.)
>> >
>> > Thanks!
>> >
>> > Ed
>> >
>> > PS Sorry if this is a "RTFM" question, but so far I can't find the
>> documentation.
>> >
>> >
>> > --
>> > Ed Bueler
>> > Dept of Math and Stat and Geophysical Institute
>> > University of Alaska Fairbanks
>> > Fairbanks, AK 99775-6660
>> > 301C Chapman and 410D Elvey
>> > 907 474-7693 and 907 474-7199 (fax 907 474-5394)
>>
>>
>
>
> --
> Ed Bueler
> Dept of Math and Stat and Geophysical Institute
> University of Alaska Fairbanks
> Fairbanks, AK 99775-6660
> 301C Chapman and 410D Elvey
> 907 474-7693 and 907 474-7199 (fax 907 474-5394)
>
--
Ed Bueler
Dept of Math and Stat and Geophysical Institute
University of Alaska Fairbanks
Fairbanks, AK 99775-6660
301C Chapman and 410D Elvey
907 474-7693 and 907 474-7199 (fax 907 474-5394)
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20160229/1ee96ee3/attachment-0001.html>
More information about the petsc-users
mailing list