YetAnotherCoupler 3.2.0_a
Loading...
Searching...
No Matches
field_data_set.c
Go to the documentation of this file.
1// Copyright (c) 2024 The YAC Authors
2//
3// SPDX-License-Identifier: BSD-3-Clause
4
5#include <string.h>
6
7#include "ppm/core.h"
8#include "field_data_set.h"
9
15
16struct yac_field_data_set *
18 struct yac_field_data * cell_field_data,
19 struct yac_field_data * vertex_field_data,
20 struct yac_field_data * edge_field_data) {
21
22 struct yac_field_data_set * field_data_set =
23 xmalloc(1 * sizeof(*field_data_set));
24
25 field_data_set->cell = cell_field_data;
26 field_data_set->vertex = vertex_field_data;
27 field_data_set->edge = edge_field_data;
28
29 return field_data_set;
30}
31
40
42 struct yac_field_data_set * field_data_set, enum yac_location location) {
43
45 (location == YAC_LOC_CELL) ||
46 (location == YAC_LOC_CORNER) ||
47 (location == YAC_LOC_EDGE),
48 "ERROR(yac_field_data_set_get_field_data): invalid location")
49
50 switch (location) {
51 default:
52 case (YAC_LOC_CELL): return field_data_set->cell;
53 case (YAC_LOC_CORNER): return field_data_set->vertex;
54 case (YAC_LOC_EDGE): return field_data_set->edge;
55 };
56}
57
59 struct yac_field_data_set * field_data_set,
60 enum yac_location location, int const * mask,
61 char const * mask_name) {
62
63 return
66 field_data_set, location), mask, mask_name);
67}
68
70 struct yac_field_data_set * field_data_set,
71 enum yac_location location, int const * mask,
72 size_t count, char const * mask_name) {
73
74 int * mask_cpy = xmalloc(count * sizeof(*mask_cpy));
75 memcpy(mask_cpy, mask, count * sizeof(*mask));
76
77 char * mask_name_cpy =
78 (mask_name != NULL)?strdup(mask_name):NULL;
79
80 return
82 field_data_set, location, mask_cpy,
83 mask_name_cpy);
84}
85
95
97 struct yac_field_data_set * field_data_set,
99 size_t count) {
100
101 yac_coordinate_pointer coordinates_cpy =
102 xmalloc(count * sizeof(*coordinates_cpy));
103 memcpy(coordinates_cpy, coordinates, count * sizeof(*coordinates));
104
105 return
107 field_data_set, location, coordinates_cpy);
108}
109
110void yac_field_data_set_delete(struct yac_field_data_set * field_data_set) {
111 yac_field_data_delete(field_data_set->cell);
112 yac_field_data_delete(field_data_set->vertex);
113 yac_field_data_delete(field_data_set->edge);
114 free(field_data_set);
115}
void yac_field_data_delete(struct yac_field_data *field_data)
Definition field_data.c:119
size_t yac_field_data_add_mask_nocpy(struct yac_field_data *field_data, int const *mask, char const *mask_name)
Definition field_data.c:30
struct yac_field_data * yac_field_data_empty_new()
Definition field_data.c:20
size_t yac_field_data_add_coordinates_nocpy(struct yac_field_data *field_data, yac_coordinate_pointer coordinates)
Definition field_data.c:44
struct yac_field_data_set * yac_field_data_set_new(struct yac_field_data *cell_field_data, struct yac_field_data *vertex_field_data, struct yac_field_data *edge_field_data)
void yac_field_data_set_delete(struct yac_field_data_set *field_data_set)
size_t yac_field_data_set_add_mask_nocpy(struct yac_field_data_set *field_data_set, enum yac_location location, int const *mask, char const *mask_name)
struct yac_field_data * yac_field_data_set_get_field_data(struct yac_field_data_set *field_data_set, enum yac_location location)
size_t yac_field_data_set_add_mask(struct yac_field_data_set *field_data_set, enum yac_location location, int const *mask, size_t count, char const *mask_name)
struct yac_field_data_set * yac_field_data_set_empty_new()
size_t yac_field_data_set_add_coordinates(struct yac_field_data_set *field_data_set, enum yac_location location, yac_coordinate_pointer coordinates, size_t count)
size_t yac_field_data_set_add_coordinates_nocpy(struct yac_field_data_set *field_data_set, enum yac_location location, yac_coordinate_pointer coordinates)
yac_location
Definition location.h:12
@ YAC_LOC_CORNER
Definition location.h:15
@ YAC_LOC_EDGE
Definition location.h:16
@ YAC_LOC_CELL
Definition location.h:14
#define xmalloc(size)
Definition ppm_xfuncs.h:66
struct yac_field_data * cell
struct yac_field_data * edge
struct yac_field_data * vertex
yac_coordinate_pointer * coordinates
Definition field_data.c:16
#define YAC_ASSERT(exp, msg)
Definition yac_assert.h:15
double(* yac_coordinate_pointer)[3]
Definition yac_types.h:19