File: ggcm_mhd_gse.C

package info (click to toggle)
paraview 4.0.1-1~bpo70%2B1
  • links: PTS, VCS
  • area: main
  • in suites: wheezy-backports
  • size: 526,572 kB
  • sloc: cpp: 2,284,430; ansic: 816,374; python: 239,936; xml: 70,162; tcl: 48,295; fortran: 39,116; yacc: 5,466; java: 3,518; perl: 3,107; lex: 1,620; sh: 1,555; makefile: 932; asm: 471; pascal: 228
file content (57 lines) | stat: -rw-r--r-- 1,817 bytes parent folder | download | duplicates (6)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
#include "libggcm.h"

#include <string.h>
#include <stdlib.h>

/** converts to GSE 'in place': from a flattened 3d array.  Returns a
 * dynamically allocated array of size nx*ny*nz */
float *ggcm_mhd_gse_inplace(float * const data, int nx, int ny, int nz)
{
    float *ret = (float*) malloc(sizeof(float)*(nx*ny*nz));
    float *cur_gse;
    float *cur_old;
    int x,y,z;

    cur_gse = ret;
    /* manual array index for: data[0][ny-1][nz-1] */
    cur_old = data + ( (ny-1)*nz + (nz-1) );
    for(x=0; x < nx; ++x) {
        for(y=(ny-1); y >= 0; --y) {
            /* manual array index: data[x][y][nz-1] */
            cur_old = data + ( (x*ny*nz) + (y * nz) + (nz-1) );
            for(z=0; z < nz; ++z) {
                *cur_gse++ = - (*cur_old--);
            }
        }
    }
    return ret;
}

/** APPEARS to swap the x and y dimensions, negating them as it does */
void ggcm_mhd_gse(float ***fg, float ***fg_gse, int nx, int ny, int nz,
        char field_name[128])
{
    int i,j,k;
    for (i = 0; i < nx; i++) {
        for (j = 0; j < ny; j++) {
            for (k = 0; k < nz; k++) {
                fg_gse[i][j][k] = fg[nx-1-i][ny-1-j][k];
                if (!strcmp(field_name, "bx") ||
                    !strcmp(field_name, "by") ||
                    !strcmp(field_name, "vx") ||
                    !strcmp(field_name, "vy") ||
                    !strcmp(field_name, "xjx") ||
                    !strcmp(field_name, "xjy")) {
                        fg_gse[i][j][k] = -fg_gse[i][j][k];
                }
            }
        }
    }
}

/** alias for ggcm_mhd_gse */
__deprecated void ggcmMHDGSE(float ***fg, float ***fg_gse,
                             int nx, int ny, int nz,
                             char field_name[128]) {
    ggcm_mhd_gse(fg, fg_gse, nx, ny, nz, field_name);
}