source: CPL/oasis3-mct/branches/OASIS3-MCT_5.0_branch/pyoasis/examples/1-serial/C/receiver.c @ 6331

Last change on this file since 6331 was 6331, checked in by aclsce, 17 months ago

Moved oasis-mct_5.0 in oasis3-mct/branches directory.

File size: 1.9 KB
Line 
1#include <stdio.h>
2#include <math.h>
3#include "oasis_c.h"
4
5int main(int argc, char *argv[])
6{
7  char *comp_name = "receiver";
8  fprintf(stdout,"Component name: %s\n", comp_name);
9  fflush(stdout);
10
11  int comp_id;
12
13  OASIS_CHECK_ERR(oasis_c_init_comp(&comp_id, comp_name, OASIS_COUPLED));
14  fprintf(stdout, "Receiver: Component ID: %d\n", comp_id);
15  fflush(stdout);
16
17  const int n_points = 1600;
18  int part_params[OASIS_Serial_Params];
19  part_params[OASIS_Strategy] = OASIS_Serial;
20  part_params[OASIS_Length] = n_points;
21  int part_id;
22
23  OASIS_CHECK_ERR(oasis_c_def_partition(&part_id, OASIS_Serial_Params,
24                                        part_params, OASIS_No_Gsize,
25                                        OASIS_No_Name));
26  fprintf(stdout, "Receiver: part_id: %d\n", part_id);
27  fflush(stdout);
28
29  char *var_name  = "FRECVATM";
30  fprintf(stdout, "Receiver: var_name %s\n", var_name);
31  int bundle_size = 1;
32  int var_id;
33
34  OASIS_CHECK_ERR(oasis_c_def_var(&var_id, var_name, part_id, bundle_size, OASIS_IN, OASIS_REAL));
35  fprintf(stdout, "Receiver: var_id %d\n", var_id);
36  fflush(stdout);
37
38  OASIS_CHECK_ERR(oasis_c_enddef());
39
40  float field[n_points];
41  int i;
42  for (i = 0; i<n_points; i++) {
43    field[i] = 0.;
44  }
45  int date = 0;
46
47  int kinfo;
48  OASIS_CHECK_ERR(oasis_c_get(var_id, date, n_points, 1, bundle_size, OASIS_REAL, OASIS_COL_MAJOR, field, &kinfo));
49  fprintf(stdout, "Receiver: oasis_c_get returned kinfo = %d\n", kinfo);
50  fflush(stdout);
51
52  OASIS_CHECK_ERR(oasis_c_terminate());
53
54  float epsilon = 1.e-8;
55  float error = 0.;
56
57  for (i = 0; i<n_points; i++) {
58    error += fabs(field[i] - (float) i);
59  }
60  if (error < epsilon) {
61    fprintf(stdout, "Receiver: Data received successfully\n");
62    fflush(stdout);
63  } else {
64    fprintf(stdout, "Receiver: Got first ten elements\n");
65    for ( i = 0; i<10 ; i++ ) {
66      fprintf(stdout, "Element %d contains %f instead of %f\n", i, field[i], (float) i);
67    }
68    fflush(stdout);
69  }
70
71}
Note: See TracBrowser for help on using the repository browser.