Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
SWIFTsim
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Deploy
Releases
Model registry
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
SWIFT
SWIFTsim
Commits
82b3353b
Commit
82b3353b
authored
7 years ago
by
lhausamm
Committed by
Loic Hausammann
6 years ago
Browse files
Options
Downloads
Patches
Plain Diff
Rework logger_parameters
parent
d45fbc71
No related branches found
No related tags found
1 merge request
!502
Logger
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
src/logger.c
+56
-54
56 additions, 54 deletions
src/logger.c
src/logger.h
+17
-23
17 additions, 23 deletions
src/logger.h
src/logger_struct.h
+35
-0
35 additions, 0 deletions
src/logger_struct.h
with
108 additions
and
77 deletions
src/logger.c
+
56
−
54
View file @
82b3353b
...
@@ -40,7 +40,7 @@
...
@@ -40,7 +40,7 @@
#include
"units.h"
#include
"units.h"
#include
"engine.h"
#include
"engine.h"
char
LOGGER_VERSION
[
LOGGER_VERSION_SIZE
]
=
"0.1"
;
char
logger_version
[
logger_version_size
]
=
"0.1"
;
const
unsigned
int
logger_datatype_size
[
logger_data_count
]
=
{
const
unsigned
int
logger_datatype_size
[
logger_data_count
]
=
{
...
@@ -63,9 +63,11 @@ const unsigned int logger_datatype_size[logger_data_count] = {
...
@@ -63,9 +63,11 @@ const unsigned int logger_datatype_size[logger_data_count] = {
* @return updated buff
* @return updated buff
*/
*/
char
*
logger_write_chunk_header
(
char
*
buff
,
const
unsigned
int
*
mask
,
const
size_t
*
offset
,
const
size_t
offset_new
)
{
char
*
logger_write_chunk_header
(
char
*
buff
,
const
unsigned
int
*
mask
,
const
size_t
*
offset
,
const
size_t
offset_new
)
{
/* write mask */
memcpy
(
buff
,
mask
,
logger_mask_size
);
memcpy
(
buff
,
mask
,
logger_mask_size
);
buff
+=
logger_mask_size
;
buff
+=
logger_mask_size
;
/* write offset */
size_t
diff_offset
=
offset_new
-
*
offset
;
size_t
diff_offset
=
offset_new
-
*
offset
;
memcpy
(
buff
,
&
diff_offset
,
logger_offset_size
);
memcpy
(
buff
,
&
diff_offset
,
logger_offset_size
);
buff
+=
logger_offset_size
;
buff
+=
logger_offset_size
;
...
@@ -104,12 +106,12 @@ void logger_write_general_data(struct dump *d, struct logger_parameters *params,
...
@@ -104,12 +106,12 @@ void logger_write_general_data(struct dump *d, struct logger_parameters *params,
{
{
char
*
buff
;
char
*
buff
;
/* write name */
/* write name */
buff
=
dump_get
(
d
,
params
->
name
,
offset
);
buff
=
dump_get
(
d
,
params
->
name
_size
,
offset
);
memcpy
(
buff
,
name
,
params
->
name
);
memcpy
(
buff
,
name
,
params
->
name
_size
);
/* write data type */
/* write data type */
buff
=
dump_get
(
d
,
LOGGER_DATATYPE_SIZE
,
offset
);
buff
=
dump_get
(
d
,
params
->
data_type_size
,
offset
);
memcpy
(
buff
,
&
data_type
,
LOGGER_DATATYPE_SIZE
);
memcpy
(
buff
,
&
data_type
,
params
->
data_type_size
);
/* write value */
/* write value */
if
(
data_type
>=
logger_data_count
)
if
(
data_type
>=
logger_data_count
)
...
@@ -372,15 +374,13 @@ void logger_ensure_size(
...
@@ -372,15 +374,13 @@ void logger_ensure_size(
struct
logger
*
log
,
size_t
total_nr_parts
,
struct
logger
*
log
,
size_t
total_nr_parts
,
size_t
total_nr_gparts
,
size_t
total_nr_sparts
)
{
size_t
total_nr_gparts
,
size_t
total_nr_sparts
)
{
size_t
limit
,
i
;
size_t
limit
,
i
;
struct
logger_parameters
log_params
;
struct
logger_parameters
*
log_params
=
log
->
params
;
logger_parameters_init
(
&
log_params
);
limit
=
log_params
->
offset_size
+
log_params
->
mask_size
;
limit
=
log_params
.
offset
+
log_params
.
mask
;
for
(
i
=
0
;
i
<
log_params
->
nber_mask
;
i
++
)
{
if
(
log_params
->
masks
[
i
]
!=
logger_mask_timestamp
)
for
(
i
=
0
;
i
<
log_params
.
nber_mask
;
i
++
)
{
limit
+=
log_params
->
masks_size
[
i
];
if
(
log_params
.
masks
[
i
]
!=
logger_mask_timestamp
)
limit
+=
log_params
.
masks_size
[
i
];
}
}
limit
*=
total_nr_parts
;
limit
*=
total_nr_parts
;
...
@@ -393,8 +393,6 @@ void logger_ensure_size(
...
@@ -393,8 +393,6 @@ void logger_ensure_size(
if
(
total_nr_sparts
>
0
)
if
(
total_nr_sparts
>
0
)
error
(
"Not implemented"
);
error
(
"Not implemented"
);
logger_parameters_free
(
&
log_params
);
dump_ensure
(
log
->
dump
,
log
->
buffer_size
);
dump_ensure
(
log
->
dump
,
log
->
buffer_size
);
}
}
...
@@ -419,7 +417,11 @@ void logger_init(struct logger *log, const struct swift_params *params, const st
...
@@ -419,7 +417,11 @@ void logger_init(struct logger *log, const struct swift_params *params, const st
/* init dump */
/* init dump */
log
->
dump
=
malloc
(
sizeof
(
struct
dump
));
log
->
dump
=
malloc
(
sizeof
(
struct
dump
));
struct
dump
*
dump_file
=
log
->
dump
;
struct
dump
*
dump_file
=
log
->
dump
;
/* init parameters */
log
->
params
=
(
struct
logger_parameters
*
)
malloc
(
sizeof
(
struct
logger_parameters
));
logger_parameters_init
(
log
->
params
);
dump_init
(
dump_file
,
logger_name_file
,
log
->
buffer_size
);
dump_init
(
dump_file
,
logger_name_file
,
log
->
buffer_size
);
dump_ensure
(
dump_file
,
log
->
buffer_size
);
dump_ensure
(
dump_file
,
log
->
buffer_size
);
log
->
timestamp_offset
=
0
;
log
->
timestamp_offset
=
0
;
...
@@ -432,6 +434,7 @@ void logger_init(struct logger *log, const struct swift_params *params, const st
...
@@ -432,6 +434,7 @@ void logger_init(struct logger *log, const struct swift_params *params, const st
*/
*/
void
logger_clean
(
struct
logger
*
log
)
{
void
logger_clean
(
struct
logger
*
log
)
{
dump_close
(
log
->
dump
);
dump_close
(
log
->
dump
);
free
(
log
->
params
);
}
}
/**
/**
...
@@ -451,9 +454,8 @@ void logger_write_file_header(struct logger *log, const struct engine *e) {
...
@@ -451,9 +454,8 @@ void logger_write_file_header(struct logger *log, const struct engine *e) {
char
*
skip_header
;
char
*
skip_header
;
size_t
file_offset
;
size_t
file_offset
;
struct
logger_parameters
log_params
;
const
struct
logger_parameters
log_params
=
*
log
->
params
;
struct
dump
*
dump
=
log
->
dump
;
struct
dump
*
dump
=
log
->
dump
;
logger_parameters_init
(
&
log_params
);
file_offset
=
dump
->
file_offset
;
file_offset
=
dump
->
file_offset
;
...
@@ -463,39 +465,39 @@ void logger_write_file_header(struct logger *log, const struct engine *e) {
...
@@ -463,39 +465,39 @@ void logger_write_file_header(struct logger *log, const struct engine *e) {
logger_write_data
(
dump
,
&
file_offset
,
logger_string_size
,
&
logger_version
);
logger_write_data
(
dump
,
&
file_offset
,
logger_string_size
,
&
logger_version
);
/* write number of bytes used for the offsets */
/* write number of bytes used for the offsets */
logger_write_data
(
dump
,
&
file_offset
,
logger_number_size
,
&
log_params
.
offset
);
logger_write_data
(
dump
,
&
file_offset
,
logger_number_size
,
&
log_params
.
offset
_size
);
/* write offset direction */
/* write offset direction */
int
reversed
=
0
;
int
reversed
=
0
;
logger_write_data
(
dump
,
&
file_offset
,
logger_data_size
[
logger_data_bool
],
&
reversed
);
logger_write_data
(
dump
,
&
file_offset
,
logger_data
type
_size
[
logger_data_bool
],
&
reversed
);
/* will write the offset of the first particle here */
/* will write the offset of the first particle here */
skip_header
=
dump_get
(
dump
,
log_params
.
offset
,
&
file_offset
);
skip_header
=
dump_get
(
dump
,
log_params
.
offset
_size
,
&
file_offset
);
/* write number of bytes used for names */
/* write number of bytes used for names */
logger_write_data
(
dump
,
&
file_offset
,
LOGGER_NAME_SIZE
,
&
log_params
.
name
);
logger_write_data
(
dump
,
&
file_offset
,
logger_number_size
,
&
log_params
.
name
_size
);
/* write number of bytes used for numbers */
/* write number of bytes used for numbers */
logger_write_data
(
dump
,
&
file_offset
,
LOGGER_NBER_SIZE
,
&
log_params
.
number
);
logger_write_data
(
dump
,
&
file_offset
,
logger_number_size
,
&
log_params
.
number
_size
);
/* write number of bytes used for masks */
/* write number of bytes used for masks */
logger_write_data
(
dump
,
&
file_offset
,
LOGGER_MASK_SIZE
,
&
log_params
.
mask
);
logger_write_data
(
dump
,
&
file_offset
,
logger_number_size
,
&
log_params
.
mask
_size
);
/* write number of masks */
/* write number of masks */
logger_write_data
(
dump
,
&
file_offset
,
log_params
.
number
,
&
log_params
.
nber_mask
);
logger_write_data
(
dump
,
&
file_offset
,
log_params
.
number
_size
,
&
log_params
.
nber_mask
);
/* write masks */
/* write masks */
// loop over all mask type
// loop over all mask type
for
(
i
=
0
;
i
<
log_params
.
nber_mask
;
i
++
)
{
for
(
i
=
0
;
i
<
log_params
.
nber_mask
;
i
++
)
{
// mask name
// mask name
size_t
j
=
i
*
log_params
.
name
;
size_t
j
=
i
*
log_params
.
name
_size
;
logger_write_data
(
dump
,
&
file_offset
,
log_params
.
name
,
&
log_params
.
masks_name
[
j
]);
logger_write_data
(
dump
,
&
file_offset
,
log_params
.
name
_size
,
&
log_params
.
masks_name
[
j
]);
// mask
// mask
logger_write_data
(
dump
,
&
file_offset
,
log_params
.
mask
,
&
log_params
.
masks
[
i
]);
logger_write_data
(
dump
,
&
file_offset
,
log_params
.
mask
_size
,
&
log_params
.
masks
[
i
]);
// mask size
// mask size
logger_write_data
(
dump
,
&
file_offset
,
log_params
.
number
,
&
log_params
.
masks_size
[
i
]);
logger_write_data
(
dump
,
&
file_offset
,
log_params
.
number
_size
,
&
log_params
.
masks_size
[
i
]);
}
}
/* write mask data */
/* write mask data */
...
@@ -505,16 +507,15 @@ void logger_write_file_header(struct logger *log, const struct engine *e) {
...
@@ -505,16 +507,15 @@ void logger_write_file_header(struct logger *log, const struct engine *e) {
/* write data name (mass, id, ...) */
/* write data name (mass, id, ...) */
/* Write data */
/* Write data */
char
*
name
=
malloc
(
sizeof
(
char
)
*
log_params
.
name
);
char
*
name
=
malloc
(
sizeof
(
char
)
*
log_params
.
name
_size
);
strcpy
(
name
,
"time_base"
);
strcpy
(
name
,
"time_base"
);
logger_write_general_data
(
dump
,
&
log_params
,
&
file_offset
,
&
e
->
time_base
,
logger_write_general_data
(
dump
,
&
log_params
,
&
file_offset
,
&
e
->
time_base
,
name
,
logger_data_double
);
name
,
logger_data_double
);
/* last step: write first offset */
/* last step: write first offset */
memcpy
(
skip_header
,
&
file_offset
,
log_params
.
offset
);
memcpy
(
skip_header
,
&
file_offset
,
log_params
.
offset
_size
);
/* free memory */
/* free memory */
logger_parameters_free
(
&
log_params
);
free
(
name
);
free
(
name
);
dump_ensure
(
log
->
dump
,
log
->
buffer_size
);
dump_ensure
(
log
->
dump
,
log
->
buffer_size
);
...
@@ -527,10 +528,11 @@ void logger_write_file_header(struct logger *log, const struct engine *e) {
...
@@ -527,10 +528,11 @@ void logger_write_file_header(struct logger *log, const struct engine *e) {
* @param log_params #logger_parameters to initialize
* @param log_params #logger_parameters to initialize
*/
*/
void
logger_parameters_init
(
struct
logger_parameters
*
log_params
)
{
void
logger_parameters_init
(
struct
logger_parameters
*
log_params
)
{
log_params
->
name
=
20
;
log_params
->
name_size
=
20
;
log_params
->
offset
=
7
;
log_params
->
offset_size
=
7
;
log_params
->
mask
=
1
;
log_params
->
mask_size
=
1
;
log_params
->
number
=
1
;
log_params
->
number_size
=
1
;
log_params
->
data_type_size
=
1
;
log_params
->
nber_mask
=
8
;
log_params
->
nber_mask
=
8
;
...
@@ -550,41 +552,41 @@ void logger_parameters_init(struct logger_parameters* log_params) {
...
@@ -550,41 +552,41 @@ void logger_parameters_init(struct logger_parameters* log_params) {
log_params
->
masks
[
7
]
=
logger_mask_timestamp
;
log_params
->
masks
[
7
]
=
logger_mask_timestamp
;
// masks name
// masks name
block_size
=
log_params
->
name
*
log_params
->
nber_mask
;
block_size
=
log_params
->
name
_size
*
log_params
->
nber_mask
;
log_params
->
masks_name
=
malloc
(
block_size
);
log_params
->
masks_name
=
malloc
(
block_size
);
cur_name
=
log_params
->
masks_name
;
cur_name
=
log_params
->
masks_name
;
strcpy
(
tmp
,
"position"
);
strcpy
(
tmp
,
"position"
);
memcpy
(
cur_name
,
&
tmp
,
log_params
->
name
);
memcpy
(
cur_name
,
&
tmp
,
log_params
->
name
_size
);
cur_name
+=
log_params
->
name
;
cur_name
+=
log_params
->
name
_size
;
strcpy
(
tmp
,
"velocity"
);
strcpy
(
tmp
,
"velocity"
);
memcpy
(
cur_name
,
&
tmp
,
log_params
->
name
);
memcpy
(
cur_name
,
&
tmp
,
log_params
->
name
_size
);
cur_name
+=
log_params
->
name
;
cur_name
+=
log_params
->
name
_size
;
strcpy
(
tmp
,
"acceleration"
);
strcpy
(
tmp
,
"acceleration"
);
memcpy
(
cur_name
,
&
tmp
,
log_params
->
name
);
memcpy
(
cur_name
,
&
tmp
,
log_params
->
name
_size
);
cur_name
+=
log_params
->
name
;
cur_name
+=
log_params
->
name
_size
;
strcpy
(
tmp
,
"entropy"
);
strcpy
(
tmp
,
"entropy"
);
memcpy
(
cur_name
,
&
tmp
,
log_params
->
name
);
memcpy
(
cur_name
,
&
tmp
,
log_params
->
name
_size
);
cur_name
+=
log_params
->
name
;
cur_name
+=
log_params
->
name
_size
;
strcpy
(
tmp
,
"cutoff radius"
);
strcpy
(
tmp
,
"cutoff radius"
);
memcpy
(
cur_name
,
&
tmp
,
log_params
->
name
);
memcpy
(
cur_name
,
&
tmp
,
log_params
->
name
_size
);
cur_name
+=
log_params
->
name
;
cur_name
+=
log_params
->
name
_size
;
strcpy
(
tmp
,
"density"
);
strcpy
(
tmp
,
"density"
);
memcpy
(
cur_name
,
&
tmp
,
log_params
->
name
);
memcpy
(
cur_name
,
&
tmp
,
log_params
->
name
_size
);
cur_name
+=
log_params
->
name
;
cur_name
+=
log_params
->
name
_size
;
strcpy
(
tmp
,
"consts"
);
strcpy
(
tmp
,
"consts"
);
memcpy
(
cur_name
,
&
tmp
,
log_params
->
name
);
memcpy
(
cur_name
,
&
tmp
,
log_params
->
name
_size
);
cur_name
+=
log_params
->
name
;
cur_name
+=
log_params
->
name
_size
;
strcpy
(
tmp
,
"timestamp"
);
strcpy
(
tmp
,
"timestamp"
);
memcpy
(
cur_name
,
&
tmp
,
log_params
->
name
);
memcpy
(
cur_name
,
&
tmp
,
log_params
->
name
_size
);
cur_name
+=
log_params
->
name
;
cur_name
+=
log_params
->
name
_size
;
log_params
->
masks_size
=
malloc
(
sizeof
(
size_t
)
*
log_params
->
nber_mask
);
log_params
->
masks_size
=
malloc
(
sizeof
(
size_t
)
*
log_params
->
nber_mask
);
log_params
->
masks_size
[
0
]
=
3
*
sizeof
(
double
);
log_params
->
masks_size
[
0
]
=
3
*
sizeof
(
double
);
...
@@ -608,7 +610,7 @@ void logger_parameters_init(struct logger_parameters* log_params) {
...
@@ -608,7 +610,7 @@ void logger_parameters_init(struct logger_parameters* log_params) {
void
logger_parameters_free
(
struct
logger_parameters
*
log_params
)
{
void
logger_parameters_free
(
struct
logger_parameters
*
log_params
)
{
free
(
log_params
->
masks
);
free
(
log_params
->
masks
);
free
(
log_params
->
masks_name
);
free
(
log_params
->
masks_name
);
free
(
log_params
->
masks_size
);
free
(
log_params
->
masks_
data_
size
);
}
}
...
...
This diff is collapsed.
Click to expand it.
src/logger.h
+
17
−
23
View file @
82b3353b
...
@@ -69,6 +69,11 @@ struct dump;
...
@@ -69,6 +69,11 @@ struct dump;
* indicated that this is the first message for the given particle/timestamp.
* indicated that this is the first message for the given particle/timestamp.
*/
*/
/* header constants
* Thoses are definitions from the format and therefore should not be changed!
* Size in bytes
*/
/* Some constants. */
/* Some constants. */
#define logger_mask_x 1
#define logger_mask_x 1
#define logger_mask_v 2
#define logger_mask_v 2
...
@@ -79,30 +84,19 @@ struct dump;
...
@@ -79,30 +84,19 @@ struct dump;
#define logger_mask_consts 64
#define logger_mask_consts 64
#define logger_mask_timestamp 128
#define logger_mask_timestamp 128
#define logger_mask_size 1 /
/ size of
the
mask
/
*
size of
a
mask
*/
#define logger_
offset_size 7 // size of the offset
#define logger_
mask_size 1
/* header constants
/* size of an offset */
* Thoses are definitions from the format and therefore should not be changed!
#define logger_offset_size 7
* Size in bytes
*/
/* size of the version information */
#define logger_string_size 20 // size of the version message
#define logger_version_size 20
#define logger_number_size 2 // size of the labels size information
/* size of the size information */
extern
char
logger_version
[
logger_string_size
];
#define logger_header_number_size 2
extern
char
logger_version
[
logger_version_size
];
struct
logger_parameters
{
size_t
name
;
// labels size
size_t
offset
;
// offset size
size_t
mask
;
// mask size
size_t
number
;
// number size
size_t
nber_mask
;
// number of different masks
size_t
*
masks
;
// value of each masks (e.g. logger_mask_...)
size_t
*
masks_size
;
// size of each mask
char
*
masks_name
;
// label of each mask
char
*
masks_type
;
// type of data (e.g. 'CHAR', 'INT', 'FLOAT')
};
enum
logger_datatype
{
enum
logger_datatype
{
logger_data_int
,
logger_data_int
,
...
...
This diff is collapsed.
Click to expand it.
src/logger_struct.h
+
35
−
0
View file @
82b3353b
...
@@ -24,6 +24,38 @@
...
@@ -24,6 +24,38 @@
#define LOGGER_STRING_LENGTH 200
#define LOGGER_STRING_LENGTH 200
#include
"dump.h"
#include
"dump.h"
/* parameters of the logger */
struct
logger_parameters
{
/* size of a label in bytes */
size_t
label_size
;
/* size of an offset in bytes */
size_t
offset_size
;
/* size of a mask in bytes */
size_t
mask_size
;
/* size of a number in bytes */
size_t
number_size
;
/* size of a data type in bytes */
size_t
data_type_size
;
/* number of different mask */
size_t
nber_mask
;
/* value of each masks */
size_t
*
masks
;
/* data size of each mask */
size_t
*
masks_data_size
;
/* label of each mask */
char
*
masks_name
;
};
/* structure containing global data */
/* structure containing global data */
struct
logger
{
struct
logger
{
/* Number of particle steps between dumping a chunk of data */
/* Number of particle steps between dumping a chunk of data */
...
@@ -41,6 +73,9 @@ struct logger {
...
@@ -41,6 +73,9 @@ struct logger {
/* size of the buffer */
/* size of the buffer */
size_t
buffer_size
;
size_t
buffer_size
;
/* logger parameters */
struct
logger_parameters
*
params
;
}
SWIFT_STRUCT_ALIGN
;
}
SWIFT_STRUCT_ALIGN
;
/* required structure for each particle type */
/* required structure for each particle type */
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment