Update version info for release v4.6.1 (#2122)
[WRF.git] / chem / KPP / util / wkc / gen_kpp_mech_dr.c
blob8b0140c1e740f2853ceb30cf0c5340244fc3d706
2 #include <stdio.h>
3 #include <string.h>
6 #include "protos.h"
7 #include "protos_kpp.h"
8 #include "kpp_data.h"
12 /*---------------------------------------------------------------------*/
13 void
14 gen_kpp_mechanism_driver ( )
16 knode_t * p1, * p2, * p3, * p4, * pm1, * pm3, * pm4;
17 char kpp_mdr_fname[NAMELEN];
18 FILE * kpp_mdr;
19 int countit;
20 int is_driver;
21 int max_per_line=6;
24 sprintf( kpp_mdr_fname, "chem/kpp_mechanism_driver.F");
27 kpp_mdr = fopen(kpp_mdr_fname, "w" );
33 /* print warning THIS FILE WAS AUTOMATICALLY GENERATED ... */
34 gen_kpp_warning(kpp_mdr, "tools/gen_kpp_mech_dr.c","!" );
38 fprintf(kpp_mdr, " SUBROUTINE kpp_mechanism_driver( &\n" );
40 /* pass down variables (see gen_kpp_utils) */
41 is_driver = 0;
42 gen_kpp_pass_down( kpp_mdr, is_driver );
45 fprintf(kpp_mdr, " USE module_configure\n");
46 fprintf(kpp_mdr, " USE module_state_description\n\n");
49 for ( p1 = KPP_packs ; p1 != NULL ; p1 = p1->next ) {
50 p2 = p1->assoc_wrf_pack;
51 if ( p2 ) {
52 fprintf(kpp_mdr, " USE module_kpp_%s_interf \n",p2->name );
57 fprintf(kpp_mdr, "\n IMPLICIT NONE\n\n");
59 /* declare variables */
60 gen_kpp_decl ( kpp_mdr, is_driver );
63 fprintf(kpp_mdr, "\n\n!--------\n\n\n");
64 fprintf(kpp_mdr, "\n\n kpp_chem_select: SELECT CASE(config_flags%%chem_opt) \n\n");
69 /* write calls to kpp interface routines */
73 for ( p1 = KPP_packs ; p1 != NULL ; p1 = p1->next ) {
74 p2 = p1->assoc_wrf_pack;
75 if ( p2 ) {
78 /* fprintf(stderr, "1 MATCHING PACKS: %s \n", p2->name); */
80 /* map wrf to kpp species */
83 fprintf(kpp_mdr, " CASE (%s_kpp) \n\n", p2->name );
84 fprintf(kpp_mdr, " CALL wrf_debug(15,'kpp_mechanism_driver: calling %s_interface') \n\n", p2->name );
85 fprintf(kpp_mdr, " CALL %s_interface( &\n", p2->name );
86 /* pass down variables */
87 if( !strcmp( p2->name,"mozcart" ) || !strcmp( p2->name,"t1_mozcart")
88 || !strcmp( p2->name,"mozart_mosaic_4bin" ) || !strcmp( p2->name,"mozart_mosaic_4bin_aq") )
89 is_driver = 0;
90 else
91 is_driver = 1;
92 gen_kpp_pass_down ( kpp_mdr, is_driver );
100 fprintf(kpp_mdr, "\n CASE DEFAULT\n\n");
102 fprintf(kpp_mdr, " END SELECT kpp_chem_select\n\n");
104 fprintf(kpp_mdr, " END SUBROUTINE kpp_mechanism_driver\n\n");
110 fclose(kpp_mdr);
116 void
117 gen_kpp_call_to_mech_dr ( )
119 knode_t * p1, * p2, * p3, * p4, * pm1, * pm3, * pm4;
120 char kpp_cmd_fname[NAMELEN];
121 FILE * kpp_cmd;
122 int countit;
123 int max_per_line=6;
125 sprintf( kpp_cmd_fname, "inc/call_to_kpp_mech_drive.inc");
128 kpp_cmd = fopen(kpp_cmd_fname, "w" );
133 /* print warning THIS FILE WAS AUTOMATICALLY GENERATED ... */
134 gen_kpp_warning(kpp_cmd, "tools/gen_kpp_mech_dr.c","!" );
138 /* pass down all radicals */
139 gen_kpp_argl_new( kpp_cmd, WRFC_radicals );
142 /* pass down jvals */
143 gen_kpp_argl_new( kpp_cmd, WRFC_jvals );