Skip to content
Snippets Groups Projects
Commit bcd5b470 authored by Uwe Schulzweida's avatar Uwe Schulzweida
Browse files

Derivepar: use MakeGeopotHeight() from afterburnerlib

parent 9e537bfe
No related branches found
No related tags found
No related merge requests found
......@@ -28,76 +28,9 @@
#include "pstream.h"
#include "after_vertint.h"
#include "stdnametable.h"
#include "constants.h"
static
void MakeGeopotHeight(double *geop, double* gt, double *gq, double *ph, int nhor, int nlev)
{
int i, j;
double vtmp;
double zrg;
double z2log2;
double *geopl, *gtl, *gql, *phl;
double Grav = C_EARTH_GRAV;
double RD = C_EARTH_RD;
z2log2 = 2.0 * log(2.0);
vtmp = (C_RV / RD) - 1.0;
zrg = 1.0 / Grav;
if ( gq ) /* Humidity is present */
{
for ( j = nlev ; j > 1 ; j-- )
{
geopl = geop + nhor*(j-1);
gtl = gt + nhor*(j-1);
gql = gq + nhor*(j-1);
phl = ph + nhor*(j-1);
#if defined(SX)
#pragma vdir nodep
#endif
#if defined(_OPENMP)
#pragma omp parallel for
#endif
for ( i = 0; i < nhor; i++ )
geopl[i] = geopl[i+nhor] + RD * gtl[i] * (1.0 + vtmp * gql[i])
* log(phl[i+nhor] / phl[i]);
}
#if defined(SX)
#pragma vdir nodep
#endif
#if defined(_OPENMP)
#pragma omp parallel for
#endif
for ( i = 0; i < nhor; i++ )
geop[i] = geop[i+nhor] + RD * gt[i] * (1.0 + vtmp * gq[i]) * z2log2;
}
else /* No humidity */
{
for ( j = nlev ; j > 1 ; j-- )
#if defined(SX)
#pragma vdir nodep
#endif
for ( i = nhor * (j-1) ; i < nhor * j ; i++ )
geop[i] = geop[i+nhor] + RD * gt[i] * log(ph[i+nhor] / ph[i]);
#if defined(SX)
#pragma vdir nodep
#endif
for ( i = 0; i < nhor; i++ )
geop[i] = geop[i+nhor] + RD * gt[i] * z2log2;
}
#if defined(SX)
#pragma vdir nodep
#endif
#if defined(_OPENMP)
#pragma omp parallel for
#endif
for ( i = 0; i < nhor * (nlev+1); i++ ) geop[i] *= zrg;
}
void MakeGeopotHeight(double *geop, double* gt, double *gq, double *ph, int nhor, int nlev);
void minmaxval(long nvals, double *array, int *imiss, double *minval, double *maxval)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment