adba62330262db2f504477007c066af81c75d343
[baltrad-wrwp.git] / bin / wrwp_main.c
1 /* --------------------------------------------------------------------
2 Copyright (C) 2011 Swedish Meteorological and Hydrological Institute, SMHI
3
4 This is free software: you can redistribute it and/or modify
5 it under the terms of the GNU Lesser General Public License as published by
6 the Free Software Foundation, either version 3 of the License, or
7 (at your option) any later version.
8
9 This software is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12 GNU Lesser General Public License for more details.
13
14 You should have received a copy of the GNU Lesser General Public License
15 along with HLHDF.  If not, see <http://www.gnu.org/licenses/>.
16 ------------------------------------------------------------------------*/
17 #include "wrwp.h"
18 #include "rave_debug.h"
19
20 /** Main function for deriving weather radar wind and reflectivity profiles
21  * @file
22  * @author G´┐Żnther Haase, SMHI
23  * @date 2011-11-29
24  */
25 int main (int argc,char *argv[]) {
26         RaveIO_t* raveio = NULL;
27         PolarVolume_t* inobj = NULL;
28         VerticalProfile_t* result = NULL;
29         Wrwp_t* wrwp = NULL;
30         int exitcode = 127;
31
32         Rave_initializeDebugger();
33         Rave_setDebugLevel(RAVE_DEBUG);
34
35         if (argc<3) {
36                 printf ("Usage: %s <input ODIM_H5 polar volume> <output ODIM_H5 polar volume> \n",argv[0]);
37                 exit (1);
38         }
39
40         raveio = RaveIO_open(argv[1]);
41         if (raveio == NULL) {
42           fprintf(stderr, "Failed to open file = %s\n", argv[1]);
43           goto done;
44         }
45
46         wrwp = RAVE_OBJECT_NEW(&Wrwp_TYPE);
47         if (wrwp == NULL) {
48           fprintf(stderr, "Failed to create wrwp object\n");
49           goto done;
50         }
51
52         /*Opening of HDF5 radar input file.*/
53         if (RaveIO_getObjectType(raveio)== Rave_ObjectType_PVOL) {
54                 inobj = (PolarVolume_t*)RaveIO_getObject(raveio);
55         }
56         else {
57                 printf ("Input file is not a polar volume. Giving up ...\n");
58                 goto done;
59         }
60         RaveIO_close (raveio);
61
62         result = Wrwp_generate(wrwp, inobj, NULL);
63         if (inobj == NULL) {
64                 printf ("Could not derive wind profile %s, exiting ...\n", argv[1]);
65                 exit (1);
66         }
67
68         RaveIO_setObject(raveio, (RaveCoreObject*)result);
69
70         if (!RaveIO_save(raveio, argv[2]))
71           goto done;
72
73         exitcode = 0;
74 done:
75         RAVE_OBJECT_RELEASE(raveio);
76         RAVE_OBJECT_RELEASE(inobj);
77         RAVE_OBJECT_RELEASE(result);
78
79         return exitcode;
80 }