7 #include "protos_kpp.h"
12 /*---------------------------------------------------------------------*/
14 gen_kpp_mechanism_driver ( )
16 knode_t
* p1
, * p2
, * p3
, * p4
, * pm1
, * pm3
, * pm4
;
17 char kpp_mdr_fname
[NAMELEN
];
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) */
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
;
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
;
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") )
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");
117 gen_kpp_call_to_mech_dr ( )
119 knode_t
* p1
, * p2
, * p3
, * p4
, * pm1
, * pm3
, * pm4
;
120 char kpp_cmd_fname
[NAMELEN
];
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
);