File: reader_2D_3D.h

package info (click to toggle)
cmor 3.14.0-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 16,976 kB
  • sloc: ansic: 28,053; f90: 13,893; python: 12,699; sh: 3,739; makefile: 111
file content (80 lines) | stat: -rw-r--r-- 1,658 bytes parent folder | download
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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80

void read_3d_input_files(int it, char *varname, double *field, int n0, int n1, int n2)
{
  int i,j,k;
  float factor,offset,max,min;
  min=-1.e20;
  max=1.e20;
   
  if (strcmp(varname,"CLOUD")==0) {
    factor = 0.02;
    offset = -20.;
  }
  else if (strcmp(varname,"U")==0) {
    factor = .08;
    offset = 45.;
  }
  else if (strcmp(varname,"T")==0) {
    factor = 1.2;
    offset = -25.;
    min=161.;
    max=320.;
  }
    
  for (k=0;k<n2;k++) {
    for (j=0;j<n1;j++) {
      for (i=0;i<n0;i++) {
        field[k*(n0*n1)+j*n0+i] = (k*64 + j*16 + i*4 + it)*factor - offset;
	if (field[k*(n0*n1)+j*n0+i]<min) field[k*(n0*n1)+j*n0+i]=min;
	if (field[k*(n0*n1)+j*n0+i]>max) field[k*(n0*n1)+j*n0+i]=max;
      }
    }
  }
}

void read_2d_input_files(int it, char *varname, double *field, int n0, int n1)
{    
  int i, j,k;
  double factor, offset,min,max;
  double tmp;
  
  min=-1.e20;
  max=1.e20;

  if (strcmp(varname,"LATENT")==0){
    factor = 5.;
    offset = 0.;
    min=-65;
    max=65.;
  }
  else if (strcmp(varname,"TSURF")==0){
    factor = 2.1;
    offset = -230.;
    max=320.;
  }
  else if (strcmp(varname,"SOIL_WET")==0){
    factor = 4.;
    offset = 0.;
    max=130.;
  }
  else if (strcmp(varname,"PSURF")==0){
    factor = 1.;
    offset = -9.4e2;
  }
  else if (strcmp(varname,"htov")==0){
    factor = .5e14;
    offset = 2.e13;
    max = 1.492e14;
    min = 1.46e14;
  }

  for (j=0;j<n0;j++){
    for (i=0;i<n1;i++) {
      tmp = ((double)j*16. + (double)(i)*4. + (double)it)*factor - offset;
      k= (n0-1-j)*n1+i;
      field[k] = tmp;
      if (field[k]<min) field[k]=min;
      if (field[k]>max) field[k]=max;
    }
  }
}