Former-commit-id:7fa9dbd5fb
[formerly4bfbdad17d
] [formerly9f8cb727a5
] [formerly7fa9dbd5fb
[formerly4bfbdad17d
] [formerly9f8cb727a5
] [formerly8485b90ff8
[formerly9f8cb727a5
[formerly bf53d06834caa780226121334ac1bcf0534c3f16]]]] Former-commit-id:8485b90ff8
Former-commit-id:40aa780b3d
[formerly33a67cdd82
] [formerly 73930fb29d0c1e91204e76e6ebfdbe757414f319 [formerlya28d70b5c5
]] Former-commit-id: a16a1b4dd44fc344ee709abbe262aeed58a8339b [formerlye5543a0e86
] Former-commit-id:0c25458510
171 lines
5.1 KiB
C
171 lines
5.1 KiB
C
#include "dg.h"
|
|
|
|
void dgc_fixa ( const char *area, const char *proj, char *areout,
|
|
char *prjout, int *iret )
|
|
/************************************************************************
|
|
* dgc_fixa *
|
|
* *
|
|
* This subroutine takes AREA and replaces GRID or DSET with the grid *
|
|
* area, EXTEND with the extend area, and DATA with the data area. *
|
|
* GRID or DSET is obtained from the navigation block; EXTEND and *
|
|
* DATA are obtained from the analysis block. *
|
|
* *
|
|
* dgc_fixa ( area, proj, areout, prjout, iret ) *
|
|
* *
|
|
* Input parameters: *
|
|
* *area const char Area *
|
|
* *proj const char Projection *
|
|
* *
|
|
* Output parameters: *
|
|
* *areout char New area *
|
|
* *prjout char New projection *
|
|
* *iret int Return code *
|
|
* 0 = normal return *
|
|
* -54 = grid file open failed *
|
|
** *
|
|
* Log: *
|
|
* K. Brill/HPC 01/04 Created from GR_FIXA for use with new *
|
|
* DG subroutines--do not pass in file nmbr*
|
|
* R. Tian/SAIC 3/04 Modified to use new GD file management *
|
|
* R. Tian/SIC 2/06 Recoded from Fortran *
|
|
************************************************************************/
|
|
{
|
|
char str1[29], str2[29], str3[29], str4[29], aaa[73];
|
|
char str6[29], str7[29], str8[29], prj[21];
|
|
float adum1, adum2, dn, dx, dy, gbnds[4], ebnds[4], dbnds[4],
|
|
rnav[LLNNAV], ranl[LLNANL];
|
|
int igdfln, mxgd, navlen, ianlsz, iex[4], nc, zero, ier;
|
|
/*----------------------------------------------------------------------*/
|
|
*iret = 0;
|
|
zero = 0;
|
|
|
|
gd_open ( _nfile.crtfnm[_nfile.irefnv], &_nfile.outflg[_nfile.irefnv],
|
|
&zero, &zero, &igdfln, &adum1, &adum2, &mxgd, &ier,
|
|
strlen(_nfile.crtfnm[_nfile.irefnv]) );
|
|
if ( ier != 0 ) {
|
|
*iret = -54;
|
|
return;
|
|
}
|
|
|
|
/*
|
|
* Convert to upper case.
|
|
*/
|
|
cst_lcuc ( (char *)area, areout, &ier );
|
|
cst_lcuc ( (char *)proj, prjout, &ier );
|
|
|
|
/*
|
|
* Check for word GRID.
|
|
*/
|
|
if ( strstr ( areout, "GRID" ) || strstr ( areout, "DSET" ) ) {
|
|
/*
|
|
* Read in navigation block.
|
|
*/
|
|
gd_gnav ( &igdfln, rnav, &navlen, &ier );
|
|
if ( navlen >= 13 ) {
|
|
cst_rlch ( rnav[6], 2, str1, &ier );
|
|
cst_rlch ( rnav[7], 2, str2, &ier );
|
|
cst_rlch ( rnav[8], 2, str3, &ier );
|
|
cst_rlch ( rnav[9], 2, str4, &ier );
|
|
cst_ldsp ( str1, str1, &nc, &ier );
|
|
cst_ldsp ( str2, str2, &nc, &ier );
|
|
cst_ldsp ( str3, str3, &nc, &ier );
|
|
cst_ldsp ( str4, str4, &nc, &ier );
|
|
|
|
strcpy ( aaa, str1 );
|
|
strcat ( aaa, ";" );
|
|
strcat ( aaa, str2 );
|
|
strcat ( aaa, ";" );
|
|
strcat ( aaa, str3 );
|
|
strcat ( aaa, ";" );
|
|
strcat ( aaa, str4 );
|
|
if ( strstr ( areout, "GRID" ) ) {
|
|
cst_rpst ( areout, "GRID", aaa, areout, &ier );
|
|
} else {
|
|
cst_rpst ( areout, "DSET", aaa, areout, &ier );
|
|
}
|
|
|
|
/*
|
|
* Set projection if PROJ is blank.
|
|
*/
|
|
if ( strlen ( prjout ) == 0 ) {
|
|
cst_itos ( (int *)(&rnav[1]), 1, &nc, prj, &ier );
|
|
cst_rmbl ( prj, prj, &nc, &ier );
|
|
cst_rlch ( rnav[10], 2, str6, &ier );
|
|
cst_rlch ( rnav[11], 2, str7, &ier );
|
|
cst_rlch ( rnav[12], 2, str8, &ier );
|
|
cst_ldsp ( str6, str6, &nc, &ier );
|
|
cst_ldsp ( str7, str7, &nc, &ier );
|
|
cst_ldsp ( str8, str8, &nc, &ier );
|
|
strcpy ( prjout, prj );
|
|
strcat ( prjout, "/" );
|
|
strcat ( prjout, str6 );
|
|
strcat ( prjout, ";" );
|
|
strcat ( prjout, str7 );
|
|
strcat ( prjout, ";" );
|
|
strcat ( prjout, str8 );
|
|
}
|
|
}
|
|
}
|
|
|
|
/*
|
|
* Check for EXTEND.
|
|
*/
|
|
if ( strstr ( areout, "EXTEND" ) ) {
|
|
/*
|
|
* Read in analysis block.
|
|
*/
|
|
gd_ganl ( &igdfln, ranl, &ianlsz, &ier );
|
|
grc_rban ( ranl, &dn, &dx, &dy, gbnds, ebnds, dbnds, iex, &ier );
|
|
if ( ier == 0 ) {
|
|
cst_rlch ( ebnds[0], 2, str1, &ier );
|
|
cst_rlch ( ebnds[1], 2, str2, &ier );
|
|
cst_rlch ( ebnds[2], 2, str3, &ier );
|
|
cst_rlch ( ebnds[3], 2, str4, &ier );
|
|
cst_ldsp ( str1, str1, &nc, &ier );
|
|
cst_ldsp ( str2, str2, &nc, &ier );
|
|
cst_ldsp ( str3, str3, &nc, &ier );
|
|
cst_ldsp ( str4, str4, &nc, &ier );
|
|
|
|
strcpy ( aaa, str1 );
|
|
strcat ( aaa, ";" );
|
|
strcat ( aaa, str2 );
|
|
strcat ( aaa, ";" );
|
|
strcat ( aaa, str3 );
|
|
strcat ( aaa, ";" );
|
|
strcat ( aaa, str4 );
|
|
cst_rpst ( areout, "EXTEND", aaa, areout, &ier );
|
|
}
|
|
}
|
|
|
|
/*
|
|
* Check for DATA.
|
|
*/
|
|
if ( strstr ( areout, "DATA" ) ) {
|
|
/*
|
|
* Read in analysis block.
|
|
*/
|
|
gd_ganl ( &igdfln, ranl, &ianlsz, &ier );
|
|
grc_rban ( ranl, &dn, &dx, &dy, gbnds, ebnds, dbnds, iex, &ier );
|
|
if ( ier == 0 ) {
|
|
cst_rlch ( dbnds[0], 2, str1, &ier );
|
|
cst_rlch ( dbnds[1], 2, str2, &ier );
|
|
cst_rlch ( dbnds[2], 2, str3, &ier );
|
|
cst_rlch ( dbnds[3], 2, str4, &ier );
|
|
cst_ldsp ( str1, str1, &nc, &ier );
|
|
cst_ldsp ( str2, str2, &nc, &ier );
|
|
cst_ldsp ( str3, str3, &nc, &ier );
|
|
cst_ldsp ( str4, str4, &nc, &ier );
|
|
|
|
strcpy ( aaa, str1 );
|
|
strcat ( aaa, ";" );
|
|
strcat ( aaa, str2 );
|
|
strcat ( aaa, ";" );
|
|
strcat ( aaa, str3 );
|
|
strcat ( aaa, ";" );
|
|
strcat ( aaa, str4 );
|
|
cst_rpst ( areout, "DATA", aaa, areout, &ier );
|
|
}
|
|
}
|
|
|
|
return;
|
|
}
|