From 352ccdb6c10b656c8dbd1bab96ae2ad1a3365f17 Mon Sep 17 00:00:00 2001 From: Francis Vitt Date: Wed, 15 Jan 2025 13:51:00 -0700 Subject: [PATCH 01/14] add t4ma mechanism --- src/chemistry/pp_waccm_t4ma_mam5/chem_mech.in | 912 ++++++++++++++++++ 1 file changed, 912 insertions(+) create mode 100644 src/chemistry/pp_waccm_t4ma_mam5/chem_mech.in diff --git a/src/chemistry/pp_waccm_t4ma_mam5/chem_mech.in b/src/chemistry/pp_waccm_t4ma_mam5/chem_mech.in new file mode 100644 index 0000000000..5aa09212db --- /dev/null +++ b/src/chemistry/pp_waccm_t4ma_mam5/chem_mech.in @@ -0,0 +1,912 @@ +* Comments +* User-given Tag Description: T4MA_MAM5 +* Tag database identifier : MZ358_T4MA_20241002 +* Tag created by : lke +* Tag created from branch : T4MA +* Tag created on : 2024-10-02 16:02:50.816732-06 +* Comments for this tag follow: +* lke : 2024-10-02 : T4 simpler tropospheric chemistry with full Middle Atmosphere (Strat, Meso, Lower Therm), with MAM5 aerosols + + SPECIES + + Solution + bc_a1 -> C, + bc_a4 -> C, + BIGALK -> C5H12, + BR -> Br, + BRCL -> BrCl, + BRO -> BrO, + BRONO2 -> BrONO2, + BRY, + C2H4, + C2H5O2, + C2H5OH, + C2H5OOH, + C2H6, + C3H6, + C3H7O2, + C3H7OOH, + C3H8, + CCL4 -> CCl4, + CF2CLBR -> CF2ClBr, + CF3BR -> CF3Br, + CFC11 -> CFCl3, + CFC113 -> CCl2FCClF2, + CFC114 -> CClF2CClF2, + CFC115 -> CClF2CF3, + CFC12 -> CF2Cl2, + CH2BR2 -> CH2Br2, + CH2O, + CH3BR -> CH3Br, + CH3CCL3 -> CH3CCl3, + CH3CHO, + CH3CL -> CH3Cl, + CH3CO3, + CH3COCH3, + CH3COCHO, + CH3COOH, + CH3COOOH, + CH3O2, + CH3OH, + CH3OOH, + CH4, + CHBR3 -> CHBr3, + CL -> Cl, + CL2 -> Cl2, + CL2O2 -> Cl2O2, + CLO -> ClO, + CLONO2 -> ClONO2, + CLY, + CO, + CO2, + COF2, + COFCL -> COFCl, + DMS -> CH3SCH3, + dst_a1 -> AlSiO5, + dst_a2 -> AlSiO5, + dst_a3 -> AlSiO5, + EO -> HOCH2CH2O, + EO2 -> HOCH2CH2O2, + EOOH -> HOCH2CH2OOH, + F, + GLYALD -> HOCH2CHO, + GLYOXAL -> C2H2O2, + H, + H2, + H2402 -> CBrF2CBrF2, + H2O2, + H2SO4 -> H2SO4, + HBR -> HBr, + HCFC141B -> CH3CCl2F, + HCFC142B -> CH3CClF2, + HCFC22 -> CHF2Cl, + HCL -> HCl, + HF, + HNO3, + HO2NO2, + HOBR -> HOBr, + HOCL -> HOCl, + HYAC -> CH3COCH2OH, + HYDRALD -> HOCH2CCH3CHCHO, + ISOP -> C5H8, + ISOPNO3 -> CH2CHCCH3OOCH2ONO2, + ISOPO2 -> HOCH2COOCH3CHCH2, + ISOPOOH -> HOCH2COOHCH3CHCH2, + MACR -> CH2CCH3CHO, + MACRO2 -> CH3COCHO2CH2OH, + MACROOH -> CH3COCHOOHCH2OH, + MCO3 -> CH2CCH3CO3, + MPAN -> CH2CCH3CO3NO2, + MVK -> CH2CHCOCH3, + N, + N2O, + N2O5, + ncl_a1 -> NaCl, + ncl_a2 -> NaCl, + ncl_a3 -> NaCl, + NH3, + NH4, + NO, + NO2, + NO3, + NOA -> CH3COCH2ONO2, + num_a1 -> H, + num_a2 -> H, + num_a3 -> H, + num_a4 -> H, + num_a5 -> H, + O, + O2, + O3, + OCLO -> OClO, + OCS -> OCS, + OH, + ONITR -> C4H7NO4, + PAN -> CH3CO3NO2, + PO2 -> C3H6OHO2, + pom_a1 -> C, + pom_a4 -> C, + POOH -> C3H6OHOOH, + RO2 -> CH3COCH2O2, + ROOH -> CH3COCH2OOH, + S -> S, + SF6, + SO -> SO, + SO2, + SO3 -> SO3, + so4_a1 -> NH4HSO4, + so4_a2 -> NH4HSO4, + so4_a3 -> NH4HSO4, + so4_a5 -> NH4HSO4, + soa_a1 -> C, + soa_a2 -> C, + SOAE -> C, + SOAG -> C, + TERP -> C10H16, + XO2 -> HOCH2COOCH3CHOHCHO, + XOOH -> HOCH2COOHCH3CHOHCHO, + NHDEP -> N, + NDEP -> N, + e -> E, + HO2, + N2D -> N, + N2p -> N2, + NOp -> NO, + Np -> N, + O1D -> O, + O2_1D -> O2, + O2_1S -> O2, + O2p -> O2, + Op -> O, + Op2D -> O, + Op2P -> O, + H2O + + End Solution + + + Fixed + M, N2 + End Fixed + + Col-int + O3 = 0. + O2 = 0. + End Col-int + + Not-Transported + e, + HO2, + N2D, + N2p, + NOp, + Np, + O1D, + O2_1D, + O2_1S, + O2p, + Op, + Op2D, + Op2P + End Not-Transported + + END Species + + + Solution classes + Explicit + NHDEP + NDEP + End Explicit + + Implicit + bc_a1 + bc_a4 + BIGALK + BR + BRCL + BRO + BRONO2 + BRY + C2H4 + C2H5O2 + C2H5OH + C2H5OOH + C2H6 + C3H6 + C3H7O2 + C3H7OOH + C3H8 + CCL4 + CF2CLBR + CF3BR + CFC11 + CFC113 + CFC114 + CFC115 + CFC12 + CH2BR2 + CH2O + CH3BR + CH3CCL3 + CH3CHO + CH3CL + CH3CO3 + CH3COCH3 + CH3COCHO + CH3COOH + CH3COOOH + CH3O2 + CH3OH + CH3OOH + CH4 + CHBR3 + CL + CL2 + CL2O2 + CLO + CLONO2 + CLY + CO + CO2 + COF2 + COFCL + DMS + dst_a1 + dst_a2 + dst_a3 + EO + EO2 + EOOH + F + GLYALD + GLYOXAL + H + H2 + H2402 + H2O2 + H2SO4 + HBR + HCFC141B + HCFC142B + HCFC22 + HCL + HF + HNO3 + HO2NO2 + HOBR + HOCL + HYAC + HYDRALD + ISOP + ISOPNO3 + ISOPO2 + ISOPOOH + MACR + MACRO2 + MACROOH + MCO3 + MPAN + MVK + N + N2O + N2O5 + ncl_a1 + ncl_a2 + ncl_a3 + NH3 + NH4 + NO + NO2 + NO3 + NOA + num_a1 + num_a2 + num_a3 + num_a4 + num_a5 + O + O2 + O3 + OCLO + OCS + OH + ONITR + PAN + PO2 + pom_a1 + pom_a4 + POOH + RO2 + ROOH + S + SF6 + SO + SO2 + SO3 + so4_a1 + so4_a2 + so4_a3 + so4_a5 + soa_a1 + soa_a2 + SOAE + SOAG + TERP + XO2 + XOOH + e + HO2 + N2D + N2p + NOp + Np + O1D + O2_1D + O2_1S + O2p + Op + Op2D + Op2P + H2O + End Implicit + + End Solution classes + + + CHEMISTRY + Photolysis +********************************* +*** odd-oxygen +********************************* +[jh2o_b] H2O + hv -> H2 + O1D +[jh2o_a] H2O + hv -> OH + H +[jh2o_c] H2O + hv -> 2*H + O +[jh2o2] H2O2 + hv -> 2*OH +[jo2_a=userdefined,] O2 + hv -> O + O1D +[jo2_b=userdefined,] O2 + hv -> 2*O +[jo3_a] O3 + hv -> O1D + O2_1D +[jo3_b] O3 + hv -> O + O2 +********************************* +*** odd-nitrogen +********************************* +[jhno3] HNO3 + hv -> NO2 + OH +[jho2no2_a] HO2NO2 + hv -> OH + NO3 +[jho2no2_b] HO2NO2 + hv -> NO2 + HO2 +[jn2o] N2O + hv -> O1D + N2 +[jn2o5_a] N2O5 + hv -> NO2 + NO3 +[jn2o5_b] N2O5 + hv -> NO + O + NO3 +[jno_i] NO + hv -> NOp + e +[jno=userdefined,] NO + hv -> N + O +[jno2] NO2 + hv -> NO + O +[jno3_a] NO3 + hv -> NO2 + O +[jno3_b] NO3 + hv -> NO + O2 +********************************* +*** organics +********************************* +[jc2h5ooh->,jch3ooh] C2H5OOH + hv -> CH3CHO + HO2 + OH +[jc3h7ooh->,jch3ooh] C3H7OOH + hv -> 0.82*CH3COCH3 + OH + HO2 +[jch2o_a] CH2O + hv -> CO + 2*H +[jch2o_b] CH2O + hv -> CO + H2 +[jch3cho] CH3CHO + hv -> CH3O2 + CO + HO2 +[jacet] CH3COCH3 + hv -> CH3CO3 + CH3O2 +[jmgly] CH3COCHO + hv -> CH3CO3 + CO + HO2 +[jch3co3h->,0.28*jh2o2] CH3COOOH + hv -> CH3O2 + OH + CO2 +[jch3ooh] CH3OOH + hv -> CH2O + H + OH +[jch4_b] CH4 + hv -> 1.44*H2 + 0.18*CH2O + 0.18*O + 0.33*OH + 0.33*H + 0.44*CO2 + 0.38*CO + 0.05*H2O +[jch4_a] CH4 + hv -> H + CH3O2 +[jco2] CO2 + hv -> CO + O +[jeooh->,jch3ooh] EOOH + hv -> EO + OH +[jglyald] GLYALD + hv -> 2*HO2 + CO + CH2O +[jglyoxal->,jmgly] GLYOXAL + hv -> 2*CO + 2*HO2 +[jhyac] HYAC + hv -> CH3CO3 + HO2 + CH2O +[jisopooh->,jch3ooh] ISOPOOH + hv -> 0.402*MVK + 0.288*MACR + 0.69*CH2O + HO2 +[jmacr_a] MACR + hv -> 1.34*HO2 + 0.66*MCO3 + 1.34*CH2O + 1.34*CH3CO3 +[jmacr_b] MACR + hv -> 0.66*HO2 + 1.34*CO +[jmpan->,jpan] MPAN + hv -> MCO3 + NO2 +[jmvk] MVK + hv -> 0.7*C3H6 + 0.7*CO + 0.3*CH3O2 + 0.3*CH3CO3 +[jnoa->,jch2o_a] NOA + hv -> NO2 + CH2O + CH3CO3 +[jonitr->,jch3cho] ONITR + hv -> HO2 + CO + NO2 + CH2O +[jpan] PAN + hv -> 0.6*CH3CO3 + 0.6*NO2 + 0.4*CH3O2 + 0.4*NO3 + 0.4*CO2 +[jpooh->,jch3ooh] POOH + hv -> CH3CHO + CH2O + HO2 + OH +[jrooh->,jch3ooh] ROOH + hv -> CH3CO3 + CH2O + OH +[jxooh->,jch3ooh] XOOH + hv -> OH +********************************* +*** halogens +********************************* +[jbrcl] BRCL + hv -> BR + CL +[jbro] BRO + hv -> BR + O +[jbrono2_b] BRONO2 + hv -> BRO + NO2 +[jbrono2_a] BRONO2 + hv -> BR + NO3 +[jccl4] CCL4 + hv -> 4*CL +[jcf2clbr] CF2CLBR + hv -> BR + CL + COF2 +[jcf3br] CF3BR + hv -> BR + F + COF2 +[jcfcl3] CFC11 + hv -> 2*CL + COFCL +[jcfc113] CFC113 + hv -> 2*CL + COFCL + COF2 +[jcfc114] CFC114 + hv -> 2*CL + 2*COF2 +[jcfc115] CFC115 + hv -> CL + F + 2*COF2 +[jcf2cl2] CFC12 + hv -> 2*CL + COF2 +[jch2br2] CH2BR2 + hv -> 2*BR +[jch3br] CH3BR + hv -> BR + CH3O2 +[jch3ccl3] CH3CCL3 + hv -> 3*CL +[jch3cl] CH3CL + hv -> CL + CH3O2 +[jchbr3] CHBR3 + hv -> 3*BR +[jcl2] CL2 + hv -> 2*CL +[jcl2o2] CL2O2 + hv -> 2*CL +[jclo] CLO + hv -> CL + O +[jclono2_a] CLONO2 + hv -> CL + NO3 +[jclono2_b] CLONO2 + hv -> CLO + NO2 +[jcof2] COF2 + hv -> 2*F +[jcofcl] COFCL + hv -> F + CL +[jh2402] H2402 + hv -> 2*BR + 2*COF2 +[jhbr] HBR + hv -> BR + H +[jhcfc141b] HCFC141B + hv -> CL + COFCL +[jhcfc142b] HCFC142B + hv -> CL + COF2 +[jhcfc22] HCFC22 + hv -> CL + COF2 +[jhcl] HCL + hv -> H + CL +[jhf] HF + hv -> H + F +[jhobr] HOBR + hv -> BR + OH +[jhocl] HOCL + hv -> OH + CL +[joclo] OCLO + hv -> O + CLO +[jsf6] SF6 + hv -> sink +********************************* +*** ions +********************************* +[jeuv_26=userdefined,userdefined] CO2 + hv -> CO + O +[jeuv_4=userdefined,userdefined] N + hv -> Np + e +[jeuv_18=userdefined,userdefined] N2 + hv -> N2p + e +[jeuv_25=userdefined,userdefined] N2 + hv -> 1.2*N2D + 0.8*N +[jeuv_13=userdefined,userdefined] N2 + hv -> 1.2*N2D + 0.8*N +[jeuv_11=userdefined,userdefined] N2 + hv -> N2D + Np + e +[jeuv_6=userdefined,userdefined] N2 + hv -> N2p + e +[jeuv_10=userdefined,userdefined] N2 + hv -> N + Np + e +[jeuv_22=userdefined,userdefined] N2 + hv -> N + Np + e +[jeuv_23=userdefined,userdefined] N2 + hv -> N2D + Np + e +[jeuv_16=userdefined,userdefined] O + hv -> Op2P + e +[jeuv_14=userdefined,userdefined] O + hv -> Op + e +[jeuv_2=userdefined,userdefined] O + hv -> Op2D + e +[jeuv_15=userdefined,userdefined] O + hv -> Op2D + e +[jeuv_3=userdefined,userdefined] O + hv -> Op2P + e +[jeuv_1=userdefined,userdefined] O + hv -> Op + e +[jeuv_20=userdefined,userdefined] O2 + hv -> O + Op2D + e +[jeuv_24=userdefined,userdefined] O2 + hv -> 2*O +[jeuv_8=userdefined,userdefined] O2 + hv -> O + Op2D + e +[jeuv_21=userdefined,userdefined] O2 + hv -> O + Op2P + e +[jeuv_5=userdefined,userdefined] O2 + hv -> O2p + e +[jeuv_19=userdefined,userdefined] O2 + hv -> O + Op + e +[jeuv_12=userdefined,userdefined] O2 + hv -> 2*O +[jeuv_9=userdefined,userdefined] O2 + hv -> O + Op2P + e +[jeuv_7=userdefined,userdefined] O2 + hv -> O + Op + e +[jeuv_17=userdefined,userdefined] O2 + hv -> O2p + e +********************************* +*** sulfur +********************************* +[jh2so4] H2SO4 + hv -> SO3 + H2O +[jocs] OCS + hv -> S + CO +[jso] SO + hv -> S + O +[jso2] SO2 + hv -> SO + O +[jso3] SO3 + hv -> SO2 + O +********************************* +*** soa +********************************* +[jsoa_a1->,.0004*jno2] soa_a1 + hv -> +[jsoa_a2->,.0004*jno2] soa_a2 + hv -> + End Photolysis + + Reactions +********************************* +*** odd-oxygen +********************************* +[ag1] O2_1D -> O2 ; 0.000258 +[ag2] O2_1S -> O2 ; 0.085 +[O1D_H2] O1D + H2 -> H + OH ; 1.2e-10 +[O1D_H2O] O1D + H2O -> 2*OH ; 1.63e-10, 60 +[O1D_N2,cph=189.81] O1D + N2 -> O + N2 ; 2.15e-11, 110 +[O1D_O2,cph=32.91] O1D + O2 -> O + O2_1S ; 2.64e-11, 55 +[O1D_O2b,cph=189.81] O1D + O2 -> O + O2 ; 6.6e-12, 55 +[O1D_O3] O1D + O3 -> O2 + O2 ; 1.2e-10 +[O1D_O3a] O1D + O3 -> O2 + 2*O ; 1.2e-10 +[O2_1D_N2,cph=94.3] O2_1D + N2 -> O2 + N2 ; 1e-20 +[O2_1D_O,cph=94.3] O2_1D + O -> O2 + O ; 1.3e-16 +[O2_1D_O2,cph=94.3] O2_1D + O2 -> 2*O2 ; 3.6e-18, -220 +[O2_1S_CO2] O2_1S + CO2 -> O2_1D + CO2 ; 4.2e-13 +[O2_1S_N2,cph=62.6] O2_1S + N2 -> O2_1D + N2 ; 1.8e-15, 45 +[O2_1S_O,cph=62.6] O2_1S + O -> O2_1D + O ; 8e-14 +[O2_1S_O2,cph=62.6] O2_1S + O2 -> O2_1D + O2 ; 3.9e-17 +[O2_1S_O3,cph=62.6] O2_1S + O3 -> O2_1D + O3 ; 3.5e-11, -135 +[O_O3,cph=392.19] O + O3 -> 2*O2 ; 8e-12, -2060 +[usr_O_O,cph=493.58] O + O + M -> O2 + M +[usr_O_O2,cph=101.39] O + O2 + M -> O3 + M +********************************* +*** odd-hydrogen +********************************* +[H2_O] H2 + O -> OH + H ; 1.6e-11, -4570 +[H2O2_O] H2O2 + O -> OH + HO2 ; 1.4e-12, -2000 +[H_HO2,cph=232.59] H + HO2 -> H2 + O2 ; 6.9e-12 +[H_HO2a] H + HO2 -> 2*OH ; 7.2e-11 +[H_HO2b] H + HO2 -> H2O + O ; 1.6e-12 +[H_O2,cph=203.4] H + O2 + M -> HO2 + M ; 5.3e-32, 1.8, 9.5e-11, -0.4, 0.6 +[HO2_O,cph=226.58] HO2 + O -> OH + O2 ; 3e-11, 200 +[HO2_O3,cph=120.1] HO2 + O3 -> OH + 2*O2 ; 1e-14, -490 +[H_O3,cph=194.71] H + O3 -> OH + O2 ; 1.4e-10, -470 +[OH_H2] OH + H2 -> H2O + H ; 2.8e-12, -1800 +[OH_H2O2] OH + H2O2 -> H2O + HO2 ; 1.8e-12 +[OH_HO2,cph=293.62] OH + HO2 -> H2O + O2 ; 4.8e-11, 250 +[OH_O,cph=67.67] OH + O -> H + O2 ; 1.8e-11, 180 +[OH_O3,cph=165.3] OH + O3 -> HO2 + O2 ; 1.7e-12, -940 +[OH_OH] OH + OH -> H2O + O ; 1.8e-12 +[OH_OH_M] OH + OH + M -> H2O2 + M ; 6.9e-31, 1, 2.6e-11, 0, 0.6 +[usr_HO2_HO2,cph=165.51] HO2 + HO2 -> H2O2 + O2 +********************************* +*** odd-nitrogen +********************************* +[HO2NO2_OH] HO2NO2 + OH -> H2O + NO2 + O2 ; 4.5e-13, 610 +[N2D_O,cph=229.61] N2D + O -> N + O ; 7e-13 +[N2D_O2,cph=177.51] N2D + O2 -> NO + O1D ; 5e-12 +[N_NO,cph=313.75] N + NO -> N2 + O ; 2.1e-11, 100 +[N_NO2a] N + NO2 -> N2O + O ; 2.9e-12, 220 +[N_NO2b] N + NO2 -> 2*NO ; 1.45e-12, 220 +[N_NO2c] N + NO2 -> N2 + O2 ; 1.45e-12, 220 +[N_O2,cph=133.75] N + O2 -> NO + O ; 3.3e-12, -3150 +[NO2_O,cph=193.02] NO2 + O -> NO + O2 ; 5.1e-12, 210 +[NO2_O3] NO2 + O3 -> NO3 + O2 ; 1.2e-13, -2450 +[NO2_O_M] NO2 + O + M -> NO3 + M ; 2.5e-31, 1.8, 2.2e-11, 0.7, 0.6 +[NO3_HO2] NO3 + HO2 -> OH + NO2 + O2 ; 3.5e-12 +[NO3_NO] NO3 + NO -> 2*NO2 ; 1.7e-11, 125 +[NO3_O] NO3 + O -> NO2 + O2 ; 1.3e-11 +[NO3_OH] NO3 + OH -> HO2 + NO2 ; 2.2e-11 +[N_OH] N + OH -> NO + H ; 5e-11 +[NO_HO2,cph=34.47] NO + HO2 -> NO2 + OH ; 3.44e-12, 260 +[NO_O3,cph=199.17] NO + O3 -> NO2 + O2 ; 3e-12, -1500 +[NO_O_M] NO + O + M -> NO2 + M ; 9e-32, 1.5, 3e-11, 0, 0.6 +[O1D_N2Oa] O1D + N2O -> 2*NO ; 7.26e-11, 20 +[O1D_N2Ob] O1D + N2O -> N2 + O2 ; 4.64e-11, 20 +[tag_NO2_HO2] NO2 + HO2 + M -> HO2NO2 + M ; 1.9e-31, 3.4, 4e-12, 0.3, 0.6 +[tag_NO2_NO3] NO2 + NO3 + M -> N2O5 + M ; 2.4e-30, 3, 1.6e-12, -0.1, 0.6 +[tag_NO2_OH] NO2 + OH + M -> HNO3 + M ; 1.8e-30, 3, 2.8e-11, 0, 0.6 +[usr_HNO3_OH] HNO3 + OH -> NO3 + H2O +[usr_HO2NO2_M] HO2NO2 + M -> HO2 + NO2 + M +[usr_N2O5_M] N2O5 + M -> NO2 + NO3 + M +********************************* +*** odd-chlorine +********************************* +[CL_CH2O] CL + CH2O -> HCL + HO2 + CO ; 8.1e-11, -30 +[CL_CH4] CL + CH4 -> CH3O2 + HCL ; 7.1e-12, -1270 +[CL_H2] CL + H2 -> HCL + H ; 3.05e-11, -2270 +[CL_H2O2] CL + H2O2 -> HCL + HO2 ; 1.1e-11, -980 +[CL_HO2a] CL + HO2 -> HCL + O2 ; 1.4e-11, 270 +[CL_HO2b] CL + HO2 -> OH + CLO ; 3.6e-11, -375 +[CL_O3] CL + O3 -> CLO + O2 ; 2.3e-11, -200 +[CLO_CH3O2] CLO + CH3O2 -> CL + HO2 + CH2O ; 3.3e-12, -115 +[CLO_CLOa] CLO + CLO -> 2*CL + O2 ; 3e-11, -2450 +[CLO_CLOb] CLO + CLO -> CL2 + O2 ; 1e-12, -1590 +[CLO_CLOc] CLO + CLO -> CL + OCLO ; 3.5e-13, -1370 +[CLO_HO2] CLO + HO2 -> O2 + HOCL ; 2.6e-12, 290 +[CLO_NO] CLO + NO -> NO2 + CL ; 6.4e-12, 290 +[CLONO2_CL] CLONO2 + CL -> CL2 + NO3 ; 6.5e-12, 135 +[CLO_NO2_M] CLO + NO2 + M -> CLONO2 + M ; 1.8e-31, 3.4, 1.5e-11, 1.9, 0.6 +[CLONO2_O] CLONO2 + O -> CLO + NO3 ; 3.6e-12, -840 +[CLONO2_OH] CLONO2 + OH -> HOCL + NO3 ; 1.2e-12, -330 +[CLO_O] CLO + O -> CL + O2 ; 2.8e-11, 85 +[CLO_OHa] CLO + OH -> CL + HO2 ; 7.4e-12, 270 +[CLO_OHb] CLO + OH -> HCL + O2 ; 6e-13, 230 +[HCL_O] HCL + O -> CL + OH ; 1e-11, -3300 +[HCL_OH] HCL + OH -> H2O + CL ; 1.8e-12, -250 +[HOCL_CL] HOCL + CL -> HCL + CLO ; 3.4e-12, -130 +[HOCL_O] HOCL + O -> CLO + OH ; 1.7e-13 +[HOCL_OH] HOCL + OH -> H2O + CLO ; 3e-12, -500 +[O1D_CCL4] O1D + CCL4 -> 4*CL ; 2.607e-10 +[O1D_CF2CLBR] O1D + CF2CLBR -> CL + BR + COF2 ; 9.75e-11 +[O1D_CFC11] O1D + CFC11 -> 2*CL + COFCL ; 2.07e-10 +[O1D_CFC113] O1D + CFC113 -> 2*CL + COFCL + COF2 ; 2.088e-10 +[O1D_CFC114] O1D + CFC114 -> 2*CL + 2*COF2 ; 1.17e-10 +[O1D_CFC115] O1D + CFC115 -> CL + F + 2*COF2 ; 4.644e-11 +[O1D_CFC12] O1D + CFC12 -> 2*CL + COF2 ; 1.204e-10 +[O1D_HCLa] O1D + HCL -> CL + OH ; 9.9e-11 +[O1D_HCLb] O1D + HCL -> CLO + H ; 3.3e-12 +[tag_CLO_CLO_M] CLO + CLO + M -> CL2O2 + M ; 1.9e-32, 3.6, 3.7e-12, 1.6, 0.6 +[usr_CL2O2_M] CL2O2 + M -> CLO + CLO + M +********************************* +*** odd-bromine +********************************* +[BR_CH2O] BR + CH2O -> HBR + HO2 + CO ; 1.7e-11, -800 +[BR_HO2] BR + HO2 -> HBR + O2 ; 4.8e-12, -310 +[BR_O3] BR + O3 -> BRO + O2 ; 1.6e-11, -780 +[BRO_BRO] BRO + BRO -> 2*BR + O2 ; 1.5e-12, 230 +[BRO_CLOa] BRO + CLO -> BR + OCLO ; 9.5e-13, 550 +[BRO_CLOb] BRO + CLO -> BR + CL + O2 ; 2.3e-12, 260 +[BRO_CLOc] BRO + CLO -> BRCL + O2 ; 4.1e-13, 290 +[BRO_HO2] BRO + HO2 -> HOBR + O2 ; 4.5e-12, 460 +[BRO_NO] BRO + NO -> BR + NO2 ; 8.8e-12, 260 +[BRO_NO2_M] BRO + NO2 + M -> BRONO2 + M ; 5.2e-31, 3.2, 6.9e-12, 2.9, 0.6 +[BRONO2_O] BRONO2 + O -> BRO + NO3 ; 1.9e-11, 215 +[BRO_O] BRO + O -> BR + O2 ; 1.9e-11, 230 +[BRO_OH] BRO + OH -> BR + HO2 ; 1.7e-11, 250 +[HBR_O] HBR + O -> BR + OH ; 5.8e-12, -1500 +[HBR_OH] HBR + OH -> BR + H2O ; 5.5e-12, 200 +[HOBR_O] HOBR + O -> BRO + OH ; 1.2e-10, -430 +[O1D_CF3BR] O1D + CF3BR -> BR + F + COF2 ; 4.5e-11 +[O1D_CHBR3] O1D + CHBR3 -> 3*BR ; 4.62e-10 +[O1D_H2402] O1D + H2402 -> 2*BR + 2*COF2 ; 1.2e-10 +[O1D_HBRa] O1D + HBR -> BR + OH ; 9e-11 +[O1D_HBRb] O1D + HBR -> BRO + H ; 3e-11 +********************************* +*** odd-fluorine +********************************* +[F_CH4] F + CH4 -> HF + CH3O2 ; 1.6e-10, -260 +[F_H2] F + H2 -> HF + H ; 1.4e-10, -500 +[F_H2O] F + H2O -> HF + OH ; 1.4e-11, 0 +[F_HNO3] F + HNO3 -> HF + NO3 ; 6e-12, 400 +[O1D_COF2] O1D + COF2 -> 2*F ; 2.14e-11 +[O1D_COFCL] O1D + COFCL -> F + CL ; 1.9e-10 +********************************* +*** organic-halogens +********************************* +[CH2BR2_CL] CH2BR2 + CL -> 2*BR + HCL ; 6.3e-12, -800 +[CH2BR2_OH] CH2BR2 + OH -> 2*BR + H2O ; 2e-12, -840 +[CH3BR_CL] CH3BR + CL -> HCL + HO2 + BR ; 1.46e-11, -1040 +[CH3BR_OH] CH3BR + OH -> BR + H2O + HO2 ; 1.42e-12, -1150 +[CH3CCL3_OH] CH3CCL3 + OH -> H2O + 3*CL ; 1.64e-12, -1520 +[CH3CL_CL] CH3CL + CL -> HO2 + CO + 2*HCL ; 2.03e-11, -1110 +[CH3CL_OH] CH3CL + OH -> CL + H2O + HO2 ; 1.96e-12, -1200 +[CHBR3_CL] CHBR3 + CL -> 3*BR + HCL ; 4.85e-12, -850 +[CHBR3_OH] CHBR3 + OH -> 3*BR ; 9e-13, -360 +[HCFC141B_OH] HCFC141B + OH -> CL + COFCL ; 1.25e-12, -1600 +[HCFC142B_OH] HCFC142B + OH -> CL + COF2 ; 1.3e-12, -1770 +[HCFC22_OH] HCFC22 + OH -> H2O + CL + COF2 ; 9.2e-13, -1560 +[O1D_CH2BR2] O1D + CH2BR2 -> 2*BR ; 2.57e-10 +[O1D_CH3BR] O1D + CH3BR -> BR ; 1.8e-10 +[O1D_HCFC141B] O1D + HCFC141B -> CL + COFCL ; 1.794e-10 +[O1D_HCFC142B] O1D + HCFC142B -> CL + COF2 ; 1.3e-10 +[O1D_HCFC22] O1D + HCFC22 -> CL + COF2 ; 7.65e-11 +********************************* +*** C1 +********************************* +[CH2O_NO3] CH2O + NO3 -> CO + HO2 + HNO3 ; 6e-13, -2058 +[CH2O_O] CH2O + O -> HO2 + OH + CO ; 3.4e-11, -1600 +[CH2O_OH] CH2O + OH -> CO + H2O + H ; 5.5e-12, 125 +[CH3O2_CH3O2a] CH3O2 + CH3O2 -> 2*CH2O + 2*HO2 ; 5e-13, -424 +[CH3O2_CH3O2b] CH3O2 + CH3O2 -> CH2O + CH3OH ; 1.9e-14, 706 +[CH3O2_HO2] CH3O2 + HO2 -> CH3OOH + O2 ; 4.1e-13, 750 +[CH3O2_NO] CH3O2 + NO -> CH2O + NO2 + HO2 ; 2.8e-12, 300 +[CH3OH_OH] CH3OH + OH -> HO2 + CH2O ; 2.9e-12, -345 +[CH3OOH_OH] CH3OOH + OH -> 0.7*CH3O2 + 0.3*OH + 0.3*CH2O + H2O ; 3.8e-12, 200 +[CH4_OH] CH4 + OH -> CH3O2 + H2O ; 2.45e-12, -1775 +[O1D_CH4a] O1D + CH4 -> CH3O2 + OH ; 1.31e-10 +[O1D_CH4b] O1D + CH4 -> CH2O + H + HO2 ; 3.5e-11 +[O1D_CH4c] O1D + CH4 -> CH2O + H2 ; 9e-12 +[usr_CO_OH] CO + OH -> CO2 + HO2 +********************************* +*** C2 +********************************* +[C2H4_CL_M] C2H4 + CL + M -> CL + M ; 1.6e-29, 3.3, 3.1e-10, 1, 0.6 +[C2H4_O3] C2H4 + O3 -> 0.63*CO + 0.13*OH + 0.13*HO2 + 0.37*HCOOH + CH2O ; 1.2e-14, -2630 +[C2H5O2_C2H5O2] C2H5O2 + C2H5O2 -> 1.6*CH3CHO + 1.2*HO2 + 0.4*C2H5OH ; 6.8e-14 +[C2H5O2_CH3O2] C2H5O2 + CH3O2 -> 0.7*CH2O + 0.8*CH3CHO + HO2 + 0.3*CH3OH + 0.2*C2H5OH ; 2e-13 +[C2H5O2_HO2] C2H5O2 + HO2 -> C2H5OOH + O2 ; 7.5e-13, 700 +[C2H5O2_NO] C2H5O2 + NO -> CH3CHO + HO2 + NO2 ; 2.6e-12, 365 +[C2H5OH_OH] C2H5OH + OH -> HO2 + CH3CHO ; 6.9e-12, -230 +[C2H5OOH_OH] C2H5OOH + OH -> 0.5*C2H5O2 + 0.5*CH3CHO + 0.5*OH ; 3.8e-12, 200 +[C2H6_CL] C2H6 + CL -> HCL + C2H5O2 ; 7.2e-11, -70 +[C2H6_OH] C2H6 + OH -> C2H5O2 + H2O ; 7.66e-12, -1020 +[CH3CHO_NO3] CH3CHO + NO3 -> CH3CO3 + HNO3 ; 1.4e-12, -1900 +[CH3CHO_OH] CH3CHO + OH -> CH3CO3 + H2O ; 4.63e-12, 350 +[CH3CO3_CH3CO3] CH3CO3 + CH3CO3 -> 2*CH3O2 + 2*CO2 ; 2.9e-12, 500 +[CH3CO3_CH3O2] CH3CO3 + CH3O2 -> 0.9*CH3O2 + CH2O + 0.9*HO2 + 0.9*CO2 + 0.1*CH3COOH ; 2e-12, 500 +[CH3CO3_HO2] CH3CO3 + HO2 -> 0.4*CH3COOOH + 0.15*CH3COOH + 0.15*O3 + 0.45*OH + 0.45*CH3O2 ; 4.3e-13, 1040 +[CH3CO3_NO] CH3CO3 + NO -> CH3O2 + CO2 + NO2 ; 8.1e-12, 270 +[CH3COOH_OH] CH3COOH + OH -> CH3O2 + CO2 + H2O ; 3.15e-14, 920 +[CH3COOOH_OH] CH3COOOH + OH -> 0.5*CH3CO3 + 0.5*CH2O + 0.5*CO2 + H2O ; 1e-12 +[EO2_HO2] EO2 + HO2 -> EOOH ; 7.5e-13, 700 +[EO2_NO] EO2 + NO -> 0.5*CH2O + 0.25*HO2 + 0.75*EO + NO2 ; 4.2e-12, 180 +[EO_M] EO -> 2*CH2O + HO2 ; 1.6e+11, -4150 +[EO_O2] EO + O2 -> GLYALD + HO2 ; 1e-14 +[GLYALD_OH] GLYALD + OH -> HO2 + 0.2*GLYOXAL + 0.8*CH2O + 0.8*CO2 ; 1e-11 +[GLYOXAL_OH] GLYOXAL + OH -> HO2 + CO + CO2 ; 1.15e-11 +[PAN_OH] PAN + OH -> CH2O + NO3 ; 4e-14 +[tag_C2H4_OH] C2H4 + OH + M -> EO2 + M ; 8.6e-29, 3.1, 9e-12, 0.85, 0.48 +[tag_CH3CO3_NO2] CH3CO3 + NO2 + M -> PAN + M ; 7.3e-29, 4.1, 9.5e-12, 1.6, 0.6 +[usr_PAN_M] PAN + M -> CH3CO3 + NO2 + M +********************************* +*** C3 +********************************* +[C3H6_NO3] C3H6 + NO3 -> NOA ; 4.6e-13, -1156 +[C3H6_O3] C3H6 + O3 -> 0.5*CH2O + 0.12*HCOOH + 0.12*CH3COOH + 0.5*CH3CHO + 0.56*CO + 0.28*CH3O2 + 0.1*CH4 + 0.2*CO2 + 0.28*HO2 + 0.36*OH ; 6.5e-15, -1900 +[C3H7O2_CH3O2] C3H7O2 + CH3O2 -> CH2O + HO2 + 0.82*CH3COCH3 ; 3.75e-13, -40 +[C3H7O2_HO2] C3H7O2 + HO2 -> C3H7OOH + O2 ; 7.5e-13, 700 +[C3H7O2_NO] C3H7O2 + NO -> 0.82*CH3COCH3 + NO2 + HO2 + 0.27*CH3CHO ; 4.2e-12, 180 +[C3H7OOH_OH] C3H7OOH + OH -> H2O + C3H7O2 ; 3.8e-12, 200 +[C3H8_OH] C3H8 + OH -> C3H7O2 + H2O ; 9.19e-12, -630 +[CH3COCHO_NO3] CH3COCHO + NO3 -> HNO3 + CO + CH3CO3 ; 1.4e-12, -1860 +[CH3COCHO_OH] CH3COCHO + OH -> CH3CO3 + CO + H2O ; 8.4e-13, 830 +[HYAC_OH] HYAC + OH -> CH3COCHO + HO2 ; 3e-12 +[NOA_OH] NOA + OH -> NO2 + CH3COCHO ; 6.7e-13 +[PO2_HO2] PO2 + HO2 -> POOH + O2 ; 7.5e-13, 700 +[PO2_NO] PO2 + NO -> CH3CHO + CH2O + HO2 + NO2 ; 4.2e-12, 180 +[POOH_OH] POOH + OH -> 0.5*PO2 + 0.5*OH + 0.5*HYAC + H2O ; 3.8e-12, 200 +[RO2_CH3O2] RO2 + CH3O2 -> 0.3*CH3CO3 + 0.8*CH2O + 0.3*HO2 + 0.2*HYAC + 0.5*CH3COCHO + 0.5*CH3OH ; 7.1e-13, 500 +[RO2_HO2] RO2 + HO2 -> 0.85*ROOH + 0.15*OH + 0.15*CH2O + 0.15*CH3CO3 ; 8.6e-13, 700 +[RO2_NO] RO2 + NO -> CH3CO3 + CH2O + NO2 ; 2.9e-12, 300 +[ROOH_OH] ROOH + OH -> RO2 + H2O ; 3.8e-12, 200 +[tag_C3H6_OH] C3H6 + OH + M -> PO2 + M ; 8e-27, 3.5, 3e-11, 0, 0.5 +[usr_CH3COCH3_OH] CH3COCH3 + OH -> RO2 + H2O +********************************* +*** C4 +********************************* +[MACRO2_CH3CO3] MACRO2 + CH3CO3 -> 0.25*CH3COCHO + CH3O2 + 0.22*CO + 0.47*HO2 + 0.53*GLYALD + 0.22*HYAC + 0.25*CH2O + 0.53*CH3CO3 ; 1.4e-11 +[MACRO2_CH3O2] MACRO2 + CH3O2 -> 0.73*HO2 + 0.88*CH2O + 0.11*CO + 0.24*CH3COCHO + 0.26*GLYALD + 0.26*CH3CO3 + 0.25*CH3OH + 0.23*HYAC ; 5e-13, 400 +[MACRO2_HO2] MACRO2 + HO2 -> MACROOH ; 8e-13, 700 +[MACRO2_NO3] MACRO2 + NO3 -> NO2 + 0.47*HO2 + 0.25*CH2O + 0.25*CH3COCHO + 0.22*CO + 0.53*GLYALD + 0.22*HYAC + 0.53*CH3CO3 ; 2.4e-12 +[MACRO2_NOa] MACRO2 + NO -> NO2 + 0.47*HO2 + 0.25*CH2O + 0.53*GLYALD + 0.25*CH3COCHO + 0.53*CH3CO3 + 0.22*HYAC + 0.22*CO ; 2.7e-12, 360 +[MACRO2_NOb] MACRO2 + NO -> 0.8*ONITR ; 1.3e-13, 360 +[MACR_O3] MACR + O3 -> 0.12*CH2O + 0.24*OH + 0.65*CO + 0.1*CH3CO3 + 0.88*CH3COCHO + 0.33*HCOOH + 0.14*HO2 ; 1.5e-15, -2100 +[MACR_OH] MACR + OH -> 0.5*MACRO2 + 0.5*H2O + 0.5*MCO3 ; 9.6e-12, 360 +[MACROOH_OH] MACROOH + OH -> 0.5*MCO3 + 0.2*MACRO2 + 0.1*OH + 0.2*HO2 ; 2.3e-11, 200 +[MCO3_CH3CO3] MCO3 + CH3CO3 -> 2*CO2 + CH3O2 + CH2O + CH3CO3 ; 4.6e-12, 530 +[MCO3_CH3O2] MCO3 + CH3O2 -> 2*CH2O + HO2 + CO2 + CH3CO3 ; 2e-12, 500 +[MCO3_HO2] MCO3 + HO2 -> 0.15*O3 + 0.15*CH3COOH + 0.4*CH3COOOH + 0.45*OH + 0.45*CO2 + 0.45*CH2O + 0.45*CH3CO3 ; 4.3e-13, 1040 +[MCO3_MCO3] MCO3 + MCO3 -> 2*CO2 + 2*CH2O + 2*CH3CO3 ; 2.3e-12, 530 +[MCO3_NO] MCO3 + NO -> NO2 + CH2O + CH3CO3 ; 5.3e-12, 360 +[MCO3_NO3] MCO3 + NO3 -> NO2 + CH2O + CH3CO3 ; 5e-12 +[MPAN_OH_M] MPAN + OH + M -> 0.5*HYAC + 0.5*NO3 + 0.5*CH2O + 0.5*HO2 + 0.5*CO2 + M + 0.5*NDEP ; 8e-27, 3.5, 3e-11, 0, 0.5 +[MVK_O3] MVK + O3 -> 0.6*CH2O + 0.56*CO + 0.1*CH3CHO + 0.1*CO2 + 0.28*CH3CO3 + 0.5*CH3COCHO + 0.28*HO2 + 0.36*OH + 0.12*HCOOH ; 8.5e-16, -1520 +[MVK_OH] MVK + OH -> MACRO2 ; 4.13e-12, 452 +[tag_MCO3_NO2] MCO3 + NO2 + M -> MPAN + M ; 9.7e-29, 5.6, 9.3e-12, 1.5, 0.6 +[usr_MPAN_M] MPAN + M -> MCO3 + NO2 + M +********************************* +*** C5 +********************************* +[BIGALK_OH] BIGALK + OH -> 1.67*C3H7O2 ; 3.5e-12 +[HYDRALD_OH] HYDRALD + OH -> XO2 ; 1.86e-11, 175 +[ISOP_NO3] ISOP + NO3 -> ISOPNO3 ; 3.03e-12, -446 +[ISOPNO3_HO2] ISOPNO3 + HO2 -> 0.206*NO2 + 0.206*CH2O + 0.206*OH + 0.167*MACR + 0.039*MVK + 0.794*ONITR ; 8e-13, 700 +[ISOPNO3_NO] ISOPNO3 + NO -> 1.206*NO2 + 0.794*HO2 + 0.072*CH2O + 0.167*MACR + 0.039*MVK + 0.794*ONITR ; 2.7e-12, 360 +[ISOPNO3_NO3] ISOPNO3 + NO3 -> 1.206*NO2 + 0.072*CH2O + 0.167*MACR + 0.039*MVK + 0.794*ONITR + 0.794*HO2 ; 2.4e-12 +[ISOPO2_CH3CO3] ISOPO2 + CH3CO3 -> CH3O2 + HO2 + 0.6*CH2O + 0.25*MACR + 0.35*MVK + 0.4*HYDRALD ; 1.4e-11 +[ISOPO2_CH3O2] ISOPO2 + CH3O2 -> 0.25*CH3OH + HO2 + 1.2*CH2O + 0.19*MACR + 0.26*MVK + 0.3*HYDRALD ; 5e-13, 400 +[ISOPO2_HO2] ISOPO2 + HO2 -> ISOPOOH ; 8e-13, 700 +[ISOPO2_NO] ISOPO2 + NO -> 0.08*ONITR + 0.92*NO2 + 0.23*MACR + 0.32*MVK + 0.33*HYDRALD + 0.02*GLYOXAL + 0.02*GLYALD + 0.02*CH3COCHO + 0.02*HYAC + 0.55*CH2O + 0.92*HO2 ; 4.4e-12, 180 +[ISOPO2_NO3] ISOPO2 + NO3 -> HO2 + NO2 + 0.6*CH2O + 0.25*MACR + 0.35*MVK + 0.4*HYDRALD ; 2.4e-12 +[ISOP_O3] ISOP + O3 -> 0.3*MACR + 0.2*MVK + 0.11*HCOOH + 0.62*CO + 0.32*OH + 0.37*HO2 + 0.91*CH2O + 0.08*CH3CO3 + 0.13*C3H6 + 0.05*CH3O2 ; 1.05e-14, -2000 +[ISOP_OH] ISOP + OH -> ISOPO2 ; 2.54e-11, 410 +[ISOPOOH_OH] ISOPOOH + OH -> 0.8*XO2 + 0.2*ISOPO2 ; 1.52e-11, 200 +[ONITR_NO3] ONITR + NO3 -> HO2 + NO2 + HYDRALD ; 1.4e-12, -1860 +[ONITR_OH] ONITR + OH -> HYDRALD + 0.4*NO2 + HO2 ; 4.5e-11 +[XO2_CH3CO3] XO2 + CH3CO3 -> 0.25*CO + 0.25*CH2O + 0.25*GLYOXAL + CH3O2 + HO2 + 0.25*CH3COCHO + 0.25*HYAC + 0.25*GLYALD + CO2 ; 1.3e-12, 640 +[XO2_CH3O2] XO2 + CH3O2 -> 0.3*CH3OH + 0.8*HO2 + 0.8*CH2O + 0.2*CO + 0.1*GLYOXAL + 0.1*CH3COCHO + 0.1*HYAC + 0.1*GLYALD ; 5e-13, 400 +[XO2_HO2] XO2 + HO2 -> XOOH ; 8e-13, 700 +[XO2_NO] XO2 + NO -> NO2 + HO2 + 0.25*CO + 0.25*CH2O + 0.25*GLYOXAL + 0.25*CH3COCHO + 0.25*HYAC + 0.25*GLYALD ; 2.7e-12, 360 +[XO2_NO3] XO2 + NO3 -> NO2 + HO2 + 0.5*CO + 0.25*HYAC + 0.25*GLYOXAL + 0.25*CH3COCHO + 0.25*GLYALD ; 2.4e-12 +[XOOH_OH] XOOH + OH -> 0.5*XO2 + 0.5*OH ; 1.52e-12, 200 +********************************* +*** C10 +********************************* +[TERP_NO3] TERP + NO3 -> 1.7*ISOPO2 + NO2 ; 1.2e-12, 490 +[TERP_O3] TERP + O3 -> 1.122*MACR + 0.442*MVK + 0.765*O + 1.156*OH ; 6.3e-16, -580 +[TERP_OH] TERP + OH -> 1.64*ISOPO2 + 0.1*CH3COCH3 ; 1.2e-11, 440 +********************************* +*** Sulfur +********************************* +[DMS_NO3] DMS + NO3 -> SO2 + HNO3 ; 1.9e-13, 520 +[DMS_OHa] DMS + OH -> SO2 ; 1.1e-11, -280 +[OCS_O] OCS + O -> SO + CO ; 2.1e-11, -2200 +[OCS_OH] OCS + OH -> SO2 + CO + H ; 7.2e-14, -1070 +[S_O2] S + O2 -> SO + O ; 2.3e-12 +[SO2_OH_M] SO2 + OH + M -> SO3 + HO2 ; 2.9e-31, 4.1, 1.7e-12, -0.2, 0.6 +[S_O3] S + O3 -> SO + O2 ; 1.2e-11 +[SO_BRO] SO + BRO -> SO2 + BR ; 5.7e-11 +[SO_CLO] SO + CLO -> SO2 + CL ; 2.8e-11 +[S_OH] S + OH -> SO + H ; 6.6e-11 +[SO_NO2] SO + NO2 -> SO2 + NO ; 1.4e-11 +[SO_O2] SO + O2 -> SO2 + O ; 1.6e-13, -2280 +[SO_O3] SO + O3 -> SO2 + O2 ; 3.4e-12, -1100 +[SO_OCLO] SO + OCLO -> SO2 + CLO ; 1.9e-12 +[SO_OH] SO + OH -> SO2 + H ; 2.6e-11, 330 +[usr_DMS_OH] DMS + OH -> 0.5*SO2 + 0.5*HO2 +[usr_SO3_H2O] SO3 + H2O -> H2SO4 +********************************* +*** Tropospheric Aerosol +********************************* +[NH3_OH] NH3 + OH -> H2O + 1*NHDEP ; 1.7e-12, -710 +[usr_HO2_aer] HO2 -> H2O +[usr_N2O5_aer] N2O5 -> 2*HNO3 +[usr_NH4_strat_tau] NH4 -> 1*NHDEP ; 6.34e-08 +[usr_NO2_aer] NO2 -> 0.5*OH + 0.5*NO + 0.5*HNO3 +[usr_NO3_aer] NO3 -> HNO3 +[usr_ONITR_aer] ONITR -> HNO3 +********************************* +*** SOA +********************************* +[SOAE_tau] SOAE -> SOAG ; 1.157e-05 +********************************* +*** Stratospheric Aerosol +********************************* +[het1] N2O5 -> 2*HNO3 +[het10] HOCL + HCL -> CL2 + H2O +[het11] BRONO2 -> HOBR + HNO3 +[het12] N2O5 -> 2*HNO3 +[het13] CLONO2 -> HOCL + HNO3 +[het14] BRONO2 -> HOBR + HNO3 +[het15] CLONO2 + HCL -> CL2 + HNO3 +[het16] HOCL + HCL -> CL2 + H2O +[het17] HOBR + HCL -> BRCL + H2O +[het2] CLONO2 -> HOCL + HNO3 +[het3] BRONO2 -> HOBR + HNO3 +[het4] CLONO2 + HCL -> CL2 + HNO3 +[het5] HOCL + HCL -> CL2 + H2O +[het6] HOBR + HCL -> BRCL + H2O +[het7] N2O5 -> 2*HNO3 +[het8] CLONO2 -> HOCL + HNO3 +[het9] CLONO2 + HCL -> CL2 + HNO3 +********************************* +*** Ions +********************************* +[ag247nm,cph=483.39] Op2P -> Op ; 0.047 +[ag373nm,cph=321.3] Op2D -> Op ; 7.7e-05 +[ag732nm,cph=163.06] Op2P -> Op2D ; 0.171 +[elec1,cph=82.389] NOp + e -> 0.2*N + 0.8*N2D + O +[elec2,cph=508.95] O2p + e -> 1.15*O + 0.85*O1D +[elec3,cph=354.83] N2p + e -> 1.1*N + 0.9*N2D +[ion_N2p_O2,cph=339.59] N2p + O2 -> O2p + N2 ; 6e-11 +[ion_N2p_Oa,cph=67.53] N2p + O -> NOp + N2D +[ion_N2p_Ob] N2p + O -> Op + N2 +[ion_Np_O,cph=95.55] Np + O -> Op + N ; 1e-12 +[ion_Np_O2a,cph=239.84] Np + O2 -> O2p + N ; 4e-10 +[ion_Np_O2b,cph=646.28] Np + O2 -> NOp + O ; 2e-10 +[ion_O2p_N,cph=406.16] O2p + N -> NOp + O ; 1e-10 +[ion_O2p_N2] O2p + N2 -> NOp + NO ; 5e-16 +[ion_O2p_NO,cph=271.38] O2p + NO -> NOp + O2 ; 4.4e-10 +[ion_Op_CO2] Op + CO2 -> O2p + CO ; 9e-10 +[ion_Op_N2,cph=105.04] Op + N2 -> NOp + N +[ion_Op_N2D,cph=139.9] Op + N2D -> Np + O ; 1.3e-10 +[ion_Op_O2,cph=150.11] Op + O2 -> O2p + O +[Op2D_e,cph=319.37] Op2D + e -> Op + e +[Op2D_N2,cph=128.32] Op2D + N2 -> N2p + O ; 8e-10 +[Op2D_O,cph=319.36] Op2D + O -> Op + O ; 5e-12 +[Op2D_O2,cph=469.4] Op2D + O2 -> O2p + O ; 7e-10 +[Op2P_ea,cph=163.06] Op2P + e -> Op2D + e +[Op2P_eb,cph=482.43] Op2P + e -> Op + e +[Op2P_N2a,cph=291.38] Op2P + N2 -> N2p + O ; 4.8e-10 +[Op2P_N2b,cph=67.54] Op2P + N2 -> Np + NO ; 1e-10 +[Op2P_O,cph=501.72] Op2P + O -> Op + O ; 4e-10 + End Reactions + + Ext Forcing + num_a1 <- dataset + num_a2 <- dataset + so4_a1 <- dataset + so4_a2 <- dataset + num_a4 <- dataset + bc_a4 <- dataset + pom_a4 <- dataset + num_a5 <- dataset + so4_a5 <- dataset + CO <- dataset + NO2 <- dataset + NO <- dataset + SO2 <- dataset + O2p + N2p + Np + N2D + Op + N + e + OH + End Ext Forcing + + End Chemistry + + SIMULATION PARAMETERS + + Version Options + machine = nec + model = cam + model_architecture = VECTOR + vector_length = 32 + architecture = hybrid + namemod = on + End Version Options + + + End Simulation Parameters From fe70a0bd11fb73fc596eed5e7b4d7c79b08a02d9 Mon Sep 17 00:00:00 2001 From: Francis Vitt Date: Wed, 15 Jan 2025 14:55:59 -0700 Subject: [PATCH 02/14] start WACCM7 compsets modified: bld/config_files/definition.xml modified: cime_config/config_component.xml modified: cime_config/config_compsets.xml --- bld/config_files/definition.xml | 7 +- cime_config/config_component.xml | 9 +- cime_config/config_compsets.xml | 12 + .../pp_waccm_t4ma_mam5/chem_mech.doc | 1280 ++++ .../pp_waccm_t4ma_mam5/chem_mods.F90 | 51 + src/chemistry/pp_waccm_t4ma_mam5/m_rxt_id.F90 | 438 ++ src/chemistry/pp_waccm_t4ma_mam5/m_spc_id.F90 | 154 + .../pp_waccm_t4ma_mam5/mo_adjrxt.F90 | 335 + .../pp_waccm_t4ma_mam5/mo_exp_sol.F90 | 81 + .../pp_waccm_t4ma_mam5/mo_imp_sol.F90 | 435 ++ .../pp_waccm_t4ma_mam5/mo_indprd.F90 | 183 + .../pp_waccm_t4ma_mam5/mo_lin_matrix.F90 | 458 ++ .../pp_waccm_t4ma_mam5/mo_lu_factor.F90 | 6490 +++++++++++++++++ .../pp_waccm_t4ma_mam5/mo_lu_solve.F90 | 1772 +++++ .../pp_waccm_t4ma_mam5/mo_nln_matrix.F90 | 2654 +++++++ .../pp_waccm_t4ma_mam5/mo_phtadj.F90 | 33 + .../pp_waccm_t4ma_mam5/mo_prod_loss.F90 | 881 +++ .../pp_waccm_t4ma_mam5/mo_rxt_rates_conv.F90 | 447 ++ .../pp_waccm_t4ma_mam5/mo_setrxt.F90 | 572 ++ .../pp_waccm_t4ma_mam5/mo_sim_dat.F90 | 675 ++ 20 files changed, 16963 insertions(+), 4 deletions(-) create mode 100644 src/chemistry/pp_waccm_t4ma_mam5/chem_mech.doc create mode 100644 src/chemistry/pp_waccm_t4ma_mam5/chem_mods.F90 create mode 100644 src/chemistry/pp_waccm_t4ma_mam5/m_rxt_id.F90 create mode 100644 src/chemistry/pp_waccm_t4ma_mam5/m_spc_id.F90 create mode 100644 src/chemistry/pp_waccm_t4ma_mam5/mo_adjrxt.F90 create mode 100644 src/chemistry/pp_waccm_t4ma_mam5/mo_exp_sol.F90 create mode 100644 src/chemistry/pp_waccm_t4ma_mam5/mo_imp_sol.F90 create mode 100644 src/chemistry/pp_waccm_t4ma_mam5/mo_indprd.F90 create mode 100644 src/chemistry/pp_waccm_t4ma_mam5/mo_lin_matrix.F90 create mode 100644 src/chemistry/pp_waccm_t4ma_mam5/mo_lu_factor.F90 create mode 100644 src/chemistry/pp_waccm_t4ma_mam5/mo_lu_solve.F90 create mode 100644 src/chemistry/pp_waccm_t4ma_mam5/mo_nln_matrix.F90 create mode 100644 src/chemistry/pp_waccm_t4ma_mam5/mo_phtadj.F90 create mode 100644 src/chemistry/pp_waccm_t4ma_mam5/mo_prod_loss.F90 create mode 100644 src/chemistry/pp_waccm_t4ma_mam5/mo_rxt_rates_conv.F90 create mode 100644 src/chemistry/pp_waccm_t4ma_mam5/mo_setrxt.F90 create mode 100644 src/chemistry/pp_waccm_t4ma_mam5/mo_sim_dat.F90 diff --git a/bld/config_files/definition.xml b/bld/config_files/definition.xml index 0b7b6bca45..a5b2f30838 100644 --- a/bld/config_files/definition.xml +++ b/bld/config_files/definition.xml @@ -46,10 +46,11 @@ Switch to turn on analytic initial conditions for the dynamics state: 0 => no 1 => yes. - + Model top specifier - set by compset definition lt: ~ 40 km top mt: ~ 80 km top + ht: ~ 140 km top Option to turn on waccmx thermosphere/ionosphere extension: 0 => no, 1 => yes @@ -103,8 +104,8 @@ meteor_smoke (Meteor Smoke), mixed_sulfate (Meteor Smoke and Sulfate), pmc (Pola sulfate (Sulfate Aerosols), tholin (early earth haze), test_detrain (Detrainment), test_growth (Particle Growth), test_passive (Passive Dust), test_radiative (Radiatively Active Dust), test_swelling (Sea Salt), test_tracers (Asian Monsoon), test_tracers2 (Guam). - - Chemistry package: none,ghg_mam4,terminator,trop_mam3,trop_mam4,trop_mam7,trop_mozart,trop_strat_mam4_ts2,trop_strat_mam4_vbs,trop_strat_mam4_vbsext,trop_strat_mam5_ts2,trop_strat_mam5_ts4,trop_strat_mam5_vbs,trop_strat_mam5_vbsext,waccm_ma,waccm_mad,waccm_ma_sulfur,waccm_sc,waccm_sc_mam4,waccm_mad_mam4,waccm_ma_mam4,waccm_tsmlt_mam4,waccm_tsmlt_mam4_vbsext,waccm_mad_mam5,waccm_ma_mam5,waccm_tsmlt_mam5,waccm_tsmlt_mam5_vbsext,geoschem_mam4 + + Chemistry package: none,ghg_mam4,terminator,trop_mam3,trop_mam4,trop_mam7,trop_mozart,trop_strat_mam4_ts2,trop_strat_mam4_vbs,trop_strat_mam4_vbsext,trop_strat_mam5_ts2,trop_strat_mam5_ts4,trop_strat_mam5_vbs,trop_strat_mam5_vbsext,waccm_ma,waccm_mad,waccm_ma_sulfur,waccm_sc,waccm_sc_mam4,waccm_mad_mam4,waccm_ma_mam4,waccm_tsmlt_mam4,waccm_tsmlt_mam4_vbsext,waccm_mad_mam5,waccm_ma_mam5,waccm_tsmlt_mam5,waccm_tsmlt_mam5_vbsext,waccm_t4ma_mam5,geoschem_mam4 Prognostic mozart species packages: list of any subset of the following: DST,SSLT,SO4,GHG,OC,BC,CARBON16 diff --git a/cime_config/config_component.xml b/cime_config/config_component.xml index 45b2506bbf..e67e8918d5 100644 --- a/cime_config/config_component.xml +++ b/cime_config/config_component.xml @@ -8,7 +8,7 @@ CAM =============== --> - CAM cam7 physics: + CAM cam7 physics: CAM cam6 physics: CAM cam5 physics: CAM cam4 physics: @@ -38,6 +38,9 @@ CAM-Chem troposphere/stratosphere chemistry with simplified VBS-SOA: CAM-Chem troposphere/stratosphere chemistry with simplified VBS-SOA and expanded isoprene and terpene oxidation: CAM-Chem troposphere/stratosphere simplified chemistry for climate simulations: + WACCM chemistiry .... + WACCM chemistiry .... + WACCM chemistiry .... GEOS-Chem troposphere/stratosphere chemistry : CAM-Chem troposphere/stratosphere chem with simplified volatility basis set SOA scheme and fire emissons : CAM CLUBB - turned on by default in CAM60: @@ -142,6 +145,9 @@ -chem trop_strat_mam5_vbsext -chem trop_strat_mam5_ts2 -chem trop_strat_mam5_ts4 + -chem waccm_ma_mam5 + -chem waccm_tsmlt_mam5 + -chem waccm_t4ma_mam5 -clubb_sgs -rad camrt -chem none -spcam_nx 32 -spcam_ny 1 -spcam_dx 4000 -spcam_dt 20 -phys spcam_sam1mom -rad camrt -chem none -spcam_nx 32 -spcam_ny 1 -spcam_dx 4000 -spcam_dt 20 -phys spcam_sam1mom -spcam_clubb_sgs @@ -174,6 +180,7 @@ -nlev 145 -nlev 58 -model_top lt -nlev 93 -model_top mt + -nlev 135 -model_top ht -scam arm95 diff --git a/cime_config/config_compsets.xml b/cime_config/config_compsets.xml index 31eba44982..2d8eaeb838 100644 --- a/cime_config/config_compsets.xml +++ b/cime_config/config_compsets.xml @@ -458,6 +458,18 @@ FHISTC_MTt1s HISTC_CAM70%MT%CT1S_CLM60%SP_CICE%PRES_DOCN%DOM_MOSART_SGLC_SWAV + + FWt0maHISTC + HISTC_CAM70%HT%CT0MA_CLM60%SP_CICE%PRES_DOCN%DOM_MOSART_SGLC_SWAV + + + FWt1maHISTC + HISTC_CAM70%HT%CT1MA_CLM60%SP_CICE%PRES_DOCN%DOM_MOSART_SGLC_SWAV + + + FWt4maHISTC + HISTC_CAM70%HT%CT4MA_CLM60%SP_CICE%PRES_DOCN%DOM_MOSART_SGLC_SWAV + FHISTC_MTt4s HISTC_CAM70%MT%CT4S_CLM60%SP_CICE%PRES_DOCN%DOM_MOSART_SGLC_SWAV diff --git a/src/chemistry/pp_waccm_t4ma_mam5/chem_mech.doc b/src/chemistry/pp_waccm_t4ma_mam5/chem_mech.doc new file mode 100644 index 0000000000..d7023e909e --- /dev/null +++ b/src/chemistry/pp_waccm_t4ma_mam5/chem_mech.doc @@ -0,0 +1,1280 @@ + + + Solution species + ( 1) bc_a1 (C) + ( 2) bc_a4 (C) + ( 3) BIGALK (C5H12) + ( 4) BR (Br) + ( 5) BRCL (BrCl) + ( 6) BRO (BrO) + ( 7) BRONO2 (BrONO2) + ( 8) BRY + ( 9) C2H4 + ( 10) C2H5O2 + ( 11) C2H5OH + ( 12) C2H5OOH + ( 13) C2H6 + ( 14) C3H6 + ( 15) C3H7O2 + ( 16) C3H7OOH + ( 17) C3H8 + ( 18) CCL4 (CCl4) + ( 19) CF2CLBR (CF2ClBr) + ( 20) CF3BR (CF3Br) + ( 21) CFC11 (CFCl3) + ( 22) CFC113 (CCl2FCClF2) + ( 23) CFC114 (CClF2CClF2) + ( 24) CFC115 (CClF2CF3) + ( 25) CFC12 (CF2Cl2) + ( 26) CH2BR2 (CH2Br2) + ( 27) CH2O + ( 28) CH3BR (CH3Br) + ( 29) CH3CCL3 (CH3CCl3) + ( 30) CH3CHO + ( 31) CH3CL (CH3Cl) + ( 32) CH3CO3 + ( 33) CH3COCH3 + ( 34) CH3COCHO + ( 35) CH3COOH + ( 36) CH3COOOH + ( 37) CH3O2 + ( 38) CH3OH + ( 39) CH3OOH + ( 40) CH4 + ( 41) CHBR3 (CHBr3) + ( 42) CL (Cl) + ( 43) CL2 (Cl2) + ( 44) CL2O2 (Cl2O2) + ( 45) CLO (ClO) + ( 46) CLONO2 (ClONO2) + ( 47) CLY + ( 48) CO + ( 49) CO2 + ( 50) COF2 + ( 51) COFCL (COFCl) + ( 52) DMS (CH3SCH3) + ( 53) dst_a1 (AlSiO5) + ( 54) dst_a2 (AlSiO5) + ( 55) dst_a3 (AlSiO5) + ( 56) EO (HOCH2CH2O) + ( 57) EO2 (HOCH2CH2O2) + ( 58) EOOH (HOCH2CH2OOH) + ( 59) F + ( 60) GLYALD (HOCH2CHO) + ( 61) GLYOXAL (C2H2O2) + ( 62) H + ( 63) H2 + ( 64) H2402 (CBrF2CBrF2) + ( 65) H2O2 + ( 66) H2SO4 (H2SO4) + ( 67) HBR (HBr) + ( 68) HCFC141B (CH3CCl2F) + ( 69) HCFC142B (CH3CClF2) + ( 70) HCFC22 (CHF2Cl) + ( 71) HCL (HCl) + ( 72) HF + ( 73) HNO3 + ( 74) HO2NO2 + ( 75) HOBR (HOBr) + ( 76) HOCL (HOCl) + ( 77) HYAC (CH3COCH2OH) + ( 78) HYDRALD (HOCH2CCH3CHCHO) + ( 79) ISOP (C5H8) + ( 80) ISOPNO3 (CH2CHCCH3OOCH2ONO2) + ( 81) ISOPO2 (HOCH2COOCH3CHCH2) + ( 82) ISOPOOH (HOCH2COOHCH3CHCH2) + ( 83) MACR (CH2CCH3CHO) + ( 84) MACRO2 (CH3COCHO2CH2OH) + ( 85) MACROOH (CH3COCHOOHCH2OH) + ( 86) MCO3 (CH2CCH3CO3) + ( 87) MPAN (CH2CCH3CO3NO2) + ( 88) MVK (CH2CHCOCH3) + ( 89) N + ( 90) N2O + ( 91) N2O5 + ( 92) ncl_a1 (NaCl) + ( 93) ncl_a2 (NaCl) + ( 94) ncl_a3 (NaCl) + ( 95) NH3 + ( 96) NH4 + ( 97) NO + ( 98) NO2 + ( 99) NO3 + (100) NOA (CH3COCH2ONO2) + (101) num_a1 (H) + (102) num_a2 (H) + (103) num_a3 (H) + (104) num_a4 (H) + (105) num_a5 (H) + (106) O + (107) O2 + (108) O3 + (109) OCLO (OClO) + (110) OCS (OCS) + (111) OH + (112) ONITR (C4H7NO4) + (113) PAN (CH3CO3NO2) + (114) PO2 (C3H6OHO2) + (115) pom_a1 (C) + (116) pom_a4 (C) + (117) POOH (C3H6OHOOH) + (118) RO2 (CH3COCH2O2) + (119) ROOH (CH3COCH2OOH) + (120) S (S) + (121) SF6 + (122) SO (SO) + (123) SO2 + (124) SO3 (SO3) + (125) so4_a1 (NH4HSO4) + (126) so4_a2 (NH4HSO4) + (127) so4_a3 (NH4HSO4) + (128) so4_a5 (NH4HSO4) + (129) soa_a1 (C) + (130) soa_a2 (C) + (131) SOAE (C) + (132) SOAG (C) + (133) TERP (C10H16) + (134) XO2 (HOCH2COOCH3CHOHCHO) + (135) XOOH (HOCH2COOHCH3CHOHCHO) + (136) NHDEP (N) + (137) NDEP (N) + (138) e (E) + (139) HO2 + (140) N2D (N) + (141) N2p (N2) + (142) NOp (NO) + (143) Np (N) + (144) O1D (O) + (145) O2_1D (O2) + (146) O2_1S (O2) + (147) O2p (O2) + (148) Op (O) + (149) Op2D (O) + (150) Op2P (O) + (151) H2O + + + Invariant species + ( 1) M + ( 2) N2 + + + Column integrals + ( 1) O3 - 0.000E+00 + ( 2) O2 - 0.000E+00 + +Class List +========== + Explicit + -------- + ( 1) NHDEP + ( 2) NDEP + + Implicit + -------- + ( 1) bc_a1 + ( 2) bc_a4 + ( 3) BIGALK + ( 4) BR + ( 5) BRCL + ( 6) BRO + ( 7) BRONO2 + ( 8) BRY + ( 9) C2H4 + ( 10) C2H5O2 + ( 11) C2H5OH + ( 12) C2H5OOH + ( 13) C2H6 + ( 14) C3H6 + ( 15) C3H7O2 + ( 16) C3H7OOH + ( 17) C3H8 + ( 18) CCL4 + ( 19) CF2CLBR + ( 20) CF3BR + ( 21) CFC11 + ( 22) CFC113 + ( 23) CFC114 + ( 24) CFC115 + ( 25) CFC12 + ( 26) CH2BR2 + ( 27) CH2O + ( 28) CH3BR + ( 29) CH3CCL3 + ( 30) CH3CHO + ( 31) CH3CL + ( 32) CH3CO3 + ( 33) CH3COCH3 + ( 34) CH3COCHO + ( 35) CH3COOH + ( 36) CH3COOOH + ( 37) CH3O2 + ( 38) CH3OH + ( 39) CH3OOH + ( 40) CH4 + ( 41) CHBR3 + ( 42) CL + ( 43) CL2 + ( 44) CL2O2 + ( 45) CLO + ( 46) CLONO2 + ( 47) CLY + ( 48) CO + ( 49) CO2 + ( 50) COF2 + ( 51) COFCL + ( 52) DMS + ( 53) dst_a1 + ( 54) dst_a2 + ( 55) dst_a3 + ( 56) EO + ( 57) EO2 + ( 58) EOOH + ( 59) F + ( 60) GLYALD + ( 61) GLYOXAL + ( 62) H + ( 63) H2 + ( 64) H2402 + ( 65) H2O2 + ( 66) H2SO4 + ( 67) HBR + ( 68) HCFC141B + ( 69) HCFC142B + ( 70) HCFC22 + ( 71) HCL + ( 72) HF + ( 73) HNO3 + ( 74) HO2NO2 + ( 75) HOBR + ( 76) HOCL + ( 77) HYAC + ( 78) HYDRALD + ( 79) ISOP + ( 80) ISOPNO3 + ( 81) ISOPO2 + ( 82) ISOPOOH + ( 83) MACR + ( 84) MACRO2 + ( 85) MACROOH + ( 86) MCO3 + ( 87) MPAN + ( 88) MVK + ( 89) N + ( 90) N2O + ( 91) N2O5 + ( 92) ncl_a1 + ( 93) ncl_a2 + ( 94) ncl_a3 + ( 95) NH3 + ( 96) NH4 + ( 97) NO + ( 98) NO2 + ( 99) NO3 + (100) NOA + (101) num_a1 + (102) num_a2 + (103) num_a3 + (104) num_a4 + (105) num_a5 + (106) O + (107) O2 + (108) O3 + (109) OCLO + (110) OCS + (111) OH + (112) ONITR + (113) PAN + (114) PO2 + (115) pom_a1 + (116) pom_a4 + (117) POOH + (118) RO2 + (119) ROOH + (120) S + (121) SF6 + (122) SO + (123) SO2 + (124) SO3 + (125) so4_a1 + (126) so4_a2 + (127) so4_a3 + (128) so4_a5 + (129) soa_a1 + (130) soa_a2 + (131) SOAE + (132) SOAG + (133) TERP + (134) XO2 + (135) XOOH + (136) e + (137) HO2 + (138) N2D + (139) N2p + (140) NOp + (141) Np + (142) O1D + (143) O2_1D + (144) O2_1S + (145) O2p + (146) Op + (147) Op2D + (148) Op2P + (149) H2O + + Photolysis + jh2o_b ( 1) H2O + hv -> H2 + O1D rate = ** User defined ** ( 1) + jh2o_a ( 2) H2O + hv -> OH + H rate = ** User defined ** ( 2) + jh2o_c ( 3) H2O + hv -> 2*H + O rate = ** User defined ** ( 3) + jh2o2 ( 4) H2O2 + hv -> 2*OH rate = ** User defined ** ( 4) + jo2_a ( 5) O2 + hv -> O + O1D rate = ** User defined ** ( 5) + jo2_b ( 6) O2 + hv -> 2*O rate = ** User defined ** ( 6) + jo3_a ( 7) O3 + hv -> O1D + O2_1D rate = ** User defined ** ( 7) + jo3_b ( 8) O3 + hv -> O + O2 rate = ** User defined ** ( 8) + jhno3 ( 9) HNO3 + hv -> NO2 + OH rate = ** User defined ** ( 9) + jho2no2_a ( 10) HO2NO2 + hv -> OH + NO3 rate = ** User defined ** ( 10) + jho2no2_b ( 11) HO2NO2 + hv -> NO2 + HO2 rate = ** User defined ** ( 11) + jn2o ( 12) N2O + hv -> O1D + N2 rate = ** User defined ** ( 12) + jn2o5_a ( 13) N2O5 + hv -> NO2 + NO3 rate = ** User defined ** ( 13) + jn2o5_b ( 14) N2O5 + hv -> NO + O + NO3 rate = ** User defined ** ( 14) + jno_i ( 15) NO + hv -> NOp + e rate = ** User defined ** ( 15) + jno ( 16) NO + hv -> N + O rate = ** User defined ** ( 16) + jno2 ( 17) NO2 + hv -> NO + O rate = ** User defined ** ( 17) + jno3_a ( 18) NO3 + hv -> NO2 + O rate = ** User defined ** ( 18) + jno3_b ( 19) NO3 + hv -> NO + O2 rate = ** User defined ** ( 19) + jc2h5ooh ( 20) C2H5OOH + hv -> CH3CHO + HO2 + OH rate = ** User defined ** ( 20) + jc3h7ooh ( 21) C3H7OOH + hv -> 0.82*CH3COCH3 + OH + HO2 rate = ** User defined ** ( 21) + jch2o_a ( 22) CH2O + hv -> CO + 2*H rate = ** User defined ** ( 22) + jch2o_b ( 23) CH2O + hv -> CO + H2 rate = ** User defined ** ( 23) + jch3cho ( 24) CH3CHO + hv -> CH3O2 + CO + HO2 rate = ** User defined ** ( 24) + jacet ( 25) CH3COCH3 + hv -> CH3CO3 + CH3O2 rate = ** User defined ** ( 25) + jmgly ( 26) CH3COCHO + hv -> CH3CO3 + CO + HO2 rate = ** User defined ** ( 26) + jch3co3h ( 27) CH3COOOH + hv -> CH3O2 + OH + CO2 rate = ** User defined ** ( 27) + jch3ooh ( 28) CH3OOH + hv -> CH2O + H + OH rate = ** User defined ** ( 28) + jch4_b ( 29) CH4 + hv -> 1.44*H2 + 0.18*CH2O + 0.18*O + 0.33*OH + 0.33*H rate = ** User defined ** ( 29) + + 0.44*CO2 + 0.38*CO + 0.05*H2O + jch4_a ( 30) CH4 + hv -> H + CH3O2 rate = ** User defined ** ( 30) + jco2 ( 31) CO2 + hv -> CO + O rate = ** User defined ** ( 31) + jeooh ( 32) EOOH + hv -> EO + OH rate = ** User defined ** ( 32) + jglyald ( 33) GLYALD + hv -> 2*HO2 + CO + CH2O rate = ** User defined ** ( 33) + jglyoxal ( 34) GLYOXAL + hv -> 2*CO + 2*HO2 rate = ** User defined ** ( 34) + jhyac ( 35) HYAC + hv -> CH3CO3 + HO2 + CH2O rate = ** User defined ** ( 35) + jisopooh ( 36) ISOPOOH + hv -> 0.402*MVK + 0.288*MACR + 0.69*CH2O + HO2 rate = ** User defined ** ( 36) + jmacr_a ( 37) MACR + hv -> 1.34*HO2 + 0.66*MCO3 + 1.34*CH2O + 1.34*CH3CO3 rate = ** User defined ** ( 37) + jmacr_b ( 38) MACR + hv -> 0.66*HO2 + 1.34*CO rate = ** User defined ** ( 38) + jmpan ( 39) MPAN + hv -> MCO3 + NO2 rate = ** User defined ** ( 39) + jmvk ( 40) MVK + hv -> 0.7*C3H6 + 0.7*CO + 0.3*CH3O2 + 0.3*CH3CO3 rate = ** User defined ** ( 40) + jnoa ( 41) NOA + hv -> NO2 + CH2O + CH3CO3 rate = ** User defined ** ( 41) + jonitr ( 42) ONITR + hv -> HO2 + CO + NO2 + CH2O rate = ** User defined ** ( 42) + jpan ( 43) PAN + hv -> 0.6*CH3CO3 + 0.6*NO2 + 0.4*CH3O2 + 0.4*NO3 + 0.4*CO2 rate = ** User defined ** ( 43) + jpooh ( 44) POOH + hv -> CH3CHO + CH2O + HO2 + OH rate = ** User defined ** ( 44) + jrooh ( 45) ROOH + hv -> CH3CO3 + CH2O + OH rate = ** User defined ** ( 45) + jxooh ( 46) XOOH + hv -> OH rate = ** User defined ** ( 46) + jbrcl ( 47) BRCL + hv -> BR + CL rate = ** User defined ** ( 47) + jbro ( 48) BRO + hv -> BR + O rate = ** User defined ** ( 48) + jbrono2_b ( 49) BRONO2 + hv -> BRO + NO2 rate = ** User defined ** ( 49) + jbrono2_a ( 50) BRONO2 + hv -> BR + NO3 rate = ** User defined ** ( 50) + jccl4 ( 51) CCL4 + hv -> 4*CL rate = ** User defined ** ( 51) + jcf2clbr ( 52) CF2CLBR + hv -> BR + CL + COF2 rate = ** User defined ** ( 52) + jcf3br ( 53) CF3BR + hv -> BR + F + COF2 rate = ** User defined ** ( 53) + jcfcl3 ( 54) CFC11 + hv -> 2*CL + COFCL rate = ** User defined ** ( 54) + jcfc113 ( 55) CFC113 + hv -> 2*CL + COFCL + COF2 rate = ** User defined ** ( 55) + jcfc114 ( 56) CFC114 + hv -> 2*CL + 2*COF2 rate = ** User defined ** ( 56) + jcfc115 ( 57) CFC115 + hv -> CL + F + 2*COF2 rate = ** User defined ** ( 57) + jcf2cl2 ( 58) CFC12 + hv -> 2*CL + COF2 rate = ** User defined ** ( 58) + jch2br2 ( 59) CH2BR2 + hv -> 2*BR rate = ** User defined ** ( 59) + jch3br ( 60) CH3BR + hv -> BR + CH3O2 rate = ** User defined ** ( 60) + jch3ccl3 ( 61) CH3CCL3 + hv -> 3*CL rate = ** User defined ** ( 61) + jch3cl ( 62) CH3CL + hv -> CL + CH3O2 rate = ** User defined ** ( 62) + jchbr3 ( 63) CHBR3 + hv -> 3*BR rate = ** User defined ** ( 63) + jcl2 ( 64) CL2 + hv -> 2*CL rate = ** User defined ** ( 64) + jcl2o2 ( 65) CL2O2 + hv -> 2*CL rate = ** User defined ** ( 65) + jclo ( 66) CLO + hv -> CL + O rate = ** User defined ** ( 66) + jclono2_a ( 67) CLONO2 + hv -> CL + NO3 rate = ** User defined ** ( 67) + jclono2_b ( 68) CLONO2 + hv -> CLO + NO2 rate = ** User defined ** ( 68) + jcof2 ( 69) COF2 + hv -> 2*F rate = ** User defined ** ( 69) + jcofcl ( 70) COFCL + hv -> F + CL rate = ** User defined ** ( 70) + jh2402 ( 71) H2402 + hv -> 2*BR + 2*COF2 rate = ** User defined ** ( 71) + jhbr ( 72) HBR + hv -> BR + H rate = ** User defined ** ( 72) + jhcfc141b ( 73) HCFC141B + hv -> CL + COFCL rate = ** User defined ** ( 73) + jhcfc142b ( 74) HCFC142B + hv -> CL + COF2 rate = ** User defined ** ( 74) + jhcfc22 ( 75) HCFC22 + hv -> CL + COF2 rate = ** User defined ** ( 75) + jhcl ( 76) HCL + hv -> H + CL rate = ** User defined ** ( 76) + jhf ( 77) HF + hv -> H + F rate = ** User defined ** ( 77) + jhobr ( 78) HOBR + hv -> BR + OH rate = ** User defined ** ( 78) + jhocl ( 79) HOCL + hv -> OH + CL rate = ** User defined ** ( 79) + joclo ( 80) OCLO + hv -> O + CLO rate = ** User defined ** ( 80) + jsf6 ( 81) SF6 + hv -> {sink} rate = ** User defined ** ( 81) + jeuv_26 ( 82) CO2 + hv -> CO + O rate = ** User defined ** ( 82) + jeuv_4 ( 83) N + hv -> Np + e rate = ** User defined ** ( 83) + jeuv_18 ( 84) N2 + hv -> N2p + e rate = ** User defined ** ( 84) + jeuv_25 ( 85) N2 + hv -> 1.2*N2D + 0.8*N rate = ** User defined ** ( 85) + jeuv_13 ( 86) N2 + hv -> 1.2*N2D + 0.8*N rate = ** User defined ** ( 86) + jeuv_11 ( 87) N2 + hv -> N2D + Np + e rate = ** User defined ** ( 87) + jeuv_6 ( 88) N2 + hv -> N2p + e rate = ** User defined ** ( 88) + jeuv_10 ( 89) N2 + hv -> N + Np + e rate = ** User defined ** ( 89) + jeuv_22 ( 90) N2 + hv -> N + Np + e rate = ** User defined ** ( 90) + jeuv_23 ( 91) N2 + hv -> N2D + Np + e rate = ** User defined ** ( 91) + jeuv_16 ( 92) O + hv -> Op2P + e rate = ** User defined ** ( 92) + jeuv_14 ( 93) O + hv -> Op + e rate = ** User defined ** ( 93) + jeuv_2 ( 94) O + hv -> Op2D + e rate = ** User defined ** ( 94) + jeuv_15 ( 95) O + hv -> Op2D + e rate = ** User defined ** ( 95) + jeuv_3 ( 96) O + hv -> Op2P + e rate = ** User defined ** ( 96) + jeuv_1 ( 97) O + hv -> Op + e rate = ** User defined ** ( 97) + jeuv_20 ( 98) O2 + hv -> O + Op2D + e rate = ** User defined ** ( 98) + jeuv_24 ( 99) O2 + hv -> 2*O rate = ** User defined ** ( 99) + jeuv_8 (100) O2 + hv -> O + Op2D + e rate = ** User defined ** (100) + jeuv_21 (101) O2 + hv -> O + Op2P + e rate = ** User defined ** (101) + jeuv_5 (102) O2 + hv -> O2p + e rate = ** User defined ** (102) + jeuv_19 (103) O2 + hv -> O + Op + e rate = ** User defined ** (103) + jeuv_12 (104) O2 + hv -> 2*O rate = ** User defined ** (104) + jeuv_9 (105) O2 + hv -> O + Op2P + e rate = ** User defined ** (105) + jeuv_7 (106) O2 + hv -> O + Op + e rate = ** User defined ** (106) + jeuv_17 (107) O2 + hv -> O2p + e rate = ** User defined ** (107) + jh2so4 (108) H2SO4 + hv -> SO3 + H2O rate = ** User defined ** (108) + jocs (109) OCS + hv -> S + CO rate = ** User defined ** (109) + jso (110) SO + hv -> S + O rate = ** User defined ** (110) + jso2 (111) SO2 + hv -> SO + O rate = ** User defined ** (111) + jso3 (112) SO3 + hv -> SO2 + O rate = ** User defined ** (112) + jsoa_a1 (113) soa_a1 + hv -> (No products) rate = ** User defined ** (113) + jsoa_a2 (114) soa_a2 + hv -> (No products) rate = ** User defined ** (114) + + Reactions + ag1 ( 1) O2_1D -> O2 rate = 2.58E-04 (115) + ag2 ( 2) O2_1S -> O2 rate = 8.50E-02 (116) + O1D_H2 ( 3) O1D + H2 -> H + OH rate = 1.20E-10 (117) + O1D_H2O ( 4) O1D + H2O -> 2*OH rate = 1.63E-10*exp( 60./t) (118) + O1D_N2 ( 5) O1D + N2 -> O + N2 rate = 2.15E-11*exp( 110./t) (119) + O1D_O2 ( 6) O1D + O2 -> O + O2_1S rate = 2.64E-11*exp( 55./t) (120) + O1D_O2b ( 7) O1D + O2 -> O + O2 rate = 6.60E-12*exp( 55./t) (121) + O1D_O3 ( 8) O1D + O3 -> O2 + O2 rate = 1.20E-10 (122) + O1D_O3a ( 9) O1D + O3 -> O2 + 2*O rate = 1.20E-10 (123) + O2_1D_N2 ( 10) O2_1D + N2 -> O2 + N2 rate = 1.00E-20 (124) + O2_1D_O ( 11) O2_1D + O -> O2 + O rate = 1.30E-16 (125) + O2_1D_O2 ( 12) O2_1D + O2 -> 2*O2 rate = 3.60E-18*exp( -220./t) (126) + O2_1S_CO2 ( 13) O2_1S + CO2 -> O2_1D + CO2 rate = 4.20E-13 (127) + O2_1S_N2 ( 14) O2_1S + N2 -> O2_1D + N2 rate = 1.80E-15*exp( 45./t) (128) + O2_1S_O ( 15) O2_1S + O -> O2_1D + O rate = 8.00E-14 (129) + O2_1S_O2 ( 16) O2_1S + O2 -> O2_1D + O2 rate = 3.90E-17 (130) + O2_1S_O3 ( 17) O2_1S + O3 -> O2_1D + O3 rate = 3.50E-11*exp( -135./t) (131) + O_O3 ( 18) O + O3 -> 2*O2 rate = 8.00E-12*exp( -2060./t) (132) + usr_O_O ( 19) O + O + M -> O2 + M rate = ** User defined ** (133) + usr_O_O2 ( 20) O + O2 + M -> O3 + M rate = ** User defined ** (134) + H2_O ( 21) H2 + O -> OH + H rate = 1.60E-11*exp( -4570./t) (135) + H2O2_O ( 22) H2O2 + O -> OH + HO2 rate = 1.40E-12*exp( -2000./t) (136) + H_HO2 ( 23) H + HO2 -> H2 + O2 rate = 6.90E-12 (137) + H_HO2a ( 24) H + HO2 -> 2*OH rate = 7.20E-11 (138) + H_HO2b ( 25) H + HO2 -> H2O + O rate = 1.60E-12 (139) + H_O2 ( 26) H + O2 + M -> HO2 + M troe : ko=5.30E-32*(300/t)**1.80 (140) + ki=9.50E-11*(300/t)**-0.40 + f=0.60 + HO2_O ( 27) HO2 + O -> OH + O2 rate = 3.00E-11*exp( 200./t) (141) + HO2_O3 ( 28) HO2 + O3 -> OH + 2*O2 rate = 1.00E-14*exp( -490./t) (142) + H_O3 ( 29) H + O3 -> OH + O2 rate = 1.40E-10*exp( -470./t) (143) + OH_H2 ( 30) OH + H2 -> H2O + H rate = 2.80E-12*exp( -1800./t) (144) + OH_H2O2 ( 31) OH + H2O2 -> H2O + HO2 rate = 1.80E-12 (145) + OH_HO2 ( 32) OH + HO2 -> H2O + O2 rate = 4.80E-11*exp( 250./t) (146) + OH_O ( 33) OH + O -> H + O2 rate = 1.80E-11*exp( 180./t) (147) + OH_O3 ( 34) OH + O3 -> HO2 + O2 rate = 1.70E-12*exp( -940./t) (148) + OH_OH ( 35) OH + OH -> H2O + O rate = 1.80E-12 (149) + OH_OH_M ( 36) OH + OH + M -> H2O2 + M troe : ko=6.90E-31*(300/t)**1.00 (150) + ki=2.60E-11 + f=0.60 + usr_HO2_HO2 ( 37) HO2 + HO2 -> H2O2 + O2 rate = ** User defined ** (151) + HO2NO2_OH ( 38) HO2NO2 + OH -> H2O + NO2 + O2 rate = 4.50E-13*exp( 610./t) (152) + N2D_O ( 39) N2D + O -> N + O rate = 7.00E-13 (153) + N2D_O2 ( 40) N2D + O2 -> NO + O1D rate = 5.00E-12 (154) + N_NO ( 41) N + NO -> N2 + O rate = 2.10E-11*exp( 100./t) (155) + N_NO2a ( 42) N + NO2 -> N2O + O rate = 2.90E-12*exp( 220./t) (156) + N_NO2b ( 43) N + NO2 -> 2*NO rate = 1.45E-12*exp( 220./t) (157) + N_NO2c ( 44) N + NO2 -> N2 + O2 rate = 1.45E-12*exp( 220./t) (158) + N_O2 ( 45) N + O2 -> NO + O rate = 3.30E-12*exp( -3150./t) (159) + NO2_O ( 46) NO2 + O -> NO + O2 rate = 5.10E-12*exp( 210./t) (160) + NO2_O3 ( 47) NO2 + O3 -> NO3 + O2 rate = 1.20E-13*exp( -2450./t) (161) + NO2_O_M ( 48) NO2 + O + M -> NO3 + M troe : ko=2.50E-31*(300/t)**1.80 (162) + ki=2.20E-11*(300/t)**0.70 + f=0.60 + NO3_HO2 ( 49) NO3 + HO2 -> OH + NO2 + O2 rate = 3.50E-12 (163) + NO3_NO ( 50) NO3 + NO -> 2*NO2 rate = 1.70E-11*exp( 125./t) (164) + NO3_O ( 51) NO3 + O -> NO2 + O2 rate = 1.30E-11 (165) + NO3_OH ( 52) NO3 + OH -> HO2 + NO2 rate = 2.20E-11 (166) + N_OH ( 53) N + OH -> NO + H rate = 5.00E-11 (167) + NO_HO2 ( 54) NO + HO2 -> NO2 + OH rate = 3.44E-12*exp( 260./t) (168) + NO_O3 ( 55) NO + O3 -> NO2 + O2 rate = 3.00E-12*exp( -1500./t) (169) + NO_O_M ( 56) NO + O + M -> NO2 + M troe : ko=9.00E-32*(300/t)**1.50 (170) + ki=3.00E-11 + f=0.60 + O1D_N2Oa ( 57) O1D + N2O -> 2*NO rate = 7.26E-11*exp( 20./t) (171) + O1D_N2Ob ( 58) O1D + N2O -> N2 + O2 rate = 4.64E-11*exp( 20./t) (172) + tag_NO2_HO2 ( 59) NO2 + HO2 + M -> HO2NO2 + M troe : ko=1.90E-31*(300/t)**3.40 (173) + ki=4.00E-12*(300/t)**0.30 + f=0.60 + tag_NO2_NO3 ( 60) NO2 + NO3 + M -> N2O5 + M troe : ko=2.40E-30*(300/t)**3.00 (174) + ki=1.60E-12*(300/t)**-0.10 + f=0.60 + tag_NO2_OH ( 61) NO2 + OH + M -> HNO3 + M troe : ko=1.80E-30*(300/t)**3.00 (175) + ki=2.80E-11 + f=0.60 + usr_HNO3_OH ( 62) HNO3 + OH -> NO3 + H2O rate = ** User defined ** (176) + usr_HO2NO2_M ( 63) HO2NO2 + M -> HO2 + NO2 + M rate = ** User defined ** (177) + usr_N2O5_M ( 64) N2O5 + M -> NO2 + NO3 + M rate = ** User defined ** (178) + CL_CH2O ( 65) CL + CH2O -> HCL + HO2 + CO rate = 8.10E-11*exp( -30./t) (179) + CL_CH4 ( 66) CL + CH4 -> CH3O2 + HCL rate = 7.10E-12*exp( -1270./t) (180) + CL_H2 ( 67) CL + H2 -> HCL + H rate = 3.05E-11*exp( -2270./t) (181) + CL_H2O2 ( 68) CL + H2O2 -> HCL + HO2 rate = 1.10E-11*exp( -980./t) (182) + CL_HO2a ( 69) CL + HO2 -> HCL + O2 rate = 1.40E-11*exp( 270./t) (183) + CL_HO2b ( 70) CL + HO2 -> OH + CLO rate = 3.60E-11*exp( -375./t) (184) + CL_O3 ( 71) CL + O3 -> CLO + O2 rate = 2.30E-11*exp( -200./t) (185) + CLO_CH3O2 ( 72) CLO + CH3O2 -> CL + HO2 + CH2O rate = 3.30E-12*exp( -115./t) (186) + CLO_CLOa ( 73) CLO + CLO -> 2*CL + O2 rate = 3.00E-11*exp( -2450./t) (187) + CLO_CLOb ( 74) CLO + CLO -> CL2 + O2 rate = 1.00E-12*exp( -1590./t) (188) + CLO_CLOc ( 75) CLO + CLO -> CL + OCLO rate = 3.50E-13*exp( -1370./t) (189) + CLO_HO2 ( 76) CLO + HO2 -> O2 + HOCL rate = 2.60E-12*exp( 290./t) (190) + CLO_NO ( 77) CLO + NO -> NO2 + CL rate = 6.40E-12*exp( 290./t) (191) + CLONO2_CL ( 78) CLONO2 + CL -> CL2 + NO3 rate = 6.50E-12*exp( 135./t) (192) + CLO_NO2_M ( 79) CLO + NO2 + M -> CLONO2 + M troe : ko=1.80E-31*(300/t)**3.40 (193) + ki=1.50E-11*(300/t)**1.90 + f=0.60 + CLONO2_O ( 80) CLONO2 + O -> CLO + NO3 rate = 3.60E-12*exp( -840./t) (194) + CLONO2_OH ( 81) CLONO2 + OH -> HOCL + NO3 rate = 1.20E-12*exp( -330./t) (195) + CLO_O ( 82) CLO + O -> CL + O2 rate = 2.80E-11*exp( 85./t) (196) + CLO_OHa ( 83) CLO + OH -> CL + HO2 rate = 7.40E-12*exp( 270./t) (197) + CLO_OHb ( 84) CLO + OH -> HCL + O2 rate = 6.00E-13*exp( 230./t) (198) + HCL_O ( 85) HCL + O -> CL + OH rate = 1.00E-11*exp( -3300./t) (199) + HCL_OH ( 86) HCL + OH -> H2O + CL rate = 1.80E-12*exp( -250./t) (200) + HOCL_CL ( 87) HOCL + CL -> HCL + CLO rate = 3.40E-12*exp( -130./t) (201) + HOCL_O ( 88) HOCL + O -> CLO + OH rate = 1.70E-13 (202) + HOCL_OH ( 89) HOCL + OH -> H2O + CLO rate = 3.00E-12*exp( -500./t) (203) + O1D_CCL4 ( 90) O1D + CCL4 -> 4*CL rate = 2.61E-10 (204) + O1D_CF2CLBR ( 91) O1D + CF2CLBR -> CL + BR + COF2 rate = 9.75E-11 (205) + O1D_CFC11 ( 92) O1D + CFC11 -> 2*CL + COFCL rate = 2.07E-10 (206) + O1D_CFC113 ( 93) O1D + CFC113 -> 2*CL + COFCL + COF2 rate = 2.09E-10 (207) + O1D_CFC114 ( 94) O1D + CFC114 -> 2*CL + 2*COF2 rate = 1.17E-10 (208) + O1D_CFC115 ( 95) O1D + CFC115 -> CL + F + 2*COF2 rate = 4.64E-11 (209) + O1D_CFC12 ( 96) O1D + CFC12 -> 2*CL + COF2 rate = 1.20E-10 (210) + O1D_HCLa ( 97) O1D + HCL -> CL + OH rate = 9.90E-11 (211) + O1D_HCLb ( 98) O1D + HCL -> CLO + H rate = 3.30E-12 (212) + tag_CLO_CLO_M ( 99) CLO + CLO + M -> CL2O2 + M troe : ko=1.90E-32*(300/t)**3.60 (213) + ki=3.70E-12*(300/t)**1.60 + f=0.60 + usr_CL2O2_M (100) CL2O2 + M -> CLO + CLO + M rate = ** User defined ** (214) + BR_CH2O (101) BR + CH2O -> HBR + HO2 + CO rate = 1.70E-11*exp( -800./t) (215) + BR_HO2 (102) BR + HO2 -> HBR + O2 rate = 4.80E-12*exp( -310./t) (216) + BR_O3 (103) BR + O3 -> BRO + O2 rate = 1.60E-11*exp( -780./t) (217) + BRO_BRO (104) BRO + BRO -> 2*BR + O2 rate = 1.50E-12*exp( 230./t) (218) + BRO_CLOa (105) BRO + CLO -> BR + OCLO rate = 9.50E-13*exp( 550./t) (219) + BRO_CLOb (106) BRO + CLO -> BR + CL + O2 rate = 2.30E-12*exp( 260./t) (220) + BRO_CLOc (107) BRO + CLO -> BRCL + O2 rate = 4.10E-13*exp( 290./t) (221) + BRO_HO2 (108) BRO + HO2 -> HOBR + O2 rate = 4.50E-12*exp( 460./t) (222) + BRO_NO (109) BRO + NO -> BR + NO2 rate = 8.80E-12*exp( 260./t) (223) + BRO_NO2_M (110) BRO + NO2 + M -> BRONO2 + M troe : ko=5.20E-31*(300/t)**3.20 (224) + ki=6.90E-12*(300/t)**2.90 + f=0.60 + BRONO2_O (111) BRONO2 + O -> BRO + NO3 rate = 1.90E-11*exp( 215./t) (225) + BRO_O (112) BRO + O -> BR + O2 rate = 1.90E-11*exp( 230./t) (226) + BRO_OH (113) BRO + OH -> BR + HO2 rate = 1.70E-11*exp( 250./t) (227) + HBR_O (114) HBR + O -> BR + OH rate = 5.80E-12*exp( -1500./t) (228) + HBR_OH (115) HBR + OH -> BR + H2O rate = 5.50E-12*exp( 200./t) (229) + HOBR_O (116) HOBR + O -> BRO + OH rate = 1.20E-10*exp( -430./t) (230) + O1D_CF3BR (117) O1D + CF3BR -> BR + F + COF2 rate = 4.50E-11 (231) + O1D_CHBR3 (118) O1D + CHBR3 -> 3*BR rate = 4.62E-10 (232) + O1D_H2402 (119) O1D + H2402 -> 2*BR + 2*COF2 rate = 1.20E-10 (233) + O1D_HBRa (120) O1D + HBR -> BR + OH rate = 9.00E-11 (234) + O1D_HBRb (121) O1D + HBR -> BRO + H rate = 3.00E-11 (235) + F_CH4 (122) F + CH4 -> HF + CH3O2 rate = 1.60E-10*exp( -260./t) (236) + F_H2 (123) F + H2 -> HF + H rate = 1.40E-10*exp( -500./t) (237) + F_H2O (124) F + H2O -> HF + OH rate = 1.40E-11 (238) + F_HNO3 (125) F + HNO3 -> HF + NO3 rate = 6.00E-12*exp( 400./t) (239) + O1D_COF2 (126) O1D + COF2 -> 2*F rate = 2.14E-11 (240) + O1D_COFCL (127) O1D + COFCL -> F + CL rate = 1.90E-10 (241) + CH2BR2_CL (128) CH2BR2 + CL -> 2*BR + HCL rate = 6.30E-12*exp( -800./t) (242) + CH2BR2_OH (129) CH2BR2 + OH -> 2*BR + H2O rate = 2.00E-12*exp( -840./t) (243) + CH3BR_CL (130) CH3BR + CL -> HCL + HO2 + BR rate = 1.46E-11*exp( -1040./t) (244) + CH3BR_OH (131) CH3BR + OH -> BR + H2O + HO2 rate = 1.42E-12*exp( -1150./t) (245) + CH3CCL3_OH (132) CH3CCL3 + OH -> H2O + 3*CL rate = 1.64E-12*exp( -1520./t) (246) + CH3CL_CL (133) CH3CL + CL -> HO2 + CO + 2*HCL rate = 2.03E-11*exp( -1110./t) (247) + CH3CL_OH (134) CH3CL + OH -> CL + H2O + HO2 rate = 1.96E-12*exp( -1200./t) (248) + CHBR3_CL (135) CHBR3 + CL -> 3*BR + HCL rate = 4.85E-12*exp( -850./t) (249) + CHBR3_OH (136) CHBR3 + OH -> 3*BR rate = 9.00E-13*exp( -360./t) (250) + HCFC141B_OH (137) HCFC141B + OH -> CL + COFCL rate = 1.25E-12*exp( -1600./t) (251) + HCFC142B_OH (138) HCFC142B + OH -> CL + COF2 rate = 1.30E-12*exp( -1770./t) (252) + HCFC22_OH (139) HCFC22 + OH -> H2O + CL + COF2 rate = 9.20E-13*exp( -1560./t) (253) + O1D_CH2BR2 (140) O1D + CH2BR2 -> 2*BR rate = 2.57E-10 (254) + O1D_CH3BR (141) O1D + CH3BR -> BR rate = 1.80E-10 (255) + O1D_HCFC141B (142) O1D + HCFC141B -> CL + COFCL rate = 1.79E-10 (256) + O1D_HCFC142B (143) O1D + HCFC142B -> CL + COF2 rate = 1.30E-10 (257) + O1D_HCFC22 (144) O1D + HCFC22 -> CL + COF2 rate = 7.65E-11 (258) + CH2O_NO3 (145) CH2O + NO3 -> CO + HO2 + HNO3 rate = 6.00E-13*exp( -2058./t) (259) + CH2O_O (146) CH2O + O -> HO2 + OH + CO rate = 3.40E-11*exp( -1600./t) (260) + CH2O_OH (147) CH2O + OH -> CO + H2O + H rate = 5.50E-12*exp( 125./t) (261) + CH3O2_CH3O2a (148) CH3O2 + CH3O2 -> 2*CH2O + 2*HO2 rate = 5.00E-13*exp( -424./t) (262) + CH3O2_CH3O2b (149) CH3O2 + CH3O2 -> CH2O + CH3OH rate = 1.90E-14*exp( 706./t) (263) + CH3O2_HO2 (150) CH3O2 + HO2 -> CH3OOH + O2 rate = 4.10E-13*exp( 750./t) (264) + CH3O2_NO (151) CH3O2 + NO -> CH2O + NO2 + HO2 rate = 2.80E-12*exp( 300./t) (265) + CH3OH_OH (152) CH3OH + OH -> HO2 + CH2O rate = 2.90E-12*exp( -345./t) (266) + CH3OOH_OH (153) CH3OOH + OH -> 0.7*CH3O2 + 0.3*OH + 0.3*CH2O + H2O rate = 3.80E-12*exp( 200./t) (267) + CH4_OH (154) CH4 + OH -> CH3O2 + H2O rate = 2.45E-12*exp( -1775./t) (268) + O1D_CH4a (155) O1D + CH4 -> CH3O2 + OH rate = 1.31E-10 (269) + O1D_CH4b (156) O1D + CH4 -> CH2O + H + HO2 rate = 3.50E-11 (270) + O1D_CH4c (157) O1D + CH4 -> CH2O + H2 rate = 9.00E-12 (271) + usr_CO_OH (158) CO + OH -> CO2 + HO2 rate = ** User defined ** (272) + C2H4_CL_M (159) C2H4 + CL + M -> CL + M troe : ko=1.60E-29*(300/t)**3.30 (273) + ki=3.10E-10*(300/t) + f=0.60 + C2H4_O3 (160) C2H4 + O3 -> 0.63*CO + 0.13*OH + 0.13*HO2 + 0.37*{HCOOH} + CH2O rate = 1.20E-14*exp( -2630./t) (274) + C2H5O2_C2H5O2 (161) C2H5O2 + C2H5O2 -> 1.6*CH3CHO + 1.2*HO2 + 0.4*C2H5OH rate = 6.80E-14 (275) + C2H5O2_CH3O2 (162) C2H5O2 + CH3O2 -> 0.7*CH2O + 0.8*CH3CHO + HO2 + 0.3*CH3OH rate = 2.00E-13 (276) + + 0.2*C2H5OH + C2H5O2_HO2 (163) C2H5O2 + HO2 -> C2H5OOH + O2 rate = 7.50E-13*exp( 700./t) (277) + C2H5O2_NO (164) C2H5O2 + NO -> CH3CHO + HO2 + NO2 rate = 2.60E-12*exp( 365./t) (278) + C2H5OH_OH (165) C2H5OH + OH -> HO2 + CH3CHO rate = 6.90E-12*exp( -230./t) (279) + C2H5OOH_OH (166) C2H5OOH + OH -> 0.5*C2H5O2 + 0.5*CH3CHO + 0.5*OH rate = 3.80E-12*exp( 200./t) (280) + C2H6_CL (167) C2H6 + CL -> HCL + C2H5O2 rate = 7.20E-11*exp( -70./t) (281) + C2H6_OH (168) C2H6 + OH -> C2H5O2 + H2O rate = 7.66E-12*exp( -1020./t) (282) + CH3CHO_NO3 (169) CH3CHO + NO3 -> CH3CO3 + HNO3 rate = 1.40E-12*exp( -1900./t) (283) + CH3CHO_OH (170) CH3CHO + OH -> CH3CO3 + H2O rate = 4.63E-12*exp( 350./t) (284) + CH3CO3_CH3CO3 (171) CH3CO3 + CH3CO3 -> 2*CH3O2 + 2*CO2 rate = 2.90E-12*exp( 500./t) (285) + CH3CO3_CH3O2 (172) CH3CO3 + CH3O2 -> 0.9*CH3O2 + CH2O + 0.9*HO2 + 0.9*CO2 rate = 2.00E-12*exp( 500./t) (286) + + 0.1*CH3COOH + CH3CO3_HO2 (173) CH3CO3 + HO2 -> 0.4*CH3COOOH + 0.15*CH3COOH + 0.15*O3 + 0.45*OH rate = 4.30E-13*exp( 1040./t) (287) + + 0.45*CH3O2 + CH3CO3_NO (174) CH3CO3 + NO -> CH3O2 + CO2 + NO2 rate = 8.10E-12*exp( 270./t) (288) + CH3COOH_OH (175) CH3COOH + OH -> CH3O2 + CO2 + H2O rate = 3.15E-14*exp( 920./t) (289) + CH3COOOH_OH (176) CH3COOOH + OH -> 0.5*CH3CO3 + 0.5*CH2O + 0.5*CO2 + H2O rate = 1.00E-12 (290) + EO2_HO2 (177) EO2 + HO2 -> EOOH rate = 7.50E-13*exp( 700./t) (291) + EO2_NO (178) EO2 + NO -> 0.5*CH2O + 0.25*HO2 + 0.75*EO + NO2 rate = 4.20E-12*exp( 180./t) (292) + EO_M (179) EO -> 2*CH2O + HO2 rate = 1.60E+11*exp( -4150./t) (293) + EO_O2 (180) EO + O2 -> GLYALD + HO2 rate = 1.00E-14 (294) + GLYALD_OH (181) GLYALD + OH -> HO2 + 0.2*GLYOXAL + 0.8*CH2O + 0.8*CO2 rate = 1.00E-11 (295) + GLYOXAL_OH (182) GLYOXAL + OH -> HO2 + CO + CO2 rate = 1.15E-11 (296) + PAN_OH (183) PAN + OH -> CH2O + NO3 rate = 4.00E-14 (297) + tag_C2H4_OH (184) C2H4 + OH + M -> EO2 + M troe : ko=8.60E-29*(300/t)**3.10 (298) + ki=9.00E-12*(300/t)**0.85 + f=0.48 + tag_CH3CO3_NO2 (185) CH3CO3 + NO2 + M -> PAN + M troe : ko=7.30E-29*(300/t)**4.10 (299) + ki=9.50E-12*(300/t)**1.60 + f=0.60 + usr_PAN_M (186) PAN + M -> CH3CO3 + NO2 + M rate = ** User defined ** (300) + C3H6_NO3 (187) C3H6 + NO3 -> NOA rate = 4.60E-13*exp( -1156./t) (301) + C3H6_O3 (188) C3H6 + O3 -> 0.5*CH2O + 0.12*{HCOOH} + 0.12*CH3COOH + 0.5*CH3CHO rate = 6.50E-15*exp( -1900./t) (302) + + 0.56*CO + 0.28*CH3O2 + 0.1*CH4 + 0.2*CO2 + 0.28*HO2 + + 0.36*OH + C3H7O2_CH3O2 (189) C3H7O2 + CH3O2 -> CH2O + HO2 + 0.82*CH3COCH3 rate = 3.75E-13*exp( -40./t) (303) + C3H7O2_HO2 (190) C3H7O2 + HO2 -> C3H7OOH + O2 rate = 7.50E-13*exp( 700./t) (304) + C3H7O2_NO (191) C3H7O2 + NO -> 0.82*CH3COCH3 + NO2 + HO2 + 0.27*CH3CHO rate = 4.20E-12*exp( 180./t) (305) + C3H7OOH_OH (192) C3H7OOH + OH -> H2O + C3H7O2 rate = 3.80E-12*exp( 200./t) (306) + C3H8_OH (193) C3H8 + OH -> C3H7O2 + H2O rate = 9.19E-12*exp( -630./t) (307) + CH3COCHO_NO3 (194) CH3COCHO + NO3 -> HNO3 + CO + CH3CO3 rate = 1.40E-12*exp( -1860./t) (308) + CH3COCHO_OH (195) CH3COCHO + OH -> CH3CO3 + CO + H2O rate = 8.40E-13*exp( 830./t) (309) + HYAC_OH (196) HYAC + OH -> CH3COCHO + HO2 rate = 3.00E-12 (310) + NOA_OH (197) NOA + OH -> NO2 + CH3COCHO rate = 6.70E-13 (311) + PO2_HO2 (198) PO2 + HO2 -> POOH + O2 rate = 7.50E-13*exp( 700./t) (312) + PO2_NO (199) PO2 + NO -> CH3CHO + CH2O + HO2 + NO2 rate = 4.20E-12*exp( 180./t) (313) + POOH_OH (200) POOH + OH -> 0.5*PO2 + 0.5*OH + 0.5*HYAC + H2O rate = 3.80E-12*exp( 200./t) (314) + RO2_CH3O2 (201) RO2 + CH3O2 -> 0.3*CH3CO3 + 0.8*CH2O + 0.3*HO2 + 0.2*HYAC rate = 7.10E-13*exp( 500./t) (315) + + 0.5*CH3COCHO + 0.5*CH3OH + RO2_HO2 (202) RO2 + HO2 -> 0.85*ROOH + 0.15*OH + 0.15*CH2O + 0.15*CH3CO3 rate = 8.60E-13*exp( 700./t) (316) + RO2_NO (203) RO2 + NO -> CH3CO3 + CH2O + NO2 rate = 2.90E-12*exp( 300./t) (317) + ROOH_OH (204) ROOH + OH -> RO2 + H2O rate = 3.80E-12*exp( 200./t) (318) + tag_C3H6_OH (205) C3H6 + OH + M -> PO2 + M troe : ko=8.00E-27*(300/t)**3.50 (319) + ki=3.00E-11 + f=0.50 + usr_CH3COCH3_OH (206) CH3COCH3 + OH -> RO2 + H2O rate = ** User defined ** (320) + MACRO2_CH3CO3 (207) MACRO2 + CH3CO3 -> 0.25*CH3COCHO + CH3O2 + 0.22*CO + 0.47*HO2 rate = 1.40E-11 (321) + + 0.53*GLYALD + 0.22*HYAC + 0.25*CH2O + + 0.53*CH3CO3 + MACRO2_CH3O2 (208) MACRO2 + CH3O2 -> 0.73*HO2 + 0.88*CH2O + 0.11*CO + 0.24*CH3COCHO rate = 5.00E-13*exp( 400./t) (322) + + 0.26*GLYALD + 0.26*CH3CO3 + 0.25*CH3OH + + 0.23*HYAC + MACRO2_HO2 (209) MACRO2 + HO2 -> MACROOH rate = 8.00E-13*exp( 700./t) (323) + MACRO2_NO3 (210) MACRO2 + NO3 -> NO2 + 0.47*HO2 + 0.25*CH2O + 0.25*CH3COCHO rate = 2.40E-12 (324) + + 0.22*CO + 0.53*GLYALD + 0.22*HYAC + 0.53*CH3CO3 + MACRO2_NOa (211) MACRO2 + NO -> NO2 + 0.47*HO2 + 0.25*CH2O + 0.53*GLYALD rate = 2.70E-12*exp( 360./t) (325) + + 0.25*CH3COCHO + 0.53*CH3CO3 + 0.22*HYAC + 0.22*CO + MACRO2_NOb (212) MACRO2 + NO -> 0.8*ONITR rate = 1.30E-13*exp( 360./t) (326) + MACR_O3 (213) MACR + O3 -> 0.12*CH2O + 0.24*OH + 0.65*CO + 0.1*CH3CO3 rate = 1.50E-15*exp( -2100./t) (327) + + 0.88*CH3COCHO + 0.33*{HCOOH} + 0.14*HO2 + MACR_OH (214) MACR + OH -> 0.5*MACRO2 + 0.5*H2O + 0.5*MCO3 rate = 9.60E-12*exp( 360./t) (328) + MACROOH_OH (215) MACROOH + OH -> 0.5*MCO3 + 0.2*MACRO2 + 0.1*OH + 0.2*HO2 rate = 2.30E-11*exp( 200./t) (329) + MCO3_CH3CO3 (216) MCO3 + CH3CO3 -> 2*CO2 + CH3O2 + CH2O + CH3CO3 rate = 4.60E-12*exp( 530./t) (330) + MCO3_CH3O2 (217) MCO3 + CH3O2 -> 2*CH2O + HO2 + CO2 + CH3CO3 rate = 2.00E-12*exp( 500./t) (331) + MCO3_HO2 (218) MCO3 + HO2 -> 0.15*O3 + 0.15*CH3COOH + 0.4*CH3COOOH + 0.45*OH rate = 4.30E-13*exp( 1040./t) (332) + + 0.45*CO2 + 0.45*CH2O + 0.45*CH3CO3 + MCO3_MCO3 (219) MCO3 + MCO3 -> 2*CO2 + 2*CH2O + 2*CH3CO3 rate = 2.30E-12*exp( 530./t) (333) + MCO3_NO (220) MCO3 + NO -> NO2 + CH2O + CH3CO3 rate = 5.30E-12*exp( 360./t) (334) + MCO3_NO3 (221) MCO3 + NO3 -> NO2 + CH2O + CH3CO3 rate = 5.00E-12 (335) + MPAN_OH_M (222) MPAN + OH + M -> 0.5*HYAC + 0.5*NO3 + 0.5*CH2O + 0.5*HO2 + 0.5*CO2 troe : ko=8.00E-27*(300/t)**3.50 (336) + + M + 0.5*NDEP ki=3.00E-11 + f=0.50 + MVK_O3 (223) MVK + O3 -> 0.6*CH2O + 0.56*CO + 0.1*CH3CHO + 0.1*CO2 + 0.28*CH3CO3 rate = 8.50E-16*exp( -1520./t) (337) + + 0.5*CH3COCHO + 0.28*HO2 + 0.36*OH + 0.12*{HCOOH} + MVK_OH (224) MVK + OH -> MACRO2 rate = 4.13E-12*exp( 452./t) (338) + tag_MCO3_NO2 (225) MCO3 + NO2 + M -> MPAN + M troe : ko=9.70E-29*(300/t)**5.60 (339) + ki=9.30E-12*(300/t)**1.50 + f=0.60 + usr_MPAN_M (226) MPAN + M -> MCO3 + NO2 + M rate = ** User defined ** (340) + BIGALK_OH (227) BIGALK + OH -> 1.67*C3H7O2 rate = 3.50E-12 (341) + HYDRALD_OH (228) HYDRALD + OH -> XO2 rate = 1.86E-11*exp( 175./t) (342) + ISOP_NO3 (229) ISOP + NO3 -> ISOPNO3 rate = 3.03E-12*exp( -446./t) (343) + ISOPNO3_HO2 (230) ISOPNO3 + HO2 -> 0.206*NO2 + 0.206*CH2O + 0.206*OH + 0.167*MACR rate = 8.00E-13*exp( 700./t) (344) + + 0.039*MVK + 0.794*ONITR + ISOPNO3_NO (231) ISOPNO3 + NO -> 1.206*NO2 + 0.794*HO2 + 0.072*CH2O + 0.167*MACR rate = 2.70E-12*exp( 360./t) (345) + + 0.039*MVK + 0.794*ONITR + ISOPNO3_NO3 (232) ISOPNO3 + NO3 -> 1.206*NO2 + 0.072*CH2O + 0.167*MACR + 0.039*MVK rate = 2.40E-12 (346) + + 0.794*ONITR + 0.794*HO2 + ISOPO2_CH3CO3 (233) ISOPO2 + CH3CO3 -> CH3O2 + HO2 + 0.6*CH2O + 0.25*MACR + 0.35*MVK rate = 1.40E-11 (347) + + 0.4*HYDRALD + ISOPO2_CH3O2 (234) ISOPO2 + CH3O2 -> 0.25*CH3OH + HO2 + 1.2*CH2O + 0.19*MACR rate = 5.00E-13*exp( 400./t) (348) + + 0.26*MVK + 0.3*HYDRALD + ISOPO2_HO2 (235) ISOPO2 + HO2 -> ISOPOOH rate = 8.00E-13*exp( 700./t) (349) + ISOPO2_NO (236) ISOPO2 + NO -> 0.08*ONITR + 0.92*NO2 + 0.23*MACR + 0.32*MVK rate = 4.40E-12*exp( 180./t) (350) + + 0.33*HYDRALD + 0.02*GLYOXAL + 0.02*GLYALD + + 0.02*CH3COCHO + 0.02*HYAC + 0.55*CH2O + 0.92*HO2 + ISOPO2_NO3 (237) ISOPO2 + NO3 -> HO2 + NO2 + 0.6*CH2O + 0.25*MACR + 0.35*MVK rate = 2.40E-12 (351) + + 0.4*HYDRALD + ISOP_O3 (238) ISOP + O3 -> 0.3*MACR + 0.2*MVK + 0.11*{HCOOH} + 0.62*CO + 0.32*OH rate = 1.05E-14*exp( -2000./t) (352) + + 0.37*HO2 + 0.91*CH2O + 0.08*CH3CO3 + 0.13*C3H6 + + 0.05*CH3O2 + ISOP_OH (239) ISOP + OH -> ISOPO2 rate = 2.54E-11*exp( 410./t) (353) + ISOPOOH_OH (240) ISOPOOH + OH -> 0.8*XO2 + 0.2*ISOPO2 rate = 1.52E-11*exp( 200./t) (354) + ONITR_NO3 (241) ONITR + NO3 -> HO2 + NO2 + HYDRALD rate = 1.40E-12*exp( -1860./t) (355) + ONITR_OH (242) ONITR + OH -> HYDRALD + 0.4*NO2 + HO2 rate = 4.50E-11 (356) + XO2_CH3CO3 (243) XO2 + CH3CO3 -> 0.25*CO + 0.25*CH2O + 0.25*GLYOXAL + CH3O2 + HO2 rate = 1.30E-12*exp( 640./t) (357) + + 0.25*CH3COCHO + 0.25*HYAC + 0.25*GLYALD + CO2 + XO2_CH3O2 (244) XO2 + CH3O2 -> 0.3*CH3OH + 0.8*HO2 + 0.8*CH2O + 0.2*CO rate = 5.00E-13*exp( 400./t) (358) + + 0.1*GLYOXAL + 0.1*CH3COCHO + 0.1*HYAC + 0.1*GLYALD + XO2_HO2 (245) XO2 + HO2 -> XOOH rate = 8.00E-13*exp( 700./t) (359) + XO2_NO (246) XO2 + NO -> NO2 + HO2 + 0.25*CO + 0.25*CH2O + 0.25*GLYOXAL rate = 2.70E-12*exp( 360./t) (360) + + 0.25*CH3COCHO + 0.25*HYAC + 0.25*GLYALD + XO2_NO3 (247) XO2 + NO3 -> NO2 + HO2 + 0.5*CO + 0.25*HYAC + 0.25*GLYOXAL rate = 2.40E-12 (361) + + 0.25*CH3COCHO + 0.25*GLYALD + XOOH_OH (248) XOOH + OH -> 0.5*XO2 + 0.5*OH rate = 1.52E-12*exp( 200./t) (362) + TERP_NO3 (249) TERP + NO3 -> 1.7*ISOPO2 + NO2 rate = 1.20E-12*exp( 490./t) (363) + TERP_O3 (250) TERP + O3 -> 1.122*MACR + 0.442*MVK + 0.765*O + 1.156*OH rate = 6.30E-16*exp( -580./t) (364) + TERP_OH (251) TERP + OH -> 1.64*ISOPO2 + 0.1*CH3COCH3 rate = 1.20E-11*exp( 440./t) (365) + DMS_NO3 (252) DMS + NO3 -> SO2 + HNO3 rate = 1.90E-13*exp( 520./t) (366) + DMS_OHa (253) DMS + OH -> SO2 rate = 1.10E-11*exp( -280./t) (367) + OCS_O (254) OCS + O -> SO + CO rate = 2.10E-11*exp( -2200./t) (368) + OCS_OH (255) OCS + OH -> SO2 + CO + H rate = 7.20E-14*exp( -1070./t) (369) + S_O2 (256) S + O2 -> SO + O rate = 2.30E-12 (370) + SO2_OH_M (257) SO2 + OH + M -> SO3 + HO2 troe : ko=2.90E-31*(300/t)**4.10 (371) + ki=1.70E-12*(300/t)**-0.20 + f=0.60 + S_O3 (258) S + O3 -> SO + O2 rate = 1.20E-11 (372) + SO_BRO (259) SO + BRO -> SO2 + BR rate = 5.70E-11 (373) + SO_CLO (260) SO + CLO -> SO2 + CL rate = 2.80E-11 (374) + S_OH (261) S + OH -> SO + H rate = 6.60E-11 (375) + SO_NO2 (262) SO + NO2 -> SO2 + NO rate = 1.40E-11 (376) + SO_O2 (263) SO + O2 -> SO2 + O rate = 1.60E-13*exp( -2280./t) (377) + SO_O3 (264) SO + O3 -> SO2 + O2 rate = 3.40E-12*exp( -1100./t) (378) + SO_OCLO (265) SO + OCLO -> SO2 + CLO rate = 1.90E-12 (379) + SO_OH (266) SO + OH -> SO2 + H rate = 2.60E-11*exp( 330./t) (380) + usr_DMS_OH (267) DMS + OH -> 0.5*SO2 + 0.5*HO2 rate = ** User defined ** (381) + usr_SO3_H2O (268) SO3 + H2O -> H2SO4 rate = ** User defined ** (382) + NH3_OH (269) NH3 + OH -> H2O + NHDEP rate = 1.70E-12*exp( -710./t) (383) + usr_HO2_aer (270) HO2 -> H2O rate = ** User defined ** (384) + usr_N2O5_aer (271) N2O5 -> 2*HNO3 rate = ** User defined ** (385) + usr_NH4_strat_ta (272) NH4 -> NHDEP rate = 6.34E-08 (386) + usr_NO2_aer (273) NO2 -> 0.5*OH + 0.5*NO + 0.5*HNO3 rate = ** User defined ** (387) + usr_NO3_aer (274) NO3 -> HNO3 rate = ** User defined ** (388) + usr_ONITR_aer (275) ONITR -> HNO3 rate = ** User defined ** (389) + SOAE_tau (276) SOAE -> SOAG rate = 1.16E-05 (390) + het1 (277) N2O5 -> 2*HNO3 rate = ** User defined ** (391) + het10 (278) HOCL + HCL -> CL2 + H2O rate = ** User defined ** (392) + het11 (279) BRONO2 -> HOBR + HNO3 rate = ** User defined ** (393) + het12 (280) N2O5 -> 2*HNO3 rate = ** User defined ** (394) + het13 (281) CLONO2 -> HOCL + HNO3 rate = ** User defined ** (395) + het14 (282) BRONO2 -> HOBR + HNO3 rate = ** User defined ** (396) + het15 (283) CLONO2 + HCL -> CL2 + HNO3 rate = ** User defined ** (397) + het16 (284) HOCL + HCL -> CL2 + H2O rate = ** User defined ** (398) + het17 (285) HOBR + HCL -> BRCL + H2O rate = ** User defined ** (399) + het2 (286) CLONO2 -> HOCL + HNO3 rate = ** User defined ** (400) + het3 (287) BRONO2 -> HOBR + HNO3 rate = ** User defined ** (401) + het4 (288) CLONO2 + HCL -> CL2 + HNO3 rate = ** User defined ** (402) + het5 (289) HOCL + HCL -> CL2 + H2O rate = ** User defined ** (403) + het6 (290) HOBR + HCL -> BRCL + H2O rate = ** User defined ** (404) + het7 (291) N2O5 -> 2*HNO3 rate = ** User defined ** (405) + het8 (292) CLONO2 -> HOCL + HNO3 rate = ** User defined ** (406) + het9 (293) CLONO2 + HCL -> CL2 + HNO3 rate = ** User defined ** (407) + ag247nm (294) Op2P -> Op rate = 4.70E-02 (408) + ag373nm (295) Op2D -> Op rate = 7.70E-05 (409) + ag732nm (296) Op2P -> Op2D rate = 1.71E-01 (410) + elec1 (297) NOp + e -> 0.2*N + 0.8*N2D + O rate = ** User defined ** (411) + elec2 (298) O2p + e -> 1.15*O + 0.85*O1D rate = ** User defined ** (412) + elec3 (299) N2p + e -> 1.1*N + 0.9*N2D rate = ** User defined ** (413) + ion_N2p_O2 (300) N2p + O2 -> O2p + N2 rate = 6.00E-11 (414) + ion_N2p_Oa (301) N2p + O -> NOp + N2D rate = ** User defined ** (415) + ion_N2p_Ob (302) N2p + O -> Op + N2 rate = ** User defined ** (416) + ion_Np_O (303) Np + O -> Op + N rate = 1.00E-12 (417) + ion_Np_O2a (304) Np + O2 -> O2p + N rate = 4.00E-10 (418) + ion_Np_O2b (305) Np + O2 -> NOp + O rate = 2.00E-10 (419) + ion_O2p_N (306) O2p + N -> NOp + O rate = 1.00E-10 (420) + ion_O2p_N2 (307) O2p + N2 -> NOp + NO rate = 5.00E-16 (421) + ion_O2p_NO (308) O2p + NO -> NOp + O2 rate = 4.40E-10 (422) + ion_Op_CO2 (309) Op + CO2 -> O2p + CO rate = 9.00E-10 (423) + ion_Op_N2 (310) Op + N2 -> NOp + N rate = ** User defined ** (424) + ion_Op_N2D (311) Op + N2D -> Np + O rate = 1.30E-10 (425) + ion_Op_O2 (312) Op + O2 -> O2p + O rate = ** User defined ** (426) + Op2D_e (313) Op2D + e -> Op + e rate = ** User defined ** (427) + Op2D_N2 (314) Op2D + N2 -> N2p + O rate = 8.00E-10 (428) + Op2D_O (315) Op2D + O -> Op + O rate = 5.00E-12 (429) + Op2D_O2 (316) Op2D + O2 -> O2p + O rate = 7.00E-10 (430) + Op2P_ea (317) Op2P + e -> Op2D + e rate = ** User defined ** (431) + Op2P_eb (318) Op2P + e -> Op + e rate = ** User defined ** (432) + Op2P_N2a (319) Op2P + N2 -> N2p + O rate = 4.80E-10 (433) + Op2P_N2b (320) Op2P + N2 -> Np + NO rate = 1.00E-10 (434) + Op2P_O (321) Op2P + O -> Op + O rate = 4.00E-10 (435) + +Extraneous prod/loss species + ( 1) num_a1 (dataset) + ( 2) num_a2 (dataset) + ( 3) so4_a1 (dataset) + ( 4) so4_a2 (dataset) + ( 5) num_a4 (dataset) + ( 6) bc_a4 (dataset) + ( 7) pom_a4 (dataset) + ( 8) num_a5 (dataset) + ( 9) so4_a5 (dataset) + (10) CO (dataset) + (11) NO2 (dataset) + (12) NO (dataset) + (13) SO2 (dataset) + (14) O2p + (15) N2p + (16) Np + (17) N2D + (18) Op + (19) N + (20) e + (21) OH + + + Equation Report + + d(bc_a1)/dt = 0 + d(bc_a4)/dt = 0 + d(BIGALK)/dt = - r227*OH*BIGALK + d(BR)/dt = j47*BRCL + j48*BRO + j50*BRONO2 + j52*CF2CLBR + j53*CF3BR + 2*j59*CH2BR2 + j60*CH3BR + + 3*j63*CHBR3 + 2*j71*H2402 + j72*HBR + j78*HOBR + r91*O1D*CF2CLBR + 2*r104*BRO*BRO + + r105*BRO*CLO + r106*BRO*CLO + r109*BRO*NO + r112*BRO*O + r113*BRO*OH + r114*HBR*O + + r115*HBR*OH + r117*O1D*CF3BR + 3*r118*O1D*CHBR3 + 2*r119*O1D*H2402 + r120*O1D*HBR + + 2*r128*CH2BR2*CL + 2*r129*CH2BR2*OH + r130*CH3BR*CL + r131*CH3BR*OH + 3*r135*CHBR3*CL + + 3*r136*CHBR3*OH + 2*r140*O1D*CH2BR2 + r141*O1D*CH3BR + r259*SO*BRO + - r101*CH2O*BR - r102*HO2*BR - r103*O3*BR + d(BRCL)/dt = r107*BRO*CLO + r285*HOBR*HCL + r290*HOBR*HCL + - j47*BRCL + d(BRO)/dt = j49*BRONO2 + r103*BR*O3 + r111*BRONO2*O + r116*HOBR*O + r121*O1D*HBR + - j48*BRO - 2*r104*BRO*BRO - r105*CLO*BRO - r106*CLO*BRO - r107*CLO*BRO - r108*HO2*BRO + - r109*NO*BRO - r110*M*NO2*BRO - r112*O*BRO - r113*OH*BRO - r259*SO*BRO + d(BRONO2)/dt = r110*M*BRO*NO2 + - j49*BRONO2 - j50*BRONO2 - r279*BRONO2 - r282*BRONO2 - r287*BRONO2 - r111*O*BRONO2 + d(BRY)/dt = 0 + d(C2H4)/dt = - r159*M*CL*C2H4 - r160*O3*C2H4 - r184*M*OH*C2H4 + d(C2H5O2)/dt = .5*r166*C2H5OOH*OH + r167*C2H6*CL + r168*C2H6*OH + - 2*r161*C2H5O2*C2H5O2 - r162*CH3O2*C2H5O2 - r163*HO2*C2H5O2 - r164*NO*C2H5O2 + d(C2H5OH)/dt = .4*r161*C2H5O2*C2H5O2 + .2*r162*C2H5O2*CH3O2 + - r165*OH*C2H5OH + d(C2H5OOH)/dt = r163*C2H5O2*HO2 + - j20*C2H5OOH - r166*OH*C2H5OOH + d(C2H6)/dt = - r167*CL*C2H6 - r168*OH*C2H6 + d(C3H6)/dt = .7*j40*MVK + .13*r238*ISOP*O3 + - r187*NO3*C3H6 - r188*O3*C3H6 - r205*M*OH*C3H6 + d(C3H7O2)/dt = r192*C3H7OOH*OH + r193*C3H8*OH + 1.67*r227*BIGALK*OH + - r189*CH3O2*C3H7O2 - r190*HO2*C3H7O2 - r191*NO*C3H7O2 + d(C3H7OOH)/dt = r190*C3H7O2*HO2 + - j21*C3H7OOH - r192*OH*C3H7OOH + d(C3H8)/dt = - r193*OH*C3H8 + d(CCL4)/dt = - j51*CCL4 - r90*O1D*CCL4 + d(CF2CLBR)/dt = - j52*CF2CLBR - r91*O1D*CF2CLBR + d(CF3BR)/dt = - j53*CF3BR - r117*O1D*CF3BR + d(CFC11)/dt = - j54*CFC11 - r92*O1D*CFC11 + d(CFC113)/dt = - j55*CFC113 - r93*O1D*CFC113 + d(CFC114)/dt = - j56*CFC114 - r94*O1D*CFC114 + d(CFC115)/dt = - j57*CFC115 - r95*O1D*CFC115 + d(CFC12)/dt = - j58*CFC12 - r96*O1D*CFC12 + d(CH2BR2)/dt = - j59*CH2BR2 - r128*CL*CH2BR2 - r129*OH*CH2BR2 - r140*O1D*CH2BR2 + d(CH2O)/dt = j28*CH3OOH + .18*j29*CH4 + j33*GLYALD + j35*HYAC + .69*j36*ISOPOOH + 1.34*j37*MACR + j41*NOA + + j42*ONITR + j44*POOH + j45*ROOH + 2*r179*EO + r72*CLO*CH3O2 + 2*r148*CH3O2*CH3O2 + + r149*CH3O2*CH3O2 + r151*CH3O2*NO + r152*CH3OH*OH + .3*r153*CH3OOH*OH + r156*O1D*CH4 + + r157*O1D*CH4 + r160*C2H4*O3 + .7*r162*C2H5O2*CH3O2 + r172*CH3CO3*CH3O2 + .5*r176*CH3COOOH*OH + + .5*r178*EO2*NO + .8*r181*GLYALD*OH + r183*PAN*OH + .5*r188*C3H6*O3 + r189*C3H7O2*CH3O2 + + r199*PO2*NO + .8*r201*RO2*CH3O2 + .15*r202*RO2*HO2 + r203*RO2*NO + .25*r207*MACRO2*CH3CO3 + + .88*r208*MACRO2*CH3O2 + .25*r210*MACRO2*NO3 + .25*r211*MACRO2*NO + .12*r213*MACR*O3 + + r216*MCO3*CH3CO3 + 2*r217*MCO3*CH3O2 + .45*r218*MCO3*HO2 + 2*r219*MCO3*MCO3 + r220*MCO3*NO + + r221*MCO3*NO3 + .5*r222*M*MPAN*OH + .6*r223*MVK*O3 + .206*r230*ISOPNO3*HO2 + + .072*r231*ISOPNO3*NO + .072*r232*ISOPNO3*NO3 + .6*r233*ISOPO2*CH3CO3 + 1.2*r234*ISOPO2*CH3O2 + + .55*r236*ISOPO2*NO + .6*r237*ISOPO2*NO3 + .91*r238*ISOP*O3 + .25*r243*XO2*CH3CO3 + + .8*r244*XO2*CH3O2 + .25*r246*XO2*NO + - j22*CH2O - j23*CH2O - r65*CL*CH2O - r101*BR*CH2O - r145*NO3*CH2O - r146*O*CH2O + - r147*OH*CH2O + d(CH3BR)/dt = - j60*CH3BR - r130*CL*CH3BR - r131*OH*CH3BR - r141*O1D*CH3BR + d(CH3CCL3)/dt = - j61*CH3CCL3 - r132*OH*CH3CCL3 + d(CH3CHO)/dt = j20*C2H5OOH + j44*POOH + 1.6*r161*C2H5O2*C2H5O2 + .8*r162*C2H5O2*CH3O2 + r164*C2H5O2*NO + + r165*C2H5OH*OH + .5*r166*C2H5OOH*OH + .5*r188*C3H6*O3 + .27*r191*C3H7O2*NO + r199*PO2*NO + + .1*r223*MVK*O3 + - j24*CH3CHO - r169*NO3*CH3CHO - r170*OH*CH3CHO + d(CH3CL)/dt = - j62*CH3CL - r133*CL*CH3CL - r134*OH*CH3CL + d(CH3CO3)/dt = j25*CH3COCH3 + j26*CH3COCHO + j35*HYAC + 1.34*j37*MACR + .3*j40*MVK + j41*NOA + .6*j43*PAN + + j45*ROOH + r186*M*PAN + r169*CH3CHO*NO3 + r170*CH3CHO*OH + .5*r176*CH3COOOH*OH + + r194*CH3COCHO*NO3 + r195*CH3COCHO*OH + .3*r201*RO2*CH3O2 + .15*r202*RO2*HO2 + r203*RO2*NO + + .53*r207*MACRO2*CH3CO3 + .26*r208*MACRO2*CH3O2 + .53*r210*MACRO2*NO3 + .53*r211*MACRO2*NO + + .1*r213*MACR*O3 + r217*MCO3*CH3O2 + .45*r218*MCO3*HO2 + 2*r219*MCO3*MCO3 + r220*MCO3*NO + + r221*MCO3*NO3 + .28*r223*MVK*O3 + .08*r238*ISOP*O3 + - 2*r171*CH3CO3*CH3CO3 - r172*CH3O2*CH3CO3 - r173*HO2*CH3CO3 - r174*NO*CH3CO3 + - r185*M*NO2*CH3CO3 - r207*MACRO2*CH3CO3 - r233*ISOPO2*CH3CO3 - r243*XO2*CH3CO3 + d(CH3COCH3)/dt = .82*j21*C3H7OOH + .82*r189*C3H7O2*CH3O2 + .82*r191*C3H7O2*NO + .1*r251*TERP*OH + - j25*CH3COCH3 - r206*OH*CH3COCH3 + d(CH3COCHO)/dt = r196*HYAC*OH + r197*NOA*OH + .5*r201*RO2*CH3O2 + .25*r207*MACRO2*CH3CO3 + + .24*r208*MACRO2*CH3O2 + .25*r210*MACRO2*NO3 + .25*r211*MACRO2*NO + .88*r213*MACR*O3 + + .5*r223*MVK*O3 + .02*r236*ISOPO2*NO + .25*r243*XO2*CH3CO3 + .1*r244*XO2*CH3O2 + + .25*r246*XO2*NO + .25*r247*XO2*NO3 + - j26*CH3COCHO - r194*NO3*CH3COCHO - r195*OH*CH3COCHO + d(CH3COOH)/dt = .1*r172*CH3CO3*CH3O2 + .15*r173*CH3CO3*HO2 + .12*r188*C3H6*O3 + .15*r218*MCO3*HO2 + - r175*OH*CH3COOH + d(CH3COOOH)/dt = .4*r173*CH3CO3*HO2 + .4*r218*MCO3*HO2 + - j27*CH3COOOH - r176*OH*CH3COOOH + d(CH3O2)/dt = j24*CH3CHO + j25*CH3COCH3 + j27*CH3COOOH + j30*CH4 + .3*j40*MVK + .4*j43*PAN + j60*CH3BR + + j62*CH3CL + r66*CL*CH4 + r122*F*CH4 + .7*r153*CH3OOH*OH + r154*CH4*OH + r155*O1D*CH4 + + 2*r171*CH3CO3*CH3CO3 + .9*r172*CH3CO3*CH3O2 + .45*r173*CH3CO3*HO2 + r174*CH3CO3*NO + + r175*CH3COOH*OH + .28*r188*C3H6*O3 + r207*MACRO2*CH3CO3 + r216*MCO3*CH3CO3 + + r233*ISOPO2*CH3CO3 + .05*r238*ISOP*O3 + r243*XO2*CH3CO3 + - r72*CLO*CH3O2 - 2*r148*CH3O2*CH3O2 - 2*r149*CH3O2*CH3O2 - r150*HO2*CH3O2 - r151*NO*CH3O2 + - r162*C2H5O2*CH3O2 - r172*CH3CO3*CH3O2 - r189*C3H7O2*CH3O2 - r201*RO2*CH3O2 + - r208*MACRO2*CH3O2 - r217*MCO3*CH3O2 - r234*ISOPO2*CH3O2 - r244*XO2*CH3O2 + d(CH3OH)/dt = r149*CH3O2*CH3O2 + .3*r162*C2H5O2*CH3O2 + .5*r201*RO2*CH3O2 + .25*r208*MACRO2*CH3O2 + + .25*r234*ISOPO2*CH3O2 + .3*r244*XO2*CH3O2 + - r152*OH*CH3OH + d(CH3OOH)/dt = r150*CH3O2*HO2 + - j28*CH3OOH - r153*OH*CH3OOH + d(CH4)/dt = .1*r188*C3H6*O3 + - j29*CH4 - j30*CH4 - r66*CL*CH4 - r122*F*CH4 - r154*OH*CH4 - r155*O1D*CH4 - r156*O1D*CH4 + - r157*O1D*CH4 + d(CHBR3)/dt = - j63*CHBR3 - r118*O1D*CHBR3 - r135*CL*CHBR3 - r136*OH*CHBR3 + d(CL)/dt = j47*BRCL + 4*j51*CCL4 + j52*CF2CLBR + 2*j54*CFC11 + 2*j55*CFC113 + 2*j56*CFC114 + j57*CFC115 + + 2*j58*CFC12 + 3*j61*CH3CCL3 + j62*CH3CL + 2*j64*CL2 + 2*j65*CL2O2 + j66*CLO + j67*CLONO2 + + j70*COFCL + j73*HCFC141B + j74*HCFC142B + j75*HCFC22 + j76*HCL + j79*HOCL + r72*CLO*CH3O2 + + 2*r73*CLO*CLO + r75*CLO*CLO + r77*CLO*NO + r82*CLO*O + r83*CLO*OH + r85*HCL*O + r86*HCL*OH + + 4*r90*O1D*CCL4 + r91*O1D*CF2CLBR + 2*r92*O1D*CFC11 + 2*r93*O1D*CFC113 + 2*r94*O1D*CFC114 + + r95*O1D*CFC115 + 2*r96*O1D*CFC12 + r97*O1D*HCL + r106*BRO*CLO + r127*O1D*COFCL + + 3*r132*CH3CCL3*OH + r134*CH3CL*OH + r137*HCFC141B*OH + r138*HCFC142B*OH + r139*HCFC22*OH + + r142*O1D*HCFC141B + r143*O1D*HCFC142B + r144*O1D*HCFC22 + r260*SO*CLO + - r65*CH2O*CL - r66*CH4*CL - r67*H2*CL - r68*H2O2*CL - r69*HO2*CL - r70*HO2*CL - r71*O3*CL + - r78*CLONO2*CL - r87*HOCL*CL - r128*CH2BR2*CL - r130*CH3BR*CL - r133*CH3CL*CL - r135*CHBR3*CL + - r167*C2H6*CL + d(CL2)/dt = r74*CLO*CLO + r78*CLONO2*CL + r278*HOCL*HCL + r283*CLONO2*HCL + r284*HOCL*HCL + r288*CLONO2*HCL + + r289*HOCL*HCL + r293*CLONO2*HCL + - j64*CL2 + d(CL2O2)/dt = r99*M*CLO*CLO + - j65*CL2O2 - r100*M*CL2O2 + d(CLO)/dt = j68*CLONO2 + j80*OCLO + r100*M*CL2O2 + r100*M*CL2O2 + r70*CL*HO2 + r71*CL*O3 + r80*CLONO2*O + + r87*HOCL*CL + r88*HOCL*O + r89*HOCL*OH + r98*O1D*HCL + r265*SO*OCLO + - j66*CLO - r72*CH3O2*CLO - 2*r73*CLO*CLO - 2*r74*CLO*CLO - 2*r75*CLO*CLO - r76*HO2*CLO + - r77*NO*CLO - r79*M*NO2*CLO - r82*O*CLO - r83*OH*CLO - r84*OH*CLO - 2*r99*M*CLO*CLO + - r105*BRO*CLO - r106*BRO*CLO - r107*BRO*CLO - r260*SO*CLO + d(CLONO2)/dt = r79*M*CLO*NO2 + - j67*CLONO2 - j68*CLONO2 - r281*CLONO2 - r286*CLONO2 - r292*CLONO2 - r78*CL*CLONO2 + - r80*O*CLONO2 - r81*OH*CLONO2 - r283*HCL*CLONO2 - r288*HCL*CLONO2 - r293*HCL*CLONO2 + d(CLY)/dt = 0 + d(CO)/dt = j22*CH2O + j23*CH2O + j24*CH3CHO + j26*CH3COCHO + .38*j29*CH4 + j31*CO2 + j33*GLYALD + + 2*j34*GLYOXAL + 1.34*j38*MACR + .7*j40*MVK + j42*ONITR + j82*CO2 + j109*OCS + r65*CL*CH2O + + r101*BR*CH2O + r133*CH3CL*CL + r145*CH2O*NO3 + r146*CH2O*O + r147*CH2O*OH + .63*r160*C2H4*O3 + + r182*GLYOXAL*OH + .56*r188*C3H6*O3 + r194*CH3COCHO*NO3 + r195*CH3COCHO*OH + + .22*r207*MACRO2*CH3CO3 + .11*r208*MACRO2*CH3O2 + .22*r210*MACRO2*NO3 + .22*r211*MACRO2*NO + + .65*r213*MACR*O3 + .56*r223*MVK*O3 + .62*r238*ISOP*O3 + .25*r243*XO2*CH3CO3 + .2*r244*XO2*CH3O2 + + .25*r246*XO2*NO + .5*r247*XO2*NO3 + r254*OCS*O + r255*OCS*OH + r309*Op*CO2 + - r158*OH*CO + d(CO2)/dt = j27*CH3COOOH + .44*j29*CH4 + .4*j43*PAN + r158*CO*OH + 2*r171*CH3CO3*CH3CO3 + + .9*r172*CH3CO3*CH3O2 + r174*CH3CO3*NO + r175*CH3COOH*OH + .5*r176*CH3COOOH*OH + + .8*r181*GLYALD*OH + r182*GLYOXAL*OH + .2*r188*C3H6*O3 + 2*r216*MCO3*CH3CO3 + r217*MCO3*CH3O2 + + .45*r218*MCO3*HO2 + 2*r219*MCO3*MCO3 + .5*r222*M*MPAN*OH + .1*r223*MVK*O3 + r243*XO2*CH3CO3 + - j31*CO2 - j82*CO2 - r309*Op*CO2 + d(COF2)/dt = j52*CF2CLBR + j53*CF3BR + j55*CFC113 + 2*j56*CFC114 + 2*j57*CFC115 + j58*CFC12 + 2*j71*H2402 + + j74*HCFC142B + j75*HCFC22 + r91*O1D*CF2CLBR + r93*O1D*CFC113 + 2*r94*O1D*CFC114 + + 2*r95*O1D*CFC115 + r96*O1D*CFC12 + r117*O1D*CF3BR + 2*r119*O1D*H2402 + r138*HCFC142B*OH + + r139*HCFC22*OH + r143*O1D*HCFC142B + r144*O1D*HCFC22 + - j69*COF2 - r126*O1D*COF2 + d(COFCL)/dt = j54*CFC11 + j55*CFC113 + j73*HCFC141B + r92*O1D*CFC11 + r93*O1D*CFC113 + r137*HCFC141B*OH + + r142*O1D*HCFC141B + - j70*COFCL - r127*O1D*COFCL + d(DMS)/dt = - r252*NO3*DMS - r253*OH*DMS - r267*OH*DMS + d(dst_a1)/dt = 0 + d(dst_a2)/dt = 0 + d(dst_a3)/dt = 0 + d(EO)/dt = j32*EOOH + .75*r178*EO2*NO + - r179*EO - r180*O2*EO + d(EO2)/dt = r184*M*C2H4*OH + - r177*HO2*EO2 - r178*NO*EO2 + d(EOOH)/dt = r177*EO2*HO2 + - j32*EOOH + d(F)/dt = j53*CF3BR + j57*CFC115 + 2*j69*COF2 + j70*COFCL + j77*HF + r95*O1D*CFC115 + r117*O1D*CF3BR + + 2*r126*O1D*COF2 + r127*O1D*COFCL + - r122*CH4*F - r123*H2*F - r124*H2O*F - r125*HNO3*F + d(GLYALD)/dt = r180*EO*O2 + .53*r207*MACRO2*CH3CO3 + .26*r208*MACRO2*CH3O2 + .53*r210*MACRO2*NO3 + + .53*r211*MACRO2*NO + .02*r236*ISOPO2*NO + .25*r243*XO2*CH3CO3 + .1*r244*XO2*CH3O2 + + .25*r246*XO2*NO + .25*r247*XO2*NO3 + - j33*GLYALD - r181*OH*GLYALD + d(GLYOXAL)/dt = .2*r181*GLYALD*OH + .02*r236*ISOPO2*NO + .25*r243*XO2*CH3CO3 + .1*r244*XO2*CH3O2 + + .25*r246*XO2*NO + .25*r247*XO2*NO3 + - j34*GLYOXAL - r182*OH*GLYOXAL + d(H)/dt = j2*H2O + 2*j3*H2O + 2*j22*CH2O + j28*CH3OOH + .33*j29*CH4 + j30*CH4 + j72*HBR + j76*HCL + j77*HF + + r3*O1D*H2 + r21*H2*O + r30*OH*H2 + r33*OH*O + r53*N*OH + r67*CL*H2 + r98*O1D*HCL + + r121*O1D*HBR + r123*F*H2 + r147*CH2O*OH + r156*O1D*CH4 + r255*OCS*OH + r261*S*OH + r266*SO*OH + - r23*HO2*H - r24*HO2*H - r25*HO2*H - r26*M*O2*H - r29*O3*H + d(H2)/dt = j1*H2O + j23*CH2O + 1.4400001*j29*CH4 + r23*H*HO2 + r157*O1D*CH4 + - r3*O1D*H2 - r21*O*H2 - r30*OH*H2 - r67*CL*H2 - r123*F*H2 + d(H2402)/dt = - j71*H2402 - r119*O1D*H2402 + d(H2O2)/dt = r36*M*OH*OH + r37*HO2*HO2 + - j4*H2O2 - r22*O*H2O2 - r31*OH*H2O2 - r68*CL*H2O2 + d(H2SO4)/dt = r268*SO3*H2O + - j108*H2SO4 + d(HBR)/dt = r101*BR*CH2O + r102*BR*HO2 + - j72*HBR - r114*O*HBR - r115*OH*HBR - r120*O1D*HBR - r121*O1D*HBR + d(HCFC141B)/dt = - j73*HCFC141B - r137*OH*HCFC141B - r142*O1D*HCFC141B + d(HCFC142B)/dt = - j74*HCFC142B - r138*OH*HCFC142B - r143*O1D*HCFC142B + d(HCFC22)/dt = - j75*HCFC22 - r139*OH*HCFC22 - r144*O1D*HCFC22 + d(HCL)/dt = r65*CL*CH2O + r66*CL*CH4 + r67*CL*H2 + r68*CL*H2O2 + r69*CL*HO2 + r84*CLO*OH + r87*HOCL*CL + + r128*CH2BR2*CL + r130*CH3BR*CL + 2*r133*CH3CL*CL + r135*CHBR3*CL + r167*C2H6*CL + - j76*HCL - r85*O*HCL - r86*OH*HCL - r97*O1D*HCL - r98*O1D*HCL - r278*HOCL*HCL + - r283*CLONO2*HCL - r284*HOCL*HCL - r285*HOBR*HCL - r288*CLONO2*HCL - r289*HOCL*HCL + - r290*HOBR*HCL - r293*CLONO2*HCL + d(HF)/dt = r122*F*CH4 + r123*F*H2 + r124*F*H2O + r125*F*HNO3 + - j77*HF + d(HNO3)/dt = 2*r271*N2O5 + .5*r273*NO2 + r274*NO3 + r275*ONITR + 2*r277*N2O5 + r279*BRONO2 + 2*r280*N2O5 + + r281*CLONO2 + r282*BRONO2 + r286*CLONO2 + r287*BRONO2 + 2*r291*N2O5 + r292*CLONO2 + + r61*M*NO2*OH + r145*CH2O*NO3 + r169*CH3CHO*NO3 + r194*CH3COCHO*NO3 + r252*DMS*NO3 + + r283*CLONO2*HCL + r288*CLONO2*HCL + r293*CLONO2*HCL + - j9*HNO3 - r62*OH*HNO3 - r125*F*HNO3 + d(HO2NO2)/dt = r59*M*NO2*HO2 + - j10*HO2NO2 - j11*HO2NO2 - r63*M*HO2NO2 - r38*OH*HO2NO2 + d(HOBR)/dt = r279*BRONO2 + r282*BRONO2 + r287*BRONO2 + r108*BRO*HO2 + - j78*HOBR - r116*O*HOBR - r285*HCL*HOBR - r290*HCL*HOBR + d(HOCL)/dt = r281*CLONO2 + r286*CLONO2 + r292*CLONO2 + r76*CLO*HO2 + r81*CLONO2*OH + - j79*HOCL - r87*CL*HOCL - r88*O*HOCL - r89*OH*HOCL - r278*HCL*HOCL - r284*HCL*HOCL + - r289*HCL*HOCL + d(HYAC)/dt = .5*r200*POOH*OH + .2*r201*RO2*CH3O2 + .22*r207*MACRO2*CH3CO3 + .23*r208*MACRO2*CH3O2 + + .22*r210*MACRO2*NO3 + .22*r211*MACRO2*NO + .5*r222*M*MPAN*OH + .02*r236*ISOPO2*NO + + .25*r243*XO2*CH3CO3 + .1*r244*XO2*CH3O2 + .25*r246*XO2*NO + .25*r247*XO2*NO3 + - j35*HYAC - r196*OH*HYAC + d(HYDRALD)/dt = .4*r233*ISOPO2*CH3CO3 + .3*r234*ISOPO2*CH3O2 + .33*r236*ISOPO2*NO + .4*r237*ISOPO2*NO3 + + r241*ONITR*NO3 + r242*ONITR*OH + - r228*OH*HYDRALD + d(ISOP)/dt = - r229*NO3*ISOP - r238*O3*ISOP - r239*OH*ISOP + d(ISOPNO3)/dt = r229*ISOP*NO3 + - r230*HO2*ISOPNO3 - r231*NO*ISOPNO3 - r232*NO3*ISOPNO3 + d(ISOPO2)/dt = r239*ISOP*OH + .2*r240*ISOPOOH*OH + 1.7*r249*TERP*NO3 + 1.64*r251*TERP*OH + - r233*CH3CO3*ISOPO2 - r234*CH3O2*ISOPO2 - r235*HO2*ISOPO2 - r236*NO*ISOPO2 - r237*NO3*ISOPO2 + d(ISOPOOH)/dt = r235*ISOPO2*HO2 + - j36*ISOPOOH - r240*OH*ISOPOOH + d(MACR)/dt = .288*j36*ISOPOOH + .167*r230*ISOPNO3*HO2 + .167*r231*ISOPNO3*NO + .167*r232*ISOPNO3*NO3 + + .25*r233*ISOPO2*CH3CO3 + .19*r234*ISOPO2*CH3O2 + .23*r236*ISOPO2*NO + .25*r237*ISOPO2*NO3 + + .3*r238*ISOP*O3 + 1.122*r250*TERP*O3 + - j37*MACR - j38*MACR - r213*O3*MACR - r214*OH*MACR + d(MACRO2)/dt = .5*r214*MACR*OH + .2*r215*MACROOH*OH + r224*MVK*OH + - r207*CH3CO3*MACRO2 - r208*CH3O2*MACRO2 - r209*HO2*MACRO2 - r210*NO3*MACRO2 - r211*NO*MACRO2 + - r212*NO*MACRO2 + d(MACROOH)/dt = r209*MACRO2*HO2 + - r215*OH*MACROOH + d(MCO3)/dt = .66*j37*MACR + j39*MPAN + r226*M*MPAN + .5*r214*MACR*OH + .5*r215*MACROOH*OH + - r216*CH3CO3*MCO3 - r217*CH3O2*MCO3 - r218*HO2*MCO3 - 2*r219*MCO3*MCO3 - r220*NO*MCO3 + - r221*NO3*MCO3 - r225*M*NO2*MCO3 + d(MPAN)/dt = r225*M*MCO3*NO2 + - j39*MPAN - r226*M*MPAN - r222*M*OH*MPAN + d(MVK)/dt = .402*j36*ISOPOOH + .039*r230*ISOPNO3*HO2 + .039*r231*ISOPNO3*NO + .039*r232*ISOPNO3*NO3 + + .35*r233*ISOPO2*CH3CO3 + .26*r234*ISOPO2*CH3O2 + .32*r236*ISOPO2*NO + .35*r237*ISOPO2*NO3 + + .2*r238*ISOP*O3 + .442*r250*TERP*O3 + - j40*MVK - r223*O3*MVK - r224*OH*MVK + d(N)/dt = .8*j85*N2 + .8*j86*N2 + j89*N2 + j90*N2 + j16*NO + r310*N2*Op + r39*N2D*O + .2*r297*NOp*e + + 1.1*r299*N2p*e + r303*Np*O + r304*Np*O2 + - j83*N - r41*NO*N - r42*NO2*N - r43*NO2*N - r44*NO2*N - r45*O2*N - r53*OH*N - r306*O2p*N + d(N2O)/dt = r42*N*NO2 + - j12*N2O - r57*O1D*N2O - r58*O1D*N2O + d(N2O5)/dt = r60*M*NO2*NO3 + - j13*N2O5 - j14*N2O5 - r64*M*N2O5 - r271*N2O5 - r277*N2O5 - r280*N2O5 - r291*N2O5 + d(ncl_a1)/dt = 0 + d(ncl_a2)/dt = 0 + d(ncl_a3)/dt = 0 + d(NH3)/dt = - r269*OH*NH3 + d(NH4)/dt = - r272*NH4 + d(NO)/dt = j14*N2O5 + j17*NO2 + j19*NO3 + .5*r273*NO2 + r307*N2*O2p + r320*N2*Op2P + r40*N2D*O2 + + 2*r43*N*NO2 + r45*N*O2 + r46*NO2*O + r53*N*OH + 2*r57*O1D*N2O + r262*SO*NO2 + - j15*NO - j16*NO - r41*N*NO - r50*NO3*NO - r54*HO2*NO - r55*O3*NO - r56*M*O*NO - r77*CLO*NO + - r109*BRO*NO - r151*CH3O2*NO - r164*C2H5O2*NO - r174*CH3CO3*NO - r178*EO2*NO - r191*C3H7O2*NO + - r199*PO2*NO - r203*RO2*NO - r211*MACRO2*NO - r212*MACRO2*NO - r220*MCO3*NO - r231*ISOPNO3*NO + - r236*ISOPO2*NO - r246*XO2*NO - r308*O2p*NO + d(NO2)/dt = j9*HNO3 + j11*HO2NO2 + j13*N2O5 + j18*NO3 + j39*MPAN + j41*NOA + j42*ONITR + .6*j43*PAN + + j49*BRONO2 + j68*CLONO2 + r63*M*HO2NO2 + r64*M*N2O5 + r186*M*PAN + r226*M*MPAN + + r38*HO2NO2*OH + r49*NO3*HO2 + 2*r50*NO3*NO + r51*NO3*O + r52*NO3*OH + r54*NO*HO2 + r55*NO*O3 + + r56*M*NO*O + r77*CLO*NO + r109*BRO*NO + r151*CH3O2*NO + r164*C2H5O2*NO + r174*CH3CO3*NO + + r178*EO2*NO + r191*C3H7O2*NO + r197*NOA*OH + r199*PO2*NO + r203*RO2*NO + r210*MACRO2*NO3 + + r211*MACRO2*NO + r220*MCO3*NO + r221*MCO3*NO3 + .206*r230*ISOPNO3*HO2 + 1.206*r231*ISOPNO3*NO + + 1.206*r232*ISOPNO3*NO3 + .92*r236*ISOPO2*NO + r237*ISOPO2*NO3 + r241*ONITR*NO3 + + .4*r242*ONITR*OH + r246*XO2*NO + r247*XO2*NO3 + r249*TERP*NO3 + - j17*NO2 - r273*NO2 - r42*N*NO2 - r43*N*NO2 - r44*N*NO2 - r46*O*NO2 - r47*O3*NO2 + - r48*M*O*NO2 - r59*M*HO2*NO2 - r60*M*NO3*NO2 - r61*M*OH*NO2 - r79*M*CLO*NO2 - r110*M*BRO*NO2 + - r185*M*CH3CO3*NO2 - r225*M*MCO3*NO2 - r262*SO*NO2 + d(NO3)/dt = j10*HO2NO2 + j13*N2O5 + j14*N2O5 + .4*j43*PAN + j50*BRONO2 + j67*CLONO2 + r64*M*N2O5 + + r47*NO2*O3 + r48*M*NO2*O + r62*HNO3*OH + r78*CLONO2*CL + r80*CLONO2*O + r81*CLONO2*OH + + r111*BRONO2*O + r125*F*HNO3 + r183*PAN*OH + .5*r222*M*MPAN*OH + - j18*NO3 - j19*NO3 - r274*NO3 - r49*HO2*NO3 - r50*NO*NO3 - r51*O*NO3 - r52*OH*NO3 + - r60*M*NO2*NO3 - r145*CH2O*NO3 - r169*CH3CHO*NO3 - r187*C3H6*NO3 - r194*CH3COCHO*NO3 + - r210*MACRO2*NO3 - r221*MCO3*NO3 - r229*ISOP*NO3 - r232*ISOPNO3*NO3 - r237*ISOPO2*NO3 + - r241*ONITR*NO3 - r247*XO2*NO3 - r249*TERP*NO3 - r252*DMS*NO3 + d(NOA)/dt = r187*C3H6*NO3 + - j41*NOA - r197*OH*NOA + d(num_a1)/dt = 0 + d(num_a2)/dt = 0 + d(num_a3)/dt = 0 + d(num_a4)/dt = 0 + d(num_a5)/dt = 0 + d(O)/dt = j3*H2O + j5*O2 + 2*j6*O2 + j8*O3 + j14*N2O5 + j16*NO + j17*NO2 + j18*NO3 + .18*j29*CH4 + + j31*CO2 + j48*BRO + j66*CLO + j80*OCLO + j82*CO2 + j98*O2 + 2*j99*O2 + j100*O2 + j101*O2 + + j103*O2 + 2*j104*O2 + j105*O2 + j106*O2 + j110*SO + j111*SO2 + j112*SO3 + r5*N2*O1D + + r314*N2*Op2D + r319*N2*Op2P + r6*O1D*O2 + r7*O1D*O2 + 2*r9*O1D*O3 + r25*H*HO2 + r35*OH*OH + + r41*N*NO + r42*N*NO2 + r45*N*O2 + .765*r250*TERP*O3 + r256*S*O2 + r263*SO*O2 + r297*NOp*e + + 1.15*r298*O2p*e + r305*Np*O2 + r306*O2p*N + r311*Op*N2D + r312*Op*O2 + r316*Op2D*O2 + - j92*O - j93*O - j94*O - j95*O - j96*O - j97*O - r18*O3*O - 2*r19*M*O*O - r20*M*O2*O + - r21*H2*O - r22*H2O2*O - r27*HO2*O - r33*OH*O - r46*NO2*O - r48*M*NO2*O - r51*NO3*O + - r56*M*NO*O - r80*CLONO2*O - r82*CLO*O - r85*HCL*O - r88*HOCL*O - r111*BRONO2*O - r112*BRO*O + - r114*HBR*O - r116*HOBR*O - r146*CH2O*O - r254*OCS*O - r301*N2p*O - r302*N2p*O - r303*Np*O + d(O2)/dt = j8*O3 + j19*NO3 + r1*O2_1D + r2*O2_1S + r10*N2*O2_1D + r8*O1D*O3 + r8*O1D*O3 + r9*O1D*O3 + + r11*O2_1D*O + 2*r12*O2_1D*O2 + 2*r18*O*O3 + r19*M*O*O + r23*H*HO2 + r27*HO2*O + 2*r28*HO2*O3 + + r29*H*O3 + r32*OH*HO2 + r33*OH*O + r34*OH*O3 + r37*HO2*HO2 + r38*HO2NO2*OH + r44*N*NO2 + + r46*NO2*O + r47*NO2*O3 + r49*NO3*HO2 + r51*NO3*O + r55*NO*O3 + r58*O1D*N2O + r69*CL*HO2 + + r71*CL*O3 + r73*CLO*CLO + r74*CLO*CLO + r76*CLO*HO2 + r82*CLO*O + r84*CLO*OH + r102*BR*HO2 + + r103*BR*O3 + r104*BRO*BRO + r106*BRO*CLO + r107*BRO*CLO + r108*BRO*HO2 + r112*BRO*O + + r150*CH3O2*HO2 + r163*C2H5O2*HO2 + r190*C3H7O2*HO2 + r198*PO2*HO2 + r258*S*O3 + r264*SO*O3 + + r308*O2p*NO + - j5*O2 - j6*O2 - j98*O2 - j99*O2 - j100*O2 - j101*O2 - j102*O2 - j103*O2 - j104*O2 - j105*O2 + - j106*O2 - j107*O2 - r6*O1D*O2 - r12*O2_1D*O2 - r20*M*O*O2 - r26*M*H*O2 - r40*N2D*O2 + - r45*N*O2 - r180*EO*O2 - r256*S*O2 - r263*SO*O2 - r300*N2p*O2 - r304*Np*O2 - r305*Np*O2 + - r312*Op*O2 - r316*Op2D*O2 + d(O3)/dt = r20*M*O*O2 + .15*r173*CH3CO3*HO2 + .15*r218*MCO3*HO2 + - j7*O3 - j8*O3 - r8*O1D*O3 - r9*O1D*O3 - r18*O*O3 - r28*HO2*O3 - r29*H*O3 - r34*OH*O3 + - r47*NO2*O3 - r55*NO*O3 - r71*CL*O3 - r103*BR*O3 - r160*C2H4*O3 - r188*C3H6*O3 - r213*MACR*O3 + - r223*MVK*O3 - r238*ISOP*O3 - r250*TERP*O3 - r258*S*O3 - r264*SO*O3 + d(OCLO)/dt = r75*CLO*CLO + r105*BRO*CLO + - j80*OCLO - r265*SO*OCLO + d(OCS)/dt = - j109*OCS - r254*O*OCS - r255*OH*OCS + d(OH)/dt = j2*H2O + 2*j4*H2O2 + j9*HNO3 + j10*HO2NO2 + j20*C2H5OOH + j21*C3H7OOH + j27*CH3COOOH + + j28*CH3OOH + .33*j29*CH4 + j32*EOOH + j44*POOH + j45*ROOH + j46*XOOH + j78*HOBR + j79*HOCL + + .5*r273*NO2 + r3*O1D*H2 + 2*r4*O1D*H2O + r21*H2*O + r22*H2O2*O + 2*r24*H*HO2 + r27*HO2*O + + r28*HO2*O3 + r29*H*O3 + r49*NO3*HO2 + r54*NO*HO2 + r70*CL*HO2 + r85*HCL*O + r88*HOCL*O + + r97*O1D*HCL + r114*HBR*O + r116*HOBR*O + r120*O1D*HBR + r124*F*H2O + r146*CH2O*O + + .3*r153*CH3OOH*OH + r155*O1D*CH4 + .13*r160*C2H4*O3 + .5*r166*C2H5OOH*OH + .45*r173*CH3CO3*HO2 + + .36*r188*C3H6*O3 + .5*r200*POOH*OH + .15*r202*RO2*HO2 + .24*r213*MACR*O3 + .1*r215*MACROOH*OH + + .45*r218*MCO3*HO2 + .36*r223*MVK*O3 + .206*r230*ISOPNO3*HO2 + .32*r238*ISOP*O3 + .5*r248*XOOH*OH + + 1.156*r250*TERP*O3 + - r30*H2*OH - r31*H2O2*OH - r32*HO2*OH - r33*O*OH - r34*O3*OH - 2*r35*OH*OH - 2*r36*M*OH*OH + - r38*HO2NO2*OH - r52*NO3*OH - r53*N*OH - r61*M*NO2*OH - r62*HNO3*OH - r81*CLONO2*OH + - r83*CLO*OH - r84*CLO*OH - r86*HCL*OH - r89*HOCL*OH - r113*BRO*OH - r115*HBR*OH + - r129*CH2BR2*OH - r131*CH3BR*OH - r132*CH3CCL3*OH - r134*CH3CL*OH - r136*CHBR3*OH + - r137*HCFC141B*OH - r138*HCFC142B*OH - r139*HCFC22*OH - r147*CH2O*OH - r152*CH3OH*OH + - r153*CH3OOH*OH - r154*CH4*OH - r158*CO*OH - r165*C2H5OH*OH - r166*C2H5OOH*OH - r168*C2H6*OH + - r170*CH3CHO*OH - r175*CH3COOH*OH - r176*CH3COOOH*OH - r181*GLYALD*OH - r182*GLYOXAL*OH + - r183*PAN*OH - r184*M*C2H4*OH - r192*C3H7OOH*OH - r193*C3H8*OH - r195*CH3COCHO*OH - r196*HYAC*OH + - r197*NOA*OH - r200*POOH*OH - r204*ROOH*OH - r205*M*C3H6*OH - r206*CH3COCH3*OH - r214*MACR*OH + - r215*MACROOH*OH - r222*M*MPAN*OH - r224*MVK*OH - r227*BIGALK*OH - r228*HYDRALD*OH + - r239*ISOP*OH - r240*ISOPOOH*OH - r242*ONITR*OH - r248*XOOH*OH - r251*TERP*OH - r253*DMS*OH + - r255*OCS*OH - r257*M*SO2*OH - r261*S*OH - r266*SO*OH - r267*DMS*OH - r269*NH3*OH + d(ONITR)/dt = .8*r212*MACRO2*NO + .794*r230*ISOPNO3*HO2 + .794*r231*ISOPNO3*NO + .794*r232*ISOPNO3*NO3 + + .08*r236*ISOPO2*NO + - j42*ONITR - r275*ONITR - r241*NO3*ONITR - r242*OH*ONITR + d(PAN)/dt = r185*M*CH3CO3*NO2 + - j43*PAN - r186*M*PAN - r183*OH*PAN + d(PO2)/dt = .5*r200*POOH*OH + r205*M*C3H6*OH + - r198*HO2*PO2 - r199*NO*PO2 + d(pom_a1)/dt = 0 + d(pom_a4)/dt = 0 + d(POOH)/dt = r198*PO2*HO2 + - j44*POOH - r200*OH*POOH + d(RO2)/dt = r204*ROOH*OH + r206*CH3COCH3*OH + - r201*CH3O2*RO2 - r202*HO2*RO2 - r203*NO*RO2 + d(ROOH)/dt = .85*r202*RO2*HO2 + - j45*ROOH - r204*OH*ROOH + d(S)/dt = j109*OCS + j110*SO + - r256*O2*S - r258*O3*S - r261*OH*S + d(SF6)/dt = - j81*SF6 + d(SO)/dt = j111*SO2 + r254*OCS*O + r256*S*O2 + r258*S*O3 + r261*S*OH + - j110*SO - r259*BRO*SO - r260*CLO*SO - r262*NO2*SO - r263*O2*SO - r264*O3*SO - r265*OCLO*SO + - r266*OH*SO + d(SO2)/dt = j112*SO3 + r252*DMS*NO3 + r253*DMS*OH + r255*OCS*OH + r259*SO*BRO + r260*SO*CLO + r262*SO*NO2 + + r263*SO*O2 + r264*SO*O3 + r265*SO*OCLO + r266*SO*OH + .5*r267*DMS*OH + - j111*SO2 - r257*M*OH*SO2 + d(SO3)/dt = j108*H2SO4 + r257*M*SO2*OH + - j112*SO3 - r268*H2O*SO3 + d(so4_a1)/dt = 0 + d(so4_a2)/dt = 0 + d(so4_a3)/dt = 0 + d(so4_a5)/dt = 0 + d(soa_a1)/dt = - j113*soa_a1 + d(soa_a2)/dt = - j114*soa_a2 + d(SOAE)/dt = - r276*SOAE + d(SOAG)/dt = r276*SOAE + d(TERP)/dt = - r249*NO3*TERP - r250*O3*TERP - r251*OH*TERP + d(XO2)/dt = r228*HYDRALD*OH + .8*r240*ISOPOOH*OH + .5*r248*XOOH*OH + - r243*CH3CO3*XO2 - r244*CH3O2*XO2 - r245*HO2*XO2 - r246*NO*XO2 - r247*NO3*XO2 + d(XOOH)/dt = r245*XO2*HO2 + - j46*XOOH - r248*OH*XOOH + d(NHDEP)/dt = r272*NH4 + r269*NH3*OH + d(NDEP)/dt = .5*r222*M*MPAN*OH + d(e)/dt = j84*N2 + j87*N2 + j88*N2 + j89*N2 + j90*N2 + j91*N2 + j15*NO + j83*N + j92*O + j93*O + j94*O + + j95*O + j96*O + j97*O + j98*O2 + j100*O2 + j101*O2 + j102*O2 + j103*O2 + j105*O2 + j106*O2 + + j107*O2 + - r297*NOp*e - r298*O2p*e - r299*N2p*e + d(HO2)/dt = j11*HO2NO2 + j20*C2H5OOH + j21*C3H7OOH + j24*CH3CHO + j26*CH3COCHO + 2*j33*GLYALD + + 2*j34*GLYOXAL + j35*HYAC + j36*ISOPOOH + 1.34*j37*MACR + .66*j38*MACR + j42*ONITR + j44*POOH + + r63*M*HO2NO2 + r179*EO + r22*H2O2*O + r26*M*H*O2 + r31*OH*H2O2 + r34*OH*O3 + r52*NO3*OH + + r65*CL*CH2O + r68*CL*H2O2 + r72*CLO*CH3O2 + r83*CLO*OH + r101*BR*CH2O + r113*BRO*OH + + r130*CH3BR*CL + r131*CH3BR*OH + r133*CH3CL*CL + r134*CH3CL*OH + r145*CH2O*NO3 + r146*CH2O*O + + 2*r148*CH3O2*CH3O2 + r151*CH3O2*NO + r152*CH3OH*OH + r156*O1D*CH4 + r158*CO*OH + + .13*r160*C2H4*O3 + 1.2*r161*C2H5O2*C2H5O2 + r162*C2H5O2*CH3O2 + r164*C2H5O2*NO + r165*C2H5OH*OH + + .9*r172*CH3CO3*CH3O2 + .25*r178*EO2*NO + r180*EO*O2 + r181*GLYALD*OH + r182*GLYOXAL*OH + + .28*r188*C3H6*O3 + r189*C3H7O2*CH3O2 + r191*C3H7O2*NO + r196*HYAC*OH + r199*PO2*NO + + .3*r201*RO2*CH3O2 + .47*r207*MACRO2*CH3CO3 + .73*r208*MACRO2*CH3O2 + .47*r210*MACRO2*NO3 + + .47*r211*MACRO2*NO + .14*r213*MACR*O3 + .2*r215*MACROOH*OH + r217*MCO3*CH3O2 + + .5*r222*M*MPAN*OH + .28*r223*MVK*O3 + .794*r231*ISOPNO3*NO + .794*r232*ISOPNO3*NO3 + + r233*ISOPO2*CH3CO3 + r234*ISOPO2*CH3O2 + .92*r236*ISOPO2*NO + r237*ISOPO2*NO3 + + .37*r238*ISOP*O3 + r241*ONITR*NO3 + r242*ONITR*OH + r243*XO2*CH3CO3 + .8*r244*XO2*CH3O2 + + r246*XO2*NO + r247*XO2*NO3 + r257*M*SO2*OH + .5*r267*DMS*OH + - r270*HO2 - r23*H*HO2 - r24*H*HO2 - r25*H*HO2 - r27*O*HO2 - r28*O3*HO2 - r32*OH*HO2 + - 2*r37*HO2*HO2 - r49*NO3*HO2 - r54*NO*HO2 - r59*M*NO2*HO2 - r69*CL*HO2 - r70*CL*HO2 + - r76*CLO*HO2 - r102*BR*HO2 - r108*BRO*HO2 - r150*CH3O2*HO2 - r163*C2H5O2*HO2 - r173*CH3CO3*HO2 + - r177*EO2*HO2 - r190*C3H7O2*HO2 - r198*PO2*HO2 - r202*RO2*HO2 - r209*MACRO2*HO2 - r218*MCO3*HO2 + - r230*ISOPNO3*HO2 - r235*ISOPO2*HO2 - r245*XO2*HO2 + d(N2D)/dt = 1.2*j85*N2 + 1.2*j86*N2 + j87*N2 + j91*N2 + .8*r297*NOp*e + .9*r299*N2p*e + r301*N2p*O + - r39*O*N2D - r40*O2*N2D - r311*Op*N2D + d(N2p)/dt = j84*N2 + j88*N2 + r314*N2*Op2D + r319*N2*Op2P + - r299*e*N2p - r300*O2*N2p - r301*O*N2p - r302*O*N2p + d(NOp)/dt = j15*NO + r307*N2*O2p + r310*N2*Op + r301*N2p*O + r305*Np*O2 + r306*O2p*N + r308*O2p*NO + - r297*e*NOp + d(Np)/dt = j87*N2 + j89*N2 + j90*N2 + j91*N2 + j83*N + r320*N2*Op2P + r311*Op*N2D + - r303*O*Np - r304*O2*Np - r305*O2*Np + d(O1D)/dt = j1*H2O + j5*O2 + j7*O3 + j12*N2O + r40*N2D*O2 + .85*r298*O2p*e + - r5*N2*O1D - r3*H2*O1D - r4*H2O*O1D - r6*O2*O1D - r7*O2*O1D - r8*O3*O1D - r9*O3*O1D + - r57*N2O*O1D - r58*N2O*O1D - r90*CCL4*O1D - r91*CF2CLBR*O1D - r92*CFC11*O1D - r93*CFC113*O1D + - r94*CFC114*O1D - r95*CFC115*O1D - r96*CFC12*O1D - r97*HCL*O1D - r98*HCL*O1D - r117*CF3BR*O1D + - r118*CHBR3*O1D - r119*H2402*O1D - r120*HBR*O1D - r121*HBR*O1D - r126*COF2*O1D - r127*COFCL*O1D + - r140*CH2BR2*O1D - r141*CH3BR*O1D - r142*HCFC141B*O1D - r143*HCFC142B*O1D - r144*HCFC22*O1D + - r155*CH4*O1D - r156*CH4*O1D - r157*CH4*O1D + d(O2_1D)/dt = j7*O3 + r14*N2*O2_1S + r13*O2_1S*CO2 + r15*O2_1S*O + r16*O2_1S*O2 + r17*O2_1S*O3 + - r1*O2_1D - r10*N2*O2_1D - r11*O*O2_1D - r12*O2*O2_1D + d(O2_1S)/dt = r6*O1D*O2 + - r2*O2_1S - r14*N2*O2_1S - r13*CO2*O2_1S - r15*O*O2_1S - r16*O2*O2_1S - r17*O3*O2_1S + d(O2p)/dt = j102*O2 + j107*O2 + r300*N2p*O2 + r304*Np*O2 + r309*Op*CO2 + r312*Op*O2 + r316*Op2D*O2 + - r307*N2*O2p - r298*e*O2p - r306*N*O2p - r308*NO*O2p + d(Op)/dt = j93*O + j97*O + j103*O2 + j106*O2 + r294*Op2P + r295*Op2D + r302*N2p*O + r303*Np*O + + r313*Op2D*e + r315*Op2D*O + r318*Op2P*e + r321*Op2P*O + - r310*N2*Op - r309*CO2*Op - r311*N2D*Op - r312*O2*Op + d(Op2D)/dt = j94*O + j95*O + j98*O2 + j100*O2 + r296*Op2P + r317*Op2P*e + - r295*Op2D - r314*N2*Op2D - r313*e*Op2D - r315*O*Op2D - r316*O2*Op2D + d(Op2P)/dt = j92*O + j96*O + j101*O2 + j105*O2 + - r294*Op2P - r296*Op2P - r319*N2*Op2P - r320*N2*Op2P - r317*e*Op2P - r318*e*Op2P + - r321*O*Op2P + d(H2O)/dt = .05*j29*CH4 + j108*H2SO4 + r270*HO2 + r25*H*HO2 + r30*OH*H2 + r31*OH*H2O2 + r32*OH*HO2 + + r35*OH*OH + r38*HO2NO2*OH + r62*HNO3*OH + r86*HCL*OH + r89*HOCL*OH + r115*HBR*OH + + r129*CH2BR2*OH + r131*CH3BR*OH + r132*CH3CCL3*OH + r134*CH3CL*OH + r139*HCFC22*OH + + r147*CH2O*OH + r153*CH3OOH*OH + r154*CH4*OH + r168*C2H6*OH + r170*CH3CHO*OH + r175*CH3COOH*OH + + r176*CH3COOOH*OH + r192*C3H7OOH*OH + r193*C3H8*OH + r195*CH3COCHO*OH + r200*POOH*OH + + r204*ROOH*OH + r206*CH3COCH3*OH + .5*r214*MACR*OH + r269*NH3*OH + r278*HOCL*HCL + + r284*HOCL*HCL + r285*HOBR*HCL + r289*HOCL*HCL + r290*HOBR*HCL + - j1*H2O - j2*H2O - j3*H2O - r4*O1D*H2O - r124*F*H2O - r268*SO3*H2O diff --git a/src/chemistry/pp_waccm_t4ma_mam5/chem_mods.F90 b/src/chemistry/pp_waccm_t4ma_mam5/chem_mods.F90 new file mode 100644 index 0000000000..7f02d339ce --- /dev/null +++ b/src/chemistry/pp_waccm_t4ma_mam5/chem_mods.F90 @@ -0,0 +1,51 @@ + module chem_mods +!-------------------------------------------------------------- +! ... Basic chemistry parameters and arrays +!-------------------------------------------------------------- + use shr_kind_mod, only : r8 => shr_kind_r8 + implicit none + save + integer, parameter :: phtcnt = 114, & ! number of photolysis reactions + rxntot = 435, & ! number of total reactions + gascnt = 321, & ! number of gas phase reactions + nabscol = 2, & ! number of absorbing column densities + gas_pcnst = 151, & ! number of "gas phase" species + nfs = 2, & ! number of "fixed" species + relcnt = 0, & ! number of relationship species + grpcnt = 0, & ! number of group members + nzcnt = 1584, & ! number of non-zero matrix entries + extcnt = 21, & ! number of species with external forcing + clscnt1 = 2, & ! number of species in explicit class + clscnt2 = 0, & ! number of species in hov class + clscnt3 = 0, & ! number of species in ebi class + clscnt4 = 149, & ! number of species in implicit class + clscnt5 = 0, & ! number of species in rodas class + indexm = 1, & ! index of total atm density in invariant array + indexh2o = 0, & ! index of water vapor density + clsze = 1, & ! loop length for implicit chemistry + rxt_tag_cnt = 435, & + enthalpy_cnt = 54, & + nslvd = 13 + integer :: clscnt(5) = 0 + integer :: cls_rxt_cnt(4,5) = 0 + integer :: clsmap(gas_pcnst,5) = 0 + integer :: permute(gas_pcnst,5) = 0 + integer :: diag_map(clscnt4) = 0 + real(r8) :: adv_mass(gas_pcnst) = 0._r8 + real(r8) :: crb_mass(gas_pcnst) = 0._r8 + real(r8) :: fix_mass(max(1,nfs)) + real(r8), allocatable :: cph_enthalpy(:) + integer, allocatable :: cph_rid(:) + integer, allocatable :: num_rnts(:) + integer, allocatable :: rxt_tag_map(:) + real(r8), allocatable :: pht_alias_mult(:,:) + character(len=32), allocatable :: rxt_tag_lst(:) + character(len=16), allocatable :: pht_alias_lst(:,:) + character(len=16) :: inv_lst(max(1,nfs)) + character(len=16) :: extfrc_lst(max(1,extcnt)) + logical :: frc_from_dataset(max(1,extcnt)) + logical :: is_vector + logical :: is_scalar + character(len=16) :: slvd_lst(max(1,nslvd)) + integer, parameter :: veclen = 32 + end module chem_mods diff --git a/src/chemistry/pp_waccm_t4ma_mam5/m_rxt_id.F90 b/src/chemistry/pp_waccm_t4ma_mam5/m_rxt_id.F90 new file mode 100644 index 0000000000..6f94e8e421 --- /dev/null +++ b/src/chemistry/pp_waccm_t4ma_mam5/m_rxt_id.F90 @@ -0,0 +1,438 @@ + module m_rxt_id + implicit none + integer, parameter :: rid_jh2o_b = 1 + integer, parameter :: rid_jh2o_a = 2 + integer, parameter :: rid_jh2o_c = 3 + integer, parameter :: rid_jh2o2 = 4 + integer, parameter :: rid_jo2_a = 5 + integer, parameter :: rid_jo2_b = 6 + integer, parameter :: rid_jo3_a = 7 + integer, parameter :: rid_jo3_b = 8 + integer, parameter :: rid_jhno3 = 9 + integer, parameter :: rid_jho2no2_a = 10 + integer, parameter :: rid_jho2no2_b = 11 + integer, parameter :: rid_jn2o = 12 + integer, parameter :: rid_jn2o5_a = 13 + integer, parameter :: rid_jn2o5_b = 14 + integer, parameter :: rid_jno_i = 15 + integer, parameter :: rid_jno = 16 + integer, parameter :: rid_jno2 = 17 + integer, parameter :: rid_jno3_a = 18 + integer, parameter :: rid_jno3_b = 19 + integer, parameter :: rid_jc2h5ooh = 20 + integer, parameter :: rid_jc3h7ooh = 21 + integer, parameter :: rid_jch2o_a = 22 + integer, parameter :: rid_jch2o_b = 23 + integer, parameter :: rid_jch3cho = 24 + integer, parameter :: rid_jacet = 25 + integer, parameter :: rid_jmgly = 26 + integer, parameter :: rid_jch3co3h = 27 + integer, parameter :: rid_jch3ooh = 28 + integer, parameter :: rid_jch4_b = 29 + integer, parameter :: rid_jch4_a = 30 + integer, parameter :: rid_jco2 = 31 + integer, parameter :: rid_jeooh = 32 + integer, parameter :: rid_jglyald = 33 + integer, parameter :: rid_jglyoxal = 34 + integer, parameter :: rid_jhyac = 35 + integer, parameter :: rid_jisopooh = 36 + integer, parameter :: rid_jmacr_a = 37 + integer, parameter :: rid_jmacr_b = 38 + integer, parameter :: rid_jmpan = 39 + integer, parameter :: rid_jmvk = 40 + integer, parameter :: rid_jnoa = 41 + integer, parameter :: rid_jonitr = 42 + integer, parameter :: rid_jpan = 43 + integer, parameter :: rid_jpooh = 44 + integer, parameter :: rid_jrooh = 45 + integer, parameter :: rid_jxooh = 46 + integer, parameter :: rid_jbrcl = 47 + integer, parameter :: rid_jbro = 48 + integer, parameter :: rid_jbrono2_b = 49 + integer, parameter :: rid_jbrono2_a = 50 + integer, parameter :: rid_jccl4 = 51 + integer, parameter :: rid_jcf2clbr = 52 + integer, parameter :: rid_jcf3br = 53 + integer, parameter :: rid_jcfcl3 = 54 + integer, parameter :: rid_jcfc113 = 55 + integer, parameter :: rid_jcfc114 = 56 + integer, parameter :: rid_jcfc115 = 57 + integer, parameter :: rid_jcf2cl2 = 58 + integer, parameter :: rid_jch2br2 = 59 + integer, parameter :: rid_jch3br = 60 + integer, parameter :: rid_jch3ccl3 = 61 + integer, parameter :: rid_jch3cl = 62 + integer, parameter :: rid_jchbr3 = 63 + integer, parameter :: rid_jcl2 = 64 + integer, parameter :: rid_jcl2o2 = 65 + integer, parameter :: rid_jclo = 66 + integer, parameter :: rid_jclono2_a = 67 + integer, parameter :: rid_jclono2_b = 68 + integer, parameter :: rid_jcof2 = 69 + integer, parameter :: rid_jcofcl = 70 + integer, parameter :: rid_jh2402 = 71 + integer, parameter :: rid_jhbr = 72 + integer, parameter :: rid_jhcfc141b = 73 + integer, parameter :: rid_jhcfc142b = 74 + integer, parameter :: rid_jhcfc22 = 75 + integer, parameter :: rid_jhcl = 76 + integer, parameter :: rid_jhf = 77 + integer, parameter :: rid_jhobr = 78 + integer, parameter :: rid_jhocl = 79 + integer, parameter :: rid_joclo = 80 + integer, parameter :: rid_jsf6 = 81 + integer, parameter :: rid_jeuv_26 = 82 + integer, parameter :: rid_jeuv_4 = 83 + integer, parameter :: rid_jeuv_18 = 84 + integer, parameter :: rid_jeuv_25 = 85 + integer, parameter :: rid_jeuv_13 = 86 + integer, parameter :: rid_jeuv_11 = 87 + integer, parameter :: rid_jeuv_6 = 88 + integer, parameter :: rid_jeuv_10 = 89 + integer, parameter :: rid_jeuv_22 = 90 + integer, parameter :: rid_jeuv_23 = 91 + integer, parameter :: rid_jeuv_16 = 92 + integer, parameter :: rid_jeuv_14 = 93 + integer, parameter :: rid_jeuv_2 = 94 + integer, parameter :: rid_jeuv_15 = 95 + integer, parameter :: rid_jeuv_3 = 96 + integer, parameter :: rid_jeuv_1 = 97 + integer, parameter :: rid_jeuv_20 = 98 + integer, parameter :: rid_jeuv_24 = 99 + integer, parameter :: rid_jeuv_8 = 100 + integer, parameter :: rid_jeuv_21 = 101 + integer, parameter :: rid_jeuv_5 = 102 + integer, parameter :: rid_jeuv_19 = 103 + integer, parameter :: rid_jeuv_12 = 104 + integer, parameter :: rid_jeuv_9 = 105 + integer, parameter :: rid_jeuv_7 = 106 + integer, parameter :: rid_jeuv_17 = 107 + integer, parameter :: rid_jh2so4 = 108 + integer, parameter :: rid_jocs = 109 + integer, parameter :: rid_jso = 110 + integer, parameter :: rid_jso2 = 111 + integer, parameter :: rid_jso3 = 112 + integer, parameter :: rid_jsoa_a1 = 113 + integer, parameter :: rid_jsoa_a2 = 114 + integer, parameter :: rid_ag1 = 115 + integer, parameter :: rid_ag2 = 116 + integer, parameter :: rid_O1D_H2 = 117 + integer, parameter :: rid_O1D_H2O = 118 + integer, parameter :: rid_O1D_N2 = 119 + integer, parameter :: rid_O1D_O2 = 120 + integer, parameter :: rid_O1D_O2b = 121 + integer, parameter :: rid_O1D_O3 = 122 + integer, parameter :: rid_O1D_O3a = 123 + integer, parameter :: rid_O2_1D_N2 = 124 + integer, parameter :: rid_O2_1D_O = 125 + integer, parameter :: rid_O2_1D_O2 = 126 + integer, parameter :: rid_O2_1S_CO2 = 127 + integer, parameter :: rid_O2_1S_N2 = 128 + integer, parameter :: rid_O2_1S_O = 129 + integer, parameter :: rid_O2_1S_O2 = 130 + integer, parameter :: rid_O2_1S_O3 = 131 + integer, parameter :: rid_O_O3 = 132 + integer, parameter :: rid_usr_O_O = 133 + integer, parameter :: rid_usr_O_O2 = 134 + integer, parameter :: rid_H2_O = 135 + integer, parameter :: rid_H2O2_O = 136 + integer, parameter :: rid_H_HO2 = 137 + integer, parameter :: rid_H_HO2a = 138 + integer, parameter :: rid_H_HO2b = 139 + integer, parameter :: rid_H_O2 = 140 + integer, parameter :: rid_HO2_O = 141 + integer, parameter :: rid_HO2_O3 = 142 + integer, parameter :: rid_H_O3 = 143 + integer, parameter :: rid_OH_H2 = 144 + integer, parameter :: rid_OH_H2O2 = 145 + integer, parameter :: rid_OH_HO2 = 146 + integer, parameter :: rid_OH_O = 147 + integer, parameter :: rid_OH_O3 = 148 + integer, parameter :: rid_OH_OH = 149 + integer, parameter :: rid_OH_OH_M = 150 + integer, parameter :: rid_usr_HO2_HO2 = 151 + integer, parameter :: rid_HO2NO2_OH = 152 + integer, parameter :: rid_N2D_O = 153 + integer, parameter :: rid_N2D_O2 = 154 + integer, parameter :: rid_N_NO = 155 + integer, parameter :: rid_N_NO2a = 156 + integer, parameter :: rid_N_NO2b = 157 + integer, parameter :: rid_N_NO2c = 158 + integer, parameter :: rid_N_O2 = 159 + integer, parameter :: rid_NO2_O = 160 + integer, parameter :: rid_NO2_O3 = 161 + integer, parameter :: rid_NO2_O_M = 162 + integer, parameter :: rid_NO3_HO2 = 163 + integer, parameter :: rid_NO3_NO = 164 + integer, parameter :: rid_NO3_O = 165 + integer, parameter :: rid_NO3_OH = 166 + integer, parameter :: rid_N_OH = 167 + integer, parameter :: rid_NO_HO2 = 168 + integer, parameter :: rid_NO_O3 = 169 + integer, parameter :: rid_NO_O_M = 170 + integer, parameter :: rid_O1D_N2Oa = 171 + integer, parameter :: rid_O1D_N2Ob = 172 + integer, parameter :: rid_tag_NO2_HO2 = 173 + integer, parameter :: rid_tag_NO2_NO3 = 174 + integer, parameter :: rid_tag_NO2_OH = 175 + integer, parameter :: rid_usr_HNO3_OH = 176 + integer, parameter :: rid_usr_HO2NO2_M = 177 + integer, parameter :: rid_usr_N2O5_M = 178 + integer, parameter :: rid_CL_CH2O = 179 + integer, parameter :: rid_CL_CH4 = 180 + integer, parameter :: rid_CL_H2 = 181 + integer, parameter :: rid_CL_H2O2 = 182 + integer, parameter :: rid_CL_HO2a = 183 + integer, parameter :: rid_CL_HO2b = 184 + integer, parameter :: rid_CL_O3 = 185 + integer, parameter :: rid_CLO_CH3O2 = 186 + integer, parameter :: rid_CLO_CLOa = 187 + integer, parameter :: rid_CLO_CLOb = 188 + integer, parameter :: rid_CLO_CLOc = 189 + integer, parameter :: rid_CLO_HO2 = 190 + integer, parameter :: rid_CLO_NO = 191 + integer, parameter :: rid_CLONO2_CL = 192 + integer, parameter :: rid_CLO_NO2_M = 193 + integer, parameter :: rid_CLONO2_O = 194 + integer, parameter :: rid_CLONO2_OH = 195 + integer, parameter :: rid_CLO_O = 196 + integer, parameter :: rid_CLO_OHa = 197 + integer, parameter :: rid_CLO_OHb = 198 + integer, parameter :: rid_HCL_O = 199 + integer, parameter :: rid_HCL_OH = 200 + integer, parameter :: rid_HOCL_CL = 201 + integer, parameter :: rid_HOCL_O = 202 + integer, parameter :: rid_HOCL_OH = 203 + integer, parameter :: rid_O1D_CCL4 = 204 + integer, parameter :: rid_O1D_CF2CLBR = 205 + integer, parameter :: rid_O1D_CFC11 = 206 + integer, parameter :: rid_O1D_CFC113 = 207 + integer, parameter :: rid_O1D_CFC114 = 208 + integer, parameter :: rid_O1D_CFC115 = 209 + integer, parameter :: rid_O1D_CFC12 = 210 + integer, parameter :: rid_O1D_HCLa = 211 + integer, parameter :: rid_O1D_HCLb = 212 + integer, parameter :: rid_tag_CLO_CLO_M = 213 + integer, parameter :: rid_usr_CL2O2_M = 214 + integer, parameter :: rid_BR_CH2O = 215 + integer, parameter :: rid_BR_HO2 = 216 + integer, parameter :: rid_BR_O3 = 217 + integer, parameter :: rid_BRO_BRO = 218 + integer, parameter :: rid_BRO_CLOa = 219 + integer, parameter :: rid_BRO_CLOb = 220 + integer, parameter :: rid_BRO_CLOc = 221 + integer, parameter :: rid_BRO_HO2 = 222 + integer, parameter :: rid_BRO_NO = 223 + integer, parameter :: rid_BRO_NO2_M = 224 + integer, parameter :: rid_BRONO2_O = 225 + integer, parameter :: rid_BRO_O = 226 + integer, parameter :: rid_BRO_OH = 227 + integer, parameter :: rid_HBR_O = 228 + integer, parameter :: rid_HBR_OH = 229 + integer, parameter :: rid_HOBR_O = 230 + integer, parameter :: rid_O1D_CF3BR = 231 + integer, parameter :: rid_O1D_CHBR3 = 232 + integer, parameter :: rid_O1D_H2402 = 233 + integer, parameter :: rid_O1D_HBRa = 234 + integer, parameter :: rid_O1D_HBRb = 235 + integer, parameter :: rid_F_CH4 = 236 + integer, parameter :: rid_F_H2 = 237 + integer, parameter :: rid_F_H2O = 238 + integer, parameter :: rid_F_HNO3 = 239 + integer, parameter :: rid_O1D_COF2 = 240 + integer, parameter :: rid_O1D_COFCL = 241 + integer, parameter :: rid_CH2BR2_CL = 242 + integer, parameter :: rid_CH2BR2_OH = 243 + integer, parameter :: rid_CH3BR_CL = 244 + integer, parameter :: rid_CH3BR_OH = 245 + integer, parameter :: rid_CH3CCL3_OH = 246 + integer, parameter :: rid_CH3CL_CL = 247 + integer, parameter :: rid_CH3CL_OH = 248 + integer, parameter :: rid_CHBR3_CL = 249 + integer, parameter :: rid_CHBR3_OH = 250 + integer, parameter :: rid_HCFC141B_OH = 251 + integer, parameter :: rid_HCFC142B_OH = 252 + integer, parameter :: rid_HCFC22_OH = 253 + integer, parameter :: rid_O1D_CH2BR2 = 254 + integer, parameter :: rid_O1D_CH3BR = 255 + integer, parameter :: rid_O1D_HCFC141B = 256 + integer, parameter :: rid_O1D_HCFC142B = 257 + integer, parameter :: rid_O1D_HCFC22 = 258 + integer, parameter :: rid_CH2O_NO3 = 259 + integer, parameter :: rid_CH2O_O = 260 + integer, parameter :: rid_CH2O_OH = 261 + integer, parameter :: rid_CH3O2_CH3O2a = 262 + integer, parameter :: rid_CH3O2_CH3O2b = 263 + integer, parameter :: rid_CH3O2_HO2 = 264 + integer, parameter :: rid_CH3O2_NO = 265 + integer, parameter :: rid_CH3OH_OH = 266 + integer, parameter :: rid_CH3OOH_OH = 267 + integer, parameter :: rid_CH4_OH = 268 + integer, parameter :: rid_O1D_CH4a = 269 + integer, parameter :: rid_O1D_CH4b = 270 + integer, parameter :: rid_O1D_CH4c = 271 + integer, parameter :: rid_usr_CO_OH = 272 + integer, parameter :: rid_C2H4_CL_M = 273 + integer, parameter :: rid_C2H4_O3 = 274 + integer, parameter :: rid_C2H5O2_C2H5O2 = 275 + integer, parameter :: rid_C2H5O2_CH3O2 = 276 + integer, parameter :: rid_C2H5O2_HO2 = 277 + integer, parameter :: rid_C2H5O2_NO = 278 + integer, parameter :: rid_C2H5OH_OH = 279 + integer, parameter :: rid_C2H5OOH_OH = 280 + integer, parameter :: rid_C2H6_CL = 281 + integer, parameter :: rid_C2H6_OH = 282 + integer, parameter :: rid_CH3CHO_NO3 = 283 + integer, parameter :: rid_CH3CHO_OH = 284 + integer, parameter :: rid_CH3CO3_CH3CO3 = 285 + integer, parameter :: rid_CH3CO3_CH3O2 = 286 + integer, parameter :: rid_CH3CO3_HO2 = 287 + integer, parameter :: rid_CH3CO3_NO = 288 + integer, parameter :: rid_CH3COOH_OH = 289 + integer, parameter :: rid_CH3COOOH_OH = 290 + integer, parameter :: rid_EO2_HO2 = 291 + integer, parameter :: rid_EO2_NO = 292 + integer, parameter :: rid_EO_M = 293 + integer, parameter :: rid_EO_O2 = 294 + integer, parameter :: rid_GLYALD_OH = 295 + integer, parameter :: rid_GLYOXAL_OH = 296 + integer, parameter :: rid_PAN_OH = 297 + integer, parameter :: rid_tag_C2H4_OH = 298 + integer, parameter :: rid_tag_CH3CO3_NO2 = 299 + integer, parameter :: rid_usr_PAN_M = 300 + integer, parameter :: rid_C3H6_NO3 = 301 + integer, parameter :: rid_C3H6_O3 = 302 + integer, parameter :: rid_C3H7O2_CH3O2 = 303 + integer, parameter :: rid_C3H7O2_HO2 = 304 + integer, parameter :: rid_C3H7O2_NO = 305 + integer, parameter :: rid_C3H7OOH_OH = 306 + integer, parameter :: rid_C3H8_OH = 307 + integer, parameter :: rid_CH3COCHO_NO3 = 308 + integer, parameter :: rid_CH3COCHO_OH = 309 + integer, parameter :: rid_HYAC_OH = 310 + integer, parameter :: rid_NOA_OH = 311 + integer, parameter :: rid_PO2_HO2 = 312 + integer, parameter :: rid_PO2_NO = 313 + integer, parameter :: rid_POOH_OH = 314 + integer, parameter :: rid_RO2_CH3O2 = 315 + integer, parameter :: rid_RO2_HO2 = 316 + integer, parameter :: rid_RO2_NO = 317 + integer, parameter :: rid_ROOH_OH = 318 + integer, parameter :: rid_tag_C3H6_OH = 319 + integer, parameter :: rid_usr_CH3COCH3_OH = 320 + integer, parameter :: rid_MACRO2_CH3CO3 = 321 + integer, parameter :: rid_MACRO2_CH3O2 = 322 + integer, parameter :: rid_MACRO2_HO2 = 323 + integer, parameter :: rid_MACRO2_NO3 = 324 + integer, parameter :: rid_MACRO2_NOa = 325 + integer, parameter :: rid_MACRO2_NOb = 326 + integer, parameter :: rid_MACR_O3 = 327 + integer, parameter :: rid_MACR_OH = 328 + integer, parameter :: rid_MACROOH_OH = 329 + integer, parameter :: rid_MCO3_CH3CO3 = 330 + integer, parameter :: rid_MCO3_CH3O2 = 331 + integer, parameter :: rid_MCO3_HO2 = 332 + integer, parameter :: rid_MCO3_MCO3 = 333 + integer, parameter :: rid_MCO3_NO = 334 + integer, parameter :: rid_MCO3_NO3 = 335 + integer, parameter :: rid_MPAN_OH_M = 336 + integer, parameter :: rid_MVK_O3 = 337 + integer, parameter :: rid_MVK_OH = 338 + integer, parameter :: rid_tag_MCO3_NO2 = 339 + integer, parameter :: rid_usr_MPAN_M = 340 + integer, parameter :: rid_BIGALK_OH = 341 + integer, parameter :: rid_HYDRALD_OH = 342 + integer, parameter :: rid_ISOP_NO3 = 343 + integer, parameter :: rid_ISOPNO3_HO2 = 344 + integer, parameter :: rid_ISOPNO3_NO = 345 + integer, parameter :: rid_ISOPNO3_NO3 = 346 + integer, parameter :: rid_ISOPO2_CH3CO3 = 347 + integer, parameter :: rid_ISOPO2_CH3O2 = 348 + integer, parameter :: rid_ISOPO2_HO2 = 349 + integer, parameter :: rid_ISOPO2_NO = 350 + integer, parameter :: rid_ISOPO2_NO3 = 351 + integer, parameter :: rid_ISOP_O3 = 352 + integer, parameter :: rid_ISOP_OH = 353 + integer, parameter :: rid_ISOPOOH_OH = 354 + integer, parameter :: rid_ONITR_NO3 = 355 + integer, parameter :: rid_ONITR_OH = 356 + integer, parameter :: rid_XO2_CH3CO3 = 357 + integer, parameter :: rid_XO2_CH3O2 = 358 + integer, parameter :: rid_XO2_HO2 = 359 + integer, parameter :: rid_XO2_NO = 360 + integer, parameter :: rid_XO2_NO3 = 361 + integer, parameter :: rid_XOOH_OH = 362 + integer, parameter :: rid_TERP_NO3 = 363 + integer, parameter :: rid_TERP_O3 = 364 + integer, parameter :: rid_TERP_OH = 365 + integer, parameter :: rid_DMS_NO3 = 366 + integer, parameter :: rid_DMS_OHa = 367 + integer, parameter :: rid_OCS_O = 368 + integer, parameter :: rid_OCS_OH = 369 + integer, parameter :: rid_S_O2 = 370 + integer, parameter :: rid_SO2_OH_M = 371 + integer, parameter :: rid_S_O3 = 372 + integer, parameter :: rid_SO_BRO = 373 + integer, parameter :: rid_SO_CLO = 374 + integer, parameter :: rid_S_OH = 375 + integer, parameter :: rid_SO_NO2 = 376 + integer, parameter :: rid_SO_O2 = 377 + integer, parameter :: rid_SO_O3 = 378 + integer, parameter :: rid_SO_OCLO = 379 + integer, parameter :: rid_SO_OH = 380 + integer, parameter :: rid_usr_DMS_OH = 381 + integer, parameter :: rid_usr_SO3_H2O = 382 + integer, parameter :: rid_NH3_OH = 383 + integer, parameter :: rid_usr_HO2_aer = 384 + integer, parameter :: rid_usr_N2O5_aer = 385 + integer, parameter :: rid_usr_NH4_strat_tau = 386 + integer, parameter :: rid_usr_NO2_aer = 387 + integer, parameter :: rid_usr_NO3_aer = 388 + integer, parameter :: rid_usr_ONITR_aer = 389 + integer, parameter :: rid_SOAE_tau = 390 + integer, parameter :: rid_het1 = 391 + integer, parameter :: rid_het10 = 392 + integer, parameter :: rid_het11 = 393 + integer, parameter :: rid_het12 = 394 + integer, parameter :: rid_het13 = 395 + integer, parameter :: rid_het14 = 396 + integer, parameter :: rid_het15 = 397 + integer, parameter :: rid_het16 = 398 + integer, parameter :: rid_het17 = 399 + integer, parameter :: rid_het2 = 400 + integer, parameter :: rid_het3 = 401 + integer, parameter :: rid_het4 = 402 + integer, parameter :: rid_het5 = 403 + integer, parameter :: rid_het6 = 404 + integer, parameter :: rid_het7 = 405 + integer, parameter :: rid_het8 = 406 + integer, parameter :: rid_het9 = 407 + integer, parameter :: rid_ag247nm = 408 + integer, parameter :: rid_ag373nm = 409 + integer, parameter :: rid_ag732nm = 410 + integer, parameter :: rid_elec1 = 411 + integer, parameter :: rid_elec2 = 412 + integer, parameter :: rid_elec3 = 413 + integer, parameter :: rid_ion_N2p_O2 = 414 + integer, parameter :: rid_ion_N2p_Oa = 415 + integer, parameter :: rid_ion_N2p_Ob = 416 + integer, parameter :: rid_ion_Np_O = 417 + integer, parameter :: rid_ion_Np_O2a = 418 + integer, parameter :: rid_ion_Np_O2b = 419 + integer, parameter :: rid_ion_O2p_N = 420 + integer, parameter :: rid_ion_O2p_N2 = 421 + integer, parameter :: rid_ion_O2p_NO = 422 + integer, parameter :: rid_ion_Op_CO2 = 423 + integer, parameter :: rid_ion_Op_N2 = 424 + integer, parameter :: rid_ion_Op_N2D = 425 + integer, parameter :: rid_ion_Op_O2 = 426 + integer, parameter :: rid_Op2D_e = 427 + integer, parameter :: rid_Op2D_N2 = 428 + integer, parameter :: rid_Op2D_O = 429 + integer, parameter :: rid_Op2D_O2 = 430 + integer, parameter :: rid_Op2P_ea = 431 + integer, parameter :: rid_Op2P_eb = 432 + integer, parameter :: rid_Op2P_N2a = 433 + integer, parameter :: rid_Op2P_N2b = 434 + integer, parameter :: rid_Op2P_O = 435 + end module m_rxt_id diff --git a/src/chemistry/pp_waccm_t4ma_mam5/m_spc_id.F90 b/src/chemistry/pp_waccm_t4ma_mam5/m_spc_id.F90 new file mode 100644 index 0000000000..a491e7393d --- /dev/null +++ b/src/chemistry/pp_waccm_t4ma_mam5/m_spc_id.F90 @@ -0,0 +1,154 @@ + module m_spc_id + implicit none + integer, parameter :: id_bc_a1 = 1 + integer, parameter :: id_bc_a4 = 2 + integer, parameter :: id_BIGALK = 3 + integer, parameter :: id_BR = 4 + integer, parameter :: id_BRCL = 5 + integer, parameter :: id_BRO = 6 + integer, parameter :: id_BRONO2 = 7 + integer, parameter :: id_BRY = 8 + integer, parameter :: id_C2H4 = 9 + integer, parameter :: id_C2H5O2 = 10 + integer, parameter :: id_C2H5OH = 11 + integer, parameter :: id_C2H5OOH = 12 + integer, parameter :: id_C2H6 = 13 + integer, parameter :: id_C3H6 = 14 + integer, parameter :: id_C3H7O2 = 15 + integer, parameter :: id_C3H7OOH = 16 + integer, parameter :: id_C3H8 = 17 + integer, parameter :: id_CCL4 = 18 + integer, parameter :: id_CF2CLBR = 19 + integer, parameter :: id_CF3BR = 20 + integer, parameter :: id_CFC11 = 21 + integer, parameter :: id_CFC113 = 22 + integer, parameter :: id_CFC114 = 23 + integer, parameter :: id_CFC115 = 24 + integer, parameter :: id_CFC12 = 25 + integer, parameter :: id_CH2BR2 = 26 + integer, parameter :: id_CH2O = 27 + integer, parameter :: id_CH3BR = 28 + integer, parameter :: id_CH3CCL3 = 29 + integer, parameter :: id_CH3CHO = 30 + integer, parameter :: id_CH3CL = 31 + integer, parameter :: id_CH3CO3 = 32 + integer, parameter :: id_CH3COCH3 = 33 + integer, parameter :: id_CH3COCHO = 34 + integer, parameter :: id_CH3COOH = 35 + integer, parameter :: id_CH3COOOH = 36 + integer, parameter :: id_CH3O2 = 37 + integer, parameter :: id_CH3OH = 38 + integer, parameter :: id_CH3OOH = 39 + integer, parameter :: id_CH4 = 40 + integer, parameter :: id_CHBR3 = 41 + integer, parameter :: id_CL = 42 + integer, parameter :: id_CL2 = 43 + integer, parameter :: id_CL2O2 = 44 + integer, parameter :: id_CLO = 45 + integer, parameter :: id_CLONO2 = 46 + integer, parameter :: id_CLY = 47 + integer, parameter :: id_CO = 48 + integer, parameter :: id_CO2 = 49 + integer, parameter :: id_COF2 = 50 + integer, parameter :: id_COFCL = 51 + integer, parameter :: id_DMS = 52 + integer, parameter :: id_dst_a1 = 53 + integer, parameter :: id_dst_a2 = 54 + integer, parameter :: id_dst_a3 = 55 + integer, parameter :: id_EO = 56 + integer, parameter :: id_EO2 = 57 + integer, parameter :: id_EOOH = 58 + integer, parameter :: id_F = 59 + integer, parameter :: id_GLYALD = 60 + integer, parameter :: id_GLYOXAL = 61 + integer, parameter :: id_H = 62 + integer, parameter :: id_H2 = 63 + integer, parameter :: id_H2402 = 64 + integer, parameter :: id_H2O2 = 65 + integer, parameter :: id_H2SO4 = 66 + integer, parameter :: id_HBR = 67 + integer, parameter :: id_HCFC141B = 68 + integer, parameter :: id_HCFC142B = 69 + integer, parameter :: id_HCFC22 = 70 + integer, parameter :: id_HCL = 71 + integer, parameter :: id_HF = 72 + integer, parameter :: id_HNO3 = 73 + integer, parameter :: id_HO2NO2 = 74 + integer, parameter :: id_HOBR = 75 + integer, parameter :: id_HOCL = 76 + integer, parameter :: id_HYAC = 77 + integer, parameter :: id_HYDRALD = 78 + integer, parameter :: id_ISOP = 79 + integer, parameter :: id_ISOPNO3 = 80 + integer, parameter :: id_ISOPO2 = 81 + integer, parameter :: id_ISOPOOH = 82 + integer, parameter :: id_MACR = 83 + integer, parameter :: id_MACRO2 = 84 + integer, parameter :: id_MACROOH = 85 + integer, parameter :: id_MCO3 = 86 + integer, parameter :: id_MPAN = 87 + integer, parameter :: id_MVK = 88 + integer, parameter :: id_N = 89 + integer, parameter :: id_N2O = 90 + integer, parameter :: id_N2O5 = 91 + integer, parameter :: id_ncl_a1 = 92 + integer, parameter :: id_ncl_a2 = 93 + integer, parameter :: id_ncl_a3 = 94 + integer, parameter :: id_NH3 = 95 + integer, parameter :: id_NH4 = 96 + integer, parameter :: id_NO = 97 + integer, parameter :: id_NO2 = 98 + integer, parameter :: id_NO3 = 99 + integer, parameter :: id_NOA = 100 + integer, parameter :: id_num_a1 = 101 + integer, parameter :: id_num_a2 = 102 + integer, parameter :: id_num_a3 = 103 + integer, parameter :: id_num_a4 = 104 + integer, parameter :: id_num_a5 = 105 + integer, parameter :: id_O = 106 + integer, parameter :: id_O2 = 107 + integer, parameter :: id_O3 = 108 + integer, parameter :: id_OCLO = 109 + integer, parameter :: id_OCS = 110 + integer, parameter :: id_OH = 111 + integer, parameter :: id_ONITR = 112 + integer, parameter :: id_PAN = 113 + integer, parameter :: id_PO2 = 114 + integer, parameter :: id_pom_a1 = 115 + integer, parameter :: id_pom_a4 = 116 + integer, parameter :: id_POOH = 117 + integer, parameter :: id_RO2 = 118 + integer, parameter :: id_ROOH = 119 + integer, parameter :: id_S = 120 + integer, parameter :: id_SF6 = 121 + integer, parameter :: id_SO = 122 + integer, parameter :: id_SO2 = 123 + integer, parameter :: id_SO3 = 124 + integer, parameter :: id_so4_a1 = 125 + integer, parameter :: id_so4_a2 = 126 + integer, parameter :: id_so4_a3 = 127 + integer, parameter :: id_so4_a5 = 128 + integer, parameter :: id_soa_a1 = 129 + integer, parameter :: id_soa_a2 = 130 + integer, parameter :: id_SOAE = 131 + integer, parameter :: id_SOAG = 132 + integer, parameter :: id_TERP = 133 + integer, parameter :: id_XO2 = 134 + integer, parameter :: id_XOOH = 135 + integer, parameter :: id_NHDEP = 136 + integer, parameter :: id_NDEP = 137 + integer, parameter :: id_e = 138 + integer, parameter :: id_HO2 = 139 + integer, parameter :: id_N2D = 140 + integer, parameter :: id_N2p = 141 + integer, parameter :: id_NOp = 142 + integer, parameter :: id_Np = 143 + integer, parameter :: id_O1D = 144 + integer, parameter :: id_O2_1D = 145 + integer, parameter :: id_O2_1S = 146 + integer, parameter :: id_O2p = 147 + integer, parameter :: id_Op = 148 + integer, parameter :: id_Op2D = 149 + integer, parameter :: id_Op2P = 150 + integer, parameter :: id_H2O = 151 + end module m_spc_id diff --git a/src/chemistry/pp_waccm_t4ma_mam5/mo_adjrxt.F90 b/src/chemistry/pp_waccm_t4ma_mam5/mo_adjrxt.F90 new file mode 100644 index 0000000000..0c49922d05 --- /dev/null +++ b/src/chemistry/pp_waccm_t4ma_mam5/mo_adjrxt.F90 @@ -0,0 +1,335 @@ + module mo_adjrxt + private + public :: adjrxt + contains + subroutine adjrxt( rate, inv, m, ncol, nlev ) + use shr_kind_mod, only : r8 => shr_kind_r8 + use chem_mods, only : nfs, rxntot + implicit none +!-------------------------------------------------------------------- +! ... dummy arguments +!-------------------------------------------------------------------- + integer, intent(in) :: ncol, nlev + real(r8), intent(in) :: inv(ncol,nlev,nfs) + real(r8), intent(in) :: m(ncol,nlev) + real(r8), intent(inout) :: rate(ncol,nlev,rxntot) + rate(:,:, 119) = rate(:,:, 119) * inv(:,:, 2) + rate(:,:, 124) = rate(:,:, 124) * inv(:,:, 2) + rate(:,:, 128) = rate(:,:, 128) * inv(:,:, 2) + rate(:,:, 133) = rate(:,:, 133) * inv(:,:, 1) + rate(:,:, 134) = rate(:,:, 134) * inv(:,:, 1) + rate(:,:, 140) = rate(:,:, 140) * inv(:,:, 1) + rate(:,:, 150) = rate(:,:, 150) * inv(:,:, 1) + rate(:,:, 162) = rate(:,:, 162) * inv(:,:, 1) + rate(:,:, 170) = rate(:,:, 170) * inv(:,:, 1) + rate(:,:, 173) = rate(:,:, 173) * inv(:,:, 1) + rate(:,:, 174) = rate(:,:, 174) * inv(:,:, 1) + rate(:,:, 175) = rate(:,:, 175) * inv(:,:, 1) + rate(:,:, 177) = rate(:,:, 177) * inv(:,:, 1) + rate(:,:, 178) = rate(:,:, 178) * inv(:,:, 1) + rate(:,:, 193) = rate(:,:, 193) * inv(:,:, 1) + rate(:,:, 213) = rate(:,:, 213) * inv(:,:, 1) + rate(:,:, 214) = rate(:,:, 214) * inv(:,:, 1) + rate(:,:, 224) = rate(:,:, 224) * inv(:,:, 1) + rate(:,:, 273) = rate(:,:, 273) * inv(:,:, 1) + rate(:,:, 298) = rate(:,:, 298) * inv(:,:, 1) + rate(:,:, 299) = rate(:,:, 299) * inv(:,:, 1) + rate(:,:, 300) = rate(:,:, 300) * inv(:,:, 1) + rate(:,:, 319) = rate(:,:, 319) * inv(:,:, 1) + rate(:,:, 336) = rate(:,:, 336) * inv(:,:, 1) + rate(:,:, 339) = rate(:,:, 339) * inv(:,:, 1) + rate(:,:, 340) = rate(:,:, 340) * inv(:,:, 1) + rate(:,:, 371) = rate(:,:, 371) * inv(:,:, 1) + rate(:,:, 421) = rate(:,:, 421) * inv(:,:, 2) + rate(:,:, 424) = rate(:,:, 424) * inv(:,:, 2) + rate(:,:, 428) = rate(:,:, 428) * inv(:,:, 2) + rate(:,:, 433) = rate(:,:, 433) * inv(:,:, 2) + rate(:,:, 434) = rate(:,:, 434) * inv(:,:, 2) + rate(:,:, 117) = rate(:,:, 117) * m(:,:) + rate(:,:, 118) = rate(:,:, 118) * m(:,:) + rate(:,:, 120) = rate(:,:, 120) * m(:,:) + rate(:,:, 121) = rate(:,:, 121) * m(:,:) + rate(:,:, 122) = rate(:,:, 122) * m(:,:) + rate(:,:, 123) = rate(:,:, 123) * m(:,:) + rate(:,:, 125) = rate(:,:, 125) * m(:,:) + rate(:,:, 126) = rate(:,:, 126) * m(:,:) + rate(:,:, 127) = rate(:,:, 127) * m(:,:) + rate(:,:, 129) = rate(:,:, 129) * m(:,:) + rate(:,:, 130) = rate(:,:, 130) * m(:,:) + rate(:,:, 131) = rate(:,:, 131) * m(:,:) + rate(:,:, 132) = rate(:,:, 132) * m(:,:) + rate(:,:, 133) = rate(:,:, 133) * m(:,:) + rate(:,:, 134) = rate(:,:, 134) * m(:,:) + rate(:,:, 135) = rate(:,:, 135) * m(:,:) + rate(:,:, 136) = rate(:,:, 136) * m(:,:) + rate(:,:, 137) = rate(:,:, 137) * m(:,:) + rate(:,:, 138) = rate(:,:, 138) * m(:,:) + rate(:,:, 139) = rate(:,:, 139) * m(:,:) + rate(:,:, 140) = rate(:,:, 140) * m(:,:) + rate(:,:, 141) = rate(:,:, 141) * m(:,:) + rate(:,:, 142) = rate(:,:, 142) * m(:,:) + rate(:,:, 143) = rate(:,:, 143) * m(:,:) + rate(:,:, 144) = rate(:,:, 144) * m(:,:) + rate(:,:, 145) = rate(:,:, 145) * m(:,:) + rate(:,:, 146) = rate(:,:, 146) * m(:,:) + rate(:,:, 147) = rate(:,:, 147) * m(:,:) + rate(:,:, 148) = rate(:,:, 148) * m(:,:) + rate(:,:, 149) = rate(:,:, 149) * m(:,:) + rate(:,:, 150) = rate(:,:, 150) * m(:,:) + rate(:,:, 151) = rate(:,:, 151) * m(:,:) + rate(:,:, 152) = rate(:,:, 152) * m(:,:) + rate(:,:, 153) = rate(:,:, 153) * m(:,:) + rate(:,:, 154) = rate(:,:, 154) * m(:,:) + rate(:,:, 155) = rate(:,:, 155) * m(:,:) + rate(:,:, 156) = rate(:,:, 156) * m(:,:) + rate(:,:, 157) = rate(:,:, 157) * m(:,:) + rate(:,:, 158) = rate(:,:, 158) * m(:,:) + rate(:,:, 159) = rate(:,:, 159) * m(:,:) + rate(:,:, 160) = rate(:,:, 160) * m(:,:) + rate(:,:, 161) = rate(:,:, 161) * m(:,:) + rate(:,:, 162) = rate(:,:, 162) * m(:,:) + rate(:,:, 163) = rate(:,:, 163) * m(:,:) + rate(:,:, 164) = rate(:,:, 164) * m(:,:) + rate(:,:, 165) = rate(:,:, 165) * m(:,:) + rate(:,:, 166) = rate(:,:, 166) * m(:,:) + rate(:,:, 167) = rate(:,:, 167) * m(:,:) + rate(:,:, 168) = rate(:,:, 168) * m(:,:) + rate(:,:, 169) = rate(:,:, 169) * m(:,:) + rate(:,:, 170) = rate(:,:, 170) * m(:,:) + rate(:,:, 171) = rate(:,:, 171) * m(:,:) + rate(:,:, 172) = rate(:,:, 172) * m(:,:) + rate(:,:, 173) = rate(:,:, 173) * m(:,:) + rate(:,:, 174) = rate(:,:, 174) * m(:,:) + rate(:,:, 175) = rate(:,:, 175) * m(:,:) + rate(:,:, 176) = rate(:,:, 176) * m(:,:) + rate(:,:, 179) = rate(:,:, 179) * m(:,:) + rate(:,:, 180) = rate(:,:, 180) * m(:,:) + rate(:,:, 181) = rate(:,:, 181) * m(:,:) + rate(:,:, 182) = rate(:,:, 182) * m(:,:) + rate(:,:, 183) = rate(:,:, 183) * m(:,:) + rate(:,:, 184) = rate(:,:, 184) * m(:,:) + rate(:,:, 185) = rate(:,:, 185) * m(:,:) + rate(:,:, 186) = rate(:,:, 186) * m(:,:) + rate(:,:, 187) = rate(:,:, 187) * m(:,:) + rate(:,:, 188) = rate(:,:, 188) * m(:,:) + rate(:,:, 189) = rate(:,:, 189) * m(:,:) + rate(:,:, 190) = rate(:,:, 190) * m(:,:) + rate(:,:, 191) = rate(:,:, 191) * m(:,:) + rate(:,:, 192) = rate(:,:, 192) * m(:,:) + rate(:,:, 193) = rate(:,:, 193) * m(:,:) + rate(:,:, 194) = rate(:,:, 194) * m(:,:) + rate(:,:, 195) = rate(:,:, 195) * m(:,:) + rate(:,:, 196) = rate(:,:, 196) * m(:,:) + rate(:,:, 197) = rate(:,:, 197) * m(:,:) + rate(:,:, 198) = rate(:,:, 198) * m(:,:) + rate(:,:, 199) = rate(:,:, 199) * m(:,:) + rate(:,:, 200) = rate(:,:, 200) * m(:,:) + rate(:,:, 201) = rate(:,:, 201) * m(:,:) + rate(:,:, 202) = rate(:,:, 202) * m(:,:) + rate(:,:, 203) = rate(:,:, 203) * m(:,:) + rate(:,:, 204) = rate(:,:, 204) * m(:,:) + rate(:,:, 205) = rate(:,:, 205) * m(:,:) + rate(:,:, 206) = rate(:,:, 206) * m(:,:) + rate(:,:, 207) = rate(:,:, 207) * m(:,:) + rate(:,:, 208) = rate(:,:, 208) * m(:,:) + rate(:,:, 209) = rate(:,:, 209) * m(:,:) + rate(:,:, 210) = rate(:,:, 210) * m(:,:) + rate(:,:, 211) = rate(:,:, 211) * m(:,:) + rate(:,:, 212) = rate(:,:, 212) * m(:,:) + rate(:,:, 213) = rate(:,:, 213) * m(:,:) + rate(:,:, 215) = rate(:,:, 215) * m(:,:) + rate(:,:, 216) = rate(:,:, 216) * m(:,:) + rate(:,:, 217) = rate(:,:, 217) * m(:,:) + rate(:,:, 218) = rate(:,:, 218) * m(:,:) + rate(:,:, 219) = rate(:,:, 219) * m(:,:) + rate(:,:, 220) = rate(:,:, 220) * m(:,:) + rate(:,:, 221) = rate(:,:, 221) * m(:,:) + rate(:,:, 222) = rate(:,:, 222) * m(:,:) + rate(:,:, 223) = rate(:,:, 223) * m(:,:) + rate(:,:, 224) = rate(:,:, 224) * m(:,:) + rate(:,:, 225) = rate(:,:, 225) * m(:,:) + rate(:,:, 226) = rate(:,:, 226) * m(:,:) + rate(:,:, 227) = rate(:,:, 227) * m(:,:) + rate(:,:, 228) = rate(:,:, 228) * m(:,:) + rate(:,:, 229) = rate(:,:, 229) * m(:,:) + rate(:,:, 230) = rate(:,:, 230) * m(:,:) + rate(:,:, 231) = rate(:,:, 231) * m(:,:) + rate(:,:, 232) = rate(:,:, 232) * m(:,:) + rate(:,:, 233) = rate(:,:, 233) * m(:,:) + rate(:,:, 234) = rate(:,:, 234) * m(:,:) + rate(:,:, 235) = rate(:,:, 235) * m(:,:) + rate(:,:, 236) = rate(:,:, 236) * m(:,:) + rate(:,:, 237) = rate(:,:, 237) * m(:,:) + rate(:,:, 238) = rate(:,:, 238) * m(:,:) + rate(:,:, 239) = rate(:,:, 239) * m(:,:) + rate(:,:, 240) = rate(:,:, 240) * m(:,:) + rate(:,:, 241) = rate(:,:, 241) * m(:,:) + rate(:,:, 242) = rate(:,:, 242) * m(:,:) + rate(:,:, 243) = rate(:,:, 243) * m(:,:) + rate(:,:, 244) = rate(:,:, 244) * m(:,:) + rate(:,:, 245) = rate(:,:, 245) * m(:,:) + rate(:,:, 246) = rate(:,:, 246) * m(:,:) + rate(:,:, 247) = rate(:,:, 247) * m(:,:) + rate(:,:, 248) = rate(:,:, 248) * m(:,:) + rate(:,:, 249) = rate(:,:, 249) * m(:,:) + rate(:,:, 250) = rate(:,:, 250) * m(:,:) + rate(:,:, 251) = rate(:,:, 251) * m(:,:) + rate(:,:, 252) = rate(:,:, 252) * m(:,:) + rate(:,:, 253) = rate(:,:, 253) * m(:,:) + rate(:,:, 254) = rate(:,:, 254) * m(:,:) + rate(:,:, 255) = rate(:,:, 255) * m(:,:) + rate(:,:, 256) = rate(:,:, 256) * m(:,:) + rate(:,:, 257) = rate(:,:, 257) * m(:,:) + rate(:,:, 258) = rate(:,:, 258) * m(:,:) + rate(:,:, 259) = rate(:,:, 259) * m(:,:) + rate(:,:, 260) = rate(:,:, 260) * m(:,:) + rate(:,:, 261) = rate(:,:, 261) * m(:,:) + rate(:,:, 262) = rate(:,:, 262) * m(:,:) + rate(:,:, 263) = rate(:,:, 263) * m(:,:) + rate(:,:, 264) = rate(:,:, 264) * m(:,:) + rate(:,:, 265) = rate(:,:, 265) * m(:,:) + rate(:,:, 266) = rate(:,:, 266) * m(:,:) + rate(:,:, 267) = rate(:,:, 267) * m(:,:) + rate(:,:, 268) = rate(:,:, 268) * m(:,:) + rate(:,:, 269) = rate(:,:, 269) * m(:,:) + rate(:,:, 270) = rate(:,:, 270) * m(:,:) + rate(:,:, 271) = rate(:,:, 271) * m(:,:) + rate(:,:, 272) = rate(:,:, 272) * m(:,:) + rate(:,:, 273) = rate(:,:, 273) * m(:,:) + rate(:,:, 274) = rate(:,:, 274) * m(:,:) + rate(:,:, 275) = rate(:,:, 275) * m(:,:) + rate(:,:, 276) = rate(:,:, 276) * m(:,:) + rate(:,:, 277) = rate(:,:, 277) * m(:,:) + rate(:,:, 278) = rate(:,:, 278) * m(:,:) + rate(:,:, 279) = rate(:,:, 279) * m(:,:) + rate(:,:, 280) = rate(:,:, 280) * m(:,:) + rate(:,:, 281) = rate(:,:, 281) * m(:,:) + rate(:,:, 282) = rate(:,:, 282) * m(:,:) + rate(:,:, 283) = rate(:,:, 283) * m(:,:) + rate(:,:, 284) = rate(:,:, 284) * m(:,:) + rate(:,:, 285) = rate(:,:, 285) * m(:,:) + rate(:,:, 286) = rate(:,:, 286) * m(:,:) + rate(:,:, 287) = rate(:,:, 287) * m(:,:) + rate(:,:, 288) = rate(:,:, 288) * m(:,:) + rate(:,:, 289) = rate(:,:, 289) * m(:,:) + rate(:,:, 290) = rate(:,:, 290) * m(:,:) + rate(:,:, 291) = rate(:,:, 291) * m(:,:) + rate(:,:, 292) = rate(:,:, 292) * m(:,:) + rate(:,:, 294) = rate(:,:, 294) * m(:,:) + rate(:,:, 295) = rate(:,:, 295) * m(:,:) + rate(:,:, 296) = rate(:,:, 296) * m(:,:) + rate(:,:, 297) = rate(:,:, 297) * m(:,:) + rate(:,:, 298) = rate(:,:, 298) * m(:,:) + rate(:,:, 299) = rate(:,:, 299) * m(:,:) + rate(:,:, 301) = rate(:,:, 301) * m(:,:) + rate(:,:, 302) = rate(:,:, 302) * m(:,:) + rate(:,:, 303) = rate(:,:, 303) * m(:,:) + rate(:,:, 304) = rate(:,:, 304) * m(:,:) + rate(:,:, 305) = rate(:,:, 305) * m(:,:) + rate(:,:, 306) = rate(:,:, 306) * m(:,:) + rate(:,:, 307) = rate(:,:, 307) * m(:,:) + rate(:,:, 308) = rate(:,:, 308) * m(:,:) + rate(:,:, 309) = rate(:,:, 309) * m(:,:) + rate(:,:, 310) = rate(:,:, 310) * m(:,:) + rate(:,:, 311) = rate(:,:, 311) * m(:,:) + rate(:,:, 312) = rate(:,:, 312) * m(:,:) + rate(:,:, 313) = rate(:,:, 313) * m(:,:) + rate(:,:, 314) = rate(:,:, 314) * m(:,:) + rate(:,:, 315) = rate(:,:, 315) * m(:,:) + rate(:,:, 316) = rate(:,:, 316) * m(:,:) + rate(:,:, 317) = rate(:,:, 317) * m(:,:) + rate(:,:, 318) = rate(:,:, 318) * m(:,:) + rate(:,:, 319) = rate(:,:, 319) * m(:,:) + rate(:,:, 320) = rate(:,:, 320) * m(:,:) + rate(:,:, 321) = rate(:,:, 321) * m(:,:) + rate(:,:, 322) = rate(:,:, 322) * m(:,:) + rate(:,:, 323) = rate(:,:, 323) * m(:,:) + rate(:,:, 324) = rate(:,:, 324) * m(:,:) + rate(:,:, 325) = rate(:,:, 325) * m(:,:) + rate(:,:, 326) = rate(:,:, 326) * m(:,:) + rate(:,:, 327) = rate(:,:, 327) * m(:,:) + rate(:,:, 328) = rate(:,:, 328) * m(:,:) + rate(:,:, 329) = rate(:,:, 329) * m(:,:) + rate(:,:, 330) = rate(:,:, 330) * m(:,:) + rate(:,:, 331) = rate(:,:, 331) * m(:,:) + rate(:,:, 332) = rate(:,:, 332) * m(:,:) + rate(:,:, 333) = rate(:,:, 333) * m(:,:) + rate(:,:, 334) = rate(:,:, 334) * m(:,:) + rate(:,:, 335) = rate(:,:, 335) * m(:,:) + rate(:,:, 336) = rate(:,:, 336) * m(:,:) + rate(:,:, 337) = rate(:,:, 337) * m(:,:) + rate(:,:, 338) = rate(:,:, 338) * m(:,:) + rate(:,:, 339) = rate(:,:, 339) * m(:,:) + rate(:,:, 341) = rate(:,:, 341) * m(:,:) + rate(:,:, 342) = rate(:,:, 342) * m(:,:) + rate(:,:, 343) = rate(:,:, 343) * m(:,:) + rate(:,:, 344) = rate(:,:, 344) * m(:,:) + rate(:,:, 345) = rate(:,:, 345) * m(:,:) + rate(:,:, 346) = rate(:,:, 346) * m(:,:) + rate(:,:, 347) = rate(:,:, 347) * m(:,:) + rate(:,:, 348) = rate(:,:, 348) * m(:,:) + rate(:,:, 349) = rate(:,:, 349) * m(:,:) + rate(:,:, 350) = rate(:,:, 350) * m(:,:) + rate(:,:, 351) = rate(:,:, 351) * m(:,:) + rate(:,:, 352) = rate(:,:, 352) * m(:,:) + rate(:,:, 353) = rate(:,:, 353) * m(:,:) + rate(:,:, 354) = rate(:,:, 354) * m(:,:) + rate(:,:, 355) = rate(:,:, 355) * m(:,:) + rate(:,:, 356) = rate(:,:, 356) * m(:,:) + rate(:,:, 357) = rate(:,:, 357) * m(:,:) + rate(:,:, 358) = rate(:,:, 358) * m(:,:) + rate(:,:, 359) = rate(:,:, 359) * m(:,:) + rate(:,:, 360) = rate(:,:, 360) * m(:,:) + rate(:,:, 361) = rate(:,:, 361) * m(:,:) + rate(:,:, 362) = rate(:,:, 362) * m(:,:) + rate(:,:, 363) = rate(:,:, 363) * m(:,:) + rate(:,:, 364) = rate(:,:, 364) * m(:,:) + rate(:,:, 365) = rate(:,:, 365) * m(:,:) + rate(:,:, 366) = rate(:,:, 366) * m(:,:) + rate(:,:, 367) = rate(:,:, 367) * m(:,:) + rate(:,:, 368) = rate(:,:, 368) * m(:,:) + rate(:,:, 369) = rate(:,:, 369) * m(:,:) + rate(:,:, 370) = rate(:,:, 370) * m(:,:) + rate(:,:, 371) = rate(:,:, 371) * m(:,:) + rate(:,:, 372) = rate(:,:, 372) * m(:,:) + rate(:,:, 373) = rate(:,:, 373) * m(:,:) + rate(:,:, 374) = rate(:,:, 374) * m(:,:) + rate(:,:, 375) = rate(:,:, 375) * m(:,:) + rate(:,:, 376) = rate(:,:, 376) * m(:,:) + rate(:,:, 377) = rate(:,:, 377) * m(:,:) + rate(:,:, 378) = rate(:,:, 378) * m(:,:) + rate(:,:, 379) = rate(:,:, 379) * m(:,:) + rate(:,:, 380) = rate(:,:, 380) * m(:,:) + rate(:,:, 381) = rate(:,:, 381) * m(:,:) + rate(:,:, 382) = rate(:,:, 382) * m(:,:) + rate(:,:, 383) = rate(:,:, 383) * m(:,:) + rate(:,:, 392) = rate(:,:, 392) * m(:,:) + rate(:,:, 397) = rate(:,:, 397) * m(:,:) + rate(:,:, 398) = rate(:,:, 398) * m(:,:) + rate(:,:, 399) = rate(:,:, 399) * m(:,:) + rate(:,:, 402) = rate(:,:, 402) * m(:,:) + rate(:,:, 403) = rate(:,:, 403) * m(:,:) + rate(:,:, 404) = rate(:,:, 404) * m(:,:) + rate(:,:, 407) = rate(:,:, 407) * m(:,:) + rate(:,:, 411) = rate(:,:, 411) * m(:,:) + rate(:,:, 412) = rate(:,:, 412) * m(:,:) + rate(:,:, 413) = rate(:,:, 413) * m(:,:) + rate(:,:, 414) = rate(:,:, 414) * m(:,:) + rate(:,:, 415) = rate(:,:, 415) * m(:,:) + rate(:,:, 416) = rate(:,:, 416) * m(:,:) + rate(:,:, 417) = rate(:,:, 417) * m(:,:) + rate(:,:, 418) = rate(:,:, 418) * m(:,:) + rate(:,:, 419) = rate(:,:, 419) * m(:,:) + rate(:,:, 420) = rate(:,:, 420) * m(:,:) + rate(:,:, 422) = rate(:,:, 422) * m(:,:) + rate(:,:, 423) = rate(:,:, 423) * m(:,:) + rate(:,:, 425) = rate(:,:, 425) * m(:,:) + rate(:,:, 426) = rate(:,:, 426) * m(:,:) + rate(:,:, 427) = rate(:,:, 427) * m(:,:) + rate(:,:, 429) = rate(:,:, 429) * m(:,:) + rate(:,:, 430) = rate(:,:, 430) * m(:,:) + rate(:,:, 431) = rate(:,:, 431) * m(:,:) + rate(:,:, 432) = rate(:,:, 432) * m(:,:) + rate(:,:, 435) = rate(:,:, 435) * m(:,:) + end subroutine adjrxt + end module mo_adjrxt diff --git a/src/chemistry/pp_waccm_t4ma_mam5/mo_exp_sol.F90 b/src/chemistry/pp_waccm_t4ma_mam5/mo_exp_sol.F90 new file mode 100644 index 0000000000..c1cde93fa7 --- /dev/null +++ b/src/chemistry/pp_waccm_t4ma_mam5/mo_exp_sol.F90 @@ -0,0 +1,81 @@ +module mo_exp_sol + private + public :: exp_sol + public :: exp_sol_inti +contains + subroutine exp_sol_inti + use mo_tracname, only : solsym + use chem_mods, only : clscnt1, clsmap + use cam_history, only : addfld + implicit none + integer :: i,j + do i = 1,clscnt1 + j = clsmap(i,1) + call addfld( trim(solsym(j))//'_CHMP', (/ 'lev' /), 'I', '/cm3/s', 'chemical production rate' ) + call addfld( trim(solsym(j))//'_CHML', (/ 'lev' /), 'I', '/cm3/s', 'chemical loss rate' ) + enddo + end subroutine exp_sol_inti + subroutine exp_sol( base_sol, reaction_rates, het_rates, extfrc, delt, xhnm, ncol, lchnk, ltrop ) + !----------------------------------------------------------------------- + ! ... Exp_sol advances the volumetric mixing ratio + ! forward one time step via the fully explicit + ! Euler scheme + !----------------------------------------------------------------------- + use chem_mods, only : clscnt1, extcnt, gas_pcnst, clsmap, rxntot + use ppgrid, only : pcols, pver + use mo_prod_loss, only : exp_prod_loss + use mo_indprd, only : indprd + use shr_kind_mod, only : r8 => shr_kind_r8 + use cam_history, only : outfld + use mo_tracname, only : solsym + implicit none + !----------------------------------------------------------------------- + ! ... Dummy arguments + !----------------------------------------------------------------------- + integer, intent(in) :: ncol ! columns in chunck + integer, intent(in) :: lchnk ! chunk id + real(r8), intent(in) :: delt ! time step (s) + real(r8), intent(in) :: het_rates(ncol,pver,max(1,gas_pcnst)) ! het rates (1/cm^3/s) + real(r8), intent(in) :: reaction_rates(ncol,pver,rxntot) ! rxt rates (1/cm^3/s) + real(r8), intent(in) :: extfrc(ncol,pver,extcnt) ! "external insitu forcing" (1/cm^3/s) + real(r8), intent(in) :: xhnm(ncol,pver) + integer, intent(in) :: ltrop(pcols) ! chemistry troposphere boundary (index) + real(r8), intent(inout) :: base_sol(ncol,pver,gas_pcnst) ! working mixing ratios (vmr) + !----------------------------------------------------------------------- + ! ... Local variables + !----------------------------------------------------------------------- + integer :: i, k, l, m + integer :: chnkpnts + real(r8), dimension(ncol,pver,max(1,clscnt1)) :: & + prod, & + loss + real(r8), dimension(ncol,pver,clscnt1) :: ind_prd + real(r8), dimension(ncol,pver) :: wrk + chnkpnts = ncol*pver + !----------------------------------------------------------------------- + ! ... Put "independent" production in the forcing + !----------------------------------------------------------------------- + call indprd( 1, ind_prd, clscnt1, base_sol, extfrc, & + reaction_rates, chnkpnts ) + !----------------------------------------------------------------------- + ! ... Form F(y) + !----------------------------------------------------------------------- + call exp_prod_loss( 1, chnkpnts, prod, loss, base_sol, reaction_rates, & + het_rates, chnkpnts ) + !----------------------------------------------------------------------- + ! ... Solve for the mixing ratio at t(n+1) + !----------------------------------------------------------------------- + do m = 1,clscnt1 + l = clsmap(m,1) + do i = 1,ncol + do k = ltrop(i)+1,pver + base_sol(i,k,l) = base_sol(i,k,l) + delt * (prod(i,k,m) + ind_prd(i,k,m) - loss(i,k,m)) + end do + end do + wrk(:,:) = (prod(:,:,m) + ind_prd(:,:,m))*xhnm + call outfld( trim(solsym(l))//'_CHMP', wrk(:,:), ncol, lchnk ) + wrk(:,:) = (loss(:,:,m))*xhnm + call outfld( trim(solsym(l))//'_CHML', wrk(:,:), ncol, lchnk ) + end do + end subroutine exp_sol +end module mo_exp_sol diff --git a/src/chemistry/pp_waccm_t4ma_mam5/mo_imp_sol.F90 b/src/chemistry/pp_waccm_t4ma_mam5/mo_imp_sol.F90 new file mode 100644 index 0000000000..98cadb9050 --- /dev/null +++ b/src/chemistry/pp_waccm_t4ma_mam5/mo_imp_sol.F90 @@ -0,0 +1,435 @@ +module mo_imp_sol + use shr_kind_mod, only : r8 => shr_kind_r8 + use chem_mods, only : clscnt4, gas_pcnst, clsmap, veclen + use cam_logfile, only : iulog + implicit none + private + public :: imp_slv_inti, imp_sol + save + real(r8), parameter :: rel_err = 1.e-3_r8 + real(r8), parameter :: high_rel_err = 1.e-4_r8 + !----------------------------------------------------------------------- + ! Newton-Raphson iteration limits + !----------------------------------------------------------------------- + integer, parameter :: itermax = 11 + integer, parameter :: cut_limit = 5 + real(r8), parameter :: sol_min = 1.e-20_r8 + real(r8), parameter :: small = 1.e-40_r8 + real(r8) :: epsilon(clscnt4) + logical :: factor(itermax) +contains + subroutine imp_slv_inti + !----------------------------------------------------------------------- + ! ... Initialize the implict solver + !----------------------------------------------------------------------- + use mo_chem_utls, only : get_spc_ndx + implicit none + !----------------------------------------------------------------------- + ! ... Local variables + !----------------------------------------------------------------------- + integer :: m, ox_ndx, o3a_ndx + real(r8) :: eps(gas_pcnst) + factor(:) = .true. + eps(:) = rel_err + ox_ndx = get_spc_ndx( 'OX' ) + if( ox_ndx < 1 ) then + ox_ndx = get_spc_ndx( 'O3' ) + end if + if( ox_ndx > 0 ) then + eps(ox_ndx) = high_rel_err + end if + m = get_spc_ndx( 'NO' ) + if( m > 0 ) then + eps(m) = high_rel_err + end if + m = get_spc_ndx( 'NO2' ) + if( m > 0 ) then + eps(m) = high_rel_err + end if + m = get_spc_ndx( 'NO3' ) + if( m > 0 ) then + eps(m) = high_rel_err + end if + m = get_spc_ndx( 'HNO3' ) + if( m > 0 ) then + eps(m) = high_rel_err + end if + m = get_spc_ndx( 'HO2NO2' ) + if( m > 0 ) then + eps(m) = high_rel_err + end if + m = get_spc_ndx( 'N2O5' ) + if( m > 0 ) then + eps(m) = high_rel_err + end if + m = get_spc_ndx( 'OH' ) + if( m > 0 ) then + eps(m) = high_rel_err + end if + m = get_spc_ndx( 'HO2' ) + if( m > 0 ) then + eps(m) = high_rel_err + end if + o3a_ndx = get_spc_ndx( 'O3A' ) + if( o3a_ndx > 0 ) then + eps(m) = high_rel_err + end if + m = get_spc_ndx( 'XNO' ) + if( m > 0 ) then + eps(m) = high_rel_err + end if + m = get_spc_ndx( 'XNO2' ) + if( m > 0 ) then + eps(m) = high_rel_err + end if + m = get_spc_ndx( 'XNO3' ) + if( m > 0 ) then + eps(m) = high_rel_err + end if + m = get_spc_ndx( 'XHNO3' ) + if( m > 0 ) then + eps(m) = high_rel_err + end if + m = get_spc_ndx( 'XHO2NO2' ) + if( m > 0 ) then + eps(m) = high_rel_err + end if + m = get_spc_ndx( 'XNO2NO3' ) + if( m > 0 ) then + eps(m) = high_rel_err + end if + m = get_spc_ndx( 'NO2XNO3' ) + if( m > 0 ) then + eps(m) = high_rel_err + end if + do m = 1,clscnt4 + epsilon(m) = eps(clsmap(m,4)) + end do + end subroutine imp_slv_inti + subroutine imp_sol( base_sol, reaction_rates, het_rates, extfrc, delt, & + ncol, nlev, lchnk, prod_out, loss_out ) + !----------------------------------------------------------------------- + ! ... imp_sol advances the volumetric mixing ratio + ! forward one time step via the fully implicit euler scheme. + ! this source is meant for vector architectures such as the + ! nec sx6 and cray x1 + !----------------------------------------------------------------------- + use chem_mods, only : rxntot, extcnt, nzcnt, permute, cls_rxt_cnt + use mo_tracname, only : solsym + use mo_lin_matrix, only : linmat + use mo_nln_matrix, only : nlnmat + use mo_lu_factor, only : lu_fac + use mo_lu_solve, only : lu_slv + use mo_prod_loss, only : imp_prod_loss + use mo_indprd, only : indprd + use time_manager, only : get_nstep + use perf_mod, only : t_startf, t_stopf + implicit none + !----------------------------------------------------------------------- + ! ... dummy args + !----------------------------------------------------------------------- + integer, intent(in) :: ncol ! columns in chunck + integer, intent(in) :: nlev + integer, intent(in) :: lchnk ! chunk id + real(r8), intent(in) :: delt ! time step (s) + real(r8), intent(in) :: reaction_rates(ncol*nlev,max(1,rxntot)) ! rxt rates (1/cm^3/s) + real(r8), intent(in) :: extfrc(ncol*nlev,max(1,extcnt)) ! external in-situ forcing (1/cm^3/s) + real(r8), intent(in) :: het_rates(ncol*nlev,max(1,gas_pcnst)) ! washout rates (1/s) + real(r8), intent(inout) :: base_sol(ncol*nlev,gas_pcnst) ! species mixing ratios (vmr) + real(r8), intent(out) :: prod_out(ncol*nlev,max(1,clscnt4)) + real(r8), intent(out) :: loss_out(ncol*nlev,max(1,clscnt4)) + !----------------------------------------------------------------------- + ! ... local variables + !----------------------------------------------------------------------- + integer :: nr_iter + integer :: ofl + integer :: ofu + integer :: avec_len + integer :: bndx ! base index + integer :: cndx ! class index + integer :: pndx ! permuted class index + integer :: i,m + integer :: fail_cnt(veclen) + integer :: cut_cnt(veclen) + integer :: stp_con_cnt(veclen) + integer :: nstep + real(r8) :: interval_done(veclen) + real(r8) :: dt(veclen) + real(r8) :: dti(veclen) + real(r8) :: max_delta(max(1,clscnt4)) + real(r8) :: ind_prd(ncol*nlev,max(1,clscnt4)) + logical :: convergence + integer :: chnkpnts ! total spatial points in chunk; ncol*ncol + logical :: diags_out(ncol*nlev,max(1,clscnt4)) + real(r8) :: sys_jac_blk(veclen,max(1,nzcnt)) + real(r8) :: lin_jac_blk(veclen,max(1,nzcnt)) + real(r8) :: solution_blk(veclen,max(1,clscnt4)) + real(r8) :: forcing_blk(veclen,max(1,clscnt4)) + real(r8) :: iter_invariant_blk(veclen,max(1,clscnt4)) + real(r8) :: prod_blk(veclen,max(1,clscnt4)) + real(r8) :: loss_blk(veclen,max(1,clscnt4)) + real(r8) :: ind_prd_blk(veclen,max(1,clscnt4)) + real(r8) :: sbase_sol_blk(veclen,gas_pcnst) + real(r8) :: wrk_blk(veclen) + logical :: spc_conv_blk(veclen,max(1,clscnt4)) + logical :: cls_conv_blk(veclen) + logical :: time_stp_done_blk(veclen) + real(r8) :: reaction_rates_blk(veclen,max(1,rxntot)) + real(r8) :: extfrc_blk(veclen,max(1,extcnt)) + real(r8) :: het_rates_blk(veclen,max(1,gas_pcnst)) + real(r8) :: base_sol_blk(veclen,gas_pcnst) + chnkpnts = ncol*nlev + prod_out = 0._r8 + loss_out = 0._r8 + diags_out = .false. + !----------------------------------------------------------------------- + ! ... class independent forcing + !----------------------------------------------------------------------- + if( cls_rxt_cnt(1,4) > 0 .or. extcnt > 0 ) then + call indprd( 4, ind_prd, clscnt4, base_sol, extfrc, & + reaction_rates, chnkpnts ) + else + do m = 1,clscnt4 + ind_prd(:,m) = 0._r8 + end do + end if + nstep = get_nstep() + ofl = 1 + chnkpnts_loop : do + ofu = min( chnkpnts,ofl + veclen - 1 ) + avec_len = (ofu - ofl) + 1 + reaction_rates_blk(1:avec_len,:) = reaction_rates(ofl:ofu,:) + extfrc_blk(1:avec_len,:) = extfrc(ofl:ofu,:) + het_rates_blk(1:avec_len,:) = het_rates(ofl:ofu,:) + ind_prd_blk(1:avec_len,:) = ind_prd(ofl:ofu,:) + base_sol_blk(1:avec_len,:) = base_sol(ofl:ofu,:) + cls_conv_blk(1:avec_len) = .false. + dt(1:avec_len) = delt + cut_cnt(1:avec_len) = 0 + fail_cnt(1:avec_len) = 0 + stp_con_cnt(1:avec_len) = 0 + interval_done(1:avec_len) = 0._r8 + time_stp_done_blk(1:avec_len) = .false. + !----------------------------------------------------------------------- + ! ... time step loop + !----------------------------------------------------------------------- + time_step_loop : do + dti(1:avec_len) = 1._r8 / dt(1:avec_len) + !----------------------------------------------------------------------- + ! ... transfer from base to class array + !----------------------------------------------------------------------- + do cndx = 1,clscnt4 + bndx = clsmap(cndx,4) + pndx = permute(cndx,4) + do i = 1, avec_len + solution_blk(i,pndx) = base_sol_blk(i,bndx) + end do + end do + do m = 1,gas_pcnst + sbase_sol_blk(1:avec_len,m) = base_sol_blk(1:avec_len,m) + end do + !----------------------------------------------------------------------- + ! ... set the iteration invariant part of the function f(y) + !----------------------------------------------------------------------- + if( cls_rxt_cnt(1,4) > 0 .or. extcnt > 0 ) then + do m = 1,clscnt4 + do i = 1, avec_len + iter_invariant_blk(i,m) = dti(i) * solution_blk(i,m) + ind_prd_blk(i,m) + end do + end do + else + do m = 1,clscnt4 + do i = 1, avec_len + iter_invariant_blk(i,m) = dti(i) * solution_blk(i,m) + end do + end do + end if + !----------------------------------------------------------------------- + ! ... the linear component + !----------------------------------------------------------------------- + if( cls_rxt_cnt(2,4) > 0 ) then + call t_startf( 'lin_mat' ) + call linmat( avec_len, lin_jac_blk, base_sol_blk, & + reaction_rates_blk, het_rates_blk ) + call t_stopf( 'lin_mat' ) + end if + !======================================================================= + ! the newton-raphson iteration for f(y) = 0 + !======================================================================= + iter_loop : do nr_iter = 1,itermax + !----------------------------------------------------------------------- + ! ... the non-linear component + !----------------------------------------------------------------------- + if( factor(nr_iter) ) then + call t_startf( 'nln_mat' ) + call nlnmat( avec_len, sys_jac_blk, base_sol_blk, & + reaction_rates_blk, lin_jac_blk, dti ) + call t_stopf( 'nln_mat' ) + !----------------------------------------------------------------------- + ! ... factor the "system" matrix + !----------------------------------------------------------------------- + call t_startf( 'lu_fac' ) + call lu_fac( avec_len, sys_jac_blk ) + call t_stopf( 'lu_fac' ) + end if + !----------------------------------------------------------------------- + ! ... form f(y) + !----------------------------------------------------------------------- + call t_startf( 'prod_loss' ) + call imp_prod_loss( avec_len, prod_blk, loss_blk, & + base_sol_blk, reaction_rates_blk, het_rates_blk ) + call t_stopf( 'prod_loss' ) + do m = 1,clscnt4 + do i = 1, avec_len + forcing_blk(i,m) = solution_blk(i,m)*dti(i) & + - (iter_invariant_blk(i,m) + prod_blk(i,m) - loss_blk(i,m)) + end do + end do + !----------------------------------------------------------------------- + ! ... solve for the mixing ratio at t(n+1) + !----------------------------------------------------------------------- + call t_startf( 'lu_slv' ) + call lu_slv( avec_len, sys_jac_blk, forcing_blk ) + call t_stopf( 'lu_slv' ) + do m = 1,clscnt4 + do i = 1, avec_len + if( .not. cls_conv_blk(i) )then + solution_blk(i,m) = solution_blk(i,m) + forcing_blk(i,m) + else + forcing_blk(i,m) = 0._r8 + endif + end do + end do + !----------------------------------------------------------------------- + ! ... convergence measures and test + !----------------------------------------------------------------------- + conv_chk : if( nr_iter > 1 ) then + !----------------------------------------------------------------------- + ! ... check for convergence + !----------------------------------------------------------------------- + do cndx = 1,clscnt4 + pndx = permute(cndx,4) + bndx = clsmap(cndx,4) + do i = 1, avec_len + if ( abs( solution_blk(i,pndx) ) > sol_min ) then + wrk_blk(i) = abs( forcing_blk(i,pndx)/solution_blk(i,pndx) ) + else + wrk_blk(i) = 0._r8 + endif + enddo + max_delta(cndx) = maxval( wrk_blk(1:avec_len) ) + do i = 1, avec_len + solution_blk(i,pndx) = max( 0._r8,solution_blk(i,pndx) ) + base_sol_blk(i,bndx) = solution_blk(i,pndx) + if ( abs( forcing_blk(i,pndx) ) > small ) then + spc_conv_blk(i,cndx) = abs(forcing_blk(i,pndx)) <= epsilon(cndx)*abs(solution_blk(i,pndx)) + else + spc_conv_blk(i,cndx) = .true. + endif + enddo + where( spc_conv_blk(1:avec_len,cndx) .and. .not.diags_out(ofl:ofu,cndx) ) + ! capture output production and loss diagnostics at converged ponits + prod_out(ofl:ofu,cndx) = prod_blk(1:avec_len,cndx) + ind_prd_blk(1:avec_len,cndx) + loss_out(ofl:ofu,cndx) = loss_blk(1:avec_len,cndx) + diags_out(ofl:ofu,cndx) = .true. + endwhere + end do + do i = 1, avec_len + if( .not. cls_conv_blk(i) ) then + cls_conv_blk(i) = all( spc_conv_blk(i,:) ) + end if + end do + convergence = all( cls_conv_blk(:) ) + if( convergence ) then + exit iter_loop + end if + else conv_chk +!----------------------------------------------------------------------- +! ... limit iterate +!----------------------------------------------------------------------- + do m = 1,clscnt4 + do i = 1, avec_len + solution_blk(i,m) = max( 0._r8,solution_blk(i,m) ) + end do + end do +!----------------------------------------------------------------------- +! ... transfer latest solution back to base array +!----------------------------------------------------------------------- + do cndx = 1,clscnt4 + pndx = permute(cndx,4) + bndx = clsmap(cndx,4) + do i = 1, avec_len + base_sol_blk(i,bndx) = solution_blk(i,pndx) + end do + end do + end if conv_chk + end do iter_loop + !----------------------------------------------------------------------- + ! ... check for newton-raphson convergence + !----------------------------------------------------------------------- + do i = 1,avec_len + if( .not. cls_conv_blk(i) ) then + fail_cnt(i) = fail_cnt(i) + 1 + write(iulog,'('' imp_sol: time step '',1p,g15.7,'' failed to converge @ (lchnk,vctrpos,nstep) = '',3i8)') & + dt(i),lchnk,ofl+i-1,nstep + stp_con_cnt(i) = 0 + if( cut_cnt(i) < cut_limit ) then + cut_cnt(i) = cut_cnt(i) + 1 + if( cut_cnt(i) < cut_limit ) then + dt(i) = .5_r8 * dt(i) + else + dt(i) = .1_r8 * dt(i) + end if + base_sol_blk(i,:) = sbase_sol_blk(i,:) + else + write(iulog,'('' imp_sol: step failed to converge @ (lchnk,vctrpos,nstep,dt,time) = '',3i8,1p,2g15.7)') & + lchnk,ofl+i-1,nstep,dt(i),interval_done+dt(i) + do m = 1,clscnt4 + if( .not. spc_conv_blk(i,m) ) then + write(iulog,'(1x,a16,1x,1pe10.3)') solsym(clsmap(m,4)), max_delta(m) + end if + end do + cls_conv_blk(i) = .true. + if( .not. time_stp_done_blk(i) ) then + interval_done(i) = interval_done(i) + dt(i) + time_stp_done_blk(i) = abs( delt - interval_done(i) ) <= .0001_r8 + endif + end if + elseif( .not. time_stp_done_blk(i) ) then + interval_done(i) = interval_done(i) + dt(i) + time_stp_done_blk(i) = abs( delt - interval_done(i) ) <= .0001_r8 + stp_con_cnt(i) = stp_con_cnt(i) + 1 + if( .not. time_stp_done_blk(i) ) then + if( stp_con_cnt(i) >= 2 ) then + dt(i) = 2._r8*dt(i) + stp_con_cnt(i) = 0 + end if + dt(i) = min( dt(i),delt-interval_done(i) ) + else + base_sol(ofl+i-1,1:gas_pcnst) = base_sol_blk(i,1:gas_pcnst) + endif + endif + end do + convergence = all( cls_conv_blk(:) ) + do i = 1,avec_len + if( cls_conv_blk(i) .and. .not. time_stp_done_blk(i) ) then + cls_conv_blk(i) = .false. + endif + end do + if( .not. convergence ) then + cycle time_step_loop + endif + !----------------------------------------------------------------------- + ! ... check for time step done + !----------------------------------------------------------------------- + if( all( time_stp_done_blk(1:avec_len) ) ) then + exit time_step_loop + end if + end do time_step_loop + ofl = ofu + 1 + if( ofl > chnkpnts ) then + exit chnkpnts_loop + end if + end do chnkpnts_loop + end subroutine imp_sol +end module mo_imp_sol diff --git a/src/chemistry/pp_waccm_t4ma_mam5/mo_indprd.F90 b/src/chemistry/pp_waccm_t4ma_mam5/mo_indprd.F90 new file mode 100644 index 0000000000..8895a8dfa9 --- /dev/null +++ b/src/chemistry/pp_waccm_t4ma_mam5/mo_indprd.F90 @@ -0,0 +1,183 @@ + module mo_indprd + use shr_kind_mod, only : r8 => shr_kind_r8 + private + public :: indprd + contains + subroutine indprd( class, prod, nprod, y, extfrc, rxt, chnkpnts ) + use chem_mods, only : gas_pcnst, extcnt, rxntot + implicit none +!-------------------------------------------------------------------- +! ... dummy arguments +!-------------------------------------------------------------------- + integer, intent(in) :: class + integer, intent(in) :: chnkpnts + integer, intent(in) :: nprod + real(r8), intent(in) :: y(chnkpnts,gas_pcnst) + real(r8), intent(in) :: rxt(chnkpnts,rxntot) + real(r8), intent(in) :: extfrc(chnkpnts,extcnt) + real(r8), intent(inout) :: prod(chnkpnts,nprod) +!-------------------------------------------------------------------- +! ... "independent" production for Explicit species +!-------------------------------------------------------------------- + if( class == 1 ) then + prod(:,1) =rxt(:,383)*y(:,111)*y(:,95) +rxt(:,386)*y(:,96) + prod(:,2) =.500_r8*rxt(:,336)*y(:,111)*y(:,87) +!-------------------------------------------------------------------- +! ... "independent" production for Implicit species +!-------------------------------------------------------------------- + else if( class == 4 ) then + prod(:,1) = 0._r8 + prod(:,2) = + extfrc(:,6) + prod(:,29) = 0._r8 + prod(:,131) = 0._r8 + prod(:,49) = 0._r8 + prod(:,133) = 0._r8 + prod(:,82) = 0._r8 + prod(:,3) = 0._r8 + prod(:,74) = 0._r8 + prod(:,98) = 0._r8 + prod(:,54) = 0._r8 + prod(:,62) = 0._r8 + prod(:,60) = 0._r8 + prod(:,116) = 0._r8 + prod(:,102) = 0._r8 + prod(:,68) = 0._r8 + prod(:,34) = 0._r8 + prod(:,31) = 0._r8 + prod(:,40) = 0._r8 + prod(:,41) = 0._r8 + prod(:,35) = 0._r8 + prod(:,42) = 0._r8 + prod(:,36) = 0._r8 + prod(:,43) = 0._r8 + prod(:,37) = 0._r8 + prod(:,75) = 0._r8 + prod(:,136) = 0._r8 + prod(:,86) = 0._r8 + prod(:,33) = 0._r8 + prod(:,117) = 0._r8 + prod(:,66) = 0._r8 + prod(:,126) = 0._r8 + prod(:,95) = 0._r8 + prod(:,121) = 0._r8 + prod(:,89) = 0._r8 + prod(:,85) = 0._r8 + prod(:,140) = 0._r8 + prod(:,80) = 0._r8 + prod(:,69) = 0._r8 + prod(:,147) = 0._r8 + prod(:,71) = 0._r8 + prod(:,143) = 0._r8 + prod(:,44) = 0._r8 + prod(:,28) = 0._r8 + prod(:,134) = 0._r8 + prod(:,111) = 0._r8 + prod(:,4) = 0._r8 + prod(:,118) = + extfrc(:,10) + prod(:,127) = 0._r8 + prod(:,48) = 0._r8 + prod(:,51) = 0._r8 + prod(:,56) = 0._r8 + prod(:,5) = 0._r8 + prod(:,6) = 0._r8 + prod(:,7) = 0._r8 + prod(:,72) = 0._r8 + prod(:,93) = 0._r8 + prod(:,38) = 0._r8 + prod(:,104) = 0._r8 + prod(:,114) = 0._r8 + prod(:,91) = 0._r8 + prod(:,148) = 0._r8 + prod(:,128) = 0._r8 + prod(:,32) = 0._r8 + prod(:,84) = 0._r8 + prod(:,39) = 0._r8 + prod(:,99) = 0._r8 + prod(:,50) = 0._r8 + prod(:,52) = 0._r8 + prod(:,57) = 0._r8 + prod(:,130) = 0._r8 + prod(:,58) = 0._r8 + prod(:,139) = 0._r8 + prod(:,73) = 0._r8 + prod(:,94) = 0._r8 + prod(:,101) = 0._r8 + prod(:,115) = 0._r8 + prod(:,64) = 0._r8 + prod(:,103) = 0._r8 + prod(:,97) = 0._r8 + prod(:,122) = 0._r8 + prod(:,78) = 0._r8 + prod(:,119) = 0._r8 + prod(:,123) = 0._r8 + prod(:,61) = 0._r8 + prod(:,125) = 0._r8 + prod(:,83) = 0._r8 + prod(:,124) = 0._r8 + prod(:,110) = (.800_r8*rxt(:,85) +.800_r8*rxt(:,86) +rxt(:,89) +rxt(:,90)) & + + extfrc(:,19) + prod(:,53) = 0._r8 + prod(:,59) = 0._r8 + prod(:,8) = 0._r8 + prod(:,9) = 0._r8 + prod(:,10) = 0._r8 + prod(:,30) = 0._r8 + prod(:,11) = 0._r8 + prod(:,146) = + extfrc(:,12) + prod(:,135) = + extfrc(:,11) + prod(:,141) = 0._r8 + prod(:,67) = 0._r8 + prod(:,12) = + extfrc(:,1) + prod(:,13) = + extfrc(:,2) + prod(:,14) = 0._r8 + prod(:,15) = + extfrc(:,5) + prod(:,16) = + extfrc(:,8) + prod(:,145) = 0._r8 + prod(:,132) = 0._r8 + prod(:,138) = 0._r8 + prod(:,63) = 0._r8 + prod(:,65) = 0._r8 + prod(:,144) = + extfrc(:,21) + prod(:,112) = 0._r8 + prod(:,79) = 0._r8 + prod(:,96) = 0._r8 + prod(:,17) = 0._r8 + prod(:,18) = + extfrc(:,7) + prod(:,81) = 0._r8 + prod(:,113) = 0._r8 + prod(:,70) = 0._r8 + prod(:,90) = 0._r8 + prod(:,19) = 0._r8 + prod(:,129) = 0._r8 + prod(:,109) = + extfrc(:,13) + prod(:,55) = 0._r8 + prod(:,20) = + extfrc(:,3) + prod(:,21) = + extfrc(:,4) + prod(:,22) = 0._r8 + prod(:,23) = + extfrc(:,9) + prod(:,24) = 0._r8 + prod(:,25) = 0._r8 + prod(:,26) = 0._r8 + prod(:,27) = 0._r8 + prod(:,88) = 0._r8 + prod(:,120) = 0._r8 + prod(:,47) = 0._r8 + prod(:,107) = (rxt(:,84) +rxt(:,87) +rxt(:,88) +rxt(:,89) +rxt(:,90) + & + rxt(:,91)) + extfrc(:,20) + prod(:,137) = 0._r8 + prod(:,108) = (1.200_r8*rxt(:,85) +1.200_r8*rxt(:,86) +rxt(:,87) +rxt(:,91)) & + + extfrc(:,17) + prod(:,87) = (rxt(:,84) +rxt(:,88)) + extfrc(:,15) + prod(:,92) = 0._r8 + prod(:,100) = (rxt(:,87) +rxt(:,89) +rxt(:,90) +rxt(:,91)) + extfrc(:,16) + prod(:,142) = 0._r8 + prod(:,45) = 0._r8 + prod(:,46) = 0._r8 + prod(:,106) = + extfrc(:,14) + prod(:,105) = + extfrc(:,18) + prod(:,77) = 0._r8 + prod(:,76) = 0._r8 + prod(:,149) = 0._r8 + end if + end subroutine indprd + end module mo_indprd diff --git a/src/chemistry/pp_waccm_t4ma_mam5/mo_lin_matrix.F90 b/src/chemistry/pp_waccm_t4ma_mam5/mo_lin_matrix.F90 new file mode 100644 index 0000000000..becd325df1 --- /dev/null +++ b/src/chemistry/pp_waccm_t4ma_mam5/mo_lin_matrix.F90 @@ -0,0 +1,458 @@ + module mo_lin_matrix + use chem_mods, only: veclen + private + public :: linmat + contains + subroutine linmat01( avec_len, mat, y, rxt, het_rates ) +!---------------------------------------------- +! ... linear matrix entries for implicit species +!---------------------------------------------- + use chem_mods, only : gas_pcnst, rxntot, nzcnt + use shr_kind_mod, only : r8 => shr_kind_r8 + implicit none +!---------------------------------------------- +! ... dummy arguments +!---------------------------------------------- + integer, intent(in) :: avec_len + real(r8), intent(in) :: y(veclen,gas_pcnst) + real(r8), intent(in) :: rxt(veclen,rxntot) + real(r8), intent(in) :: het_rates(veclen,gas_pcnst) + real(r8), intent(inout) :: mat(veclen,nzcnt) +!---------------------------------------------- +! ... local variables +!---------------------------------------------- + integer :: k + do k = 1,avec_len + mat(k,1) = -( het_rates(k,1) ) + mat(k,2) = -( het_rates(k,2) ) + mat(k,32) = -( het_rates(k,3) ) + mat(k,876) = -( het_rates(k,4) ) + mat(k,105) = rxt(k,47) + mat(k,930) = rxt(k,48) + mat(k,296) = rxt(k,50) + mat(k,73) = rxt(k,52) + mat(k,79) = rxt(k,53) + mat(k,248) = 2.000_r8*rxt(k,59) + mat(k,327) = rxt(k,60) + mat(k,223) = 3.000_r8*rxt(k,63) + mat(k,43) = 2.000_r8*rxt(k,71) + mat(k,434) = rxt(k,72) + mat(k,388) = rxt(k,78) + mat(k,104) = -( rxt(k,47) + het_rates(k,5) ) + mat(k,932) = -( rxt(k,48) + het_rates(k,6) ) + mat(k,297) = rxt(k,49) + mat(k,294) = -( rxt(k,49) + rxt(k,50) + rxt(k,393) + rxt(k,396) + rxt(k,401) & + + het_rates(k,7) ) + mat(k,3) = -( het_rates(k,8) ) + mat(k,239) = -( het_rates(k,9) ) + mat(k,424) = -( het_rates(k,10) ) + mat(k,126) = -( het_rates(k,11) ) + mat(k,168) = -( rxt(k,20) + het_rates(k,12) ) + mat(k,157) = -( het_rates(k,13) ) + mat(k,623) = -( het_rates(k,14) ) + mat(k,739) = .700_r8*rxt(k,40) + mat(k,460) = -( het_rates(k,15) ) + mat(k,203) = -( rxt(k,21) + het_rates(k,16) ) + mat(k,49) = -( het_rates(k,17) ) + mat(k,38) = -( rxt(k,51) + het_rates(k,18) ) + mat(k,71) = -( rxt(k,52) + het_rates(k,19) ) + mat(k,76) = -( rxt(k,53) + het_rates(k,20) ) + mat(k,53) = -( rxt(k,54) + het_rates(k,21) ) + mat(k,81) = -( rxt(k,55) + het_rates(k,22) ) + mat(k,57) = -( rxt(k,56) + het_rates(k,23) ) + mat(k,86) = -( rxt(k,57) + het_rates(k,24) ) + mat(k,61) = -( rxt(k,58) + het_rates(k,25) ) + mat(k,246) = -( rxt(k,59) + het_rates(k,26) ) + mat(k,1021) = -( rxt(k,22) + rxt(k,23) + het_rates(k,27) ) + mat(k,210) = rxt(k,28) + mat(k,1523) = .180_r8*rxt(k,29) + mat(k,610) = rxt(k,33) + mat(k,616) = rxt(k,35) + mat(k,271) = .690_r8*rxt(k,36) + mat(k,660) = 1.340_r8*rxt(k,37) + mat(k,201) = rxt(k,41) + mat(k,588) = rxt(k,42) + mat(k,290) = rxt(k,44) + mat(k,218) = rxt(k,45) + mat(k,230) = 2.000_r8*rxt(k,293) + mat(k,325) = -( rxt(k,60) + het_rates(k,28) ) + mat(k,45) = -( rxt(k,61) + het_rates(k,29) ) + mat(k,640) = -( rxt(k,24) + het_rates(k,30) ) + mat(k,170) = rxt(k,20) + mat(k,289) = rxt(k,44) + mat(k,189) = -( rxt(k,62) + het_rates(k,31) ) + mat(k,793) = -( het_rates(k,32) ) + mat(k,396) = rxt(k,25) + mat(k,684) = rxt(k,26) + mat(k,615) = rxt(k,35) + mat(k,658) = 1.340_r8*rxt(k,37) + mat(k,746) = .300_r8*rxt(k,40) + mat(k,199) = rxt(k,41) + mat(k,275) = .600_r8*rxt(k,43) + rxt(k,300) + mat(k,217) = rxt(k,45) + mat(k,394) = -( rxt(k,25) + het_rates(k,33) ) + mat(k,204) = .820_r8*rxt(k,21) + mat(k,683) = -( rxt(k,26) + het_rates(k,34) ) + mat(k,353) = -( het_rates(k,35) ) + mat(k,318) = -( rxt(k,27) + het_rates(k,36) ) + mat(k,1194) = -( het_rates(k,37) ) + mat(k,645) = rxt(k,24) + mat(k,397) = rxt(k,25) + mat(k,322) = rxt(k,27) + mat(k,1527) = rxt(k,30) + mat(k,754) = .300_r8*rxt(k,40) + mat(k,279) = .400_r8*rxt(k,43) + mat(k,329) = rxt(k,60) + mat(k,193) = rxt(k,62) + mat(k,282) = -( het_rates(k,38) ) + mat(k,209) = -( rxt(k,28) + het_rates(k,39) ) + mat(k,1534) = -( rxt(k,29) + rxt(k,30) + het_rates(k,40) ) + mat(k,221) = -( rxt(k,63) + het_rates(k,41) ) + mat(k,1323) = -( het_rates(k,42) ) + mat(k,106) = rxt(k,47) + mat(k,40) = 4.000_r8*rxt(k,51) + mat(k,75) = rxt(k,52) + mat(k,56) = 2.000_r8*rxt(k,54) + mat(k,85) = 2.000_r8*rxt(k,55) + mat(k,60) = 2.000_r8*rxt(k,56) + mat(k,90) = rxt(k,57) + mat(k,64) = 2.000_r8*rxt(k,58) + mat(k,46) = 3.000_r8*rxt(k,61) + mat(k,194) = rxt(k,62) + mat(k,92) = 2.000_r8*rxt(k,64) + mat(k,31) = 2.000_r8*rxt(k,65) + mat(k,968) = rxt(k,66) + mat(k,579) = rxt(k,67) + mat(k,115) = rxt(k,70) + mat(k,110) = rxt(k,73) + mat(k,120) = rxt(k,74) + mat(k,145) = rxt(k,75) + mat(k,868) = rxt(k,76) + mat(k,454) = rxt(k,79) + mat(k,91) = -( rxt(k,64) + het_rates(k,43) ) + mat(k,29) = -( rxt(k,65) + rxt(k,214) + het_rates(k,44) ) + mat(k,959) = -( rxt(k,66) + het_rates(k,45) ) + mat(k,575) = rxt(k,68) + mat(k,176) = rxt(k,80) + mat(k,30) = 2.000_r8*rxt(k,214) + mat(k,573) = -( rxt(k,67) + rxt(k,68) + rxt(k,395) + rxt(k,400) + rxt(k,406) & + + het_rates(k,46) ) + mat(k,4) = -( het_rates(k,47) ) + mat(k,649) = -( het_rates(k,48) ) + mat(k,1012) = rxt(k,22) + rxt(k,23) + mat(k,641) = rxt(k,24) + mat(k,682) = rxt(k,26) + mat(k,1514) = .380_r8*rxt(k,29) + mat(k,814) = rxt(k,31) + rxt(k,82) + mat(k,608) = rxt(k,33) + mat(k,366) = 2.000_r8*rxt(k,34) + mat(k,653) = 1.340_r8*rxt(k,38) + mat(k,741) = .700_r8*rxt(k,40) + mat(k,585) = rxt(k,42) + mat(k,184) = rxt(k,109) + mat(k,815) = -( rxt(k,31) + rxt(k,82) + het_rates(k,49) ) + mat(k,320) = rxt(k,27) + mat(k,1515) = .440_r8*rxt(k,29) + mat(k,276) = .400_r8*rxt(k,43) + mat(k,101) = -( rxt(k,69) + het_rates(k,50) ) + mat(k,72) = rxt(k,52) + mat(k,77) = rxt(k,53) + mat(k,82) = rxt(k,55) + mat(k,58) = 2.000_r8*rxt(k,56) + mat(k,87) = 2.000_r8*rxt(k,57) + mat(k,62) = rxt(k,58) + mat(k,42) = 2.000_r8*rxt(k,71) + mat(k,116) = rxt(k,74) + mat(k,141) = rxt(k,75) + mat(k,112) = -( rxt(k,70) + het_rates(k,51) ) + mat(k,54) = rxt(k,54) + mat(k,83) = rxt(k,55) + mat(k,108) = rxt(k,73) + mat(k,135) = -( het_rates(k,52) ) + mat(k,5) = -( het_rates(k,53) ) + mat(k,6) = -( het_rates(k,54) ) + mat(k,7) = -( het_rates(k,55) ) + mat(k,227) = -( rxt(k,293) + het_rates(k,56) ) + mat(k,66) = rxt(k,32) + mat(k,377) = -( het_rates(k,57) ) + mat(k,65) = -( rxt(k,32) + het_rates(k,58) ) + mat(k,490) = -( het_rates(k,59) ) + mat(k,78) = rxt(k,53) + mat(k,88) = rxt(k,57) + mat(k,102) = 2.000_r8*rxt(k,69) + mat(k,113) = rxt(k,70) + mat(k,149) = rxt(k,77) + mat(k,607) = -( rxt(k,33) + het_rates(k,60) ) + mat(k,365) = -( rxt(k,34) + het_rates(k,61) ) + mat(k,1556) = -( het_rates(k,62) ) + mat(k,1583) = rxt(k,2) + 2.000_r8*rxt(k,3) + mat(k,1033) = 2.000_r8*rxt(k,22) + mat(k,213) = rxt(k,28) + mat(k,1535) = .330_r8*rxt(k,29) + rxt(k,30) + mat(k,439) = rxt(k,72) + mat(k,871) = rxt(k,76) + mat(k,150) = rxt(k,77) + mat(k,826) = -( het_rates(k,63) ) + mat(k,1563) = rxt(k,1) + mat(k,1014) = rxt(k,23) + mat(k,1516) = 1.440_r8*rxt(k,29) + mat(k,41) = -( rxt(k,71) + het_rates(k,64) ) + mat(k,311) = -( rxt(k,4) + het_rates(k,65) ) + mat(k,68) = -( rxt(k,108) + het_rates(k,66) ) + mat(k,433) = -( rxt(k,72) + het_rates(k,67) ) + mat(k,107) = -( rxt(k,73) + het_rates(k,68) ) + mat(k,117) = -( rxt(k,74) + het_rates(k,69) ) + mat(k,142) = -( rxt(k,75) + het_rates(k,70) ) + mat(k,860) = -( rxt(k,76) + het_rates(k,71) ) + mat(k,148) = -( rxt(k,77) + het_rates(k,72) ) + mat(k,1152) = -( rxt(k,9) + het_rates(k,73) ) + mat(k,153) = 2.000_r8*rxt(k,385) + 2.000_r8*rxt(k,391) + 2.000_r8*rxt(k,394) & + + 2.000_r8*rxt(k,405) + mat(k,1000) = .500_r8*rxt(k,387) + mat(k,1239) = rxt(k,388) + mat(k,590) = rxt(k,389) + mat(k,299) = rxt(k,393) + rxt(k,396) + rxt(k,401) + mat(k,577) = rxt(k,395) + rxt(k,400) + rxt(k,406) + mat(k,232) = -( rxt(k,10) + rxt(k,11) + rxt(k,177) + het_rates(k,74) ) + mat(k,386) = -( rxt(k,78) + het_rates(k,75) ) + mat(k,295) = rxt(k,393) + rxt(k,396) + rxt(k,401) + mat(k,451) = -( rxt(k,79) + het_rates(k,76) ) + mat(k,572) = rxt(k,395) + rxt(k,400) + rxt(k,406) + mat(k,613) = -( rxt(k,35) + het_rates(k,77) ) + mat(k,178) = -( het_rates(k,78) ) + mat(k,473) = -( het_rates(k,79) ) + mat(k,411) = -( het_rates(k,80) ) + mat(k,702) = -( het_rates(k,81) ) + mat(k,266) = -( rxt(k,36) + het_rates(k,82) ) + end do + end subroutine linmat01 + subroutine linmat02( avec_len, mat, y, rxt, het_rates ) +!---------------------------------------------- +! ... linear matrix entries for implicit species +!---------------------------------------------- + use chem_mods, only : gas_pcnst, rxntot, nzcnt + use shr_kind_mod, only : r8 => shr_kind_r8 + implicit none +!---------------------------------------------- +! ... dummy arguments +!---------------------------------------------- + integer, intent(in) :: avec_len + real(r8), intent(in) :: y(veclen,gas_pcnst) + real(r8), intent(in) :: rxt(veclen,rxntot) + real(r8), intent(in) :: het_rates(veclen,gas_pcnst) + real(r8), intent(inout) :: mat(veclen,nzcnt) +!---------------------------------------------- +! ... local variables +!---------------------------------------------- + integer :: k + do k = 1,avec_len + mat(k,654) = -( rxt(k,37) + rxt(k,38) + het_rates(k,83) ) + mat(k,267) = .288_r8*rxt(k,36) + mat(k,726) = -( het_rates(k,84) ) + mat(k,163) = -( het_rates(k,85) ) + mat(k,765) = -( het_rates(k,86) ) + mat(k,657) = .660_r8*rxt(k,37) + mat(k,304) = rxt(k,39) + rxt(k,340) + mat(k,302) = -( rxt(k,39) + rxt(k,340) + het_rates(k,87) ) + mat(k,744) = -( rxt(k,40) + het_rates(k,88) ) + mat(k,270) = .402_r8*rxt(k,36) + mat(k,561) = -( rxt(k,83) + het_rates(k,89) ) + mat(k,1477) = rxt(k,16) + mat(k,505) = rxt(k,424) + mat(k,122) = -( rxt(k,12) + het_rates(k,90) ) + mat(k,151) = -( rxt(k,13) + rxt(k,14) + rxt(k,178) + rxt(k,385) + rxt(k,391) & + + rxt(k,394) + rxt(k,405) + het_rates(k,91) ) + mat(k,8) = -( het_rates(k,92) ) + mat(k,9) = -( het_rates(k,93) ) + mat(k,10) = -( het_rates(k,94) ) + mat(k,35) = -( het_rates(k,95) ) + mat(k,11) = -( rxt(k,386) + het_rates(k,96) ) + mat(k,1508) = -( rxt(k,15) + rxt(k,16) + het_rates(k,97) ) + mat(k,156) = rxt(k,14) + mat(k,1007) = rxt(k,17) + .500_r8*rxt(k,387) + mat(k,1246) = rxt(k,19) + mat(k,518) = rxt(k,421) + mat(k,259) = rxt(k,434) + mat(k,996) = -( rxt(k,17) + rxt(k,387) + het_rates(k,98) ) + mat(k,1148) = rxt(k,9) + mat(k,234) = rxt(k,11) + rxt(k,177) + mat(k,152) = rxt(k,13) + rxt(k,178) + mat(k,1235) = rxt(k,18) + mat(k,306) = rxt(k,39) + rxt(k,340) + mat(k,200) = rxt(k,41) + mat(k,587) = rxt(k,42) + mat(k,277) = .600_r8*rxt(k,43) + rxt(k,300) + mat(k,298) = rxt(k,49) + mat(k,576) = rxt(k,68) + mat(k,1241) = -( rxt(k,18) + rxt(k,19) + rxt(k,388) + het_rates(k,99) ) + mat(k,236) = rxt(k,10) + mat(k,154) = rxt(k,13) + rxt(k,14) + rxt(k,178) + mat(k,280) = .400_r8*rxt(k,43) + mat(k,300) = rxt(k,50) + mat(k,578) = rxt(k,67) + mat(k,197) = -( rxt(k,41) + het_rates(k,100) ) + mat(k,12) = -( het_rates(k,101) ) + mat(k,13) = -( het_rates(k,102) ) + mat(k,14) = -( het_rates(k,103) ) + mat(k,15) = -( het_rates(k,104) ) + mat(k,16) = -( het_rates(k,105) ) + mat(k,1459) = -( rxt(k,92) + rxt(k,93) + rxt(k,94) + rxt(k,95) + rxt(k,96) & + + rxt(k,97) + het_rates(k,106) ) + mat(k,1580) = rxt(k,3) + mat(k,919) = rxt(k,5) + 2.000_r8*rxt(k,6) + rxt(k,98) + 2.000_r8*rxt(k,99) & + + rxt(k,100) + rxt(k,101) + rxt(k,103) + 2.000_r8*rxt(k,104) & + + rxt(k,105) + rxt(k,106) + mat(k,1135) = rxt(k,8) + mat(k,155) = rxt(k,14) + mat(k,1507) = rxt(k,16) + mat(k,1006) = rxt(k,17) + mat(k,1245) = rxt(k,18) + mat(k,1532) = .180_r8*rxt(k,29) + mat(k,821) = rxt(k,31) + rxt(k,82) + mat(k,943) = rxt(k,48) + mat(k,970) = rxt(k,66) + mat(k,177) = rxt(k,80) + mat(k,851) = rxt(k,110) + mat(k,552) = rxt(k,111) + mat(k,133) = rxt(k,112) + mat(k,1287) = rxt(k,119) + mat(k,265) = rxt(k,428) + mat(k,258) = rxt(k,433) + mat(k,909) = -( rxt(k,5) + rxt(k,6) + rxt(k,98) + rxt(k,99) + rxt(k,100) & + + rxt(k,101) + rxt(k,102) + rxt(k,103) + rxt(k,104) + rxt(k,105) & + + rxt(k,106) + rxt(k,107) + het_rates(k,107) ) + mat(k,1122) = rxt(k,8) + mat(k,1232) = rxt(k,19) + mat(k,94) = rxt(k,115) + rxt(k,124) + mat(k,97) = rxt(k,116) + mat(k,1128) = -( rxt(k,7) + rxt(k,8) + het_rates(k,108) ) + mat(k,173) = -( rxt(k,80) + het_rates(k,109) ) + mat(k,181) = -( rxt(k,109) + het_rates(k,110) ) + mat(k,1413) = -( het_rates(k,111) ) + mat(k,1579) = rxt(k,2) + mat(k,315) = 2.000_r8*rxt(k,4) + mat(k,1157) = rxt(k,9) + mat(k,237) = rxt(k,10) + mat(k,172) = rxt(k,20) + mat(k,207) = rxt(k,21) + mat(k,323) = rxt(k,27) + mat(k,212) = rxt(k,28) + mat(k,1531) = .330_r8*rxt(k,29) + mat(k,67) = rxt(k,32) + mat(k,292) = rxt(k,44) + mat(k,219) = rxt(k,45) + mat(k,100) = rxt(k,46) + mat(k,391) = rxt(k,78) + mat(k,455) = rxt(k,79) + mat(k,1005) = .500_r8*rxt(k,387) + mat(k,584) = -( rxt(k,42) + rxt(k,389) + het_rates(k,112) ) + mat(k,274) = -( rxt(k,43) + rxt(k,300) + het_rates(k,113) ) + mat(k,401) = -( het_rates(k,114) ) + mat(k,17) = -( het_rates(k,115) ) + mat(k,18) = -( het_rates(k,116) ) + mat(k,286) = -( rxt(k,44) + het_rates(k,117) ) + mat(k,595) = -( het_rates(k,118) ) + mat(k,215) = -( rxt(k,45) + het_rates(k,119) ) + mat(k,358) = -( het_rates(k,120) ) + mat(k,182) = rxt(k,109) + mat(k,839) = rxt(k,110) + mat(k,19) = -( rxt(k,81) + het_rates(k,121) ) + mat(k,841) = -( rxt(k,110) + het_rates(k,122) ) + mat(k,549) = rxt(k,111) + mat(k,548) = -( rxt(k,111) + het_rates(k,123) ) + mat(k,132) = rxt(k,112) + mat(k,131) = -( rxt(k,112) + het_rates(k,124) ) + mat(k,69) = rxt(k,108) + mat(k,20) = -( het_rates(k,125) ) + mat(k,21) = -( het_rates(k,126) ) + mat(k,22) = -( het_rates(k,127) ) + mat(k,23) = -( het_rates(k,128) ) + mat(k,24) = -( rxt(k,113) + het_rates(k,129) ) + mat(k,25) = -( rxt(k,114) + het_rates(k,130) ) + mat(k,26) = -( rxt(k,390) + het_rates(k,131) ) + mat(k,28) = -( het_rates(k,132) ) + mat(k,27) = rxt(k,390) + mat(k,343) = -( het_rates(k,133) ) + mat(k,671) = -( het_rates(k,134) ) + mat(k,98) = -( rxt(k,46) + het_rates(k,135) ) + mat(k,526) = -( het_rates(k,138) ) + mat(k,1475) = rxt(k,15) + mat(k,559) = rxt(k,83) + mat(k,1435) = rxt(k,92) + rxt(k,93) + rxt(k,94) + rxt(k,95) + rxt(k,96) & + + rxt(k,97) + mat(k,900) = rxt(k,98) + rxt(k,100) + rxt(k,101) + rxt(k,102) + rxt(k,103) & + + rxt(k,105) + rxt(k,106) + rxt(k,107) + mat(k,1081) = -( rxt(k,384) + het_rates(k,139) ) + mat(k,235) = rxt(k,11) + rxt(k,177) + mat(k,171) = rxt(k,20) + mat(k,206) = rxt(k,21) + mat(k,643) = rxt(k,24) + mat(k,686) = rxt(k,26) + mat(k,611) = 2.000_r8*rxt(k,33) + mat(k,368) = 2.000_r8*rxt(k,34) + mat(k,617) = rxt(k,35) + mat(k,272) = rxt(k,36) + mat(k,661) = 1.340_r8*rxt(k,37) + .660_r8*rxt(k,38) + mat(k,589) = rxt(k,42) + mat(k,291) = rxt(k,44) + mat(k,231) = rxt(k,293) + mat(k,539) = -( het_rates(k,140) ) + mat(k,334) = -( het_rates(k,141) ) + mat(k,261) = rxt(k,428) + mat(k,255) = rxt(k,433) + mat(k,370) = -( het_rates(k,142) ) + mat(k,1467) = rxt(k,15) + mat(k,510) = rxt(k,421) + mat(k,499) = rxt(k,424) + mat(k,442) = -( het_rates(k,143) ) + mat(k,556) = rxt(k,83) + mat(k,256) = rxt(k,434) + mat(k,1284) = -( rxt(k,119) + het_rates(k,144) ) + mat(k,1577) = rxt(k,1) + mat(k,916) = rxt(k,5) + mat(k,1132) = rxt(k,7) + mat(k,124) = rxt(k,12) + mat(k,93) = -( rxt(k,115) + rxt(k,124) + het_rates(k,145) ) + mat(k,1094) = rxt(k,7) + mat(k,95) = rxt(k,128) + mat(k,96) = -( rxt(k,116) + rxt(k,128) + het_rates(k,146) ) + mat(k,511) = -( rxt(k,421) + het_rates(k,147) ) + mat(k,899) = rxt(k,102) + rxt(k,107) + mat(k,501) = -( rxt(k,424) + het_rates(k,148) ) + mat(k,1433) = rxt(k,93) + rxt(k,97) + mat(k,898) = rxt(k,103) + rxt(k,106) + mat(k,257) = rxt(k,408) + mat(k,262) = rxt(k,409) + mat(k,260) = -( rxt(k,409) + rxt(k,428) + het_rates(k,149) ) + mat(k,1423) = rxt(k,94) + rxt(k,95) + mat(k,893) = rxt(k,98) + rxt(k,100) + mat(k,254) = rxt(k,410) + mat(k,253) = -( rxt(k,408) + rxt(k,410) + rxt(k,433) + rxt(k,434) & + + het_rates(k,150) ) + mat(k,1422) = rxt(k,92) + rxt(k,96) + mat(k,892) = rxt(k,101) + rxt(k,105) + mat(k,1584) = -( rxt(k,1) + rxt(k,2) + rxt(k,3) + het_rates(k,151) ) + mat(k,1536) = .050_r8*rxt(k,29) + mat(k,70) = rxt(k,108) + mat(k,1093) = rxt(k,384) + end do + end subroutine linmat02 + subroutine linmat( avec_len, mat, y, rxt, het_rates ) +!---------------------------------------------- +! ... linear matrix entries for implicit species +!---------------------------------------------- + use chem_mods, only : gas_pcnst, rxntot, nzcnt + use shr_kind_mod, only : r8 => shr_kind_r8 + implicit none +!---------------------------------------------- +! ... dummy arguments +!---------------------------------------------- + integer, intent(in) :: avec_len + real(r8), intent(in) :: y(veclen,gas_pcnst) + real(r8), intent(in) :: rxt(veclen,rxntot) + real(r8), intent(in) :: het_rates(veclen,gas_pcnst) + real(r8), intent(inout) :: mat(veclen,nzcnt) + call linmat01( avec_len, mat, y, rxt, het_rates ) + call linmat02( avec_len, mat, y, rxt, het_rates ) + end subroutine linmat + end module mo_lin_matrix diff --git a/src/chemistry/pp_waccm_t4ma_mam5/mo_lu_factor.F90 b/src/chemistry/pp_waccm_t4ma_mam5/mo_lu_factor.F90 new file mode 100644 index 0000000000..1789370893 --- /dev/null +++ b/src/chemistry/pp_waccm_t4ma_mam5/mo_lu_factor.F90 @@ -0,0 +1,6490 @@ + module mo_lu_factor + use chem_mods, only: veclen + private + public :: lu_fac + contains + subroutine lu_fac01( avec_len, lu ) + use chem_mods, only : nzcnt + use shr_kind_mod, only : r8 => shr_kind_r8 + implicit none +!----------------------------------------------------------------------- +! ... dummy args +!----------------------------------------------------------------------- + integer, intent(in) :: avec_len + real(r8), intent(inout) :: lu(veclen,nzcnt) +!----------------------------------------------------------------------- +! ... local variables +!----------------------------------------------------------------------- + integer :: k + do k = 1,avec_len + lu(k,1) = 1._r8 / lu(k,1) + lu(k,2) = 1._r8 / lu(k,2) + lu(k,3) = 1._r8 / lu(k,3) + lu(k,4) = 1._r8 / lu(k,4) + lu(k,5) = 1._r8 / lu(k,5) + lu(k,6) = 1._r8 / lu(k,6) + lu(k,7) = 1._r8 / lu(k,7) + lu(k,8) = 1._r8 / lu(k,8) + lu(k,9) = 1._r8 / lu(k,9) + lu(k,10) = 1._r8 / lu(k,10) + lu(k,11) = 1._r8 / lu(k,11) + lu(k,12) = 1._r8 / lu(k,12) + lu(k,13) = 1._r8 / lu(k,13) + lu(k,14) = 1._r8 / lu(k,14) + lu(k,15) = 1._r8 / lu(k,15) + lu(k,16) = 1._r8 / lu(k,16) + lu(k,17) = 1._r8 / lu(k,17) + lu(k,18) = 1._r8 / lu(k,18) + lu(k,19) = 1._r8 / lu(k,19) + lu(k,20) = 1._r8 / lu(k,20) + lu(k,21) = 1._r8 / lu(k,21) + lu(k,22) = 1._r8 / lu(k,22) + lu(k,23) = 1._r8 / lu(k,23) + lu(k,24) = 1._r8 / lu(k,24) + lu(k,25) = 1._r8 / lu(k,25) + lu(k,26) = 1._r8 / lu(k,26) + lu(k,27) = lu(k,27) * lu(k,26) + lu(k,28) = 1._r8 / lu(k,28) + lu(k,29) = 1._r8 / lu(k,29) + lu(k,30) = lu(k,30) * lu(k,29) + lu(k,31) = lu(k,31) * lu(k,29) + lu(k,959) = lu(k,959) - lu(k,30) * lu(k,947) + lu(k,968) = lu(k,968) - lu(k,31) * lu(k,947) + lu(k,32) = 1._r8 / lu(k,32) + lu(k,33) = lu(k,33) * lu(k,32) + lu(k,34) = lu(k,34) * lu(k,32) + lu(k,1375) = lu(k,1375) - lu(k,33) * lu(k,1330) + lu(k,1413) = lu(k,1413) - lu(k,34) * lu(k,1330) + lu(k,35) = 1._r8 / lu(k,35) + lu(k,36) = lu(k,36) * lu(k,35) + lu(k,37) = lu(k,37) * lu(k,35) + lu(k,1413) = lu(k,1413) - lu(k,36) * lu(k,1331) + lu(k,1418) = lu(k,1418) - lu(k,37) * lu(k,1331) + lu(k,38) = 1._r8 / lu(k,38) + lu(k,39) = lu(k,39) * lu(k,38) + lu(k,40) = lu(k,40) * lu(k,38) + lu(k,1284) = lu(k,1284) - lu(k,39) * lu(k,1250) + lu(k,1285) = lu(k,1285) - lu(k,40) * lu(k,1250) + lu(k,41) = 1._r8 / lu(k,41) + lu(k,42) = lu(k,42) * lu(k,41) + lu(k,43) = lu(k,43) * lu(k,41) + lu(k,44) = lu(k,44) * lu(k,41) + lu(k,1260) = lu(k,1260) - lu(k,42) * lu(k,1251) + lu(k,1273) = lu(k,1273) - lu(k,43) * lu(k,1251) + lu(k,1284) = lu(k,1284) - lu(k,44) * lu(k,1251) + lu(k,45) = 1._r8 / lu(k,45) + lu(k,46) = lu(k,46) * lu(k,45) + lu(k,47) = lu(k,47) * lu(k,45) + lu(k,48) = lu(k,48) * lu(k,45) + lu(k,1412) = lu(k,1412) - lu(k,46) * lu(k,1332) + lu(k,1413) = lu(k,1413) - lu(k,47) * lu(k,1332) + lu(k,1418) = lu(k,1418) - lu(k,48) * lu(k,1332) + lu(k,49) = 1._r8 / lu(k,49) + lu(k,50) = lu(k,50) * lu(k,49) + lu(k,51) = lu(k,51) * lu(k,49) + lu(k,52) = lu(k,52) * lu(k,49) + lu(k,1375) = lu(k,1375) - lu(k,50) * lu(k,1333) + lu(k,1413) = lu(k,1413) - lu(k,51) * lu(k,1333) + lu(k,1418) = lu(k,1418) - lu(k,52) * lu(k,1333) + end do + end subroutine lu_fac01 + subroutine lu_fac02( avec_len, lu ) + use chem_mods, only : nzcnt + use shr_kind_mod, only : r8 => shr_kind_r8 + implicit none +!----------------------------------------------------------------------- +! ... dummy args +!----------------------------------------------------------------------- + integer, intent(in) :: avec_len + real(r8), intent(inout) :: lu(veclen,nzcnt) +!----------------------------------------------------------------------- +! ... local variables +!----------------------------------------------------------------------- + integer :: k + do k = 1,avec_len + lu(k,53) = 1._r8 / lu(k,53) + lu(k,54) = lu(k,54) * lu(k,53) + lu(k,55) = lu(k,55) * lu(k,53) + lu(k,56) = lu(k,56) * lu(k,53) + lu(k,1262) = lu(k,1262) - lu(k,54) * lu(k,1252) + lu(k,1284) = lu(k,1284) - lu(k,55) * lu(k,1252) + lu(k,1285) = lu(k,1285) - lu(k,56) * lu(k,1252) + lu(k,57) = 1._r8 / lu(k,57) + lu(k,58) = lu(k,58) * lu(k,57) + lu(k,59) = lu(k,59) * lu(k,57) + lu(k,60) = lu(k,60) * lu(k,57) + lu(k,1260) = lu(k,1260) - lu(k,58) * lu(k,1253) + lu(k,1284) = lu(k,1284) - lu(k,59) * lu(k,1253) + lu(k,1285) = lu(k,1285) - lu(k,60) * lu(k,1253) + lu(k,61) = 1._r8 / lu(k,61) + lu(k,62) = lu(k,62) * lu(k,61) + lu(k,63) = lu(k,63) * lu(k,61) + lu(k,64) = lu(k,64) * lu(k,61) + lu(k,1260) = lu(k,1260) - lu(k,62) * lu(k,1254) + lu(k,1284) = lu(k,1284) - lu(k,63) * lu(k,1254) + lu(k,1285) = lu(k,1285) - lu(k,64) * lu(k,1254) + lu(k,65) = 1._r8 / lu(k,65) + lu(k,66) = lu(k,66) * lu(k,65) + lu(k,67) = lu(k,67) * lu(k,65) + lu(k,376) = lu(k,376) - lu(k,66) * lu(k,375) + lu(k,383) = - lu(k,67) * lu(k,375) + lu(k,1042) = - lu(k,66) * lu(k,1035) + lu(k,1088) = lu(k,1088) - lu(k,67) * lu(k,1035) + lu(k,68) = 1._r8 / lu(k,68) + lu(k,69) = lu(k,69) * lu(k,68) + lu(k,70) = lu(k,70) * lu(k,68) + lu(k,131) = lu(k,131) - lu(k,69) * lu(k,130) + lu(k,134) = lu(k,134) - lu(k,70) * lu(k,130) + lu(k,1559) = lu(k,1559) - lu(k,69) * lu(k,1558) + lu(k,1584) = lu(k,1584) - lu(k,70) * lu(k,1558) + lu(k,71) = 1._r8 / lu(k,71) + lu(k,72) = lu(k,72) * lu(k,71) + lu(k,73) = lu(k,73) * lu(k,71) + lu(k,74) = lu(k,74) * lu(k,71) + lu(k,75) = lu(k,75) * lu(k,71) + lu(k,1260) = lu(k,1260) - lu(k,72) * lu(k,1255) + lu(k,1273) = lu(k,1273) - lu(k,73) * lu(k,1255) + lu(k,1284) = lu(k,1284) - lu(k,74) * lu(k,1255) + lu(k,1285) = lu(k,1285) - lu(k,75) * lu(k,1255) + lu(k,76) = 1._r8 / lu(k,76) + lu(k,77) = lu(k,77) * lu(k,76) + lu(k,78) = lu(k,78) * lu(k,76) + lu(k,79) = lu(k,79) * lu(k,76) + lu(k,80) = lu(k,80) * lu(k,76) + lu(k,1260) = lu(k,1260) - lu(k,77) * lu(k,1256) + lu(k,1270) = lu(k,1270) - lu(k,78) * lu(k,1256) + lu(k,1273) = lu(k,1273) - lu(k,79) * lu(k,1256) + lu(k,1284) = lu(k,1284) - lu(k,80) * lu(k,1256) + lu(k,81) = 1._r8 / lu(k,81) + lu(k,82) = lu(k,82) * lu(k,81) + lu(k,83) = lu(k,83) * lu(k,81) + lu(k,84) = lu(k,84) * lu(k,81) + lu(k,85) = lu(k,85) * lu(k,81) + lu(k,1260) = lu(k,1260) - lu(k,82) * lu(k,1257) + lu(k,1262) = lu(k,1262) - lu(k,83) * lu(k,1257) + lu(k,1284) = lu(k,1284) - lu(k,84) * lu(k,1257) + lu(k,1285) = lu(k,1285) - lu(k,85) * lu(k,1257) + lu(k,86) = 1._r8 / lu(k,86) + lu(k,87) = lu(k,87) * lu(k,86) + lu(k,88) = lu(k,88) * lu(k,86) + lu(k,89) = lu(k,89) * lu(k,86) + lu(k,90) = lu(k,90) * lu(k,86) + lu(k,1260) = lu(k,1260) - lu(k,87) * lu(k,1258) + lu(k,1270) = lu(k,1270) - lu(k,88) * lu(k,1258) + lu(k,1284) = lu(k,1284) - lu(k,89) * lu(k,1258) + lu(k,1285) = lu(k,1285) - lu(k,90) * lu(k,1258) + lu(k,91) = 1._r8 / lu(k,91) + lu(k,92) = lu(k,92) * lu(k,91) + lu(k,454) = lu(k,454) - lu(k,92) * lu(k,450) + lu(k,579) = lu(k,579) - lu(k,92) * lu(k,571) + lu(k,868) = lu(k,868) - lu(k,92) * lu(k,855) + lu(k,968) = lu(k,968) - lu(k,92) * lu(k,948) + lu(k,1323) = lu(k,1323) - lu(k,92) * lu(k,1292) + lu(k,93) = 1._r8 / lu(k,93) + lu(k,94) = lu(k,94) * lu(k,93) + lu(k,97) = lu(k,97) - lu(k,94) * lu(k,95) + lu(k,816) = - lu(k,94) * lu(k,807) + lu(k,909) = lu(k,909) - lu(k,94) * lu(k,889) + lu(k,1122) = lu(k,1122) - lu(k,94) * lu(k,1094) + lu(k,1446) = lu(k,1446) - lu(k,94) * lu(k,1419) + lu(k,96) = 1._r8 / lu(k,96) + lu(k,97) = lu(k,97) * lu(k,96) + lu(k,816) = lu(k,816) - lu(k,97) * lu(k,808) + lu(k,909) = lu(k,909) - lu(k,97) * lu(k,890) + lu(k,1122) = lu(k,1122) - lu(k,97) * lu(k,1095) + lu(k,1274) = lu(k,1274) - lu(k,97) * lu(k,1259) + lu(k,1446) = lu(k,1446) - lu(k,97) * lu(k,1420) + lu(k,98) = 1._r8 / lu(k,98) + lu(k,99) = lu(k,99) * lu(k,98) + lu(k,100) = lu(k,100) * lu(k,98) + lu(k,671) = lu(k,671) - lu(k,99) * lu(k,665) + lu(k,680) = - lu(k,100) * lu(k,665) + lu(k,1065) = lu(k,1065) - lu(k,99) * lu(k,1036) + lu(k,1088) = lu(k,1088) - lu(k,100) * lu(k,1036) + lu(k,1389) = lu(k,1389) - lu(k,99) * lu(k,1334) + lu(k,1413) = lu(k,1413) - lu(k,100) * lu(k,1334) + end do + end subroutine lu_fac02 + subroutine lu_fac03( avec_len, lu ) + use chem_mods, only : nzcnt + use shr_kind_mod, only : r8 => shr_kind_r8 + implicit none +!----------------------------------------------------------------------- +! ... dummy args +!----------------------------------------------------------------------- + integer, intent(in) :: avec_len + real(r8), intent(inout) :: lu(veclen,nzcnt) +!----------------------------------------------------------------------- +! ... local variables +!----------------------------------------------------------------------- + integer :: k + do k = 1,avec_len + lu(k,101) = 1._r8 / lu(k,101) + lu(k,102) = lu(k,102) * lu(k,101) + lu(k,103) = lu(k,103) * lu(k,101) + lu(k,118) = - lu(k,102) * lu(k,116) + lu(k,119) = lu(k,119) - lu(k,103) * lu(k,116) + lu(k,143) = - lu(k,102) * lu(k,141) + lu(k,144) = lu(k,144) - lu(k,103) * lu(k,141) + lu(k,1270) = lu(k,1270) - lu(k,102) * lu(k,1260) + lu(k,1284) = lu(k,1284) - lu(k,103) * lu(k,1260) + lu(k,1377) = - lu(k,102) * lu(k,1335) + lu(k,1411) = - lu(k,103) * lu(k,1335) + lu(k,104) = 1._r8 / lu(k,104) + lu(k,105) = lu(k,105) * lu(k,104) + lu(k,106) = lu(k,106) * lu(k,104) + lu(k,388) = lu(k,388) - lu(k,105) * lu(k,385) + lu(k,390) = - lu(k,106) * lu(k,385) + lu(k,861) = - lu(k,105) * lu(k,856) + lu(k,868) = lu(k,868) - lu(k,106) * lu(k,856) + lu(k,930) = lu(k,930) - lu(k,105) * lu(k,923) + lu(k,941) = lu(k,941) - lu(k,106) * lu(k,923) + lu(k,956) = lu(k,956) - lu(k,105) * lu(k,949) + lu(k,968) = lu(k,968) - lu(k,106) * lu(k,949) + lu(k,107) = 1._r8 / lu(k,107) + lu(k,108) = lu(k,108) * lu(k,107) + lu(k,109) = lu(k,109) * lu(k,107) + lu(k,110) = lu(k,110) * lu(k,107) + lu(k,111) = lu(k,111) * lu(k,107) + lu(k,1262) = lu(k,1262) - lu(k,108) * lu(k,1261) + lu(k,1284) = lu(k,1284) - lu(k,109) * lu(k,1261) + lu(k,1285) = lu(k,1285) - lu(k,110) * lu(k,1261) + lu(k,1286) = lu(k,1286) - lu(k,111) * lu(k,1261) + lu(k,1337) = lu(k,1337) - lu(k,108) * lu(k,1336) + lu(k,1411) = lu(k,1411) - lu(k,109) * lu(k,1336) + lu(k,1412) = lu(k,1412) - lu(k,110) * lu(k,1336) + lu(k,1413) = lu(k,1413) - lu(k,111) * lu(k,1336) + lu(k,112) = 1._r8 / lu(k,112) + lu(k,113) = lu(k,113) * lu(k,112) + lu(k,114) = lu(k,114) * lu(k,112) + lu(k,115) = lu(k,115) * lu(k,112) + lu(k,1270) = lu(k,1270) - lu(k,113) * lu(k,1262) + lu(k,1284) = lu(k,1284) - lu(k,114) * lu(k,1262) + lu(k,1285) = lu(k,1285) - lu(k,115) * lu(k,1262) + lu(k,1377) = lu(k,1377) - lu(k,113) * lu(k,1337) + lu(k,1411) = lu(k,1411) - lu(k,114) * lu(k,1337) + lu(k,1412) = lu(k,1412) - lu(k,115) * lu(k,1337) + lu(k,117) = 1._r8 / lu(k,117) + lu(k,118) = lu(k,118) * lu(k,117) + lu(k,119) = lu(k,119) * lu(k,117) + lu(k,120) = lu(k,120) * lu(k,117) + lu(k,121) = lu(k,121) * lu(k,117) + lu(k,1270) = lu(k,1270) - lu(k,118) * lu(k,1263) + lu(k,1284) = lu(k,1284) - lu(k,119) * lu(k,1263) + lu(k,1285) = lu(k,1285) - lu(k,120) * lu(k,1263) + lu(k,1286) = lu(k,1286) - lu(k,121) * lu(k,1263) + lu(k,1377) = lu(k,1377) - lu(k,118) * lu(k,1338) + lu(k,1411) = lu(k,1411) - lu(k,119) * lu(k,1338) + lu(k,1412) = lu(k,1412) - lu(k,120) * lu(k,1338) + lu(k,1413) = lu(k,1413) - lu(k,121) * lu(k,1338) + lu(k,122) = 1._r8 / lu(k,122) + lu(k,123) = lu(k,123) * lu(k,122) + lu(k,124) = lu(k,124) * lu(k,122) + lu(k,125) = lu(k,125) * lu(k,122) + lu(k,564) = lu(k,564) - lu(k,123) * lu(k,554) + lu(k,566) = - lu(k,124) * lu(k,554) + lu(k,569) = lu(k,569) - lu(k,125) * lu(k,554) + lu(k,993) = lu(k,993) - lu(k,123) * lu(k,974) + lu(k,1003) = - lu(k,124) * lu(k,974) + lu(k,1007) = lu(k,1007) - lu(k,125) * lu(k,974) + lu(k,1274) = lu(k,1274) - lu(k,123) * lu(k,1264) + lu(k,1284) = lu(k,1284) - lu(k,124) * lu(k,1264) + lu(k,1288) = lu(k,1288) - lu(k,125) * lu(k,1264) + lu(k,126) = 1._r8 / lu(k,126) + lu(k,127) = lu(k,127) * lu(k,126) + lu(k,128) = lu(k,128) * lu(k,126) + lu(k,129) = lu(k,129) * lu(k,126) + lu(k,425) = lu(k,425) - lu(k,127) * lu(k,421) + lu(k,429) = lu(k,429) - lu(k,128) * lu(k,421) + lu(k,431) = - lu(k,129) * lu(k,421) + lu(k,1175) = lu(k,1175) - lu(k,127) * lu(k,1163) + lu(k,1191) = lu(k,1191) - lu(k,128) * lu(k,1163) + lu(k,1198) = - lu(k,129) * lu(k,1163) + lu(k,1386) = lu(k,1386) - lu(k,127) * lu(k,1339) + lu(k,1406) = lu(k,1406) - lu(k,128) * lu(k,1339) + lu(k,1413) = lu(k,1413) - lu(k,129) * lu(k,1339) + lu(k,131) = 1._r8 / lu(k,131) + lu(k,132) = lu(k,132) * lu(k,131) + lu(k,133) = lu(k,133) * lu(k,131) + lu(k,134) = lu(k,134) * lu(k,131) + lu(k,548) = lu(k,548) - lu(k,132) * lu(k,547) + lu(k,552) = lu(k,552) - lu(k,133) * lu(k,547) + lu(k,553) = - lu(k,134) * lu(k,547) + lu(k,1378) = lu(k,1378) - lu(k,132) * lu(k,1340) + lu(k,1414) = lu(k,1414) - lu(k,133) * lu(k,1340) + lu(k,1418) = lu(k,1418) - lu(k,134) * lu(k,1340) + lu(k,1562) = - lu(k,132) * lu(k,1559) + lu(k,1580) = lu(k,1580) - lu(k,133) * lu(k,1559) + lu(k,1584) = lu(k,1584) - lu(k,134) * lu(k,1559) + lu(k,135) = 1._r8 / lu(k,135) + lu(k,136) = lu(k,136) * lu(k,135) + lu(k,137) = lu(k,137) * lu(k,135) + lu(k,138) = lu(k,138) * lu(k,135) + lu(k,139) = lu(k,139) * lu(k,135) + lu(k,140) = lu(k,140) * lu(k,135) + lu(k,1213) = lu(k,1213) - lu(k,136) * lu(k,1204) + lu(k,1237) = lu(k,1237) - lu(k,137) * lu(k,1204) + lu(k,1239) = lu(k,1239) - lu(k,138) * lu(k,1204) + lu(k,1241) = lu(k,1241) - lu(k,139) * lu(k,1204) + lu(k,1244) = lu(k,1244) - lu(k,140) * lu(k,1204) + lu(k,1378) = lu(k,1378) - lu(k,136) * lu(k,1341) + lu(k,1406) = lu(k,1406) - lu(k,137) * lu(k,1341) + lu(k,1408) = lu(k,1408) - lu(k,138) * lu(k,1341) + lu(k,1410) = lu(k,1410) - lu(k,139) * lu(k,1341) + lu(k,1413) = lu(k,1413) - lu(k,140) * lu(k,1341) + lu(k,142) = 1._r8 / lu(k,142) + lu(k,143) = lu(k,143) * lu(k,142) + lu(k,144) = lu(k,144) * lu(k,142) + lu(k,145) = lu(k,145) * lu(k,142) + lu(k,146) = lu(k,146) * lu(k,142) + lu(k,147) = lu(k,147) * lu(k,142) + lu(k,1270) = lu(k,1270) - lu(k,143) * lu(k,1265) + lu(k,1284) = lu(k,1284) - lu(k,144) * lu(k,1265) + lu(k,1285) = lu(k,1285) - lu(k,145) * lu(k,1265) + lu(k,1286) = lu(k,1286) - lu(k,146) * lu(k,1265) + lu(k,1291) = lu(k,1291) - lu(k,147) * lu(k,1265) + lu(k,1377) = lu(k,1377) - lu(k,143) * lu(k,1342) + lu(k,1411) = lu(k,1411) - lu(k,144) * lu(k,1342) + lu(k,1412) = lu(k,1412) - lu(k,145) * lu(k,1342) + lu(k,1413) = lu(k,1413) - lu(k,146) * lu(k,1342) + lu(k,1418) = lu(k,1418) - lu(k,147) * lu(k,1342) + end do + end subroutine lu_fac03 + subroutine lu_fac04( avec_len, lu ) + use chem_mods, only : nzcnt + use shr_kind_mod, only : r8 => shr_kind_r8 + implicit none +!----------------------------------------------------------------------- +! ... dummy args +!----------------------------------------------------------------------- + integer, intent(in) :: avec_len + real(r8), intent(inout) :: lu(veclen,nzcnt) +!----------------------------------------------------------------------- +! ... local variables +!----------------------------------------------------------------------- + integer :: k + do k = 1,avec_len + lu(k,148) = 1._r8 / lu(k,148) + lu(k,149) = lu(k,149) * lu(k,148) + lu(k,150) = lu(k,150) * lu(k,148) + lu(k,490) = lu(k,490) - lu(k,149) * lu(k,489) + lu(k,497) = lu(k,497) - lu(k,150) * lu(k,489) + lu(k,825) = lu(k,825) - lu(k,149) * lu(k,824) + lu(k,836) = lu(k,836) - lu(k,150) * lu(k,824) + lu(k,1141) = lu(k,1141) - lu(k,149) * lu(k,1140) + lu(k,1161) = - lu(k,150) * lu(k,1140) + lu(k,1513) = lu(k,1513) - lu(k,149) * lu(k,1512) + lu(k,1535) = lu(k,1535) - lu(k,150) * lu(k,1512) + lu(k,1561) = lu(k,1561) - lu(k,149) * lu(k,1560) + lu(k,1583) = lu(k,1583) - lu(k,150) * lu(k,1560) + lu(k,151) = 1._r8 / lu(k,151) + lu(k,152) = lu(k,152) * lu(k,151) + lu(k,153) = lu(k,153) * lu(k,151) + lu(k,154) = lu(k,154) * lu(k,151) + lu(k,155) = lu(k,155) * lu(k,151) + lu(k,156) = lu(k,156) * lu(k,151) + lu(k,996) = lu(k,996) - lu(k,152) * lu(k,975) + lu(k,1000) = lu(k,1000) - lu(k,153) * lu(k,975) + lu(k,1002) = lu(k,1002) - lu(k,154) * lu(k,975) + lu(k,1006) = lu(k,1006) - lu(k,155) * lu(k,975) + lu(k,1007) = lu(k,1007) - lu(k,156) * lu(k,975) + lu(k,1235) = lu(k,1235) - lu(k,152) * lu(k,1205) + lu(k,1239) = lu(k,1239) - lu(k,153) * lu(k,1205) + lu(k,1241) = lu(k,1241) - lu(k,154) * lu(k,1205) + lu(k,1245) = lu(k,1245) - lu(k,155) * lu(k,1205) + lu(k,1246) = lu(k,1246) - lu(k,156) * lu(k,1205) + lu(k,157) = 1._r8 / lu(k,157) + lu(k,158) = lu(k,158) * lu(k,157) + lu(k,159) = lu(k,159) * lu(k,157) + lu(k,160) = lu(k,160) * lu(k,157) + lu(k,161) = lu(k,161) * lu(k,157) + lu(k,162) = lu(k,162) * lu(k,157) + lu(k,1301) = lu(k,1301) - lu(k,158) * lu(k,1293) + lu(k,1310) = lu(k,1310) - lu(k,159) * lu(k,1293) + lu(k,1323) = lu(k,1323) - lu(k,160) * lu(k,1293) + lu(k,1324) = lu(k,1324) - lu(k,161) * lu(k,1293) + lu(k,1329) = - lu(k,162) * lu(k,1293) + lu(k,1372) = lu(k,1372) - lu(k,158) * lu(k,1343) + lu(k,1399) = lu(k,1399) - lu(k,159) * lu(k,1343) + lu(k,1412) = lu(k,1412) - lu(k,160) * lu(k,1343) + lu(k,1413) = lu(k,1413) - lu(k,161) * lu(k,1343) + lu(k,1418) = lu(k,1418) - lu(k,162) * lu(k,1343) + lu(k,163) = 1._r8 / lu(k,163) + lu(k,164) = lu(k,164) * lu(k,163) + lu(k,165) = lu(k,165) * lu(k,163) + lu(k,166) = lu(k,166) * lu(k,163) + lu(k,167) = lu(k,167) * lu(k,163) + lu(k,726) = lu(k,726) - lu(k,164) * lu(k,718) + lu(k,727) = - lu(k,165) * lu(k,718) + lu(k,732) = lu(k,732) - lu(k,166) * lu(k,718) + lu(k,736) = - lu(k,167) * lu(k,718) + lu(k,1068) = lu(k,1068) - lu(k,164) * lu(k,1037) + lu(k,1070) = lu(k,1070) - lu(k,165) * lu(k,1037) + lu(k,1081) = lu(k,1081) - lu(k,166) * lu(k,1037) + lu(k,1088) = lu(k,1088) - lu(k,167) * lu(k,1037) + lu(k,1392) = lu(k,1392) - lu(k,164) * lu(k,1344) + lu(k,1394) = lu(k,1394) - lu(k,165) * lu(k,1344) + lu(k,1406) = lu(k,1406) - lu(k,166) * lu(k,1344) + lu(k,1413) = lu(k,1413) - lu(k,167) * lu(k,1344) + lu(k,168) = 1._r8 / lu(k,168) + lu(k,169) = lu(k,169) * lu(k,168) + lu(k,170) = lu(k,170) * lu(k,168) + lu(k,171) = lu(k,171) * lu(k,168) + lu(k,172) = lu(k,172) * lu(k,168) + lu(k,424) = lu(k,424) - lu(k,169) * lu(k,422) + lu(k,425) = lu(k,425) - lu(k,170) * lu(k,422) + lu(k,429) = lu(k,429) - lu(k,171) * lu(k,422) + lu(k,431) = lu(k,431) - lu(k,172) * lu(k,422) + lu(k,1054) = lu(k,1054) - lu(k,169) * lu(k,1038) + lu(k,1062) = - lu(k,170) * lu(k,1038) + lu(k,1081) = lu(k,1081) - lu(k,171) * lu(k,1038) + lu(k,1088) = lu(k,1088) - lu(k,172) * lu(k,1038) + lu(k,1372) = lu(k,1372) - lu(k,169) * lu(k,1345) + lu(k,1386) = lu(k,1386) - lu(k,170) * lu(k,1345) + lu(k,1406) = lu(k,1406) - lu(k,171) * lu(k,1345) + lu(k,1413) = lu(k,1413) - lu(k,172) * lu(k,1345) + lu(k,173) = 1._r8 / lu(k,173) + lu(k,174) = lu(k,174) * lu(k,173) + lu(k,175) = lu(k,175) * lu(k,173) + lu(k,176) = lu(k,176) * lu(k,173) + lu(k,177) = lu(k,177) * lu(k,173) + lu(k,840) = lu(k,840) - lu(k,174) * lu(k,838) + lu(k,841) = lu(k,841) - lu(k,175) * lu(k,838) + lu(k,845) = lu(k,845) - lu(k,176) * lu(k,838) + lu(k,851) = lu(k,851) - lu(k,177) * lu(k,838) + lu(k,927) = lu(k,927) - lu(k,174) * lu(k,924) + lu(k,928) = lu(k,928) - lu(k,175) * lu(k,924) + lu(k,933) = lu(k,933) - lu(k,176) * lu(k,924) + lu(k,943) = lu(k,943) - lu(k,177) * lu(k,924) + lu(k,952) = lu(k,952) - lu(k,174) * lu(k,950) + lu(k,954) = lu(k,954) - lu(k,175) * lu(k,950) + lu(k,959) = lu(k,959) - lu(k,176) * lu(k,950) + lu(k,970) = lu(k,970) - lu(k,177) * lu(k,950) + lu(k,178) = 1._r8 / lu(k,178) + lu(k,179) = lu(k,179) * lu(k,178) + lu(k,180) = lu(k,180) * lu(k,178) + lu(k,586) = - lu(k,179) * lu(k,583) + lu(k,592) = lu(k,592) - lu(k,180) * lu(k,583) + lu(k,700) = - lu(k,179) * lu(k,691) + lu(k,715) = - lu(k,180) * lu(k,691) + lu(k,787) = lu(k,787) - lu(k,179) * lu(k,778) + lu(k,803) = lu(k,803) - lu(k,180) * lu(k,778) + lu(k,1178) = lu(k,1178) - lu(k,179) * lu(k,1164) + lu(k,1198) = lu(k,1198) - lu(k,180) * lu(k,1164) + lu(k,1222) = lu(k,1222) - lu(k,179) * lu(k,1206) + lu(k,1244) = lu(k,1244) - lu(k,180) * lu(k,1206) + lu(k,1389) = lu(k,1389) - lu(k,179) * lu(k,1346) + lu(k,1413) = lu(k,1413) - lu(k,180) * lu(k,1346) + lu(k,1485) = lu(k,1485) - lu(k,179) * lu(k,1464) + lu(k,1506) = lu(k,1506) - lu(k,180) * lu(k,1464) + lu(k,181) = 1._r8 / lu(k,181) + lu(k,182) = lu(k,182) * lu(k,181) + lu(k,183) = lu(k,183) * lu(k,181) + lu(k,184) = lu(k,184) * lu(k,181) + lu(k,185) = lu(k,185) * lu(k,181) + lu(k,186) = lu(k,186) * lu(k,181) + lu(k,187) = lu(k,187) * lu(k,181) + lu(k,188) = lu(k,188) * lu(k,181) + lu(k,1367) = lu(k,1367) - lu(k,182) * lu(k,1347) + lu(k,1378) = lu(k,1378) - lu(k,183) * lu(k,1347) + lu(k,1387) = lu(k,1387) - lu(k,184) * lu(k,1347) + lu(k,1398) = lu(k,1398) - lu(k,185) * lu(k,1347) + lu(k,1413) = lu(k,1413) - lu(k,186) * lu(k,1347) + lu(k,1414) = lu(k,1414) - lu(k,187) * lu(k,1347) + lu(k,1417) = lu(k,1417) - lu(k,188) * lu(k,1347) + lu(k,1427) = - lu(k,182) * lu(k,1421) + lu(k,1437) = - lu(k,183) * lu(k,1421) + lu(k,1440) = lu(k,1440) - lu(k,184) * lu(k,1421) + lu(k,1443) = lu(k,1443) - lu(k,185) * lu(k,1421) + lu(k,1458) = lu(k,1458) - lu(k,186) * lu(k,1421) + lu(k,1459) = lu(k,1459) - lu(k,187) * lu(k,1421) + lu(k,1462) = lu(k,1462) - lu(k,188) * lu(k,1421) + end do + end subroutine lu_fac04 + subroutine lu_fac05( avec_len, lu ) + use chem_mods, only : nzcnt + use shr_kind_mod, only : r8 => shr_kind_r8 + implicit none +!----------------------------------------------------------------------- +! ... dummy args +!----------------------------------------------------------------------- + integer, intent(in) :: avec_len + real(r8), intent(inout) :: lu(veclen,nzcnt) +!----------------------------------------------------------------------- +! ... local variables +!----------------------------------------------------------------------- + integer :: k + do k = 1,avec_len + lu(k,189) = 1._r8 / lu(k,189) + lu(k,190) = lu(k,190) * lu(k,189) + lu(k,191) = lu(k,191) * lu(k,189) + lu(k,192) = lu(k,192) * lu(k,189) + lu(k,193) = lu(k,193) * lu(k,189) + lu(k,194) = lu(k,194) * lu(k,189) + lu(k,195) = lu(k,195) * lu(k,189) + lu(k,196) = lu(k,196) * lu(k,189) + lu(k,1306) = lu(k,1306) - lu(k,190) * lu(k,1294) + lu(k,1310) = lu(k,1310) - lu(k,191) * lu(k,1294) + lu(k,1317) = lu(k,1317) - lu(k,192) * lu(k,1294) + lu(k,1320) = lu(k,1320) - lu(k,193) * lu(k,1294) + lu(k,1323) = lu(k,1323) - lu(k,194) * lu(k,1294) + lu(k,1324) = lu(k,1324) - lu(k,195) * lu(k,1294) + lu(k,1329) = lu(k,1329) - lu(k,196) * lu(k,1294) + lu(k,1387) = lu(k,1387) - lu(k,190) * lu(k,1348) + lu(k,1399) = lu(k,1399) - lu(k,191) * lu(k,1348) + lu(k,1406) = lu(k,1406) - lu(k,192) * lu(k,1348) + lu(k,1409) = lu(k,1409) - lu(k,193) * lu(k,1348) + lu(k,1412) = lu(k,1412) - lu(k,194) * lu(k,1348) + lu(k,1413) = lu(k,1413) - lu(k,195) * lu(k,1348) + lu(k,1418) = lu(k,1418) - lu(k,196) * lu(k,1348) + lu(k,197) = 1._r8 / lu(k,197) + lu(k,198) = lu(k,198) * lu(k,197) + lu(k,199) = lu(k,199) * lu(k,197) + lu(k,200) = lu(k,200) * lu(k,197) + lu(k,201) = lu(k,201) * lu(k,197) + lu(k,202) = lu(k,202) * lu(k,197) + lu(k,626) = - lu(k,198) * lu(k,619) + lu(k,627) = - lu(k,199) * lu(k,619) + lu(k,630) = - lu(k,200) * lu(k,619) + lu(k,631) = lu(k,631) - lu(k,201) * lu(k,619) + lu(k,636) = lu(k,636) - lu(k,202) * lu(k,619) + lu(k,1223) = lu(k,1223) - lu(k,198) * lu(k,1207) + lu(k,1228) = lu(k,1228) - lu(k,199) * lu(k,1207) + lu(k,1235) = lu(k,1235) - lu(k,200) * lu(k,1207) + lu(k,1236) = lu(k,1236) - lu(k,201) * lu(k,1207) + lu(k,1244) = lu(k,1244) - lu(k,202) * lu(k,1207) + lu(k,1390) = lu(k,1390) - lu(k,198) * lu(k,1349) + lu(k,1395) = lu(k,1395) - lu(k,199) * lu(k,1349) + lu(k,1404) = lu(k,1404) - lu(k,200) * lu(k,1349) + lu(k,1405) = lu(k,1405) - lu(k,201) * lu(k,1349) + lu(k,1413) = lu(k,1413) - lu(k,202) * lu(k,1349) + lu(k,203) = 1._r8 / lu(k,203) + lu(k,204) = lu(k,204) * lu(k,203) + lu(k,205) = lu(k,205) * lu(k,203) + lu(k,206) = lu(k,206) * lu(k,203) + lu(k,207) = lu(k,207) * lu(k,203) + lu(k,208) = lu(k,208) * lu(k,203) + lu(k,459) = lu(k,459) - lu(k,204) * lu(k,458) + lu(k,460) = lu(k,460) - lu(k,205) * lu(k,458) + lu(k,467) = lu(k,467) - lu(k,206) * lu(k,458) + lu(k,469) = - lu(k,207) * lu(k,458) + lu(k,471) = - lu(k,208) * lu(k,458) + lu(k,1051) = - lu(k,204) * lu(k,1039) + lu(k,1057) = lu(k,1057) - lu(k,205) * lu(k,1039) + lu(k,1081) = lu(k,1081) - lu(k,206) * lu(k,1039) + lu(k,1088) = lu(k,1088) - lu(k,207) * lu(k,1039) + lu(k,1093) = lu(k,1093) - lu(k,208) * lu(k,1039) + lu(k,1370) = lu(k,1370) - lu(k,204) * lu(k,1350) + lu(k,1375) = lu(k,1375) - lu(k,205) * lu(k,1350) + lu(k,1406) = lu(k,1406) - lu(k,206) * lu(k,1350) + lu(k,1413) = lu(k,1413) - lu(k,207) * lu(k,1350) + lu(k,1418) = lu(k,1418) - lu(k,208) * lu(k,1350) + lu(k,209) = 1._r8 / lu(k,209) + lu(k,210) = lu(k,210) * lu(k,209) + lu(k,211) = lu(k,211) * lu(k,209) + lu(k,212) = lu(k,212) * lu(k,209) + lu(k,213) = lu(k,213) * lu(k,209) + lu(k,214) = lu(k,214) * lu(k,209) + lu(k,1080) = lu(k,1080) - lu(k,210) * lu(k,1040) + lu(k,1084) = lu(k,1084) - lu(k,211) * lu(k,1040) + lu(k,1088) = lu(k,1088) - lu(k,212) * lu(k,1040) + lu(k,1092) = lu(k,1092) - lu(k,213) * lu(k,1040) + lu(k,1093) = lu(k,1093) - lu(k,214) * lu(k,1040) + lu(k,1190) = lu(k,1190) - lu(k,210) * lu(k,1165) + lu(k,1194) = lu(k,1194) - lu(k,211) * lu(k,1165) + lu(k,1198) = lu(k,1198) - lu(k,212) * lu(k,1165) + lu(k,1202) = - lu(k,213) * lu(k,1165) + lu(k,1203) = - lu(k,214) * lu(k,1165) + lu(k,1405) = lu(k,1405) - lu(k,210) * lu(k,1351) + lu(k,1409) = lu(k,1409) - lu(k,211) * lu(k,1351) + lu(k,1413) = lu(k,1413) - lu(k,212) * lu(k,1351) + lu(k,1417) = lu(k,1417) - lu(k,213) * lu(k,1351) + lu(k,1418) = lu(k,1418) - lu(k,214) * lu(k,1351) + lu(k,215) = 1._r8 / lu(k,215) + lu(k,216) = lu(k,216) * lu(k,215) + lu(k,217) = lu(k,217) * lu(k,215) + lu(k,218) = lu(k,218) * lu(k,215) + lu(k,219) = lu(k,219) * lu(k,215) + lu(k,220) = lu(k,220) * lu(k,215) + lu(k,595) = lu(k,595) - lu(k,216) * lu(k,593) + lu(k,598) = lu(k,598) - lu(k,217) * lu(k,593) + lu(k,600) = lu(k,600) - lu(k,218) * lu(k,593) + lu(k,603) = lu(k,603) - lu(k,219) * lu(k,593) + lu(k,605) = - lu(k,220) * lu(k,593) + lu(k,1059) = lu(k,1059) - lu(k,216) * lu(k,1041) + lu(k,1071) = lu(k,1071) - lu(k,217) * lu(k,1041) + lu(k,1080) = lu(k,1080) - lu(k,218) * lu(k,1041) + lu(k,1088) = lu(k,1088) - lu(k,219) * lu(k,1041) + lu(k,1093) = lu(k,1093) - lu(k,220) * lu(k,1041) + lu(k,1382) = lu(k,1382) - lu(k,216) * lu(k,1352) + lu(k,1395) = lu(k,1395) - lu(k,217) * lu(k,1352) + lu(k,1405) = lu(k,1405) - lu(k,218) * lu(k,1352) + lu(k,1413) = lu(k,1413) - lu(k,219) * lu(k,1352) + lu(k,1418) = lu(k,1418) - lu(k,220) * lu(k,1352) + lu(k,221) = 1._r8 / lu(k,221) + lu(k,222) = lu(k,222) * lu(k,221) + lu(k,223) = lu(k,223) * lu(k,221) + lu(k,224) = lu(k,224) * lu(k,221) + lu(k,225) = lu(k,225) * lu(k,221) + lu(k,226) = lu(k,226) * lu(k,221) + lu(k,1272) = lu(k,1272) - lu(k,222) * lu(k,1266) + lu(k,1273) = lu(k,1273) - lu(k,223) * lu(k,1266) + lu(k,1284) = lu(k,1284) - lu(k,224) * lu(k,1266) + lu(k,1285) = lu(k,1285) - lu(k,225) * lu(k,1266) + lu(k,1286) = lu(k,1286) - lu(k,226) * lu(k,1266) + lu(k,1310) = lu(k,1310) - lu(k,222) * lu(k,1295) + lu(k,1311) = lu(k,1311) - lu(k,223) * lu(k,1295) + lu(k,1322) = - lu(k,224) * lu(k,1295) + lu(k,1323) = lu(k,1323) - lu(k,225) * lu(k,1295) + lu(k,1324) = lu(k,1324) - lu(k,226) * lu(k,1295) + lu(k,1399) = lu(k,1399) - lu(k,222) * lu(k,1353) + lu(k,1400) = lu(k,1400) - lu(k,223) * lu(k,1353) + lu(k,1411) = lu(k,1411) - lu(k,224) * lu(k,1353) + lu(k,1412) = lu(k,1412) - lu(k,225) * lu(k,1353) + lu(k,1413) = lu(k,1413) - lu(k,226) * lu(k,1353) + lu(k,227) = 1._r8 / lu(k,227) + lu(k,228) = lu(k,228) * lu(k,227) + lu(k,229) = lu(k,229) * lu(k,227) + lu(k,230) = lu(k,230) * lu(k,227) + lu(k,231) = lu(k,231) * lu(k,227) + lu(k,378) = - lu(k,228) * lu(k,376) + lu(k,379) = - lu(k,229) * lu(k,376) + lu(k,381) = lu(k,381) - lu(k,230) * lu(k,376) + lu(k,382) = lu(k,382) - lu(k,231) * lu(k,376) + lu(k,904) = lu(k,904) - lu(k,228) * lu(k,891) + lu(k,909) = lu(k,909) - lu(k,229) * lu(k,891) + lu(k,913) = - lu(k,230) * lu(k,891) + lu(k,914) = lu(k,914) - lu(k,231) * lu(k,891) + lu(k,1060) = - lu(k,228) * lu(k,1042) + lu(k,1076) = lu(k,1076) - lu(k,229) * lu(k,1042) + lu(k,1080) = lu(k,1080) - lu(k,230) * lu(k,1042) + lu(k,1081) = lu(k,1081) - lu(k,231) * lu(k,1042) + lu(k,1480) = lu(k,1480) - lu(k,228) * lu(k,1465) + lu(k,1494) = lu(k,1494) - lu(k,229) * lu(k,1465) + lu(k,1498) = lu(k,1498) - lu(k,230) * lu(k,1465) + lu(k,1499) = lu(k,1499) - lu(k,231) * lu(k,1465) + end do + end subroutine lu_fac05 + subroutine lu_fac06( avec_len, lu ) + use chem_mods, only : nzcnt + use shr_kind_mod, only : r8 => shr_kind_r8 + implicit none +!----------------------------------------------------------------------- +! ... dummy args +!----------------------------------------------------------------------- + integer, intent(in) :: avec_len + real(r8), intent(inout) :: lu(veclen,nzcnt) +!----------------------------------------------------------------------- +! ... local variables +!----------------------------------------------------------------------- + integer :: k + do k = 1,avec_len + lu(k,232) = 1._r8 / lu(k,232) + lu(k,233) = lu(k,233) * lu(k,232) + lu(k,234) = lu(k,234) * lu(k,232) + lu(k,235) = lu(k,235) * lu(k,232) + lu(k,236) = lu(k,236) * lu(k,232) + lu(k,237) = lu(k,237) * lu(k,232) + lu(k,238) = lu(k,238) * lu(k,232) + lu(k,993) = lu(k,993) - lu(k,233) * lu(k,976) + lu(k,996) = lu(k,996) - lu(k,234) * lu(k,976) + lu(k,998) = lu(k,998) - lu(k,235) * lu(k,976) + lu(k,1002) = lu(k,1002) - lu(k,236) * lu(k,976) + lu(k,1005) = lu(k,1005) - lu(k,237) * lu(k,976) + lu(k,1010) = - lu(k,238) * lu(k,976) + lu(k,1076) = lu(k,1076) - lu(k,233) * lu(k,1043) + lu(k,1079) = lu(k,1079) - lu(k,234) * lu(k,1043) + lu(k,1081) = lu(k,1081) - lu(k,235) * lu(k,1043) + lu(k,1085) = lu(k,1085) - lu(k,236) * lu(k,1043) + lu(k,1088) = lu(k,1088) - lu(k,237) * lu(k,1043) + lu(k,1093) = lu(k,1093) - lu(k,238) * lu(k,1043) + lu(k,1401) = lu(k,1401) - lu(k,233) * lu(k,1354) + lu(k,1404) = lu(k,1404) - lu(k,234) * lu(k,1354) + lu(k,1406) = lu(k,1406) - lu(k,235) * lu(k,1354) + lu(k,1410) = lu(k,1410) - lu(k,236) * lu(k,1354) + lu(k,1413) = lu(k,1413) - lu(k,237) * lu(k,1354) + lu(k,1418) = lu(k,1418) - lu(k,238) * lu(k,1354) + lu(k,239) = 1._r8 / lu(k,239) + lu(k,240) = lu(k,240) * lu(k,239) + lu(k,241) = lu(k,241) * lu(k,239) + lu(k,242) = lu(k,242) * lu(k,239) + lu(k,243) = lu(k,243) * lu(k,239) + lu(k,244) = lu(k,244) * lu(k,239) + lu(k,245) = lu(k,245) * lu(k,239) + lu(k,1100) = - lu(k,240) * lu(k,1096) + lu(k,1110) = lu(k,1110) - lu(k,241) * lu(k,1096) + lu(k,1126) = lu(k,1126) - lu(k,242) * lu(k,1096) + lu(k,1127) = lu(k,1127) - lu(k,243) * lu(k,1096) + lu(k,1128) = lu(k,1128) - lu(k,244) * lu(k,1096) + lu(k,1134) = lu(k,1134) - lu(k,245) * lu(k,1096) + lu(k,1300) = - lu(k,240) * lu(k,1296) + lu(k,1306) = lu(k,1306) - lu(k,241) * lu(k,1296) + lu(k,1316) = lu(k,1316) - lu(k,242) * lu(k,1296) + lu(k,1317) = lu(k,1317) - lu(k,243) * lu(k,1296) + lu(k,1318) = lu(k,1318) - lu(k,244) * lu(k,1296) + lu(k,1324) = lu(k,1324) - lu(k,245) * lu(k,1296) + lu(k,1369) = lu(k,1369) - lu(k,240) * lu(k,1355) + lu(k,1387) = lu(k,1387) - lu(k,241) * lu(k,1355) + lu(k,1405) = lu(k,1405) - lu(k,242) * lu(k,1355) + lu(k,1406) = lu(k,1406) - lu(k,243) * lu(k,1355) + lu(k,1407) = lu(k,1407) - lu(k,244) * lu(k,1355) + lu(k,1413) = lu(k,1413) - lu(k,245) * lu(k,1355) + lu(k,246) = 1._r8 / lu(k,246) + lu(k,247) = lu(k,247) * lu(k,246) + lu(k,248) = lu(k,248) * lu(k,246) + lu(k,249) = lu(k,249) * lu(k,246) + lu(k,250) = lu(k,250) * lu(k,246) + lu(k,251) = lu(k,251) * lu(k,246) + lu(k,252) = lu(k,252) * lu(k,246) + lu(k,1272) = lu(k,1272) - lu(k,247) * lu(k,1267) + lu(k,1273) = lu(k,1273) - lu(k,248) * lu(k,1267) + lu(k,1284) = lu(k,1284) - lu(k,249) * lu(k,1267) + lu(k,1285) = lu(k,1285) - lu(k,250) * lu(k,1267) + lu(k,1286) = lu(k,1286) - lu(k,251) * lu(k,1267) + lu(k,1291) = lu(k,1291) - lu(k,252) * lu(k,1267) + lu(k,1310) = lu(k,1310) - lu(k,247) * lu(k,1297) + lu(k,1311) = lu(k,1311) - lu(k,248) * lu(k,1297) + lu(k,1322) = lu(k,1322) - lu(k,249) * lu(k,1297) + lu(k,1323) = lu(k,1323) - lu(k,250) * lu(k,1297) + lu(k,1324) = lu(k,1324) - lu(k,251) * lu(k,1297) + lu(k,1329) = lu(k,1329) - lu(k,252) * lu(k,1297) + lu(k,1399) = lu(k,1399) - lu(k,247) * lu(k,1356) + lu(k,1400) = lu(k,1400) - lu(k,248) * lu(k,1356) + lu(k,1411) = lu(k,1411) - lu(k,249) * lu(k,1356) + lu(k,1412) = lu(k,1412) - lu(k,250) * lu(k,1356) + lu(k,1413) = lu(k,1413) - lu(k,251) * lu(k,1356) + lu(k,1418) = lu(k,1418) - lu(k,252) * lu(k,1356) + lu(k,253) = 1._r8 / lu(k,253) + lu(k,254) = lu(k,254) * lu(k,253) + lu(k,255) = lu(k,255) * lu(k,253) + lu(k,256) = lu(k,256) * lu(k,253) + lu(k,257) = lu(k,257) * lu(k,253) + lu(k,258) = lu(k,258) * lu(k,253) + lu(k,259) = lu(k,259) * lu(k,253) + lu(k,520) = lu(k,520) - lu(k,254) * lu(k,519) + lu(k,521) = lu(k,521) - lu(k,255) * lu(k,519) + lu(k,523) = - lu(k,256) * lu(k,519) + lu(k,524) = lu(k,524) - lu(k,257) * lu(k,519) + lu(k,533) = lu(k,533) - lu(k,258) * lu(k,519) + lu(k,534) = - lu(k,259) * lu(k,519) + lu(k,893) = lu(k,893) - lu(k,254) * lu(k,892) + lu(k,894) = lu(k,894) - lu(k,255) * lu(k,892) + lu(k,897) = lu(k,897) - lu(k,256) * lu(k,892) + lu(k,898) = lu(k,898) - lu(k,257) * lu(k,892) + lu(k,919) = lu(k,919) - lu(k,258) * lu(k,892) + lu(k,920) = lu(k,920) - lu(k,259) * lu(k,892) + lu(k,1423) = lu(k,1423) - lu(k,254) * lu(k,1422) + lu(k,1426) = lu(k,1426) - lu(k,255) * lu(k,1422) + lu(k,1431) = lu(k,1431) - lu(k,256) * lu(k,1422) + lu(k,1433) = lu(k,1433) - lu(k,257) * lu(k,1422) + lu(k,1459) = lu(k,1459) - lu(k,258) * lu(k,1422) + lu(k,1460) = lu(k,1460) - lu(k,259) * lu(k,1422) + lu(k,260) = 1._r8 / lu(k,260) + lu(k,261) = lu(k,261) * lu(k,260) + lu(k,262) = lu(k,262) * lu(k,260) + lu(k,263) = lu(k,263) * lu(k,260) + lu(k,264) = lu(k,264) * lu(k,260) + lu(k,265) = lu(k,265) * lu(k,260) + lu(k,521) = lu(k,521) - lu(k,261) * lu(k,520) + lu(k,524) = lu(k,524) - lu(k,262) * lu(k,520) + lu(k,525) = lu(k,525) - lu(k,263) * lu(k,520) + lu(k,531) = - lu(k,264) * lu(k,520) + lu(k,533) = lu(k,533) - lu(k,265) * lu(k,520) + lu(k,894) = lu(k,894) - lu(k,261) * lu(k,893) + lu(k,898) = lu(k,898) - lu(k,262) * lu(k,893) + lu(k,899) = lu(k,899) - lu(k,263) * lu(k,893) + lu(k,909) = lu(k,909) - lu(k,264) * lu(k,893) + lu(k,919) = lu(k,919) - lu(k,265) * lu(k,893) + lu(k,1426) = lu(k,1426) - lu(k,261) * lu(k,1423) + lu(k,1433) = lu(k,1433) - lu(k,262) * lu(k,1423) + lu(k,1434) = - lu(k,263) * lu(k,1423) + lu(k,1446) = lu(k,1446) - lu(k,264) * lu(k,1423) + lu(k,1459) = lu(k,1459) - lu(k,265) * lu(k,1423) + lu(k,266) = 1._r8 / lu(k,266) + lu(k,267) = lu(k,267) * lu(k,266) + lu(k,268) = lu(k,268) * lu(k,266) + lu(k,269) = lu(k,269) * lu(k,266) + lu(k,270) = lu(k,270) * lu(k,266) + lu(k,271) = lu(k,271) * lu(k,266) + lu(k,272) = lu(k,272) * lu(k,266) + lu(k,273) = lu(k,273) * lu(k,266) + lu(k,699) = lu(k,699) - lu(k,267) * lu(k,692) + lu(k,700) = lu(k,700) - lu(k,268) * lu(k,692) + lu(k,702) = lu(k,702) - lu(k,269) * lu(k,692) + lu(k,704) = lu(k,704) - lu(k,270) * lu(k,692) + lu(k,709) = lu(k,709) - lu(k,271) * lu(k,692) + lu(k,710) = lu(k,710) - lu(k,272) * lu(k,692) + lu(k,715) = lu(k,715) - lu(k,273) * lu(k,692) + lu(k,1064) = lu(k,1064) - lu(k,267) * lu(k,1044) + lu(k,1065) = lu(k,1065) - lu(k,268) * lu(k,1044) + lu(k,1067) = lu(k,1067) - lu(k,269) * lu(k,1044) + lu(k,1069) = lu(k,1069) - lu(k,270) * lu(k,1044) + lu(k,1080) = lu(k,1080) - lu(k,271) * lu(k,1044) + lu(k,1081) = lu(k,1081) - lu(k,272) * lu(k,1044) + lu(k,1088) = lu(k,1088) - lu(k,273) * lu(k,1044) + lu(k,1388) = lu(k,1388) - lu(k,267) * lu(k,1357) + lu(k,1389) = lu(k,1389) - lu(k,268) * lu(k,1357) + lu(k,1391) = lu(k,1391) - lu(k,269) * lu(k,1357) + lu(k,1393) = lu(k,1393) - lu(k,270) * lu(k,1357) + lu(k,1405) = lu(k,1405) - lu(k,271) * lu(k,1357) + lu(k,1406) = lu(k,1406) - lu(k,272) * lu(k,1357) + lu(k,1413) = lu(k,1413) - lu(k,273) * lu(k,1357) + lu(k,274) = 1._r8 / lu(k,274) + lu(k,275) = lu(k,275) * lu(k,274) + lu(k,276) = lu(k,276) * lu(k,274) + lu(k,277) = lu(k,277) * lu(k,274) + lu(k,278) = lu(k,278) * lu(k,274) + lu(k,279) = lu(k,279) * lu(k,274) + lu(k,280) = lu(k,280) * lu(k,274) + lu(k,281) = lu(k,281) * lu(k,274) + lu(k,793) = lu(k,793) - lu(k,275) * lu(k,779) + lu(k,794) = lu(k,794) - lu(k,276) * lu(k,779) + lu(k,796) = lu(k,796) - lu(k,277) * lu(k,779) + lu(k,797) = lu(k,797) - lu(k,278) * lu(k,779) + lu(k,801) = lu(k,801) - lu(k,279) * lu(k,779) + lu(k,802) = - lu(k,280) * lu(k,779) + lu(k,803) = lu(k,803) - lu(k,281) * lu(k,779) + lu(k,988) = lu(k,988) - lu(k,275) * lu(k,977) + lu(k,989) = - lu(k,276) * lu(k,977) + lu(k,996) = lu(k,996) - lu(k,277) * lu(k,977) + lu(k,997) = - lu(k,278) * lu(k,977) + lu(k,1001) = - lu(k,279) * lu(k,977) + lu(k,1002) = lu(k,1002) - lu(k,280) * lu(k,977) + lu(k,1005) = lu(k,1005) - lu(k,281) * lu(k,977) + lu(k,1395) = lu(k,1395) - lu(k,275) * lu(k,1358) + lu(k,1396) = lu(k,1396) - lu(k,276) * lu(k,1358) + lu(k,1404) = lu(k,1404) - lu(k,277) * lu(k,1358) + lu(k,1405) = lu(k,1405) - lu(k,278) * lu(k,1358) + lu(k,1409) = lu(k,1409) - lu(k,279) * lu(k,1358) + lu(k,1410) = lu(k,1410) - lu(k,280) * lu(k,1358) + lu(k,1413) = lu(k,1413) - lu(k,281) * lu(k,1358) + end do + end subroutine lu_fac06 + subroutine lu_fac07( avec_len, lu ) + use chem_mods, only : nzcnt + use shr_kind_mod, only : r8 => shr_kind_r8 + implicit none +!----------------------------------------------------------------------- +! ... dummy args +!----------------------------------------------------------------------- + integer, intent(in) :: avec_len + real(r8), intent(inout) :: lu(veclen,nzcnt) +!----------------------------------------------------------------------- +! ... local variables +!----------------------------------------------------------------------- + integer :: k + do k = 1,avec_len + lu(k,282) = 1._r8 / lu(k,282) + lu(k,283) = lu(k,283) * lu(k,282) + lu(k,284) = lu(k,284) * lu(k,282) + lu(k,285) = lu(k,285) * lu(k,282) + lu(k,428) = lu(k,428) - lu(k,283) * lu(k,423) + lu(k,429) = lu(k,429) - lu(k,284) * lu(k,423) + lu(k,431) = lu(k,431) - lu(k,285) * lu(k,423) + lu(k,600) = lu(k,600) - lu(k,283) * lu(k,594) + lu(k,601) = lu(k,601) - lu(k,284) * lu(k,594) + lu(k,603) = lu(k,603) - lu(k,285) * lu(k,594) + lu(k,676) = lu(k,676) - lu(k,283) * lu(k,666) + lu(k,677) = lu(k,677) - lu(k,284) * lu(k,666) + lu(k,680) = lu(k,680) - lu(k,285) * lu(k,666) + lu(k,709) = lu(k,709) - lu(k,283) * lu(k,693) + lu(k,710) = lu(k,710) - lu(k,284) * lu(k,693) + lu(k,715) = lu(k,715) - lu(k,285) * lu(k,693) + lu(k,731) = lu(k,731) - lu(k,283) * lu(k,719) + lu(k,732) = lu(k,732) - lu(k,284) * lu(k,719) + lu(k,736) = lu(k,736) - lu(k,285) * lu(k,719) + lu(k,1190) = lu(k,1190) - lu(k,283) * lu(k,1166) + lu(k,1191) = lu(k,1191) - lu(k,284) * lu(k,1166) + lu(k,1198) = lu(k,1198) - lu(k,285) * lu(k,1166) + lu(k,1405) = lu(k,1405) - lu(k,283) * lu(k,1359) + lu(k,1406) = lu(k,1406) - lu(k,284) * lu(k,1359) + lu(k,1413) = lu(k,1413) - lu(k,285) * lu(k,1359) + lu(k,286) = 1._r8 / lu(k,286) + lu(k,287) = lu(k,287) * lu(k,286) + lu(k,288) = lu(k,288) * lu(k,286) + lu(k,289) = lu(k,289) * lu(k,286) + lu(k,290) = lu(k,290) * lu(k,286) + lu(k,291) = lu(k,291) * lu(k,286) + lu(k,292) = lu(k,292) * lu(k,286) + lu(k,293) = lu(k,293) * lu(k,286) + lu(k,401) = lu(k,401) - lu(k,287) * lu(k,400) + lu(k,402) = - lu(k,288) * lu(k,400) + lu(k,403) = lu(k,403) - lu(k,289) * lu(k,400) + lu(k,406) = lu(k,406) - lu(k,290) * lu(k,400) + lu(k,407) = lu(k,407) - lu(k,291) * lu(k,400) + lu(k,408) = - lu(k,292) * lu(k,400) + lu(k,410) = - lu(k,293) * lu(k,400) + lu(k,1052) = lu(k,1052) - lu(k,287) * lu(k,1045) + lu(k,1061) = - lu(k,288) * lu(k,1045) + lu(k,1062) = lu(k,1062) - lu(k,289) * lu(k,1045) + lu(k,1080) = lu(k,1080) - lu(k,290) * lu(k,1045) + lu(k,1081) = lu(k,1081) - lu(k,291) * lu(k,1045) + lu(k,1088) = lu(k,1088) - lu(k,292) * lu(k,1045) + lu(k,1093) = lu(k,1093) - lu(k,293) * lu(k,1045) + lu(k,1371) = lu(k,1371) - lu(k,287) * lu(k,1360) + lu(k,1384) = lu(k,1384) - lu(k,288) * lu(k,1360) + lu(k,1386) = lu(k,1386) - lu(k,289) * lu(k,1360) + lu(k,1405) = lu(k,1405) - lu(k,290) * lu(k,1360) + lu(k,1406) = lu(k,1406) - lu(k,291) * lu(k,1360) + lu(k,1413) = lu(k,1413) - lu(k,292) * lu(k,1360) + lu(k,1418) = lu(k,1418) - lu(k,293) * lu(k,1360) + lu(k,294) = 1._r8 / lu(k,294) + lu(k,295) = lu(k,295) * lu(k,294) + lu(k,296) = lu(k,296) * lu(k,294) + lu(k,297) = lu(k,297) * lu(k,294) + lu(k,298) = lu(k,298) * lu(k,294) + lu(k,299) = lu(k,299) * lu(k,294) + lu(k,300) = lu(k,300) * lu(k,294) + lu(k,301) = lu(k,301) * lu(k,294) + lu(k,926) = lu(k,926) - lu(k,295) * lu(k,925) + lu(k,930) = lu(k,930) - lu(k,296) * lu(k,925) + lu(k,932) = lu(k,932) - lu(k,297) * lu(k,925) + lu(k,934) = lu(k,934) - lu(k,298) * lu(k,925) + lu(k,938) = - lu(k,299) * lu(k,925) + lu(k,939) = - lu(k,300) * lu(k,925) + lu(k,943) = lu(k,943) - lu(k,301) * lu(k,925) + lu(k,980) = - lu(k,295) * lu(k,978) + lu(k,992) = - lu(k,296) * lu(k,978) + lu(k,994) = lu(k,994) - lu(k,297) * lu(k,978) + lu(k,996) = lu(k,996) - lu(k,298) * lu(k,978) + lu(k,1000) = lu(k,1000) - lu(k,299) * lu(k,978) + lu(k,1002) = lu(k,1002) - lu(k,300) * lu(k,978) + lu(k,1006) = lu(k,1006) - lu(k,301) * lu(k,978) + lu(k,1429) = lu(k,1429) - lu(k,295) * lu(k,1424) + lu(k,1445) = lu(k,1445) - lu(k,296) * lu(k,1424) + lu(k,1447) = lu(k,1447) - lu(k,297) * lu(k,1424) + lu(k,1449) = lu(k,1449) - lu(k,298) * lu(k,1424) + lu(k,1453) = - lu(k,299) * lu(k,1424) + lu(k,1455) = lu(k,1455) - lu(k,300) * lu(k,1424) + lu(k,1459) = lu(k,1459) - lu(k,301) * lu(k,1424) + lu(k,302) = 1._r8 / lu(k,302) + lu(k,303) = lu(k,303) * lu(k,302) + lu(k,304) = lu(k,304) * lu(k,302) + lu(k,305) = lu(k,305) * lu(k,302) + lu(k,306) = lu(k,306) * lu(k,302) + lu(k,307) = lu(k,307) * lu(k,302) + lu(k,308) = lu(k,308) * lu(k,302) + lu(k,309) = lu(k,309) * lu(k,302) + lu(k,310) = lu(k,310) * lu(k,302) + lu(k,763) = - lu(k,303) * lu(k,760) + lu(k,765) = lu(k,765) - lu(k,304) * lu(k,760) + lu(k,767) = lu(k,767) - lu(k,305) * lu(k,760) + lu(k,768) = lu(k,768) - lu(k,306) * lu(k,760) + lu(k,769) = lu(k,769) - lu(k,307) * lu(k,760) + lu(k,770) = lu(k,770) - lu(k,308) * lu(k,760) + lu(k,774) = lu(k,774) - lu(k,309) * lu(k,760) + lu(k,775) = lu(k,775) - lu(k,310) * lu(k,760) + lu(k,984) = - lu(k,303) * lu(k,979) + lu(k,987) = lu(k,987) - lu(k,304) * lu(k,979) + lu(k,989) = lu(k,989) - lu(k,305) * lu(k,979) + lu(k,996) = lu(k,996) - lu(k,306) * lu(k,979) + lu(k,997) = lu(k,997) - lu(k,307) * lu(k,979) + lu(k,998) = lu(k,998) - lu(k,308) * lu(k,979) + lu(k,1002) = lu(k,1002) - lu(k,309) * lu(k,979) + lu(k,1005) = lu(k,1005) - lu(k,310) * lu(k,979) + lu(k,1384) = lu(k,1384) - lu(k,303) * lu(k,1361) + lu(k,1394) = lu(k,1394) - lu(k,304) * lu(k,1361) + lu(k,1396) = lu(k,1396) - lu(k,305) * lu(k,1361) + lu(k,1404) = lu(k,1404) - lu(k,306) * lu(k,1361) + lu(k,1405) = lu(k,1405) - lu(k,307) * lu(k,1361) + lu(k,1406) = lu(k,1406) - lu(k,308) * lu(k,1361) + lu(k,1410) = lu(k,1410) - lu(k,309) * lu(k,1361) + lu(k,1413) = lu(k,1413) - lu(k,310) * lu(k,1361) + lu(k,311) = 1._r8 / lu(k,311) + lu(k,312) = lu(k,312) * lu(k,311) + lu(k,313) = lu(k,313) * lu(k,311) + lu(k,314) = lu(k,314) * lu(k,311) + lu(k,315) = lu(k,315) * lu(k,311) + lu(k,316) = lu(k,316) * lu(k,311) + lu(k,317) = lu(k,317) * lu(k,311) + lu(k,1074) = lu(k,1074) - lu(k,312) * lu(k,1046) + lu(k,1081) = lu(k,1081) - lu(k,313) * lu(k,1046) + lu(k,1087) = lu(k,1087) - lu(k,314) * lu(k,1046) + lu(k,1088) = lu(k,1088) - lu(k,315) * lu(k,1046) + lu(k,1089) = lu(k,1089) - lu(k,316) * lu(k,1046) + lu(k,1093) = lu(k,1093) - lu(k,317) * lu(k,1046) + lu(k,1310) = lu(k,1310) - lu(k,312) * lu(k,1298) + lu(k,1317) = lu(k,1317) - lu(k,313) * lu(k,1298) + lu(k,1323) = lu(k,1323) - lu(k,314) * lu(k,1298) + lu(k,1324) = lu(k,1324) - lu(k,315) * lu(k,1298) + lu(k,1325) = - lu(k,316) * lu(k,1298) + lu(k,1329) = lu(k,1329) - lu(k,317) * lu(k,1298) + lu(k,1399) = lu(k,1399) - lu(k,312) * lu(k,1362) + lu(k,1406) = lu(k,1406) - lu(k,313) * lu(k,1362) + lu(k,1412) = lu(k,1412) - lu(k,314) * lu(k,1362) + lu(k,1413) = lu(k,1413) - lu(k,315) * lu(k,1362) + lu(k,1414) = lu(k,1414) - lu(k,316) * lu(k,1362) + lu(k,1418) = lu(k,1418) - lu(k,317) * lu(k,1362) + lu(k,1444) = lu(k,1444) - lu(k,312) * lu(k,1425) + lu(k,1451) = lu(k,1451) - lu(k,313) * lu(k,1425) + lu(k,1457) = lu(k,1457) - lu(k,314) * lu(k,1425) + lu(k,1458) = lu(k,1458) - lu(k,315) * lu(k,1425) + lu(k,1459) = lu(k,1459) - lu(k,316) * lu(k,1425) + lu(k,1463) = - lu(k,317) * lu(k,1425) + lu(k,318) = 1._r8 / lu(k,318) + lu(k,319) = lu(k,319) * lu(k,318) + lu(k,320) = lu(k,320) * lu(k,318) + lu(k,321) = lu(k,321) * lu(k,318) + lu(k,322) = lu(k,322) * lu(k,318) + lu(k,323) = lu(k,323) * lu(k,318) + lu(k,324) = lu(k,324) * lu(k,318) + lu(k,766) = lu(k,766) - lu(k,319) * lu(k,761) + lu(k,767) = lu(k,767) - lu(k,320) * lu(k,761) + lu(k,769) = lu(k,769) - lu(k,321) * lu(k,761) + lu(k,773) = lu(k,773) - lu(k,322) * lu(k,761) + lu(k,775) = lu(k,775) - lu(k,323) * lu(k,761) + lu(k,777) = - lu(k,324) * lu(k,761) + lu(k,793) = lu(k,793) - lu(k,319) * lu(k,780) + lu(k,794) = lu(k,794) - lu(k,320) * lu(k,780) + lu(k,797) = lu(k,797) - lu(k,321) * lu(k,780) + lu(k,801) = lu(k,801) - lu(k,322) * lu(k,780) + lu(k,803) = lu(k,803) - lu(k,323) * lu(k,780) + lu(k,806) = - lu(k,324) * lu(k,780) + lu(k,1071) = lu(k,1071) - lu(k,319) * lu(k,1047) + lu(k,1072) = lu(k,1072) - lu(k,320) * lu(k,1047) + lu(k,1080) = lu(k,1080) - lu(k,321) * lu(k,1047) + lu(k,1084) = lu(k,1084) - lu(k,322) * lu(k,1047) + lu(k,1088) = lu(k,1088) - lu(k,323) * lu(k,1047) + lu(k,1093) = lu(k,1093) - lu(k,324) * lu(k,1047) + lu(k,1395) = lu(k,1395) - lu(k,319) * lu(k,1363) + lu(k,1396) = lu(k,1396) - lu(k,320) * lu(k,1363) + lu(k,1405) = lu(k,1405) - lu(k,321) * lu(k,1363) + lu(k,1409) = lu(k,1409) - lu(k,322) * lu(k,1363) + lu(k,1413) = lu(k,1413) - lu(k,323) * lu(k,1363) + lu(k,1418) = lu(k,1418) - lu(k,324) * lu(k,1363) + end do + end subroutine lu_fac07 + subroutine lu_fac08( avec_len, lu ) + use chem_mods, only : nzcnt + use shr_kind_mod, only : r8 => shr_kind_r8 + implicit none +!----------------------------------------------------------------------- +! ... dummy args +!----------------------------------------------------------------------- + integer, intent(in) :: avec_len + real(r8), intent(inout) :: lu(veclen,nzcnt) +!----------------------------------------------------------------------- +! ... local variables +!----------------------------------------------------------------------- + integer :: k + do k = 1,avec_len + lu(k,325) = 1._r8 / lu(k,325) + lu(k,326) = lu(k,326) * lu(k,325) + lu(k,327) = lu(k,327) * lu(k,325) + lu(k,328) = lu(k,328) * lu(k,325) + lu(k,329) = lu(k,329) * lu(k,325) + lu(k,330) = lu(k,330) * lu(k,325) + lu(k,331) = lu(k,331) * lu(k,325) + lu(k,332) = lu(k,332) * lu(k,325) + lu(k,333) = lu(k,333) * lu(k,325) + lu(k,1272) = lu(k,1272) - lu(k,326) * lu(k,1268) + lu(k,1273) = lu(k,1273) - lu(k,327) * lu(k,1268) + lu(k,1279) = lu(k,1279) - lu(k,328) * lu(k,1268) + lu(k,1282) = lu(k,1282) - lu(k,329) * lu(k,1268) + lu(k,1284) = lu(k,1284) - lu(k,330) * lu(k,1268) + lu(k,1285) = lu(k,1285) - lu(k,331) * lu(k,1268) + lu(k,1286) = lu(k,1286) - lu(k,332) * lu(k,1268) + lu(k,1291) = lu(k,1291) - lu(k,333) * lu(k,1268) + lu(k,1310) = lu(k,1310) - lu(k,326) * lu(k,1299) + lu(k,1311) = lu(k,1311) - lu(k,327) * lu(k,1299) + lu(k,1317) = lu(k,1317) - lu(k,328) * lu(k,1299) + lu(k,1320) = lu(k,1320) - lu(k,329) * lu(k,1299) + lu(k,1322) = lu(k,1322) - lu(k,330) * lu(k,1299) + lu(k,1323) = lu(k,1323) - lu(k,331) * lu(k,1299) + lu(k,1324) = lu(k,1324) - lu(k,332) * lu(k,1299) + lu(k,1329) = lu(k,1329) - lu(k,333) * lu(k,1299) + lu(k,1399) = lu(k,1399) - lu(k,326) * lu(k,1364) + lu(k,1400) = lu(k,1400) - lu(k,327) * lu(k,1364) + lu(k,1406) = lu(k,1406) - lu(k,328) * lu(k,1364) + lu(k,1409) = lu(k,1409) - lu(k,329) * lu(k,1364) + lu(k,1411) = lu(k,1411) - lu(k,330) * lu(k,1364) + lu(k,1412) = lu(k,1412) - lu(k,331) * lu(k,1364) + lu(k,1413) = lu(k,1413) - lu(k,332) * lu(k,1364) + lu(k,1418) = lu(k,1418) - lu(k,333) * lu(k,1364) + lu(k,334) = 1._r8 / lu(k,334) + lu(k,335) = lu(k,335) * lu(k,334) + lu(k,336) = lu(k,336) * lu(k,334) + lu(k,337) = lu(k,337) * lu(k,334) + lu(k,338) = lu(k,338) * lu(k,334) + lu(k,339) = lu(k,339) * lu(k,334) + lu(k,340) = lu(k,340) * lu(k,334) + lu(k,341) = lu(k,341) * lu(k,334) + lu(k,342) = lu(k,342) * lu(k,334) + lu(k,522) = lu(k,522) - lu(k,335) * lu(k,521) + lu(k,524) = lu(k,524) - lu(k,336) * lu(k,521) + lu(k,525) = lu(k,525) - lu(k,337) * lu(k,521) + lu(k,526) = lu(k,526) - lu(k,338) * lu(k,521) + lu(k,527) = lu(k,527) - lu(k,339) * lu(k,521) + lu(k,528) = lu(k,528) - lu(k,340) * lu(k,521) + lu(k,531) = lu(k,531) - lu(k,341) * lu(k,521) + lu(k,533) = lu(k,533) - lu(k,342) * lu(k,521) + lu(k,896) = lu(k,896) - lu(k,335) * lu(k,894) + lu(k,898) = lu(k,898) - lu(k,336) * lu(k,894) + lu(k,899) = lu(k,899) - lu(k,337) * lu(k,894) + lu(k,900) = lu(k,900) - lu(k,338) * lu(k,894) + lu(k,901) = lu(k,901) - lu(k,339) * lu(k,894) + lu(k,903) = lu(k,903) - lu(k,340) * lu(k,894) + lu(k,909) = lu(k,909) - lu(k,341) * lu(k,894) + lu(k,919) = lu(k,919) - lu(k,342) * lu(k,894) + lu(k,1428) = lu(k,1428) - lu(k,335) * lu(k,1426) + lu(k,1433) = lu(k,1433) - lu(k,336) * lu(k,1426) + lu(k,1434) = lu(k,1434) - lu(k,337) * lu(k,1426) + lu(k,1435) = lu(k,1435) - lu(k,338) * lu(k,1426) + lu(k,1436) = lu(k,1436) - lu(k,339) * lu(k,1426) + lu(k,1438) = lu(k,1438) - lu(k,340) * lu(k,1426) + lu(k,1446) = lu(k,1446) - lu(k,341) * lu(k,1426) + lu(k,1459) = lu(k,1459) - lu(k,342) * lu(k,1426) + lu(k,343) = 1._r8 / lu(k,343) + lu(k,344) = lu(k,344) * lu(k,343) + lu(k,345) = lu(k,345) * lu(k,343) + lu(k,346) = lu(k,346) * lu(k,343) + lu(k,347) = lu(k,347) * lu(k,343) + lu(k,348) = lu(k,348) * lu(k,343) + lu(k,349) = lu(k,349) * lu(k,343) + lu(k,350) = lu(k,350) * lu(k,343) + lu(k,351) = lu(k,351) * lu(k,343) + lu(k,352) = lu(k,352) * lu(k,343) + lu(k,1101) = - lu(k,344) * lu(k,1097) + lu(k,1111) = lu(k,1111) - lu(k,345) * lu(k,1097) + lu(k,1114) = - lu(k,346) * lu(k,1097) + lu(k,1116) = lu(k,1116) - lu(k,347) * lu(k,1097) + lu(k,1125) = lu(k,1125) - lu(k,348) * lu(k,1097) + lu(k,1128) = lu(k,1128) - lu(k,349) * lu(k,1097) + lu(k,1131) = lu(k,1131) - lu(k,350) * lu(k,1097) + lu(k,1134) = lu(k,1134) - lu(k,351) * lu(k,1097) + lu(k,1135) = lu(k,1135) - lu(k,352) * lu(k,1097) + lu(k,1210) = - lu(k,344) * lu(k,1208) + lu(k,1221) = lu(k,1221) - lu(k,345) * lu(k,1208) + lu(k,1224) = lu(k,1224) - lu(k,346) * lu(k,1208) + lu(k,1226) = lu(k,1226) - lu(k,347) * lu(k,1208) + lu(k,1235) = lu(k,1235) - lu(k,348) * lu(k,1208) + lu(k,1238) = - lu(k,349) * lu(k,1208) + lu(k,1241) = lu(k,1241) - lu(k,350) * lu(k,1208) + lu(k,1244) = lu(k,1244) - lu(k,351) * lu(k,1208) + lu(k,1245) = lu(k,1245) - lu(k,352) * lu(k,1208) + lu(k,1370) = lu(k,1370) - lu(k,344) * lu(k,1365) + lu(k,1388) = lu(k,1388) - lu(k,345) * lu(k,1365) + lu(k,1391) = lu(k,1391) - lu(k,346) * lu(k,1365) + lu(k,1393) = lu(k,1393) - lu(k,347) * lu(k,1365) + lu(k,1404) = lu(k,1404) - lu(k,348) * lu(k,1365) + lu(k,1407) = lu(k,1407) - lu(k,349) * lu(k,1365) + lu(k,1410) = lu(k,1410) - lu(k,350) * lu(k,1365) + lu(k,1413) = lu(k,1413) - lu(k,351) * lu(k,1365) + lu(k,1414) = lu(k,1414) - lu(k,352) * lu(k,1365) + lu(k,353) = 1._r8 / lu(k,353) + lu(k,354) = lu(k,354) * lu(k,353) + lu(k,355) = lu(k,355) * lu(k,353) + lu(k,356) = lu(k,356) * lu(k,353) + lu(k,357) = lu(k,357) * lu(k,353) + lu(k,628) = lu(k,628) - lu(k,354) * lu(k,620) + lu(k,634) = lu(k,634) - lu(k,355) * lu(k,620) + lu(k,636) = lu(k,636) - lu(k,356) * lu(k,620) + lu(k,639) = - lu(k,357) * lu(k,620) + lu(k,767) = lu(k,767) - lu(k,354) * lu(k,762) + lu(k,773) = lu(k,773) - lu(k,355) * lu(k,762) + lu(k,775) = lu(k,775) - lu(k,356) * lu(k,762) + lu(k,777) = lu(k,777) - lu(k,357) * lu(k,762) + lu(k,794) = lu(k,794) - lu(k,354) * lu(k,781) + lu(k,801) = lu(k,801) - lu(k,355) * lu(k,781) + lu(k,803) = lu(k,803) - lu(k,356) * lu(k,781) + lu(k,806) = lu(k,806) - lu(k,357) * lu(k,781) + lu(k,1072) = lu(k,1072) - lu(k,354) * lu(k,1048) + lu(k,1084) = lu(k,1084) - lu(k,355) * lu(k,1048) + lu(k,1088) = lu(k,1088) - lu(k,356) * lu(k,1048) + lu(k,1093) = lu(k,1093) - lu(k,357) * lu(k,1048) + lu(k,1119) = lu(k,1119) - lu(k,354) * lu(k,1098) + lu(k,1130) = lu(k,1130) - lu(k,355) * lu(k,1098) + lu(k,1134) = lu(k,1134) - lu(k,356) * lu(k,1098) + lu(k,1139) = - lu(k,357) * lu(k,1098) + lu(k,1185) = lu(k,1185) - lu(k,354) * lu(k,1167) + lu(k,1194) = lu(k,1194) - lu(k,355) * lu(k,1167) + lu(k,1198) = lu(k,1198) - lu(k,356) * lu(k,1167) + lu(k,1203) = lu(k,1203) - lu(k,357) * lu(k,1167) + lu(k,1396) = lu(k,1396) - lu(k,354) * lu(k,1366) + lu(k,1409) = lu(k,1409) - lu(k,355) * lu(k,1366) + lu(k,1413) = lu(k,1413) - lu(k,356) * lu(k,1366) + lu(k,1418) = lu(k,1418) - lu(k,357) * lu(k,1366) + lu(k,358) = 1._r8 / lu(k,358) + lu(k,359) = lu(k,359) * lu(k,358) + lu(k,360) = lu(k,360) * lu(k,358) + lu(k,361) = lu(k,361) * lu(k,358) + lu(k,362) = lu(k,362) * lu(k,358) + lu(k,363) = lu(k,363) * lu(k,358) + lu(k,364) = lu(k,364) * lu(k,358) + lu(k,841) = lu(k,841) - lu(k,359) * lu(k,839) + lu(k,843) = lu(k,843) - lu(k,360) * lu(k,839) + lu(k,848) = lu(k,848) - lu(k,361) * lu(k,839) + lu(k,850) = lu(k,850) - lu(k,362) * lu(k,839) + lu(k,851) = lu(k,851) - lu(k,363) * lu(k,839) + lu(k,853) = lu(k,853) - lu(k,364) * lu(k,839) + lu(k,907) = lu(k,907) - lu(k,359) * lu(k,895) + lu(k,909) = lu(k,909) - lu(k,360) * lu(k,895) + lu(k,915) = lu(k,915) - lu(k,361) * lu(k,895) + lu(k,918) = - lu(k,362) * lu(k,895) + lu(k,919) = lu(k,919) - lu(k,363) * lu(k,895) + lu(k,921) = lu(k,921) - lu(k,364) * lu(k,895) + lu(k,1120) = lu(k,1120) - lu(k,359) * lu(k,1099) + lu(k,1122) = lu(k,1122) - lu(k,360) * lu(k,1099) + lu(k,1128) = lu(k,1128) - lu(k,361) * lu(k,1099) + lu(k,1134) = lu(k,1134) - lu(k,362) * lu(k,1099) + lu(k,1135) = lu(k,1135) - lu(k,363) * lu(k,1099) + lu(k,1138) = lu(k,1138) - lu(k,364) * lu(k,1099) + lu(k,1398) = lu(k,1398) - lu(k,359) * lu(k,1367) + lu(k,1401) = lu(k,1401) - lu(k,360) * lu(k,1367) + lu(k,1407) = lu(k,1407) - lu(k,361) * lu(k,1367) + lu(k,1413) = lu(k,1413) - lu(k,362) * lu(k,1367) + lu(k,1414) = lu(k,1414) - lu(k,363) * lu(k,1367) + lu(k,1417) = lu(k,1417) - lu(k,364) * lu(k,1367) + lu(k,1443) = lu(k,1443) - lu(k,359) * lu(k,1427) + lu(k,1446) = lu(k,1446) - lu(k,360) * lu(k,1427) + lu(k,1452) = lu(k,1452) - lu(k,361) * lu(k,1427) + lu(k,1458) = lu(k,1458) - lu(k,362) * lu(k,1427) + lu(k,1459) = lu(k,1459) - lu(k,363) * lu(k,1427) + lu(k,1462) = lu(k,1462) - lu(k,364) * lu(k,1427) + lu(k,365) = 1._r8 / lu(k,365) + lu(k,366) = lu(k,366) * lu(k,365) + lu(k,367) = lu(k,367) * lu(k,365) + lu(k,368) = lu(k,368) * lu(k,365) + lu(k,369) = lu(k,369) * lu(k,365) + lu(k,608) = lu(k,608) - lu(k,366) * lu(k,606) + lu(k,609) = lu(k,609) - lu(k,367) * lu(k,606) + lu(k,611) = lu(k,611) - lu(k,368) * lu(k,606) + lu(k,612) = lu(k,612) - lu(k,369) * lu(k,606) + lu(k,670) = lu(k,670) - lu(k,366) * lu(k,667) + lu(k,674) = lu(k,674) - lu(k,367) * lu(k,667) + lu(k,677) = lu(k,677) - lu(k,368) * lu(k,667) + lu(k,680) = lu(k,680) - lu(k,369) * lu(k,667) + lu(k,698) = - lu(k,366) * lu(k,694) + lu(k,707) = - lu(k,367) * lu(k,694) + lu(k,710) = lu(k,710) - lu(k,368) * lu(k,694) + lu(k,715) = lu(k,715) - lu(k,369) * lu(k,694) + lu(k,785) = lu(k,785) - lu(k,366) * lu(k,782) + lu(k,794) = lu(k,794) - lu(k,367) * lu(k,782) + lu(k,798) = lu(k,798) - lu(k,368) * lu(k,782) + lu(k,803) = lu(k,803) - lu(k,369) * lu(k,782) + lu(k,1176) = lu(k,1176) - lu(k,366) * lu(k,1168) + lu(k,1185) = lu(k,1185) - lu(k,367) * lu(k,1168) + lu(k,1191) = lu(k,1191) - lu(k,368) * lu(k,1168) + lu(k,1198) = lu(k,1198) - lu(k,369) * lu(k,1168) + lu(k,1220) = lu(k,1220) - lu(k,366) * lu(k,1209) + lu(k,1229) = - lu(k,367) * lu(k,1209) + lu(k,1237) = lu(k,1237) - lu(k,368) * lu(k,1209) + lu(k,1244) = lu(k,1244) - lu(k,369) * lu(k,1209) + lu(k,1387) = lu(k,1387) - lu(k,366) * lu(k,1368) + lu(k,1396) = lu(k,1396) - lu(k,367) * lu(k,1368) + lu(k,1406) = lu(k,1406) - lu(k,368) * lu(k,1368) + lu(k,1413) = lu(k,1413) - lu(k,369) * lu(k,1368) + lu(k,1483) = lu(k,1483) - lu(k,366) * lu(k,1466) + lu(k,1492) = lu(k,1492) - lu(k,367) * lu(k,1466) + lu(k,1499) = lu(k,1499) - lu(k,368) * lu(k,1466) + lu(k,1506) = lu(k,1506) - lu(k,369) * lu(k,1466) + end do + end subroutine lu_fac08 + subroutine lu_fac09( avec_len, lu ) + use chem_mods, only : nzcnt + use shr_kind_mod, only : r8 => shr_kind_r8 + implicit none +!----------------------------------------------------------------------- +! ... dummy args +!----------------------------------------------------------------------- + integer, intent(in) :: avec_len + real(r8), intent(inout) :: lu(veclen,nzcnt) +!----------------------------------------------------------------------- +! ... local variables +!----------------------------------------------------------------------- + integer :: k + do k = 1,avec_len + lu(k,370) = 1._r8 / lu(k,370) + lu(k,371) = lu(k,371) * lu(k,370) + lu(k,372) = lu(k,372) * lu(k,370) + lu(k,373) = lu(k,373) * lu(k,370) + lu(k,374) = lu(k,374) * lu(k,370) + lu(k,445) = - lu(k,371) * lu(k,441) + lu(k,446) = - lu(k,372) * lu(k,441) + lu(k,447) = lu(k,447) - lu(k,373) * lu(k,441) + lu(k,449) = lu(k,449) - lu(k,374) * lu(k,441) + lu(k,503) = - lu(k,371) * lu(k,499) + lu(k,504) = lu(k,504) - lu(k,372) * lu(k,499) + lu(k,505) = lu(k,505) - lu(k,373) * lu(k,499) + lu(k,509) = lu(k,509) - lu(k,374) * lu(k,499) + lu(k,512) = lu(k,512) - lu(k,371) * lu(k,510) + lu(k,513) = - lu(k,372) * lu(k,510) + lu(k,514) = lu(k,514) - lu(k,373) * lu(k,510) + lu(k,517) = lu(k,517) - lu(k,374) * lu(k,510) + lu(k,526) = lu(k,526) - lu(k,371) * lu(k,522) + lu(k,527) = lu(k,527) - lu(k,372) * lu(k,522) + lu(k,528) = lu(k,528) - lu(k,373) * lu(k,522) + lu(k,533) = lu(k,533) - lu(k,374) * lu(k,522) + lu(k,559) = lu(k,559) - lu(k,371) * lu(k,555) + lu(k,560) = - lu(k,372) * lu(k,555) + lu(k,561) = lu(k,561) - lu(k,373) * lu(k,555) + lu(k,568) = lu(k,568) - lu(k,374) * lu(k,555) + lu(k,900) = lu(k,900) - lu(k,371) * lu(k,896) + lu(k,901) = lu(k,901) - lu(k,372) * lu(k,896) + lu(k,903) = lu(k,903) - lu(k,373) * lu(k,896) + lu(k,919) = lu(k,919) - lu(k,374) * lu(k,896) + lu(k,1435) = lu(k,1435) - lu(k,371) * lu(k,1428) + lu(k,1436) = lu(k,1436) - lu(k,372) * lu(k,1428) + lu(k,1438) = lu(k,1438) - lu(k,373) * lu(k,1428) + lu(k,1459) = lu(k,1459) - lu(k,374) * lu(k,1428) + lu(k,1475) = lu(k,1475) - lu(k,371) * lu(k,1467) + lu(k,1476) = - lu(k,372) * lu(k,1467) + lu(k,1477) = lu(k,1477) - lu(k,373) * lu(k,1467) + lu(k,1507) = lu(k,1507) - lu(k,374) * lu(k,1467) + lu(k,377) = 1._r8 / lu(k,377) + lu(k,378) = lu(k,378) * lu(k,377) + lu(k,379) = lu(k,379) * lu(k,377) + lu(k,380) = lu(k,380) * lu(k,377) + lu(k,381) = lu(k,381) * lu(k,377) + lu(k,382) = lu(k,382) * lu(k,377) + lu(k,383) = lu(k,383) * lu(k,377) + lu(k,384) = lu(k,384) * lu(k,377) + lu(k,1060) = lu(k,1060) - lu(k,378) * lu(k,1049) + lu(k,1076) = lu(k,1076) - lu(k,379) * lu(k,1049) + lu(k,1079) = lu(k,1079) - lu(k,380) * lu(k,1049) + lu(k,1080) = lu(k,1080) - lu(k,381) * lu(k,1049) + lu(k,1081) = lu(k,1081) - lu(k,382) * lu(k,1049) + lu(k,1088) = lu(k,1088) - lu(k,383) * lu(k,1049) + lu(k,1090) = lu(k,1090) - lu(k,384) * lu(k,1049) + lu(k,1106) = - lu(k,378) * lu(k,1100) + lu(k,1122) = lu(k,1122) - lu(k,379) * lu(k,1100) + lu(k,1125) = lu(k,1125) - lu(k,380) * lu(k,1100) + lu(k,1126) = lu(k,1126) - lu(k,381) * lu(k,1100) + lu(k,1127) = lu(k,1127) - lu(k,382) * lu(k,1100) + lu(k,1134) = lu(k,1134) - lu(k,383) * lu(k,1100) + lu(k,1136) = lu(k,1136) - lu(k,384) * lu(k,1100) + lu(k,1304) = - lu(k,378) * lu(k,1300) + lu(k,1312) = lu(k,1312) - lu(k,379) * lu(k,1300) + lu(k,1315) = - lu(k,380) * lu(k,1300) + lu(k,1316) = lu(k,1316) - lu(k,381) * lu(k,1300) + lu(k,1317) = lu(k,1317) - lu(k,382) * lu(k,1300) + lu(k,1324) = lu(k,1324) - lu(k,383) * lu(k,1300) + lu(k,1326) = - lu(k,384) * lu(k,1300) + lu(k,1383) = lu(k,1383) - lu(k,378) * lu(k,1369) + lu(k,1401) = lu(k,1401) - lu(k,379) * lu(k,1369) + lu(k,1404) = lu(k,1404) - lu(k,380) * lu(k,1369) + lu(k,1405) = lu(k,1405) - lu(k,381) * lu(k,1369) + lu(k,1406) = lu(k,1406) - lu(k,382) * lu(k,1369) + lu(k,1413) = lu(k,1413) - lu(k,383) * lu(k,1369) + lu(k,1415) = lu(k,1415) - lu(k,384) * lu(k,1369) + lu(k,1480) = lu(k,1480) - lu(k,378) * lu(k,1468) + lu(k,1494) = lu(k,1494) - lu(k,379) * lu(k,1468) + lu(k,1497) = lu(k,1497) - lu(k,380) * lu(k,1468) + lu(k,1498) = lu(k,1498) - lu(k,381) * lu(k,1468) + lu(k,1499) = lu(k,1499) - lu(k,382) * lu(k,1468) + lu(k,1506) = lu(k,1506) - lu(k,383) * lu(k,1468) + lu(k,1508) = lu(k,1508) - lu(k,384) * lu(k,1468) + lu(k,386) = 1._r8 / lu(k,386) + lu(k,387) = lu(k,387) * lu(k,386) + lu(k,388) = lu(k,388) * lu(k,386) + lu(k,389) = lu(k,389) * lu(k,386) + lu(k,390) = lu(k,390) * lu(k,386) + lu(k,391) = lu(k,391) * lu(k,386) + lu(k,392) = lu(k,392) * lu(k,386) + lu(k,393) = lu(k,393) * lu(k,386) + lu(k,860) = lu(k,860) - lu(k,387) * lu(k,857) + lu(k,861) = lu(k,861) - lu(k,388) * lu(k,857) + lu(k,862) = - lu(k,389) * lu(k,857) + lu(k,868) = lu(k,868) - lu(k,390) * lu(k,857) + lu(k,869) = lu(k,869) - lu(k,391) * lu(k,857) + lu(k,870) = lu(k,870) - lu(k,392) * lu(k,857) + lu(k,872) = lu(k,872) - lu(k,393) * lu(k,857) + lu(k,929) = - lu(k,387) * lu(k,926) + lu(k,930) = lu(k,930) - lu(k,388) * lu(k,926) + lu(k,932) = lu(k,932) - lu(k,389) * lu(k,926) + lu(k,941) = lu(k,941) - lu(k,390) * lu(k,926) + lu(k,942) = lu(k,942) - lu(k,391) * lu(k,926) + lu(k,943) = lu(k,943) - lu(k,392) * lu(k,926) + lu(k,946) = - lu(k,393) * lu(k,926) + lu(k,991) = - lu(k,387) * lu(k,980) + lu(k,992) = lu(k,992) - lu(k,388) * lu(k,980) + lu(k,994) = lu(k,994) - lu(k,389) * lu(k,980) + lu(k,1004) = - lu(k,390) * lu(k,980) + lu(k,1005) = lu(k,1005) - lu(k,391) * lu(k,980) + lu(k,1006) = lu(k,1006) - lu(k,392) * lu(k,980) + lu(k,1010) = lu(k,1010) - lu(k,393) * lu(k,980) + lu(k,1074) = lu(k,1074) - lu(k,387) * lu(k,1050) + lu(k,1075) = lu(k,1075) - lu(k,388) * lu(k,1050) + lu(k,1077) = lu(k,1077) - lu(k,389) * lu(k,1050) + lu(k,1087) = lu(k,1087) - lu(k,390) * lu(k,1050) + lu(k,1088) = lu(k,1088) - lu(k,391) * lu(k,1050) + lu(k,1089) = lu(k,1089) - lu(k,392) * lu(k,1050) + lu(k,1093) = lu(k,1093) - lu(k,393) * lu(k,1050) + lu(k,1444) = lu(k,1444) - lu(k,387) * lu(k,1429) + lu(k,1445) = lu(k,1445) - lu(k,388) * lu(k,1429) + lu(k,1447) = lu(k,1447) - lu(k,389) * lu(k,1429) + lu(k,1457) = lu(k,1457) - lu(k,390) * lu(k,1429) + lu(k,1458) = lu(k,1458) - lu(k,391) * lu(k,1429) + lu(k,1459) = lu(k,1459) - lu(k,392) * lu(k,1429) + lu(k,1463) = lu(k,1463) - lu(k,393) * lu(k,1429) + lu(k,394) = 1._r8 / lu(k,394) + lu(k,395) = lu(k,395) * lu(k,394) + lu(k,396) = lu(k,396) * lu(k,394) + lu(k,397) = lu(k,397) * lu(k,394) + lu(k,398) = lu(k,398) * lu(k,394) + lu(k,399) = lu(k,399) * lu(k,394) + lu(k,461) = - lu(k,395) * lu(k,459) + lu(k,463) = - lu(k,396) * lu(k,459) + lu(k,468) = lu(k,468) - lu(k,397) * lu(k,459) + lu(k,469) = lu(k,469) - lu(k,398) * lu(k,459) + lu(k,471) = lu(k,471) - lu(k,399) * lu(k,459) + lu(k,1059) = lu(k,1059) - lu(k,395) * lu(k,1051) + lu(k,1071) = lu(k,1071) - lu(k,396) * lu(k,1051) + lu(k,1084) = lu(k,1084) - lu(k,397) * lu(k,1051) + lu(k,1088) = lu(k,1088) - lu(k,398) * lu(k,1051) + lu(k,1093) = lu(k,1093) - lu(k,399) * lu(k,1051) + lu(k,1105) = - lu(k,395) * lu(k,1101) + lu(k,1118) = lu(k,1118) - lu(k,396) * lu(k,1101) + lu(k,1130) = lu(k,1130) - lu(k,397) * lu(k,1101) + lu(k,1134) = lu(k,1134) - lu(k,398) * lu(k,1101) + lu(k,1139) = lu(k,1139) - lu(k,399) * lu(k,1101) + lu(k,1172) = lu(k,1172) - lu(k,395) * lu(k,1169) + lu(k,1184) = lu(k,1184) - lu(k,396) * lu(k,1169) + lu(k,1194) = lu(k,1194) - lu(k,397) * lu(k,1169) + lu(k,1198) = lu(k,1198) - lu(k,398) * lu(k,1169) + lu(k,1203) = lu(k,1203) - lu(k,399) * lu(k,1169) + lu(k,1215) = - lu(k,395) * lu(k,1210) + lu(k,1228) = lu(k,1228) - lu(k,396) * lu(k,1210) + lu(k,1240) = - lu(k,397) * lu(k,1210) + lu(k,1244) = lu(k,1244) - lu(k,398) * lu(k,1210) + lu(k,1249) = - lu(k,399) * lu(k,1210) + lu(k,1382) = lu(k,1382) - lu(k,395) * lu(k,1370) + lu(k,1395) = lu(k,1395) - lu(k,396) * lu(k,1370) + lu(k,1409) = lu(k,1409) - lu(k,397) * lu(k,1370) + lu(k,1413) = lu(k,1413) - lu(k,398) * lu(k,1370) + lu(k,1418) = lu(k,1418) - lu(k,399) * lu(k,1370) + lu(k,1479) = lu(k,1479) - lu(k,395) * lu(k,1469) + lu(k,1491) = lu(k,1491) - lu(k,396) * lu(k,1469) + lu(k,1502) = lu(k,1502) - lu(k,397) * lu(k,1469) + lu(k,1506) = lu(k,1506) - lu(k,398) * lu(k,1469) + lu(k,1511) = - lu(k,399) * lu(k,1469) + lu(k,401) = 1._r8 / lu(k,401) + lu(k,402) = lu(k,402) * lu(k,401) + lu(k,403) = lu(k,403) * lu(k,401) + lu(k,404) = lu(k,404) * lu(k,401) + lu(k,405) = lu(k,405) * lu(k,401) + lu(k,406) = lu(k,406) * lu(k,401) + lu(k,407) = lu(k,407) * lu(k,401) + lu(k,408) = lu(k,408) * lu(k,401) + lu(k,409) = lu(k,409) * lu(k,401) + lu(k,410) = lu(k,410) * lu(k,401) + lu(k,622) = - lu(k,402) * lu(k,621) + lu(k,624) = lu(k,624) - lu(k,403) * lu(k,621) + lu(k,629) = - lu(k,404) * lu(k,621) + lu(k,630) = lu(k,630) - lu(k,405) * lu(k,621) + lu(k,631) = lu(k,631) - lu(k,406) * lu(k,621) + lu(k,632) = lu(k,632) - lu(k,407) * lu(k,621) + lu(k,636) = lu(k,636) - lu(k,408) * lu(k,621) + lu(k,637) = - lu(k,409) * lu(k,621) + lu(k,639) = lu(k,639) - lu(k,410) * lu(k,621) + lu(k,1061) = lu(k,1061) - lu(k,402) * lu(k,1052) + lu(k,1062) = lu(k,1062) - lu(k,403) * lu(k,1052) + lu(k,1076) = lu(k,1076) - lu(k,404) * lu(k,1052) + lu(k,1079) = lu(k,1079) - lu(k,405) * lu(k,1052) + lu(k,1080) = lu(k,1080) - lu(k,406) * lu(k,1052) + lu(k,1081) = lu(k,1081) - lu(k,407) * lu(k,1052) + lu(k,1088) = lu(k,1088) - lu(k,408) * lu(k,1052) + lu(k,1090) = lu(k,1090) - lu(k,409) * lu(k,1052) + lu(k,1093) = lu(k,1093) - lu(k,410) * lu(k,1052) + lu(k,1384) = lu(k,1384) - lu(k,402) * lu(k,1371) + lu(k,1386) = lu(k,1386) - lu(k,403) * lu(k,1371) + lu(k,1401) = lu(k,1401) - lu(k,404) * lu(k,1371) + lu(k,1404) = lu(k,1404) - lu(k,405) * lu(k,1371) + lu(k,1405) = lu(k,1405) - lu(k,406) * lu(k,1371) + lu(k,1406) = lu(k,1406) - lu(k,407) * lu(k,1371) + lu(k,1413) = lu(k,1413) - lu(k,408) * lu(k,1371) + lu(k,1415) = lu(k,1415) - lu(k,409) * lu(k,1371) + lu(k,1418) = lu(k,1418) - lu(k,410) * lu(k,1371) + lu(k,1481) = lu(k,1481) - lu(k,402) * lu(k,1470) + lu(k,1482) = lu(k,1482) - lu(k,403) * lu(k,1470) + lu(k,1494) = lu(k,1494) - lu(k,404) * lu(k,1470) + lu(k,1497) = lu(k,1497) - lu(k,405) * lu(k,1470) + lu(k,1498) = lu(k,1498) - lu(k,406) * lu(k,1470) + lu(k,1499) = lu(k,1499) - lu(k,407) * lu(k,1470) + lu(k,1506) = lu(k,1506) - lu(k,408) * lu(k,1470) + lu(k,1508) = lu(k,1508) - lu(k,409) * lu(k,1470) + lu(k,1511) = lu(k,1511) - lu(k,410) * lu(k,1470) + end do + end subroutine lu_fac09 + subroutine lu_fac10( avec_len, lu ) + use chem_mods, only : nzcnt + use shr_kind_mod, only : r8 => shr_kind_r8 + implicit none +!----------------------------------------------------------------------- +! ... dummy args +!----------------------------------------------------------------------- + integer, intent(in) :: avec_len + real(r8), intent(inout) :: lu(veclen,nzcnt) +!----------------------------------------------------------------------- +! ... local variables +!----------------------------------------------------------------------- + integer :: k + do k = 1,avec_len + lu(k,411) = 1._r8 / lu(k,411) + lu(k,412) = lu(k,412) * lu(k,411) + lu(k,413) = lu(k,413) * lu(k,411) + lu(k,414) = lu(k,414) * lu(k,411) + lu(k,415) = lu(k,415) * lu(k,411) + lu(k,416) = lu(k,416) * lu(k,411) + lu(k,417) = lu(k,417) * lu(k,411) + lu(k,418) = lu(k,418) * lu(k,411) + lu(k,419) = lu(k,419) * lu(k,411) + lu(k,420) = lu(k,420) * lu(k,411) + lu(k,474) = - lu(k,412) * lu(k,472) + lu(k,477) = lu(k,477) - lu(k,413) * lu(k,472) + lu(k,479) = lu(k,479) - lu(k,414) * lu(k,472) + lu(k,481) = - lu(k,415) * lu(k,472) + lu(k,482) = lu(k,482) - lu(k,416) * lu(k,472) + lu(k,483) = lu(k,483) - lu(k,417) * lu(k,472) + lu(k,486) = lu(k,486) - lu(k,418) * lu(k,472) + lu(k,487) = lu(k,487) - lu(k,419) * lu(k,472) + lu(k,488) = - lu(k,420) * lu(k,472) + lu(k,1058) = lu(k,1058) - lu(k,412) * lu(k,1053) + lu(k,1064) = lu(k,1064) - lu(k,413) * lu(k,1053) + lu(k,1069) = lu(k,1069) - lu(k,414) * lu(k,1053) + lu(k,1079) = lu(k,1079) - lu(k,415) * lu(k,1053) + lu(k,1080) = lu(k,1080) - lu(k,416) * lu(k,1053) + lu(k,1081) = lu(k,1081) - lu(k,417) * lu(k,1053) + lu(k,1085) = lu(k,1085) - lu(k,418) * lu(k,1053) + lu(k,1088) = lu(k,1088) - lu(k,419) * lu(k,1053) + lu(k,1090) = lu(k,1090) - lu(k,420) * lu(k,1053) + lu(k,1214) = lu(k,1214) - lu(k,412) * lu(k,1211) + lu(k,1221) = lu(k,1221) - lu(k,413) * lu(k,1211) + lu(k,1226) = lu(k,1226) - lu(k,414) * lu(k,1211) + lu(k,1235) = lu(k,1235) - lu(k,415) * lu(k,1211) + lu(k,1236) = lu(k,1236) - lu(k,416) * lu(k,1211) + lu(k,1237) = lu(k,1237) - lu(k,417) * lu(k,1211) + lu(k,1241) = lu(k,1241) - lu(k,418) * lu(k,1211) + lu(k,1244) = lu(k,1244) - lu(k,419) * lu(k,1211) + lu(k,1246) = lu(k,1246) - lu(k,420) * lu(k,1211) + lu(k,1478) = lu(k,1478) - lu(k,412) * lu(k,1471) + lu(k,1484) = lu(k,1484) - lu(k,413) * lu(k,1471) + lu(k,1489) = lu(k,1489) - lu(k,414) * lu(k,1471) + lu(k,1497) = lu(k,1497) - lu(k,415) * lu(k,1471) + lu(k,1498) = lu(k,1498) - lu(k,416) * lu(k,1471) + lu(k,1499) = lu(k,1499) - lu(k,417) * lu(k,1471) + lu(k,1503) = lu(k,1503) - lu(k,418) * lu(k,1471) + lu(k,1506) = lu(k,1506) - lu(k,419) * lu(k,1471) + lu(k,1508) = lu(k,1508) - lu(k,420) * lu(k,1471) + lu(k,424) = 1._r8 / lu(k,424) + lu(k,425) = lu(k,425) * lu(k,424) + lu(k,426) = lu(k,426) * lu(k,424) + lu(k,427) = lu(k,427) * lu(k,424) + lu(k,428) = lu(k,428) * lu(k,424) + lu(k,429) = lu(k,429) * lu(k,424) + lu(k,430) = lu(k,430) * lu(k,424) + lu(k,431) = lu(k,431) * lu(k,424) + lu(k,432) = lu(k,432) * lu(k,424) + lu(k,1062) = lu(k,1062) - lu(k,425) * lu(k,1054) + lu(k,1076) = lu(k,1076) - lu(k,426) * lu(k,1054) + lu(k,1079) = lu(k,1079) - lu(k,427) * lu(k,1054) + lu(k,1080) = lu(k,1080) - lu(k,428) * lu(k,1054) + lu(k,1081) = lu(k,1081) - lu(k,429) * lu(k,1054) + lu(k,1084) = lu(k,1084) - lu(k,430) * lu(k,1054) + lu(k,1088) = lu(k,1088) - lu(k,431) * lu(k,1054) + lu(k,1090) = lu(k,1090) - lu(k,432) * lu(k,1054) + lu(k,1175) = lu(k,1175) - lu(k,425) * lu(k,1170) + lu(k,1186) = lu(k,1186) - lu(k,426) * lu(k,1170) + lu(k,1189) = lu(k,1189) - lu(k,427) * lu(k,1170) + lu(k,1190) = lu(k,1190) - lu(k,428) * lu(k,1170) + lu(k,1191) = lu(k,1191) - lu(k,429) * lu(k,1170) + lu(k,1194) = lu(k,1194) - lu(k,430) * lu(k,1170) + lu(k,1198) = lu(k,1198) - lu(k,431) * lu(k,1170) + lu(k,1200) = lu(k,1200) - lu(k,432) * lu(k,1170) + lu(k,1305) = - lu(k,425) * lu(k,1301) + lu(k,1312) = lu(k,1312) - lu(k,426) * lu(k,1301) + lu(k,1315) = lu(k,1315) - lu(k,427) * lu(k,1301) + lu(k,1316) = lu(k,1316) - lu(k,428) * lu(k,1301) + lu(k,1317) = lu(k,1317) - lu(k,429) * lu(k,1301) + lu(k,1320) = lu(k,1320) - lu(k,430) * lu(k,1301) + lu(k,1324) = lu(k,1324) - lu(k,431) * lu(k,1301) + lu(k,1326) = lu(k,1326) - lu(k,432) * lu(k,1301) + lu(k,1386) = lu(k,1386) - lu(k,425) * lu(k,1372) + lu(k,1401) = lu(k,1401) - lu(k,426) * lu(k,1372) + lu(k,1404) = lu(k,1404) - lu(k,427) * lu(k,1372) + lu(k,1405) = lu(k,1405) - lu(k,428) * lu(k,1372) + lu(k,1406) = lu(k,1406) - lu(k,429) * lu(k,1372) + lu(k,1409) = lu(k,1409) - lu(k,430) * lu(k,1372) + lu(k,1413) = lu(k,1413) - lu(k,431) * lu(k,1372) + lu(k,1415) = lu(k,1415) - lu(k,432) * lu(k,1372) + lu(k,1482) = lu(k,1482) - lu(k,425) * lu(k,1472) + lu(k,1494) = lu(k,1494) - lu(k,426) * lu(k,1472) + lu(k,1497) = lu(k,1497) - lu(k,427) * lu(k,1472) + lu(k,1498) = lu(k,1498) - lu(k,428) * lu(k,1472) + lu(k,1499) = lu(k,1499) - lu(k,429) * lu(k,1472) + lu(k,1502) = lu(k,1502) - lu(k,430) * lu(k,1472) + lu(k,1506) = lu(k,1506) - lu(k,431) * lu(k,1472) + lu(k,1508) = lu(k,1508) - lu(k,432) * lu(k,1472) + lu(k,433) = 1._r8 / lu(k,433) + lu(k,434) = lu(k,434) * lu(k,433) + lu(k,435) = lu(k,435) * lu(k,433) + lu(k,436) = lu(k,436) * lu(k,433) + lu(k,437) = lu(k,437) * lu(k,433) + lu(k,438) = lu(k,438) * lu(k,433) + lu(k,439) = lu(k,439) * lu(k,433) + lu(k,440) = lu(k,440) * lu(k,433) + lu(k,876) = lu(k,876) - lu(k,434) * lu(k,873) + lu(k,878) = lu(k,878) - lu(k,435) * lu(k,873) + lu(k,883) = - lu(k,436) * lu(k,873) + lu(k,884) = - lu(k,437) * lu(k,873) + lu(k,885) = - lu(k,438) * lu(k,873) + lu(k,887) = - lu(k,439) * lu(k,873) + lu(k,888) = - lu(k,440) * lu(k,873) + lu(k,1016) = lu(k,1016) - lu(k,434) * lu(k,1011) + lu(k,1018) = - lu(k,435) * lu(k,1011) + lu(k,1027) = - lu(k,436) * lu(k,1011) + lu(k,1029) = lu(k,1029) - lu(k,437) * lu(k,1011) + lu(k,1030) = lu(k,1030) - lu(k,438) * lu(k,1011) + lu(k,1033) = lu(k,1033) - lu(k,439) * lu(k,1011) + lu(k,1034) = lu(k,1034) - lu(k,440) * lu(k,1011) + lu(k,1075) = lu(k,1075) - lu(k,434) * lu(k,1055) + lu(k,1077) = lu(k,1077) - lu(k,435) * lu(k,1055) + lu(k,1086) = - lu(k,436) * lu(k,1055) + lu(k,1088) = lu(k,1088) - lu(k,437) * lu(k,1055) + lu(k,1089) = lu(k,1089) - lu(k,438) * lu(k,1055) + lu(k,1092) = lu(k,1092) - lu(k,439) * lu(k,1055) + lu(k,1093) = lu(k,1093) - lu(k,440) * lu(k,1055) + lu(k,1273) = lu(k,1273) - lu(k,434) * lu(k,1269) + lu(k,1275) = lu(k,1275) - lu(k,435) * lu(k,1269) + lu(k,1284) = lu(k,1284) - lu(k,436) * lu(k,1269) + lu(k,1286) = lu(k,1286) - lu(k,437) * lu(k,1269) + lu(k,1287) = lu(k,1287) - lu(k,438) * lu(k,1269) + lu(k,1290) = lu(k,1290) - lu(k,439) * lu(k,1269) + lu(k,1291) = lu(k,1291) - lu(k,440) * lu(k,1269) + lu(k,1400) = lu(k,1400) - lu(k,434) * lu(k,1373) + lu(k,1402) = lu(k,1402) - lu(k,435) * lu(k,1373) + lu(k,1411) = lu(k,1411) - lu(k,436) * lu(k,1373) + lu(k,1413) = lu(k,1413) - lu(k,437) * lu(k,1373) + lu(k,1414) = lu(k,1414) - lu(k,438) * lu(k,1373) + lu(k,1417) = lu(k,1417) - lu(k,439) * lu(k,1373) + lu(k,1418) = lu(k,1418) - lu(k,440) * lu(k,1373) + lu(k,1445) = lu(k,1445) - lu(k,434) * lu(k,1430) + lu(k,1447) = lu(k,1447) - lu(k,435) * lu(k,1430) + lu(k,1456) = - lu(k,436) * lu(k,1430) + lu(k,1458) = lu(k,1458) - lu(k,437) * lu(k,1430) + lu(k,1459) = lu(k,1459) - lu(k,438) * lu(k,1430) + lu(k,1462) = lu(k,1462) - lu(k,439) * lu(k,1430) + lu(k,1463) = lu(k,1463) - lu(k,440) * lu(k,1430) + lu(k,442) = 1._r8 / lu(k,442) + lu(k,443) = lu(k,443) * lu(k,442) + lu(k,444) = lu(k,444) * lu(k,442) + lu(k,445) = lu(k,445) * lu(k,442) + lu(k,446) = lu(k,446) * lu(k,442) + lu(k,447) = lu(k,447) * lu(k,442) + lu(k,448) = lu(k,448) * lu(k,442) + lu(k,449) = lu(k,449) * lu(k,442) + lu(k,501) = lu(k,501) - lu(k,443) * lu(k,500) + lu(k,502) = lu(k,502) - lu(k,444) * lu(k,500) + lu(k,503) = lu(k,503) - lu(k,445) * lu(k,500) + lu(k,504) = lu(k,504) - lu(k,446) * lu(k,500) + lu(k,505) = lu(k,505) - lu(k,447) * lu(k,500) + lu(k,508) = lu(k,508) - lu(k,448) * lu(k,500) + lu(k,509) = lu(k,509) - lu(k,449) * lu(k,500) + lu(k,524) = lu(k,524) - lu(k,443) * lu(k,523) + lu(k,525) = lu(k,525) - lu(k,444) * lu(k,523) + lu(k,526) = lu(k,526) - lu(k,445) * lu(k,523) + lu(k,527) = lu(k,527) - lu(k,446) * lu(k,523) + lu(k,528) = lu(k,528) - lu(k,447) * lu(k,523) + lu(k,531) = lu(k,531) - lu(k,448) * lu(k,523) + lu(k,533) = lu(k,533) - lu(k,449) * lu(k,523) + lu(k,536) = lu(k,536) - lu(k,443) * lu(k,535) + lu(k,537) = - lu(k,444) * lu(k,535) + lu(k,538) = - lu(k,445) * lu(k,535) + lu(k,539) = lu(k,539) - lu(k,446) * lu(k,535) + lu(k,540) = lu(k,540) - lu(k,447) * lu(k,535) + lu(k,543) = lu(k,543) - lu(k,448) * lu(k,535) + lu(k,545) = lu(k,545) - lu(k,449) * lu(k,535) + lu(k,557) = - lu(k,443) * lu(k,556) + lu(k,558) = lu(k,558) - lu(k,444) * lu(k,556) + lu(k,559) = lu(k,559) - lu(k,445) * lu(k,556) + lu(k,560) = lu(k,560) - lu(k,446) * lu(k,556) + lu(k,561) = lu(k,561) - lu(k,447) * lu(k,556) + lu(k,564) = lu(k,564) - lu(k,448) * lu(k,556) + lu(k,568) = lu(k,568) - lu(k,449) * lu(k,556) + lu(k,898) = lu(k,898) - lu(k,443) * lu(k,897) + lu(k,899) = lu(k,899) - lu(k,444) * lu(k,897) + lu(k,900) = lu(k,900) - lu(k,445) * lu(k,897) + lu(k,901) = lu(k,901) - lu(k,446) * lu(k,897) + lu(k,903) = lu(k,903) - lu(k,447) * lu(k,897) + lu(k,909) = lu(k,909) - lu(k,448) * lu(k,897) + lu(k,919) = lu(k,919) - lu(k,449) * lu(k,897) + lu(k,1433) = lu(k,1433) - lu(k,443) * lu(k,1431) + lu(k,1434) = lu(k,1434) - lu(k,444) * lu(k,1431) + lu(k,1435) = lu(k,1435) - lu(k,445) * lu(k,1431) + lu(k,1436) = lu(k,1436) - lu(k,446) * lu(k,1431) + lu(k,1438) = lu(k,1438) - lu(k,447) * lu(k,1431) + lu(k,1446) = lu(k,1446) - lu(k,448) * lu(k,1431) + lu(k,1459) = lu(k,1459) - lu(k,449) * lu(k,1431) + end do + end subroutine lu_fac10 + subroutine lu_fac11( avec_len, lu ) + use chem_mods, only : nzcnt + use shr_kind_mod, only : r8 => shr_kind_r8 + implicit none +!----------------------------------------------------------------------- +! ... dummy args +!----------------------------------------------------------------------- + integer, intent(in) :: avec_len + real(r8), intent(inout) :: lu(veclen,nzcnt) +!----------------------------------------------------------------------- +! ... local variables +!----------------------------------------------------------------------- + integer :: k + do k = 1,avec_len + lu(k,451) = 1._r8 / lu(k,451) + lu(k,452) = lu(k,452) * lu(k,451) + lu(k,453) = lu(k,453) * lu(k,451) + lu(k,454) = lu(k,454) * lu(k,451) + lu(k,455) = lu(k,455) * lu(k,451) + lu(k,456) = lu(k,456) * lu(k,451) + lu(k,457) = lu(k,457) * lu(k,451) + lu(k,574) = lu(k,574) - lu(k,452) * lu(k,572) + lu(k,575) = lu(k,575) - lu(k,453) * lu(k,572) + lu(k,579) = lu(k,579) - lu(k,454) * lu(k,572) + lu(k,580) = lu(k,580) - lu(k,455) * lu(k,572) + lu(k,581) = lu(k,581) - lu(k,456) * lu(k,572) + lu(k,582) = - lu(k,457) * lu(k,572) + lu(k,860) = lu(k,860) - lu(k,452) * lu(k,858) + lu(k,863) = lu(k,863) - lu(k,453) * lu(k,858) + lu(k,868) = lu(k,868) - lu(k,454) * lu(k,858) + lu(k,869) = lu(k,869) - lu(k,455) * lu(k,858) + lu(k,870) = lu(k,870) - lu(k,456) * lu(k,858) + lu(k,872) = lu(k,872) - lu(k,457) * lu(k,858) + lu(k,955) = lu(k,955) - lu(k,452) * lu(k,951) + lu(k,959) = lu(k,959) - lu(k,453) * lu(k,951) + lu(k,968) = lu(k,968) - lu(k,454) * lu(k,951) + lu(k,969) = lu(k,969) - lu(k,455) * lu(k,951) + lu(k,970) = lu(k,970) - lu(k,456) * lu(k,951) + lu(k,973) = - lu(k,457) * lu(k,951) + lu(k,1074) = lu(k,1074) - lu(k,452) * lu(k,1056) + lu(k,1078) = lu(k,1078) - lu(k,453) * lu(k,1056) + lu(k,1087) = lu(k,1087) - lu(k,454) * lu(k,1056) + lu(k,1088) = lu(k,1088) - lu(k,455) * lu(k,1056) + lu(k,1089) = lu(k,1089) - lu(k,456) * lu(k,1056) + lu(k,1093) = lu(k,1093) - lu(k,457) * lu(k,1056) + lu(k,1310) = lu(k,1310) - lu(k,452) * lu(k,1302) + lu(k,1314) = lu(k,1314) - lu(k,453) * lu(k,1302) + lu(k,1323) = lu(k,1323) - lu(k,454) * lu(k,1302) + lu(k,1324) = lu(k,1324) - lu(k,455) * lu(k,1302) + lu(k,1325) = lu(k,1325) - lu(k,456) * lu(k,1302) + lu(k,1329) = lu(k,1329) - lu(k,457) * lu(k,1302) + lu(k,1399) = lu(k,1399) - lu(k,452) * lu(k,1374) + lu(k,1403) = lu(k,1403) - lu(k,453) * lu(k,1374) + lu(k,1412) = lu(k,1412) - lu(k,454) * lu(k,1374) + lu(k,1413) = lu(k,1413) - lu(k,455) * lu(k,1374) + lu(k,1414) = lu(k,1414) - lu(k,456) * lu(k,1374) + lu(k,1418) = lu(k,1418) - lu(k,457) * lu(k,1374) + lu(k,1444) = lu(k,1444) - lu(k,452) * lu(k,1432) + lu(k,1448) = lu(k,1448) - lu(k,453) * lu(k,1432) + lu(k,1457) = lu(k,1457) - lu(k,454) * lu(k,1432) + lu(k,1458) = lu(k,1458) - lu(k,455) * lu(k,1432) + lu(k,1459) = lu(k,1459) - lu(k,456) * lu(k,1432) + lu(k,1463) = lu(k,1463) - lu(k,457) * lu(k,1432) + lu(k,460) = 1._r8 / lu(k,460) + lu(k,461) = lu(k,461) * lu(k,460) + lu(k,462) = lu(k,462) * lu(k,460) + lu(k,463) = lu(k,463) * lu(k,460) + lu(k,464) = lu(k,464) * lu(k,460) + lu(k,465) = lu(k,465) * lu(k,460) + lu(k,466) = lu(k,466) * lu(k,460) + lu(k,467) = lu(k,467) * lu(k,460) + lu(k,468) = lu(k,468) * lu(k,460) + lu(k,469) = lu(k,469) * lu(k,460) + lu(k,470) = lu(k,470) * lu(k,460) + lu(k,471) = lu(k,471) * lu(k,460) + lu(k,1059) = lu(k,1059) - lu(k,461) * lu(k,1057) + lu(k,1062) = lu(k,1062) - lu(k,462) * lu(k,1057) + lu(k,1071) = lu(k,1071) - lu(k,463) * lu(k,1057) + lu(k,1076) = lu(k,1076) - lu(k,464) * lu(k,1057) + lu(k,1079) = lu(k,1079) - lu(k,465) * lu(k,1057) + lu(k,1080) = lu(k,1080) - lu(k,466) * lu(k,1057) + lu(k,1081) = lu(k,1081) - lu(k,467) * lu(k,1057) + lu(k,1084) = lu(k,1084) - lu(k,468) * lu(k,1057) + lu(k,1088) = lu(k,1088) - lu(k,469) * lu(k,1057) + lu(k,1090) = lu(k,1090) - lu(k,470) * lu(k,1057) + lu(k,1093) = lu(k,1093) - lu(k,471) * lu(k,1057) + lu(k,1172) = lu(k,1172) - lu(k,461) * lu(k,1171) + lu(k,1175) = lu(k,1175) - lu(k,462) * lu(k,1171) + lu(k,1184) = lu(k,1184) - lu(k,463) * lu(k,1171) + lu(k,1186) = lu(k,1186) - lu(k,464) * lu(k,1171) + lu(k,1189) = lu(k,1189) - lu(k,465) * lu(k,1171) + lu(k,1190) = lu(k,1190) - lu(k,466) * lu(k,1171) + lu(k,1191) = lu(k,1191) - lu(k,467) * lu(k,1171) + lu(k,1194) = lu(k,1194) - lu(k,468) * lu(k,1171) + lu(k,1198) = lu(k,1198) - lu(k,469) * lu(k,1171) + lu(k,1200) = lu(k,1200) - lu(k,470) * lu(k,1171) + lu(k,1203) = lu(k,1203) - lu(k,471) * lu(k,1171) + lu(k,1382) = lu(k,1382) - lu(k,461) * lu(k,1375) + lu(k,1386) = lu(k,1386) - lu(k,462) * lu(k,1375) + lu(k,1395) = lu(k,1395) - lu(k,463) * lu(k,1375) + lu(k,1401) = lu(k,1401) - lu(k,464) * lu(k,1375) + lu(k,1404) = lu(k,1404) - lu(k,465) * lu(k,1375) + lu(k,1405) = lu(k,1405) - lu(k,466) * lu(k,1375) + lu(k,1406) = lu(k,1406) - lu(k,467) * lu(k,1375) + lu(k,1409) = lu(k,1409) - lu(k,468) * lu(k,1375) + lu(k,1413) = lu(k,1413) - lu(k,469) * lu(k,1375) + lu(k,1415) = lu(k,1415) - lu(k,470) * lu(k,1375) + lu(k,1418) = lu(k,1418) - lu(k,471) * lu(k,1375) + lu(k,1479) = lu(k,1479) - lu(k,461) * lu(k,1473) + lu(k,1482) = lu(k,1482) - lu(k,462) * lu(k,1473) + lu(k,1491) = lu(k,1491) - lu(k,463) * lu(k,1473) + lu(k,1494) = lu(k,1494) - lu(k,464) * lu(k,1473) + lu(k,1497) = lu(k,1497) - lu(k,465) * lu(k,1473) + lu(k,1498) = lu(k,1498) - lu(k,466) * lu(k,1473) + lu(k,1499) = lu(k,1499) - lu(k,467) * lu(k,1473) + lu(k,1502) = lu(k,1502) - lu(k,468) * lu(k,1473) + lu(k,1506) = lu(k,1506) - lu(k,469) * lu(k,1473) + lu(k,1508) = lu(k,1508) - lu(k,470) * lu(k,1473) + lu(k,1511) = lu(k,1511) - lu(k,471) * lu(k,1473) + lu(k,473) = 1._r8 / lu(k,473) + lu(k,474) = lu(k,474) * lu(k,473) + lu(k,475) = lu(k,475) * lu(k,473) + lu(k,476) = lu(k,476) * lu(k,473) + lu(k,477) = lu(k,477) * lu(k,473) + lu(k,478) = lu(k,478) * lu(k,473) + lu(k,479) = lu(k,479) * lu(k,473) + lu(k,480) = lu(k,480) * lu(k,473) + lu(k,481) = lu(k,481) * lu(k,473) + lu(k,482) = lu(k,482) * lu(k,473) + lu(k,483) = lu(k,483) * lu(k,473) + lu(k,484) = lu(k,484) * lu(k,473) + lu(k,485) = lu(k,485) * lu(k,473) + lu(k,486) = lu(k,486) * lu(k,473) + lu(k,487) = lu(k,487) * lu(k,473) + lu(k,488) = lu(k,488) * lu(k,473) + lu(k,1104) = - lu(k,474) * lu(k,1102) + lu(k,1108) = lu(k,1108) - lu(k,475) * lu(k,1102) + lu(k,1110) = lu(k,1110) - lu(k,476) * lu(k,1102) + lu(k,1111) = lu(k,1111) - lu(k,477) * lu(k,1102) + lu(k,1114) = lu(k,1114) - lu(k,478) * lu(k,1102) + lu(k,1116) = lu(k,1116) - lu(k,479) * lu(k,1102) + lu(k,1118) = lu(k,1118) - lu(k,480) * lu(k,1102) + lu(k,1125) = lu(k,1125) - lu(k,481) * lu(k,1102) + lu(k,1126) = lu(k,1126) - lu(k,482) * lu(k,1102) + lu(k,1127) = lu(k,1127) - lu(k,483) * lu(k,1102) + lu(k,1128) = lu(k,1128) - lu(k,484) * lu(k,1102) + lu(k,1130) = lu(k,1130) - lu(k,485) * lu(k,1102) + lu(k,1131) = lu(k,1131) - lu(k,486) * lu(k,1102) + lu(k,1134) = lu(k,1134) - lu(k,487) * lu(k,1102) + lu(k,1136) = lu(k,1136) - lu(k,488) * lu(k,1102) + lu(k,1214) = lu(k,1214) - lu(k,474) * lu(k,1212) + lu(k,1218) = lu(k,1218) - lu(k,475) * lu(k,1212) + lu(k,1220) = lu(k,1220) - lu(k,476) * lu(k,1212) + lu(k,1221) = lu(k,1221) - lu(k,477) * lu(k,1212) + lu(k,1224) = lu(k,1224) - lu(k,478) * lu(k,1212) + lu(k,1226) = lu(k,1226) - lu(k,479) * lu(k,1212) + lu(k,1228) = lu(k,1228) - lu(k,480) * lu(k,1212) + lu(k,1235) = lu(k,1235) - lu(k,481) * lu(k,1212) + lu(k,1236) = lu(k,1236) - lu(k,482) * lu(k,1212) + lu(k,1237) = lu(k,1237) - lu(k,483) * lu(k,1212) + lu(k,1238) = lu(k,1238) - lu(k,484) * lu(k,1212) + lu(k,1240) = lu(k,1240) - lu(k,485) * lu(k,1212) + lu(k,1241) = lu(k,1241) - lu(k,486) * lu(k,1212) + lu(k,1244) = lu(k,1244) - lu(k,487) * lu(k,1212) + lu(k,1246) = lu(k,1246) - lu(k,488) * lu(k,1212) + lu(k,1381) = lu(k,1381) - lu(k,474) * lu(k,1376) + lu(k,1385) = lu(k,1385) - lu(k,475) * lu(k,1376) + lu(k,1387) = lu(k,1387) - lu(k,476) * lu(k,1376) + lu(k,1388) = lu(k,1388) - lu(k,477) * lu(k,1376) + lu(k,1391) = lu(k,1391) - lu(k,478) * lu(k,1376) + lu(k,1393) = lu(k,1393) - lu(k,479) * lu(k,1376) + lu(k,1395) = lu(k,1395) - lu(k,480) * lu(k,1376) + lu(k,1404) = lu(k,1404) - lu(k,481) * lu(k,1376) + lu(k,1405) = lu(k,1405) - lu(k,482) * lu(k,1376) + lu(k,1406) = lu(k,1406) - lu(k,483) * lu(k,1376) + lu(k,1407) = lu(k,1407) - lu(k,484) * lu(k,1376) + lu(k,1409) = lu(k,1409) - lu(k,485) * lu(k,1376) + lu(k,1410) = lu(k,1410) - lu(k,486) * lu(k,1376) + lu(k,1413) = lu(k,1413) - lu(k,487) * lu(k,1376) + lu(k,1415) = lu(k,1415) - lu(k,488) * lu(k,1376) + lu(k,490) = 1._r8 / lu(k,490) + lu(k,491) = lu(k,491) * lu(k,490) + lu(k,492) = lu(k,492) * lu(k,490) + lu(k,493) = lu(k,493) * lu(k,490) + lu(k,494) = lu(k,494) * lu(k,490) + lu(k,495) = lu(k,495) * lu(k,490) + lu(k,496) = lu(k,496) * lu(k,490) + lu(k,497) = lu(k,497) * lu(k,490) + lu(k,498) = lu(k,498) * lu(k,490) + lu(k,826) = lu(k,826) - lu(k,491) * lu(k,825) + lu(k,828) = - lu(k,492) * lu(k,825) + lu(k,829) = - lu(k,493) * lu(k,825) + lu(k,830) = - lu(k,494) * lu(k,825) + lu(k,833) = lu(k,833) - lu(k,495) * lu(k,825) + lu(k,835) = - lu(k,496) * lu(k,825) + lu(k,836) = lu(k,836) - lu(k,497) * lu(k,825) + lu(k,837) = lu(k,837) - lu(k,498) * lu(k,825) + lu(k,1142) = - lu(k,491) * lu(k,1141) + lu(k,1152) = lu(k,1152) - lu(k,492) * lu(k,1141) + lu(k,1153) = - lu(k,493) * lu(k,1141) + lu(k,1154) = lu(k,1154) - lu(k,494) * lu(k,1141) + lu(k,1157) = lu(k,1157) - lu(k,495) * lu(k,1141) + lu(k,1160) = - lu(k,496) * lu(k,1141) + lu(k,1161) = lu(k,1161) - lu(k,497) * lu(k,1141) + lu(k,1162) = lu(k,1162) - lu(k,498) * lu(k,1141) + lu(k,1271) = lu(k,1271) - lu(k,491) * lu(k,1270) + lu(k,1281) = - lu(k,492) * lu(k,1270) + lu(k,1282) = lu(k,1282) - lu(k,493) * lu(k,1270) + lu(k,1283) = - lu(k,494) * lu(k,1270) + lu(k,1286) = lu(k,1286) - lu(k,495) * lu(k,1270) + lu(k,1289) = lu(k,1289) - lu(k,496) * lu(k,1270) + lu(k,1290) = lu(k,1290) - lu(k,497) * lu(k,1270) + lu(k,1291) = lu(k,1291) - lu(k,498) * lu(k,1270) + lu(k,1397) = lu(k,1397) - lu(k,491) * lu(k,1377) + lu(k,1408) = lu(k,1408) - lu(k,492) * lu(k,1377) + lu(k,1409) = lu(k,1409) - lu(k,493) * lu(k,1377) + lu(k,1410) = lu(k,1410) - lu(k,494) * lu(k,1377) + lu(k,1413) = lu(k,1413) - lu(k,495) * lu(k,1377) + lu(k,1416) = lu(k,1416) - lu(k,496) * lu(k,1377) + lu(k,1417) = lu(k,1417) - lu(k,497) * lu(k,1377) + lu(k,1418) = lu(k,1418) - lu(k,498) * lu(k,1377) + lu(k,1516) = lu(k,1516) - lu(k,491) * lu(k,1513) + lu(k,1526) = - lu(k,492) * lu(k,1513) + lu(k,1527) = lu(k,1527) - lu(k,493) * lu(k,1513) + lu(k,1528) = - lu(k,494) * lu(k,1513) + lu(k,1531) = lu(k,1531) - lu(k,495) * lu(k,1513) + lu(k,1534) = lu(k,1534) - lu(k,496) * lu(k,1513) + lu(k,1535) = lu(k,1535) - lu(k,497) * lu(k,1513) + lu(k,1536) = lu(k,1536) - lu(k,498) * lu(k,1513) + lu(k,1563) = lu(k,1563) - lu(k,491) * lu(k,1561) + lu(k,1574) = - lu(k,492) * lu(k,1561) + lu(k,1575) = - lu(k,493) * lu(k,1561) + lu(k,1576) = - lu(k,494) * lu(k,1561) + lu(k,1579) = lu(k,1579) - lu(k,495) * lu(k,1561) + lu(k,1582) = - lu(k,496) * lu(k,1561) + lu(k,1583) = lu(k,1583) - lu(k,497) * lu(k,1561) + lu(k,1584) = lu(k,1584) - lu(k,498) * lu(k,1561) + end do + end subroutine lu_fac11 + subroutine lu_fac12( avec_len, lu ) + use chem_mods, only : nzcnt + use shr_kind_mod, only : r8 => shr_kind_r8 + implicit none +!----------------------------------------------------------------------- +! ... dummy args +!----------------------------------------------------------------------- + integer, intent(in) :: avec_len + real(r8), intent(inout) :: lu(veclen,nzcnt) +!----------------------------------------------------------------------- +! ... local variables +!----------------------------------------------------------------------- + integer :: k + do k = 1,avec_len + lu(k,501) = 1._r8 / lu(k,501) + lu(k,502) = lu(k,502) * lu(k,501) + lu(k,503) = lu(k,503) * lu(k,501) + lu(k,504) = lu(k,504) * lu(k,501) + lu(k,505) = lu(k,505) * lu(k,501) + lu(k,506) = lu(k,506) * lu(k,501) + lu(k,507) = lu(k,507) * lu(k,501) + lu(k,508) = lu(k,508) * lu(k,501) + lu(k,509) = lu(k,509) * lu(k,501) + lu(k,525) = lu(k,525) - lu(k,502) * lu(k,524) + lu(k,526) = lu(k,526) - lu(k,503) * lu(k,524) + lu(k,527) = lu(k,527) - lu(k,504) * lu(k,524) + lu(k,528) = lu(k,528) - lu(k,505) * lu(k,524) + lu(k,529) = - lu(k,506) * lu(k,524) + lu(k,530) = - lu(k,507) * lu(k,524) + lu(k,531) = lu(k,531) - lu(k,508) * lu(k,524) + lu(k,533) = lu(k,533) - lu(k,509) * lu(k,524) + lu(k,537) = lu(k,537) - lu(k,502) * lu(k,536) + lu(k,538) = lu(k,538) - lu(k,503) * lu(k,536) + lu(k,539) = lu(k,539) - lu(k,504) * lu(k,536) + lu(k,540) = lu(k,540) - lu(k,505) * lu(k,536) + lu(k,541) = - lu(k,506) * lu(k,536) + lu(k,542) = - lu(k,507) * lu(k,536) + lu(k,543) = lu(k,543) - lu(k,508) * lu(k,536) + lu(k,545) = lu(k,545) - lu(k,509) * lu(k,536) + lu(k,558) = lu(k,558) - lu(k,502) * lu(k,557) + lu(k,559) = lu(k,559) - lu(k,503) * lu(k,557) + lu(k,560) = lu(k,560) - lu(k,504) * lu(k,557) + lu(k,561) = lu(k,561) - lu(k,505) * lu(k,557) + lu(k,562) = - lu(k,506) * lu(k,557) + lu(k,563) = - lu(k,507) * lu(k,557) + lu(k,564) = lu(k,564) - lu(k,508) * lu(k,557) + lu(k,568) = lu(k,568) - lu(k,509) * lu(k,557) + lu(k,810) = lu(k,810) - lu(k,502) * lu(k,809) + lu(k,811) = - lu(k,503) * lu(k,809) + lu(k,812) = - lu(k,504) * lu(k,809) + lu(k,813) = - lu(k,505) * lu(k,809) + lu(k,814) = lu(k,814) - lu(k,506) * lu(k,809) + lu(k,815) = lu(k,815) - lu(k,507) * lu(k,809) + lu(k,816) = lu(k,816) - lu(k,508) * lu(k,809) + lu(k,821) = lu(k,821) - lu(k,509) * lu(k,809) + lu(k,899) = lu(k,899) - lu(k,502) * lu(k,898) + lu(k,900) = lu(k,900) - lu(k,503) * lu(k,898) + lu(k,901) = lu(k,901) - lu(k,504) * lu(k,898) + lu(k,903) = lu(k,903) - lu(k,505) * lu(k,898) + lu(k,905) = - lu(k,506) * lu(k,898) + lu(k,906) = - lu(k,507) * lu(k,898) + lu(k,909) = lu(k,909) - lu(k,508) * lu(k,898) + lu(k,919) = lu(k,919) - lu(k,509) * lu(k,898) + lu(k,1434) = lu(k,1434) - lu(k,502) * lu(k,1433) + lu(k,1435) = lu(k,1435) - lu(k,503) * lu(k,1433) + lu(k,1436) = lu(k,1436) - lu(k,504) * lu(k,1433) + lu(k,1438) = lu(k,1438) - lu(k,505) * lu(k,1433) + lu(k,1440) = lu(k,1440) - lu(k,506) * lu(k,1433) + lu(k,1441) = - lu(k,507) * lu(k,1433) + lu(k,1446) = lu(k,1446) - lu(k,508) * lu(k,1433) + lu(k,1459) = lu(k,1459) - lu(k,509) * lu(k,1433) + lu(k,511) = 1._r8 / lu(k,511) + lu(k,512) = lu(k,512) * lu(k,511) + lu(k,513) = lu(k,513) * lu(k,511) + lu(k,514) = lu(k,514) * lu(k,511) + lu(k,515) = lu(k,515) * lu(k,511) + lu(k,516) = lu(k,516) * lu(k,511) + lu(k,517) = lu(k,517) * lu(k,511) + lu(k,518) = lu(k,518) * lu(k,511) + lu(k,526) = lu(k,526) - lu(k,512) * lu(k,525) + lu(k,527) = lu(k,527) - lu(k,513) * lu(k,525) + lu(k,528) = lu(k,528) - lu(k,514) * lu(k,525) + lu(k,531) = lu(k,531) - lu(k,515) * lu(k,525) + lu(k,532) = lu(k,532) - lu(k,516) * lu(k,525) + lu(k,533) = lu(k,533) - lu(k,517) * lu(k,525) + lu(k,534) = lu(k,534) - lu(k,518) * lu(k,525) + lu(k,538) = lu(k,538) - lu(k,512) * lu(k,537) + lu(k,539) = lu(k,539) - lu(k,513) * lu(k,537) + lu(k,540) = lu(k,540) - lu(k,514) * lu(k,537) + lu(k,543) = lu(k,543) - lu(k,515) * lu(k,537) + lu(k,544) = lu(k,544) - lu(k,516) * lu(k,537) + lu(k,545) = lu(k,545) - lu(k,517) * lu(k,537) + lu(k,546) = lu(k,546) - lu(k,518) * lu(k,537) + lu(k,559) = lu(k,559) - lu(k,512) * lu(k,558) + lu(k,560) = lu(k,560) - lu(k,513) * lu(k,558) + lu(k,561) = lu(k,561) - lu(k,514) * lu(k,558) + lu(k,564) = lu(k,564) - lu(k,515) * lu(k,558) + lu(k,566) = lu(k,566) - lu(k,516) * lu(k,558) + lu(k,568) = lu(k,568) - lu(k,517) * lu(k,558) + lu(k,569) = lu(k,569) - lu(k,518) * lu(k,558) + lu(k,811) = lu(k,811) - lu(k,512) * lu(k,810) + lu(k,812) = lu(k,812) - lu(k,513) * lu(k,810) + lu(k,813) = lu(k,813) - lu(k,514) * lu(k,810) + lu(k,816) = lu(k,816) - lu(k,515) * lu(k,810) + lu(k,819) = - lu(k,516) * lu(k,810) + lu(k,821) = lu(k,821) - lu(k,517) * lu(k,810) + lu(k,822) = - lu(k,518) * lu(k,810) + lu(k,900) = lu(k,900) - lu(k,512) * lu(k,899) + lu(k,901) = lu(k,901) - lu(k,513) * lu(k,899) + lu(k,903) = lu(k,903) - lu(k,514) * lu(k,899) + lu(k,909) = lu(k,909) - lu(k,515) * lu(k,899) + lu(k,916) = lu(k,916) - lu(k,516) * lu(k,899) + lu(k,919) = lu(k,919) - lu(k,517) * lu(k,899) + lu(k,920) = lu(k,920) - lu(k,518) * lu(k,899) + lu(k,1435) = lu(k,1435) - lu(k,512) * lu(k,1434) + lu(k,1436) = lu(k,1436) - lu(k,513) * lu(k,1434) + lu(k,1438) = lu(k,1438) - lu(k,514) * lu(k,1434) + lu(k,1446) = lu(k,1446) - lu(k,515) * lu(k,1434) + lu(k,1456) = lu(k,1456) - lu(k,516) * lu(k,1434) + lu(k,1459) = lu(k,1459) - lu(k,517) * lu(k,1434) + lu(k,1460) = lu(k,1460) - lu(k,518) * lu(k,1434) + lu(k,1475) = lu(k,1475) - lu(k,512) * lu(k,1474) + lu(k,1476) = lu(k,1476) - lu(k,513) * lu(k,1474) + lu(k,1477) = lu(k,1477) - lu(k,514) * lu(k,1474) + lu(k,1494) = lu(k,1494) - lu(k,515) * lu(k,1474) + lu(k,1504) = - lu(k,516) * lu(k,1474) + lu(k,1507) = lu(k,1507) - lu(k,517) * lu(k,1474) + lu(k,1508) = lu(k,1508) - lu(k,518) * lu(k,1474) + lu(k,526) = 1._r8 / lu(k,526) + lu(k,527) = lu(k,527) * lu(k,526) + lu(k,528) = lu(k,528) * lu(k,526) + lu(k,529) = lu(k,529) * lu(k,526) + lu(k,530) = lu(k,530) * lu(k,526) + lu(k,531) = lu(k,531) * lu(k,526) + lu(k,532) = lu(k,532) * lu(k,526) + lu(k,533) = lu(k,533) * lu(k,526) + lu(k,534) = lu(k,534) * lu(k,526) + lu(k,539) = lu(k,539) - lu(k,527) * lu(k,538) + lu(k,540) = lu(k,540) - lu(k,528) * lu(k,538) + lu(k,541) = lu(k,541) - lu(k,529) * lu(k,538) + lu(k,542) = lu(k,542) - lu(k,530) * lu(k,538) + lu(k,543) = lu(k,543) - lu(k,531) * lu(k,538) + lu(k,544) = lu(k,544) - lu(k,532) * lu(k,538) + lu(k,545) = lu(k,545) - lu(k,533) * lu(k,538) + lu(k,546) = lu(k,546) - lu(k,534) * lu(k,538) + lu(k,560) = lu(k,560) - lu(k,527) * lu(k,559) + lu(k,561) = lu(k,561) - lu(k,528) * lu(k,559) + lu(k,562) = lu(k,562) - lu(k,529) * lu(k,559) + lu(k,563) = lu(k,563) - lu(k,530) * lu(k,559) + lu(k,564) = lu(k,564) - lu(k,531) * lu(k,559) + lu(k,566) = lu(k,566) - lu(k,532) * lu(k,559) + lu(k,568) = lu(k,568) - lu(k,533) * lu(k,559) + lu(k,569) = lu(k,569) - lu(k,534) * lu(k,559) + lu(k,812) = lu(k,812) - lu(k,527) * lu(k,811) + lu(k,813) = lu(k,813) - lu(k,528) * lu(k,811) + lu(k,814) = lu(k,814) - lu(k,529) * lu(k,811) + lu(k,815) = lu(k,815) - lu(k,530) * lu(k,811) + lu(k,816) = lu(k,816) - lu(k,531) * lu(k,811) + lu(k,819) = lu(k,819) - lu(k,532) * lu(k,811) + lu(k,821) = lu(k,821) - lu(k,533) * lu(k,811) + lu(k,822) = lu(k,822) - lu(k,534) * lu(k,811) + lu(k,901) = lu(k,901) - lu(k,527) * lu(k,900) + lu(k,903) = lu(k,903) - lu(k,528) * lu(k,900) + lu(k,905) = lu(k,905) - lu(k,529) * lu(k,900) + lu(k,906) = lu(k,906) - lu(k,530) * lu(k,900) + lu(k,909) = lu(k,909) - lu(k,531) * lu(k,900) + lu(k,916) = lu(k,916) - lu(k,532) * lu(k,900) + lu(k,919) = lu(k,919) - lu(k,533) * lu(k,900) + lu(k,920) = lu(k,920) - lu(k,534) * lu(k,900) + lu(k,1436) = lu(k,1436) - lu(k,527) * lu(k,1435) + lu(k,1438) = lu(k,1438) - lu(k,528) * lu(k,1435) + lu(k,1440) = lu(k,1440) - lu(k,529) * lu(k,1435) + lu(k,1441) = lu(k,1441) - lu(k,530) * lu(k,1435) + lu(k,1446) = lu(k,1446) - lu(k,531) * lu(k,1435) + lu(k,1456) = lu(k,1456) - lu(k,532) * lu(k,1435) + lu(k,1459) = lu(k,1459) - lu(k,533) * lu(k,1435) + lu(k,1460) = lu(k,1460) - lu(k,534) * lu(k,1435) + lu(k,1476) = lu(k,1476) - lu(k,527) * lu(k,1475) + lu(k,1477) = lu(k,1477) - lu(k,528) * lu(k,1475) + lu(k,1483) = lu(k,1483) - lu(k,529) * lu(k,1475) + lu(k,1492) = lu(k,1492) - lu(k,530) * lu(k,1475) + lu(k,1494) = lu(k,1494) - lu(k,531) * lu(k,1475) + lu(k,1504) = lu(k,1504) - lu(k,532) * lu(k,1475) + lu(k,1507) = lu(k,1507) - lu(k,533) * lu(k,1475) + lu(k,1508) = lu(k,1508) - lu(k,534) * lu(k,1475) + lu(k,539) = 1._r8 / lu(k,539) + lu(k,540) = lu(k,540) * lu(k,539) + lu(k,541) = lu(k,541) * lu(k,539) + lu(k,542) = lu(k,542) * lu(k,539) + lu(k,543) = lu(k,543) * lu(k,539) + lu(k,544) = lu(k,544) * lu(k,539) + lu(k,545) = lu(k,545) * lu(k,539) + lu(k,546) = lu(k,546) * lu(k,539) + lu(k,561) = lu(k,561) - lu(k,540) * lu(k,560) + lu(k,562) = lu(k,562) - lu(k,541) * lu(k,560) + lu(k,563) = lu(k,563) - lu(k,542) * lu(k,560) + lu(k,564) = lu(k,564) - lu(k,543) * lu(k,560) + lu(k,566) = lu(k,566) - lu(k,544) * lu(k,560) + lu(k,568) = lu(k,568) - lu(k,545) * lu(k,560) + lu(k,569) = lu(k,569) - lu(k,546) * lu(k,560) + lu(k,813) = lu(k,813) - lu(k,540) * lu(k,812) + lu(k,814) = lu(k,814) - lu(k,541) * lu(k,812) + lu(k,815) = lu(k,815) - lu(k,542) * lu(k,812) + lu(k,816) = lu(k,816) - lu(k,543) * lu(k,812) + lu(k,819) = lu(k,819) - lu(k,544) * lu(k,812) + lu(k,821) = lu(k,821) - lu(k,545) * lu(k,812) + lu(k,822) = lu(k,822) - lu(k,546) * lu(k,812) + lu(k,903) = lu(k,903) - lu(k,540) * lu(k,901) + lu(k,905) = lu(k,905) - lu(k,541) * lu(k,901) + lu(k,906) = lu(k,906) - lu(k,542) * lu(k,901) + lu(k,909) = lu(k,909) - lu(k,543) * lu(k,901) + lu(k,916) = lu(k,916) - lu(k,544) * lu(k,901) + lu(k,919) = lu(k,919) - lu(k,545) * lu(k,901) + lu(k,920) = lu(k,920) - lu(k,546) * lu(k,901) + lu(k,1438) = lu(k,1438) - lu(k,540) * lu(k,1436) + lu(k,1440) = lu(k,1440) - lu(k,541) * lu(k,1436) + lu(k,1441) = lu(k,1441) - lu(k,542) * lu(k,1436) + lu(k,1446) = lu(k,1446) - lu(k,543) * lu(k,1436) + lu(k,1456) = lu(k,1456) - lu(k,544) * lu(k,1436) + lu(k,1459) = lu(k,1459) - lu(k,545) * lu(k,1436) + lu(k,1460) = lu(k,1460) - lu(k,546) * lu(k,1436) + lu(k,1477) = lu(k,1477) - lu(k,540) * lu(k,1476) + lu(k,1483) = lu(k,1483) - lu(k,541) * lu(k,1476) + lu(k,1492) = lu(k,1492) - lu(k,542) * lu(k,1476) + lu(k,1494) = lu(k,1494) - lu(k,543) * lu(k,1476) + lu(k,1504) = lu(k,1504) - lu(k,544) * lu(k,1476) + lu(k,1507) = lu(k,1507) - lu(k,545) * lu(k,1476) + lu(k,1508) = lu(k,1508) - lu(k,546) * lu(k,1476) + lu(k,548) = 1._r8 / lu(k,548) + lu(k,549) = lu(k,549) * lu(k,548) + lu(k,550) = lu(k,550) * lu(k,548) + lu(k,551) = lu(k,551) * lu(k,548) + lu(k,552) = lu(k,552) * lu(k,548) + lu(k,553) = lu(k,553) * lu(k,548) + lu(k,841) = lu(k,841) - lu(k,549) * lu(k,840) + lu(k,847) = - lu(k,550) * lu(k,840) + lu(k,850) = lu(k,850) - lu(k,551) * lu(k,840) + lu(k,851) = lu(k,851) - lu(k,552) * lu(k,840) + lu(k,854) = - lu(k,553) * lu(k,840) + lu(k,907) = lu(k,907) - lu(k,549) * lu(k,902) + lu(k,914) = lu(k,914) - lu(k,550) * lu(k,902) + lu(k,918) = lu(k,918) - lu(k,551) * lu(k,902) + lu(k,919) = lu(k,919) - lu(k,552) * lu(k,902) + lu(k,922) = - lu(k,553) * lu(k,902) + lu(k,928) = lu(k,928) - lu(k,549) * lu(k,927) + lu(k,936) = lu(k,936) - lu(k,550) * lu(k,927) + lu(k,942) = lu(k,942) - lu(k,551) * lu(k,927) + lu(k,943) = lu(k,943) - lu(k,552) * lu(k,927) + lu(k,946) = lu(k,946) - lu(k,553) * lu(k,927) + lu(k,954) = lu(k,954) - lu(k,549) * lu(k,952) + lu(k,962) = lu(k,962) - lu(k,550) * lu(k,952) + lu(k,969) = lu(k,969) - lu(k,551) * lu(k,952) + lu(k,970) = lu(k,970) - lu(k,552) * lu(k,952) + lu(k,973) = lu(k,973) - lu(k,553) * lu(k,952) + lu(k,990) = lu(k,990) - lu(k,549) * lu(k,981) + lu(k,998) = lu(k,998) - lu(k,550) * lu(k,981) + lu(k,1005) = lu(k,1005) - lu(k,551) * lu(k,981) + lu(k,1006) = lu(k,1006) - lu(k,552) * lu(k,981) + lu(k,1010) = lu(k,1010) - lu(k,553) * lu(k,981) + lu(k,1120) = lu(k,1120) - lu(k,549) * lu(k,1103) + lu(k,1127) = lu(k,1127) - lu(k,550) * lu(k,1103) + lu(k,1134) = lu(k,1134) - lu(k,551) * lu(k,1103) + lu(k,1135) = lu(k,1135) - lu(k,552) * lu(k,1103) + lu(k,1139) = lu(k,1139) - lu(k,553) * lu(k,1103) + lu(k,1230) = - lu(k,549) * lu(k,1213) + lu(k,1237) = lu(k,1237) - lu(k,550) * lu(k,1213) + lu(k,1244) = lu(k,1244) - lu(k,551) * lu(k,1213) + lu(k,1245) = lu(k,1245) - lu(k,552) * lu(k,1213) + lu(k,1249) = lu(k,1249) - lu(k,553) * lu(k,1213) + lu(k,1398) = lu(k,1398) - lu(k,549) * lu(k,1378) + lu(k,1406) = lu(k,1406) - lu(k,550) * lu(k,1378) + lu(k,1413) = lu(k,1413) - lu(k,551) * lu(k,1378) + lu(k,1414) = lu(k,1414) - lu(k,552) * lu(k,1378) + lu(k,1418) = lu(k,1418) - lu(k,553) * lu(k,1378) + lu(k,1443) = lu(k,1443) - lu(k,549) * lu(k,1437) + lu(k,1451) = lu(k,1451) - lu(k,550) * lu(k,1437) + lu(k,1458) = lu(k,1458) - lu(k,551) * lu(k,1437) + lu(k,1459) = lu(k,1459) - lu(k,552) * lu(k,1437) + lu(k,1463) = lu(k,1463) - lu(k,553) * lu(k,1437) + lu(k,1564) = - lu(k,549) * lu(k,1562) + lu(k,1572) = - lu(k,550) * lu(k,1562) + lu(k,1579) = lu(k,1579) - lu(k,551) * lu(k,1562) + lu(k,1580) = lu(k,1580) - lu(k,552) * lu(k,1562) + lu(k,1584) = lu(k,1584) - lu(k,553) * lu(k,1562) + end do + end subroutine lu_fac12 + subroutine lu_fac13( avec_len, lu ) + use chem_mods, only : nzcnt + use shr_kind_mod, only : r8 => shr_kind_r8 + implicit none +!----------------------------------------------------------------------- +! ... dummy args +!----------------------------------------------------------------------- + integer, intent(in) :: avec_len + real(r8), intent(inout) :: lu(veclen,nzcnt) +!----------------------------------------------------------------------- +! ... local variables +!----------------------------------------------------------------------- + integer :: k + do k = 1,avec_len + lu(k,561) = 1._r8 / lu(k,561) + lu(k,562) = lu(k,562) * lu(k,561) + lu(k,563) = lu(k,563) * lu(k,561) + lu(k,564) = lu(k,564) * lu(k,561) + lu(k,565) = lu(k,565) * lu(k,561) + lu(k,566) = lu(k,566) * lu(k,561) + lu(k,567) = lu(k,567) * lu(k,561) + lu(k,568) = lu(k,568) * lu(k,561) + lu(k,569) = lu(k,569) * lu(k,561) + lu(k,570) = lu(k,570) * lu(k,561) + lu(k,814) = lu(k,814) - lu(k,562) * lu(k,813) + lu(k,815) = lu(k,815) - lu(k,563) * lu(k,813) + lu(k,816) = lu(k,816) - lu(k,564) * lu(k,813) + lu(k,817) = - lu(k,565) * lu(k,813) + lu(k,819) = lu(k,819) - lu(k,566) * lu(k,813) + lu(k,820) = - lu(k,567) * lu(k,813) + lu(k,821) = lu(k,821) - lu(k,568) * lu(k,813) + lu(k,822) = lu(k,822) - lu(k,569) * lu(k,813) + lu(k,823) = - lu(k,570) * lu(k,813) + lu(k,905) = lu(k,905) - lu(k,562) * lu(k,903) + lu(k,906) = lu(k,906) - lu(k,563) * lu(k,903) + lu(k,909) = lu(k,909) - lu(k,564) * lu(k,903) + lu(k,912) = - lu(k,565) * lu(k,903) + lu(k,916) = lu(k,916) - lu(k,566) * lu(k,903) + lu(k,918) = lu(k,918) - lu(k,567) * lu(k,903) + lu(k,919) = lu(k,919) - lu(k,568) * lu(k,903) + lu(k,920) = lu(k,920) - lu(k,569) * lu(k,903) + lu(k,921) = lu(k,921) - lu(k,570) * lu(k,903) + lu(k,985) = - lu(k,562) * lu(k,982) + lu(k,989) = lu(k,989) - lu(k,563) * lu(k,982) + lu(k,993) = lu(k,993) - lu(k,564) * lu(k,982) + lu(k,996) = lu(k,996) - lu(k,565) * lu(k,982) + lu(k,1003) = lu(k,1003) - lu(k,566) * lu(k,982) + lu(k,1005) = lu(k,1005) - lu(k,567) * lu(k,982) + lu(k,1006) = lu(k,1006) - lu(k,568) * lu(k,982) + lu(k,1007) = lu(k,1007) - lu(k,569) * lu(k,982) + lu(k,1009) = - lu(k,570) * lu(k,982) + lu(k,1387) = lu(k,1387) - lu(k,562) * lu(k,1379) + lu(k,1396) = lu(k,1396) - lu(k,563) * lu(k,1379) + lu(k,1401) = lu(k,1401) - lu(k,564) * lu(k,1379) + lu(k,1404) = lu(k,1404) - lu(k,565) * lu(k,1379) + lu(k,1411) = lu(k,1411) - lu(k,566) * lu(k,1379) + lu(k,1413) = lu(k,1413) - lu(k,567) * lu(k,1379) + lu(k,1414) = lu(k,1414) - lu(k,568) * lu(k,1379) + lu(k,1415) = lu(k,1415) - lu(k,569) * lu(k,1379) + lu(k,1417) = lu(k,1417) - lu(k,570) * lu(k,1379) + lu(k,1440) = lu(k,1440) - lu(k,562) * lu(k,1438) + lu(k,1441) = lu(k,1441) - lu(k,563) * lu(k,1438) + lu(k,1446) = lu(k,1446) - lu(k,564) * lu(k,1438) + lu(k,1449) = lu(k,1449) - lu(k,565) * lu(k,1438) + lu(k,1456) = lu(k,1456) - lu(k,566) * lu(k,1438) + lu(k,1458) = lu(k,1458) - lu(k,567) * lu(k,1438) + lu(k,1459) = lu(k,1459) - lu(k,568) * lu(k,1438) + lu(k,1460) = lu(k,1460) - lu(k,569) * lu(k,1438) + lu(k,1462) = lu(k,1462) - lu(k,570) * lu(k,1438) + lu(k,1483) = lu(k,1483) - lu(k,562) * lu(k,1477) + lu(k,1492) = lu(k,1492) - lu(k,563) * lu(k,1477) + lu(k,1494) = lu(k,1494) - lu(k,564) * lu(k,1477) + lu(k,1497) = lu(k,1497) - lu(k,565) * lu(k,1477) + lu(k,1504) = lu(k,1504) - lu(k,566) * lu(k,1477) + lu(k,1506) = lu(k,1506) - lu(k,567) * lu(k,1477) + lu(k,1507) = lu(k,1507) - lu(k,568) * lu(k,1477) + lu(k,1508) = lu(k,1508) - lu(k,569) * lu(k,1477) + lu(k,1510) = - lu(k,570) * lu(k,1477) + lu(k,573) = 1._r8 / lu(k,573) + lu(k,574) = lu(k,574) * lu(k,573) + lu(k,575) = lu(k,575) * lu(k,573) + lu(k,576) = lu(k,576) * lu(k,573) + lu(k,577) = lu(k,577) * lu(k,573) + lu(k,578) = lu(k,578) * lu(k,573) + lu(k,579) = lu(k,579) * lu(k,573) + lu(k,580) = lu(k,580) * lu(k,573) + lu(k,581) = lu(k,581) * lu(k,573) + lu(k,582) = lu(k,582) * lu(k,573) + lu(k,860) = lu(k,860) - lu(k,574) * lu(k,859) + lu(k,863) = lu(k,863) - lu(k,575) * lu(k,859) + lu(k,864) = - lu(k,576) * lu(k,859) + lu(k,865) = lu(k,865) - lu(k,577) * lu(k,859) + lu(k,866) = - lu(k,578) * lu(k,859) + lu(k,868) = lu(k,868) - lu(k,579) * lu(k,859) + lu(k,869) = lu(k,869) - lu(k,580) * lu(k,859) + lu(k,870) = lu(k,870) - lu(k,581) * lu(k,859) + lu(k,872) = lu(k,872) - lu(k,582) * lu(k,859) + lu(k,955) = lu(k,955) - lu(k,574) * lu(k,953) + lu(k,959) = lu(k,959) - lu(k,575) * lu(k,953) + lu(k,960) = lu(k,960) - lu(k,576) * lu(k,953) + lu(k,964) = - lu(k,577) * lu(k,953) + lu(k,966) = - lu(k,578) * lu(k,953) + lu(k,968) = lu(k,968) - lu(k,579) * lu(k,953) + lu(k,969) = lu(k,969) - lu(k,580) * lu(k,953) + lu(k,970) = lu(k,970) - lu(k,581) * lu(k,953) + lu(k,973) = lu(k,973) - lu(k,582) * lu(k,953) + lu(k,991) = lu(k,991) - lu(k,574) * lu(k,983) + lu(k,995) = lu(k,995) - lu(k,575) * lu(k,983) + lu(k,996) = lu(k,996) - lu(k,576) * lu(k,983) + lu(k,1000) = lu(k,1000) - lu(k,577) * lu(k,983) + lu(k,1002) = lu(k,1002) - lu(k,578) * lu(k,983) + lu(k,1004) = lu(k,1004) - lu(k,579) * lu(k,983) + lu(k,1005) = lu(k,1005) - lu(k,580) * lu(k,983) + lu(k,1006) = lu(k,1006) - lu(k,581) * lu(k,983) + lu(k,1010) = lu(k,1010) - lu(k,582) * lu(k,983) + lu(k,1310) = lu(k,1310) - lu(k,574) * lu(k,1303) + lu(k,1314) = lu(k,1314) - lu(k,575) * lu(k,1303) + lu(k,1315) = lu(k,1315) - lu(k,576) * lu(k,1303) + lu(k,1319) = - lu(k,577) * lu(k,1303) + lu(k,1321) = lu(k,1321) - lu(k,578) * lu(k,1303) + lu(k,1323) = lu(k,1323) - lu(k,579) * lu(k,1303) + lu(k,1324) = lu(k,1324) - lu(k,580) * lu(k,1303) + lu(k,1325) = lu(k,1325) - lu(k,581) * lu(k,1303) + lu(k,1329) = lu(k,1329) - lu(k,582) * lu(k,1303) + lu(k,1399) = lu(k,1399) - lu(k,574) * lu(k,1380) + lu(k,1403) = lu(k,1403) - lu(k,575) * lu(k,1380) + lu(k,1404) = lu(k,1404) - lu(k,576) * lu(k,1380) + lu(k,1408) = lu(k,1408) - lu(k,577) * lu(k,1380) + lu(k,1410) = lu(k,1410) - lu(k,578) * lu(k,1380) + lu(k,1412) = lu(k,1412) - lu(k,579) * lu(k,1380) + lu(k,1413) = lu(k,1413) - lu(k,580) * lu(k,1380) + lu(k,1414) = lu(k,1414) - lu(k,581) * lu(k,1380) + lu(k,1418) = lu(k,1418) - lu(k,582) * lu(k,1380) + lu(k,1444) = lu(k,1444) - lu(k,574) * lu(k,1439) + lu(k,1448) = lu(k,1448) - lu(k,575) * lu(k,1439) + lu(k,1449) = lu(k,1449) - lu(k,576) * lu(k,1439) + lu(k,1453) = lu(k,1453) - lu(k,577) * lu(k,1439) + lu(k,1455) = lu(k,1455) - lu(k,578) * lu(k,1439) + lu(k,1457) = lu(k,1457) - lu(k,579) * lu(k,1439) + lu(k,1458) = lu(k,1458) - lu(k,580) * lu(k,1439) + lu(k,1459) = lu(k,1459) - lu(k,581) * lu(k,1439) + lu(k,1463) = lu(k,1463) - lu(k,582) * lu(k,1439) + lu(k,584) = 1._r8 / lu(k,584) + lu(k,585) = lu(k,585) * lu(k,584) + lu(k,586) = lu(k,586) * lu(k,584) + lu(k,587) = lu(k,587) * lu(k,584) + lu(k,588) = lu(k,588) * lu(k,584) + lu(k,589) = lu(k,589) * lu(k,584) + lu(k,590) = lu(k,590) * lu(k,584) + lu(k,591) = lu(k,591) * lu(k,584) + lu(k,592) = lu(k,592) * lu(k,584) + lu(k,698) = lu(k,698) - lu(k,585) * lu(k,695) + lu(k,700) = lu(k,700) - lu(k,586) * lu(k,695) + lu(k,708) = lu(k,708) - lu(k,587) * lu(k,695) + lu(k,709) = lu(k,709) - lu(k,588) * lu(k,695) + lu(k,710) = lu(k,710) - lu(k,589) * lu(k,695) + lu(k,712) = - lu(k,590) * lu(k,695) + lu(k,714) = lu(k,714) - lu(k,591) * lu(k,695) + lu(k,715) = lu(k,715) - lu(k,592) * lu(k,695) + lu(k,723) = lu(k,723) - lu(k,585) * lu(k,720) + lu(k,724) = - lu(k,586) * lu(k,720) + lu(k,730) = lu(k,730) - lu(k,587) * lu(k,720) + lu(k,731) = lu(k,731) - lu(k,588) * lu(k,720) + lu(k,732) = lu(k,732) - lu(k,589) * lu(k,720) + lu(k,733) = - lu(k,590) * lu(k,720) + lu(k,735) = lu(k,735) - lu(k,591) * lu(k,720) + lu(k,736) = lu(k,736) - lu(k,592) * lu(k,720) + lu(k,1063) = - lu(k,585) * lu(k,1058) + lu(k,1065) = lu(k,1065) - lu(k,586) * lu(k,1058) + lu(k,1079) = lu(k,1079) - lu(k,587) * lu(k,1058) + lu(k,1080) = lu(k,1080) - lu(k,588) * lu(k,1058) + lu(k,1081) = lu(k,1081) - lu(k,589) * lu(k,1058) + lu(k,1083) = - lu(k,590) * lu(k,1058) + lu(k,1085) = lu(k,1085) - lu(k,591) * lu(k,1058) + lu(k,1088) = lu(k,1088) - lu(k,592) * lu(k,1058) + lu(k,1110) = lu(k,1110) - lu(k,585) * lu(k,1104) + lu(k,1112) = - lu(k,586) * lu(k,1104) + lu(k,1125) = lu(k,1125) - lu(k,587) * lu(k,1104) + lu(k,1126) = lu(k,1126) - lu(k,588) * lu(k,1104) + lu(k,1127) = lu(k,1127) - lu(k,589) * lu(k,1104) + lu(k,1129) = - lu(k,590) * lu(k,1104) + lu(k,1131) = lu(k,1131) - lu(k,591) * lu(k,1104) + lu(k,1134) = lu(k,1134) - lu(k,592) * lu(k,1104) + lu(k,1220) = lu(k,1220) - lu(k,585) * lu(k,1214) + lu(k,1222) = lu(k,1222) - lu(k,586) * lu(k,1214) + lu(k,1235) = lu(k,1235) - lu(k,587) * lu(k,1214) + lu(k,1236) = lu(k,1236) - lu(k,588) * lu(k,1214) + lu(k,1237) = lu(k,1237) - lu(k,589) * lu(k,1214) + lu(k,1239) = lu(k,1239) - lu(k,590) * lu(k,1214) + lu(k,1241) = lu(k,1241) - lu(k,591) * lu(k,1214) + lu(k,1244) = lu(k,1244) - lu(k,592) * lu(k,1214) + lu(k,1387) = lu(k,1387) - lu(k,585) * lu(k,1381) + lu(k,1389) = lu(k,1389) - lu(k,586) * lu(k,1381) + lu(k,1404) = lu(k,1404) - lu(k,587) * lu(k,1381) + lu(k,1405) = lu(k,1405) - lu(k,588) * lu(k,1381) + lu(k,1406) = lu(k,1406) - lu(k,589) * lu(k,1381) + lu(k,1408) = lu(k,1408) - lu(k,590) * lu(k,1381) + lu(k,1410) = lu(k,1410) - lu(k,591) * lu(k,1381) + lu(k,1413) = lu(k,1413) - lu(k,592) * lu(k,1381) + lu(k,1483) = lu(k,1483) - lu(k,585) * lu(k,1478) + lu(k,1485) = lu(k,1485) - lu(k,586) * lu(k,1478) + lu(k,1497) = lu(k,1497) - lu(k,587) * lu(k,1478) + lu(k,1498) = lu(k,1498) - lu(k,588) * lu(k,1478) + lu(k,1499) = lu(k,1499) - lu(k,589) * lu(k,1478) + lu(k,1501) = - lu(k,590) * lu(k,1478) + lu(k,1503) = lu(k,1503) - lu(k,591) * lu(k,1478) + lu(k,1506) = lu(k,1506) - lu(k,592) * lu(k,1478) + lu(k,595) = 1._r8 / lu(k,595) + lu(k,596) = lu(k,596) * lu(k,595) + lu(k,597) = lu(k,597) * lu(k,595) + lu(k,598) = lu(k,598) * lu(k,595) + lu(k,599) = lu(k,599) * lu(k,595) + lu(k,600) = lu(k,600) * lu(k,595) + lu(k,601) = lu(k,601) * lu(k,595) + lu(k,602) = lu(k,602) * lu(k,595) + lu(k,603) = lu(k,603) * lu(k,595) + lu(k,604) = lu(k,604) * lu(k,595) + lu(k,605) = lu(k,605) * lu(k,595) + lu(k,1061) = lu(k,1061) - lu(k,596) * lu(k,1059) + lu(k,1066) = - lu(k,597) * lu(k,1059) + lu(k,1071) = lu(k,1071) - lu(k,598) * lu(k,1059) + lu(k,1079) = lu(k,1079) - lu(k,599) * lu(k,1059) + lu(k,1080) = lu(k,1080) - lu(k,600) * lu(k,1059) + lu(k,1081) = lu(k,1081) - lu(k,601) * lu(k,1059) + lu(k,1084) = lu(k,1084) - lu(k,602) * lu(k,1059) + lu(k,1088) = lu(k,1088) - lu(k,603) * lu(k,1059) + lu(k,1090) = lu(k,1090) - lu(k,604) * lu(k,1059) + lu(k,1093) = lu(k,1093) - lu(k,605) * lu(k,1059) + lu(k,1107) = - lu(k,596) * lu(k,1105) + lu(k,1113) = lu(k,1113) - lu(k,597) * lu(k,1105) + lu(k,1118) = lu(k,1118) - lu(k,598) * lu(k,1105) + lu(k,1125) = lu(k,1125) - lu(k,599) * lu(k,1105) + lu(k,1126) = lu(k,1126) - lu(k,600) * lu(k,1105) + lu(k,1127) = lu(k,1127) - lu(k,601) * lu(k,1105) + lu(k,1130) = lu(k,1130) - lu(k,602) * lu(k,1105) + lu(k,1134) = lu(k,1134) - lu(k,603) * lu(k,1105) + lu(k,1136) = lu(k,1136) - lu(k,604) * lu(k,1105) + lu(k,1139) = lu(k,1139) - lu(k,605) * lu(k,1105) + lu(k,1174) = lu(k,1174) - lu(k,596) * lu(k,1172) + lu(k,1179) = lu(k,1179) - lu(k,597) * lu(k,1172) + lu(k,1184) = lu(k,1184) - lu(k,598) * lu(k,1172) + lu(k,1189) = lu(k,1189) - lu(k,599) * lu(k,1172) + lu(k,1190) = lu(k,1190) - lu(k,600) * lu(k,1172) + lu(k,1191) = lu(k,1191) - lu(k,601) * lu(k,1172) + lu(k,1194) = lu(k,1194) - lu(k,602) * lu(k,1172) + lu(k,1198) = lu(k,1198) - lu(k,603) * lu(k,1172) + lu(k,1200) = lu(k,1200) - lu(k,604) * lu(k,1172) + lu(k,1203) = lu(k,1203) - lu(k,605) * lu(k,1172) + lu(k,1217) = lu(k,1217) - lu(k,596) * lu(k,1215) + lu(k,1223) = lu(k,1223) - lu(k,597) * lu(k,1215) + lu(k,1228) = lu(k,1228) - lu(k,598) * lu(k,1215) + lu(k,1235) = lu(k,1235) - lu(k,599) * lu(k,1215) + lu(k,1236) = lu(k,1236) - lu(k,600) * lu(k,1215) + lu(k,1237) = lu(k,1237) - lu(k,601) * lu(k,1215) + lu(k,1240) = lu(k,1240) - lu(k,602) * lu(k,1215) + lu(k,1244) = lu(k,1244) - lu(k,603) * lu(k,1215) + lu(k,1246) = lu(k,1246) - lu(k,604) * lu(k,1215) + lu(k,1249) = lu(k,1249) - lu(k,605) * lu(k,1215) + lu(k,1384) = lu(k,1384) - lu(k,596) * lu(k,1382) + lu(k,1390) = lu(k,1390) - lu(k,597) * lu(k,1382) + lu(k,1395) = lu(k,1395) - lu(k,598) * lu(k,1382) + lu(k,1404) = lu(k,1404) - lu(k,599) * lu(k,1382) + lu(k,1405) = lu(k,1405) - lu(k,600) * lu(k,1382) + lu(k,1406) = lu(k,1406) - lu(k,601) * lu(k,1382) + lu(k,1409) = lu(k,1409) - lu(k,602) * lu(k,1382) + lu(k,1413) = lu(k,1413) - lu(k,603) * lu(k,1382) + lu(k,1415) = lu(k,1415) - lu(k,604) * lu(k,1382) + lu(k,1418) = lu(k,1418) - lu(k,605) * lu(k,1382) + lu(k,1481) = lu(k,1481) - lu(k,596) * lu(k,1479) + lu(k,1486) = lu(k,1486) - lu(k,597) * lu(k,1479) + lu(k,1491) = lu(k,1491) - lu(k,598) * lu(k,1479) + lu(k,1497) = lu(k,1497) - lu(k,599) * lu(k,1479) + lu(k,1498) = lu(k,1498) - lu(k,600) * lu(k,1479) + lu(k,1499) = lu(k,1499) - lu(k,601) * lu(k,1479) + lu(k,1502) = lu(k,1502) - lu(k,602) * lu(k,1479) + lu(k,1506) = lu(k,1506) - lu(k,603) * lu(k,1479) + lu(k,1508) = lu(k,1508) - lu(k,604) * lu(k,1479) + lu(k,1511) = lu(k,1511) - lu(k,605) * lu(k,1479) + end do + end subroutine lu_fac13 + subroutine lu_fac14( avec_len, lu ) + use chem_mods, only : nzcnt + use shr_kind_mod, only : r8 => shr_kind_r8 + implicit none +!----------------------------------------------------------------------- +! ... dummy args +!----------------------------------------------------------------------- + integer, intent(in) :: avec_len + real(r8), intent(inout) :: lu(veclen,nzcnt) +!----------------------------------------------------------------------- +! ... local variables +!----------------------------------------------------------------------- + integer :: k + do k = 1,avec_len + lu(k,607) = 1._r8 / lu(k,607) + lu(k,608) = lu(k,608) * lu(k,607) + lu(k,609) = lu(k,609) * lu(k,607) + lu(k,610) = lu(k,610) * lu(k,607) + lu(k,611) = lu(k,611) * lu(k,607) + lu(k,612) = lu(k,612) * lu(k,607) + lu(k,670) = lu(k,670) - lu(k,608) * lu(k,668) + lu(k,674) = lu(k,674) - lu(k,609) * lu(k,668) + lu(k,676) = lu(k,676) - lu(k,610) * lu(k,668) + lu(k,677) = lu(k,677) - lu(k,611) * lu(k,668) + lu(k,680) = lu(k,680) - lu(k,612) * lu(k,668) + lu(k,698) = lu(k,698) - lu(k,608) * lu(k,696) + lu(k,707) = lu(k,707) - lu(k,609) * lu(k,696) + lu(k,709) = lu(k,709) - lu(k,610) * lu(k,696) + lu(k,710) = lu(k,710) - lu(k,611) * lu(k,696) + lu(k,715) = lu(k,715) - lu(k,612) * lu(k,696) + lu(k,723) = lu(k,723) - lu(k,608) * lu(k,721) + lu(k,729) = - lu(k,609) * lu(k,721) + lu(k,731) = lu(k,731) - lu(k,610) * lu(k,721) + lu(k,732) = lu(k,732) - lu(k,611) * lu(k,721) + lu(k,736) = lu(k,736) - lu(k,612) * lu(k,721) + lu(k,785) = lu(k,785) - lu(k,608) * lu(k,783) + lu(k,794) = lu(k,794) - lu(k,609) * lu(k,783) + lu(k,797) = lu(k,797) - lu(k,610) * lu(k,783) + lu(k,798) = lu(k,798) - lu(k,611) * lu(k,783) + lu(k,803) = lu(k,803) - lu(k,612) * lu(k,783) + lu(k,905) = lu(k,905) - lu(k,608) * lu(k,904) + lu(k,906) = lu(k,906) - lu(k,609) * lu(k,904) + lu(k,913) = lu(k,913) - lu(k,610) * lu(k,904) + lu(k,914) = lu(k,914) - lu(k,611) * lu(k,904) + lu(k,918) = lu(k,918) - lu(k,612) * lu(k,904) + lu(k,1063) = lu(k,1063) - lu(k,608) * lu(k,1060) + lu(k,1072) = lu(k,1072) - lu(k,609) * lu(k,1060) + lu(k,1080) = lu(k,1080) - lu(k,610) * lu(k,1060) + lu(k,1081) = lu(k,1081) - lu(k,611) * lu(k,1060) + lu(k,1088) = lu(k,1088) - lu(k,612) * lu(k,1060) + lu(k,1110) = lu(k,1110) - lu(k,608) * lu(k,1106) + lu(k,1119) = lu(k,1119) - lu(k,609) * lu(k,1106) + lu(k,1126) = lu(k,1126) - lu(k,610) * lu(k,1106) + lu(k,1127) = lu(k,1127) - lu(k,611) * lu(k,1106) + lu(k,1134) = lu(k,1134) - lu(k,612) * lu(k,1106) + lu(k,1176) = lu(k,1176) - lu(k,608) * lu(k,1173) + lu(k,1185) = lu(k,1185) - lu(k,609) * lu(k,1173) + lu(k,1190) = lu(k,1190) - lu(k,610) * lu(k,1173) + lu(k,1191) = lu(k,1191) - lu(k,611) * lu(k,1173) + lu(k,1198) = lu(k,1198) - lu(k,612) * lu(k,1173) + lu(k,1220) = lu(k,1220) - lu(k,608) * lu(k,1216) + lu(k,1229) = lu(k,1229) - lu(k,609) * lu(k,1216) + lu(k,1236) = lu(k,1236) - lu(k,610) * lu(k,1216) + lu(k,1237) = lu(k,1237) - lu(k,611) * lu(k,1216) + lu(k,1244) = lu(k,1244) - lu(k,612) * lu(k,1216) + lu(k,1306) = lu(k,1306) - lu(k,608) * lu(k,1304) + lu(k,1308) = - lu(k,609) * lu(k,1304) + lu(k,1316) = lu(k,1316) - lu(k,610) * lu(k,1304) + lu(k,1317) = lu(k,1317) - lu(k,611) * lu(k,1304) + lu(k,1324) = lu(k,1324) - lu(k,612) * lu(k,1304) + lu(k,1387) = lu(k,1387) - lu(k,608) * lu(k,1383) + lu(k,1396) = lu(k,1396) - lu(k,609) * lu(k,1383) + lu(k,1405) = lu(k,1405) - lu(k,610) * lu(k,1383) + lu(k,1406) = lu(k,1406) - lu(k,611) * lu(k,1383) + lu(k,1413) = lu(k,1413) - lu(k,612) * lu(k,1383) + lu(k,1483) = lu(k,1483) - lu(k,608) * lu(k,1480) + lu(k,1492) = lu(k,1492) - lu(k,609) * lu(k,1480) + lu(k,1498) = lu(k,1498) - lu(k,610) * lu(k,1480) + lu(k,1499) = lu(k,1499) - lu(k,611) * lu(k,1480) + lu(k,1506) = lu(k,1506) - lu(k,612) * lu(k,1480) + lu(k,613) = 1._r8 / lu(k,613) + lu(k,614) = lu(k,614) * lu(k,613) + lu(k,615) = lu(k,615) * lu(k,613) + lu(k,616) = lu(k,616) * lu(k,613) + lu(k,617) = lu(k,617) * lu(k,613) + lu(k,618) = lu(k,618) * lu(k,613) + lu(k,626) = lu(k,626) - lu(k,614) * lu(k,622) + lu(k,627) = lu(k,627) - lu(k,615) * lu(k,622) + lu(k,631) = lu(k,631) - lu(k,616) * lu(k,622) + lu(k,632) = lu(k,632) - lu(k,617) * lu(k,622) + lu(k,636) = lu(k,636) - lu(k,618) * lu(k,622) + lu(k,672) = lu(k,672) - lu(k,614) * lu(k,669) + lu(k,673) = lu(k,673) - lu(k,615) * lu(k,669) + lu(k,676) = lu(k,676) - lu(k,616) * lu(k,669) + lu(k,677) = lu(k,677) - lu(k,617) * lu(k,669) + lu(k,680) = lu(k,680) - lu(k,618) * lu(k,669) + lu(k,701) = lu(k,701) - lu(k,614) * lu(k,697) + lu(k,706) = lu(k,706) - lu(k,615) * lu(k,697) + lu(k,709) = lu(k,709) - lu(k,616) * lu(k,697) + lu(k,710) = lu(k,710) - lu(k,617) * lu(k,697) + lu(k,715) = lu(k,715) - lu(k,618) * lu(k,697) + lu(k,725) = lu(k,725) - lu(k,614) * lu(k,722) + lu(k,728) = lu(k,728) - lu(k,615) * lu(k,722) + lu(k,731) = lu(k,731) - lu(k,616) * lu(k,722) + lu(k,732) = lu(k,732) - lu(k,617) * lu(k,722) + lu(k,736) = lu(k,736) - lu(k,618) * lu(k,722) + lu(k,764) = - lu(k,614) * lu(k,763) + lu(k,766) = lu(k,766) - lu(k,615) * lu(k,763) + lu(k,769) = lu(k,769) - lu(k,616) * lu(k,763) + lu(k,770) = lu(k,770) - lu(k,617) * lu(k,763) + lu(k,775) = lu(k,775) - lu(k,618) * lu(k,763) + lu(k,788) = lu(k,788) - lu(k,614) * lu(k,784) + lu(k,793) = lu(k,793) - lu(k,615) * lu(k,784) + lu(k,797) = lu(k,797) - lu(k,616) * lu(k,784) + lu(k,798) = lu(k,798) - lu(k,617) * lu(k,784) + lu(k,803) = lu(k,803) - lu(k,618) * lu(k,784) + lu(k,986) = - lu(k,614) * lu(k,984) + lu(k,988) = lu(k,988) - lu(k,615) * lu(k,984) + lu(k,997) = lu(k,997) - lu(k,616) * lu(k,984) + lu(k,998) = lu(k,998) - lu(k,617) * lu(k,984) + lu(k,1005) = lu(k,1005) - lu(k,618) * lu(k,984) + lu(k,1066) = lu(k,1066) - lu(k,614) * lu(k,1061) + lu(k,1071) = lu(k,1071) - lu(k,615) * lu(k,1061) + lu(k,1080) = lu(k,1080) - lu(k,616) * lu(k,1061) + lu(k,1081) = lu(k,1081) - lu(k,617) * lu(k,1061) + lu(k,1088) = lu(k,1088) - lu(k,618) * lu(k,1061) + lu(k,1113) = lu(k,1113) - lu(k,614) * lu(k,1107) + lu(k,1118) = lu(k,1118) - lu(k,615) * lu(k,1107) + lu(k,1126) = lu(k,1126) - lu(k,616) * lu(k,1107) + lu(k,1127) = lu(k,1127) - lu(k,617) * lu(k,1107) + lu(k,1134) = lu(k,1134) - lu(k,618) * lu(k,1107) + lu(k,1179) = lu(k,1179) - lu(k,614) * lu(k,1174) + lu(k,1184) = lu(k,1184) - lu(k,615) * lu(k,1174) + lu(k,1190) = lu(k,1190) - lu(k,616) * lu(k,1174) + lu(k,1191) = lu(k,1191) - lu(k,617) * lu(k,1174) + lu(k,1198) = lu(k,1198) - lu(k,618) * lu(k,1174) + lu(k,1223) = lu(k,1223) - lu(k,614) * lu(k,1217) + lu(k,1228) = lu(k,1228) - lu(k,615) * lu(k,1217) + lu(k,1236) = lu(k,1236) - lu(k,616) * lu(k,1217) + lu(k,1237) = lu(k,1237) - lu(k,617) * lu(k,1217) + lu(k,1244) = lu(k,1244) - lu(k,618) * lu(k,1217) + lu(k,1390) = lu(k,1390) - lu(k,614) * lu(k,1384) + lu(k,1395) = lu(k,1395) - lu(k,615) * lu(k,1384) + lu(k,1405) = lu(k,1405) - lu(k,616) * lu(k,1384) + lu(k,1406) = lu(k,1406) - lu(k,617) * lu(k,1384) + lu(k,1413) = lu(k,1413) - lu(k,618) * lu(k,1384) + lu(k,1486) = lu(k,1486) - lu(k,614) * lu(k,1481) + lu(k,1491) = lu(k,1491) - lu(k,615) * lu(k,1481) + lu(k,1498) = lu(k,1498) - lu(k,616) * lu(k,1481) + lu(k,1499) = lu(k,1499) - lu(k,617) * lu(k,1481) + lu(k,1506) = lu(k,1506) - lu(k,618) * lu(k,1481) + lu(k,623) = 1._r8 / lu(k,623) + lu(k,624) = lu(k,624) * lu(k,623) + lu(k,625) = lu(k,625) * lu(k,623) + lu(k,626) = lu(k,626) * lu(k,623) + lu(k,627) = lu(k,627) * lu(k,623) + lu(k,628) = lu(k,628) * lu(k,623) + lu(k,629) = lu(k,629) * lu(k,623) + lu(k,630) = lu(k,630) * lu(k,623) + lu(k,631) = lu(k,631) * lu(k,623) + lu(k,632) = lu(k,632) * lu(k,623) + lu(k,633) = lu(k,633) * lu(k,623) + lu(k,634) = lu(k,634) * lu(k,623) + lu(k,635) = lu(k,635) * lu(k,623) + lu(k,636) = lu(k,636) * lu(k,623) + lu(k,637) = lu(k,637) * lu(k,623) + lu(k,638) = lu(k,638) * lu(k,623) + lu(k,639) = lu(k,639) * lu(k,623) + lu(k,740) = lu(k,740) - lu(k,624) * lu(k,739) + lu(k,741) = lu(k,741) - lu(k,625) * lu(k,739) + lu(k,742) = lu(k,742) - lu(k,626) * lu(k,739) + lu(k,746) = lu(k,746) - lu(k,627) * lu(k,739) + lu(k,747) = lu(k,747) - lu(k,628) * lu(k,739) + lu(k,748) = - lu(k,629) * lu(k,739) + lu(k,749) = - lu(k,630) * lu(k,739) + lu(k,750) = lu(k,750) - lu(k,631) * lu(k,739) + lu(k,751) = lu(k,751) - lu(k,632) * lu(k,739) + lu(k,752) = lu(k,752) - lu(k,633) * lu(k,739) + lu(k,754) = lu(k,754) - lu(k,634) * lu(k,739) + lu(k,755) = - lu(k,635) * lu(k,739) + lu(k,756) = lu(k,756) - lu(k,636) * lu(k,739) + lu(k,757) = - lu(k,637) * lu(k,739) + lu(k,758) = - lu(k,638) * lu(k,739) + lu(k,759) = - lu(k,639) * lu(k,739) + lu(k,1109) = lu(k,1109) - lu(k,624) * lu(k,1108) + lu(k,1110) = lu(k,1110) - lu(k,625) * lu(k,1108) + lu(k,1113) = lu(k,1113) - lu(k,626) * lu(k,1108) + lu(k,1118) = lu(k,1118) - lu(k,627) * lu(k,1108) + lu(k,1119) = lu(k,1119) - lu(k,628) * lu(k,1108) + lu(k,1122) = lu(k,1122) - lu(k,629) * lu(k,1108) + lu(k,1125) = lu(k,1125) - lu(k,630) * lu(k,1108) + lu(k,1126) = lu(k,1126) - lu(k,631) * lu(k,1108) + lu(k,1127) = lu(k,1127) - lu(k,632) * lu(k,1108) + lu(k,1128) = lu(k,1128) - lu(k,633) * lu(k,1108) + lu(k,1130) = lu(k,1130) - lu(k,634) * lu(k,1108) + lu(k,1131) = lu(k,1131) - lu(k,635) * lu(k,1108) + lu(k,1134) = lu(k,1134) - lu(k,636) * lu(k,1108) + lu(k,1136) = lu(k,1136) - lu(k,637) * lu(k,1108) + lu(k,1137) = lu(k,1137) - lu(k,638) * lu(k,1108) + lu(k,1139) = lu(k,1139) - lu(k,639) * lu(k,1108) + lu(k,1219) = lu(k,1219) - lu(k,624) * lu(k,1218) + lu(k,1220) = lu(k,1220) - lu(k,625) * lu(k,1218) + lu(k,1223) = lu(k,1223) - lu(k,626) * lu(k,1218) + lu(k,1228) = lu(k,1228) - lu(k,627) * lu(k,1218) + lu(k,1229) = lu(k,1229) - lu(k,628) * lu(k,1218) + lu(k,1232) = lu(k,1232) - lu(k,629) * lu(k,1218) + lu(k,1235) = lu(k,1235) - lu(k,630) * lu(k,1218) + lu(k,1236) = lu(k,1236) - lu(k,631) * lu(k,1218) + lu(k,1237) = lu(k,1237) - lu(k,632) * lu(k,1218) + lu(k,1238) = lu(k,1238) - lu(k,633) * lu(k,1218) + lu(k,1240) = lu(k,1240) - lu(k,634) * lu(k,1218) + lu(k,1241) = lu(k,1241) - lu(k,635) * lu(k,1218) + lu(k,1244) = lu(k,1244) - lu(k,636) * lu(k,1218) + lu(k,1246) = lu(k,1246) - lu(k,637) * lu(k,1218) + lu(k,1247) = - lu(k,638) * lu(k,1218) + lu(k,1249) = lu(k,1249) - lu(k,639) * lu(k,1218) + lu(k,1386) = lu(k,1386) - lu(k,624) * lu(k,1385) + lu(k,1387) = lu(k,1387) - lu(k,625) * lu(k,1385) + lu(k,1390) = lu(k,1390) - lu(k,626) * lu(k,1385) + lu(k,1395) = lu(k,1395) - lu(k,627) * lu(k,1385) + lu(k,1396) = lu(k,1396) - lu(k,628) * lu(k,1385) + lu(k,1401) = lu(k,1401) - lu(k,629) * lu(k,1385) + lu(k,1404) = lu(k,1404) - lu(k,630) * lu(k,1385) + lu(k,1405) = lu(k,1405) - lu(k,631) * lu(k,1385) + lu(k,1406) = lu(k,1406) - lu(k,632) * lu(k,1385) + lu(k,1407) = lu(k,1407) - lu(k,633) * lu(k,1385) + lu(k,1409) = lu(k,1409) - lu(k,634) * lu(k,1385) + lu(k,1410) = lu(k,1410) - lu(k,635) * lu(k,1385) + lu(k,1413) = lu(k,1413) - lu(k,636) * lu(k,1385) + lu(k,1415) = lu(k,1415) - lu(k,637) * lu(k,1385) + lu(k,1416) = lu(k,1416) - lu(k,638) * lu(k,1385) + lu(k,1418) = lu(k,1418) - lu(k,639) * lu(k,1385) + lu(k,640) = 1._r8 / lu(k,640) + lu(k,641) = lu(k,641) * lu(k,640) + lu(k,642) = lu(k,642) * lu(k,640) + lu(k,643) = lu(k,643) * lu(k,640) + lu(k,644) = lu(k,644) * lu(k,640) + lu(k,645) = lu(k,645) * lu(k,640) + lu(k,646) = lu(k,646) * lu(k,640) + lu(k,647) = lu(k,647) * lu(k,640) + lu(k,648) = lu(k,648) * lu(k,640) + lu(k,741) = lu(k,741) - lu(k,641) * lu(k,740) + lu(k,746) = lu(k,746) - lu(k,642) * lu(k,740) + lu(k,751) = lu(k,751) - lu(k,643) * lu(k,740) + lu(k,753) = - lu(k,644) * lu(k,740) + lu(k,754) = lu(k,754) - lu(k,645) * lu(k,740) + lu(k,755) = lu(k,755) - lu(k,646) * lu(k,740) + lu(k,756) = lu(k,756) - lu(k,647) * lu(k,740) + lu(k,759) = lu(k,759) - lu(k,648) * lu(k,740) + lu(k,1063) = lu(k,1063) - lu(k,641) * lu(k,1062) + lu(k,1071) = lu(k,1071) - lu(k,642) * lu(k,1062) + lu(k,1081) = lu(k,1081) - lu(k,643) * lu(k,1062) + lu(k,1083) = lu(k,1083) - lu(k,644) * lu(k,1062) + lu(k,1084) = lu(k,1084) - lu(k,645) * lu(k,1062) + lu(k,1085) = lu(k,1085) - lu(k,646) * lu(k,1062) + lu(k,1088) = lu(k,1088) - lu(k,647) * lu(k,1062) + lu(k,1093) = lu(k,1093) - lu(k,648) * lu(k,1062) + lu(k,1110) = lu(k,1110) - lu(k,641) * lu(k,1109) + lu(k,1118) = lu(k,1118) - lu(k,642) * lu(k,1109) + lu(k,1127) = lu(k,1127) - lu(k,643) * lu(k,1109) + lu(k,1129) = lu(k,1129) - lu(k,644) * lu(k,1109) + lu(k,1130) = lu(k,1130) - lu(k,645) * lu(k,1109) + lu(k,1131) = lu(k,1131) - lu(k,646) * lu(k,1109) + lu(k,1134) = lu(k,1134) - lu(k,647) * lu(k,1109) + lu(k,1139) = lu(k,1139) - lu(k,648) * lu(k,1109) + lu(k,1176) = lu(k,1176) - lu(k,641) * lu(k,1175) + lu(k,1184) = lu(k,1184) - lu(k,642) * lu(k,1175) + lu(k,1191) = lu(k,1191) - lu(k,643) * lu(k,1175) + lu(k,1193) = - lu(k,644) * lu(k,1175) + lu(k,1194) = lu(k,1194) - lu(k,645) * lu(k,1175) + lu(k,1195) = - lu(k,646) * lu(k,1175) + lu(k,1198) = lu(k,1198) - lu(k,647) * lu(k,1175) + lu(k,1203) = lu(k,1203) - lu(k,648) * lu(k,1175) + lu(k,1220) = lu(k,1220) - lu(k,641) * lu(k,1219) + lu(k,1228) = lu(k,1228) - lu(k,642) * lu(k,1219) + lu(k,1237) = lu(k,1237) - lu(k,643) * lu(k,1219) + lu(k,1239) = lu(k,1239) - lu(k,644) * lu(k,1219) + lu(k,1240) = lu(k,1240) - lu(k,645) * lu(k,1219) + lu(k,1241) = lu(k,1241) - lu(k,646) * lu(k,1219) + lu(k,1244) = lu(k,1244) - lu(k,647) * lu(k,1219) + lu(k,1249) = lu(k,1249) - lu(k,648) * lu(k,1219) + lu(k,1306) = lu(k,1306) - lu(k,641) * lu(k,1305) + lu(k,1307) = - lu(k,642) * lu(k,1305) + lu(k,1317) = lu(k,1317) - lu(k,643) * lu(k,1305) + lu(k,1319) = lu(k,1319) - lu(k,644) * lu(k,1305) + lu(k,1320) = lu(k,1320) - lu(k,645) * lu(k,1305) + lu(k,1321) = lu(k,1321) - lu(k,646) * lu(k,1305) + lu(k,1324) = lu(k,1324) - lu(k,647) * lu(k,1305) + lu(k,1329) = lu(k,1329) - lu(k,648) * lu(k,1305) + lu(k,1387) = lu(k,1387) - lu(k,641) * lu(k,1386) + lu(k,1395) = lu(k,1395) - lu(k,642) * lu(k,1386) + lu(k,1406) = lu(k,1406) - lu(k,643) * lu(k,1386) + lu(k,1408) = lu(k,1408) - lu(k,644) * lu(k,1386) + lu(k,1409) = lu(k,1409) - lu(k,645) * lu(k,1386) + lu(k,1410) = lu(k,1410) - lu(k,646) * lu(k,1386) + lu(k,1413) = lu(k,1413) - lu(k,647) * lu(k,1386) + lu(k,1418) = lu(k,1418) - lu(k,648) * lu(k,1386) + lu(k,1483) = lu(k,1483) - lu(k,641) * lu(k,1482) + lu(k,1491) = lu(k,1491) - lu(k,642) * lu(k,1482) + lu(k,1499) = lu(k,1499) - lu(k,643) * lu(k,1482) + lu(k,1501) = lu(k,1501) - lu(k,644) * lu(k,1482) + lu(k,1502) = lu(k,1502) - lu(k,645) * lu(k,1482) + lu(k,1503) = lu(k,1503) - lu(k,646) * lu(k,1482) + lu(k,1506) = lu(k,1506) - lu(k,647) * lu(k,1482) + lu(k,1511) = lu(k,1511) - lu(k,648) * lu(k,1482) + end do + end subroutine lu_fac14 + subroutine lu_fac15( avec_len, lu ) + use chem_mods, only : nzcnt + use shr_kind_mod, only : r8 => shr_kind_r8 + implicit none +!----------------------------------------------------------------------- +! ... dummy args +!----------------------------------------------------------------------- + integer, intent(in) :: avec_len + real(r8), intent(inout) :: lu(veclen,nzcnt) +!----------------------------------------------------------------------- +! ... local variables +!----------------------------------------------------------------------- + integer :: k + do k = 1,avec_len + lu(k,649) = 1._r8 / lu(k,649) + lu(k,650) = lu(k,650) * lu(k,649) + lu(k,651) = lu(k,651) * lu(k,649) + lu(k,652) = lu(k,652) * lu(k,649) + lu(k,659) = - lu(k,650) * lu(k,653) + lu(k,661) = lu(k,661) - lu(k,651) * lu(k,653) + lu(k,663) = lu(k,663) - lu(k,652) * lu(k,653) + lu(k,674) = lu(k,674) - lu(k,650) * lu(k,670) + lu(k,677) = lu(k,677) - lu(k,651) * lu(k,670) + lu(k,680) = lu(k,680) - lu(k,652) * lu(k,670) + lu(k,685) = - lu(k,650) * lu(k,682) + lu(k,686) = lu(k,686) - lu(k,651) * lu(k,682) + lu(k,689) = lu(k,689) - lu(k,652) * lu(k,682) + lu(k,707) = lu(k,707) - lu(k,650) * lu(k,698) + lu(k,710) = lu(k,710) - lu(k,651) * lu(k,698) + lu(k,715) = lu(k,715) - lu(k,652) * lu(k,698) + lu(k,729) = lu(k,729) - lu(k,650) * lu(k,723) + lu(k,732) = lu(k,732) - lu(k,651) * lu(k,723) + lu(k,736) = lu(k,736) - lu(k,652) * lu(k,723) + lu(k,747) = lu(k,747) - lu(k,650) * lu(k,741) + lu(k,751) = lu(k,751) - lu(k,651) * lu(k,741) + lu(k,756) = lu(k,756) - lu(k,652) * lu(k,741) + lu(k,794) = lu(k,794) - lu(k,650) * lu(k,785) + lu(k,798) = lu(k,798) - lu(k,651) * lu(k,785) + lu(k,803) = lu(k,803) - lu(k,652) * lu(k,785) + lu(k,815) = lu(k,815) - lu(k,650) * lu(k,814) + lu(k,818) = - lu(k,651) * lu(k,814) + lu(k,820) = lu(k,820) - lu(k,652) * lu(k,814) + lu(k,875) = - lu(k,650) * lu(k,874) + lu(k,881) = lu(k,881) - lu(k,651) * lu(k,874) + lu(k,884) = lu(k,884) - lu(k,652) * lu(k,874) + lu(k,906) = lu(k,906) - lu(k,650) * lu(k,905) + lu(k,914) = lu(k,914) - lu(k,651) * lu(k,905) + lu(k,918) = lu(k,918) - lu(k,652) * lu(k,905) + lu(k,989) = lu(k,989) - lu(k,650) * lu(k,985) + lu(k,998) = lu(k,998) - lu(k,651) * lu(k,985) + lu(k,1005) = lu(k,1005) - lu(k,652) * lu(k,985) + lu(k,1013) = - lu(k,650) * lu(k,1012) + lu(k,1022) = lu(k,1022) - lu(k,651) * lu(k,1012) + lu(k,1029) = lu(k,1029) - lu(k,652) * lu(k,1012) + lu(k,1072) = lu(k,1072) - lu(k,650) * lu(k,1063) + lu(k,1081) = lu(k,1081) - lu(k,651) * lu(k,1063) + lu(k,1088) = lu(k,1088) - lu(k,652) * lu(k,1063) + lu(k,1119) = lu(k,1119) - lu(k,650) * lu(k,1110) + lu(k,1127) = lu(k,1127) - lu(k,651) * lu(k,1110) + lu(k,1134) = lu(k,1134) - lu(k,652) * lu(k,1110) + lu(k,1185) = lu(k,1185) - lu(k,650) * lu(k,1176) + lu(k,1191) = lu(k,1191) - lu(k,651) * lu(k,1176) + lu(k,1198) = lu(k,1198) - lu(k,652) * lu(k,1176) + lu(k,1229) = lu(k,1229) - lu(k,650) * lu(k,1220) + lu(k,1237) = lu(k,1237) - lu(k,651) * lu(k,1220) + lu(k,1244) = lu(k,1244) - lu(k,652) * lu(k,1220) + lu(k,1308) = lu(k,1308) - lu(k,650) * lu(k,1306) + lu(k,1317) = lu(k,1317) - lu(k,651) * lu(k,1306) + lu(k,1324) = lu(k,1324) - lu(k,652) * lu(k,1306) + lu(k,1396) = lu(k,1396) - lu(k,650) * lu(k,1387) + lu(k,1406) = lu(k,1406) - lu(k,651) * lu(k,1387) + lu(k,1413) = lu(k,1413) - lu(k,652) * lu(k,1387) + lu(k,1441) = lu(k,1441) - lu(k,650) * lu(k,1440) + lu(k,1451) = lu(k,1451) - lu(k,651) * lu(k,1440) + lu(k,1458) = lu(k,1458) - lu(k,652) * lu(k,1440) + lu(k,1492) = lu(k,1492) - lu(k,650) * lu(k,1483) + lu(k,1499) = lu(k,1499) - lu(k,651) * lu(k,1483) + lu(k,1506) = lu(k,1506) - lu(k,652) * lu(k,1483) + lu(k,1515) = lu(k,1515) - lu(k,650) * lu(k,1514) + lu(k,1524) = lu(k,1524) - lu(k,651) * lu(k,1514) + lu(k,1531) = lu(k,1531) - lu(k,652) * lu(k,1514) + lu(k,654) = 1._r8 / lu(k,654) + lu(k,655) = lu(k,655) * lu(k,654) + lu(k,656) = lu(k,656) * lu(k,654) + lu(k,657) = lu(k,657) * lu(k,654) + lu(k,658) = lu(k,658) * lu(k,654) + lu(k,659) = lu(k,659) * lu(k,654) + lu(k,660) = lu(k,660) * lu(k,654) + lu(k,661) = lu(k,661) * lu(k,654) + lu(k,662) = lu(k,662) * lu(k,654) + lu(k,663) = lu(k,663) * lu(k,654) + lu(k,664) = lu(k,664) * lu(k,654) + lu(k,701) = lu(k,701) - lu(k,655) * lu(k,699) + lu(k,703) = - lu(k,656) * lu(k,699) + lu(k,705) = - lu(k,657) * lu(k,699) + lu(k,706) = lu(k,706) - lu(k,658) * lu(k,699) + lu(k,707) = lu(k,707) - lu(k,659) * lu(k,699) + lu(k,709) = lu(k,709) - lu(k,660) * lu(k,699) + lu(k,710) = lu(k,710) - lu(k,661) * lu(k,699) + lu(k,711) = - lu(k,662) * lu(k,699) + lu(k,715) = lu(k,715) - lu(k,663) * lu(k,699) + lu(k,717) = - lu(k,664) * lu(k,699) + lu(k,788) = lu(k,788) - lu(k,655) * lu(k,786) + lu(k,790) = lu(k,790) - lu(k,656) * lu(k,786) + lu(k,792) = lu(k,792) - lu(k,657) * lu(k,786) + lu(k,793) = lu(k,793) - lu(k,658) * lu(k,786) + lu(k,794) = lu(k,794) - lu(k,659) * lu(k,786) + lu(k,797) = lu(k,797) - lu(k,660) * lu(k,786) + lu(k,798) = lu(k,798) - lu(k,661) * lu(k,786) + lu(k,799) = lu(k,799) - lu(k,662) * lu(k,786) + lu(k,803) = lu(k,803) - lu(k,663) * lu(k,786) + lu(k,806) = lu(k,806) - lu(k,664) * lu(k,786) + lu(k,1066) = lu(k,1066) - lu(k,655) * lu(k,1064) + lu(k,1068) = lu(k,1068) - lu(k,656) * lu(k,1064) + lu(k,1070) = lu(k,1070) - lu(k,657) * lu(k,1064) + lu(k,1071) = lu(k,1071) - lu(k,658) * lu(k,1064) + lu(k,1072) = lu(k,1072) - lu(k,659) * lu(k,1064) + lu(k,1080) = lu(k,1080) - lu(k,660) * lu(k,1064) + lu(k,1081) = lu(k,1081) - lu(k,661) * lu(k,1064) + lu(k,1082) = lu(k,1082) - lu(k,662) * lu(k,1064) + lu(k,1088) = lu(k,1088) - lu(k,663) * lu(k,1064) + lu(k,1093) = lu(k,1093) - lu(k,664) * lu(k,1064) + lu(k,1113) = lu(k,1113) - lu(k,655) * lu(k,1111) + lu(k,1115) = - lu(k,656) * lu(k,1111) + lu(k,1117) = - lu(k,657) * lu(k,1111) + lu(k,1118) = lu(k,1118) - lu(k,658) * lu(k,1111) + lu(k,1119) = lu(k,1119) - lu(k,659) * lu(k,1111) + lu(k,1126) = lu(k,1126) - lu(k,660) * lu(k,1111) + lu(k,1127) = lu(k,1127) - lu(k,661) * lu(k,1111) + lu(k,1128) = lu(k,1128) - lu(k,662) * lu(k,1111) + lu(k,1134) = lu(k,1134) - lu(k,663) * lu(k,1111) + lu(k,1139) = lu(k,1139) - lu(k,664) * lu(k,1111) + lu(k,1179) = lu(k,1179) - lu(k,655) * lu(k,1177) + lu(k,1181) = lu(k,1181) - lu(k,656) * lu(k,1177) + lu(k,1183) = lu(k,1183) - lu(k,657) * lu(k,1177) + lu(k,1184) = lu(k,1184) - lu(k,658) * lu(k,1177) + lu(k,1185) = lu(k,1185) - lu(k,659) * lu(k,1177) + lu(k,1190) = lu(k,1190) - lu(k,660) * lu(k,1177) + lu(k,1191) = lu(k,1191) - lu(k,661) * lu(k,1177) + lu(k,1192) = - lu(k,662) * lu(k,1177) + lu(k,1198) = lu(k,1198) - lu(k,663) * lu(k,1177) + lu(k,1203) = lu(k,1203) - lu(k,664) * lu(k,1177) + lu(k,1223) = lu(k,1223) - lu(k,655) * lu(k,1221) + lu(k,1225) = lu(k,1225) - lu(k,656) * lu(k,1221) + lu(k,1227) = lu(k,1227) - lu(k,657) * lu(k,1221) + lu(k,1228) = lu(k,1228) - lu(k,658) * lu(k,1221) + lu(k,1229) = lu(k,1229) - lu(k,659) * lu(k,1221) + lu(k,1236) = lu(k,1236) - lu(k,660) * lu(k,1221) + lu(k,1237) = lu(k,1237) - lu(k,661) * lu(k,1221) + lu(k,1238) = lu(k,1238) - lu(k,662) * lu(k,1221) + lu(k,1244) = lu(k,1244) - lu(k,663) * lu(k,1221) + lu(k,1249) = lu(k,1249) - lu(k,664) * lu(k,1221) + lu(k,1390) = lu(k,1390) - lu(k,655) * lu(k,1388) + lu(k,1392) = lu(k,1392) - lu(k,656) * lu(k,1388) + lu(k,1394) = lu(k,1394) - lu(k,657) * lu(k,1388) + lu(k,1395) = lu(k,1395) - lu(k,658) * lu(k,1388) + lu(k,1396) = lu(k,1396) - lu(k,659) * lu(k,1388) + lu(k,1405) = lu(k,1405) - lu(k,660) * lu(k,1388) + lu(k,1406) = lu(k,1406) - lu(k,661) * lu(k,1388) + lu(k,1407) = lu(k,1407) - lu(k,662) * lu(k,1388) + lu(k,1413) = lu(k,1413) - lu(k,663) * lu(k,1388) + lu(k,1418) = lu(k,1418) - lu(k,664) * lu(k,1388) + lu(k,1486) = lu(k,1486) - lu(k,655) * lu(k,1484) + lu(k,1488) = lu(k,1488) - lu(k,656) * lu(k,1484) + lu(k,1490) = lu(k,1490) - lu(k,657) * lu(k,1484) + lu(k,1491) = lu(k,1491) - lu(k,658) * lu(k,1484) + lu(k,1492) = lu(k,1492) - lu(k,659) * lu(k,1484) + lu(k,1498) = lu(k,1498) - lu(k,660) * lu(k,1484) + lu(k,1499) = lu(k,1499) - lu(k,661) * lu(k,1484) + lu(k,1500) = lu(k,1500) - lu(k,662) * lu(k,1484) + lu(k,1506) = lu(k,1506) - lu(k,663) * lu(k,1484) + lu(k,1511) = lu(k,1511) - lu(k,664) * lu(k,1484) + lu(k,671) = 1._r8 / lu(k,671) + lu(k,672) = lu(k,672) * lu(k,671) + lu(k,673) = lu(k,673) * lu(k,671) + lu(k,674) = lu(k,674) * lu(k,671) + lu(k,675) = lu(k,675) * lu(k,671) + lu(k,676) = lu(k,676) * lu(k,671) + lu(k,677) = lu(k,677) * lu(k,671) + lu(k,678) = lu(k,678) * lu(k,671) + lu(k,679) = lu(k,679) * lu(k,671) + lu(k,680) = lu(k,680) * lu(k,671) + lu(k,681) = lu(k,681) * lu(k,671) + lu(k,701) = lu(k,701) - lu(k,672) * lu(k,700) + lu(k,706) = lu(k,706) - lu(k,673) * lu(k,700) + lu(k,707) = lu(k,707) - lu(k,674) * lu(k,700) + lu(k,708) = lu(k,708) - lu(k,675) * lu(k,700) + lu(k,709) = lu(k,709) - lu(k,676) * lu(k,700) + lu(k,710) = lu(k,710) - lu(k,677) * lu(k,700) + lu(k,713) = lu(k,713) - lu(k,678) * lu(k,700) + lu(k,714) = lu(k,714) - lu(k,679) * lu(k,700) + lu(k,715) = lu(k,715) - lu(k,680) * lu(k,700) + lu(k,716) = lu(k,716) - lu(k,681) * lu(k,700) + lu(k,725) = lu(k,725) - lu(k,672) * lu(k,724) + lu(k,728) = lu(k,728) - lu(k,673) * lu(k,724) + lu(k,729) = lu(k,729) - lu(k,674) * lu(k,724) + lu(k,730) = lu(k,730) - lu(k,675) * lu(k,724) + lu(k,731) = lu(k,731) - lu(k,676) * lu(k,724) + lu(k,732) = lu(k,732) - lu(k,677) * lu(k,724) + lu(k,734) = lu(k,734) - lu(k,678) * lu(k,724) + lu(k,735) = lu(k,735) - lu(k,679) * lu(k,724) + lu(k,736) = lu(k,736) - lu(k,680) * lu(k,724) + lu(k,737) = lu(k,737) - lu(k,681) * lu(k,724) + lu(k,788) = lu(k,788) - lu(k,672) * lu(k,787) + lu(k,793) = lu(k,793) - lu(k,673) * lu(k,787) + lu(k,794) = lu(k,794) - lu(k,674) * lu(k,787) + lu(k,796) = lu(k,796) - lu(k,675) * lu(k,787) + lu(k,797) = lu(k,797) - lu(k,676) * lu(k,787) + lu(k,798) = lu(k,798) - lu(k,677) * lu(k,787) + lu(k,801) = lu(k,801) - lu(k,678) * lu(k,787) + lu(k,802) = lu(k,802) - lu(k,679) * lu(k,787) + lu(k,803) = lu(k,803) - lu(k,680) * lu(k,787) + lu(k,804) = lu(k,804) - lu(k,681) * lu(k,787) + lu(k,1066) = lu(k,1066) - lu(k,672) * lu(k,1065) + lu(k,1071) = lu(k,1071) - lu(k,673) * lu(k,1065) + lu(k,1072) = lu(k,1072) - lu(k,674) * lu(k,1065) + lu(k,1079) = lu(k,1079) - lu(k,675) * lu(k,1065) + lu(k,1080) = lu(k,1080) - lu(k,676) * lu(k,1065) + lu(k,1081) = lu(k,1081) - lu(k,677) * lu(k,1065) + lu(k,1084) = lu(k,1084) - lu(k,678) * lu(k,1065) + lu(k,1085) = lu(k,1085) - lu(k,679) * lu(k,1065) + lu(k,1088) = lu(k,1088) - lu(k,680) * lu(k,1065) + lu(k,1090) = lu(k,1090) - lu(k,681) * lu(k,1065) + lu(k,1113) = lu(k,1113) - lu(k,672) * lu(k,1112) + lu(k,1118) = lu(k,1118) - lu(k,673) * lu(k,1112) + lu(k,1119) = lu(k,1119) - lu(k,674) * lu(k,1112) + lu(k,1125) = lu(k,1125) - lu(k,675) * lu(k,1112) + lu(k,1126) = lu(k,1126) - lu(k,676) * lu(k,1112) + lu(k,1127) = lu(k,1127) - lu(k,677) * lu(k,1112) + lu(k,1130) = lu(k,1130) - lu(k,678) * lu(k,1112) + lu(k,1131) = lu(k,1131) - lu(k,679) * lu(k,1112) + lu(k,1134) = lu(k,1134) - lu(k,680) * lu(k,1112) + lu(k,1136) = lu(k,1136) - lu(k,681) * lu(k,1112) + lu(k,1179) = lu(k,1179) - lu(k,672) * lu(k,1178) + lu(k,1184) = lu(k,1184) - lu(k,673) * lu(k,1178) + lu(k,1185) = lu(k,1185) - lu(k,674) * lu(k,1178) + lu(k,1189) = lu(k,1189) - lu(k,675) * lu(k,1178) + lu(k,1190) = lu(k,1190) - lu(k,676) * lu(k,1178) + lu(k,1191) = lu(k,1191) - lu(k,677) * lu(k,1178) + lu(k,1194) = lu(k,1194) - lu(k,678) * lu(k,1178) + lu(k,1195) = lu(k,1195) - lu(k,679) * lu(k,1178) + lu(k,1198) = lu(k,1198) - lu(k,680) * lu(k,1178) + lu(k,1200) = lu(k,1200) - lu(k,681) * lu(k,1178) + lu(k,1223) = lu(k,1223) - lu(k,672) * lu(k,1222) + lu(k,1228) = lu(k,1228) - lu(k,673) * lu(k,1222) + lu(k,1229) = lu(k,1229) - lu(k,674) * lu(k,1222) + lu(k,1235) = lu(k,1235) - lu(k,675) * lu(k,1222) + lu(k,1236) = lu(k,1236) - lu(k,676) * lu(k,1222) + lu(k,1237) = lu(k,1237) - lu(k,677) * lu(k,1222) + lu(k,1240) = lu(k,1240) - lu(k,678) * lu(k,1222) + lu(k,1241) = lu(k,1241) - lu(k,679) * lu(k,1222) + lu(k,1244) = lu(k,1244) - lu(k,680) * lu(k,1222) + lu(k,1246) = lu(k,1246) - lu(k,681) * lu(k,1222) + lu(k,1390) = lu(k,1390) - lu(k,672) * lu(k,1389) + lu(k,1395) = lu(k,1395) - lu(k,673) * lu(k,1389) + lu(k,1396) = lu(k,1396) - lu(k,674) * lu(k,1389) + lu(k,1404) = lu(k,1404) - lu(k,675) * lu(k,1389) + lu(k,1405) = lu(k,1405) - lu(k,676) * lu(k,1389) + lu(k,1406) = lu(k,1406) - lu(k,677) * lu(k,1389) + lu(k,1409) = lu(k,1409) - lu(k,678) * lu(k,1389) + lu(k,1410) = lu(k,1410) - lu(k,679) * lu(k,1389) + lu(k,1413) = lu(k,1413) - lu(k,680) * lu(k,1389) + lu(k,1415) = lu(k,1415) - lu(k,681) * lu(k,1389) + lu(k,1486) = lu(k,1486) - lu(k,672) * lu(k,1485) + lu(k,1491) = lu(k,1491) - lu(k,673) * lu(k,1485) + lu(k,1492) = lu(k,1492) - lu(k,674) * lu(k,1485) + lu(k,1497) = lu(k,1497) - lu(k,675) * lu(k,1485) + lu(k,1498) = lu(k,1498) - lu(k,676) * lu(k,1485) + lu(k,1499) = lu(k,1499) - lu(k,677) * lu(k,1485) + lu(k,1502) = lu(k,1502) - lu(k,678) * lu(k,1485) + lu(k,1503) = lu(k,1503) - lu(k,679) * lu(k,1485) + lu(k,1506) = lu(k,1506) - lu(k,680) * lu(k,1485) + lu(k,1508) = lu(k,1508) - lu(k,681) * lu(k,1485) + lu(k,683) = 1._r8 / lu(k,683) + lu(k,684) = lu(k,684) * lu(k,683) + lu(k,685) = lu(k,685) * lu(k,683) + lu(k,686) = lu(k,686) * lu(k,683) + lu(k,687) = lu(k,687) * lu(k,683) + lu(k,688) = lu(k,688) * lu(k,683) + lu(k,689) = lu(k,689) * lu(k,683) + lu(k,690) = lu(k,690) * lu(k,683) + lu(k,706) = lu(k,706) - lu(k,684) * lu(k,701) + lu(k,707) = lu(k,707) - lu(k,685) * lu(k,701) + lu(k,710) = lu(k,710) - lu(k,686) * lu(k,701) + lu(k,712) = lu(k,712) - lu(k,687) * lu(k,701) + lu(k,714) = lu(k,714) - lu(k,688) * lu(k,701) + lu(k,715) = lu(k,715) - lu(k,689) * lu(k,701) + lu(k,717) = lu(k,717) - lu(k,690) * lu(k,701) + lu(k,728) = lu(k,728) - lu(k,684) * lu(k,725) + lu(k,729) = lu(k,729) - lu(k,685) * lu(k,725) + lu(k,732) = lu(k,732) - lu(k,686) * lu(k,725) + lu(k,733) = lu(k,733) - lu(k,687) * lu(k,725) + lu(k,735) = lu(k,735) - lu(k,688) * lu(k,725) + lu(k,736) = lu(k,736) - lu(k,689) * lu(k,725) + lu(k,738) = - lu(k,690) * lu(k,725) + lu(k,746) = lu(k,746) - lu(k,684) * lu(k,742) + lu(k,747) = lu(k,747) - lu(k,685) * lu(k,742) + lu(k,751) = lu(k,751) - lu(k,686) * lu(k,742) + lu(k,753) = lu(k,753) - lu(k,687) * lu(k,742) + lu(k,755) = lu(k,755) - lu(k,688) * lu(k,742) + lu(k,756) = lu(k,756) - lu(k,689) * lu(k,742) + lu(k,759) = lu(k,759) - lu(k,690) * lu(k,742) + lu(k,766) = lu(k,766) - lu(k,684) * lu(k,764) + lu(k,767) = lu(k,767) - lu(k,685) * lu(k,764) + lu(k,770) = lu(k,770) - lu(k,686) * lu(k,764) + lu(k,772) = - lu(k,687) * lu(k,764) + lu(k,774) = lu(k,774) - lu(k,688) * lu(k,764) + lu(k,775) = lu(k,775) - lu(k,689) * lu(k,764) + lu(k,777) = lu(k,777) - lu(k,690) * lu(k,764) + lu(k,793) = lu(k,793) - lu(k,684) * lu(k,788) + lu(k,794) = lu(k,794) - lu(k,685) * lu(k,788) + lu(k,798) = lu(k,798) - lu(k,686) * lu(k,788) + lu(k,800) = - lu(k,687) * lu(k,788) + lu(k,802) = lu(k,802) - lu(k,688) * lu(k,788) + lu(k,803) = lu(k,803) - lu(k,689) * lu(k,788) + lu(k,806) = lu(k,806) - lu(k,690) * lu(k,788) + lu(k,988) = lu(k,988) - lu(k,684) * lu(k,986) + lu(k,989) = lu(k,989) - lu(k,685) * lu(k,986) + lu(k,998) = lu(k,998) - lu(k,686) * lu(k,986) + lu(k,1000) = lu(k,1000) - lu(k,687) * lu(k,986) + lu(k,1002) = lu(k,1002) - lu(k,688) * lu(k,986) + lu(k,1005) = lu(k,1005) - lu(k,689) * lu(k,986) + lu(k,1010) = lu(k,1010) - lu(k,690) * lu(k,986) + lu(k,1071) = lu(k,1071) - lu(k,684) * lu(k,1066) + lu(k,1072) = lu(k,1072) - lu(k,685) * lu(k,1066) + lu(k,1081) = lu(k,1081) - lu(k,686) * lu(k,1066) + lu(k,1083) = lu(k,1083) - lu(k,687) * lu(k,1066) + lu(k,1085) = lu(k,1085) - lu(k,688) * lu(k,1066) + lu(k,1088) = lu(k,1088) - lu(k,689) * lu(k,1066) + lu(k,1093) = lu(k,1093) - lu(k,690) * lu(k,1066) + lu(k,1118) = lu(k,1118) - lu(k,684) * lu(k,1113) + lu(k,1119) = lu(k,1119) - lu(k,685) * lu(k,1113) + lu(k,1127) = lu(k,1127) - lu(k,686) * lu(k,1113) + lu(k,1129) = lu(k,1129) - lu(k,687) * lu(k,1113) + lu(k,1131) = lu(k,1131) - lu(k,688) * lu(k,1113) + lu(k,1134) = lu(k,1134) - lu(k,689) * lu(k,1113) + lu(k,1139) = lu(k,1139) - lu(k,690) * lu(k,1113) + lu(k,1184) = lu(k,1184) - lu(k,684) * lu(k,1179) + lu(k,1185) = lu(k,1185) - lu(k,685) * lu(k,1179) + lu(k,1191) = lu(k,1191) - lu(k,686) * lu(k,1179) + lu(k,1193) = lu(k,1193) - lu(k,687) * lu(k,1179) + lu(k,1195) = lu(k,1195) - lu(k,688) * lu(k,1179) + lu(k,1198) = lu(k,1198) - lu(k,689) * lu(k,1179) + lu(k,1203) = lu(k,1203) - lu(k,690) * lu(k,1179) + lu(k,1228) = lu(k,1228) - lu(k,684) * lu(k,1223) + lu(k,1229) = lu(k,1229) - lu(k,685) * lu(k,1223) + lu(k,1237) = lu(k,1237) - lu(k,686) * lu(k,1223) + lu(k,1239) = lu(k,1239) - lu(k,687) * lu(k,1223) + lu(k,1241) = lu(k,1241) - lu(k,688) * lu(k,1223) + lu(k,1244) = lu(k,1244) - lu(k,689) * lu(k,1223) + lu(k,1249) = lu(k,1249) - lu(k,690) * lu(k,1223) + lu(k,1395) = lu(k,1395) - lu(k,684) * lu(k,1390) + lu(k,1396) = lu(k,1396) - lu(k,685) * lu(k,1390) + lu(k,1406) = lu(k,1406) - lu(k,686) * lu(k,1390) + lu(k,1408) = lu(k,1408) - lu(k,687) * lu(k,1390) + lu(k,1410) = lu(k,1410) - lu(k,688) * lu(k,1390) + lu(k,1413) = lu(k,1413) - lu(k,689) * lu(k,1390) + lu(k,1418) = lu(k,1418) - lu(k,690) * lu(k,1390) + lu(k,1491) = lu(k,1491) - lu(k,684) * lu(k,1486) + lu(k,1492) = lu(k,1492) - lu(k,685) * lu(k,1486) + lu(k,1499) = lu(k,1499) - lu(k,686) * lu(k,1486) + lu(k,1501) = lu(k,1501) - lu(k,687) * lu(k,1486) + lu(k,1503) = lu(k,1503) - lu(k,688) * lu(k,1486) + lu(k,1506) = lu(k,1506) - lu(k,689) * lu(k,1486) + lu(k,1511) = lu(k,1511) - lu(k,690) * lu(k,1486) + lu(k,702) = 1._r8 / lu(k,702) + lu(k,703) = lu(k,703) * lu(k,702) + lu(k,704) = lu(k,704) * lu(k,702) + lu(k,705) = lu(k,705) * lu(k,702) + lu(k,706) = lu(k,706) * lu(k,702) + lu(k,707) = lu(k,707) * lu(k,702) + lu(k,708) = lu(k,708) * lu(k,702) + lu(k,709) = lu(k,709) * lu(k,702) + lu(k,710) = lu(k,710) * lu(k,702) + lu(k,711) = lu(k,711) * lu(k,702) + lu(k,712) = lu(k,712) * lu(k,702) + lu(k,713) = lu(k,713) * lu(k,702) + lu(k,714) = lu(k,714) * lu(k,702) + lu(k,715) = lu(k,715) * lu(k,702) + lu(k,716) = lu(k,716) * lu(k,702) + lu(k,717) = lu(k,717) * lu(k,702) + lu(k,790) = lu(k,790) - lu(k,703) * lu(k,789) + lu(k,791) = lu(k,791) - lu(k,704) * lu(k,789) + lu(k,792) = lu(k,792) - lu(k,705) * lu(k,789) + lu(k,793) = lu(k,793) - lu(k,706) * lu(k,789) + lu(k,794) = lu(k,794) - lu(k,707) * lu(k,789) + lu(k,796) = lu(k,796) - lu(k,708) * lu(k,789) + lu(k,797) = lu(k,797) - lu(k,709) * lu(k,789) + lu(k,798) = lu(k,798) - lu(k,710) * lu(k,789) + lu(k,799) = lu(k,799) - lu(k,711) * lu(k,789) + lu(k,800) = lu(k,800) - lu(k,712) * lu(k,789) + lu(k,801) = lu(k,801) - lu(k,713) * lu(k,789) + lu(k,802) = lu(k,802) - lu(k,714) * lu(k,789) + lu(k,803) = lu(k,803) - lu(k,715) * lu(k,789) + lu(k,804) = lu(k,804) - lu(k,716) * lu(k,789) + lu(k,806) = lu(k,806) - lu(k,717) * lu(k,789) + lu(k,1068) = lu(k,1068) - lu(k,703) * lu(k,1067) + lu(k,1069) = lu(k,1069) - lu(k,704) * lu(k,1067) + lu(k,1070) = lu(k,1070) - lu(k,705) * lu(k,1067) + lu(k,1071) = lu(k,1071) - lu(k,706) * lu(k,1067) + lu(k,1072) = lu(k,1072) - lu(k,707) * lu(k,1067) + lu(k,1079) = lu(k,1079) - lu(k,708) * lu(k,1067) + lu(k,1080) = lu(k,1080) - lu(k,709) * lu(k,1067) + lu(k,1081) = lu(k,1081) - lu(k,710) * lu(k,1067) + lu(k,1082) = lu(k,1082) - lu(k,711) * lu(k,1067) + lu(k,1083) = lu(k,1083) - lu(k,712) * lu(k,1067) + lu(k,1084) = lu(k,1084) - lu(k,713) * lu(k,1067) + lu(k,1085) = lu(k,1085) - lu(k,714) * lu(k,1067) + lu(k,1088) = lu(k,1088) - lu(k,715) * lu(k,1067) + lu(k,1090) = lu(k,1090) - lu(k,716) * lu(k,1067) + lu(k,1093) = lu(k,1093) - lu(k,717) * lu(k,1067) + lu(k,1115) = lu(k,1115) - lu(k,703) * lu(k,1114) + lu(k,1116) = lu(k,1116) - lu(k,704) * lu(k,1114) + lu(k,1117) = lu(k,1117) - lu(k,705) * lu(k,1114) + lu(k,1118) = lu(k,1118) - lu(k,706) * lu(k,1114) + lu(k,1119) = lu(k,1119) - lu(k,707) * lu(k,1114) + lu(k,1125) = lu(k,1125) - lu(k,708) * lu(k,1114) + lu(k,1126) = lu(k,1126) - lu(k,709) * lu(k,1114) + lu(k,1127) = lu(k,1127) - lu(k,710) * lu(k,1114) + lu(k,1128) = lu(k,1128) - lu(k,711) * lu(k,1114) + lu(k,1129) = lu(k,1129) - lu(k,712) * lu(k,1114) + lu(k,1130) = lu(k,1130) - lu(k,713) * lu(k,1114) + lu(k,1131) = lu(k,1131) - lu(k,714) * lu(k,1114) + lu(k,1134) = lu(k,1134) - lu(k,715) * lu(k,1114) + lu(k,1136) = lu(k,1136) - lu(k,716) * lu(k,1114) + lu(k,1139) = lu(k,1139) - lu(k,717) * lu(k,1114) + lu(k,1181) = lu(k,1181) - lu(k,703) * lu(k,1180) + lu(k,1182) = lu(k,1182) - lu(k,704) * lu(k,1180) + lu(k,1183) = lu(k,1183) - lu(k,705) * lu(k,1180) + lu(k,1184) = lu(k,1184) - lu(k,706) * lu(k,1180) + lu(k,1185) = lu(k,1185) - lu(k,707) * lu(k,1180) + lu(k,1189) = lu(k,1189) - lu(k,708) * lu(k,1180) + lu(k,1190) = lu(k,1190) - lu(k,709) * lu(k,1180) + lu(k,1191) = lu(k,1191) - lu(k,710) * lu(k,1180) + lu(k,1192) = lu(k,1192) - lu(k,711) * lu(k,1180) + lu(k,1193) = lu(k,1193) - lu(k,712) * lu(k,1180) + lu(k,1194) = lu(k,1194) - lu(k,713) * lu(k,1180) + lu(k,1195) = lu(k,1195) - lu(k,714) * lu(k,1180) + lu(k,1198) = lu(k,1198) - lu(k,715) * lu(k,1180) + lu(k,1200) = lu(k,1200) - lu(k,716) * lu(k,1180) + lu(k,1203) = lu(k,1203) - lu(k,717) * lu(k,1180) + lu(k,1225) = lu(k,1225) - lu(k,703) * lu(k,1224) + lu(k,1226) = lu(k,1226) - lu(k,704) * lu(k,1224) + lu(k,1227) = lu(k,1227) - lu(k,705) * lu(k,1224) + lu(k,1228) = lu(k,1228) - lu(k,706) * lu(k,1224) + lu(k,1229) = lu(k,1229) - lu(k,707) * lu(k,1224) + lu(k,1235) = lu(k,1235) - lu(k,708) * lu(k,1224) + lu(k,1236) = lu(k,1236) - lu(k,709) * lu(k,1224) + lu(k,1237) = lu(k,1237) - lu(k,710) * lu(k,1224) + lu(k,1238) = lu(k,1238) - lu(k,711) * lu(k,1224) + lu(k,1239) = lu(k,1239) - lu(k,712) * lu(k,1224) + lu(k,1240) = lu(k,1240) - lu(k,713) * lu(k,1224) + lu(k,1241) = lu(k,1241) - lu(k,714) * lu(k,1224) + lu(k,1244) = lu(k,1244) - lu(k,715) * lu(k,1224) + lu(k,1246) = lu(k,1246) - lu(k,716) * lu(k,1224) + lu(k,1249) = lu(k,1249) - lu(k,717) * lu(k,1224) + lu(k,1392) = lu(k,1392) - lu(k,703) * lu(k,1391) + lu(k,1393) = lu(k,1393) - lu(k,704) * lu(k,1391) + lu(k,1394) = lu(k,1394) - lu(k,705) * lu(k,1391) + lu(k,1395) = lu(k,1395) - lu(k,706) * lu(k,1391) + lu(k,1396) = lu(k,1396) - lu(k,707) * lu(k,1391) + lu(k,1404) = lu(k,1404) - lu(k,708) * lu(k,1391) + lu(k,1405) = lu(k,1405) - lu(k,709) * lu(k,1391) + lu(k,1406) = lu(k,1406) - lu(k,710) * lu(k,1391) + lu(k,1407) = lu(k,1407) - lu(k,711) * lu(k,1391) + lu(k,1408) = lu(k,1408) - lu(k,712) * lu(k,1391) + lu(k,1409) = lu(k,1409) - lu(k,713) * lu(k,1391) + lu(k,1410) = lu(k,1410) - lu(k,714) * lu(k,1391) + lu(k,1413) = lu(k,1413) - lu(k,715) * lu(k,1391) + lu(k,1415) = lu(k,1415) - lu(k,716) * lu(k,1391) + lu(k,1418) = lu(k,1418) - lu(k,717) * lu(k,1391) + lu(k,1488) = lu(k,1488) - lu(k,703) * lu(k,1487) + lu(k,1489) = lu(k,1489) - lu(k,704) * lu(k,1487) + lu(k,1490) = lu(k,1490) - lu(k,705) * lu(k,1487) + lu(k,1491) = lu(k,1491) - lu(k,706) * lu(k,1487) + lu(k,1492) = lu(k,1492) - lu(k,707) * lu(k,1487) + lu(k,1497) = lu(k,1497) - lu(k,708) * lu(k,1487) + lu(k,1498) = lu(k,1498) - lu(k,709) * lu(k,1487) + lu(k,1499) = lu(k,1499) - lu(k,710) * lu(k,1487) + lu(k,1500) = lu(k,1500) - lu(k,711) * lu(k,1487) + lu(k,1501) = lu(k,1501) - lu(k,712) * lu(k,1487) + lu(k,1502) = lu(k,1502) - lu(k,713) * lu(k,1487) + lu(k,1503) = lu(k,1503) - lu(k,714) * lu(k,1487) + lu(k,1506) = lu(k,1506) - lu(k,715) * lu(k,1487) + lu(k,1508) = lu(k,1508) - lu(k,716) * lu(k,1487) + lu(k,1511) = lu(k,1511) - lu(k,717) * lu(k,1487) + end do + end subroutine lu_fac15 + subroutine lu_fac16( avec_len, lu ) + use chem_mods, only : nzcnt + use shr_kind_mod, only : r8 => shr_kind_r8 + implicit none +!----------------------------------------------------------------------- +! ... dummy args +!----------------------------------------------------------------------- + integer, intent(in) :: avec_len + real(r8), intent(inout) :: lu(veclen,nzcnt) +!----------------------------------------------------------------------- +! ... local variables +!----------------------------------------------------------------------- + integer :: k + do k = 1,avec_len + lu(k,726) = 1._r8 / lu(k,726) + lu(k,727) = lu(k,727) * lu(k,726) + lu(k,728) = lu(k,728) * lu(k,726) + lu(k,729) = lu(k,729) * lu(k,726) + lu(k,730) = lu(k,730) * lu(k,726) + lu(k,731) = lu(k,731) * lu(k,726) + lu(k,732) = lu(k,732) * lu(k,726) + lu(k,733) = lu(k,733) * lu(k,726) + lu(k,734) = lu(k,734) * lu(k,726) + lu(k,735) = lu(k,735) * lu(k,726) + lu(k,736) = lu(k,736) * lu(k,726) + lu(k,737) = lu(k,737) * lu(k,726) + lu(k,738) = lu(k,738) * lu(k,726) + lu(k,745) = - lu(k,727) * lu(k,743) + lu(k,746) = lu(k,746) - lu(k,728) * lu(k,743) + lu(k,747) = lu(k,747) - lu(k,729) * lu(k,743) + lu(k,749) = lu(k,749) - lu(k,730) * lu(k,743) + lu(k,750) = lu(k,750) - lu(k,731) * lu(k,743) + lu(k,751) = lu(k,751) - lu(k,732) * lu(k,743) + lu(k,753) = lu(k,753) - lu(k,733) * lu(k,743) + lu(k,754) = lu(k,754) - lu(k,734) * lu(k,743) + lu(k,755) = lu(k,755) - lu(k,735) * lu(k,743) + lu(k,756) = lu(k,756) - lu(k,736) * lu(k,743) + lu(k,757) = lu(k,757) - lu(k,737) * lu(k,743) + lu(k,759) = lu(k,759) - lu(k,738) * lu(k,743) + lu(k,792) = lu(k,792) - lu(k,727) * lu(k,790) + lu(k,793) = lu(k,793) - lu(k,728) * lu(k,790) + lu(k,794) = lu(k,794) - lu(k,729) * lu(k,790) + lu(k,796) = lu(k,796) - lu(k,730) * lu(k,790) + lu(k,797) = lu(k,797) - lu(k,731) * lu(k,790) + lu(k,798) = lu(k,798) - lu(k,732) * lu(k,790) + lu(k,800) = lu(k,800) - lu(k,733) * lu(k,790) + lu(k,801) = lu(k,801) - lu(k,734) * lu(k,790) + lu(k,802) = lu(k,802) - lu(k,735) * lu(k,790) + lu(k,803) = lu(k,803) - lu(k,736) * lu(k,790) + lu(k,804) = lu(k,804) - lu(k,737) * lu(k,790) + lu(k,806) = lu(k,806) - lu(k,738) * lu(k,790) + lu(k,1070) = lu(k,1070) - lu(k,727) * lu(k,1068) + lu(k,1071) = lu(k,1071) - lu(k,728) * lu(k,1068) + lu(k,1072) = lu(k,1072) - lu(k,729) * lu(k,1068) + lu(k,1079) = lu(k,1079) - lu(k,730) * lu(k,1068) + lu(k,1080) = lu(k,1080) - lu(k,731) * lu(k,1068) + lu(k,1081) = lu(k,1081) - lu(k,732) * lu(k,1068) + lu(k,1083) = lu(k,1083) - lu(k,733) * lu(k,1068) + lu(k,1084) = lu(k,1084) - lu(k,734) * lu(k,1068) + lu(k,1085) = lu(k,1085) - lu(k,735) * lu(k,1068) + lu(k,1088) = lu(k,1088) - lu(k,736) * lu(k,1068) + lu(k,1090) = lu(k,1090) - lu(k,737) * lu(k,1068) + lu(k,1093) = lu(k,1093) - lu(k,738) * lu(k,1068) + lu(k,1117) = lu(k,1117) - lu(k,727) * lu(k,1115) + lu(k,1118) = lu(k,1118) - lu(k,728) * lu(k,1115) + lu(k,1119) = lu(k,1119) - lu(k,729) * lu(k,1115) + lu(k,1125) = lu(k,1125) - lu(k,730) * lu(k,1115) + lu(k,1126) = lu(k,1126) - lu(k,731) * lu(k,1115) + lu(k,1127) = lu(k,1127) - lu(k,732) * lu(k,1115) + lu(k,1129) = lu(k,1129) - lu(k,733) * lu(k,1115) + lu(k,1130) = lu(k,1130) - lu(k,734) * lu(k,1115) + lu(k,1131) = lu(k,1131) - lu(k,735) * lu(k,1115) + lu(k,1134) = lu(k,1134) - lu(k,736) * lu(k,1115) + lu(k,1136) = lu(k,1136) - lu(k,737) * lu(k,1115) + lu(k,1139) = lu(k,1139) - lu(k,738) * lu(k,1115) + lu(k,1183) = lu(k,1183) - lu(k,727) * lu(k,1181) + lu(k,1184) = lu(k,1184) - lu(k,728) * lu(k,1181) + lu(k,1185) = lu(k,1185) - lu(k,729) * lu(k,1181) + lu(k,1189) = lu(k,1189) - lu(k,730) * lu(k,1181) + lu(k,1190) = lu(k,1190) - lu(k,731) * lu(k,1181) + lu(k,1191) = lu(k,1191) - lu(k,732) * lu(k,1181) + lu(k,1193) = lu(k,1193) - lu(k,733) * lu(k,1181) + lu(k,1194) = lu(k,1194) - lu(k,734) * lu(k,1181) + lu(k,1195) = lu(k,1195) - lu(k,735) * lu(k,1181) + lu(k,1198) = lu(k,1198) - lu(k,736) * lu(k,1181) + lu(k,1200) = lu(k,1200) - lu(k,737) * lu(k,1181) + lu(k,1203) = lu(k,1203) - lu(k,738) * lu(k,1181) + lu(k,1227) = lu(k,1227) - lu(k,727) * lu(k,1225) + lu(k,1228) = lu(k,1228) - lu(k,728) * lu(k,1225) + lu(k,1229) = lu(k,1229) - lu(k,729) * lu(k,1225) + lu(k,1235) = lu(k,1235) - lu(k,730) * lu(k,1225) + lu(k,1236) = lu(k,1236) - lu(k,731) * lu(k,1225) + lu(k,1237) = lu(k,1237) - lu(k,732) * lu(k,1225) + lu(k,1239) = lu(k,1239) - lu(k,733) * lu(k,1225) + lu(k,1240) = lu(k,1240) - lu(k,734) * lu(k,1225) + lu(k,1241) = lu(k,1241) - lu(k,735) * lu(k,1225) + lu(k,1244) = lu(k,1244) - lu(k,736) * lu(k,1225) + lu(k,1246) = lu(k,1246) - lu(k,737) * lu(k,1225) + lu(k,1249) = lu(k,1249) - lu(k,738) * lu(k,1225) + lu(k,1394) = lu(k,1394) - lu(k,727) * lu(k,1392) + lu(k,1395) = lu(k,1395) - lu(k,728) * lu(k,1392) + lu(k,1396) = lu(k,1396) - lu(k,729) * lu(k,1392) + lu(k,1404) = lu(k,1404) - lu(k,730) * lu(k,1392) + lu(k,1405) = lu(k,1405) - lu(k,731) * lu(k,1392) + lu(k,1406) = lu(k,1406) - lu(k,732) * lu(k,1392) + lu(k,1408) = lu(k,1408) - lu(k,733) * lu(k,1392) + lu(k,1409) = lu(k,1409) - lu(k,734) * lu(k,1392) + lu(k,1410) = lu(k,1410) - lu(k,735) * lu(k,1392) + lu(k,1413) = lu(k,1413) - lu(k,736) * lu(k,1392) + lu(k,1415) = lu(k,1415) - lu(k,737) * lu(k,1392) + lu(k,1418) = lu(k,1418) - lu(k,738) * lu(k,1392) + lu(k,1490) = lu(k,1490) - lu(k,727) * lu(k,1488) + lu(k,1491) = lu(k,1491) - lu(k,728) * lu(k,1488) + lu(k,1492) = lu(k,1492) - lu(k,729) * lu(k,1488) + lu(k,1497) = lu(k,1497) - lu(k,730) * lu(k,1488) + lu(k,1498) = lu(k,1498) - lu(k,731) * lu(k,1488) + lu(k,1499) = lu(k,1499) - lu(k,732) * lu(k,1488) + lu(k,1501) = lu(k,1501) - lu(k,733) * lu(k,1488) + lu(k,1502) = lu(k,1502) - lu(k,734) * lu(k,1488) + lu(k,1503) = lu(k,1503) - lu(k,735) * lu(k,1488) + lu(k,1506) = lu(k,1506) - lu(k,736) * lu(k,1488) + lu(k,1508) = lu(k,1508) - lu(k,737) * lu(k,1488) + lu(k,1511) = lu(k,1511) - lu(k,738) * lu(k,1488) + lu(k,744) = 1._r8 / lu(k,744) + lu(k,745) = lu(k,745) * lu(k,744) + lu(k,746) = lu(k,746) * lu(k,744) + lu(k,747) = lu(k,747) * lu(k,744) + lu(k,748) = lu(k,748) * lu(k,744) + lu(k,749) = lu(k,749) * lu(k,744) + lu(k,750) = lu(k,750) * lu(k,744) + lu(k,751) = lu(k,751) * lu(k,744) + lu(k,752) = lu(k,752) * lu(k,744) + lu(k,753) = lu(k,753) * lu(k,744) + lu(k,754) = lu(k,754) * lu(k,744) + lu(k,755) = lu(k,755) * lu(k,744) + lu(k,756) = lu(k,756) * lu(k,744) + lu(k,757) = lu(k,757) * lu(k,744) + lu(k,758) = lu(k,758) * lu(k,744) + lu(k,759) = lu(k,759) * lu(k,744) + lu(k,792) = lu(k,792) - lu(k,745) * lu(k,791) + lu(k,793) = lu(k,793) - lu(k,746) * lu(k,791) + lu(k,794) = lu(k,794) - lu(k,747) * lu(k,791) + lu(k,795) = - lu(k,748) * lu(k,791) + lu(k,796) = lu(k,796) - lu(k,749) * lu(k,791) + lu(k,797) = lu(k,797) - lu(k,750) * lu(k,791) + lu(k,798) = lu(k,798) - lu(k,751) * lu(k,791) + lu(k,799) = lu(k,799) - lu(k,752) * lu(k,791) + lu(k,800) = lu(k,800) - lu(k,753) * lu(k,791) + lu(k,801) = lu(k,801) - lu(k,754) * lu(k,791) + lu(k,802) = lu(k,802) - lu(k,755) * lu(k,791) + lu(k,803) = lu(k,803) - lu(k,756) * lu(k,791) + lu(k,804) = lu(k,804) - lu(k,757) * lu(k,791) + lu(k,805) = - lu(k,758) * lu(k,791) + lu(k,806) = lu(k,806) - lu(k,759) * lu(k,791) + lu(k,1070) = lu(k,1070) - lu(k,745) * lu(k,1069) + lu(k,1071) = lu(k,1071) - lu(k,746) * lu(k,1069) + lu(k,1072) = lu(k,1072) - lu(k,747) * lu(k,1069) + lu(k,1076) = lu(k,1076) - lu(k,748) * lu(k,1069) + lu(k,1079) = lu(k,1079) - lu(k,749) * lu(k,1069) + lu(k,1080) = lu(k,1080) - lu(k,750) * lu(k,1069) + lu(k,1081) = lu(k,1081) - lu(k,751) * lu(k,1069) + lu(k,1082) = lu(k,1082) - lu(k,752) * lu(k,1069) + lu(k,1083) = lu(k,1083) - lu(k,753) * lu(k,1069) + lu(k,1084) = lu(k,1084) - lu(k,754) * lu(k,1069) + lu(k,1085) = lu(k,1085) - lu(k,755) * lu(k,1069) + lu(k,1088) = lu(k,1088) - lu(k,756) * lu(k,1069) + lu(k,1090) = lu(k,1090) - lu(k,757) * lu(k,1069) + lu(k,1091) = - lu(k,758) * lu(k,1069) + lu(k,1093) = lu(k,1093) - lu(k,759) * lu(k,1069) + lu(k,1117) = lu(k,1117) - lu(k,745) * lu(k,1116) + lu(k,1118) = lu(k,1118) - lu(k,746) * lu(k,1116) + lu(k,1119) = lu(k,1119) - lu(k,747) * lu(k,1116) + lu(k,1122) = lu(k,1122) - lu(k,748) * lu(k,1116) + lu(k,1125) = lu(k,1125) - lu(k,749) * lu(k,1116) + lu(k,1126) = lu(k,1126) - lu(k,750) * lu(k,1116) + lu(k,1127) = lu(k,1127) - lu(k,751) * lu(k,1116) + lu(k,1128) = lu(k,1128) - lu(k,752) * lu(k,1116) + lu(k,1129) = lu(k,1129) - lu(k,753) * lu(k,1116) + lu(k,1130) = lu(k,1130) - lu(k,754) * lu(k,1116) + lu(k,1131) = lu(k,1131) - lu(k,755) * lu(k,1116) + lu(k,1134) = lu(k,1134) - lu(k,756) * lu(k,1116) + lu(k,1136) = lu(k,1136) - lu(k,757) * lu(k,1116) + lu(k,1137) = lu(k,1137) - lu(k,758) * lu(k,1116) + lu(k,1139) = lu(k,1139) - lu(k,759) * lu(k,1116) + lu(k,1183) = lu(k,1183) - lu(k,745) * lu(k,1182) + lu(k,1184) = lu(k,1184) - lu(k,746) * lu(k,1182) + lu(k,1185) = lu(k,1185) - lu(k,747) * lu(k,1182) + lu(k,1186) = lu(k,1186) - lu(k,748) * lu(k,1182) + lu(k,1189) = lu(k,1189) - lu(k,749) * lu(k,1182) + lu(k,1190) = lu(k,1190) - lu(k,750) * lu(k,1182) + lu(k,1191) = lu(k,1191) - lu(k,751) * lu(k,1182) + lu(k,1192) = lu(k,1192) - lu(k,752) * lu(k,1182) + lu(k,1193) = lu(k,1193) - lu(k,753) * lu(k,1182) + lu(k,1194) = lu(k,1194) - lu(k,754) * lu(k,1182) + lu(k,1195) = lu(k,1195) - lu(k,755) * lu(k,1182) + lu(k,1198) = lu(k,1198) - lu(k,756) * lu(k,1182) + lu(k,1200) = lu(k,1200) - lu(k,757) * lu(k,1182) + lu(k,1201) = - lu(k,758) * lu(k,1182) + lu(k,1203) = lu(k,1203) - lu(k,759) * lu(k,1182) + lu(k,1227) = lu(k,1227) - lu(k,745) * lu(k,1226) + lu(k,1228) = lu(k,1228) - lu(k,746) * lu(k,1226) + lu(k,1229) = lu(k,1229) - lu(k,747) * lu(k,1226) + lu(k,1232) = lu(k,1232) - lu(k,748) * lu(k,1226) + lu(k,1235) = lu(k,1235) - lu(k,749) * lu(k,1226) + lu(k,1236) = lu(k,1236) - lu(k,750) * lu(k,1226) + lu(k,1237) = lu(k,1237) - lu(k,751) * lu(k,1226) + lu(k,1238) = lu(k,1238) - lu(k,752) * lu(k,1226) + lu(k,1239) = lu(k,1239) - lu(k,753) * lu(k,1226) + lu(k,1240) = lu(k,1240) - lu(k,754) * lu(k,1226) + lu(k,1241) = lu(k,1241) - lu(k,755) * lu(k,1226) + lu(k,1244) = lu(k,1244) - lu(k,756) * lu(k,1226) + lu(k,1246) = lu(k,1246) - lu(k,757) * lu(k,1226) + lu(k,1247) = lu(k,1247) - lu(k,758) * lu(k,1226) + lu(k,1249) = lu(k,1249) - lu(k,759) * lu(k,1226) + lu(k,1394) = lu(k,1394) - lu(k,745) * lu(k,1393) + lu(k,1395) = lu(k,1395) - lu(k,746) * lu(k,1393) + lu(k,1396) = lu(k,1396) - lu(k,747) * lu(k,1393) + lu(k,1401) = lu(k,1401) - lu(k,748) * lu(k,1393) + lu(k,1404) = lu(k,1404) - lu(k,749) * lu(k,1393) + lu(k,1405) = lu(k,1405) - lu(k,750) * lu(k,1393) + lu(k,1406) = lu(k,1406) - lu(k,751) * lu(k,1393) + lu(k,1407) = lu(k,1407) - lu(k,752) * lu(k,1393) + lu(k,1408) = lu(k,1408) - lu(k,753) * lu(k,1393) + lu(k,1409) = lu(k,1409) - lu(k,754) * lu(k,1393) + lu(k,1410) = lu(k,1410) - lu(k,755) * lu(k,1393) + lu(k,1413) = lu(k,1413) - lu(k,756) * lu(k,1393) + lu(k,1415) = lu(k,1415) - lu(k,757) * lu(k,1393) + lu(k,1416) = lu(k,1416) - lu(k,758) * lu(k,1393) + lu(k,1418) = lu(k,1418) - lu(k,759) * lu(k,1393) + lu(k,1490) = lu(k,1490) - lu(k,745) * lu(k,1489) + lu(k,1491) = lu(k,1491) - lu(k,746) * lu(k,1489) + lu(k,1492) = lu(k,1492) - lu(k,747) * lu(k,1489) + lu(k,1494) = lu(k,1494) - lu(k,748) * lu(k,1489) + lu(k,1497) = lu(k,1497) - lu(k,749) * lu(k,1489) + lu(k,1498) = lu(k,1498) - lu(k,750) * lu(k,1489) + lu(k,1499) = lu(k,1499) - lu(k,751) * lu(k,1489) + lu(k,1500) = lu(k,1500) - lu(k,752) * lu(k,1489) + lu(k,1501) = lu(k,1501) - lu(k,753) * lu(k,1489) + lu(k,1502) = lu(k,1502) - lu(k,754) * lu(k,1489) + lu(k,1503) = lu(k,1503) - lu(k,755) * lu(k,1489) + lu(k,1506) = lu(k,1506) - lu(k,756) * lu(k,1489) + lu(k,1508) = lu(k,1508) - lu(k,757) * lu(k,1489) + lu(k,1509) = - lu(k,758) * lu(k,1489) + lu(k,1511) = lu(k,1511) - lu(k,759) * lu(k,1489) + lu(k,765) = 1._r8 / lu(k,765) + lu(k,766) = lu(k,766) * lu(k,765) + lu(k,767) = lu(k,767) * lu(k,765) + lu(k,768) = lu(k,768) * lu(k,765) + lu(k,769) = lu(k,769) * lu(k,765) + lu(k,770) = lu(k,770) * lu(k,765) + lu(k,771) = lu(k,771) * lu(k,765) + lu(k,772) = lu(k,772) * lu(k,765) + lu(k,773) = lu(k,773) * lu(k,765) + lu(k,774) = lu(k,774) * lu(k,765) + lu(k,775) = lu(k,775) * lu(k,765) + lu(k,776) = lu(k,776) * lu(k,765) + lu(k,777) = lu(k,777) * lu(k,765) + lu(k,793) = lu(k,793) - lu(k,766) * lu(k,792) + lu(k,794) = lu(k,794) - lu(k,767) * lu(k,792) + lu(k,796) = lu(k,796) - lu(k,768) * lu(k,792) + lu(k,797) = lu(k,797) - lu(k,769) * lu(k,792) + lu(k,798) = lu(k,798) - lu(k,770) * lu(k,792) + lu(k,799) = lu(k,799) - lu(k,771) * lu(k,792) + lu(k,800) = lu(k,800) - lu(k,772) * lu(k,792) + lu(k,801) = lu(k,801) - lu(k,773) * lu(k,792) + lu(k,802) = lu(k,802) - lu(k,774) * lu(k,792) + lu(k,803) = lu(k,803) - lu(k,775) * lu(k,792) + lu(k,804) = lu(k,804) - lu(k,776) * lu(k,792) + lu(k,806) = lu(k,806) - lu(k,777) * lu(k,792) + lu(k,988) = lu(k,988) - lu(k,766) * lu(k,987) + lu(k,989) = lu(k,989) - lu(k,767) * lu(k,987) + lu(k,996) = lu(k,996) - lu(k,768) * lu(k,987) + lu(k,997) = lu(k,997) - lu(k,769) * lu(k,987) + lu(k,998) = lu(k,998) - lu(k,770) * lu(k,987) + lu(k,999) = lu(k,999) - lu(k,771) * lu(k,987) + lu(k,1000) = lu(k,1000) - lu(k,772) * lu(k,987) + lu(k,1001) = lu(k,1001) - lu(k,773) * lu(k,987) + lu(k,1002) = lu(k,1002) - lu(k,774) * lu(k,987) + lu(k,1005) = lu(k,1005) - lu(k,775) * lu(k,987) + lu(k,1007) = lu(k,1007) - lu(k,776) * lu(k,987) + lu(k,1010) = lu(k,1010) - lu(k,777) * lu(k,987) + lu(k,1071) = lu(k,1071) - lu(k,766) * lu(k,1070) + lu(k,1072) = lu(k,1072) - lu(k,767) * lu(k,1070) + lu(k,1079) = lu(k,1079) - lu(k,768) * lu(k,1070) + lu(k,1080) = lu(k,1080) - lu(k,769) * lu(k,1070) + lu(k,1081) = lu(k,1081) - lu(k,770) * lu(k,1070) + lu(k,1082) = lu(k,1082) - lu(k,771) * lu(k,1070) + lu(k,1083) = lu(k,1083) - lu(k,772) * lu(k,1070) + lu(k,1084) = lu(k,1084) - lu(k,773) * lu(k,1070) + lu(k,1085) = lu(k,1085) - lu(k,774) * lu(k,1070) + lu(k,1088) = lu(k,1088) - lu(k,775) * lu(k,1070) + lu(k,1090) = lu(k,1090) - lu(k,776) * lu(k,1070) + lu(k,1093) = lu(k,1093) - lu(k,777) * lu(k,1070) + lu(k,1118) = lu(k,1118) - lu(k,766) * lu(k,1117) + lu(k,1119) = lu(k,1119) - lu(k,767) * lu(k,1117) + lu(k,1125) = lu(k,1125) - lu(k,768) * lu(k,1117) + lu(k,1126) = lu(k,1126) - lu(k,769) * lu(k,1117) + lu(k,1127) = lu(k,1127) - lu(k,770) * lu(k,1117) + lu(k,1128) = lu(k,1128) - lu(k,771) * lu(k,1117) + lu(k,1129) = lu(k,1129) - lu(k,772) * lu(k,1117) + lu(k,1130) = lu(k,1130) - lu(k,773) * lu(k,1117) + lu(k,1131) = lu(k,1131) - lu(k,774) * lu(k,1117) + lu(k,1134) = lu(k,1134) - lu(k,775) * lu(k,1117) + lu(k,1136) = lu(k,1136) - lu(k,776) * lu(k,1117) + lu(k,1139) = lu(k,1139) - lu(k,777) * lu(k,1117) + lu(k,1184) = lu(k,1184) - lu(k,766) * lu(k,1183) + lu(k,1185) = lu(k,1185) - lu(k,767) * lu(k,1183) + lu(k,1189) = lu(k,1189) - lu(k,768) * lu(k,1183) + lu(k,1190) = lu(k,1190) - lu(k,769) * lu(k,1183) + lu(k,1191) = lu(k,1191) - lu(k,770) * lu(k,1183) + lu(k,1192) = lu(k,1192) - lu(k,771) * lu(k,1183) + lu(k,1193) = lu(k,1193) - lu(k,772) * lu(k,1183) + lu(k,1194) = lu(k,1194) - lu(k,773) * lu(k,1183) + lu(k,1195) = lu(k,1195) - lu(k,774) * lu(k,1183) + lu(k,1198) = lu(k,1198) - lu(k,775) * lu(k,1183) + lu(k,1200) = lu(k,1200) - lu(k,776) * lu(k,1183) + lu(k,1203) = lu(k,1203) - lu(k,777) * lu(k,1183) + lu(k,1228) = lu(k,1228) - lu(k,766) * lu(k,1227) + lu(k,1229) = lu(k,1229) - lu(k,767) * lu(k,1227) + lu(k,1235) = lu(k,1235) - lu(k,768) * lu(k,1227) + lu(k,1236) = lu(k,1236) - lu(k,769) * lu(k,1227) + lu(k,1237) = lu(k,1237) - lu(k,770) * lu(k,1227) + lu(k,1238) = lu(k,1238) - lu(k,771) * lu(k,1227) + lu(k,1239) = lu(k,1239) - lu(k,772) * lu(k,1227) + lu(k,1240) = lu(k,1240) - lu(k,773) * lu(k,1227) + lu(k,1241) = lu(k,1241) - lu(k,774) * lu(k,1227) + lu(k,1244) = lu(k,1244) - lu(k,775) * lu(k,1227) + lu(k,1246) = lu(k,1246) - lu(k,776) * lu(k,1227) + lu(k,1249) = lu(k,1249) - lu(k,777) * lu(k,1227) + lu(k,1395) = lu(k,1395) - lu(k,766) * lu(k,1394) + lu(k,1396) = lu(k,1396) - lu(k,767) * lu(k,1394) + lu(k,1404) = lu(k,1404) - lu(k,768) * lu(k,1394) + lu(k,1405) = lu(k,1405) - lu(k,769) * lu(k,1394) + lu(k,1406) = lu(k,1406) - lu(k,770) * lu(k,1394) + lu(k,1407) = lu(k,1407) - lu(k,771) * lu(k,1394) + lu(k,1408) = lu(k,1408) - lu(k,772) * lu(k,1394) + lu(k,1409) = lu(k,1409) - lu(k,773) * lu(k,1394) + lu(k,1410) = lu(k,1410) - lu(k,774) * lu(k,1394) + lu(k,1413) = lu(k,1413) - lu(k,775) * lu(k,1394) + lu(k,1415) = lu(k,1415) - lu(k,776) * lu(k,1394) + lu(k,1418) = lu(k,1418) - lu(k,777) * lu(k,1394) + lu(k,1491) = lu(k,1491) - lu(k,766) * lu(k,1490) + lu(k,1492) = lu(k,1492) - lu(k,767) * lu(k,1490) + lu(k,1497) = lu(k,1497) - lu(k,768) * lu(k,1490) + lu(k,1498) = lu(k,1498) - lu(k,769) * lu(k,1490) + lu(k,1499) = lu(k,1499) - lu(k,770) * lu(k,1490) + lu(k,1500) = lu(k,1500) - lu(k,771) * lu(k,1490) + lu(k,1501) = lu(k,1501) - lu(k,772) * lu(k,1490) + lu(k,1502) = lu(k,1502) - lu(k,773) * lu(k,1490) + lu(k,1503) = lu(k,1503) - lu(k,774) * lu(k,1490) + lu(k,1506) = lu(k,1506) - lu(k,775) * lu(k,1490) + lu(k,1508) = lu(k,1508) - lu(k,776) * lu(k,1490) + lu(k,1511) = lu(k,1511) - lu(k,777) * lu(k,1490) + lu(k,793) = 1._r8 / lu(k,793) + lu(k,794) = lu(k,794) * lu(k,793) + lu(k,795) = lu(k,795) * lu(k,793) + lu(k,796) = lu(k,796) * lu(k,793) + lu(k,797) = lu(k,797) * lu(k,793) + lu(k,798) = lu(k,798) * lu(k,793) + lu(k,799) = lu(k,799) * lu(k,793) + lu(k,800) = lu(k,800) * lu(k,793) + lu(k,801) = lu(k,801) * lu(k,793) + lu(k,802) = lu(k,802) * lu(k,793) + lu(k,803) = lu(k,803) * lu(k,793) + lu(k,804) = lu(k,804) * lu(k,793) + lu(k,805) = lu(k,805) * lu(k,793) + lu(k,806) = lu(k,806) * lu(k,793) + lu(k,989) = lu(k,989) - lu(k,794) * lu(k,988) + lu(k,993) = lu(k,993) - lu(k,795) * lu(k,988) + lu(k,996) = lu(k,996) - lu(k,796) * lu(k,988) + lu(k,997) = lu(k,997) - lu(k,797) * lu(k,988) + lu(k,998) = lu(k,998) - lu(k,798) * lu(k,988) + lu(k,999) = lu(k,999) - lu(k,799) * lu(k,988) + lu(k,1000) = lu(k,1000) - lu(k,800) * lu(k,988) + lu(k,1001) = lu(k,1001) - lu(k,801) * lu(k,988) + lu(k,1002) = lu(k,1002) - lu(k,802) * lu(k,988) + lu(k,1005) = lu(k,1005) - lu(k,803) * lu(k,988) + lu(k,1007) = lu(k,1007) - lu(k,804) * lu(k,988) + lu(k,1008) = - lu(k,805) * lu(k,988) + lu(k,1010) = lu(k,1010) - lu(k,806) * lu(k,988) + lu(k,1072) = lu(k,1072) - lu(k,794) * lu(k,1071) + lu(k,1076) = lu(k,1076) - lu(k,795) * lu(k,1071) + lu(k,1079) = lu(k,1079) - lu(k,796) * lu(k,1071) + lu(k,1080) = lu(k,1080) - lu(k,797) * lu(k,1071) + lu(k,1081) = lu(k,1081) - lu(k,798) * lu(k,1071) + lu(k,1082) = lu(k,1082) - lu(k,799) * lu(k,1071) + lu(k,1083) = lu(k,1083) - lu(k,800) * lu(k,1071) + lu(k,1084) = lu(k,1084) - lu(k,801) * lu(k,1071) + lu(k,1085) = lu(k,1085) - lu(k,802) * lu(k,1071) + lu(k,1088) = lu(k,1088) - lu(k,803) * lu(k,1071) + lu(k,1090) = lu(k,1090) - lu(k,804) * lu(k,1071) + lu(k,1091) = lu(k,1091) - lu(k,805) * lu(k,1071) + lu(k,1093) = lu(k,1093) - lu(k,806) * lu(k,1071) + lu(k,1119) = lu(k,1119) - lu(k,794) * lu(k,1118) + lu(k,1122) = lu(k,1122) - lu(k,795) * lu(k,1118) + lu(k,1125) = lu(k,1125) - lu(k,796) * lu(k,1118) + lu(k,1126) = lu(k,1126) - lu(k,797) * lu(k,1118) + lu(k,1127) = lu(k,1127) - lu(k,798) * lu(k,1118) + lu(k,1128) = lu(k,1128) - lu(k,799) * lu(k,1118) + lu(k,1129) = lu(k,1129) - lu(k,800) * lu(k,1118) + lu(k,1130) = lu(k,1130) - lu(k,801) * lu(k,1118) + lu(k,1131) = lu(k,1131) - lu(k,802) * lu(k,1118) + lu(k,1134) = lu(k,1134) - lu(k,803) * lu(k,1118) + lu(k,1136) = lu(k,1136) - lu(k,804) * lu(k,1118) + lu(k,1137) = lu(k,1137) - lu(k,805) * lu(k,1118) + lu(k,1139) = lu(k,1139) - lu(k,806) * lu(k,1118) + lu(k,1185) = lu(k,1185) - lu(k,794) * lu(k,1184) + lu(k,1186) = lu(k,1186) - lu(k,795) * lu(k,1184) + lu(k,1189) = lu(k,1189) - lu(k,796) * lu(k,1184) + lu(k,1190) = lu(k,1190) - lu(k,797) * lu(k,1184) + lu(k,1191) = lu(k,1191) - lu(k,798) * lu(k,1184) + lu(k,1192) = lu(k,1192) - lu(k,799) * lu(k,1184) + lu(k,1193) = lu(k,1193) - lu(k,800) * lu(k,1184) + lu(k,1194) = lu(k,1194) - lu(k,801) * lu(k,1184) + lu(k,1195) = lu(k,1195) - lu(k,802) * lu(k,1184) + lu(k,1198) = lu(k,1198) - lu(k,803) * lu(k,1184) + lu(k,1200) = lu(k,1200) - lu(k,804) * lu(k,1184) + lu(k,1201) = lu(k,1201) - lu(k,805) * lu(k,1184) + lu(k,1203) = lu(k,1203) - lu(k,806) * lu(k,1184) + lu(k,1229) = lu(k,1229) - lu(k,794) * lu(k,1228) + lu(k,1232) = lu(k,1232) - lu(k,795) * lu(k,1228) + lu(k,1235) = lu(k,1235) - lu(k,796) * lu(k,1228) + lu(k,1236) = lu(k,1236) - lu(k,797) * lu(k,1228) + lu(k,1237) = lu(k,1237) - lu(k,798) * lu(k,1228) + lu(k,1238) = lu(k,1238) - lu(k,799) * lu(k,1228) + lu(k,1239) = lu(k,1239) - lu(k,800) * lu(k,1228) + lu(k,1240) = lu(k,1240) - lu(k,801) * lu(k,1228) + lu(k,1241) = lu(k,1241) - lu(k,802) * lu(k,1228) + lu(k,1244) = lu(k,1244) - lu(k,803) * lu(k,1228) + lu(k,1246) = lu(k,1246) - lu(k,804) * lu(k,1228) + lu(k,1247) = lu(k,1247) - lu(k,805) * lu(k,1228) + lu(k,1249) = lu(k,1249) - lu(k,806) * lu(k,1228) + lu(k,1308) = lu(k,1308) - lu(k,794) * lu(k,1307) + lu(k,1312) = lu(k,1312) - lu(k,795) * lu(k,1307) + lu(k,1315) = lu(k,1315) - lu(k,796) * lu(k,1307) + lu(k,1316) = lu(k,1316) - lu(k,797) * lu(k,1307) + lu(k,1317) = lu(k,1317) - lu(k,798) * lu(k,1307) + lu(k,1318) = lu(k,1318) - lu(k,799) * lu(k,1307) + lu(k,1319) = lu(k,1319) - lu(k,800) * lu(k,1307) + lu(k,1320) = lu(k,1320) - lu(k,801) * lu(k,1307) + lu(k,1321) = lu(k,1321) - lu(k,802) * lu(k,1307) + lu(k,1324) = lu(k,1324) - lu(k,803) * lu(k,1307) + lu(k,1326) = lu(k,1326) - lu(k,804) * lu(k,1307) + lu(k,1327) = lu(k,1327) - lu(k,805) * lu(k,1307) + lu(k,1329) = lu(k,1329) - lu(k,806) * lu(k,1307) + lu(k,1396) = lu(k,1396) - lu(k,794) * lu(k,1395) + lu(k,1401) = lu(k,1401) - lu(k,795) * lu(k,1395) + lu(k,1404) = lu(k,1404) - lu(k,796) * lu(k,1395) + lu(k,1405) = lu(k,1405) - lu(k,797) * lu(k,1395) + lu(k,1406) = lu(k,1406) - lu(k,798) * lu(k,1395) + lu(k,1407) = lu(k,1407) - lu(k,799) * lu(k,1395) + lu(k,1408) = lu(k,1408) - lu(k,800) * lu(k,1395) + lu(k,1409) = lu(k,1409) - lu(k,801) * lu(k,1395) + lu(k,1410) = lu(k,1410) - lu(k,802) * lu(k,1395) + lu(k,1413) = lu(k,1413) - lu(k,803) * lu(k,1395) + lu(k,1415) = lu(k,1415) - lu(k,804) * lu(k,1395) + lu(k,1416) = lu(k,1416) - lu(k,805) * lu(k,1395) + lu(k,1418) = lu(k,1418) - lu(k,806) * lu(k,1395) + lu(k,1492) = lu(k,1492) - lu(k,794) * lu(k,1491) + lu(k,1494) = lu(k,1494) - lu(k,795) * lu(k,1491) + lu(k,1497) = lu(k,1497) - lu(k,796) * lu(k,1491) + lu(k,1498) = lu(k,1498) - lu(k,797) * lu(k,1491) + lu(k,1499) = lu(k,1499) - lu(k,798) * lu(k,1491) + lu(k,1500) = lu(k,1500) - lu(k,799) * lu(k,1491) + lu(k,1501) = lu(k,1501) - lu(k,800) * lu(k,1491) + lu(k,1502) = lu(k,1502) - lu(k,801) * lu(k,1491) + lu(k,1503) = lu(k,1503) - lu(k,802) * lu(k,1491) + lu(k,1506) = lu(k,1506) - lu(k,803) * lu(k,1491) + lu(k,1508) = lu(k,1508) - lu(k,804) * lu(k,1491) + lu(k,1509) = lu(k,1509) - lu(k,805) * lu(k,1491) + lu(k,1511) = lu(k,1511) - lu(k,806) * lu(k,1491) + end do + end subroutine lu_fac16 + subroutine lu_fac17( avec_len, lu ) + use chem_mods, only : nzcnt + use shr_kind_mod, only : r8 => shr_kind_r8 + implicit none +!----------------------------------------------------------------------- +! ... dummy args +!----------------------------------------------------------------------- + integer, intent(in) :: avec_len + real(r8), intent(inout) :: lu(veclen,nzcnt) +!----------------------------------------------------------------------- +! ... local variables +!----------------------------------------------------------------------- + integer :: k + do k = 1,avec_len + lu(k,815) = 1._r8 / lu(k,815) + lu(k,816) = lu(k,816) * lu(k,815) + lu(k,817) = lu(k,817) * lu(k,815) + lu(k,818) = lu(k,818) * lu(k,815) + lu(k,819) = lu(k,819) * lu(k,815) + lu(k,820) = lu(k,820) * lu(k,815) + lu(k,821) = lu(k,821) * lu(k,815) + lu(k,822) = lu(k,822) * lu(k,815) + lu(k,823) = lu(k,823) * lu(k,815) + lu(k,877) = lu(k,877) - lu(k,816) * lu(k,875) + lu(k,879) = - lu(k,817) * lu(k,875) + lu(k,881) = lu(k,881) - lu(k,818) * lu(k,875) + lu(k,883) = lu(k,883) - lu(k,819) * lu(k,875) + lu(k,884) = lu(k,884) - lu(k,820) * lu(k,875) + lu(k,885) = lu(k,885) - lu(k,821) * lu(k,875) + lu(k,886) = - lu(k,822) * lu(k,875) + lu(k,887) = lu(k,887) - lu(k,823) * lu(k,875) + lu(k,909) = lu(k,909) - lu(k,816) * lu(k,906) + lu(k,912) = lu(k,912) - lu(k,817) * lu(k,906) + lu(k,914) = lu(k,914) - lu(k,818) * lu(k,906) + lu(k,916) = lu(k,916) - lu(k,819) * lu(k,906) + lu(k,918) = lu(k,918) - lu(k,820) * lu(k,906) + lu(k,919) = lu(k,919) - lu(k,821) * lu(k,906) + lu(k,920) = lu(k,920) - lu(k,822) * lu(k,906) + lu(k,921) = lu(k,921) - lu(k,823) * lu(k,906) + lu(k,993) = lu(k,993) - lu(k,816) * lu(k,989) + lu(k,996) = lu(k,996) - lu(k,817) * lu(k,989) + lu(k,998) = lu(k,998) - lu(k,818) * lu(k,989) + lu(k,1003) = lu(k,1003) - lu(k,819) * lu(k,989) + lu(k,1005) = lu(k,1005) - lu(k,820) * lu(k,989) + lu(k,1006) = lu(k,1006) - lu(k,821) * lu(k,989) + lu(k,1007) = lu(k,1007) - lu(k,822) * lu(k,989) + lu(k,1009) = lu(k,1009) - lu(k,823) * lu(k,989) + lu(k,1017) = - lu(k,816) * lu(k,1013) + lu(k,1020) = - lu(k,817) * lu(k,1013) + lu(k,1022) = lu(k,1022) - lu(k,818) * lu(k,1013) + lu(k,1027) = lu(k,1027) - lu(k,819) * lu(k,1013) + lu(k,1029) = lu(k,1029) - lu(k,820) * lu(k,1013) + lu(k,1030) = lu(k,1030) - lu(k,821) * lu(k,1013) + lu(k,1031) = - lu(k,822) * lu(k,1013) + lu(k,1033) = lu(k,1033) - lu(k,823) * lu(k,1013) + lu(k,1076) = lu(k,1076) - lu(k,816) * lu(k,1072) + lu(k,1079) = lu(k,1079) - lu(k,817) * lu(k,1072) + lu(k,1081) = lu(k,1081) - lu(k,818) * lu(k,1072) + lu(k,1086) = lu(k,1086) - lu(k,819) * lu(k,1072) + lu(k,1088) = lu(k,1088) - lu(k,820) * lu(k,1072) + lu(k,1089) = lu(k,1089) - lu(k,821) * lu(k,1072) + lu(k,1090) = lu(k,1090) - lu(k,822) * lu(k,1072) + lu(k,1092) = lu(k,1092) - lu(k,823) * lu(k,1072) + lu(k,1122) = lu(k,1122) - lu(k,816) * lu(k,1119) + lu(k,1125) = lu(k,1125) - lu(k,817) * lu(k,1119) + lu(k,1127) = lu(k,1127) - lu(k,818) * lu(k,1119) + lu(k,1132) = lu(k,1132) - lu(k,819) * lu(k,1119) + lu(k,1134) = lu(k,1134) - lu(k,820) * lu(k,1119) + lu(k,1135) = lu(k,1135) - lu(k,821) * lu(k,1119) + lu(k,1136) = lu(k,1136) - lu(k,822) * lu(k,1119) + lu(k,1138) = lu(k,1138) - lu(k,823) * lu(k,1119) + lu(k,1186) = lu(k,1186) - lu(k,816) * lu(k,1185) + lu(k,1189) = lu(k,1189) - lu(k,817) * lu(k,1185) + lu(k,1191) = lu(k,1191) - lu(k,818) * lu(k,1185) + lu(k,1196) = - lu(k,819) * lu(k,1185) + lu(k,1198) = lu(k,1198) - lu(k,820) * lu(k,1185) + lu(k,1199) = - lu(k,821) * lu(k,1185) + lu(k,1200) = lu(k,1200) - lu(k,822) * lu(k,1185) + lu(k,1202) = lu(k,1202) - lu(k,823) * lu(k,1185) + lu(k,1232) = lu(k,1232) - lu(k,816) * lu(k,1229) + lu(k,1235) = lu(k,1235) - lu(k,817) * lu(k,1229) + lu(k,1237) = lu(k,1237) - lu(k,818) * lu(k,1229) + lu(k,1242) = - lu(k,819) * lu(k,1229) + lu(k,1244) = lu(k,1244) - lu(k,820) * lu(k,1229) + lu(k,1245) = lu(k,1245) - lu(k,821) * lu(k,1229) + lu(k,1246) = lu(k,1246) - lu(k,822) * lu(k,1229) + lu(k,1248) = - lu(k,823) * lu(k,1229) + lu(k,1312) = lu(k,1312) - lu(k,816) * lu(k,1308) + lu(k,1315) = lu(k,1315) - lu(k,817) * lu(k,1308) + lu(k,1317) = lu(k,1317) - lu(k,818) * lu(k,1308) + lu(k,1322) = lu(k,1322) - lu(k,819) * lu(k,1308) + lu(k,1324) = lu(k,1324) - lu(k,820) * lu(k,1308) + lu(k,1325) = lu(k,1325) - lu(k,821) * lu(k,1308) + lu(k,1326) = lu(k,1326) - lu(k,822) * lu(k,1308) + lu(k,1328) = lu(k,1328) - lu(k,823) * lu(k,1308) + lu(k,1401) = lu(k,1401) - lu(k,816) * lu(k,1396) + lu(k,1404) = lu(k,1404) - lu(k,817) * lu(k,1396) + lu(k,1406) = lu(k,1406) - lu(k,818) * lu(k,1396) + lu(k,1411) = lu(k,1411) - lu(k,819) * lu(k,1396) + lu(k,1413) = lu(k,1413) - lu(k,820) * lu(k,1396) + lu(k,1414) = lu(k,1414) - lu(k,821) * lu(k,1396) + lu(k,1415) = lu(k,1415) - lu(k,822) * lu(k,1396) + lu(k,1417) = lu(k,1417) - lu(k,823) * lu(k,1396) + lu(k,1446) = lu(k,1446) - lu(k,816) * lu(k,1441) + lu(k,1449) = lu(k,1449) - lu(k,817) * lu(k,1441) + lu(k,1451) = lu(k,1451) - lu(k,818) * lu(k,1441) + lu(k,1456) = lu(k,1456) - lu(k,819) * lu(k,1441) + lu(k,1458) = lu(k,1458) - lu(k,820) * lu(k,1441) + lu(k,1459) = lu(k,1459) - lu(k,821) * lu(k,1441) + lu(k,1460) = lu(k,1460) - lu(k,822) * lu(k,1441) + lu(k,1462) = lu(k,1462) - lu(k,823) * lu(k,1441) + lu(k,1494) = lu(k,1494) - lu(k,816) * lu(k,1492) + lu(k,1497) = lu(k,1497) - lu(k,817) * lu(k,1492) + lu(k,1499) = lu(k,1499) - lu(k,818) * lu(k,1492) + lu(k,1504) = lu(k,1504) - lu(k,819) * lu(k,1492) + lu(k,1506) = lu(k,1506) - lu(k,820) * lu(k,1492) + lu(k,1507) = lu(k,1507) - lu(k,821) * lu(k,1492) + lu(k,1508) = lu(k,1508) - lu(k,822) * lu(k,1492) + lu(k,1510) = lu(k,1510) - lu(k,823) * lu(k,1492) + lu(k,1519) = - lu(k,816) * lu(k,1515) + lu(k,1522) = - lu(k,817) * lu(k,1515) + lu(k,1524) = lu(k,1524) - lu(k,818) * lu(k,1515) + lu(k,1529) = lu(k,1529) - lu(k,819) * lu(k,1515) + lu(k,1531) = lu(k,1531) - lu(k,820) * lu(k,1515) + lu(k,1532) = lu(k,1532) - lu(k,821) * lu(k,1515) + lu(k,1533) = - lu(k,822) * lu(k,1515) + lu(k,1535) = lu(k,1535) - lu(k,823) * lu(k,1515) + lu(k,826) = 1._r8 / lu(k,826) + lu(k,827) = lu(k,827) * lu(k,826) + lu(k,828) = lu(k,828) * lu(k,826) + lu(k,829) = lu(k,829) * lu(k,826) + lu(k,830) = lu(k,830) * lu(k,826) + lu(k,831) = lu(k,831) * lu(k,826) + lu(k,832) = lu(k,832) * lu(k,826) + lu(k,833) = lu(k,833) * lu(k,826) + lu(k,834) = lu(k,834) * lu(k,826) + lu(k,835) = lu(k,835) * lu(k,826) + lu(k,836) = lu(k,836) * lu(k,826) + lu(k,837) = lu(k,837) * lu(k,826) + lu(k,1015) = lu(k,1015) - lu(k,827) * lu(k,1014) + lu(k,1024) = lu(k,1024) - lu(k,828) * lu(k,1014) + lu(k,1025) = - lu(k,829) * lu(k,1014) + lu(k,1026) = lu(k,1026) - lu(k,830) * lu(k,1014) + lu(k,1027) = lu(k,1027) - lu(k,831) * lu(k,1014) + lu(k,1028) = lu(k,1028) - lu(k,832) * lu(k,1014) + lu(k,1029) = lu(k,1029) - lu(k,833) * lu(k,1014) + lu(k,1030) = lu(k,1030) - lu(k,834) * lu(k,1014) + lu(k,1032) = - lu(k,835) * lu(k,1014) + lu(k,1033) = lu(k,1033) - lu(k,836) * lu(k,1014) + lu(k,1034) = lu(k,1034) - lu(k,837) * lu(k,1014) + lu(k,1074) = lu(k,1074) - lu(k,827) * lu(k,1073) + lu(k,1083) = lu(k,1083) - lu(k,828) * lu(k,1073) + lu(k,1084) = lu(k,1084) - lu(k,829) * lu(k,1073) + lu(k,1085) = lu(k,1085) - lu(k,830) * lu(k,1073) + lu(k,1086) = lu(k,1086) - lu(k,831) * lu(k,1073) + lu(k,1087) = lu(k,1087) - lu(k,832) * lu(k,1073) + lu(k,1088) = lu(k,1088) - lu(k,833) * lu(k,1073) + lu(k,1089) = lu(k,1089) - lu(k,834) * lu(k,1073) + lu(k,1091) = lu(k,1091) - lu(k,835) * lu(k,1073) + lu(k,1092) = lu(k,1092) - lu(k,836) * lu(k,1073) + lu(k,1093) = lu(k,1093) - lu(k,837) * lu(k,1073) + lu(k,1143) = - lu(k,827) * lu(k,1142) + lu(k,1152) = lu(k,1152) - lu(k,828) * lu(k,1142) + lu(k,1153) = lu(k,1153) - lu(k,829) * lu(k,1142) + lu(k,1154) = lu(k,1154) - lu(k,830) * lu(k,1142) + lu(k,1155) = - lu(k,831) * lu(k,1142) + lu(k,1156) = - lu(k,832) * lu(k,1142) + lu(k,1157) = lu(k,1157) - lu(k,833) * lu(k,1142) + lu(k,1158) = - lu(k,834) * lu(k,1142) + lu(k,1160) = lu(k,1160) - lu(k,835) * lu(k,1142) + lu(k,1161) = lu(k,1161) - lu(k,836) * lu(k,1142) + lu(k,1162) = lu(k,1162) - lu(k,837) * lu(k,1142) + lu(k,1272) = lu(k,1272) - lu(k,827) * lu(k,1271) + lu(k,1281) = lu(k,1281) - lu(k,828) * lu(k,1271) + lu(k,1282) = lu(k,1282) - lu(k,829) * lu(k,1271) + lu(k,1283) = lu(k,1283) - lu(k,830) * lu(k,1271) + lu(k,1284) = lu(k,1284) - lu(k,831) * lu(k,1271) + lu(k,1285) = lu(k,1285) - lu(k,832) * lu(k,1271) + lu(k,1286) = lu(k,1286) - lu(k,833) * lu(k,1271) + lu(k,1287) = lu(k,1287) - lu(k,834) * lu(k,1271) + lu(k,1289) = lu(k,1289) - lu(k,835) * lu(k,1271) + lu(k,1290) = lu(k,1290) - lu(k,836) * lu(k,1271) + lu(k,1291) = lu(k,1291) - lu(k,837) * lu(k,1271) + lu(k,1310) = lu(k,1310) - lu(k,827) * lu(k,1309) + lu(k,1319) = lu(k,1319) - lu(k,828) * lu(k,1309) + lu(k,1320) = lu(k,1320) - lu(k,829) * lu(k,1309) + lu(k,1321) = lu(k,1321) - lu(k,830) * lu(k,1309) + lu(k,1322) = lu(k,1322) - lu(k,831) * lu(k,1309) + lu(k,1323) = lu(k,1323) - lu(k,832) * lu(k,1309) + lu(k,1324) = lu(k,1324) - lu(k,833) * lu(k,1309) + lu(k,1325) = lu(k,1325) - lu(k,834) * lu(k,1309) + lu(k,1327) = lu(k,1327) - lu(k,835) * lu(k,1309) + lu(k,1328) = lu(k,1328) - lu(k,836) * lu(k,1309) + lu(k,1329) = lu(k,1329) - lu(k,837) * lu(k,1309) + lu(k,1399) = lu(k,1399) - lu(k,827) * lu(k,1397) + lu(k,1408) = lu(k,1408) - lu(k,828) * lu(k,1397) + lu(k,1409) = lu(k,1409) - lu(k,829) * lu(k,1397) + lu(k,1410) = lu(k,1410) - lu(k,830) * lu(k,1397) + lu(k,1411) = lu(k,1411) - lu(k,831) * lu(k,1397) + lu(k,1412) = lu(k,1412) - lu(k,832) * lu(k,1397) + lu(k,1413) = lu(k,1413) - lu(k,833) * lu(k,1397) + lu(k,1414) = lu(k,1414) - lu(k,834) * lu(k,1397) + lu(k,1416) = lu(k,1416) - lu(k,835) * lu(k,1397) + lu(k,1417) = lu(k,1417) - lu(k,836) * lu(k,1397) + lu(k,1418) = lu(k,1418) - lu(k,837) * lu(k,1397) + lu(k,1444) = lu(k,1444) - lu(k,827) * lu(k,1442) + lu(k,1453) = lu(k,1453) - lu(k,828) * lu(k,1442) + lu(k,1454) = - lu(k,829) * lu(k,1442) + lu(k,1455) = lu(k,1455) - lu(k,830) * lu(k,1442) + lu(k,1456) = lu(k,1456) - lu(k,831) * lu(k,1442) + lu(k,1457) = lu(k,1457) - lu(k,832) * lu(k,1442) + lu(k,1458) = lu(k,1458) - lu(k,833) * lu(k,1442) + lu(k,1459) = lu(k,1459) - lu(k,834) * lu(k,1442) + lu(k,1461) = - lu(k,835) * lu(k,1442) + lu(k,1462) = lu(k,1462) - lu(k,836) * lu(k,1442) + lu(k,1463) = lu(k,1463) - lu(k,837) * lu(k,1442) + lu(k,1517) = lu(k,1517) - lu(k,827) * lu(k,1516) + lu(k,1526) = lu(k,1526) - lu(k,828) * lu(k,1516) + lu(k,1527) = lu(k,1527) - lu(k,829) * lu(k,1516) + lu(k,1528) = lu(k,1528) - lu(k,830) * lu(k,1516) + lu(k,1529) = lu(k,1529) - lu(k,831) * lu(k,1516) + lu(k,1530) = lu(k,1530) - lu(k,832) * lu(k,1516) + lu(k,1531) = lu(k,1531) - lu(k,833) * lu(k,1516) + lu(k,1532) = lu(k,1532) - lu(k,834) * lu(k,1516) + lu(k,1534) = lu(k,1534) - lu(k,835) * lu(k,1516) + lu(k,1535) = lu(k,1535) - lu(k,836) * lu(k,1516) + lu(k,1536) = lu(k,1536) - lu(k,837) * lu(k,1516) + lu(k,1538) = - lu(k,827) * lu(k,1537) + lu(k,1547) = - lu(k,828) * lu(k,1537) + lu(k,1548) = - lu(k,829) * lu(k,1537) + lu(k,1549) = - lu(k,830) * lu(k,1537) + lu(k,1550) = - lu(k,831) * lu(k,1537) + lu(k,1551) = - lu(k,832) * lu(k,1537) + lu(k,1552) = lu(k,1552) - lu(k,833) * lu(k,1537) + lu(k,1553) = lu(k,1553) - lu(k,834) * lu(k,1537) + lu(k,1555) = - lu(k,835) * lu(k,1537) + lu(k,1556) = lu(k,1556) - lu(k,836) * lu(k,1537) + lu(k,1557) = lu(k,1557) - lu(k,837) * lu(k,1537) + lu(k,1565) = - lu(k,827) * lu(k,1563) + lu(k,1574) = lu(k,1574) - lu(k,828) * lu(k,1563) + lu(k,1575) = lu(k,1575) - lu(k,829) * lu(k,1563) + lu(k,1576) = lu(k,1576) - lu(k,830) * lu(k,1563) + lu(k,1577) = lu(k,1577) - lu(k,831) * lu(k,1563) + lu(k,1578) = - lu(k,832) * lu(k,1563) + lu(k,1579) = lu(k,1579) - lu(k,833) * lu(k,1563) + lu(k,1580) = lu(k,1580) - lu(k,834) * lu(k,1563) + lu(k,1582) = lu(k,1582) - lu(k,835) * lu(k,1563) + lu(k,1583) = lu(k,1583) - lu(k,836) * lu(k,1563) + lu(k,1584) = lu(k,1584) - lu(k,837) * lu(k,1563) + lu(k,841) = 1._r8 / lu(k,841) + lu(k,842) = lu(k,842) * lu(k,841) + lu(k,843) = lu(k,843) * lu(k,841) + lu(k,844) = lu(k,844) * lu(k,841) + lu(k,845) = lu(k,845) * lu(k,841) + lu(k,846) = lu(k,846) * lu(k,841) + lu(k,847) = lu(k,847) * lu(k,841) + lu(k,848) = lu(k,848) * lu(k,841) + lu(k,849) = lu(k,849) * lu(k,841) + lu(k,850) = lu(k,850) * lu(k,841) + lu(k,851) = lu(k,851) * lu(k,841) + lu(k,852) = lu(k,852) * lu(k,841) + lu(k,853) = lu(k,853) * lu(k,841) + lu(k,854) = lu(k,854) * lu(k,841) + lu(k,908) = - lu(k,842) * lu(k,907) + lu(k,909) = lu(k,909) - lu(k,843) * lu(k,907) + lu(k,910) = - lu(k,844) * lu(k,907) + lu(k,911) = - lu(k,845) * lu(k,907) + lu(k,912) = lu(k,912) - lu(k,846) * lu(k,907) + lu(k,914) = lu(k,914) - lu(k,847) * lu(k,907) + lu(k,915) = lu(k,915) - lu(k,848) * lu(k,907) + lu(k,917) = - lu(k,849) * lu(k,907) + lu(k,918) = lu(k,918) - lu(k,850) * lu(k,907) + lu(k,919) = lu(k,919) - lu(k,851) * lu(k,907) + lu(k,920) = lu(k,920) - lu(k,852) * lu(k,907) + lu(k,921) = lu(k,921) - lu(k,853) * lu(k,907) + lu(k,922) = lu(k,922) - lu(k,854) * lu(k,907) + lu(k,930) = lu(k,930) - lu(k,842) * lu(k,928) + lu(k,931) = lu(k,931) - lu(k,843) * lu(k,928) + lu(k,932) = lu(k,932) - lu(k,844) * lu(k,928) + lu(k,933) = lu(k,933) - lu(k,845) * lu(k,928) + lu(k,934) = lu(k,934) - lu(k,846) * lu(k,928) + lu(k,936) = lu(k,936) - lu(k,847) * lu(k,928) + lu(k,937) = - lu(k,848) * lu(k,928) + lu(k,941) = lu(k,941) - lu(k,849) * lu(k,928) + lu(k,942) = lu(k,942) - lu(k,850) * lu(k,928) + lu(k,943) = lu(k,943) - lu(k,851) * lu(k,928) + lu(k,944) = lu(k,944) - lu(k,852) * lu(k,928) + lu(k,945) = - lu(k,853) * lu(k,928) + lu(k,946) = lu(k,946) - lu(k,854) * lu(k,928) + lu(k,956) = lu(k,956) - lu(k,842) * lu(k,954) + lu(k,957) = lu(k,957) - lu(k,843) * lu(k,954) + lu(k,958) = lu(k,958) - lu(k,844) * lu(k,954) + lu(k,959) = lu(k,959) - lu(k,845) * lu(k,954) + lu(k,960) = lu(k,960) - lu(k,846) * lu(k,954) + lu(k,962) = lu(k,962) - lu(k,847) * lu(k,954) + lu(k,963) = - lu(k,848) * lu(k,954) + lu(k,968) = lu(k,968) - lu(k,849) * lu(k,954) + lu(k,969) = lu(k,969) - lu(k,850) * lu(k,954) + lu(k,970) = lu(k,970) - lu(k,851) * lu(k,954) + lu(k,971) = lu(k,971) - lu(k,852) * lu(k,954) + lu(k,972) = - lu(k,853) * lu(k,954) + lu(k,973) = lu(k,973) - lu(k,854) * lu(k,954) + lu(k,992) = lu(k,992) - lu(k,842) * lu(k,990) + lu(k,993) = lu(k,993) - lu(k,843) * lu(k,990) + lu(k,994) = lu(k,994) - lu(k,844) * lu(k,990) + lu(k,995) = lu(k,995) - lu(k,845) * lu(k,990) + lu(k,996) = lu(k,996) - lu(k,846) * lu(k,990) + lu(k,998) = lu(k,998) - lu(k,847) * lu(k,990) + lu(k,999) = lu(k,999) - lu(k,848) * lu(k,990) + lu(k,1004) = lu(k,1004) - lu(k,849) * lu(k,990) + lu(k,1005) = lu(k,1005) - lu(k,850) * lu(k,990) + lu(k,1006) = lu(k,1006) - lu(k,851) * lu(k,990) + lu(k,1007) = lu(k,1007) - lu(k,852) * lu(k,990) + lu(k,1009) = lu(k,1009) - lu(k,853) * lu(k,990) + lu(k,1010) = lu(k,1010) - lu(k,854) * lu(k,990) + lu(k,1121) = lu(k,1121) - lu(k,842) * lu(k,1120) + lu(k,1122) = lu(k,1122) - lu(k,843) * lu(k,1120) + lu(k,1123) = lu(k,1123) - lu(k,844) * lu(k,1120) + lu(k,1124) = lu(k,1124) - lu(k,845) * lu(k,1120) + lu(k,1125) = lu(k,1125) - lu(k,846) * lu(k,1120) + lu(k,1127) = lu(k,1127) - lu(k,847) * lu(k,1120) + lu(k,1128) = lu(k,1128) - lu(k,848) * lu(k,1120) + lu(k,1133) = lu(k,1133) - lu(k,849) * lu(k,1120) + lu(k,1134) = lu(k,1134) - lu(k,850) * lu(k,1120) + lu(k,1135) = lu(k,1135) - lu(k,851) * lu(k,1120) + lu(k,1136) = lu(k,1136) - lu(k,852) * lu(k,1120) + lu(k,1138) = lu(k,1138) - lu(k,853) * lu(k,1120) + lu(k,1139) = lu(k,1139) - lu(k,854) * lu(k,1120) + lu(k,1231) = - lu(k,842) * lu(k,1230) + lu(k,1232) = lu(k,1232) - lu(k,843) * lu(k,1230) + lu(k,1233) = - lu(k,844) * lu(k,1230) + lu(k,1234) = - lu(k,845) * lu(k,1230) + lu(k,1235) = lu(k,1235) - lu(k,846) * lu(k,1230) + lu(k,1237) = lu(k,1237) - lu(k,847) * lu(k,1230) + lu(k,1238) = lu(k,1238) - lu(k,848) * lu(k,1230) + lu(k,1243) = - lu(k,849) * lu(k,1230) + lu(k,1244) = lu(k,1244) - lu(k,850) * lu(k,1230) + lu(k,1245) = lu(k,1245) - lu(k,851) * lu(k,1230) + lu(k,1246) = lu(k,1246) - lu(k,852) * lu(k,1230) + lu(k,1248) = lu(k,1248) - lu(k,853) * lu(k,1230) + lu(k,1249) = lu(k,1249) - lu(k,854) * lu(k,1230) + lu(k,1400) = lu(k,1400) - lu(k,842) * lu(k,1398) + lu(k,1401) = lu(k,1401) - lu(k,843) * lu(k,1398) + lu(k,1402) = lu(k,1402) - lu(k,844) * lu(k,1398) + lu(k,1403) = lu(k,1403) - lu(k,845) * lu(k,1398) + lu(k,1404) = lu(k,1404) - lu(k,846) * lu(k,1398) + lu(k,1406) = lu(k,1406) - lu(k,847) * lu(k,1398) + lu(k,1407) = lu(k,1407) - lu(k,848) * lu(k,1398) + lu(k,1412) = lu(k,1412) - lu(k,849) * lu(k,1398) + lu(k,1413) = lu(k,1413) - lu(k,850) * lu(k,1398) + lu(k,1414) = lu(k,1414) - lu(k,851) * lu(k,1398) + lu(k,1415) = lu(k,1415) - lu(k,852) * lu(k,1398) + lu(k,1417) = lu(k,1417) - lu(k,853) * lu(k,1398) + lu(k,1418) = lu(k,1418) - lu(k,854) * lu(k,1398) + lu(k,1445) = lu(k,1445) - lu(k,842) * lu(k,1443) + lu(k,1446) = lu(k,1446) - lu(k,843) * lu(k,1443) + lu(k,1447) = lu(k,1447) - lu(k,844) * lu(k,1443) + lu(k,1448) = lu(k,1448) - lu(k,845) * lu(k,1443) + lu(k,1449) = lu(k,1449) - lu(k,846) * lu(k,1443) + lu(k,1451) = lu(k,1451) - lu(k,847) * lu(k,1443) + lu(k,1452) = lu(k,1452) - lu(k,848) * lu(k,1443) + lu(k,1457) = lu(k,1457) - lu(k,849) * lu(k,1443) + lu(k,1458) = lu(k,1458) - lu(k,850) * lu(k,1443) + lu(k,1459) = lu(k,1459) - lu(k,851) * lu(k,1443) + lu(k,1460) = lu(k,1460) - lu(k,852) * lu(k,1443) + lu(k,1462) = lu(k,1462) - lu(k,853) * lu(k,1443) + lu(k,1463) = lu(k,1463) - lu(k,854) * lu(k,1443) + lu(k,1566) = - lu(k,842) * lu(k,1564) + lu(k,1567) = - lu(k,843) * lu(k,1564) + lu(k,1568) = - lu(k,844) * lu(k,1564) + lu(k,1569) = - lu(k,845) * lu(k,1564) + lu(k,1570) = - lu(k,846) * lu(k,1564) + lu(k,1572) = lu(k,1572) - lu(k,847) * lu(k,1564) + lu(k,1573) = - lu(k,848) * lu(k,1564) + lu(k,1578) = lu(k,1578) - lu(k,849) * lu(k,1564) + lu(k,1579) = lu(k,1579) - lu(k,850) * lu(k,1564) + lu(k,1580) = lu(k,1580) - lu(k,851) * lu(k,1564) + lu(k,1581) = - lu(k,852) * lu(k,1564) + lu(k,1583) = lu(k,1583) - lu(k,853) * lu(k,1564) + lu(k,1584) = lu(k,1584) - lu(k,854) * lu(k,1564) + end do + end subroutine lu_fac17 + subroutine lu_fac18( avec_len, lu ) + use chem_mods, only : nzcnt + use shr_kind_mod, only : r8 => shr_kind_r8 + implicit none +!----------------------------------------------------------------------- +! ... dummy args +!----------------------------------------------------------------------- + integer, intent(in) :: avec_len + real(r8), intent(inout) :: lu(veclen,nzcnt) +!----------------------------------------------------------------------- +! ... local variables +!----------------------------------------------------------------------- + integer :: k + do k = 1,avec_len + lu(k,860) = 1._r8 / lu(k,860) + lu(k,861) = lu(k,861) * lu(k,860) + lu(k,862) = lu(k,862) * lu(k,860) + lu(k,863) = lu(k,863) * lu(k,860) + lu(k,864) = lu(k,864) * lu(k,860) + lu(k,865) = lu(k,865) * lu(k,860) + lu(k,866) = lu(k,866) * lu(k,860) + lu(k,867) = lu(k,867) * lu(k,860) + lu(k,868) = lu(k,868) * lu(k,860) + lu(k,869) = lu(k,869) * lu(k,860) + lu(k,870) = lu(k,870) * lu(k,860) + lu(k,871) = lu(k,871) * lu(k,860) + lu(k,872) = lu(k,872) * lu(k,860) + lu(k,930) = lu(k,930) - lu(k,861) * lu(k,929) + lu(k,932) = lu(k,932) - lu(k,862) * lu(k,929) + lu(k,933) = lu(k,933) - lu(k,863) * lu(k,929) + lu(k,934) = lu(k,934) - lu(k,864) * lu(k,929) + lu(k,938) = lu(k,938) - lu(k,865) * lu(k,929) + lu(k,939) = lu(k,939) - lu(k,866) * lu(k,929) + lu(k,940) = - lu(k,867) * lu(k,929) + lu(k,941) = lu(k,941) - lu(k,868) * lu(k,929) + lu(k,942) = lu(k,942) - lu(k,869) * lu(k,929) + lu(k,943) = lu(k,943) - lu(k,870) * lu(k,929) + lu(k,945) = lu(k,945) - lu(k,871) * lu(k,929) + lu(k,946) = lu(k,946) - lu(k,872) * lu(k,929) + lu(k,956) = lu(k,956) - lu(k,861) * lu(k,955) + lu(k,958) = lu(k,958) - lu(k,862) * lu(k,955) + lu(k,959) = lu(k,959) - lu(k,863) * lu(k,955) + lu(k,960) = lu(k,960) - lu(k,864) * lu(k,955) + lu(k,964) = lu(k,964) - lu(k,865) * lu(k,955) + lu(k,966) = lu(k,966) - lu(k,866) * lu(k,955) + lu(k,967) = - lu(k,867) * lu(k,955) + lu(k,968) = lu(k,968) - lu(k,868) * lu(k,955) + lu(k,969) = lu(k,969) - lu(k,869) * lu(k,955) + lu(k,970) = lu(k,970) - lu(k,870) * lu(k,955) + lu(k,972) = lu(k,972) - lu(k,871) * lu(k,955) + lu(k,973) = lu(k,973) - lu(k,872) * lu(k,955) + lu(k,992) = lu(k,992) - lu(k,861) * lu(k,991) + lu(k,994) = lu(k,994) - lu(k,862) * lu(k,991) + lu(k,995) = lu(k,995) - lu(k,863) * lu(k,991) + lu(k,996) = lu(k,996) - lu(k,864) * lu(k,991) + lu(k,1000) = lu(k,1000) - lu(k,865) * lu(k,991) + lu(k,1002) = lu(k,1002) - lu(k,866) * lu(k,991) + lu(k,1003) = lu(k,1003) - lu(k,867) * lu(k,991) + lu(k,1004) = lu(k,1004) - lu(k,868) * lu(k,991) + lu(k,1005) = lu(k,1005) - lu(k,869) * lu(k,991) + lu(k,1006) = lu(k,1006) - lu(k,870) * lu(k,991) + lu(k,1009) = lu(k,1009) - lu(k,871) * lu(k,991) + lu(k,1010) = lu(k,1010) - lu(k,872) * lu(k,991) + lu(k,1016) = lu(k,1016) - lu(k,861) * lu(k,1015) + lu(k,1018) = lu(k,1018) - lu(k,862) * lu(k,1015) + lu(k,1019) = - lu(k,863) * lu(k,1015) + lu(k,1020) = lu(k,1020) - lu(k,864) * lu(k,1015) + lu(k,1024) = lu(k,1024) - lu(k,865) * lu(k,1015) + lu(k,1026) = lu(k,1026) - lu(k,866) * lu(k,1015) + lu(k,1027) = lu(k,1027) - lu(k,867) * lu(k,1015) + lu(k,1028) = lu(k,1028) - lu(k,868) * lu(k,1015) + lu(k,1029) = lu(k,1029) - lu(k,869) * lu(k,1015) + lu(k,1030) = lu(k,1030) - lu(k,870) * lu(k,1015) + lu(k,1033) = lu(k,1033) - lu(k,871) * lu(k,1015) + lu(k,1034) = lu(k,1034) - lu(k,872) * lu(k,1015) + lu(k,1075) = lu(k,1075) - lu(k,861) * lu(k,1074) + lu(k,1077) = lu(k,1077) - lu(k,862) * lu(k,1074) + lu(k,1078) = lu(k,1078) - lu(k,863) * lu(k,1074) + lu(k,1079) = lu(k,1079) - lu(k,864) * lu(k,1074) + lu(k,1083) = lu(k,1083) - lu(k,865) * lu(k,1074) + lu(k,1085) = lu(k,1085) - lu(k,866) * lu(k,1074) + lu(k,1086) = lu(k,1086) - lu(k,867) * lu(k,1074) + lu(k,1087) = lu(k,1087) - lu(k,868) * lu(k,1074) + lu(k,1088) = lu(k,1088) - lu(k,869) * lu(k,1074) + lu(k,1089) = lu(k,1089) - lu(k,870) * lu(k,1074) + lu(k,1092) = lu(k,1092) - lu(k,871) * lu(k,1074) + lu(k,1093) = lu(k,1093) - lu(k,872) * lu(k,1074) + lu(k,1144) = - lu(k,861) * lu(k,1143) + lu(k,1146) = - lu(k,862) * lu(k,1143) + lu(k,1147) = - lu(k,863) * lu(k,1143) + lu(k,1148) = lu(k,1148) - lu(k,864) * lu(k,1143) + lu(k,1152) = lu(k,1152) - lu(k,865) * lu(k,1143) + lu(k,1154) = lu(k,1154) - lu(k,866) * lu(k,1143) + lu(k,1155) = lu(k,1155) - lu(k,867) * lu(k,1143) + lu(k,1156) = lu(k,1156) - lu(k,868) * lu(k,1143) + lu(k,1157) = lu(k,1157) - lu(k,869) * lu(k,1143) + lu(k,1158) = lu(k,1158) - lu(k,870) * lu(k,1143) + lu(k,1161) = lu(k,1161) - lu(k,871) * lu(k,1143) + lu(k,1162) = lu(k,1162) - lu(k,872) * lu(k,1143) + lu(k,1273) = lu(k,1273) - lu(k,861) * lu(k,1272) + lu(k,1275) = lu(k,1275) - lu(k,862) * lu(k,1272) + lu(k,1276) = lu(k,1276) - lu(k,863) * lu(k,1272) + lu(k,1277) = - lu(k,864) * lu(k,1272) + lu(k,1281) = lu(k,1281) - lu(k,865) * lu(k,1272) + lu(k,1283) = lu(k,1283) - lu(k,866) * lu(k,1272) + lu(k,1284) = lu(k,1284) - lu(k,867) * lu(k,1272) + lu(k,1285) = lu(k,1285) - lu(k,868) * lu(k,1272) + lu(k,1286) = lu(k,1286) - lu(k,869) * lu(k,1272) + lu(k,1287) = lu(k,1287) - lu(k,870) * lu(k,1272) + lu(k,1290) = lu(k,1290) - lu(k,871) * lu(k,1272) + lu(k,1291) = lu(k,1291) - lu(k,872) * lu(k,1272) + lu(k,1311) = lu(k,1311) - lu(k,861) * lu(k,1310) + lu(k,1313) = - lu(k,862) * lu(k,1310) + lu(k,1314) = lu(k,1314) - lu(k,863) * lu(k,1310) + lu(k,1315) = lu(k,1315) - lu(k,864) * lu(k,1310) + lu(k,1319) = lu(k,1319) - lu(k,865) * lu(k,1310) + lu(k,1321) = lu(k,1321) - lu(k,866) * lu(k,1310) + lu(k,1322) = lu(k,1322) - lu(k,867) * lu(k,1310) + lu(k,1323) = lu(k,1323) - lu(k,868) * lu(k,1310) + lu(k,1324) = lu(k,1324) - lu(k,869) * lu(k,1310) + lu(k,1325) = lu(k,1325) - lu(k,870) * lu(k,1310) + lu(k,1328) = lu(k,1328) - lu(k,871) * lu(k,1310) + lu(k,1329) = lu(k,1329) - lu(k,872) * lu(k,1310) + lu(k,1400) = lu(k,1400) - lu(k,861) * lu(k,1399) + lu(k,1402) = lu(k,1402) - lu(k,862) * lu(k,1399) + lu(k,1403) = lu(k,1403) - lu(k,863) * lu(k,1399) + lu(k,1404) = lu(k,1404) - lu(k,864) * lu(k,1399) + lu(k,1408) = lu(k,1408) - lu(k,865) * lu(k,1399) + lu(k,1410) = lu(k,1410) - lu(k,866) * lu(k,1399) + lu(k,1411) = lu(k,1411) - lu(k,867) * lu(k,1399) + lu(k,1412) = lu(k,1412) - lu(k,868) * lu(k,1399) + lu(k,1413) = lu(k,1413) - lu(k,869) * lu(k,1399) + lu(k,1414) = lu(k,1414) - lu(k,870) * lu(k,1399) + lu(k,1417) = lu(k,1417) - lu(k,871) * lu(k,1399) + lu(k,1418) = lu(k,1418) - lu(k,872) * lu(k,1399) + lu(k,1445) = lu(k,1445) - lu(k,861) * lu(k,1444) + lu(k,1447) = lu(k,1447) - lu(k,862) * lu(k,1444) + lu(k,1448) = lu(k,1448) - lu(k,863) * lu(k,1444) + lu(k,1449) = lu(k,1449) - lu(k,864) * lu(k,1444) + lu(k,1453) = lu(k,1453) - lu(k,865) * lu(k,1444) + lu(k,1455) = lu(k,1455) - lu(k,866) * lu(k,1444) + lu(k,1456) = lu(k,1456) - lu(k,867) * lu(k,1444) + lu(k,1457) = lu(k,1457) - lu(k,868) * lu(k,1444) + lu(k,1458) = lu(k,1458) - lu(k,869) * lu(k,1444) + lu(k,1459) = lu(k,1459) - lu(k,870) * lu(k,1444) + lu(k,1462) = lu(k,1462) - lu(k,871) * lu(k,1444) + lu(k,1463) = lu(k,1463) - lu(k,872) * lu(k,1444) + lu(k,1518) = - lu(k,861) * lu(k,1517) + lu(k,1520) = - lu(k,862) * lu(k,1517) + lu(k,1521) = - lu(k,863) * lu(k,1517) + lu(k,1522) = lu(k,1522) - lu(k,864) * lu(k,1517) + lu(k,1526) = lu(k,1526) - lu(k,865) * lu(k,1517) + lu(k,1528) = lu(k,1528) - lu(k,866) * lu(k,1517) + lu(k,1529) = lu(k,1529) - lu(k,867) * lu(k,1517) + lu(k,1530) = lu(k,1530) - lu(k,868) * lu(k,1517) + lu(k,1531) = lu(k,1531) - lu(k,869) * lu(k,1517) + lu(k,1532) = lu(k,1532) - lu(k,870) * lu(k,1517) + lu(k,1535) = lu(k,1535) - lu(k,871) * lu(k,1517) + lu(k,1536) = lu(k,1536) - lu(k,872) * lu(k,1517) + lu(k,1539) = - lu(k,861) * lu(k,1538) + lu(k,1541) = - lu(k,862) * lu(k,1538) + lu(k,1542) = - lu(k,863) * lu(k,1538) + lu(k,1543) = - lu(k,864) * lu(k,1538) + lu(k,1547) = lu(k,1547) - lu(k,865) * lu(k,1538) + lu(k,1549) = lu(k,1549) - lu(k,866) * lu(k,1538) + lu(k,1550) = lu(k,1550) - lu(k,867) * lu(k,1538) + lu(k,1551) = lu(k,1551) - lu(k,868) * lu(k,1538) + lu(k,1552) = lu(k,1552) - lu(k,869) * lu(k,1538) + lu(k,1553) = lu(k,1553) - lu(k,870) * lu(k,1538) + lu(k,1556) = lu(k,1556) - lu(k,871) * lu(k,1538) + lu(k,1557) = lu(k,1557) - lu(k,872) * lu(k,1538) + lu(k,1566) = lu(k,1566) - lu(k,861) * lu(k,1565) + lu(k,1568) = lu(k,1568) - lu(k,862) * lu(k,1565) + lu(k,1569) = lu(k,1569) - lu(k,863) * lu(k,1565) + lu(k,1570) = lu(k,1570) - lu(k,864) * lu(k,1565) + lu(k,1574) = lu(k,1574) - lu(k,865) * lu(k,1565) + lu(k,1576) = lu(k,1576) - lu(k,866) * lu(k,1565) + lu(k,1577) = lu(k,1577) - lu(k,867) * lu(k,1565) + lu(k,1578) = lu(k,1578) - lu(k,868) * lu(k,1565) + lu(k,1579) = lu(k,1579) - lu(k,869) * lu(k,1565) + lu(k,1580) = lu(k,1580) - lu(k,870) * lu(k,1565) + lu(k,1583) = lu(k,1583) - lu(k,871) * lu(k,1565) + lu(k,1584) = lu(k,1584) - lu(k,872) * lu(k,1565) + lu(k,876) = 1._r8 / lu(k,876) + lu(k,877) = lu(k,877) * lu(k,876) + lu(k,878) = lu(k,878) * lu(k,876) + lu(k,879) = lu(k,879) * lu(k,876) + lu(k,880) = lu(k,880) * lu(k,876) + lu(k,881) = lu(k,881) * lu(k,876) + lu(k,882) = lu(k,882) * lu(k,876) + lu(k,883) = lu(k,883) * lu(k,876) + lu(k,884) = lu(k,884) * lu(k,876) + lu(k,885) = lu(k,885) * lu(k,876) + lu(k,886) = lu(k,886) * lu(k,876) + lu(k,887) = lu(k,887) * lu(k,876) + lu(k,888) = lu(k,888) * lu(k,876) + lu(k,909) = lu(k,909) - lu(k,877) * lu(k,908) + lu(k,910) = lu(k,910) - lu(k,878) * lu(k,908) + lu(k,912) = lu(k,912) - lu(k,879) * lu(k,908) + lu(k,913) = lu(k,913) - lu(k,880) * lu(k,908) + lu(k,914) = lu(k,914) - lu(k,881) * lu(k,908) + lu(k,915) = lu(k,915) - lu(k,882) * lu(k,908) + lu(k,916) = lu(k,916) - lu(k,883) * lu(k,908) + lu(k,918) = lu(k,918) - lu(k,884) * lu(k,908) + lu(k,919) = lu(k,919) - lu(k,885) * lu(k,908) + lu(k,920) = lu(k,920) - lu(k,886) * lu(k,908) + lu(k,921) = lu(k,921) - lu(k,887) * lu(k,908) + lu(k,922) = lu(k,922) - lu(k,888) * lu(k,908) + lu(k,931) = lu(k,931) - lu(k,877) * lu(k,930) + lu(k,932) = lu(k,932) - lu(k,878) * lu(k,930) + lu(k,934) = lu(k,934) - lu(k,879) * lu(k,930) + lu(k,935) = - lu(k,880) * lu(k,930) + lu(k,936) = lu(k,936) - lu(k,881) * lu(k,930) + lu(k,937) = lu(k,937) - lu(k,882) * lu(k,930) + lu(k,940) = lu(k,940) - lu(k,883) * lu(k,930) + lu(k,942) = lu(k,942) - lu(k,884) * lu(k,930) + lu(k,943) = lu(k,943) - lu(k,885) * lu(k,930) + lu(k,944) = lu(k,944) - lu(k,886) * lu(k,930) + lu(k,945) = lu(k,945) - lu(k,887) * lu(k,930) + lu(k,946) = lu(k,946) - lu(k,888) * lu(k,930) + lu(k,957) = lu(k,957) - lu(k,877) * lu(k,956) + lu(k,958) = lu(k,958) - lu(k,878) * lu(k,956) + lu(k,960) = lu(k,960) - lu(k,879) * lu(k,956) + lu(k,961) = lu(k,961) - lu(k,880) * lu(k,956) + lu(k,962) = lu(k,962) - lu(k,881) * lu(k,956) + lu(k,963) = lu(k,963) - lu(k,882) * lu(k,956) + lu(k,967) = lu(k,967) - lu(k,883) * lu(k,956) + lu(k,969) = lu(k,969) - lu(k,884) * lu(k,956) + lu(k,970) = lu(k,970) - lu(k,885) * lu(k,956) + lu(k,971) = lu(k,971) - lu(k,886) * lu(k,956) + lu(k,972) = lu(k,972) - lu(k,887) * lu(k,956) + lu(k,973) = lu(k,973) - lu(k,888) * lu(k,956) + lu(k,993) = lu(k,993) - lu(k,877) * lu(k,992) + lu(k,994) = lu(k,994) - lu(k,878) * lu(k,992) + lu(k,996) = lu(k,996) - lu(k,879) * lu(k,992) + lu(k,997) = lu(k,997) - lu(k,880) * lu(k,992) + lu(k,998) = lu(k,998) - lu(k,881) * lu(k,992) + lu(k,999) = lu(k,999) - lu(k,882) * lu(k,992) + lu(k,1003) = lu(k,1003) - lu(k,883) * lu(k,992) + lu(k,1005) = lu(k,1005) - lu(k,884) * lu(k,992) + lu(k,1006) = lu(k,1006) - lu(k,885) * lu(k,992) + lu(k,1007) = lu(k,1007) - lu(k,886) * lu(k,992) + lu(k,1009) = lu(k,1009) - lu(k,887) * lu(k,992) + lu(k,1010) = lu(k,1010) - lu(k,888) * lu(k,992) + lu(k,1017) = lu(k,1017) - lu(k,877) * lu(k,1016) + lu(k,1018) = lu(k,1018) - lu(k,878) * lu(k,1016) + lu(k,1020) = lu(k,1020) - lu(k,879) * lu(k,1016) + lu(k,1021) = lu(k,1021) - lu(k,880) * lu(k,1016) + lu(k,1022) = lu(k,1022) - lu(k,881) * lu(k,1016) + lu(k,1023) = - lu(k,882) * lu(k,1016) + lu(k,1027) = lu(k,1027) - lu(k,883) * lu(k,1016) + lu(k,1029) = lu(k,1029) - lu(k,884) * lu(k,1016) + lu(k,1030) = lu(k,1030) - lu(k,885) * lu(k,1016) + lu(k,1031) = lu(k,1031) - lu(k,886) * lu(k,1016) + lu(k,1033) = lu(k,1033) - lu(k,887) * lu(k,1016) + lu(k,1034) = lu(k,1034) - lu(k,888) * lu(k,1016) + lu(k,1076) = lu(k,1076) - lu(k,877) * lu(k,1075) + lu(k,1077) = lu(k,1077) - lu(k,878) * lu(k,1075) + lu(k,1079) = lu(k,1079) - lu(k,879) * lu(k,1075) + lu(k,1080) = lu(k,1080) - lu(k,880) * lu(k,1075) + lu(k,1081) = lu(k,1081) - lu(k,881) * lu(k,1075) + lu(k,1082) = lu(k,1082) - lu(k,882) * lu(k,1075) + lu(k,1086) = lu(k,1086) - lu(k,883) * lu(k,1075) + lu(k,1088) = lu(k,1088) - lu(k,884) * lu(k,1075) + lu(k,1089) = lu(k,1089) - lu(k,885) * lu(k,1075) + lu(k,1090) = lu(k,1090) - lu(k,886) * lu(k,1075) + lu(k,1092) = lu(k,1092) - lu(k,887) * lu(k,1075) + lu(k,1093) = lu(k,1093) - lu(k,888) * lu(k,1075) + lu(k,1122) = lu(k,1122) - lu(k,877) * lu(k,1121) + lu(k,1123) = lu(k,1123) - lu(k,878) * lu(k,1121) + lu(k,1125) = lu(k,1125) - lu(k,879) * lu(k,1121) + lu(k,1126) = lu(k,1126) - lu(k,880) * lu(k,1121) + lu(k,1127) = lu(k,1127) - lu(k,881) * lu(k,1121) + lu(k,1128) = lu(k,1128) - lu(k,882) * lu(k,1121) + lu(k,1132) = lu(k,1132) - lu(k,883) * lu(k,1121) + lu(k,1134) = lu(k,1134) - lu(k,884) * lu(k,1121) + lu(k,1135) = lu(k,1135) - lu(k,885) * lu(k,1121) + lu(k,1136) = lu(k,1136) - lu(k,886) * lu(k,1121) + lu(k,1138) = lu(k,1138) - lu(k,887) * lu(k,1121) + lu(k,1139) = lu(k,1139) - lu(k,888) * lu(k,1121) + lu(k,1145) = - lu(k,877) * lu(k,1144) + lu(k,1146) = lu(k,1146) - lu(k,878) * lu(k,1144) + lu(k,1148) = lu(k,1148) - lu(k,879) * lu(k,1144) + lu(k,1149) = - lu(k,880) * lu(k,1144) + lu(k,1150) = - lu(k,881) * lu(k,1144) + lu(k,1151) = - lu(k,882) * lu(k,1144) + lu(k,1155) = lu(k,1155) - lu(k,883) * lu(k,1144) + lu(k,1157) = lu(k,1157) - lu(k,884) * lu(k,1144) + lu(k,1158) = lu(k,1158) - lu(k,885) * lu(k,1144) + lu(k,1159) = - lu(k,886) * lu(k,1144) + lu(k,1161) = lu(k,1161) - lu(k,887) * lu(k,1144) + lu(k,1162) = lu(k,1162) - lu(k,888) * lu(k,1144) + lu(k,1232) = lu(k,1232) - lu(k,877) * lu(k,1231) + lu(k,1233) = lu(k,1233) - lu(k,878) * lu(k,1231) + lu(k,1235) = lu(k,1235) - lu(k,879) * lu(k,1231) + lu(k,1236) = lu(k,1236) - lu(k,880) * lu(k,1231) + lu(k,1237) = lu(k,1237) - lu(k,881) * lu(k,1231) + lu(k,1238) = lu(k,1238) - lu(k,882) * lu(k,1231) + lu(k,1242) = lu(k,1242) - lu(k,883) * lu(k,1231) + lu(k,1244) = lu(k,1244) - lu(k,884) * lu(k,1231) + lu(k,1245) = lu(k,1245) - lu(k,885) * lu(k,1231) + lu(k,1246) = lu(k,1246) - lu(k,886) * lu(k,1231) + lu(k,1248) = lu(k,1248) - lu(k,887) * lu(k,1231) + lu(k,1249) = lu(k,1249) - lu(k,888) * lu(k,1231) + lu(k,1274) = lu(k,1274) - lu(k,877) * lu(k,1273) + lu(k,1275) = lu(k,1275) - lu(k,878) * lu(k,1273) + lu(k,1277) = lu(k,1277) - lu(k,879) * lu(k,1273) + lu(k,1278) = lu(k,1278) - lu(k,880) * lu(k,1273) + lu(k,1279) = lu(k,1279) - lu(k,881) * lu(k,1273) + lu(k,1280) = lu(k,1280) - lu(k,882) * lu(k,1273) + lu(k,1284) = lu(k,1284) - lu(k,883) * lu(k,1273) + lu(k,1286) = lu(k,1286) - lu(k,884) * lu(k,1273) + lu(k,1287) = lu(k,1287) - lu(k,885) * lu(k,1273) + lu(k,1288) = lu(k,1288) - lu(k,886) * lu(k,1273) + lu(k,1290) = lu(k,1290) - lu(k,887) * lu(k,1273) + lu(k,1291) = lu(k,1291) - lu(k,888) * lu(k,1273) + lu(k,1312) = lu(k,1312) - lu(k,877) * lu(k,1311) + lu(k,1313) = lu(k,1313) - lu(k,878) * lu(k,1311) + lu(k,1315) = lu(k,1315) - lu(k,879) * lu(k,1311) + lu(k,1316) = lu(k,1316) - lu(k,880) * lu(k,1311) + lu(k,1317) = lu(k,1317) - lu(k,881) * lu(k,1311) + lu(k,1318) = lu(k,1318) - lu(k,882) * lu(k,1311) + lu(k,1322) = lu(k,1322) - lu(k,883) * lu(k,1311) + lu(k,1324) = lu(k,1324) - lu(k,884) * lu(k,1311) + lu(k,1325) = lu(k,1325) - lu(k,885) * lu(k,1311) + lu(k,1326) = lu(k,1326) - lu(k,886) * lu(k,1311) + lu(k,1328) = lu(k,1328) - lu(k,887) * lu(k,1311) + lu(k,1329) = lu(k,1329) - lu(k,888) * lu(k,1311) + lu(k,1401) = lu(k,1401) - lu(k,877) * lu(k,1400) + lu(k,1402) = lu(k,1402) - lu(k,878) * lu(k,1400) + lu(k,1404) = lu(k,1404) - lu(k,879) * lu(k,1400) + lu(k,1405) = lu(k,1405) - lu(k,880) * lu(k,1400) + lu(k,1406) = lu(k,1406) - lu(k,881) * lu(k,1400) + lu(k,1407) = lu(k,1407) - lu(k,882) * lu(k,1400) + lu(k,1411) = lu(k,1411) - lu(k,883) * lu(k,1400) + lu(k,1413) = lu(k,1413) - lu(k,884) * lu(k,1400) + lu(k,1414) = lu(k,1414) - lu(k,885) * lu(k,1400) + lu(k,1415) = lu(k,1415) - lu(k,886) * lu(k,1400) + lu(k,1417) = lu(k,1417) - lu(k,887) * lu(k,1400) + lu(k,1418) = lu(k,1418) - lu(k,888) * lu(k,1400) + lu(k,1446) = lu(k,1446) - lu(k,877) * lu(k,1445) + lu(k,1447) = lu(k,1447) - lu(k,878) * lu(k,1445) + lu(k,1449) = lu(k,1449) - lu(k,879) * lu(k,1445) + lu(k,1450) = lu(k,1450) - lu(k,880) * lu(k,1445) + lu(k,1451) = lu(k,1451) - lu(k,881) * lu(k,1445) + lu(k,1452) = lu(k,1452) - lu(k,882) * lu(k,1445) + lu(k,1456) = lu(k,1456) - lu(k,883) * lu(k,1445) + lu(k,1458) = lu(k,1458) - lu(k,884) * lu(k,1445) + lu(k,1459) = lu(k,1459) - lu(k,885) * lu(k,1445) + lu(k,1460) = lu(k,1460) - lu(k,886) * lu(k,1445) + lu(k,1462) = lu(k,1462) - lu(k,887) * lu(k,1445) + lu(k,1463) = lu(k,1463) - lu(k,888) * lu(k,1445) + lu(k,1494) = lu(k,1494) - lu(k,877) * lu(k,1493) + lu(k,1495) = lu(k,1495) - lu(k,878) * lu(k,1493) + lu(k,1497) = lu(k,1497) - lu(k,879) * lu(k,1493) + lu(k,1498) = lu(k,1498) - lu(k,880) * lu(k,1493) + lu(k,1499) = lu(k,1499) - lu(k,881) * lu(k,1493) + lu(k,1500) = lu(k,1500) - lu(k,882) * lu(k,1493) + lu(k,1504) = lu(k,1504) - lu(k,883) * lu(k,1493) + lu(k,1506) = lu(k,1506) - lu(k,884) * lu(k,1493) + lu(k,1507) = lu(k,1507) - lu(k,885) * lu(k,1493) + lu(k,1508) = lu(k,1508) - lu(k,886) * lu(k,1493) + lu(k,1510) = lu(k,1510) - lu(k,887) * lu(k,1493) + lu(k,1511) = lu(k,1511) - lu(k,888) * lu(k,1493) + lu(k,1519) = lu(k,1519) - lu(k,877) * lu(k,1518) + lu(k,1520) = lu(k,1520) - lu(k,878) * lu(k,1518) + lu(k,1522) = lu(k,1522) - lu(k,879) * lu(k,1518) + lu(k,1523) = lu(k,1523) - lu(k,880) * lu(k,1518) + lu(k,1524) = lu(k,1524) - lu(k,881) * lu(k,1518) + lu(k,1525) = - lu(k,882) * lu(k,1518) + lu(k,1529) = lu(k,1529) - lu(k,883) * lu(k,1518) + lu(k,1531) = lu(k,1531) - lu(k,884) * lu(k,1518) + lu(k,1532) = lu(k,1532) - lu(k,885) * lu(k,1518) + lu(k,1533) = lu(k,1533) - lu(k,886) * lu(k,1518) + lu(k,1535) = lu(k,1535) - lu(k,887) * lu(k,1518) + lu(k,1536) = lu(k,1536) - lu(k,888) * lu(k,1518) + lu(k,1540) = lu(k,1540) - lu(k,877) * lu(k,1539) + lu(k,1541) = lu(k,1541) - lu(k,878) * lu(k,1539) + lu(k,1543) = lu(k,1543) - lu(k,879) * lu(k,1539) + lu(k,1544) = - lu(k,880) * lu(k,1539) + lu(k,1545) = lu(k,1545) - lu(k,881) * lu(k,1539) + lu(k,1546) = lu(k,1546) - lu(k,882) * lu(k,1539) + lu(k,1550) = lu(k,1550) - lu(k,883) * lu(k,1539) + lu(k,1552) = lu(k,1552) - lu(k,884) * lu(k,1539) + lu(k,1553) = lu(k,1553) - lu(k,885) * lu(k,1539) + lu(k,1554) = - lu(k,886) * lu(k,1539) + lu(k,1556) = lu(k,1556) - lu(k,887) * lu(k,1539) + lu(k,1557) = lu(k,1557) - lu(k,888) * lu(k,1539) + lu(k,1567) = lu(k,1567) - lu(k,877) * lu(k,1566) + lu(k,1568) = lu(k,1568) - lu(k,878) * lu(k,1566) + lu(k,1570) = lu(k,1570) - lu(k,879) * lu(k,1566) + lu(k,1571) = - lu(k,880) * lu(k,1566) + lu(k,1572) = lu(k,1572) - lu(k,881) * lu(k,1566) + lu(k,1573) = lu(k,1573) - lu(k,882) * lu(k,1566) + lu(k,1577) = lu(k,1577) - lu(k,883) * lu(k,1566) + lu(k,1579) = lu(k,1579) - lu(k,884) * lu(k,1566) + lu(k,1580) = lu(k,1580) - lu(k,885) * lu(k,1566) + lu(k,1581) = lu(k,1581) - lu(k,886) * lu(k,1566) + lu(k,1583) = lu(k,1583) - lu(k,887) * lu(k,1566) + lu(k,1584) = lu(k,1584) - lu(k,888) * lu(k,1566) + end do + end subroutine lu_fac18 + subroutine lu_fac19( avec_len, lu ) + use chem_mods, only : nzcnt + use shr_kind_mod, only : r8 => shr_kind_r8 + implicit none +!----------------------------------------------------------------------- +! ... dummy args +!----------------------------------------------------------------------- + integer, intent(in) :: avec_len + real(r8), intent(inout) :: lu(veclen,nzcnt) +!----------------------------------------------------------------------- +! ... local variables +!----------------------------------------------------------------------- + integer :: k + do k = 1,avec_len + lu(k,909) = 1._r8 / lu(k,909) + lu(k,910) = lu(k,910) * lu(k,909) + lu(k,911) = lu(k,911) * lu(k,909) + lu(k,912) = lu(k,912) * lu(k,909) + lu(k,913) = lu(k,913) * lu(k,909) + lu(k,914) = lu(k,914) * lu(k,909) + lu(k,915) = lu(k,915) * lu(k,909) + lu(k,916) = lu(k,916) * lu(k,909) + lu(k,917) = lu(k,917) * lu(k,909) + lu(k,918) = lu(k,918) * lu(k,909) + lu(k,919) = lu(k,919) * lu(k,909) + lu(k,920) = lu(k,920) * lu(k,909) + lu(k,921) = lu(k,921) * lu(k,909) + lu(k,922) = lu(k,922) * lu(k,909) + lu(k,932) = lu(k,932) - lu(k,910) * lu(k,931) + lu(k,933) = lu(k,933) - lu(k,911) * lu(k,931) + lu(k,934) = lu(k,934) - lu(k,912) * lu(k,931) + lu(k,935) = lu(k,935) - lu(k,913) * lu(k,931) + lu(k,936) = lu(k,936) - lu(k,914) * lu(k,931) + lu(k,937) = lu(k,937) - lu(k,915) * lu(k,931) + lu(k,940) = lu(k,940) - lu(k,916) * lu(k,931) + lu(k,941) = lu(k,941) - lu(k,917) * lu(k,931) + lu(k,942) = lu(k,942) - lu(k,918) * lu(k,931) + lu(k,943) = lu(k,943) - lu(k,919) * lu(k,931) + lu(k,944) = lu(k,944) - lu(k,920) * lu(k,931) + lu(k,945) = lu(k,945) - lu(k,921) * lu(k,931) + lu(k,946) = lu(k,946) - lu(k,922) * lu(k,931) + lu(k,958) = lu(k,958) - lu(k,910) * lu(k,957) + lu(k,959) = lu(k,959) - lu(k,911) * lu(k,957) + lu(k,960) = lu(k,960) - lu(k,912) * lu(k,957) + lu(k,961) = lu(k,961) - lu(k,913) * lu(k,957) + lu(k,962) = lu(k,962) - lu(k,914) * lu(k,957) + lu(k,963) = lu(k,963) - lu(k,915) * lu(k,957) + lu(k,967) = lu(k,967) - lu(k,916) * lu(k,957) + lu(k,968) = lu(k,968) - lu(k,917) * lu(k,957) + lu(k,969) = lu(k,969) - lu(k,918) * lu(k,957) + lu(k,970) = lu(k,970) - lu(k,919) * lu(k,957) + lu(k,971) = lu(k,971) - lu(k,920) * lu(k,957) + lu(k,972) = lu(k,972) - lu(k,921) * lu(k,957) + lu(k,973) = lu(k,973) - lu(k,922) * lu(k,957) + lu(k,994) = lu(k,994) - lu(k,910) * lu(k,993) + lu(k,995) = lu(k,995) - lu(k,911) * lu(k,993) + lu(k,996) = lu(k,996) - lu(k,912) * lu(k,993) + lu(k,997) = lu(k,997) - lu(k,913) * lu(k,993) + lu(k,998) = lu(k,998) - lu(k,914) * lu(k,993) + lu(k,999) = lu(k,999) - lu(k,915) * lu(k,993) + lu(k,1003) = lu(k,1003) - lu(k,916) * lu(k,993) + lu(k,1004) = lu(k,1004) - lu(k,917) * lu(k,993) + lu(k,1005) = lu(k,1005) - lu(k,918) * lu(k,993) + lu(k,1006) = lu(k,1006) - lu(k,919) * lu(k,993) + lu(k,1007) = lu(k,1007) - lu(k,920) * lu(k,993) + lu(k,1009) = lu(k,1009) - lu(k,921) * lu(k,993) + lu(k,1010) = lu(k,1010) - lu(k,922) * lu(k,993) + lu(k,1018) = lu(k,1018) - lu(k,910) * lu(k,1017) + lu(k,1019) = lu(k,1019) - lu(k,911) * lu(k,1017) + lu(k,1020) = lu(k,1020) - lu(k,912) * lu(k,1017) + lu(k,1021) = lu(k,1021) - lu(k,913) * lu(k,1017) + lu(k,1022) = lu(k,1022) - lu(k,914) * lu(k,1017) + lu(k,1023) = lu(k,1023) - lu(k,915) * lu(k,1017) + lu(k,1027) = lu(k,1027) - lu(k,916) * lu(k,1017) + lu(k,1028) = lu(k,1028) - lu(k,917) * lu(k,1017) + lu(k,1029) = lu(k,1029) - lu(k,918) * lu(k,1017) + lu(k,1030) = lu(k,1030) - lu(k,919) * lu(k,1017) + lu(k,1031) = lu(k,1031) - lu(k,920) * lu(k,1017) + lu(k,1033) = lu(k,1033) - lu(k,921) * lu(k,1017) + lu(k,1034) = lu(k,1034) - lu(k,922) * lu(k,1017) + lu(k,1077) = lu(k,1077) - lu(k,910) * lu(k,1076) + lu(k,1078) = lu(k,1078) - lu(k,911) * lu(k,1076) + lu(k,1079) = lu(k,1079) - lu(k,912) * lu(k,1076) + lu(k,1080) = lu(k,1080) - lu(k,913) * lu(k,1076) + lu(k,1081) = lu(k,1081) - lu(k,914) * lu(k,1076) + lu(k,1082) = lu(k,1082) - lu(k,915) * lu(k,1076) + lu(k,1086) = lu(k,1086) - lu(k,916) * lu(k,1076) + lu(k,1087) = lu(k,1087) - lu(k,917) * lu(k,1076) + lu(k,1088) = lu(k,1088) - lu(k,918) * lu(k,1076) + lu(k,1089) = lu(k,1089) - lu(k,919) * lu(k,1076) + lu(k,1090) = lu(k,1090) - lu(k,920) * lu(k,1076) + lu(k,1092) = lu(k,1092) - lu(k,921) * lu(k,1076) + lu(k,1093) = lu(k,1093) - lu(k,922) * lu(k,1076) + lu(k,1123) = lu(k,1123) - lu(k,910) * lu(k,1122) + lu(k,1124) = lu(k,1124) - lu(k,911) * lu(k,1122) + lu(k,1125) = lu(k,1125) - lu(k,912) * lu(k,1122) + lu(k,1126) = lu(k,1126) - lu(k,913) * lu(k,1122) + lu(k,1127) = lu(k,1127) - lu(k,914) * lu(k,1122) + lu(k,1128) = lu(k,1128) - lu(k,915) * lu(k,1122) + lu(k,1132) = lu(k,1132) - lu(k,916) * lu(k,1122) + lu(k,1133) = lu(k,1133) - lu(k,917) * lu(k,1122) + lu(k,1134) = lu(k,1134) - lu(k,918) * lu(k,1122) + lu(k,1135) = lu(k,1135) - lu(k,919) * lu(k,1122) + lu(k,1136) = lu(k,1136) - lu(k,920) * lu(k,1122) + lu(k,1138) = lu(k,1138) - lu(k,921) * lu(k,1122) + lu(k,1139) = lu(k,1139) - lu(k,922) * lu(k,1122) + lu(k,1146) = lu(k,1146) - lu(k,910) * lu(k,1145) + lu(k,1147) = lu(k,1147) - lu(k,911) * lu(k,1145) + lu(k,1148) = lu(k,1148) - lu(k,912) * lu(k,1145) + lu(k,1149) = lu(k,1149) - lu(k,913) * lu(k,1145) + lu(k,1150) = lu(k,1150) - lu(k,914) * lu(k,1145) + lu(k,1151) = lu(k,1151) - lu(k,915) * lu(k,1145) + lu(k,1155) = lu(k,1155) - lu(k,916) * lu(k,1145) + lu(k,1156) = lu(k,1156) - lu(k,917) * lu(k,1145) + lu(k,1157) = lu(k,1157) - lu(k,918) * lu(k,1145) + lu(k,1158) = lu(k,1158) - lu(k,919) * lu(k,1145) + lu(k,1159) = lu(k,1159) - lu(k,920) * lu(k,1145) + lu(k,1161) = lu(k,1161) - lu(k,921) * lu(k,1145) + lu(k,1162) = lu(k,1162) - lu(k,922) * lu(k,1145) + lu(k,1187) = - lu(k,910) * lu(k,1186) + lu(k,1188) = lu(k,1188) - lu(k,911) * lu(k,1186) + lu(k,1189) = lu(k,1189) - lu(k,912) * lu(k,1186) + lu(k,1190) = lu(k,1190) - lu(k,913) * lu(k,1186) + lu(k,1191) = lu(k,1191) - lu(k,914) * lu(k,1186) + lu(k,1192) = lu(k,1192) - lu(k,915) * lu(k,1186) + lu(k,1196) = lu(k,1196) - lu(k,916) * lu(k,1186) + lu(k,1197) = lu(k,1197) - lu(k,917) * lu(k,1186) + lu(k,1198) = lu(k,1198) - lu(k,918) * lu(k,1186) + lu(k,1199) = lu(k,1199) - lu(k,919) * lu(k,1186) + lu(k,1200) = lu(k,1200) - lu(k,920) * lu(k,1186) + lu(k,1202) = lu(k,1202) - lu(k,921) * lu(k,1186) + lu(k,1203) = lu(k,1203) - lu(k,922) * lu(k,1186) + lu(k,1233) = lu(k,1233) - lu(k,910) * lu(k,1232) + lu(k,1234) = lu(k,1234) - lu(k,911) * lu(k,1232) + lu(k,1235) = lu(k,1235) - lu(k,912) * lu(k,1232) + lu(k,1236) = lu(k,1236) - lu(k,913) * lu(k,1232) + lu(k,1237) = lu(k,1237) - lu(k,914) * lu(k,1232) + lu(k,1238) = lu(k,1238) - lu(k,915) * lu(k,1232) + lu(k,1242) = lu(k,1242) - lu(k,916) * lu(k,1232) + lu(k,1243) = lu(k,1243) - lu(k,917) * lu(k,1232) + lu(k,1244) = lu(k,1244) - lu(k,918) * lu(k,1232) + lu(k,1245) = lu(k,1245) - lu(k,919) * lu(k,1232) + lu(k,1246) = lu(k,1246) - lu(k,920) * lu(k,1232) + lu(k,1248) = lu(k,1248) - lu(k,921) * lu(k,1232) + lu(k,1249) = lu(k,1249) - lu(k,922) * lu(k,1232) + lu(k,1275) = lu(k,1275) - lu(k,910) * lu(k,1274) + lu(k,1276) = lu(k,1276) - lu(k,911) * lu(k,1274) + lu(k,1277) = lu(k,1277) - lu(k,912) * lu(k,1274) + lu(k,1278) = lu(k,1278) - lu(k,913) * lu(k,1274) + lu(k,1279) = lu(k,1279) - lu(k,914) * lu(k,1274) + lu(k,1280) = lu(k,1280) - lu(k,915) * lu(k,1274) + lu(k,1284) = lu(k,1284) - lu(k,916) * lu(k,1274) + lu(k,1285) = lu(k,1285) - lu(k,917) * lu(k,1274) + lu(k,1286) = lu(k,1286) - lu(k,918) * lu(k,1274) + lu(k,1287) = lu(k,1287) - lu(k,919) * lu(k,1274) + lu(k,1288) = lu(k,1288) - lu(k,920) * lu(k,1274) + lu(k,1290) = lu(k,1290) - lu(k,921) * lu(k,1274) + lu(k,1291) = lu(k,1291) - lu(k,922) * lu(k,1274) + lu(k,1313) = lu(k,1313) - lu(k,910) * lu(k,1312) + lu(k,1314) = lu(k,1314) - lu(k,911) * lu(k,1312) + lu(k,1315) = lu(k,1315) - lu(k,912) * lu(k,1312) + lu(k,1316) = lu(k,1316) - lu(k,913) * lu(k,1312) + lu(k,1317) = lu(k,1317) - lu(k,914) * lu(k,1312) + lu(k,1318) = lu(k,1318) - lu(k,915) * lu(k,1312) + lu(k,1322) = lu(k,1322) - lu(k,916) * lu(k,1312) + lu(k,1323) = lu(k,1323) - lu(k,917) * lu(k,1312) + lu(k,1324) = lu(k,1324) - lu(k,918) * lu(k,1312) + lu(k,1325) = lu(k,1325) - lu(k,919) * lu(k,1312) + lu(k,1326) = lu(k,1326) - lu(k,920) * lu(k,1312) + lu(k,1328) = lu(k,1328) - lu(k,921) * lu(k,1312) + lu(k,1329) = lu(k,1329) - lu(k,922) * lu(k,1312) + lu(k,1402) = lu(k,1402) - lu(k,910) * lu(k,1401) + lu(k,1403) = lu(k,1403) - lu(k,911) * lu(k,1401) + lu(k,1404) = lu(k,1404) - lu(k,912) * lu(k,1401) + lu(k,1405) = lu(k,1405) - lu(k,913) * lu(k,1401) + lu(k,1406) = lu(k,1406) - lu(k,914) * lu(k,1401) + lu(k,1407) = lu(k,1407) - lu(k,915) * lu(k,1401) + lu(k,1411) = lu(k,1411) - lu(k,916) * lu(k,1401) + lu(k,1412) = lu(k,1412) - lu(k,917) * lu(k,1401) + lu(k,1413) = lu(k,1413) - lu(k,918) * lu(k,1401) + lu(k,1414) = lu(k,1414) - lu(k,919) * lu(k,1401) + lu(k,1415) = lu(k,1415) - lu(k,920) * lu(k,1401) + lu(k,1417) = lu(k,1417) - lu(k,921) * lu(k,1401) + lu(k,1418) = lu(k,1418) - lu(k,922) * lu(k,1401) + lu(k,1447) = lu(k,1447) - lu(k,910) * lu(k,1446) + lu(k,1448) = lu(k,1448) - lu(k,911) * lu(k,1446) + lu(k,1449) = lu(k,1449) - lu(k,912) * lu(k,1446) + lu(k,1450) = lu(k,1450) - lu(k,913) * lu(k,1446) + lu(k,1451) = lu(k,1451) - lu(k,914) * lu(k,1446) + lu(k,1452) = lu(k,1452) - lu(k,915) * lu(k,1446) + lu(k,1456) = lu(k,1456) - lu(k,916) * lu(k,1446) + lu(k,1457) = lu(k,1457) - lu(k,917) * lu(k,1446) + lu(k,1458) = lu(k,1458) - lu(k,918) * lu(k,1446) + lu(k,1459) = lu(k,1459) - lu(k,919) * lu(k,1446) + lu(k,1460) = lu(k,1460) - lu(k,920) * lu(k,1446) + lu(k,1462) = lu(k,1462) - lu(k,921) * lu(k,1446) + lu(k,1463) = lu(k,1463) - lu(k,922) * lu(k,1446) + lu(k,1495) = lu(k,1495) - lu(k,910) * lu(k,1494) + lu(k,1496) = lu(k,1496) - lu(k,911) * lu(k,1494) + lu(k,1497) = lu(k,1497) - lu(k,912) * lu(k,1494) + lu(k,1498) = lu(k,1498) - lu(k,913) * lu(k,1494) + lu(k,1499) = lu(k,1499) - lu(k,914) * lu(k,1494) + lu(k,1500) = lu(k,1500) - lu(k,915) * lu(k,1494) + lu(k,1504) = lu(k,1504) - lu(k,916) * lu(k,1494) + lu(k,1505) = lu(k,1505) - lu(k,917) * lu(k,1494) + lu(k,1506) = lu(k,1506) - lu(k,918) * lu(k,1494) + lu(k,1507) = lu(k,1507) - lu(k,919) * lu(k,1494) + lu(k,1508) = lu(k,1508) - lu(k,920) * lu(k,1494) + lu(k,1510) = lu(k,1510) - lu(k,921) * lu(k,1494) + lu(k,1511) = lu(k,1511) - lu(k,922) * lu(k,1494) + lu(k,1520) = lu(k,1520) - lu(k,910) * lu(k,1519) + lu(k,1521) = lu(k,1521) - lu(k,911) * lu(k,1519) + lu(k,1522) = lu(k,1522) - lu(k,912) * lu(k,1519) + lu(k,1523) = lu(k,1523) - lu(k,913) * lu(k,1519) + lu(k,1524) = lu(k,1524) - lu(k,914) * lu(k,1519) + lu(k,1525) = lu(k,1525) - lu(k,915) * lu(k,1519) + lu(k,1529) = lu(k,1529) - lu(k,916) * lu(k,1519) + lu(k,1530) = lu(k,1530) - lu(k,917) * lu(k,1519) + lu(k,1531) = lu(k,1531) - lu(k,918) * lu(k,1519) + lu(k,1532) = lu(k,1532) - lu(k,919) * lu(k,1519) + lu(k,1533) = lu(k,1533) - lu(k,920) * lu(k,1519) + lu(k,1535) = lu(k,1535) - lu(k,921) * lu(k,1519) + lu(k,1536) = lu(k,1536) - lu(k,922) * lu(k,1519) + lu(k,1541) = lu(k,1541) - lu(k,910) * lu(k,1540) + lu(k,1542) = lu(k,1542) - lu(k,911) * lu(k,1540) + lu(k,1543) = lu(k,1543) - lu(k,912) * lu(k,1540) + lu(k,1544) = lu(k,1544) - lu(k,913) * lu(k,1540) + lu(k,1545) = lu(k,1545) - lu(k,914) * lu(k,1540) + lu(k,1546) = lu(k,1546) - lu(k,915) * lu(k,1540) + lu(k,1550) = lu(k,1550) - lu(k,916) * lu(k,1540) + lu(k,1551) = lu(k,1551) - lu(k,917) * lu(k,1540) + lu(k,1552) = lu(k,1552) - lu(k,918) * lu(k,1540) + lu(k,1553) = lu(k,1553) - lu(k,919) * lu(k,1540) + lu(k,1554) = lu(k,1554) - lu(k,920) * lu(k,1540) + lu(k,1556) = lu(k,1556) - lu(k,921) * lu(k,1540) + lu(k,1557) = lu(k,1557) - lu(k,922) * lu(k,1540) + lu(k,1568) = lu(k,1568) - lu(k,910) * lu(k,1567) + lu(k,1569) = lu(k,1569) - lu(k,911) * lu(k,1567) + lu(k,1570) = lu(k,1570) - lu(k,912) * lu(k,1567) + lu(k,1571) = lu(k,1571) - lu(k,913) * lu(k,1567) + lu(k,1572) = lu(k,1572) - lu(k,914) * lu(k,1567) + lu(k,1573) = lu(k,1573) - lu(k,915) * lu(k,1567) + lu(k,1577) = lu(k,1577) - lu(k,916) * lu(k,1567) + lu(k,1578) = lu(k,1578) - lu(k,917) * lu(k,1567) + lu(k,1579) = lu(k,1579) - lu(k,918) * lu(k,1567) + lu(k,1580) = lu(k,1580) - lu(k,919) * lu(k,1567) + lu(k,1581) = lu(k,1581) - lu(k,920) * lu(k,1567) + lu(k,1583) = lu(k,1583) - lu(k,921) * lu(k,1567) + lu(k,1584) = lu(k,1584) - lu(k,922) * lu(k,1567) + lu(k,932) = 1._r8 / lu(k,932) + lu(k,933) = lu(k,933) * lu(k,932) + lu(k,934) = lu(k,934) * lu(k,932) + lu(k,935) = lu(k,935) * lu(k,932) + lu(k,936) = lu(k,936) * lu(k,932) + lu(k,937) = lu(k,937) * lu(k,932) + lu(k,938) = lu(k,938) * lu(k,932) + lu(k,939) = lu(k,939) * lu(k,932) + lu(k,940) = lu(k,940) * lu(k,932) + lu(k,941) = lu(k,941) * lu(k,932) + lu(k,942) = lu(k,942) * lu(k,932) + lu(k,943) = lu(k,943) * lu(k,932) + lu(k,944) = lu(k,944) * lu(k,932) + lu(k,945) = lu(k,945) * lu(k,932) + lu(k,946) = lu(k,946) * lu(k,932) + lu(k,959) = lu(k,959) - lu(k,933) * lu(k,958) + lu(k,960) = lu(k,960) - lu(k,934) * lu(k,958) + lu(k,961) = lu(k,961) - lu(k,935) * lu(k,958) + lu(k,962) = lu(k,962) - lu(k,936) * lu(k,958) + lu(k,963) = lu(k,963) - lu(k,937) * lu(k,958) + lu(k,964) = lu(k,964) - lu(k,938) * lu(k,958) + lu(k,966) = lu(k,966) - lu(k,939) * lu(k,958) + lu(k,967) = lu(k,967) - lu(k,940) * lu(k,958) + lu(k,968) = lu(k,968) - lu(k,941) * lu(k,958) + lu(k,969) = lu(k,969) - lu(k,942) * lu(k,958) + lu(k,970) = lu(k,970) - lu(k,943) * lu(k,958) + lu(k,971) = lu(k,971) - lu(k,944) * lu(k,958) + lu(k,972) = lu(k,972) - lu(k,945) * lu(k,958) + lu(k,973) = lu(k,973) - lu(k,946) * lu(k,958) + lu(k,995) = lu(k,995) - lu(k,933) * lu(k,994) + lu(k,996) = lu(k,996) - lu(k,934) * lu(k,994) + lu(k,997) = lu(k,997) - lu(k,935) * lu(k,994) + lu(k,998) = lu(k,998) - lu(k,936) * lu(k,994) + lu(k,999) = lu(k,999) - lu(k,937) * lu(k,994) + lu(k,1000) = lu(k,1000) - lu(k,938) * lu(k,994) + lu(k,1002) = lu(k,1002) - lu(k,939) * lu(k,994) + lu(k,1003) = lu(k,1003) - lu(k,940) * lu(k,994) + lu(k,1004) = lu(k,1004) - lu(k,941) * lu(k,994) + lu(k,1005) = lu(k,1005) - lu(k,942) * lu(k,994) + lu(k,1006) = lu(k,1006) - lu(k,943) * lu(k,994) + lu(k,1007) = lu(k,1007) - lu(k,944) * lu(k,994) + lu(k,1009) = lu(k,1009) - lu(k,945) * lu(k,994) + lu(k,1010) = lu(k,1010) - lu(k,946) * lu(k,994) + lu(k,1019) = lu(k,1019) - lu(k,933) * lu(k,1018) + lu(k,1020) = lu(k,1020) - lu(k,934) * lu(k,1018) + lu(k,1021) = lu(k,1021) - lu(k,935) * lu(k,1018) + lu(k,1022) = lu(k,1022) - lu(k,936) * lu(k,1018) + lu(k,1023) = lu(k,1023) - lu(k,937) * lu(k,1018) + lu(k,1024) = lu(k,1024) - lu(k,938) * lu(k,1018) + lu(k,1026) = lu(k,1026) - lu(k,939) * lu(k,1018) + lu(k,1027) = lu(k,1027) - lu(k,940) * lu(k,1018) + lu(k,1028) = lu(k,1028) - lu(k,941) * lu(k,1018) + lu(k,1029) = lu(k,1029) - lu(k,942) * lu(k,1018) + lu(k,1030) = lu(k,1030) - lu(k,943) * lu(k,1018) + lu(k,1031) = lu(k,1031) - lu(k,944) * lu(k,1018) + lu(k,1033) = lu(k,1033) - lu(k,945) * lu(k,1018) + lu(k,1034) = lu(k,1034) - lu(k,946) * lu(k,1018) + lu(k,1078) = lu(k,1078) - lu(k,933) * lu(k,1077) + lu(k,1079) = lu(k,1079) - lu(k,934) * lu(k,1077) + lu(k,1080) = lu(k,1080) - lu(k,935) * lu(k,1077) + lu(k,1081) = lu(k,1081) - lu(k,936) * lu(k,1077) + lu(k,1082) = lu(k,1082) - lu(k,937) * lu(k,1077) + lu(k,1083) = lu(k,1083) - lu(k,938) * lu(k,1077) + lu(k,1085) = lu(k,1085) - lu(k,939) * lu(k,1077) + lu(k,1086) = lu(k,1086) - lu(k,940) * lu(k,1077) + lu(k,1087) = lu(k,1087) - lu(k,941) * lu(k,1077) + lu(k,1088) = lu(k,1088) - lu(k,942) * lu(k,1077) + lu(k,1089) = lu(k,1089) - lu(k,943) * lu(k,1077) + lu(k,1090) = lu(k,1090) - lu(k,944) * lu(k,1077) + lu(k,1092) = lu(k,1092) - lu(k,945) * lu(k,1077) + lu(k,1093) = lu(k,1093) - lu(k,946) * lu(k,1077) + lu(k,1124) = lu(k,1124) - lu(k,933) * lu(k,1123) + lu(k,1125) = lu(k,1125) - lu(k,934) * lu(k,1123) + lu(k,1126) = lu(k,1126) - lu(k,935) * lu(k,1123) + lu(k,1127) = lu(k,1127) - lu(k,936) * lu(k,1123) + lu(k,1128) = lu(k,1128) - lu(k,937) * lu(k,1123) + lu(k,1129) = lu(k,1129) - lu(k,938) * lu(k,1123) + lu(k,1131) = lu(k,1131) - lu(k,939) * lu(k,1123) + lu(k,1132) = lu(k,1132) - lu(k,940) * lu(k,1123) + lu(k,1133) = lu(k,1133) - lu(k,941) * lu(k,1123) + lu(k,1134) = lu(k,1134) - lu(k,942) * lu(k,1123) + lu(k,1135) = lu(k,1135) - lu(k,943) * lu(k,1123) + lu(k,1136) = lu(k,1136) - lu(k,944) * lu(k,1123) + lu(k,1138) = lu(k,1138) - lu(k,945) * lu(k,1123) + lu(k,1139) = lu(k,1139) - lu(k,946) * lu(k,1123) + lu(k,1147) = lu(k,1147) - lu(k,933) * lu(k,1146) + lu(k,1148) = lu(k,1148) - lu(k,934) * lu(k,1146) + lu(k,1149) = lu(k,1149) - lu(k,935) * lu(k,1146) + lu(k,1150) = lu(k,1150) - lu(k,936) * lu(k,1146) + lu(k,1151) = lu(k,1151) - lu(k,937) * lu(k,1146) + lu(k,1152) = lu(k,1152) - lu(k,938) * lu(k,1146) + lu(k,1154) = lu(k,1154) - lu(k,939) * lu(k,1146) + lu(k,1155) = lu(k,1155) - lu(k,940) * lu(k,1146) + lu(k,1156) = lu(k,1156) - lu(k,941) * lu(k,1146) + lu(k,1157) = lu(k,1157) - lu(k,942) * lu(k,1146) + lu(k,1158) = lu(k,1158) - lu(k,943) * lu(k,1146) + lu(k,1159) = lu(k,1159) - lu(k,944) * lu(k,1146) + lu(k,1161) = lu(k,1161) - lu(k,945) * lu(k,1146) + lu(k,1162) = lu(k,1162) - lu(k,946) * lu(k,1146) + lu(k,1188) = lu(k,1188) - lu(k,933) * lu(k,1187) + lu(k,1189) = lu(k,1189) - lu(k,934) * lu(k,1187) + lu(k,1190) = lu(k,1190) - lu(k,935) * lu(k,1187) + lu(k,1191) = lu(k,1191) - lu(k,936) * lu(k,1187) + lu(k,1192) = lu(k,1192) - lu(k,937) * lu(k,1187) + lu(k,1193) = lu(k,1193) - lu(k,938) * lu(k,1187) + lu(k,1195) = lu(k,1195) - lu(k,939) * lu(k,1187) + lu(k,1196) = lu(k,1196) - lu(k,940) * lu(k,1187) + lu(k,1197) = lu(k,1197) - lu(k,941) * lu(k,1187) + lu(k,1198) = lu(k,1198) - lu(k,942) * lu(k,1187) + lu(k,1199) = lu(k,1199) - lu(k,943) * lu(k,1187) + lu(k,1200) = lu(k,1200) - lu(k,944) * lu(k,1187) + lu(k,1202) = lu(k,1202) - lu(k,945) * lu(k,1187) + lu(k,1203) = lu(k,1203) - lu(k,946) * lu(k,1187) + lu(k,1234) = lu(k,1234) - lu(k,933) * lu(k,1233) + lu(k,1235) = lu(k,1235) - lu(k,934) * lu(k,1233) + lu(k,1236) = lu(k,1236) - lu(k,935) * lu(k,1233) + lu(k,1237) = lu(k,1237) - lu(k,936) * lu(k,1233) + lu(k,1238) = lu(k,1238) - lu(k,937) * lu(k,1233) + lu(k,1239) = lu(k,1239) - lu(k,938) * lu(k,1233) + lu(k,1241) = lu(k,1241) - lu(k,939) * lu(k,1233) + lu(k,1242) = lu(k,1242) - lu(k,940) * lu(k,1233) + lu(k,1243) = lu(k,1243) - lu(k,941) * lu(k,1233) + lu(k,1244) = lu(k,1244) - lu(k,942) * lu(k,1233) + lu(k,1245) = lu(k,1245) - lu(k,943) * lu(k,1233) + lu(k,1246) = lu(k,1246) - lu(k,944) * lu(k,1233) + lu(k,1248) = lu(k,1248) - lu(k,945) * lu(k,1233) + lu(k,1249) = lu(k,1249) - lu(k,946) * lu(k,1233) + lu(k,1276) = lu(k,1276) - lu(k,933) * lu(k,1275) + lu(k,1277) = lu(k,1277) - lu(k,934) * lu(k,1275) + lu(k,1278) = lu(k,1278) - lu(k,935) * lu(k,1275) + lu(k,1279) = lu(k,1279) - lu(k,936) * lu(k,1275) + lu(k,1280) = lu(k,1280) - lu(k,937) * lu(k,1275) + lu(k,1281) = lu(k,1281) - lu(k,938) * lu(k,1275) + lu(k,1283) = lu(k,1283) - lu(k,939) * lu(k,1275) + lu(k,1284) = lu(k,1284) - lu(k,940) * lu(k,1275) + lu(k,1285) = lu(k,1285) - lu(k,941) * lu(k,1275) + lu(k,1286) = lu(k,1286) - lu(k,942) * lu(k,1275) + lu(k,1287) = lu(k,1287) - lu(k,943) * lu(k,1275) + lu(k,1288) = lu(k,1288) - lu(k,944) * lu(k,1275) + lu(k,1290) = lu(k,1290) - lu(k,945) * lu(k,1275) + lu(k,1291) = lu(k,1291) - lu(k,946) * lu(k,1275) + lu(k,1314) = lu(k,1314) - lu(k,933) * lu(k,1313) + lu(k,1315) = lu(k,1315) - lu(k,934) * lu(k,1313) + lu(k,1316) = lu(k,1316) - lu(k,935) * lu(k,1313) + lu(k,1317) = lu(k,1317) - lu(k,936) * lu(k,1313) + lu(k,1318) = lu(k,1318) - lu(k,937) * lu(k,1313) + lu(k,1319) = lu(k,1319) - lu(k,938) * lu(k,1313) + lu(k,1321) = lu(k,1321) - lu(k,939) * lu(k,1313) + lu(k,1322) = lu(k,1322) - lu(k,940) * lu(k,1313) + lu(k,1323) = lu(k,1323) - lu(k,941) * lu(k,1313) + lu(k,1324) = lu(k,1324) - lu(k,942) * lu(k,1313) + lu(k,1325) = lu(k,1325) - lu(k,943) * lu(k,1313) + lu(k,1326) = lu(k,1326) - lu(k,944) * lu(k,1313) + lu(k,1328) = lu(k,1328) - lu(k,945) * lu(k,1313) + lu(k,1329) = lu(k,1329) - lu(k,946) * lu(k,1313) + lu(k,1403) = lu(k,1403) - lu(k,933) * lu(k,1402) + lu(k,1404) = lu(k,1404) - lu(k,934) * lu(k,1402) + lu(k,1405) = lu(k,1405) - lu(k,935) * lu(k,1402) + lu(k,1406) = lu(k,1406) - lu(k,936) * lu(k,1402) + lu(k,1407) = lu(k,1407) - lu(k,937) * lu(k,1402) + lu(k,1408) = lu(k,1408) - lu(k,938) * lu(k,1402) + lu(k,1410) = lu(k,1410) - lu(k,939) * lu(k,1402) + lu(k,1411) = lu(k,1411) - lu(k,940) * lu(k,1402) + lu(k,1412) = lu(k,1412) - lu(k,941) * lu(k,1402) + lu(k,1413) = lu(k,1413) - lu(k,942) * lu(k,1402) + lu(k,1414) = lu(k,1414) - lu(k,943) * lu(k,1402) + lu(k,1415) = lu(k,1415) - lu(k,944) * lu(k,1402) + lu(k,1417) = lu(k,1417) - lu(k,945) * lu(k,1402) + lu(k,1418) = lu(k,1418) - lu(k,946) * lu(k,1402) + lu(k,1448) = lu(k,1448) - lu(k,933) * lu(k,1447) + lu(k,1449) = lu(k,1449) - lu(k,934) * lu(k,1447) + lu(k,1450) = lu(k,1450) - lu(k,935) * lu(k,1447) + lu(k,1451) = lu(k,1451) - lu(k,936) * lu(k,1447) + lu(k,1452) = lu(k,1452) - lu(k,937) * lu(k,1447) + lu(k,1453) = lu(k,1453) - lu(k,938) * lu(k,1447) + lu(k,1455) = lu(k,1455) - lu(k,939) * lu(k,1447) + lu(k,1456) = lu(k,1456) - lu(k,940) * lu(k,1447) + lu(k,1457) = lu(k,1457) - lu(k,941) * lu(k,1447) + lu(k,1458) = lu(k,1458) - lu(k,942) * lu(k,1447) + lu(k,1459) = lu(k,1459) - lu(k,943) * lu(k,1447) + lu(k,1460) = lu(k,1460) - lu(k,944) * lu(k,1447) + lu(k,1462) = lu(k,1462) - lu(k,945) * lu(k,1447) + lu(k,1463) = lu(k,1463) - lu(k,946) * lu(k,1447) + lu(k,1496) = lu(k,1496) - lu(k,933) * lu(k,1495) + lu(k,1497) = lu(k,1497) - lu(k,934) * lu(k,1495) + lu(k,1498) = lu(k,1498) - lu(k,935) * lu(k,1495) + lu(k,1499) = lu(k,1499) - lu(k,936) * lu(k,1495) + lu(k,1500) = lu(k,1500) - lu(k,937) * lu(k,1495) + lu(k,1501) = lu(k,1501) - lu(k,938) * lu(k,1495) + lu(k,1503) = lu(k,1503) - lu(k,939) * lu(k,1495) + lu(k,1504) = lu(k,1504) - lu(k,940) * lu(k,1495) + lu(k,1505) = lu(k,1505) - lu(k,941) * lu(k,1495) + lu(k,1506) = lu(k,1506) - lu(k,942) * lu(k,1495) + lu(k,1507) = lu(k,1507) - lu(k,943) * lu(k,1495) + lu(k,1508) = lu(k,1508) - lu(k,944) * lu(k,1495) + lu(k,1510) = lu(k,1510) - lu(k,945) * lu(k,1495) + lu(k,1511) = lu(k,1511) - lu(k,946) * lu(k,1495) + lu(k,1521) = lu(k,1521) - lu(k,933) * lu(k,1520) + lu(k,1522) = lu(k,1522) - lu(k,934) * lu(k,1520) + lu(k,1523) = lu(k,1523) - lu(k,935) * lu(k,1520) + lu(k,1524) = lu(k,1524) - lu(k,936) * lu(k,1520) + lu(k,1525) = lu(k,1525) - lu(k,937) * lu(k,1520) + lu(k,1526) = lu(k,1526) - lu(k,938) * lu(k,1520) + lu(k,1528) = lu(k,1528) - lu(k,939) * lu(k,1520) + lu(k,1529) = lu(k,1529) - lu(k,940) * lu(k,1520) + lu(k,1530) = lu(k,1530) - lu(k,941) * lu(k,1520) + lu(k,1531) = lu(k,1531) - lu(k,942) * lu(k,1520) + lu(k,1532) = lu(k,1532) - lu(k,943) * lu(k,1520) + lu(k,1533) = lu(k,1533) - lu(k,944) * lu(k,1520) + lu(k,1535) = lu(k,1535) - lu(k,945) * lu(k,1520) + lu(k,1536) = lu(k,1536) - lu(k,946) * lu(k,1520) + lu(k,1542) = lu(k,1542) - lu(k,933) * lu(k,1541) + lu(k,1543) = lu(k,1543) - lu(k,934) * lu(k,1541) + lu(k,1544) = lu(k,1544) - lu(k,935) * lu(k,1541) + lu(k,1545) = lu(k,1545) - lu(k,936) * lu(k,1541) + lu(k,1546) = lu(k,1546) - lu(k,937) * lu(k,1541) + lu(k,1547) = lu(k,1547) - lu(k,938) * lu(k,1541) + lu(k,1549) = lu(k,1549) - lu(k,939) * lu(k,1541) + lu(k,1550) = lu(k,1550) - lu(k,940) * lu(k,1541) + lu(k,1551) = lu(k,1551) - lu(k,941) * lu(k,1541) + lu(k,1552) = lu(k,1552) - lu(k,942) * lu(k,1541) + lu(k,1553) = lu(k,1553) - lu(k,943) * lu(k,1541) + lu(k,1554) = lu(k,1554) - lu(k,944) * lu(k,1541) + lu(k,1556) = lu(k,1556) - lu(k,945) * lu(k,1541) + lu(k,1557) = lu(k,1557) - lu(k,946) * lu(k,1541) + lu(k,1569) = lu(k,1569) - lu(k,933) * lu(k,1568) + lu(k,1570) = lu(k,1570) - lu(k,934) * lu(k,1568) + lu(k,1571) = lu(k,1571) - lu(k,935) * lu(k,1568) + lu(k,1572) = lu(k,1572) - lu(k,936) * lu(k,1568) + lu(k,1573) = lu(k,1573) - lu(k,937) * lu(k,1568) + lu(k,1574) = lu(k,1574) - lu(k,938) * lu(k,1568) + lu(k,1576) = lu(k,1576) - lu(k,939) * lu(k,1568) + lu(k,1577) = lu(k,1577) - lu(k,940) * lu(k,1568) + lu(k,1578) = lu(k,1578) - lu(k,941) * lu(k,1568) + lu(k,1579) = lu(k,1579) - lu(k,942) * lu(k,1568) + lu(k,1580) = lu(k,1580) - lu(k,943) * lu(k,1568) + lu(k,1581) = lu(k,1581) - lu(k,944) * lu(k,1568) + lu(k,1583) = lu(k,1583) - lu(k,945) * lu(k,1568) + lu(k,1584) = lu(k,1584) - lu(k,946) * lu(k,1568) + lu(k,959) = 1._r8 / lu(k,959) + lu(k,960) = lu(k,960) * lu(k,959) + lu(k,961) = lu(k,961) * lu(k,959) + lu(k,962) = lu(k,962) * lu(k,959) + lu(k,963) = lu(k,963) * lu(k,959) + lu(k,964) = lu(k,964) * lu(k,959) + lu(k,965) = lu(k,965) * lu(k,959) + lu(k,966) = lu(k,966) * lu(k,959) + lu(k,967) = lu(k,967) * lu(k,959) + lu(k,968) = lu(k,968) * lu(k,959) + lu(k,969) = lu(k,969) * lu(k,959) + lu(k,970) = lu(k,970) * lu(k,959) + lu(k,971) = lu(k,971) * lu(k,959) + lu(k,972) = lu(k,972) * lu(k,959) + lu(k,973) = lu(k,973) * lu(k,959) + lu(k,996) = lu(k,996) - lu(k,960) * lu(k,995) + lu(k,997) = lu(k,997) - lu(k,961) * lu(k,995) + lu(k,998) = lu(k,998) - lu(k,962) * lu(k,995) + lu(k,999) = lu(k,999) - lu(k,963) * lu(k,995) + lu(k,1000) = lu(k,1000) - lu(k,964) * lu(k,995) + lu(k,1001) = lu(k,1001) - lu(k,965) * lu(k,995) + lu(k,1002) = lu(k,1002) - lu(k,966) * lu(k,995) + lu(k,1003) = lu(k,1003) - lu(k,967) * lu(k,995) + lu(k,1004) = lu(k,1004) - lu(k,968) * lu(k,995) + lu(k,1005) = lu(k,1005) - lu(k,969) * lu(k,995) + lu(k,1006) = lu(k,1006) - lu(k,970) * lu(k,995) + lu(k,1007) = lu(k,1007) - lu(k,971) * lu(k,995) + lu(k,1009) = lu(k,1009) - lu(k,972) * lu(k,995) + lu(k,1010) = lu(k,1010) - lu(k,973) * lu(k,995) + lu(k,1020) = lu(k,1020) - lu(k,960) * lu(k,1019) + lu(k,1021) = lu(k,1021) - lu(k,961) * lu(k,1019) + lu(k,1022) = lu(k,1022) - lu(k,962) * lu(k,1019) + lu(k,1023) = lu(k,1023) - lu(k,963) * lu(k,1019) + lu(k,1024) = lu(k,1024) - lu(k,964) * lu(k,1019) + lu(k,1025) = lu(k,1025) - lu(k,965) * lu(k,1019) + lu(k,1026) = lu(k,1026) - lu(k,966) * lu(k,1019) + lu(k,1027) = lu(k,1027) - lu(k,967) * lu(k,1019) + lu(k,1028) = lu(k,1028) - lu(k,968) * lu(k,1019) + lu(k,1029) = lu(k,1029) - lu(k,969) * lu(k,1019) + lu(k,1030) = lu(k,1030) - lu(k,970) * lu(k,1019) + lu(k,1031) = lu(k,1031) - lu(k,971) * lu(k,1019) + lu(k,1033) = lu(k,1033) - lu(k,972) * lu(k,1019) + lu(k,1034) = lu(k,1034) - lu(k,973) * lu(k,1019) + lu(k,1079) = lu(k,1079) - lu(k,960) * lu(k,1078) + lu(k,1080) = lu(k,1080) - lu(k,961) * lu(k,1078) + lu(k,1081) = lu(k,1081) - lu(k,962) * lu(k,1078) + lu(k,1082) = lu(k,1082) - lu(k,963) * lu(k,1078) + lu(k,1083) = lu(k,1083) - lu(k,964) * lu(k,1078) + lu(k,1084) = lu(k,1084) - lu(k,965) * lu(k,1078) + lu(k,1085) = lu(k,1085) - lu(k,966) * lu(k,1078) + lu(k,1086) = lu(k,1086) - lu(k,967) * lu(k,1078) + lu(k,1087) = lu(k,1087) - lu(k,968) * lu(k,1078) + lu(k,1088) = lu(k,1088) - lu(k,969) * lu(k,1078) + lu(k,1089) = lu(k,1089) - lu(k,970) * lu(k,1078) + lu(k,1090) = lu(k,1090) - lu(k,971) * lu(k,1078) + lu(k,1092) = lu(k,1092) - lu(k,972) * lu(k,1078) + lu(k,1093) = lu(k,1093) - lu(k,973) * lu(k,1078) + lu(k,1125) = lu(k,1125) - lu(k,960) * lu(k,1124) + lu(k,1126) = lu(k,1126) - lu(k,961) * lu(k,1124) + lu(k,1127) = lu(k,1127) - lu(k,962) * lu(k,1124) + lu(k,1128) = lu(k,1128) - lu(k,963) * lu(k,1124) + lu(k,1129) = lu(k,1129) - lu(k,964) * lu(k,1124) + lu(k,1130) = lu(k,1130) - lu(k,965) * lu(k,1124) + lu(k,1131) = lu(k,1131) - lu(k,966) * lu(k,1124) + lu(k,1132) = lu(k,1132) - lu(k,967) * lu(k,1124) + lu(k,1133) = lu(k,1133) - lu(k,968) * lu(k,1124) + lu(k,1134) = lu(k,1134) - lu(k,969) * lu(k,1124) + lu(k,1135) = lu(k,1135) - lu(k,970) * lu(k,1124) + lu(k,1136) = lu(k,1136) - lu(k,971) * lu(k,1124) + lu(k,1138) = lu(k,1138) - lu(k,972) * lu(k,1124) + lu(k,1139) = lu(k,1139) - lu(k,973) * lu(k,1124) + lu(k,1148) = lu(k,1148) - lu(k,960) * lu(k,1147) + lu(k,1149) = lu(k,1149) - lu(k,961) * lu(k,1147) + lu(k,1150) = lu(k,1150) - lu(k,962) * lu(k,1147) + lu(k,1151) = lu(k,1151) - lu(k,963) * lu(k,1147) + lu(k,1152) = lu(k,1152) - lu(k,964) * lu(k,1147) + lu(k,1153) = lu(k,1153) - lu(k,965) * lu(k,1147) + lu(k,1154) = lu(k,1154) - lu(k,966) * lu(k,1147) + lu(k,1155) = lu(k,1155) - lu(k,967) * lu(k,1147) + lu(k,1156) = lu(k,1156) - lu(k,968) * lu(k,1147) + lu(k,1157) = lu(k,1157) - lu(k,969) * lu(k,1147) + lu(k,1158) = lu(k,1158) - lu(k,970) * lu(k,1147) + lu(k,1159) = lu(k,1159) - lu(k,971) * lu(k,1147) + lu(k,1161) = lu(k,1161) - lu(k,972) * lu(k,1147) + lu(k,1162) = lu(k,1162) - lu(k,973) * lu(k,1147) + lu(k,1189) = lu(k,1189) - lu(k,960) * lu(k,1188) + lu(k,1190) = lu(k,1190) - lu(k,961) * lu(k,1188) + lu(k,1191) = lu(k,1191) - lu(k,962) * lu(k,1188) + lu(k,1192) = lu(k,1192) - lu(k,963) * lu(k,1188) + lu(k,1193) = lu(k,1193) - lu(k,964) * lu(k,1188) + lu(k,1194) = lu(k,1194) - lu(k,965) * lu(k,1188) + lu(k,1195) = lu(k,1195) - lu(k,966) * lu(k,1188) + lu(k,1196) = lu(k,1196) - lu(k,967) * lu(k,1188) + lu(k,1197) = lu(k,1197) - lu(k,968) * lu(k,1188) + lu(k,1198) = lu(k,1198) - lu(k,969) * lu(k,1188) + lu(k,1199) = lu(k,1199) - lu(k,970) * lu(k,1188) + lu(k,1200) = lu(k,1200) - lu(k,971) * lu(k,1188) + lu(k,1202) = lu(k,1202) - lu(k,972) * lu(k,1188) + lu(k,1203) = lu(k,1203) - lu(k,973) * lu(k,1188) + lu(k,1235) = lu(k,1235) - lu(k,960) * lu(k,1234) + lu(k,1236) = lu(k,1236) - lu(k,961) * lu(k,1234) + lu(k,1237) = lu(k,1237) - lu(k,962) * lu(k,1234) + lu(k,1238) = lu(k,1238) - lu(k,963) * lu(k,1234) + lu(k,1239) = lu(k,1239) - lu(k,964) * lu(k,1234) + lu(k,1240) = lu(k,1240) - lu(k,965) * lu(k,1234) + lu(k,1241) = lu(k,1241) - lu(k,966) * lu(k,1234) + lu(k,1242) = lu(k,1242) - lu(k,967) * lu(k,1234) + lu(k,1243) = lu(k,1243) - lu(k,968) * lu(k,1234) + lu(k,1244) = lu(k,1244) - lu(k,969) * lu(k,1234) + lu(k,1245) = lu(k,1245) - lu(k,970) * lu(k,1234) + lu(k,1246) = lu(k,1246) - lu(k,971) * lu(k,1234) + lu(k,1248) = lu(k,1248) - lu(k,972) * lu(k,1234) + lu(k,1249) = lu(k,1249) - lu(k,973) * lu(k,1234) + lu(k,1277) = lu(k,1277) - lu(k,960) * lu(k,1276) + lu(k,1278) = lu(k,1278) - lu(k,961) * lu(k,1276) + lu(k,1279) = lu(k,1279) - lu(k,962) * lu(k,1276) + lu(k,1280) = lu(k,1280) - lu(k,963) * lu(k,1276) + lu(k,1281) = lu(k,1281) - lu(k,964) * lu(k,1276) + lu(k,1282) = lu(k,1282) - lu(k,965) * lu(k,1276) + lu(k,1283) = lu(k,1283) - lu(k,966) * lu(k,1276) + lu(k,1284) = lu(k,1284) - lu(k,967) * lu(k,1276) + lu(k,1285) = lu(k,1285) - lu(k,968) * lu(k,1276) + lu(k,1286) = lu(k,1286) - lu(k,969) * lu(k,1276) + lu(k,1287) = lu(k,1287) - lu(k,970) * lu(k,1276) + lu(k,1288) = lu(k,1288) - lu(k,971) * lu(k,1276) + lu(k,1290) = lu(k,1290) - lu(k,972) * lu(k,1276) + lu(k,1291) = lu(k,1291) - lu(k,973) * lu(k,1276) + lu(k,1315) = lu(k,1315) - lu(k,960) * lu(k,1314) + lu(k,1316) = lu(k,1316) - lu(k,961) * lu(k,1314) + lu(k,1317) = lu(k,1317) - lu(k,962) * lu(k,1314) + lu(k,1318) = lu(k,1318) - lu(k,963) * lu(k,1314) + lu(k,1319) = lu(k,1319) - lu(k,964) * lu(k,1314) + lu(k,1320) = lu(k,1320) - lu(k,965) * lu(k,1314) + lu(k,1321) = lu(k,1321) - lu(k,966) * lu(k,1314) + lu(k,1322) = lu(k,1322) - lu(k,967) * lu(k,1314) + lu(k,1323) = lu(k,1323) - lu(k,968) * lu(k,1314) + lu(k,1324) = lu(k,1324) - lu(k,969) * lu(k,1314) + lu(k,1325) = lu(k,1325) - lu(k,970) * lu(k,1314) + lu(k,1326) = lu(k,1326) - lu(k,971) * lu(k,1314) + lu(k,1328) = lu(k,1328) - lu(k,972) * lu(k,1314) + lu(k,1329) = lu(k,1329) - lu(k,973) * lu(k,1314) + lu(k,1404) = lu(k,1404) - lu(k,960) * lu(k,1403) + lu(k,1405) = lu(k,1405) - lu(k,961) * lu(k,1403) + lu(k,1406) = lu(k,1406) - lu(k,962) * lu(k,1403) + lu(k,1407) = lu(k,1407) - lu(k,963) * lu(k,1403) + lu(k,1408) = lu(k,1408) - lu(k,964) * lu(k,1403) + lu(k,1409) = lu(k,1409) - lu(k,965) * lu(k,1403) + lu(k,1410) = lu(k,1410) - lu(k,966) * lu(k,1403) + lu(k,1411) = lu(k,1411) - lu(k,967) * lu(k,1403) + lu(k,1412) = lu(k,1412) - lu(k,968) * lu(k,1403) + lu(k,1413) = lu(k,1413) - lu(k,969) * lu(k,1403) + lu(k,1414) = lu(k,1414) - lu(k,970) * lu(k,1403) + lu(k,1415) = lu(k,1415) - lu(k,971) * lu(k,1403) + lu(k,1417) = lu(k,1417) - lu(k,972) * lu(k,1403) + lu(k,1418) = lu(k,1418) - lu(k,973) * lu(k,1403) + lu(k,1449) = lu(k,1449) - lu(k,960) * lu(k,1448) + lu(k,1450) = lu(k,1450) - lu(k,961) * lu(k,1448) + lu(k,1451) = lu(k,1451) - lu(k,962) * lu(k,1448) + lu(k,1452) = lu(k,1452) - lu(k,963) * lu(k,1448) + lu(k,1453) = lu(k,1453) - lu(k,964) * lu(k,1448) + lu(k,1454) = lu(k,1454) - lu(k,965) * lu(k,1448) + lu(k,1455) = lu(k,1455) - lu(k,966) * lu(k,1448) + lu(k,1456) = lu(k,1456) - lu(k,967) * lu(k,1448) + lu(k,1457) = lu(k,1457) - lu(k,968) * lu(k,1448) + lu(k,1458) = lu(k,1458) - lu(k,969) * lu(k,1448) + lu(k,1459) = lu(k,1459) - lu(k,970) * lu(k,1448) + lu(k,1460) = lu(k,1460) - lu(k,971) * lu(k,1448) + lu(k,1462) = lu(k,1462) - lu(k,972) * lu(k,1448) + lu(k,1463) = lu(k,1463) - lu(k,973) * lu(k,1448) + lu(k,1497) = lu(k,1497) - lu(k,960) * lu(k,1496) + lu(k,1498) = lu(k,1498) - lu(k,961) * lu(k,1496) + lu(k,1499) = lu(k,1499) - lu(k,962) * lu(k,1496) + lu(k,1500) = lu(k,1500) - lu(k,963) * lu(k,1496) + lu(k,1501) = lu(k,1501) - lu(k,964) * lu(k,1496) + lu(k,1502) = lu(k,1502) - lu(k,965) * lu(k,1496) + lu(k,1503) = lu(k,1503) - lu(k,966) * lu(k,1496) + lu(k,1504) = lu(k,1504) - lu(k,967) * lu(k,1496) + lu(k,1505) = lu(k,1505) - lu(k,968) * lu(k,1496) + lu(k,1506) = lu(k,1506) - lu(k,969) * lu(k,1496) + lu(k,1507) = lu(k,1507) - lu(k,970) * lu(k,1496) + lu(k,1508) = lu(k,1508) - lu(k,971) * lu(k,1496) + lu(k,1510) = lu(k,1510) - lu(k,972) * lu(k,1496) + lu(k,1511) = lu(k,1511) - lu(k,973) * lu(k,1496) + lu(k,1522) = lu(k,1522) - lu(k,960) * lu(k,1521) + lu(k,1523) = lu(k,1523) - lu(k,961) * lu(k,1521) + lu(k,1524) = lu(k,1524) - lu(k,962) * lu(k,1521) + lu(k,1525) = lu(k,1525) - lu(k,963) * lu(k,1521) + lu(k,1526) = lu(k,1526) - lu(k,964) * lu(k,1521) + lu(k,1527) = lu(k,1527) - lu(k,965) * lu(k,1521) + lu(k,1528) = lu(k,1528) - lu(k,966) * lu(k,1521) + lu(k,1529) = lu(k,1529) - lu(k,967) * lu(k,1521) + lu(k,1530) = lu(k,1530) - lu(k,968) * lu(k,1521) + lu(k,1531) = lu(k,1531) - lu(k,969) * lu(k,1521) + lu(k,1532) = lu(k,1532) - lu(k,970) * lu(k,1521) + lu(k,1533) = lu(k,1533) - lu(k,971) * lu(k,1521) + lu(k,1535) = lu(k,1535) - lu(k,972) * lu(k,1521) + lu(k,1536) = lu(k,1536) - lu(k,973) * lu(k,1521) + lu(k,1543) = lu(k,1543) - lu(k,960) * lu(k,1542) + lu(k,1544) = lu(k,1544) - lu(k,961) * lu(k,1542) + lu(k,1545) = lu(k,1545) - lu(k,962) * lu(k,1542) + lu(k,1546) = lu(k,1546) - lu(k,963) * lu(k,1542) + lu(k,1547) = lu(k,1547) - lu(k,964) * lu(k,1542) + lu(k,1548) = lu(k,1548) - lu(k,965) * lu(k,1542) + lu(k,1549) = lu(k,1549) - lu(k,966) * lu(k,1542) + lu(k,1550) = lu(k,1550) - lu(k,967) * lu(k,1542) + lu(k,1551) = lu(k,1551) - lu(k,968) * lu(k,1542) + lu(k,1552) = lu(k,1552) - lu(k,969) * lu(k,1542) + lu(k,1553) = lu(k,1553) - lu(k,970) * lu(k,1542) + lu(k,1554) = lu(k,1554) - lu(k,971) * lu(k,1542) + lu(k,1556) = lu(k,1556) - lu(k,972) * lu(k,1542) + lu(k,1557) = lu(k,1557) - lu(k,973) * lu(k,1542) + lu(k,1570) = lu(k,1570) - lu(k,960) * lu(k,1569) + lu(k,1571) = lu(k,1571) - lu(k,961) * lu(k,1569) + lu(k,1572) = lu(k,1572) - lu(k,962) * lu(k,1569) + lu(k,1573) = lu(k,1573) - lu(k,963) * lu(k,1569) + lu(k,1574) = lu(k,1574) - lu(k,964) * lu(k,1569) + lu(k,1575) = lu(k,1575) - lu(k,965) * lu(k,1569) + lu(k,1576) = lu(k,1576) - lu(k,966) * lu(k,1569) + lu(k,1577) = lu(k,1577) - lu(k,967) * lu(k,1569) + lu(k,1578) = lu(k,1578) - lu(k,968) * lu(k,1569) + lu(k,1579) = lu(k,1579) - lu(k,969) * lu(k,1569) + lu(k,1580) = lu(k,1580) - lu(k,970) * lu(k,1569) + lu(k,1581) = lu(k,1581) - lu(k,971) * lu(k,1569) + lu(k,1583) = lu(k,1583) - lu(k,972) * lu(k,1569) + lu(k,1584) = lu(k,1584) - lu(k,973) * lu(k,1569) + lu(k,996) = 1._r8 / lu(k,996) + lu(k,997) = lu(k,997) * lu(k,996) + lu(k,998) = lu(k,998) * lu(k,996) + lu(k,999) = lu(k,999) * lu(k,996) + lu(k,1000) = lu(k,1000) * lu(k,996) + lu(k,1001) = lu(k,1001) * lu(k,996) + lu(k,1002) = lu(k,1002) * lu(k,996) + lu(k,1003) = lu(k,1003) * lu(k,996) + lu(k,1004) = lu(k,1004) * lu(k,996) + lu(k,1005) = lu(k,1005) * lu(k,996) + lu(k,1006) = lu(k,1006) * lu(k,996) + lu(k,1007) = lu(k,1007) * lu(k,996) + lu(k,1008) = lu(k,1008) * lu(k,996) + lu(k,1009) = lu(k,1009) * lu(k,996) + lu(k,1010) = lu(k,1010) * lu(k,996) + lu(k,1021) = lu(k,1021) - lu(k,997) * lu(k,1020) + lu(k,1022) = lu(k,1022) - lu(k,998) * lu(k,1020) + lu(k,1023) = lu(k,1023) - lu(k,999) * lu(k,1020) + lu(k,1024) = lu(k,1024) - lu(k,1000) * lu(k,1020) + lu(k,1025) = lu(k,1025) - lu(k,1001) * lu(k,1020) + lu(k,1026) = lu(k,1026) - lu(k,1002) * lu(k,1020) + lu(k,1027) = lu(k,1027) - lu(k,1003) * lu(k,1020) + lu(k,1028) = lu(k,1028) - lu(k,1004) * lu(k,1020) + lu(k,1029) = lu(k,1029) - lu(k,1005) * lu(k,1020) + lu(k,1030) = lu(k,1030) - lu(k,1006) * lu(k,1020) + lu(k,1031) = lu(k,1031) - lu(k,1007) * lu(k,1020) + lu(k,1032) = lu(k,1032) - lu(k,1008) * lu(k,1020) + lu(k,1033) = lu(k,1033) - lu(k,1009) * lu(k,1020) + lu(k,1034) = lu(k,1034) - lu(k,1010) * lu(k,1020) + lu(k,1080) = lu(k,1080) - lu(k,997) * lu(k,1079) + lu(k,1081) = lu(k,1081) - lu(k,998) * lu(k,1079) + lu(k,1082) = lu(k,1082) - lu(k,999) * lu(k,1079) + lu(k,1083) = lu(k,1083) - lu(k,1000) * lu(k,1079) + lu(k,1084) = lu(k,1084) - lu(k,1001) * lu(k,1079) + lu(k,1085) = lu(k,1085) - lu(k,1002) * lu(k,1079) + lu(k,1086) = lu(k,1086) - lu(k,1003) * lu(k,1079) + lu(k,1087) = lu(k,1087) - lu(k,1004) * lu(k,1079) + lu(k,1088) = lu(k,1088) - lu(k,1005) * lu(k,1079) + lu(k,1089) = lu(k,1089) - lu(k,1006) * lu(k,1079) + lu(k,1090) = lu(k,1090) - lu(k,1007) * lu(k,1079) + lu(k,1091) = lu(k,1091) - lu(k,1008) * lu(k,1079) + lu(k,1092) = lu(k,1092) - lu(k,1009) * lu(k,1079) + lu(k,1093) = lu(k,1093) - lu(k,1010) * lu(k,1079) + lu(k,1126) = lu(k,1126) - lu(k,997) * lu(k,1125) + lu(k,1127) = lu(k,1127) - lu(k,998) * lu(k,1125) + lu(k,1128) = lu(k,1128) - lu(k,999) * lu(k,1125) + lu(k,1129) = lu(k,1129) - lu(k,1000) * lu(k,1125) + lu(k,1130) = lu(k,1130) - lu(k,1001) * lu(k,1125) + lu(k,1131) = lu(k,1131) - lu(k,1002) * lu(k,1125) + lu(k,1132) = lu(k,1132) - lu(k,1003) * lu(k,1125) + lu(k,1133) = lu(k,1133) - lu(k,1004) * lu(k,1125) + lu(k,1134) = lu(k,1134) - lu(k,1005) * lu(k,1125) + lu(k,1135) = lu(k,1135) - lu(k,1006) * lu(k,1125) + lu(k,1136) = lu(k,1136) - lu(k,1007) * lu(k,1125) + lu(k,1137) = lu(k,1137) - lu(k,1008) * lu(k,1125) + lu(k,1138) = lu(k,1138) - lu(k,1009) * lu(k,1125) + lu(k,1139) = lu(k,1139) - lu(k,1010) * lu(k,1125) + lu(k,1149) = lu(k,1149) - lu(k,997) * lu(k,1148) + lu(k,1150) = lu(k,1150) - lu(k,998) * lu(k,1148) + lu(k,1151) = lu(k,1151) - lu(k,999) * lu(k,1148) + lu(k,1152) = lu(k,1152) - lu(k,1000) * lu(k,1148) + lu(k,1153) = lu(k,1153) - lu(k,1001) * lu(k,1148) + lu(k,1154) = lu(k,1154) - lu(k,1002) * lu(k,1148) + lu(k,1155) = lu(k,1155) - lu(k,1003) * lu(k,1148) + lu(k,1156) = lu(k,1156) - lu(k,1004) * lu(k,1148) + lu(k,1157) = lu(k,1157) - lu(k,1005) * lu(k,1148) + lu(k,1158) = lu(k,1158) - lu(k,1006) * lu(k,1148) + lu(k,1159) = lu(k,1159) - lu(k,1007) * lu(k,1148) + lu(k,1160) = lu(k,1160) - lu(k,1008) * lu(k,1148) + lu(k,1161) = lu(k,1161) - lu(k,1009) * lu(k,1148) + lu(k,1162) = lu(k,1162) - lu(k,1010) * lu(k,1148) + lu(k,1190) = lu(k,1190) - lu(k,997) * lu(k,1189) + lu(k,1191) = lu(k,1191) - lu(k,998) * lu(k,1189) + lu(k,1192) = lu(k,1192) - lu(k,999) * lu(k,1189) + lu(k,1193) = lu(k,1193) - lu(k,1000) * lu(k,1189) + lu(k,1194) = lu(k,1194) - lu(k,1001) * lu(k,1189) + lu(k,1195) = lu(k,1195) - lu(k,1002) * lu(k,1189) + lu(k,1196) = lu(k,1196) - lu(k,1003) * lu(k,1189) + lu(k,1197) = lu(k,1197) - lu(k,1004) * lu(k,1189) + lu(k,1198) = lu(k,1198) - lu(k,1005) * lu(k,1189) + lu(k,1199) = lu(k,1199) - lu(k,1006) * lu(k,1189) + lu(k,1200) = lu(k,1200) - lu(k,1007) * lu(k,1189) + lu(k,1201) = lu(k,1201) - lu(k,1008) * lu(k,1189) + lu(k,1202) = lu(k,1202) - lu(k,1009) * lu(k,1189) + lu(k,1203) = lu(k,1203) - lu(k,1010) * lu(k,1189) + lu(k,1236) = lu(k,1236) - lu(k,997) * lu(k,1235) + lu(k,1237) = lu(k,1237) - lu(k,998) * lu(k,1235) + lu(k,1238) = lu(k,1238) - lu(k,999) * lu(k,1235) + lu(k,1239) = lu(k,1239) - lu(k,1000) * lu(k,1235) + lu(k,1240) = lu(k,1240) - lu(k,1001) * lu(k,1235) + lu(k,1241) = lu(k,1241) - lu(k,1002) * lu(k,1235) + lu(k,1242) = lu(k,1242) - lu(k,1003) * lu(k,1235) + lu(k,1243) = lu(k,1243) - lu(k,1004) * lu(k,1235) + lu(k,1244) = lu(k,1244) - lu(k,1005) * lu(k,1235) + lu(k,1245) = lu(k,1245) - lu(k,1006) * lu(k,1235) + lu(k,1246) = lu(k,1246) - lu(k,1007) * lu(k,1235) + lu(k,1247) = lu(k,1247) - lu(k,1008) * lu(k,1235) + lu(k,1248) = lu(k,1248) - lu(k,1009) * lu(k,1235) + lu(k,1249) = lu(k,1249) - lu(k,1010) * lu(k,1235) + lu(k,1278) = lu(k,1278) - lu(k,997) * lu(k,1277) + lu(k,1279) = lu(k,1279) - lu(k,998) * lu(k,1277) + lu(k,1280) = lu(k,1280) - lu(k,999) * lu(k,1277) + lu(k,1281) = lu(k,1281) - lu(k,1000) * lu(k,1277) + lu(k,1282) = lu(k,1282) - lu(k,1001) * lu(k,1277) + lu(k,1283) = lu(k,1283) - lu(k,1002) * lu(k,1277) + lu(k,1284) = lu(k,1284) - lu(k,1003) * lu(k,1277) + lu(k,1285) = lu(k,1285) - lu(k,1004) * lu(k,1277) + lu(k,1286) = lu(k,1286) - lu(k,1005) * lu(k,1277) + lu(k,1287) = lu(k,1287) - lu(k,1006) * lu(k,1277) + lu(k,1288) = lu(k,1288) - lu(k,1007) * lu(k,1277) + lu(k,1289) = lu(k,1289) - lu(k,1008) * lu(k,1277) + lu(k,1290) = lu(k,1290) - lu(k,1009) * lu(k,1277) + lu(k,1291) = lu(k,1291) - lu(k,1010) * lu(k,1277) + lu(k,1316) = lu(k,1316) - lu(k,997) * lu(k,1315) + lu(k,1317) = lu(k,1317) - lu(k,998) * lu(k,1315) + lu(k,1318) = lu(k,1318) - lu(k,999) * lu(k,1315) + lu(k,1319) = lu(k,1319) - lu(k,1000) * lu(k,1315) + lu(k,1320) = lu(k,1320) - lu(k,1001) * lu(k,1315) + lu(k,1321) = lu(k,1321) - lu(k,1002) * lu(k,1315) + lu(k,1322) = lu(k,1322) - lu(k,1003) * lu(k,1315) + lu(k,1323) = lu(k,1323) - lu(k,1004) * lu(k,1315) + lu(k,1324) = lu(k,1324) - lu(k,1005) * lu(k,1315) + lu(k,1325) = lu(k,1325) - lu(k,1006) * lu(k,1315) + lu(k,1326) = lu(k,1326) - lu(k,1007) * lu(k,1315) + lu(k,1327) = lu(k,1327) - lu(k,1008) * lu(k,1315) + lu(k,1328) = lu(k,1328) - lu(k,1009) * lu(k,1315) + lu(k,1329) = lu(k,1329) - lu(k,1010) * lu(k,1315) + lu(k,1405) = lu(k,1405) - lu(k,997) * lu(k,1404) + lu(k,1406) = lu(k,1406) - lu(k,998) * lu(k,1404) + lu(k,1407) = lu(k,1407) - lu(k,999) * lu(k,1404) + lu(k,1408) = lu(k,1408) - lu(k,1000) * lu(k,1404) + lu(k,1409) = lu(k,1409) - lu(k,1001) * lu(k,1404) + lu(k,1410) = lu(k,1410) - lu(k,1002) * lu(k,1404) + lu(k,1411) = lu(k,1411) - lu(k,1003) * lu(k,1404) + lu(k,1412) = lu(k,1412) - lu(k,1004) * lu(k,1404) + lu(k,1413) = lu(k,1413) - lu(k,1005) * lu(k,1404) + lu(k,1414) = lu(k,1414) - lu(k,1006) * lu(k,1404) + lu(k,1415) = lu(k,1415) - lu(k,1007) * lu(k,1404) + lu(k,1416) = lu(k,1416) - lu(k,1008) * lu(k,1404) + lu(k,1417) = lu(k,1417) - lu(k,1009) * lu(k,1404) + lu(k,1418) = lu(k,1418) - lu(k,1010) * lu(k,1404) + lu(k,1450) = lu(k,1450) - lu(k,997) * lu(k,1449) + lu(k,1451) = lu(k,1451) - lu(k,998) * lu(k,1449) + lu(k,1452) = lu(k,1452) - lu(k,999) * lu(k,1449) + lu(k,1453) = lu(k,1453) - lu(k,1000) * lu(k,1449) + lu(k,1454) = lu(k,1454) - lu(k,1001) * lu(k,1449) + lu(k,1455) = lu(k,1455) - lu(k,1002) * lu(k,1449) + lu(k,1456) = lu(k,1456) - lu(k,1003) * lu(k,1449) + lu(k,1457) = lu(k,1457) - lu(k,1004) * lu(k,1449) + lu(k,1458) = lu(k,1458) - lu(k,1005) * lu(k,1449) + lu(k,1459) = lu(k,1459) - lu(k,1006) * lu(k,1449) + lu(k,1460) = lu(k,1460) - lu(k,1007) * lu(k,1449) + lu(k,1461) = lu(k,1461) - lu(k,1008) * lu(k,1449) + lu(k,1462) = lu(k,1462) - lu(k,1009) * lu(k,1449) + lu(k,1463) = lu(k,1463) - lu(k,1010) * lu(k,1449) + lu(k,1498) = lu(k,1498) - lu(k,997) * lu(k,1497) + lu(k,1499) = lu(k,1499) - lu(k,998) * lu(k,1497) + lu(k,1500) = lu(k,1500) - lu(k,999) * lu(k,1497) + lu(k,1501) = lu(k,1501) - lu(k,1000) * lu(k,1497) + lu(k,1502) = lu(k,1502) - lu(k,1001) * lu(k,1497) + lu(k,1503) = lu(k,1503) - lu(k,1002) * lu(k,1497) + lu(k,1504) = lu(k,1504) - lu(k,1003) * lu(k,1497) + lu(k,1505) = lu(k,1505) - lu(k,1004) * lu(k,1497) + lu(k,1506) = lu(k,1506) - lu(k,1005) * lu(k,1497) + lu(k,1507) = lu(k,1507) - lu(k,1006) * lu(k,1497) + lu(k,1508) = lu(k,1508) - lu(k,1007) * lu(k,1497) + lu(k,1509) = lu(k,1509) - lu(k,1008) * lu(k,1497) + lu(k,1510) = lu(k,1510) - lu(k,1009) * lu(k,1497) + lu(k,1511) = lu(k,1511) - lu(k,1010) * lu(k,1497) + lu(k,1523) = lu(k,1523) - lu(k,997) * lu(k,1522) + lu(k,1524) = lu(k,1524) - lu(k,998) * lu(k,1522) + lu(k,1525) = lu(k,1525) - lu(k,999) * lu(k,1522) + lu(k,1526) = lu(k,1526) - lu(k,1000) * lu(k,1522) + lu(k,1527) = lu(k,1527) - lu(k,1001) * lu(k,1522) + lu(k,1528) = lu(k,1528) - lu(k,1002) * lu(k,1522) + lu(k,1529) = lu(k,1529) - lu(k,1003) * lu(k,1522) + lu(k,1530) = lu(k,1530) - lu(k,1004) * lu(k,1522) + lu(k,1531) = lu(k,1531) - lu(k,1005) * lu(k,1522) + lu(k,1532) = lu(k,1532) - lu(k,1006) * lu(k,1522) + lu(k,1533) = lu(k,1533) - lu(k,1007) * lu(k,1522) + lu(k,1534) = lu(k,1534) - lu(k,1008) * lu(k,1522) + lu(k,1535) = lu(k,1535) - lu(k,1009) * lu(k,1522) + lu(k,1536) = lu(k,1536) - lu(k,1010) * lu(k,1522) + lu(k,1544) = lu(k,1544) - lu(k,997) * lu(k,1543) + lu(k,1545) = lu(k,1545) - lu(k,998) * lu(k,1543) + lu(k,1546) = lu(k,1546) - lu(k,999) * lu(k,1543) + lu(k,1547) = lu(k,1547) - lu(k,1000) * lu(k,1543) + lu(k,1548) = lu(k,1548) - lu(k,1001) * lu(k,1543) + lu(k,1549) = lu(k,1549) - lu(k,1002) * lu(k,1543) + lu(k,1550) = lu(k,1550) - lu(k,1003) * lu(k,1543) + lu(k,1551) = lu(k,1551) - lu(k,1004) * lu(k,1543) + lu(k,1552) = lu(k,1552) - lu(k,1005) * lu(k,1543) + lu(k,1553) = lu(k,1553) - lu(k,1006) * lu(k,1543) + lu(k,1554) = lu(k,1554) - lu(k,1007) * lu(k,1543) + lu(k,1555) = lu(k,1555) - lu(k,1008) * lu(k,1543) + lu(k,1556) = lu(k,1556) - lu(k,1009) * lu(k,1543) + lu(k,1557) = lu(k,1557) - lu(k,1010) * lu(k,1543) + lu(k,1571) = lu(k,1571) - lu(k,997) * lu(k,1570) + lu(k,1572) = lu(k,1572) - lu(k,998) * lu(k,1570) + lu(k,1573) = lu(k,1573) - lu(k,999) * lu(k,1570) + lu(k,1574) = lu(k,1574) - lu(k,1000) * lu(k,1570) + lu(k,1575) = lu(k,1575) - lu(k,1001) * lu(k,1570) + lu(k,1576) = lu(k,1576) - lu(k,1002) * lu(k,1570) + lu(k,1577) = lu(k,1577) - lu(k,1003) * lu(k,1570) + lu(k,1578) = lu(k,1578) - lu(k,1004) * lu(k,1570) + lu(k,1579) = lu(k,1579) - lu(k,1005) * lu(k,1570) + lu(k,1580) = lu(k,1580) - lu(k,1006) * lu(k,1570) + lu(k,1581) = lu(k,1581) - lu(k,1007) * lu(k,1570) + lu(k,1582) = lu(k,1582) - lu(k,1008) * lu(k,1570) + lu(k,1583) = lu(k,1583) - lu(k,1009) * lu(k,1570) + lu(k,1584) = lu(k,1584) - lu(k,1010) * lu(k,1570) + end do + end subroutine lu_fac19 + subroutine lu_fac20( avec_len, lu ) + use chem_mods, only : nzcnt + use shr_kind_mod, only : r8 => shr_kind_r8 + implicit none +!----------------------------------------------------------------------- +! ... dummy args +!----------------------------------------------------------------------- + integer, intent(in) :: avec_len + real(r8), intent(inout) :: lu(veclen,nzcnt) +!----------------------------------------------------------------------- +! ... local variables +!----------------------------------------------------------------------- + integer :: k + do k = 1,avec_len + lu(k,1021) = 1._r8 / lu(k,1021) + lu(k,1022) = lu(k,1022) * lu(k,1021) + lu(k,1023) = lu(k,1023) * lu(k,1021) + lu(k,1024) = lu(k,1024) * lu(k,1021) + lu(k,1025) = lu(k,1025) * lu(k,1021) + lu(k,1026) = lu(k,1026) * lu(k,1021) + lu(k,1027) = lu(k,1027) * lu(k,1021) + lu(k,1028) = lu(k,1028) * lu(k,1021) + lu(k,1029) = lu(k,1029) * lu(k,1021) + lu(k,1030) = lu(k,1030) * lu(k,1021) + lu(k,1031) = lu(k,1031) * lu(k,1021) + lu(k,1032) = lu(k,1032) * lu(k,1021) + lu(k,1033) = lu(k,1033) * lu(k,1021) + lu(k,1034) = lu(k,1034) * lu(k,1021) + lu(k,1081) = lu(k,1081) - lu(k,1022) * lu(k,1080) + lu(k,1082) = lu(k,1082) - lu(k,1023) * lu(k,1080) + lu(k,1083) = lu(k,1083) - lu(k,1024) * lu(k,1080) + lu(k,1084) = lu(k,1084) - lu(k,1025) * lu(k,1080) + lu(k,1085) = lu(k,1085) - lu(k,1026) * lu(k,1080) + lu(k,1086) = lu(k,1086) - lu(k,1027) * lu(k,1080) + lu(k,1087) = lu(k,1087) - lu(k,1028) * lu(k,1080) + lu(k,1088) = lu(k,1088) - lu(k,1029) * lu(k,1080) + lu(k,1089) = lu(k,1089) - lu(k,1030) * lu(k,1080) + lu(k,1090) = lu(k,1090) - lu(k,1031) * lu(k,1080) + lu(k,1091) = lu(k,1091) - lu(k,1032) * lu(k,1080) + lu(k,1092) = lu(k,1092) - lu(k,1033) * lu(k,1080) + lu(k,1093) = lu(k,1093) - lu(k,1034) * lu(k,1080) + lu(k,1127) = lu(k,1127) - lu(k,1022) * lu(k,1126) + lu(k,1128) = lu(k,1128) - lu(k,1023) * lu(k,1126) + lu(k,1129) = lu(k,1129) - lu(k,1024) * lu(k,1126) + lu(k,1130) = lu(k,1130) - lu(k,1025) * lu(k,1126) + lu(k,1131) = lu(k,1131) - lu(k,1026) * lu(k,1126) + lu(k,1132) = lu(k,1132) - lu(k,1027) * lu(k,1126) + lu(k,1133) = lu(k,1133) - lu(k,1028) * lu(k,1126) + lu(k,1134) = lu(k,1134) - lu(k,1029) * lu(k,1126) + lu(k,1135) = lu(k,1135) - lu(k,1030) * lu(k,1126) + lu(k,1136) = lu(k,1136) - lu(k,1031) * lu(k,1126) + lu(k,1137) = lu(k,1137) - lu(k,1032) * lu(k,1126) + lu(k,1138) = lu(k,1138) - lu(k,1033) * lu(k,1126) + lu(k,1139) = lu(k,1139) - lu(k,1034) * lu(k,1126) + lu(k,1150) = lu(k,1150) - lu(k,1022) * lu(k,1149) + lu(k,1151) = lu(k,1151) - lu(k,1023) * lu(k,1149) + lu(k,1152) = lu(k,1152) - lu(k,1024) * lu(k,1149) + lu(k,1153) = lu(k,1153) - lu(k,1025) * lu(k,1149) + lu(k,1154) = lu(k,1154) - lu(k,1026) * lu(k,1149) + lu(k,1155) = lu(k,1155) - lu(k,1027) * lu(k,1149) + lu(k,1156) = lu(k,1156) - lu(k,1028) * lu(k,1149) + lu(k,1157) = lu(k,1157) - lu(k,1029) * lu(k,1149) + lu(k,1158) = lu(k,1158) - lu(k,1030) * lu(k,1149) + lu(k,1159) = lu(k,1159) - lu(k,1031) * lu(k,1149) + lu(k,1160) = lu(k,1160) - lu(k,1032) * lu(k,1149) + lu(k,1161) = lu(k,1161) - lu(k,1033) * lu(k,1149) + lu(k,1162) = lu(k,1162) - lu(k,1034) * lu(k,1149) + lu(k,1191) = lu(k,1191) - lu(k,1022) * lu(k,1190) + lu(k,1192) = lu(k,1192) - lu(k,1023) * lu(k,1190) + lu(k,1193) = lu(k,1193) - lu(k,1024) * lu(k,1190) + lu(k,1194) = lu(k,1194) - lu(k,1025) * lu(k,1190) + lu(k,1195) = lu(k,1195) - lu(k,1026) * lu(k,1190) + lu(k,1196) = lu(k,1196) - lu(k,1027) * lu(k,1190) + lu(k,1197) = lu(k,1197) - lu(k,1028) * lu(k,1190) + lu(k,1198) = lu(k,1198) - lu(k,1029) * lu(k,1190) + lu(k,1199) = lu(k,1199) - lu(k,1030) * lu(k,1190) + lu(k,1200) = lu(k,1200) - lu(k,1031) * lu(k,1190) + lu(k,1201) = lu(k,1201) - lu(k,1032) * lu(k,1190) + lu(k,1202) = lu(k,1202) - lu(k,1033) * lu(k,1190) + lu(k,1203) = lu(k,1203) - lu(k,1034) * lu(k,1190) + lu(k,1237) = lu(k,1237) - lu(k,1022) * lu(k,1236) + lu(k,1238) = lu(k,1238) - lu(k,1023) * lu(k,1236) + lu(k,1239) = lu(k,1239) - lu(k,1024) * lu(k,1236) + lu(k,1240) = lu(k,1240) - lu(k,1025) * lu(k,1236) + lu(k,1241) = lu(k,1241) - lu(k,1026) * lu(k,1236) + lu(k,1242) = lu(k,1242) - lu(k,1027) * lu(k,1236) + lu(k,1243) = lu(k,1243) - lu(k,1028) * lu(k,1236) + lu(k,1244) = lu(k,1244) - lu(k,1029) * lu(k,1236) + lu(k,1245) = lu(k,1245) - lu(k,1030) * lu(k,1236) + lu(k,1246) = lu(k,1246) - lu(k,1031) * lu(k,1236) + lu(k,1247) = lu(k,1247) - lu(k,1032) * lu(k,1236) + lu(k,1248) = lu(k,1248) - lu(k,1033) * lu(k,1236) + lu(k,1249) = lu(k,1249) - lu(k,1034) * lu(k,1236) + lu(k,1279) = lu(k,1279) - lu(k,1022) * lu(k,1278) + lu(k,1280) = lu(k,1280) - lu(k,1023) * lu(k,1278) + lu(k,1281) = lu(k,1281) - lu(k,1024) * lu(k,1278) + lu(k,1282) = lu(k,1282) - lu(k,1025) * lu(k,1278) + lu(k,1283) = lu(k,1283) - lu(k,1026) * lu(k,1278) + lu(k,1284) = lu(k,1284) - lu(k,1027) * lu(k,1278) + lu(k,1285) = lu(k,1285) - lu(k,1028) * lu(k,1278) + lu(k,1286) = lu(k,1286) - lu(k,1029) * lu(k,1278) + lu(k,1287) = lu(k,1287) - lu(k,1030) * lu(k,1278) + lu(k,1288) = lu(k,1288) - lu(k,1031) * lu(k,1278) + lu(k,1289) = lu(k,1289) - lu(k,1032) * lu(k,1278) + lu(k,1290) = lu(k,1290) - lu(k,1033) * lu(k,1278) + lu(k,1291) = lu(k,1291) - lu(k,1034) * lu(k,1278) + lu(k,1317) = lu(k,1317) - lu(k,1022) * lu(k,1316) + lu(k,1318) = lu(k,1318) - lu(k,1023) * lu(k,1316) + lu(k,1319) = lu(k,1319) - lu(k,1024) * lu(k,1316) + lu(k,1320) = lu(k,1320) - lu(k,1025) * lu(k,1316) + lu(k,1321) = lu(k,1321) - lu(k,1026) * lu(k,1316) + lu(k,1322) = lu(k,1322) - lu(k,1027) * lu(k,1316) + lu(k,1323) = lu(k,1323) - lu(k,1028) * lu(k,1316) + lu(k,1324) = lu(k,1324) - lu(k,1029) * lu(k,1316) + lu(k,1325) = lu(k,1325) - lu(k,1030) * lu(k,1316) + lu(k,1326) = lu(k,1326) - lu(k,1031) * lu(k,1316) + lu(k,1327) = lu(k,1327) - lu(k,1032) * lu(k,1316) + lu(k,1328) = lu(k,1328) - lu(k,1033) * lu(k,1316) + lu(k,1329) = lu(k,1329) - lu(k,1034) * lu(k,1316) + lu(k,1406) = lu(k,1406) - lu(k,1022) * lu(k,1405) + lu(k,1407) = lu(k,1407) - lu(k,1023) * lu(k,1405) + lu(k,1408) = lu(k,1408) - lu(k,1024) * lu(k,1405) + lu(k,1409) = lu(k,1409) - lu(k,1025) * lu(k,1405) + lu(k,1410) = lu(k,1410) - lu(k,1026) * lu(k,1405) + lu(k,1411) = lu(k,1411) - lu(k,1027) * lu(k,1405) + lu(k,1412) = lu(k,1412) - lu(k,1028) * lu(k,1405) + lu(k,1413) = lu(k,1413) - lu(k,1029) * lu(k,1405) + lu(k,1414) = lu(k,1414) - lu(k,1030) * lu(k,1405) + lu(k,1415) = lu(k,1415) - lu(k,1031) * lu(k,1405) + lu(k,1416) = lu(k,1416) - lu(k,1032) * lu(k,1405) + lu(k,1417) = lu(k,1417) - lu(k,1033) * lu(k,1405) + lu(k,1418) = lu(k,1418) - lu(k,1034) * lu(k,1405) + lu(k,1451) = lu(k,1451) - lu(k,1022) * lu(k,1450) + lu(k,1452) = lu(k,1452) - lu(k,1023) * lu(k,1450) + lu(k,1453) = lu(k,1453) - lu(k,1024) * lu(k,1450) + lu(k,1454) = lu(k,1454) - lu(k,1025) * lu(k,1450) + lu(k,1455) = lu(k,1455) - lu(k,1026) * lu(k,1450) + lu(k,1456) = lu(k,1456) - lu(k,1027) * lu(k,1450) + lu(k,1457) = lu(k,1457) - lu(k,1028) * lu(k,1450) + lu(k,1458) = lu(k,1458) - lu(k,1029) * lu(k,1450) + lu(k,1459) = lu(k,1459) - lu(k,1030) * lu(k,1450) + lu(k,1460) = lu(k,1460) - lu(k,1031) * lu(k,1450) + lu(k,1461) = lu(k,1461) - lu(k,1032) * lu(k,1450) + lu(k,1462) = lu(k,1462) - lu(k,1033) * lu(k,1450) + lu(k,1463) = lu(k,1463) - lu(k,1034) * lu(k,1450) + lu(k,1499) = lu(k,1499) - lu(k,1022) * lu(k,1498) + lu(k,1500) = lu(k,1500) - lu(k,1023) * lu(k,1498) + lu(k,1501) = lu(k,1501) - lu(k,1024) * lu(k,1498) + lu(k,1502) = lu(k,1502) - lu(k,1025) * lu(k,1498) + lu(k,1503) = lu(k,1503) - lu(k,1026) * lu(k,1498) + lu(k,1504) = lu(k,1504) - lu(k,1027) * lu(k,1498) + lu(k,1505) = lu(k,1505) - lu(k,1028) * lu(k,1498) + lu(k,1506) = lu(k,1506) - lu(k,1029) * lu(k,1498) + lu(k,1507) = lu(k,1507) - lu(k,1030) * lu(k,1498) + lu(k,1508) = lu(k,1508) - lu(k,1031) * lu(k,1498) + lu(k,1509) = lu(k,1509) - lu(k,1032) * lu(k,1498) + lu(k,1510) = lu(k,1510) - lu(k,1033) * lu(k,1498) + lu(k,1511) = lu(k,1511) - lu(k,1034) * lu(k,1498) + lu(k,1524) = lu(k,1524) - lu(k,1022) * lu(k,1523) + lu(k,1525) = lu(k,1525) - lu(k,1023) * lu(k,1523) + lu(k,1526) = lu(k,1526) - lu(k,1024) * lu(k,1523) + lu(k,1527) = lu(k,1527) - lu(k,1025) * lu(k,1523) + lu(k,1528) = lu(k,1528) - lu(k,1026) * lu(k,1523) + lu(k,1529) = lu(k,1529) - lu(k,1027) * lu(k,1523) + lu(k,1530) = lu(k,1530) - lu(k,1028) * lu(k,1523) + lu(k,1531) = lu(k,1531) - lu(k,1029) * lu(k,1523) + lu(k,1532) = lu(k,1532) - lu(k,1030) * lu(k,1523) + lu(k,1533) = lu(k,1533) - lu(k,1031) * lu(k,1523) + lu(k,1534) = lu(k,1534) - lu(k,1032) * lu(k,1523) + lu(k,1535) = lu(k,1535) - lu(k,1033) * lu(k,1523) + lu(k,1536) = lu(k,1536) - lu(k,1034) * lu(k,1523) + lu(k,1545) = lu(k,1545) - lu(k,1022) * lu(k,1544) + lu(k,1546) = lu(k,1546) - lu(k,1023) * lu(k,1544) + lu(k,1547) = lu(k,1547) - lu(k,1024) * lu(k,1544) + lu(k,1548) = lu(k,1548) - lu(k,1025) * lu(k,1544) + lu(k,1549) = lu(k,1549) - lu(k,1026) * lu(k,1544) + lu(k,1550) = lu(k,1550) - lu(k,1027) * lu(k,1544) + lu(k,1551) = lu(k,1551) - lu(k,1028) * lu(k,1544) + lu(k,1552) = lu(k,1552) - lu(k,1029) * lu(k,1544) + lu(k,1553) = lu(k,1553) - lu(k,1030) * lu(k,1544) + lu(k,1554) = lu(k,1554) - lu(k,1031) * lu(k,1544) + lu(k,1555) = lu(k,1555) - lu(k,1032) * lu(k,1544) + lu(k,1556) = lu(k,1556) - lu(k,1033) * lu(k,1544) + lu(k,1557) = lu(k,1557) - lu(k,1034) * lu(k,1544) + lu(k,1572) = lu(k,1572) - lu(k,1022) * lu(k,1571) + lu(k,1573) = lu(k,1573) - lu(k,1023) * lu(k,1571) + lu(k,1574) = lu(k,1574) - lu(k,1024) * lu(k,1571) + lu(k,1575) = lu(k,1575) - lu(k,1025) * lu(k,1571) + lu(k,1576) = lu(k,1576) - lu(k,1026) * lu(k,1571) + lu(k,1577) = lu(k,1577) - lu(k,1027) * lu(k,1571) + lu(k,1578) = lu(k,1578) - lu(k,1028) * lu(k,1571) + lu(k,1579) = lu(k,1579) - lu(k,1029) * lu(k,1571) + lu(k,1580) = lu(k,1580) - lu(k,1030) * lu(k,1571) + lu(k,1581) = lu(k,1581) - lu(k,1031) * lu(k,1571) + lu(k,1582) = lu(k,1582) - lu(k,1032) * lu(k,1571) + lu(k,1583) = lu(k,1583) - lu(k,1033) * lu(k,1571) + lu(k,1584) = lu(k,1584) - lu(k,1034) * lu(k,1571) + lu(k,1081) = 1._r8 / lu(k,1081) + lu(k,1082) = lu(k,1082) * lu(k,1081) + lu(k,1083) = lu(k,1083) * lu(k,1081) + lu(k,1084) = lu(k,1084) * lu(k,1081) + lu(k,1085) = lu(k,1085) * lu(k,1081) + lu(k,1086) = lu(k,1086) * lu(k,1081) + lu(k,1087) = lu(k,1087) * lu(k,1081) + lu(k,1088) = lu(k,1088) * lu(k,1081) + lu(k,1089) = lu(k,1089) * lu(k,1081) + lu(k,1090) = lu(k,1090) * lu(k,1081) + lu(k,1091) = lu(k,1091) * lu(k,1081) + lu(k,1092) = lu(k,1092) * lu(k,1081) + lu(k,1093) = lu(k,1093) * lu(k,1081) + lu(k,1128) = lu(k,1128) - lu(k,1082) * lu(k,1127) + lu(k,1129) = lu(k,1129) - lu(k,1083) * lu(k,1127) + lu(k,1130) = lu(k,1130) - lu(k,1084) * lu(k,1127) + lu(k,1131) = lu(k,1131) - lu(k,1085) * lu(k,1127) + lu(k,1132) = lu(k,1132) - lu(k,1086) * lu(k,1127) + lu(k,1133) = lu(k,1133) - lu(k,1087) * lu(k,1127) + lu(k,1134) = lu(k,1134) - lu(k,1088) * lu(k,1127) + lu(k,1135) = lu(k,1135) - lu(k,1089) * lu(k,1127) + lu(k,1136) = lu(k,1136) - lu(k,1090) * lu(k,1127) + lu(k,1137) = lu(k,1137) - lu(k,1091) * lu(k,1127) + lu(k,1138) = lu(k,1138) - lu(k,1092) * lu(k,1127) + lu(k,1139) = lu(k,1139) - lu(k,1093) * lu(k,1127) + lu(k,1151) = lu(k,1151) - lu(k,1082) * lu(k,1150) + lu(k,1152) = lu(k,1152) - lu(k,1083) * lu(k,1150) + lu(k,1153) = lu(k,1153) - lu(k,1084) * lu(k,1150) + lu(k,1154) = lu(k,1154) - lu(k,1085) * lu(k,1150) + lu(k,1155) = lu(k,1155) - lu(k,1086) * lu(k,1150) + lu(k,1156) = lu(k,1156) - lu(k,1087) * lu(k,1150) + lu(k,1157) = lu(k,1157) - lu(k,1088) * lu(k,1150) + lu(k,1158) = lu(k,1158) - lu(k,1089) * lu(k,1150) + lu(k,1159) = lu(k,1159) - lu(k,1090) * lu(k,1150) + lu(k,1160) = lu(k,1160) - lu(k,1091) * lu(k,1150) + lu(k,1161) = lu(k,1161) - lu(k,1092) * lu(k,1150) + lu(k,1162) = lu(k,1162) - lu(k,1093) * lu(k,1150) + lu(k,1192) = lu(k,1192) - lu(k,1082) * lu(k,1191) + lu(k,1193) = lu(k,1193) - lu(k,1083) * lu(k,1191) + lu(k,1194) = lu(k,1194) - lu(k,1084) * lu(k,1191) + lu(k,1195) = lu(k,1195) - lu(k,1085) * lu(k,1191) + lu(k,1196) = lu(k,1196) - lu(k,1086) * lu(k,1191) + lu(k,1197) = lu(k,1197) - lu(k,1087) * lu(k,1191) + lu(k,1198) = lu(k,1198) - lu(k,1088) * lu(k,1191) + lu(k,1199) = lu(k,1199) - lu(k,1089) * lu(k,1191) + lu(k,1200) = lu(k,1200) - lu(k,1090) * lu(k,1191) + lu(k,1201) = lu(k,1201) - lu(k,1091) * lu(k,1191) + lu(k,1202) = lu(k,1202) - lu(k,1092) * lu(k,1191) + lu(k,1203) = lu(k,1203) - lu(k,1093) * lu(k,1191) + lu(k,1238) = lu(k,1238) - lu(k,1082) * lu(k,1237) + lu(k,1239) = lu(k,1239) - lu(k,1083) * lu(k,1237) + lu(k,1240) = lu(k,1240) - lu(k,1084) * lu(k,1237) + lu(k,1241) = lu(k,1241) - lu(k,1085) * lu(k,1237) + lu(k,1242) = lu(k,1242) - lu(k,1086) * lu(k,1237) + lu(k,1243) = lu(k,1243) - lu(k,1087) * lu(k,1237) + lu(k,1244) = lu(k,1244) - lu(k,1088) * lu(k,1237) + lu(k,1245) = lu(k,1245) - lu(k,1089) * lu(k,1237) + lu(k,1246) = lu(k,1246) - lu(k,1090) * lu(k,1237) + lu(k,1247) = lu(k,1247) - lu(k,1091) * lu(k,1237) + lu(k,1248) = lu(k,1248) - lu(k,1092) * lu(k,1237) + lu(k,1249) = lu(k,1249) - lu(k,1093) * lu(k,1237) + lu(k,1280) = lu(k,1280) - lu(k,1082) * lu(k,1279) + lu(k,1281) = lu(k,1281) - lu(k,1083) * lu(k,1279) + lu(k,1282) = lu(k,1282) - lu(k,1084) * lu(k,1279) + lu(k,1283) = lu(k,1283) - lu(k,1085) * lu(k,1279) + lu(k,1284) = lu(k,1284) - lu(k,1086) * lu(k,1279) + lu(k,1285) = lu(k,1285) - lu(k,1087) * lu(k,1279) + lu(k,1286) = lu(k,1286) - lu(k,1088) * lu(k,1279) + lu(k,1287) = lu(k,1287) - lu(k,1089) * lu(k,1279) + lu(k,1288) = lu(k,1288) - lu(k,1090) * lu(k,1279) + lu(k,1289) = lu(k,1289) - lu(k,1091) * lu(k,1279) + lu(k,1290) = lu(k,1290) - lu(k,1092) * lu(k,1279) + lu(k,1291) = lu(k,1291) - lu(k,1093) * lu(k,1279) + lu(k,1318) = lu(k,1318) - lu(k,1082) * lu(k,1317) + lu(k,1319) = lu(k,1319) - lu(k,1083) * lu(k,1317) + lu(k,1320) = lu(k,1320) - lu(k,1084) * lu(k,1317) + lu(k,1321) = lu(k,1321) - lu(k,1085) * lu(k,1317) + lu(k,1322) = lu(k,1322) - lu(k,1086) * lu(k,1317) + lu(k,1323) = lu(k,1323) - lu(k,1087) * lu(k,1317) + lu(k,1324) = lu(k,1324) - lu(k,1088) * lu(k,1317) + lu(k,1325) = lu(k,1325) - lu(k,1089) * lu(k,1317) + lu(k,1326) = lu(k,1326) - lu(k,1090) * lu(k,1317) + lu(k,1327) = lu(k,1327) - lu(k,1091) * lu(k,1317) + lu(k,1328) = lu(k,1328) - lu(k,1092) * lu(k,1317) + lu(k,1329) = lu(k,1329) - lu(k,1093) * lu(k,1317) + lu(k,1407) = lu(k,1407) - lu(k,1082) * lu(k,1406) + lu(k,1408) = lu(k,1408) - lu(k,1083) * lu(k,1406) + lu(k,1409) = lu(k,1409) - lu(k,1084) * lu(k,1406) + lu(k,1410) = lu(k,1410) - lu(k,1085) * lu(k,1406) + lu(k,1411) = lu(k,1411) - lu(k,1086) * lu(k,1406) + lu(k,1412) = lu(k,1412) - lu(k,1087) * lu(k,1406) + lu(k,1413) = lu(k,1413) - lu(k,1088) * lu(k,1406) + lu(k,1414) = lu(k,1414) - lu(k,1089) * lu(k,1406) + lu(k,1415) = lu(k,1415) - lu(k,1090) * lu(k,1406) + lu(k,1416) = lu(k,1416) - lu(k,1091) * lu(k,1406) + lu(k,1417) = lu(k,1417) - lu(k,1092) * lu(k,1406) + lu(k,1418) = lu(k,1418) - lu(k,1093) * lu(k,1406) + lu(k,1452) = lu(k,1452) - lu(k,1082) * lu(k,1451) + lu(k,1453) = lu(k,1453) - lu(k,1083) * lu(k,1451) + lu(k,1454) = lu(k,1454) - lu(k,1084) * lu(k,1451) + lu(k,1455) = lu(k,1455) - lu(k,1085) * lu(k,1451) + lu(k,1456) = lu(k,1456) - lu(k,1086) * lu(k,1451) + lu(k,1457) = lu(k,1457) - lu(k,1087) * lu(k,1451) + lu(k,1458) = lu(k,1458) - lu(k,1088) * lu(k,1451) + lu(k,1459) = lu(k,1459) - lu(k,1089) * lu(k,1451) + lu(k,1460) = lu(k,1460) - lu(k,1090) * lu(k,1451) + lu(k,1461) = lu(k,1461) - lu(k,1091) * lu(k,1451) + lu(k,1462) = lu(k,1462) - lu(k,1092) * lu(k,1451) + lu(k,1463) = lu(k,1463) - lu(k,1093) * lu(k,1451) + lu(k,1500) = lu(k,1500) - lu(k,1082) * lu(k,1499) + lu(k,1501) = lu(k,1501) - lu(k,1083) * lu(k,1499) + lu(k,1502) = lu(k,1502) - lu(k,1084) * lu(k,1499) + lu(k,1503) = lu(k,1503) - lu(k,1085) * lu(k,1499) + lu(k,1504) = lu(k,1504) - lu(k,1086) * lu(k,1499) + lu(k,1505) = lu(k,1505) - lu(k,1087) * lu(k,1499) + lu(k,1506) = lu(k,1506) - lu(k,1088) * lu(k,1499) + lu(k,1507) = lu(k,1507) - lu(k,1089) * lu(k,1499) + lu(k,1508) = lu(k,1508) - lu(k,1090) * lu(k,1499) + lu(k,1509) = lu(k,1509) - lu(k,1091) * lu(k,1499) + lu(k,1510) = lu(k,1510) - lu(k,1092) * lu(k,1499) + lu(k,1511) = lu(k,1511) - lu(k,1093) * lu(k,1499) + lu(k,1525) = lu(k,1525) - lu(k,1082) * lu(k,1524) + lu(k,1526) = lu(k,1526) - lu(k,1083) * lu(k,1524) + lu(k,1527) = lu(k,1527) - lu(k,1084) * lu(k,1524) + lu(k,1528) = lu(k,1528) - lu(k,1085) * lu(k,1524) + lu(k,1529) = lu(k,1529) - lu(k,1086) * lu(k,1524) + lu(k,1530) = lu(k,1530) - lu(k,1087) * lu(k,1524) + lu(k,1531) = lu(k,1531) - lu(k,1088) * lu(k,1524) + lu(k,1532) = lu(k,1532) - lu(k,1089) * lu(k,1524) + lu(k,1533) = lu(k,1533) - lu(k,1090) * lu(k,1524) + lu(k,1534) = lu(k,1534) - lu(k,1091) * lu(k,1524) + lu(k,1535) = lu(k,1535) - lu(k,1092) * lu(k,1524) + lu(k,1536) = lu(k,1536) - lu(k,1093) * lu(k,1524) + lu(k,1546) = lu(k,1546) - lu(k,1082) * lu(k,1545) + lu(k,1547) = lu(k,1547) - lu(k,1083) * lu(k,1545) + lu(k,1548) = lu(k,1548) - lu(k,1084) * lu(k,1545) + lu(k,1549) = lu(k,1549) - lu(k,1085) * lu(k,1545) + lu(k,1550) = lu(k,1550) - lu(k,1086) * lu(k,1545) + lu(k,1551) = lu(k,1551) - lu(k,1087) * lu(k,1545) + lu(k,1552) = lu(k,1552) - lu(k,1088) * lu(k,1545) + lu(k,1553) = lu(k,1553) - lu(k,1089) * lu(k,1545) + lu(k,1554) = lu(k,1554) - lu(k,1090) * lu(k,1545) + lu(k,1555) = lu(k,1555) - lu(k,1091) * lu(k,1545) + lu(k,1556) = lu(k,1556) - lu(k,1092) * lu(k,1545) + lu(k,1557) = lu(k,1557) - lu(k,1093) * lu(k,1545) + lu(k,1573) = lu(k,1573) - lu(k,1082) * lu(k,1572) + lu(k,1574) = lu(k,1574) - lu(k,1083) * lu(k,1572) + lu(k,1575) = lu(k,1575) - lu(k,1084) * lu(k,1572) + lu(k,1576) = lu(k,1576) - lu(k,1085) * lu(k,1572) + lu(k,1577) = lu(k,1577) - lu(k,1086) * lu(k,1572) + lu(k,1578) = lu(k,1578) - lu(k,1087) * lu(k,1572) + lu(k,1579) = lu(k,1579) - lu(k,1088) * lu(k,1572) + lu(k,1580) = lu(k,1580) - lu(k,1089) * lu(k,1572) + lu(k,1581) = lu(k,1581) - lu(k,1090) * lu(k,1572) + lu(k,1582) = lu(k,1582) - lu(k,1091) * lu(k,1572) + lu(k,1583) = lu(k,1583) - lu(k,1092) * lu(k,1572) + lu(k,1584) = lu(k,1584) - lu(k,1093) * lu(k,1572) + lu(k,1128) = 1._r8 / lu(k,1128) + lu(k,1129) = lu(k,1129) * lu(k,1128) + lu(k,1130) = lu(k,1130) * lu(k,1128) + lu(k,1131) = lu(k,1131) * lu(k,1128) + lu(k,1132) = lu(k,1132) * lu(k,1128) + lu(k,1133) = lu(k,1133) * lu(k,1128) + lu(k,1134) = lu(k,1134) * lu(k,1128) + lu(k,1135) = lu(k,1135) * lu(k,1128) + lu(k,1136) = lu(k,1136) * lu(k,1128) + lu(k,1137) = lu(k,1137) * lu(k,1128) + lu(k,1138) = lu(k,1138) * lu(k,1128) + lu(k,1139) = lu(k,1139) * lu(k,1128) + lu(k,1152) = lu(k,1152) - lu(k,1129) * lu(k,1151) + lu(k,1153) = lu(k,1153) - lu(k,1130) * lu(k,1151) + lu(k,1154) = lu(k,1154) - lu(k,1131) * lu(k,1151) + lu(k,1155) = lu(k,1155) - lu(k,1132) * lu(k,1151) + lu(k,1156) = lu(k,1156) - lu(k,1133) * lu(k,1151) + lu(k,1157) = lu(k,1157) - lu(k,1134) * lu(k,1151) + lu(k,1158) = lu(k,1158) - lu(k,1135) * lu(k,1151) + lu(k,1159) = lu(k,1159) - lu(k,1136) * lu(k,1151) + lu(k,1160) = lu(k,1160) - lu(k,1137) * lu(k,1151) + lu(k,1161) = lu(k,1161) - lu(k,1138) * lu(k,1151) + lu(k,1162) = lu(k,1162) - lu(k,1139) * lu(k,1151) + lu(k,1193) = lu(k,1193) - lu(k,1129) * lu(k,1192) + lu(k,1194) = lu(k,1194) - lu(k,1130) * lu(k,1192) + lu(k,1195) = lu(k,1195) - lu(k,1131) * lu(k,1192) + lu(k,1196) = lu(k,1196) - lu(k,1132) * lu(k,1192) + lu(k,1197) = lu(k,1197) - lu(k,1133) * lu(k,1192) + lu(k,1198) = lu(k,1198) - lu(k,1134) * lu(k,1192) + lu(k,1199) = lu(k,1199) - lu(k,1135) * lu(k,1192) + lu(k,1200) = lu(k,1200) - lu(k,1136) * lu(k,1192) + lu(k,1201) = lu(k,1201) - lu(k,1137) * lu(k,1192) + lu(k,1202) = lu(k,1202) - lu(k,1138) * lu(k,1192) + lu(k,1203) = lu(k,1203) - lu(k,1139) * lu(k,1192) + lu(k,1239) = lu(k,1239) - lu(k,1129) * lu(k,1238) + lu(k,1240) = lu(k,1240) - lu(k,1130) * lu(k,1238) + lu(k,1241) = lu(k,1241) - lu(k,1131) * lu(k,1238) + lu(k,1242) = lu(k,1242) - lu(k,1132) * lu(k,1238) + lu(k,1243) = lu(k,1243) - lu(k,1133) * lu(k,1238) + lu(k,1244) = lu(k,1244) - lu(k,1134) * lu(k,1238) + lu(k,1245) = lu(k,1245) - lu(k,1135) * lu(k,1238) + lu(k,1246) = lu(k,1246) - lu(k,1136) * lu(k,1238) + lu(k,1247) = lu(k,1247) - lu(k,1137) * lu(k,1238) + lu(k,1248) = lu(k,1248) - lu(k,1138) * lu(k,1238) + lu(k,1249) = lu(k,1249) - lu(k,1139) * lu(k,1238) + lu(k,1281) = lu(k,1281) - lu(k,1129) * lu(k,1280) + lu(k,1282) = lu(k,1282) - lu(k,1130) * lu(k,1280) + lu(k,1283) = lu(k,1283) - lu(k,1131) * lu(k,1280) + lu(k,1284) = lu(k,1284) - lu(k,1132) * lu(k,1280) + lu(k,1285) = lu(k,1285) - lu(k,1133) * lu(k,1280) + lu(k,1286) = lu(k,1286) - lu(k,1134) * lu(k,1280) + lu(k,1287) = lu(k,1287) - lu(k,1135) * lu(k,1280) + lu(k,1288) = lu(k,1288) - lu(k,1136) * lu(k,1280) + lu(k,1289) = lu(k,1289) - lu(k,1137) * lu(k,1280) + lu(k,1290) = lu(k,1290) - lu(k,1138) * lu(k,1280) + lu(k,1291) = lu(k,1291) - lu(k,1139) * lu(k,1280) + lu(k,1319) = lu(k,1319) - lu(k,1129) * lu(k,1318) + lu(k,1320) = lu(k,1320) - lu(k,1130) * lu(k,1318) + lu(k,1321) = lu(k,1321) - lu(k,1131) * lu(k,1318) + lu(k,1322) = lu(k,1322) - lu(k,1132) * lu(k,1318) + lu(k,1323) = lu(k,1323) - lu(k,1133) * lu(k,1318) + lu(k,1324) = lu(k,1324) - lu(k,1134) * lu(k,1318) + lu(k,1325) = lu(k,1325) - lu(k,1135) * lu(k,1318) + lu(k,1326) = lu(k,1326) - lu(k,1136) * lu(k,1318) + lu(k,1327) = lu(k,1327) - lu(k,1137) * lu(k,1318) + lu(k,1328) = lu(k,1328) - lu(k,1138) * lu(k,1318) + lu(k,1329) = lu(k,1329) - lu(k,1139) * lu(k,1318) + lu(k,1408) = lu(k,1408) - lu(k,1129) * lu(k,1407) + lu(k,1409) = lu(k,1409) - lu(k,1130) * lu(k,1407) + lu(k,1410) = lu(k,1410) - lu(k,1131) * lu(k,1407) + lu(k,1411) = lu(k,1411) - lu(k,1132) * lu(k,1407) + lu(k,1412) = lu(k,1412) - lu(k,1133) * lu(k,1407) + lu(k,1413) = lu(k,1413) - lu(k,1134) * lu(k,1407) + lu(k,1414) = lu(k,1414) - lu(k,1135) * lu(k,1407) + lu(k,1415) = lu(k,1415) - lu(k,1136) * lu(k,1407) + lu(k,1416) = lu(k,1416) - lu(k,1137) * lu(k,1407) + lu(k,1417) = lu(k,1417) - lu(k,1138) * lu(k,1407) + lu(k,1418) = lu(k,1418) - lu(k,1139) * lu(k,1407) + lu(k,1453) = lu(k,1453) - lu(k,1129) * lu(k,1452) + lu(k,1454) = lu(k,1454) - lu(k,1130) * lu(k,1452) + lu(k,1455) = lu(k,1455) - lu(k,1131) * lu(k,1452) + lu(k,1456) = lu(k,1456) - lu(k,1132) * lu(k,1452) + lu(k,1457) = lu(k,1457) - lu(k,1133) * lu(k,1452) + lu(k,1458) = lu(k,1458) - lu(k,1134) * lu(k,1452) + lu(k,1459) = lu(k,1459) - lu(k,1135) * lu(k,1452) + lu(k,1460) = lu(k,1460) - lu(k,1136) * lu(k,1452) + lu(k,1461) = lu(k,1461) - lu(k,1137) * lu(k,1452) + lu(k,1462) = lu(k,1462) - lu(k,1138) * lu(k,1452) + lu(k,1463) = lu(k,1463) - lu(k,1139) * lu(k,1452) + lu(k,1501) = lu(k,1501) - lu(k,1129) * lu(k,1500) + lu(k,1502) = lu(k,1502) - lu(k,1130) * lu(k,1500) + lu(k,1503) = lu(k,1503) - lu(k,1131) * lu(k,1500) + lu(k,1504) = lu(k,1504) - lu(k,1132) * lu(k,1500) + lu(k,1505) = lu(k,1505) - lu(k,1133) * lu(k,1500) + lu(k,1506) = lu(k,1506) - lu(k,1134) * lu(k,1500) + lu(k,1507) = lu(k,1507) - lu(k,1135) * lu(k,1500) + lu(k,1508) = lu(k,1508) - lu(k,1136) * lu(k,1500) + lu(k,1509) = lu(k,1509) - lu(k,1137) * lu(k,1500) + lu(k,1510) = lu(k,1510) - lu(k,1138) * lu(k,1500) + lu(k,1511) = lu(k,1511) - lu(k,1139) * lu(k,1500) + lu(k,1526) = lu(k,1526) - lu(k,1129) * lu(k,1525) + lu(k,1527) = lu(k,1527) - lu(k,1130) * lu(k,1525) + lu(k,1528) = lu(k,1528) - lu(k,1131) * lu(k,1525) + lu(k,1529) = lu(k,1529) - lu(k,1132) * lu(k,1525) + lu(k,1530) = lu(k,1530) - lu(k,1133) * lu(k,1525) + lu(k,1531) = lu(k,1531) - lu(k,1134) * lu(k,1525) + lu(k,1532) = lu(k,1532) - lu(k,1135) * lu(k,1525) + lu(k,1533) = lu(k,1533) - lu(k,1136) * lu(k,1525) + lu(k,1534) = lu(k,1534) - lu(k,1137) * lu(k,1525) + lu(k,1535) = lu(k,1535) - lu(k,1138) * lu(k,1525) + lu(k,1536) = lu(k,1536) - lu(k,1139) * lu(k,1525) + lu(k,1547) = lu(k,1547) - lu(k,1129) * lu(k,1546) + lu(k,1548) = lu(k,1548) - lu(k,1130) * lu(k,1546) + lu(k,1549) = lu(k,1549) - lu(k,1131) * lu(k,1546) + lu(k,1550) = lu(k,1550) - lu(k,1132) * lu(k,1546) + lu(k,1551) = lu(k,1551) - lu(k,1133) * lu(k,1546) + lu(k,1552) = lu(k,1552) - lu(k,1134) * lu(k,1546) + lu(k,1553) = lu(k,1553) - lu(k,1135) * lu(k,1546) + lu(k,1554) = lu(k,1554) - lu(k,1136) * lu(k,1546) + lu(k,1555) = lu(k,1555) - lu(k,1137) * lu(k,1546) + lu(k,1556) = lu(k,1556) - lu(k,1138) * lu(k,1546) + lu(k,1557) = lu(k,1557) - lu(k,1139) * lu(k,1546) + lu(k,1574) = lu(k,1574) - lu(k,1129) * lu(k,1573) + lu(k,1575) = lu(k,1575) - lu(k,1130) * lu(k,1573) + lu(k,1576) = lu(k,1576) - lu(k,1131) * lu(k,1573) + lu(k,1577) = lu(k,1577) - lu(k,1132) * lu(k,1573) + lu(k,1578) = lu(k,1578) - lu(k,1133) * lu(k,1573) + lu(k,1579) = lu(k,1579) - lu(k,1134) * lu(k,1573) + lu(k,1580) = lu(k,1580) - lu(k,1135) * lu(k,1573) + lu(k,1581) = lu(k,1581) - lu(k,1136) * lu(k,1573) + lu(k,1582) = lu(k,1582) - lu(k,1137) * lu(k,1573) + lu(k,1583) = lu(k,1583) - lu(k,1138) * lu(k,1573) + lu(k,1584) = lu(k,1584) - lu(k,1139) * lu(k,1573) + lu(k,1152) = 1._r8 / lu(k,1152) + lu(k,1153) = lu(k,1153) * lu(k,1152) + lu(k,1154) = lu(k,1154) * lu(k,1152) + lu(k,1155) = lu(k,1155) * lu(k,1152) + lu(k,1156) = lu(k,1156) * lu(k,1152) + lu(k,1157) = lu(k,1157) * lu(k,1152) + lu(k,1158) = lu(k,1158) * lu(k,1152) + lu(k,1159) = lu(k,1159) * lu(k,1152) + lu(k,1160) = lu(k,1160) * lu(k,1152) + lu(k,1161) = lu(k,1161) * lu(k,1152) + lu(k,1162) = lu(k,1162) * lu(k,1152) + lu(k,1194) = lu(k,1194) - lu(k,1153) * lu(k,1193) + lu(k,1195) = lu(k,1195) - lu(k,1154) * lu(k,1193) + lu(k,1196) = lu(k,1196) - lu(k,1155) * lu(k,1193) + lu(k,1197) = lu(k,1197) - lu(k,1156) * lu(k,1193) + lu(k,1198) = lu(k,1198) - lu(k,1157) * lu(k,1193) + lu(k,1199) = lu(k,1199) - lu(k,1158) * lu(k,1193) + lu(k,1200) = lu(k,1200) - lu(k,1159) * lu(k,1193) + lu(k,1201) = lu(k,1201) - lu(k,1160) * lu(k,1193) + lu(k,1202) = lu(k,1202) - lu(k,1161) * lu(k,1193) + lu(k,1203) = lu(k,1203) - lu(k,1162) * lu(k,1193) + lu(k,1240) = lu(k,1240) - lu(k,1153) * lu(k,1239) + lu(k,1241) = lu(k,1241) - lu(k,1154) * lu(k,1239) + lu(k,1242) = lu(k,1242) - lu(k,1155) * lu(k,1239) + lu(k,1243) = lu(k,1243) - lu(k,1156) * lu(k,1239) + lu(k,1244) = lu(k,1244) - lu(k,1157) * lu(k,1239) + lu(k,1245) = lu(k,1245) - lu(k,1158) * lu(k,1239) + lu(k,1246) = lu(k,1246) - lu(k,1159) * lu(k,1239) + lu(k,1247) = lu(k,1247) - lu(k,1160) * lu(k,1239) + lu(k,1248) = lu(k,1248) - lu(k,1161) * lu(k,1239) + lu(k,1249) = lu(k,1249) - lu(k,1162) * lu(k,1239) + lu(k,1282) = lu(k,1282) - lu(k,1153) * lu(k,1281) + lu(k,1283) = lu(k,1283) - lu(k,1154) * lu(k,1281) + lu(k,1284) = lu(k,1284) - lu(k,1155) * lu(k,1281) + lu(k,1285) = lu(k,1285) - lu(k,1156) * lu(k,1281) + lu(k,1286) = lu(k,1286) - lu(k,1157) * lu(k,1281) + lu(k,1287) = lu(k,1287) - lu(k,1158) * lu(k,1281) + lu(k,1288) = lu(k,1288) - lu(k,1159) * lu(k,1281) + lu(k,1289) = lu(k,1289) - lu(k,1160) * lu(k,1281) + lu(k,1290) = lu(k,1290) - lu(k,1161) * lu(k,1281) + lu(k,1291) = lu(k,1291) - lu(k,1162) * lu(k,1281) + lu(k,1320) = lu(k,1320) - lu(k,1153) * lu(k,1319) + lu(k,1321) = lu(k,1321) - lu(k,1154) * lu(k,1319) + lu(k,1322) = lu(k,1322) - lu(k,1155) * lu(k,1319) + lu(k,1323) = lu(k,1323) - lu(k,1156) * lu(k,1319) + lu(k,1324) = lu(k,1324) - lu(k,1157) * lu(k,1319) + lu(k,1325) = lu(k,1325) - lu(k,1158) * lu(k,1319) + lu(k,1326) = lu(k,1326) - lu(k,1159) * lu(k,1319) + lu(k,1327) = lu(k,1327) - lu(k,1160) * lu(k,1319) + lu(k,1328) = lu(k,1328) - lu(k,1161) * lu(k,1319) + lu(k,1329) = lu(k,1329) - lu(k,1162) * lu(k,1319) + lu(k,1409) = lu(k,1409) - lu(k,1153) * lu(k,1408) + lu(k,1410) = lu(k,1410) - lu(k,1154) * lu(k,1408) + lu(k,1411) = lu(k,1411) - lu(k,1155) * lu(k,1408) + lu(k,1412) = lu(k,1412) - lu(k,1156) * lu(k,1408) + lu(k,1413) = lu(k,1413) - lu(k,1157) * lu(k,1408) + lu(k,1414) = lu(k,1414) - lu(k,1158) * lu(k,1408) + lu(k,1415) = lu(k,1415) - lu(k,1159) * lu(k,1408) + lu(k,1416) = lu(k,1416) - lu(k,1160) * lu(k,1408) + lu(k,1417) = lu(k,1417) - lu(k,1161) * lu(k,1408) + lu(k,1418) = lu(k,1418) - lu(k,1162) * lu(k,1408) + lu(k,1454) = lu(k,1454) - lu(k,1153) * lu(k,1453) + lu(k,1455) = lu(k,1455) - lu(k,1154) * lu(k,1453) + lu(k,1456) = lu(k,1456) - lu(k,1155) * lu(k,1453) + lu(k,1457) = lu(k,1457) - lu(k,1156) * lu(k,1453) + lu(k,1458) = lu(k,1458) - lu(k,1157) * lu(k,1453) + lu(k,1459) = lu(k,1459) - lu(k,1158) * lu(k,1453) + lu(k,1460) = lu(k,1460) - lu(k,1159) * lu(k,1453) + lu(k,1461) = lu(k,1461) - lu(k,1160) * lu(k,1453) + lu(k,1462) = lu(k,1462) - lu(k,1161) * lu(k,1453) + lu(k,1463) = lu(k,1463) - lu(k,1162) * lu(k,1453) + lu(k,1502) = lu(k,1502) - lu(k,1153) * lu(k,1501) + lu(k,1503) = lu(k,1503) - lu(k,1154) * lu(k,1501) + lu(k,1504) = lu(k,1504) - lu(k,1155) * lu(k,1501) + lu(k,1505) = lu(k,1505) - lu(k,1156) * lu(k,1501) + lu(k,1506) = lu(k,1506) - lu(k,1157) * lu(k,1501) + lu(k,1507) = lu(k,1507) - lu(k,1158) * lu(k,1501) + lu(k,1508) = lu(k,1508) - lu(k,1159) * lu(k,1501) + lu(k,1509) = lu(k,1509) - lu(k,1160) * lu(k,1501) + lu(k,1510) = lu(k,1510) - lu(k,1161) * lu(k,1501) + lu(k,1511) = lu(k,1511) - lu(k,1162) * lu(k,1501) + lu(k,1527) = lu(k,1527) - lu(k,1153) * lu(k,1526) + lu(k,1528) = lu(k,1528) - lu(k,1154) * lu(k,1526) + lu(k,1529) = lu(k,1529) - lu(k,1155) * lu(k,1526) + lu(k,1530) = lu(k,1530) - lu(k,1156) * lu(k,1526) + lu(k,1531) = lu(k,1531) - lu(k,1157) * lu(k,1526) + lu(k,1532) = lu(k,1532) - lu(k,1158) * lu(k,1526) + lu(k,1533) = lu(k,1533) - lu(k,1159) * lu(k,1526) + lu(k,1534) = lu(k,1534) - lu(k,1160) * lu(k,1526) + lu(k,1535) = lu(k,1535) - lu(k,1161) * lu(k,1526) + lu(k,1536) = lu(k,1536) - lu(k,1162) * lu(k,1526) + lu(k,1548) = lu(k,1548) - lu(k,1153) * lu(k,1547) + lu(k,1549) = lu(k,1549) - lu(k,1154) * lu(k,1547) + lu(k,1550) = lu(k,1550) - lu(k,1155) * lu(k,1547) + lu(k,1551) = lu(k,1551) - lu(k,1156) * lu(k,1547) + lu(k,1552) = lu(k,1552) - lu(k,1157) * lu(k,1547) + lu(k,1553) = lu(k,1553) - lu(k,1158) * lu(k,1547) + lu(k,1554) = lu(k,1554) - lu(k,1159) * lu(k,1547) + lu(k,1555) = lu(k,1555) - lu(k,1160) * lu(k,1547) + lu(k,1556) = lu(k,1556) - lu(k,1161) * lu(k,1547) + lu(k,1557) = lu(k,1557) - lu(k,1162) * lu(k,1547) + lu(k,1575) = lu(k,1575) - lu(k,1153) * lu(k,1574) + lu(k,1576) = lu(k,1576) - lu(k,1154) * lu(k,1574) + lu(k,1577) = lu(k,1577) - lu(k,1155) * lu(k,1574) + lu(k,1578) = lu(k,1578) - lu(k,1156) * lu(k,1574) + lu(k,1579) = lu(k,1579) - lu(k,1157) * lu(k,1574) + lu(k,1580) = lu(k,1580) - lu(k,1158) * lu(k,1574) + lu(k,1581) = lu(k,1581) - lu(k,1159) * lu(k,1574) + lu(k,1582) = lu(k,1582) - lu(k,1160) * lu(k,1574) + lu(k,1583) = lu(k,1583) - lu(k,1161) * lu(k,1574) + lu(k,1584) = lu(k,1584) - lu(k,1162) * lu(k,1574) + lu(k,1194) = 1._r8 / lu(k,1194) + lu(k,1195) = lu(k,1195) * lu(k,1194) + lu(k,1196) = lu(k,1196) * lu(k,1194) + lu(k,1197) = lu(k,1197) * lu(k,1194) + lu(k,1198) = lu(k,1198) * lu(k,1194) + lu(k,1199) = lu(k,1199) * lu(k,1194) + lu(k,1200) = lu(k,1200) * lu(k,1194) + lu(k,1201) = lu(k,1201) * lu(k,1194) + lu(k,1202) = lu(k,1202) * lu(k,1194) + lu(k,1203) = lu(k,1203) * lu(k,1194) + lu(k,1241) = lu(k,1241) - lu(k,1195) * lu(k,1240) + lu(k,1242) = lu(k,1242) - lu(k,1196) * lu(k,1240) + lu(k,1243) = lu(k,1243) - lu(k,1197) * lu(k,1240) + lu(k,1244) = lu(k,1244) - lu(k,1198) * lu(k,1240) + lu(k,1245) = lu(k,1245) - lu(k,1199) * lu(k,1240) + lu(k,1246) = lu(k,1246) - lu(k,1200) * lu(k,1240) + lu(k,1247) = lu(k,1247) - lu(k,1201) * lu(k,1240) + lu(k,1248) = lu(k,1248) - lu(k,1202) * lu(k,1240) + lu(k,1249) = lu(k,1249) - lu(k,1203) * lu(k,1240) + lu(k,1283) = lu(k,1283) - lu(k,1195) * lu(k,1282) + lu(k,1284) = lu(k,1284) - lu(k,1196) * lu(k,1282) + lu(k,1285) = lu(k,1285) - lu(k,1197) * lu(k,1282) + lu(k,1286) = lu(k,1286) - lu(k,1198) * lu(k,1282) + lu(k,1287) = lu(k,1287) - lu(k,1199) * lu(k,1282) + lu(k,1288) = lu(k,1288) - lu(k,1200) * lu(k,1282) + lu(k,1289) = lu(k,1289) - lu(k,1201) * lu(k,1282) + lu(k,1290) = lu(k,1290) - lu(k,1202) * lu(k,1282) + lu(k,1291) = lu(k,1291) - lu(k,1203) * lu(k,1282) + lu(k,1321) = lu(k,1321) - lu(k,1195) * lu(k,1320) + lu(k,1322) = lu(k,1322) - lu(k,1196) * lu(k,1320) + lu(k,1323) = lu(k,1323) - lu(k,1197) * lu(k,1320) + lu(k,1324) = lu(k,1324) - lu(k,1198) * lu(k,1320) + lu(k,1325) = lu(k,1325) - lu(k,1199) * lu(k,1320) + lu(k,1326) = lu(k,1326) - lu(k,1200) * lu(k,1320) + lu(k,1327) = lu(k,1327) - lu(k,1201) * lu(k,1320) + lu(k,1328) = lu(k,1328) - lu(k,1202) * lu(k,1320) + lu(k,1329) = lu(k,1329) - lu(k,1203) * lu(k,1320) + lu(k,1410) = lu(k,1410) - lu(k,1195) * lu(k,1409) + lu(k,1411) = lu(k,1411) - lu(k,1196) * lu(k,1409) + lu(k,1412) = lu(k,1412) - lu(k,1197) * lu(k,1409) + lu(k,1413) = lu(k,1413) - lu(k,1198) * lu(k,1409) + lu(k,1414) = lu(k,1414) - lu(k,1199) * lu(k,1409) + lu(k,1415) = lu(k,1415) - lu(k,1200) * lu(k,1409) + lu(k,1416) = lu(k,1416) - lu(k,1201) * lu(k,1409) + lu(k,1417) = lu(k,1417) - lu(k,1202) * lu(k,1409) + lu(k,1418) = lu(k,1418) - lu(k,1203) * lu(k,1409) + lu(k,1455) = lu(k,1455) - lu(k,1195) * lu(k,1454) + lu(k,1456) = lu(k,1456) - lu(k,1196) * lu(k,1454) + lu(k,1457) = lu(k,1457) - lu(k,1197) * lu(k,1454) + lu(k,1458) = lu(k,1458) - lu(k,1198) * lu(k,1454) + lu(k,1459) = lu(k,1459) - lu(k,1199) * lu(k,1454) + lu(k,1460) = lu(k,1460) - lu(k,1200) * lu(k,1454) + lu(k,1461) = lu(k,1461) - lu(k,1201) * lu(k,1454) + lu(k,1462) = lu(k,1462) - lu(k,1202) * lu(k,1454) + lu(k,1463) = lu(k,1463) - lu(k,1203) * lu(k,1454) + lu(k,1503) = lu(k,1503) - lu(k,1195) * lu(k,1502) + lu(k,1504) = lu(k,1504) - lu(k,1196) * lu(k,1502) + lu(k,1505) = lu(k,1505) - lu(k,1197) * lu(k,1502) + lu(k,1506) = lu(k,1506) - lu(k,1198) * lu(k,1502) + lu(k,1507) = lu(k,1507) - lu(k,1199) * lu(k,1502) + lu(k,1508) = lu(k,1508) - lu(k,1200) * lu(k,1502) + lu(k,1509) = lu(k,1509) - lu(k,1201) * lu(k,1502) + lu(k,1510) = lu(k,1510) - lu(k,1202) * lu(k,1502) + lu(k,1511) = lu(k,1511) - lu(k,1203) * lu(k,1502) + lu(k,1528) = lu(k,1528) - lu(k,1195) * lu(k,1527) + lu(k,1529) = lu(k,1529) - lu(k,1196) * lu(k,1527) + lu(k,1530) = lu(k,1530) - lu(k,1197) * lu(k,1527) + lu(k,1531) = lu(k,1531) - lu(k,1198) * lu(k,1527) + lu(k,1532) = lu(k,1532) - lu(k,1199) * lu(k,1527) + lu(k,1533) = lu(k,1533) - lu(k,1200) * lu(k,1527) + lu(k,1534) = lu(k,1534) - lu(k,1201) * lu(k,1527) + lu(k,1535) = lu(k,1535) - lu(k,1202) * lu(k,1527) + lu(k,1536) = lu(k,1536) - lu(k,1203) * lu(k,1527) + lu(k,1549) = lu(k,1549) - lu(k,1195) * lu(k,1548) + lu(k,1550) = lu(k,1550) - lu(k,1196) * lu(k,1548) + lu(k,1551) = lu(k,1551) - lu(k,1197) * lu(k,1548) + lu(k,1552) = lu(k,1552) - lu(k,1198) * lu(k,1548) + lu(k,1553) = lu(k,1553) - lu(k,1199) * lu(k,1548) + lu(k,1554) = lu(k,1554) - lu(k,1200) * lu(k,1548) + lu(k,1555) = lu(k,1555) - lu(k,1201) * lu(k,1548) + lu(k,1556) = lu(k,1556) - lu(k,1202) * lu(k,1548) + lu(k,1557) = lu(k,1557) - lu(k,1203) * lu(k,1548) + lu(k,1576) = lu(k,1576) - lu(k,1195) * lu(k,1575) + lu(k,1577) = lu(k,1577) - lu(k,1196) * lu(k,1575) + lu(k,1578) = lu(k,1578) - lu(k,1197) * lu(k,1575) + lu(k,1579) = lu(k,1579) - lu(k,1198) * lu(k,1575) + lu(k,1580) = lu(k,1580) - lu(k,1199) * lu(k,1575) + lu(k,1581) = lu(k,1581) - lu(k,1200) * lu(k,1575) + lu(k,1582) = lu(k,1582) - lu(k,1201) * lu(k,1575) + lu(k,1583) = lu(k,1583) - lu(k,1202) * lu(k,1575) + lu(k,1584) = lu(k,1584) - lu(k,1203) * lu(k,1575) + end do + end subroutine lu_fac20 + subroutine lu_fac21( avec_len, lu ) + use chem_mods, only : nzcnt + use shr_kind_mod, only : r8 => shr_kind_r8 + implicit none +!----------------------------------------------------------------------- +! ... dummy args +!----------------------------------------------------------------------- + integer, intent(in) :: avec_len + real(r8), intent(inout) :: lu(veclen,nzcnt) +!----------------------------------------------------------------------- +! ... local variables +!----------------------------------------------------------------------- + integer :: k + do k = 1,avec_len + lu(k,1241) = 1._r8 / lu(k,1241) + lu(k,1242) = lu(k,1242) * lu(k,1241) + lu(k,1243) = lu(k,1243) * lu(k,1241) + lu(k,1244) = lu(k,1244) * lu(k,1241) + lu(k,1245) = lu(k,1245) * lu(k,1241) + lu(k,1246) = lu(k,1246) * lu(k,1241) + lu(k,1247) = lu(k,1247) * lu(k,1241) + lu(k,1248) = lu(k,1248) * lu(k,1241) + lu(k,1249) = lu(k,1249) * lu(k,1241) + lu(k,1284) = lu(k,1284) - lu(k,1242) * lu(k,1283) + lu(k,1285) = lu(k,1285) - lu(k,1243) * lu(k,1283) + lu(k,1286) = lu(k,1286) - lu(k,1244) * lu(k,1283) + lu(k,1287) = lu(k,1287) - lu(k,1245) * lu(k,1283) + lu(k,1288) = lu(k,1288) - lu(k,1246) * lu(k,1283) + lu(k,1289) = lu(k,1289) - lu(k,1247) * lu(k,1283) + lu(k,1290) = lu(k,1290) - lu(k,1248) * lu(k,1283) + lu(k,1291) = lu(k,1291) - lu(k,1249) * lu(k,1283) + lu(k,1322) = lu(k,1322) - lu(k,1242) * lu(k,1321) + lu(k,1323) = lu(k,1323) - lu(k,1243) * lu(k,1321) + lu(k,1324) = lu(k,1324) - lu(k,1244) * lu(k,1321) + lu(k,1325) = lu(k,1325) - lu(k,1245) * lu(k,1321) + lu(k,1326) = lu(k,1326) - lu(k,1246) * lu(k,1321) + lu(k,1327) = lu(k,1327) - lu(k,1247) * lu(k,1321) + lu(k,1328) = lu(k,1328) - lu(k,1248) * lu(k,1321) + lu(k,1329) = lu(k,1329) - lu(k,1249) * lu(k,1321) + lu(k,1411) = lu(k,1411) - lu(k,1242) * lu(k,1410) + lu(k,1412) = lu(k,1412) - lu(k,1243) * lu(k,1410) + lu(k,1413) = lu(k,1413) - lu(k,1244) * lu(k,1410) + lu(k,1414) = lu(k,1414) - lu(k,1245) * lu(k,1410) + lu(k,1415) = lu(k,1415) - lu(k,1246) * lu(k,1410) + lu(k,1416) = lu(k,1416) - lu(k,1247) * lu(k,1410) + lu(k,1417) = lu(k,1417) - lu(k,1248) * lu(k,1410) + lu(k,1418) = lu(k,1418) - lu(k,1249) * lu(k,1410) + lu(k,1456) = lu(k,1456) - lu(k,1242) * lu(k,1455) + lu(k,1457) = lu(k,1457) - lu(k,1243) * lu(k,1455) + lu(k,1458) = lu(k,1458) - lu(k,1244) * lu(k,1455) + lu(k,1459) = lu(k,1459) - lu(k,1245) * lu(k,1455) + lu(k,1460) = lu(k,1460) - lu(k,1246) * lu(k,1455) + lu(k,1461) = lu(k,1461) - lu(k,1247) * lu(k,1455) + lu(k,1462) = lu(k,1462) - lu(k,1248) * lu(k,1455) + lu(k,1463) = lu(k,1463) - lu(k,1249) * lu(k,1455) + lu(k,1504) = lu(k,1504) - lu(k,1242) * lu(k,1503) + lu(k,1505) = lu(k,1505) - lu(k,1243) * lu(k,1503) + lu(k,1506) = lu(k,1506) - lu(k,1244) * lu(k,1503) + lu(k,1507) = lu(k,1507) - lu(k,1245) * lu(k,1503) + lu(k,1508) = lu(k,1508) - lu(k,1246) * lu(k,1503) + lu(k,1509) = lu(k,1509) - lu(k,1247) * lu(k,1503) + lu(k,1510) = lu(k,1510) - lu(k,1248) * lu(k,1503) + lu(k,1511) = lu(k,1511) - lu(k,1249) * lu(k,1503) + lu(k,1529) = lu(k,1529) - lu(k,1242) * lu(k,1528) + lu(k,1530) = lu(k,1530) - lu(k,1243) * lu(k,1528) + lu(k,1531) = lu(k,1531) - lu(k,1244) * lu(k,1528) + lu(k,1532) = lu(k,1532) - lu(k,1245) * lu(k,1528) + lu(k,1533) = lu(k,1533) - lu(k,1246) * lu(k,1528) + lu(k,1534) = lu(k,1534) - lu(k,1247) * lu(k,1528) + lu(k,1535) = lu(k,1535) - lu(k,1248) * lu(k,1528) + lu(k,1536) = lu(k,1536) - lu(k,1249) * lu(k,1528) + lu(k,1550) = lu(k,1550) - lu(k,1242) * lu(k,1549) + lu(k,1551) = lu(k,1551) - lu(k,1243) * lu(k,1549) + lu(k,1552) = lu(k,1552) - lu(k,1244) * lu(k,1549) + lu(k,1553) = lu(k,1553) - lu(k,1245) * lu(k,1549) + lu(k,1554) = lu(k,1554) - lu(k,1246) * lu(k,1549) + lu(k,1555) = lu(k,1555) - lu(k,1247) * lu(k,1549) + lu(k,1556) = lu(k,1556) - lu(k,1248) * lu(k,1549) + lu(k,1557) = lu(k,1557) - lu(k,1249) * lu(k,1549) + lu(k,1577) = lu(k,1577) - lu(k,1242) * lu(k,1576) + lu(k,1578) = lu(k,1578) - lu(k,1243) * lu(k,1576) + lu(k,1579) = lu(k,1579) - lu(k,1244) * lu(k,1576) + lu(k,1580) = lu(k,1580) - lu(k,1245) * lu(k,1576) + lu(k,1581) = lu(k,1581) - lu(k,1246) * lu(k,1576) + lu(k,1582) = lu(k,1582) - lu(k,1247) * lu(k,1576) + lu(k,1583) = lu(k,1583) - lu(k,1248) * lu(k,1576) + lu(k,1584) = lu(k,1584) - lu(k,1249) * lu(k,1576) + lu(k,1284) = 1._r8 / lu(k,1284) + lu(k,1285) = lu(k,1285) * lu(k,1284) + lu(k,1286) = lu(k,1286) * lu(k,1284) + lu(k,1287) = lu(k,1287) * lu(k,1284) + lu(k,1288) = lu(k,1288) * lu(k,1284) + lu(k,1289) = lu(k,1289) * lu(k,1284) + lu(k,1290) = lu(k,1290) * lu(k,1284) + lu(k,1291) = lu(k,1291) * lu(k,1284) + lu(k,1323) = lu(k,1323) - lu(k,1285) * lu(k,1322) + lu(k,1324) = lu(k,1324) - lu(k,1286) * lu(k,1322) + lu(k,1325) = lu(k,1325) - lu(k,1287) * lu(k,1322) + lu(k,1326) = lu(k,1326) - lu(k,1288) * lu(k,1322) + lu(k,1327) = lu(k,1327) - lu(k,1289) * lu(k,1322) + lu(k,1328) = lu(k,1328) - lu(k,1290) * lu(k,1322) + lu(k,1329) = lu(k,1329) - lu(k,1291) * lu(k,1322) + lu(k,1412) = lu(k,1412) - lu(k,1285) * lu(k,1411) + lu(k,1413) = lu(k,1413) - lu(k,1286) * lu(k,1411) + lu(k,1414) = lu(k,1414) - lu(k,1287) * lu(k,1411) + lu(k,1415) = lu(k,1415) - lu(k,1288) * lu(k,1411) + lu(k,1416) = lu(k,1416) - lu(k,1289) * lu(k,1411) + lu(k,1417) = lu(k,1417) - lu(k,1290) * lu(k,1411) + lu(k,1418) = lu(k,1418) - lu(k,1291) * lu(k,1411) + lu(k,1457) = lu(k,1457) - lu(k,1285) * lu(k,1456) + lu(k,1458) = lu(k,1458) - lu(k,1286) * lu(k,1456) + lu(k,1459) = lu(k,1459) - lu(k,1287) * lu(k,1456) + lu(k,1460) = lu(k,1460) - lu(k,1288) * lu(k,1456) + lu(k,1461) = lu(k,1461) - lu(k,1289) * lu(k,1456) + lu(k,1462) = lu(k,1462) - lu(k,1290) * lu(k,1456) + lu(k,1463) = lu(k,1463) - lu(k,1291) * lu(k,1456) + lu(k,1505) = lu(k,1505) - lu(k,1285) * lu(k,1504) + lu(k,1506) = lu(k,1506) - lu(k,1286) * lu(k,1504) + lu(k,1507) = lu(k,1507) - lu(k,1287) * lu(k,1504) + lu(k,1508) = lu(k,1508) - lu(k,1288) * lu(k,1504) + lu(k,1509) = lu(k,1509) - lu(k,1289) * lu(k,1504) + lu(k,1510) = lu(k,1510) - lu(k,1290) * lu(k,1504) + lu(k,1511) = lu(k,1511) - lu(k,1291) * lu(k,1504) + lu(k,1530) = lu(k,1530) - lu(k,1285) * lu(k,1529) + lu(k,1531) = lu(k,1531) - lu(k,1286) * lu(k,1529) + lu(k,1532) = lu(k,1532) - lu(k,1287) * lu(k,1529) + lu(k,1533) = lu(k,1533) - lu(k,1288) * lu(k,1529) + lu(k,1534) = lu(k,1534) - lu(k,1289) * lu(k,1529) + lu(k,1535) = lu(k,1535) - lu(k,1290) * lu(k,1529) + lu(k,1536) = lu(k,1536) - lu(k,1291) * lu(k,1529) + lu(k,1551) = lu(k,1551) - lu(k,1285) * lu(k,1550) + lu(k,1552) = lu(k,1552) - lu(k,1286) * lu(k,1550) + lu(k,1553) = lu(k,1553) - lu(k,1287) * lu(k,1550) + lu(k,1554) = lu(k,1554) - lu(k,1288) * lu(k,1550) + lu(k,1555) = lu(k,1555) - lu(k,1289) * lu(k,1550) + lu(k,1556) = lu(k,1556) - lu(k,1290) * lu(k,1550) + lu(k,1557) = lu(k,1557) - lu(k,1291) * lu(k,1550) + lu(k,1578) = lu(k,1578) - lu(k,1285) * lu(k,1577) + lu(k,1579) = lu(k,1579) - lu(k,1286) * lu(k,1577) + lu(k,1580) = lu(k,1580) - lu(k,1287) * lu(k,1577) + lu(k,1581) = lu(k,1581) - lu(k,1288) * lu(k,1577) + lu(k,1582) = lu(k,1582) - lu(k,1289) * lu(k,1577) + lu(k,1583) = lu(k,1583) - lu(k,1290) * lu(k,1577) + lu(k,1584) = lu(k,1584) - lu(k,1291) * lu(k,1577) + lu(k,1323) = 1._r8 / lu(k,1323) + lu(k,1324) = lu(k,1324) * lu(k,1323) + lu(k,1325) = lu(k,1325) * lu(k,1323) + lu(k,1326) = lu(k,1326) * lu(k,1323) + lu(k,1327) = lu(k,1327) * lu(k,1323) + lu(k,1328) = lu(k,1328) * lu(k,1323) + lu(k,1329) = lu(k,1329) * lu(k,1323) + lu(k,1413) = lu(k,1413) - lu(k,1324) * lu(k,1412) + lu(k,1414) = lu(k,1414) - lu(k,1325) * lu(k,1412) + lu(k,1415) = lu(k,1415) - lu(k,1326) * lu(k,1412) + lu(k,1416) = lu(k,1416) - lu(k,1327) * lu(k,1412) + lu(k,1417) = lu(k,1417) - lu(k,1328) * lu(k,1412) + lu(k,1418) = lu(k,1418) - lu(k,1329) * lu(k,1412) + lu(k,1458) = lu(k,1458) - lu(k,1324) * lu(k,1457) + lu(k,1459) = lu(k,1459) - lu(k,1325) * lu(k,1457) + lu(k,1460) = lu(k,1460) - lu(k,1326) * lu(k,1457) + lu(k,1461) = lu(k,1461) - lu(k,1327) * lu(k,1457) + lu(k,1462) = lu(k,1462) - lu(k,1328) * lu(k,1457) + lu(k,1463) = lu(k,1463) - lu(k,1329) * lu(k,1457) + lu(k,1506) = lu(k,1506) - lu(k,1324) * lu(k,1505) + lu(k,1507) = lu(k,1507) - lu(k,1325) * lu(k,1505) + lu(k,1508) = lu(k,1508) - lu(k,1326) * lu(k,1505) + lu(k,1509) = lu(k,1509) - lu(k,1327) * lu(k,1505) + lu(k,1510) = lu(k,1510) - lu(k,1328) * lu(k,1505) + lu(k,1511) = lu(k,1511) - lu(k,1329) * lu(k,1505) + lu(k,1531) = lu(k,1531) - lu(k,1324) * lu(k,1530) + lu(k,1532) = lu(k,1532) - lu(k,1325) * lu(k,1530) + lu(k,1533) = lu(k,1533) - lu(k,1326) * lu(k,1530) + lu(k,1534) = lu(k,1534) - lu(k,1327) * lu(k,1530) + lu(k,1535) = lu(k,1535) - lu(k,1328) * lu(k,1530) + lu(k,1536) = lu(k,1536) - lu(k,1329) * lu(k,1530) + lu(k,1552) = lu(k,1552) - lu(k,1324) * lu(k,1551) + lu(k,1553) = lu(k,1553) - lu(k,1325) * lu(k,1551) + lu(k,1554) = lu(k,1554) - lu(k,1326) * lu(k,1551) + lu(k,1555) = lu(k,1555) - lu(k,1327) * lu(k,1551) + lu(k,1556) = lu(k,1556) - lu(k,1328) * lu(k,1551) + lu(k,1557) = lu(k,1557) - lu(k,1329) * lu(k,1551) + lu(k,1579) = lu(k,1579) - lu(k,1324) * lu(k,1578) + lu(k,1580) = lu(k,1580) - lu(k,1325) * lu(k,1578) + lu(k,1581) = lu(k,1581) - lu(k,1326) * lu(k,1578) + lu(k,1582) = lu(k,1582) - lu(k,1327) * lu(k,1578) + lu(k,1583) = lu(k,1583) - lu(k,1328) * lu(k,1578) + lu(k,1584) = lu(k,1584) - lu(k,1329) * lu(k,1578) + lu(k,1413) = 1._r8 / lu(k,1413) + lu(k,1414) = lu(k,1414) * lu(k,1413) + lu(k,1415) = lu(k,1415) * lu(k,1413) + lu(k,1416) = lu(k,1416) * lu(k,1413) + lu(k,1417) = lu(k,1417) * lu(k,1413) + lu(k,1418) = lu(k,1418) * lu(k,1413) + lu(k,1459) = lu(k,1459) - lu(k,1414) * lu(k,1458) + lu(k,1460) = lu(k,1460) - lu(k,1415) * lu(k,1458) + lu(k,1461) = lu(k,1461) - lu(k,1416) * lu(k,1458) + lu(k,1462) = lu(k,1462) - lu(k,1417) * lu(k,1458) + lu(k,1463) = lu(k,1463) - lu(k,1418) * lu(k,1458) + lu(k,1507) = lu(k,1507) - lu(k,1414) * lu(k,1506) + lu(k,1508) = lu(k,1508) - lu(k,1415) * lu(k,1506) + lu(k,1509) = lu(k,1509) - lu(k,1416) * lu(k,1506) + lu(k,1510) = lu(k,1510) - lu(k,1417) * lu(k,1506) + lu(k,1511) = lu(k,1511) - lu(k,1418) * lu(k,1506) + lu(k,1532) = lu(k,1532) - lu(k,1414) * lu(k,1531) + lu(k,1533) = lu(k,1533) - lu(k,1415) * lu(k,1531) + lu(k,1534) = lu(k,1534) - lu(k,1416) * lu(k,1531) + lu(k,1535) = lu(k,1535) - lu(k,1417) * lu(k,1531) + lu(k,1536) = lu(k,1536) - lu(k,1418) * lu(k,1531) + lu(k,1553) = lu(k,1553) - lu(k,1414) * lu(k,1552) + lu(k,1554) = lu(k,1554) - lu(k,1415) * lu(k,1552) + lu(k,1555) = lu(k,1555) - lu(k,1416) * lu(k,1552) + lu(k,1556) = lu(k,1556) - lu(k,1417) * lu(k,1552) + lu(k,1557) = lu(k,1557) - lu(k,1418) * lu(k,1552) + lu(k,1580) = lu(k,1580) - lu(k,1414) * lu(k,1579) + lu(k,1581) = lu(k,1581) - lu(k,1415) * lu(k,1579) + lu(k,1582) = lu(k,1582) - lu(k,1416) * lu(k,1579) + lu(k,1583) = lu(k,1583) - lu(k,1417) * lu(k,1579) + lu(k,1584) = lu(k,1584) - lu(k,1418) * lu(k,1579) + lu(k,1459) = 1._r8 / lu(k,1459) + lu(k,1460) = lu(k,1460) * lu(k,1459) + lu(k,1461) = lu(k,1461) * lu(k,1459) + lu(k,1462) = lu(k,1462) * lu(k,1459) + lu(k,1463) = lu(k,1463) * lu(k,1459) + lu(k,1508) = lu(k,1508) - lu(k,1460) * lu(k,1507) + lu(k,1509) = lu(k,1509) - lu(k,1461) * lu(k,1507) + lu(k,1510) = lu(k,1510) - lu(k,1462) * lu(k,1507) + lu(k,1511) = lu(k,1511) - lu(k,1463) * lu(k,1507) + lu(k,1533) = lu(k,1533) - lu(k,1460) * lu(k,1532) + lu(k,1534) = lu(k,1534) - lu(k,1461) * lu(k,1532) + lu(k,1535) = lu(k,1535) - lu(k,1462) * lu(k,1532) + lu(k,1536) = lu(k,1536) - lu(k,1463) * lu(k,1532) + lu(k,1554) = lu(k,1554) - lu(k,1460) * lu(k,1553) + lu(k,1555) = lu(k,1555) - lu(k,1461) * lu(k,1553) + lu(k,1556) = lu(k,1556) - lu(k,1462) * lu(k,1553) + lu(k,1557) = lu(k,1557) - lu(k,1463) * lu(k,1553) + lu(k,1581) = lu(k,1581) - lu(k,1460) * lu(k,1580) + lu(k,1582) = lu(k,1582) - lu(k,1461) * lu(k,1580) + lu(k,1583) = lu(k,1583) - lu(k,1462) * lu(k,1580) + lu(k,1584) = lu(k,1584) - lu(k,1463) * lu(k,1580) + lu(k,1508) = 1._r8 / lu(k,1508) + lu(k,1509) = lu(k,1509) * lu(k,1508) + lu(k,1510) = lu(k,1510) * lu(k,1508) + lu(k,1511) = lu(k,1511) * lu(k,1508) + lu(k,1534) = lu(k,1534) - lu(k,1509) * lu(k,1533) + lu(k,1535) = lu(k,1535) - lu(k,1510) * lu(k,1533) + lu(k,1536) = lu(k,1536) - lu(k,1511) * lu(k,1533) + lu(k,1555) = lu(k,1555) - lu(k,1509) * lu(k,1554) + lu(k,1556) = lu(k,1556) - lu(k,1510) * lu(k,1554) + lu(k,1557) = lu(k,1557) - lu(k,1511) * lu(k,1554) + lu(k,1582) = lu(k,1582) - lu(k,1509) * lu(k,1581) + lu(k,1583) = lu(k,1583) - lu(k,1510) * lu(k,1581) + lu(k,1584) = lu(k,1584) - lu(k,1511) * lu(k,1581) + lu(k,1534) = 1._r8 / lu(k,1534) + lu(k,1535) = lu(k,1535) * lu(k,1534) + lu(k,1536) = lu(k,1536) * lu(k,1534) + lu(k,1556) = lu(k,1556) - lu(k,1535) * lu(k,1555) + lu(k,1557) = lu(k,1557) - lu(k,1536) * lu(k,1555) + lu(k,1583) = lu(k,1583) - lu(k,1535) * lu(k,1582) + lu(k,1584) = lu(k,1584) - lu(k,1536) * lu(k,1582) + lu(k,1556) = 1._r8 / lu(k,1556) + lu(k,1557) = lu(k,1557) * lu(k,1556) + lu(k,1584) = lu(k,1584) - lu(k,1557) * lu(k,1583) + lu(k,1584) = 1._r8 / lu(k,1584) + end do + end subroutine lu_fac21 + subroutine lu_fac( avec_len, lu ) + use chem_mods, only : nzcnt + use shr_kind_mod, only : r8 => shr_kind_r8 + implicit none +!----------------------------------------------------------------------- +! ... dummy args +!----------------------------------------------------------------------- + integer, intent(in) :: avec_len + real(r8), intent(inout) :: lu(veclen,nzcnt) + call lu_fac01( avec_len, lu ) + call lu_fac02( avec_len, lu ) + call lu_fac03( avec_len, lu ) + call lu_fac04( avec_len, lu ) + call lu_fac05( avec_len, lu ) + call lu_fac06( avec_len, lu ) + call lu_fac07( avec_len, lu ) + call lu_fac08( avec_len, lu ) + call lu_fac09( avec_len, lu ) + call lu_fac10( avec_len, lu ) + call lu_fac11( avec_len, lu ) + call lu_fac12( avec_len, lu ) + call lu_fac13( avec_len, lu ) + call lu_fac14( avec_len, lu ) + call lu_fac15( avec_len, lu ) + call lu_fac16( avec_len, lu ) + call lu_fac17( avec_len, lu ) + call lu_fac18( avec_len, lu ) + call lu_fac19( avec_len, lu ) + call lu_fac20( avec_len, lu ) + call lu_fac21( avec_len, lu ) + end subroutine lu_fac + end module mo_lu_factor diff --git a/src/chemistry/pp_waccm_t4ma_mam5/mo_lu_solve.F90 b/src/chemistry/pp_waccm_t4ma_mam5/mo_lu_solve.F90 new file mode 100644 index 0000000000..161b807ef5 --- /dev/null +++ b/src/chemistry/pp_waccm_t4ma_mam5/mo_lu_solve.F90 @@ -0,0 +1,1772 @@ + module mo_lu_solve + use chem_mods, only: veclen + private + public :: lu_slv + contains + subroutine lu_slv01( avec_len, lu, b ) + use shr_kind_mod, only : r8 => shr_kind_r8 + use chem_mods, only : clscnt4, nzcnt + implicit none +!----------------------------------------------------------------------- +! ... Dummy args +!----------------------------------------------------------------------- + integer, intent(in) :: avec_len + real(r8), intent(in) :: lu(veclen,max(1,nzcnt)) + real(r8), intent(inout) :: b(veclen,clscnt4) +!----------------------------------------------------------------------- +! ... Local variables +!----------------------------------------------------------------------- + integer :: k +!----------------------------------------------------------------------- +! ... solve L * y = b +!----------------------------------------------------------------------- + do k = 1,avec_len + b(k,27) = b(k,27) - lu(k,27) * b(k,26) + b(k,134) = b(k,134) - lu(k,30) * b(k,28) + b(k,143) = b(k,143) - lu(k,31) * b(k,28) + b(k,102) = b(k,102) - lu(k,33) * b(k,29) + b(k,144) = b(k,144) - lu(k,34) * b(k,29) + b(k,144) = b(k,144) - lu(k,36) * b(k,30) + b(k,149) = b(k,149) - lu(k,37) * b(k,30) + b(k,142) = b(k,142) - lu(k,39) * b(k,31) + b(k,143) = b(k,143) - lu(k,40) * b(k,31) + b(k,48) = b(k,48) - lu(k,42) * b(k,32) + b(k,131) = b(k,131) - lu(k,43) * b(k,32) + b(k,142) = b(k,142) - lu(k,44) * b(k,32) + b(k,143) = b(k,143) - lu(k,46) * b(k,33) + b(k,144) = b(k,144) - lu(k,47) * b(k,33) + b(k,149) = b(k,149) - lu(k,48) * b(k,33) + b(k,102) = b(k,102) - lu(k,50) * b(k,34) + b(k,144) = b(k,144) - lu(k,51) * b(k,34) + b(k,149) = b(k,149) - lu(k,52) * b(k,34) + b(k,51) = b(k,51) - lu(k,54) * b(k,35) + b(k,142) = b(k,142) - lu(k,55) * b(k,35) + b(k,143) = b(k,143) - lu(k,56) * b(k,35) + b(k,48) = b(k,48) - lu(k,58) * b(k,36) + b(k,142) = b(k,142) - lu(k,59) * b(k,36) + b(k,143) = b(k,143) - lu(k,60) * b(k,36) + b(k,48) = b(k,48) - lu(k,62) * b(k,37) + b(k,142) = b(k,142) - lu(k,63) * b(k,37) + b(k,143) = b(k,143) - lu(k,64) * b(k,37) + b(k,72) = b(k,72) - lu(k,66) * b(k,38) + b(k,144) = b(k,144) - lu(k,67) * b(k,38) + b(k,55) = b(k,55) - lu(k,69) * b(k,39) + b(k,149) = b(k,149) - lu(k,70) * b(k,39) + b(k,48) = b(k,48) - lu(k,72) * b(k,40) + b(k,131) = b(k,131) - lu(k,73) * b(k,40) + b(k,142) = b(k,142) - lu(k,74) * b(k,40) + b(k,143) = b(k,143) - lu(k,75) * b(k,40) + b(k,48) = b(k,48) - lu(k,77) * b(k,41) + b(k,104) = b(k,104) - lu(k,78) * b(k,41) + b(k,131) = b(k,131) - lu(k,79) * b(k,41) + b(k,142) = b(k,142) - lu(k,80) * b(k,41) + b(k,48) = b(k,48) - lu(k,82) * b(k,42) + b(k,51) = b(k,51) - lu(k,83) * b(k,42) + b(k,142) = b(k,142) - lu(k,84) * b(k,42) + b(k,143) = b(k,143) - lu(k,85) * b(k,42) + b(k,48) = b(k,48) - lu(k,87) * b(k,43) + b(k,104) = b(k,104) - lu(k,88) * b(k,43) + b(k,142) = b(k,142) - lu(k,89) * b(k,43) + b(k,143) = b(k,143) - lu(k,90) * b(k,43) + b(k,143) = b(k,143) - lu(k,92) * b(k,44) + b(k,132) = b(k,132) - lu(k,94) * b(k,45) + b(k,132) = b(k,132) - lu(k,97) * b(k,46) + b(k,120) = b(k,120) - lu(k,99) * b(k,47) + b(k,144) = b(k,144) - lu(k,100) * b(k,47) + b(k,104) = b(k,104) - lu(k,102) * b(k,48) + b(k,142) = b(k,142) - lu(k,103) * b(k,48) + b(k,131) = b(k,131) - lu(k,105) * b(k,49) + b(k,143) = b(k,143) - lu(k,106) * b(k,49) + b(k,51) = b(k,51) - lu(k,108) * b(k,50) + b(k,142) = b(k,142) - lu(k,109) * b(k,50) + b(k,143) = b(k,143) - lu(k,110) * b(k,50) + b(k,144) = b(k,144) - lu(k,111) * b(k,50) + b(k,104) = b(k,104) - lu(k,113) * b(k,51) + b(k,142) = b(k,142) - lu(k,114) * b(k,51) + b(k,143) = b(k,143) - lu(k,115) * b(k,51) + b(k,104) = b(k,104) - lu(k,118) * b(k,52) + b(k,142) = b(k,142) - lu(k,119) * b(k,52) + b(k,143) = b(k,143) - lu(k,120) * b(k,52) + b(k,144) = b(k,144) - lu(k,121) * b(k,52) + b(k,132) = b(k,132) - lu(k,123) * b(k,53) + b(k,142) = b(k,142) - lu(k,124) * b(k,53) + b(k,146) = b(k,146) - lu(k,125) * b(k,53) + b(k,117) = b(k,117) - lu(k,127) * b(k,54) + b(k,137) = b(k,137) - lu(k,128) * b(k,54) + b(k,144) = b(k,144) - lu(k,129) * b(k,54) + b(k,109) = b(k,109) - lu(k,132) * b(k,55) + b(k,145) = b(k,145) - lu(k,133) * b(k,55) + b(k,149) = b(k,149) - lu(k,134) * b(k,55) + b(k,109) = b(k,109) - lu(k,136) * b(k,56) + b(k,137) = b(k,137) - lu(k,137) * b(k,56) + b(k,139) = b(k,139) - lu(k,138) * b(k,56) + b(k,141) = b(k,141) - lu(k,139) * b(k,56) + b(k,144) = b(k,144) - lu(k,140) * b(k,56) + b(k,104) = b(k,104) - lu(k,143) * b(k,57) + b(k,142) = b(k,142) - lu(k,144) * b(k,57) + b(k,143) = b(k,143) - lu(k,145) * b(k,57) + b(k,144) = b(k,144) - lu(k,146) * b(k,57) + b(k,149) = b(k,149) - lu(k,147) * b(k,57) + b(k,104) = b(k,104) - lu(k,149) * b(k,58) + b(k,148) = b(k,148) - lu(k,150) * b(k,58) + b(k,135) = b(k,135) - lu(k,152) * b(k,59) + b(k,139) = b(k,139) - lu(k,153) * b(k,59) + b(k,141) = b(k,141) - lu(k,154) * b(k,59) + b(k,145) = b(k,145) - lu(k,155) * b(k,59) + b(k,146) = b(k,146) - lu(k,156) * b(k,59) + b(k,98) = b(k,98) - lu(k,158) * b(k,60) + b(k,130) = b(k,130) - lu(k,159) * b(k,60) + b(k,143) = b(k,143) - lu(k,160) * b(k,60) + b(k,144) = b(k,144) - lu(k,161) * b(k,60) + b(k,149) = b(k,149) - lu(k,162) * b(k,60) + b(k,123) = b(k,123) - lu(k,164) * b(k,61) + b(k,125) = b(k,125) - lu(k,165) * b(k,61) + b(k,137) = b(k,137) - lu(k,166) * b(k,61) + b(k,144) = b(k,144) - lu(k,167) * b(k,61) + b(k,98) = b(k,98) - lu(k,169) * b(k,62) + b(k,117) = b(k,117) - lu(k,170) * b(k,62) + b(k,137) = b(k,137) - lu(k,171) * b(k,62) + b(k,144) = b(k,144) - lu(k,172) * b(k,62) + b(k,109) = b(k,109) - lu(k,174) * b(k,63) + b(k,129) = b(k,129) - lu(k,175) * b(k,63) + b(k,134) = b(k,134) - lu(k,176) * b(k,63) + b(k,145) = b(k,145) - lu(k,177) * b(k,63) + b(k,120) = b(k,120) - lu(k,179) * b(k,64) + b(k,144) = b(k,144) - lu(k,180) * b(k,64) + b(k,90) = b(k,90) - lu(k,182) * b(k,65) + b(k,109) = b(k,109) - lu(k,183) * b(k,65) + b(k,118) = b(k,118) - lu(k,184) * b(k,65) + b(k,129) = b(k,129) - lu(k,185) * b(k,65) + b(k,144) = b(k,144) - lu(k,186) * b(k,65) + b(k,145) = b(k,145) - lu(k,187) * b(k,65) + b(k,148) = b(k,148) - lu(k,188) * b(k,65) + b(k,118) = b(k,118) - lu(k,190) * b(k,66) + b(k,130) = b(k,130) - lu(k,191) * b(k,66) + b(k,137) = b(k,137) - lu(k,192) * b(k,66) + b(k,140) = b(k,140) - lu(k,193) * b(k,66) + b(k,143) = b(k,143) - lu(k,194) * b(k,66) + b(k,144) = b(k,144) - lu(k,195) * b(k,66) + b(k,149) = b(k,149) - lu(k,196) * b(k,66) + b(k,121) = b(k,121) - lu(k,198) * b(k,67) + b(k,126) = b(k,126) - lu(k,199) * b(k,67) + b(k,135) = b(k,135) - lu(k,200) * b(k,67) + b(k,136) = b(k,136) - lu(k,201) * b(k,67) + b(k,144) = b(k,144) - lu(k,202) * b(k,67) + b(k,95) = b(k,95) - lu(k,204) * b(k,68) + b(k,102) = b(k,102) - lu(k,205) * b(k,68) + b(k,137) = b(k,137) - lu(k,206) * b(k,68) + b(k,144) = b(k,144) - lu(k,207) * b(k,68) + b(k,149) = b(k,149) - lu(k,208) * b(k,68) + b(k,136) = b(k,136) - lu(k,210) * b(k,69) + b(k,140) = b(k,140) - lu(k,211) * b(k,69) + b(k,144) = b(k,144) - lu(k,212) * b(k,69) + b(k,148) = b(k,148) - lu(k,213) * b(k,69) + b(k,149) = b(k,149) - lu(k,214) * b(k,69) + b(k,113) = b(k,113) - lu(k,216) * b(k,70) + b(k,126) = b(k,126) - lu(k,217) * b(k,70) + b(k,136) = b(k,136) - lu(k,218) * b(k,70) + b(k,144) = b(k,144) - lu(k,219) * b(k,70) + b(k,149) = b(k,149) - lu(k,220) * b(k,70) + b(k,130) = b(k,130) - lu(k,222) * b(k,71) + b(k,131) = b(k,131) - lu(k,223) * b(k,71) + b(k,142) = b(k,142) - lu(k,224) * b(k,71) + b(k,143) = b(k,143) - lu(k,225) * b(k,71) + b(k,144) = b(k,144) - lu(k,226) * b(k,71) + b(k,114) = b(k,114) - lu(k,228) * b(k,72) + b(k,132) = b(k,132) - lu(k,229) * b(k,72) + b(k,136) = b(k,136) - lu(k,230) * b(k,72) + b(k,137) = b(k,137) - lu(k,231) * b(k,72) + b(k,132) = b(k,132) - lu(k,233) * b(k,73) + b(k,135) = b(k,135) - lu(k,234) * b(k,73) + b(k,137) = b(k,137) - lu(k,235) * b(k,73) + b(k,141) = b(k,141) - lu(k,236) * b(k,73) + b(k,144) = b(k,144) - lu(k,237) * b(k,73) + b(k,149) = b(k,149) - lu(k,238) * b(k,73) + b(k,93) = b(k,93) - lu(k,240) * b(k,74) + b(k,118) = b(k,118) - lu(k,241) * b(k,74) + b(k,136) = b(k,136) - lu(k,242) * b(k,74) + b(k,137) = b(k,137) - lu(k,243) * b(k,74) + b(k,138) = b(k,138) - lu(k,244) * b(k,74) + b(k,144) = b(k,144) - lu(k,245) * b(k,74) + b(k,130) = b(k,130) - lu(k,247) * b(k,75) + b(k,131) = b(k,131) - lu(k,248) * b(k,75) + b(k,142) = b(k,142) - lu(k,249) * b(k,75) + b(k,143) = b(k,143) - lu(k,250) * b(k,75) + b(k,144) = b(k,144) - lu(k,251) * b(k,75) + b(k,149) = b(k,149) - lu(k,252) * b(k,75) + b(k,77) = b(k,77) - lu(k,254) * b(k,76) + b(k,87) = b(k,87) - lu(k,255) * b(k,76) + b(k,100) = b(k,100) - lu(k,256) * b(k,76) + b(k,105) = b(k,105) - lu(k,257) * b(k,76) + b(k,145) = b(k,145) - lu(k,258) * b(k,76) + b(k,146) = b(k,146) - lu(k,259) * b(k,76) + b(k,87) = b(k,87) - lu(k,261) * b(k,77) + b(k,105) = b(k,105) - lu(k,262) * b(k,77) + b(k,106) = b(k,106) - lu(k,263) * b(k,77) + b(k,132) = b(k,132) - lu(k,264) * b(k,77) + b(k,145) = b(k,145) - lu(k,265) * b(k,77) + b(k,119) = b(k,119) - lu(k,267) * b(k,78) + b(k,120) = b(k,120) - lu(k,268) * b(k,78) + b(k,122) = b(k,122) - lu(k,269) * b(k,78) + b(k,124) = b(k,124) - lu(k,270) * b(k,78) + b(k,136) = b(k,136) - lu(k,271) * b(k,78) + b(k,137) = b(k,137) - lu(k,272) * b(k,78) + b(k,144) = b(k,144) - lu(k,273) * b(k,78) + b(k,126) = b(k,126) - lu(k,275) * b(k,79) + b(k,127) = b(k,127) - lu(k,276) * b(k,79) + b(k,135) = b(k,135) - lu(k,277) * b(k,79) + b(k,136) = b(k,136) - lu(k,278) * b(k,79) + b(k,140) = b(k,140) - lu(k,279) * b(k,79) + b(k,141) = b(k,141) - lu(k,280) * b(k,79) + b(k,144) = b(k,144) - lu(k,281) * b(k,79) + b(k,136) = b(k,136) - lu(k,283) * b(k,80) + b(k,137) = b(k,137) - lu(k,284) * b(k,80) + b(k,144) = b(k,144) - lu(k,285) * b(k,80) + end do + end subroutine lu_slv01 + subroutine lu_slv02( avec_len, lu, b ) + use shr_kind_mod, only : r8 => shr_kind_r8 + use chem_mods, only : clscnt4, nzcnt + implicit none +!----------------------------------------------------------------------- +! ... Dummy args +!----------------------------------------------------------------------- + integer, intent(in) :: avec_len + real(r8), intent(in) :: lu(veclen,max(1,nzcnt)) + real(r8), intent(inout) :: b(veclen,clscnt4) +!----------------------------------------------------------------------- +! ... Local variables +!----------------------------------------------------------------------- + integer :: k +!----------------------------------------------------------------------- +! ... solve L * y = b +!----------------------------------------------------------------------- + do k = 1,avec_len + b(k,96) = b(k,96) - lu(k,287) * b(k,81) + b(k,115) = b(k,115) - lu(k,288) * b(k,81) + b(k,117) = b(k,117) - lu(k,289) * b(k,81) + b(k,136) = b(k,136) - lu(k,290) * b(k,81) + b(k,137) = b(k,137) - lu(k,291) * b(k,81) + b(k,144) = b(k,144) - lu(k,292) * b(k,81) + b(k,149) = b(k,149) - lu(k,293) * b(k,81) + b(k,94) = b(k,94) - lu(k,295) * b(k,82) + b(k,131) = b(k,131) - lu(k,296) * b(k,82) + b(k,133) = b(k,133) - lu(k,297) * b(k,82) + b(k,135) = b(k,135) - lu(k,298) * b(k,82) + b(k,139) = b(k,139) - lu(k,299) * b(k,82) + b(k,141) = b(k,141) - lu(k,300) * b(k,82) + b(k,145) = b(k,145) - lu(k,301) * b(k,82) + b(k,115) = b(k,115) - lu(k,303) * b(k,83) + b(k,125) = b(k,125) - lu(k,304) * b(k,83) + b(k,127) = b(k,127) - lu(k,305) * b(k,83) + b(k,135) = b(k,135) - lu(k,306) * b(k,83) + b(k,136) = b(k,136) - lu(k,307) * b(k,83) + b(k,137) = b(k,137) - lu(k,308) * b(k,83) + b(k,141) = b(k,141) - lu(k,309) * b(k,83) + b(k,144) = b(k,144) - lu(k,310) * b(k,83) + b(k,130) = b(k,130) - lu(k,312) * b(k,84) + b(k,137) = b(k,137) - lu(k,313) * b(k,84) + b(k,143) = b(k,143) - lu(k,314) * b(k,84) + b(k,144) = b(k,144) - lu(k,315) * b(k,84) + b(k,145) = b(k,145) - lu(k,316) * b(k,84) + b(k,149) = b(k,149) - lu(k,317) * b(k,84) + b(k,126) = b(k,126) - lu(k,319) * b(k,85) + b(k,127) = b(k,127) - lu(k,320) * b(k,85) + b(k,136) = b(k,136) - lu(k,321) * b(k,85) + b(k,140) = b(k,140) - lu(k,322) * b(k,85) + b(k,144) = b(k,144) - lu(k,323) * b(k,85) + b(k,149) = b(k,149) - lu(k,324) * b(k,85) + b(k,130) = b(k,130) - lu(k,326) * b(k,86) + b(k,131) = b(k,131) - lu(k,327) * b(k,86) + b(k,137) = b(k,137) - lu(k,328) * b(k,86) + b(k,140) = b(k,140) - lu(k,329) * b(k,86) + b(k,142) = b(k,142) - lu(k,330) * b(k,86) + b(k,143) = b(k,143) - lu(k,331) * b(k,86) + b(k,144) = b(k,144) - lu(k,332) * b(k,86) + b(k,149) = b(k,149) - lu(k,333) * b(k,86) + b(k,92) = b(k,92) - lu(k,335) * b(k,87) + b(k,105) = b(k,105) - lu(k,336) * b(k,87) + b(k,106) = b(k,106) - lu(k,337) * b(k,87) + b(k,107) = b(k,107) - lu(k,338) * b(k,87) + b(k,108) = b(k,108) - lu(k,339) * b(k,87) + b(k,110) = b(k,110) - lu(k,340) * b(k,87) + b(k,132) = b(k,132) - lu(k,341) * b(k,87) + b(k,145) = b(k,145) - lu(k,342) * b(k,87) + b(k,95) = b(k,95) - lu(k,344) * b(k,88) + b(k,119) = b(k,119) - lu(k,345) * b(k,88) + b(k,122) = b(k,122) - lu(k,346) * b(k,88) + b(k,124) = b(k,124) - lu(k,347) * b(k,88) + b(k,135) = b(k,135) - lu(k,348) * b(k,88) + b(k,138) = b(k,138) - lu(k,349) * b(k,88) + b(k,141) = b(k,141) - lu(k,350) * b(k,88) + b(k,144) = b(k,144) - lu(k,351) * b(k,88) + b(k,145) = b(k,145) - lu(k,352) * b(k,88) + b(k,127) = b(k,127) - lu(k,354) * b(k,89) + b(k,140) = b(k,140) - lu(k,355) * b(k,89) + b(k,144) = b(k,144) - lu(k,356) * b(k,89) + b(k,149) = b(k,149) - lu(k,357) * b(k,89) + b(k,129) = b(k,129) - lu(k,359) * b(k,90) + b(k,132) = b(k,132) - lu(k,360) * b(k,90) + b(k,138) = b(k,138) - lu(k,361) * b(k,90) + b(k,144) = b(k,144) - lu(k,362) * b(k,90) + b(k,145) = b(k,145) - lu(k,363) * b(k,90) + b(k,148) = b(k,148) - lu(k,364) * b(k,90) + b(k,118) = b(k,118) - lu(k,366) * b(k,91) + b(k,127) = b(k,127) - lu(k,367) * b(k,91) + b(k,137) = b(k,137) - lu(k,368) * b(k,91) + b(k,144) = b(k,144) - lu(k,369) * b(k,91) + b(k,107) = b(k,107) - lu(k,371) * b(k,92) + b(k,108) = b(k,108) - lu(k,372) * b(k,92) + b(k,110) = b(k,110) - lu(k,373) * b(k,92) + b(k,145) = b(k,145) - lu(k,374) * b(k,92) + b(k,114) = b(k,114) - lu(k,378) * b(k,93) + b(k,132) = b(k,132) - lu(k,379) * b(k,93) + b(k,135) = b(k,135) - lu(k,380) * b(k,93) + b(k,136) = b(k,136) - lu(k,381) * b(k,93) + b(k,137) = b(k,137) - lu(k,382) * b(k,93) + b(k,144) = b(k,144) - lu(k,383) * b(k,93) + b(k,146) = b(k,146) - lu(k,384) * b(k,93) + b(k,130) = b(k,130) - lu(k,387) * b(k,94) + b(k,131) = b(k,131) - lu(k,388) * b(k,94) + b(k,133) = b(k,133) - lu(k,389) * b(k,94) + b(k,143) = b(k,143) - lu(k,390) * b(k,94) + b(k,144) = b(k,144) - lu(k,391) * b(k,94) + b(k,145) = b(k,145) - lu(k,392) * b(k,94) + b(k,149) = b(k,149) - lu(k,393) * b(k,94) + b(k,113) = b(k,113) - lu(k,395) * b(k,95) + b(k,126) = b(k,126) - lu(k,396) * b(k,95) + b(k,140) = b(k,140) - lu(k,397) * b(k,95) + b(k,144) = b(k,144) - lu(k,398) * b(k,95) + b(k,149) = b(k,149) - lu(k,399) * b(k,95) + b(k,115) = b(k,115) - lu(k,402) * b(k,96) + b(k,117) = b(k,117) - lu(k,403) * b(k,96) + b(k,132) = b(k,132) - lu(k,404) * b(k,96) + b(k,135) = b(k,135) - lu(k,405) * b(k,96) + b(k,136) = b(k,136) - lu(k,406) * b(k,96) + b(k,137) = b(k,137) - lu(k,407) * b(k,96) + b(k,144) = b(k,144) - lu(k,408) * b(k,96) + b(k,146) = b(k,146) - lu(k,409) * b(k,96) + b(k,149) = b(k,149) - lu(k,410) * b(k,96) + b(k,112) = b(k,112) - lu(k,412) * b(k,97) + b(k,119) = b(k,119) - lu(k,413) * b(k,97) + b(k,124) = b(k,124) - lu(k,414) * b(k,97) + b(k,135) = b(k,135) - lu(k,415) * b(k,97) + b(k,136) = b(k,136) - lu(k,416) * b(k,97) + b(k,137) = b(k,137) - lu(k,417) * b(k,97) + b(k,141) = b(k,141) - lu(k,418) * b(k,97) + b(k,144) = b(k,144) - lu(k,419) * b(k,97) + b(k,146) = b(k,146) - lu(k,420) * b(k,97) + b(k,117) = b(k,117) - lu(k,425) * b(k,98) + b(k,132) = b(k,132) - lu(k,426) * b(k,98) + b(k,135) = b(k,135) - lu(k,427) * b(k,98) + b(k,136) = b(k,136) - lu(k,428) * b(k,98) + b(k,137) = b(k,137) - lu(k,429) * b(k,98) + b(k,140) = b(k,140) - lu(k,430) * b(k,98) + b(k,144) = b(k,144) - lu(k,431) * b(k,98) + b(k,146) = b(k,146) - lu(k,432) * b(k,98) + b(k,131) = b(k,131) - lu(k,434) * b(k,99) + b(k,133) = b(k,133) - lu(k,435) * b(k,99) + b(k,142) = b(k,142) - lu(k,436) * b(k,99) + b(k,144) = b(k,144) - lu(k,437) * b(k,99) + b(k,145) = b(k,145) - lu(k,438) * b(k,99) + b(k,148) = b(k,148) - lu(k,439) * b(k,99) + b(k,149) = b(k,149) - lu(k,440) * b(k,99) + b(k,105) = b(k,105) - lu(k,443) * b(k,100) + b(k,106) = b(k,106) - lu(k,444) * b(k,100) + b(k,107) = b(k,107) - lu(k,445) * b(k,100) + b(k,108) = b(k,108) - lu(k,446) * b(k,100) + b(k,110) = b(k,110) - lu(k,447) * b(k,100) + b(k,132) = b(k,132) - lu(k,448) * b(k,100) + b(k,145) = b(k,145) - lu(k,449) * b(k,100) + b(k,130) = b(k,130) - lu(k,452) * b(k,101) + b(k,134) = b(k,134) - lu(k,453) * b(k,101) + b(k,143) = b(k,143) - lu(k,454) * b(k,101) + b(k,144) = b(k,144) - lu(k,455) * b(k,101) + b(k,145) = b(k,145) - lu(k,456) * b(k,101) + b(k,149) = b(k,149) - lu(k,457) * b(k,101) + b(k,113) = b(k,113) - lu(k,461) * b(k,102) + b(k,117) = b(k,117) - lu(k,462) * b(k,102) + b(k,126) = b(k,126) - lu(k,463) * b(k,102) + b(k,132) = b(k,132) - lu(k,464) * b(k,102) + b(k,135) = b(k,135) - lu(k,465) * b(k,102) + b(k,136) = b(k,136) - lu(k,466) * b(k,102) + b(k,137) = b(k,137) - lu(k,467) * b(k,102) + b(k,140) = b(k,140) - lu(k,468) * b(k,102) + b(k,144) = b(k,144) - lu(k,469) * b(k,102) + b(k,146) = b(k,146) - lu(k,470) * b(k,102) + b(k,149) = b(k,149) - lu(k,471) * b(k,102) + b(k,112) = b(k,112) - lu(k,474) * b(k,103) + b(k,116) = b(k,116) - lu(k,475) * b(k,103) + b(k,118) = b(k,118) - lu(k,476) * b(k,103) + b(k,119) = b(k,119) - lu(k,477) * b(k,103) + b(k,122) = b(k,122) - lu(k,478) * b(k,103) + b(k,124) = b(k,124) - lu(k,479) * b(k,103) + b(k,126) = b(k,126) - lu(k,480) * b(k,103) + b(k,135) = b(k,135) - lu(k,481) * b(k,103) + b(k,136) = b(k,136) - lu(k,482) * b(k,103) + b(k,137) = b(k,137) - lu(k,483) * b(k,103) + b(k,138) = b(k,138) - lu(k,484) * b(k,103) + b(k,140) = b(k,140) - lu(k,485) * b(k,103) + b(k,141) = b(k,141) - lu(k,486) * b(k,103) + b(k,144) = b(k,144) - lu(k,487) * b(k,103) + b(k,146) = b(k,146) - lu(k,488) * b(k,103) + b(k,128) = b(k,128) - lu(k,491) * b(k,104) + b(k,139) = b(k,139) - lu(k,492) * b(k,104) + b(k,140) = b(k,140) - lu(k,493) * b(k,104) + b(k,141) = b(k,141) - lu(k,494) * b(k,104) + b(k,144) = b(k,144) - lu(k,495) * b(k,104) + b(k,147) = b(k,147) - lu(k,496) * b(k,104) + b(k,148) = b(k,148) - lu(k,497) * b(k,104) + b(k,149) = b(k,149) - lu(k,498) * b(k,104) + b(k,106) = b(k,106) - lu(k,502) * b(k,105) + b(k,107) = b(k,107) - lu(k,503) * b(k,105) + b(k,108) = b(k,108) - lu(k,504) * b(k,105) + b(k,110) = b(k,110) - lu(k,505) * b(k,105) + b(k,118) = b(k,118) - lu(k,506) * b(k,105) + b(k,127) = b(k,127) - lu(k,507) * b(k,105) + b(k,132) = b(k,132) - lu(k,508) * b(k,105) + b(k,145) = b(k,145) - lu(k,509) * b(k,105) + b(k,107) = b(k,107) - lu(k,512) * b(k,106) + b(k,108) = b(k,108) - lu(k,513) * b(k,106) + b(k,110) = b(k,110) - lu(k,514) * b(k,106) + b(k,132) = b(k,132) - lu(k,515) * b(k,106) + b(k,142) = b(k,142) - lu(k,516) * b(k,106) + b(k,145) = b(k,145) - lu(k,517) * b(k,106) + b(k,146) = b(k,146) - lu(k,518) * b(k,106) + b(k,108) = b(k,108) - lu(k,527) * b(k,107) + b(k,110) = b(k,110) - lu(k,528) * b(k,107) + b(k,118) = b(k,118) - lu(k,529) * b(k,107) + b(k,127) = b(k,127) - lu(k,530) * b(k,107) + b(k,132) = b(k,132) - lu(k,531) * b(k,107) + b(k,142) = b(k,142) - lu(k,532) * b(k,107) + b(k,145) = b(k,145) - lu(k,533) * b(k,107) + b(k,146) = b(k,146) - lu(k,534) * b(k,107) + b(k,110) = b(k,110) - lu(k,540) * b(k,108) + b(k,118) = b(k,118) - lu(k,541) * b(k,108) + b(k,127) = b(k,127) - lu(k,542) * b(k,108) + b(k,132) = b(k,132) - lu(k,543) * b(k,108) + b(k,142) = b(k,142) - lu(k,544) * b(k,108) + b(k,145) = b(k,145) - lu(k,545) * b(k,108) + b(k,146) = b(k,146) - lu(k,546) * b(k,108) + end do + end subroutine lu_slv02 + subroutine lu_slv03( avec_len, lu, b ) + use shr_kind_mod, only : r8 => shr_kind_r8 + use chem_mods, only : clscnt4, nzcnt + implicit none +!----------------------------------------------------------------------- +! ... Dummy args +!----------------------------------------------------------------------- + integer, intent(in) :: avec_len + real(r8), intent(in) :: lu(veclen,max(1,nzcnt)) + real(r8), intent(inout) :: b(veclen,clscnt4) +!----------------------------------------------------------------------- +! ... Local variables +!----------------------------------------------------------------------- + integer :: k +!----------------------------------------------------------------------- +! ... solve L * y = b +!----------------------------------------------------------------------- + do k = 1,avec_len + b(k,129) = b(k,129) - lu(k,549) * b(k,109) + b(k,137) = b(k,137) - lu(k,550) * b(k,109) + b(k,144) = b(k,144) - lu(k,551) * b(k,109) + b(k,145) = b(k,145) - lu(k,552) * b(k,109) + b(k,149) = b(k,149) - lu(k,553) * b(k,109) + b(k,118) = b(k,118) - lu(k,562) * b(k,110) + b(k,127) = b(k,127) - lu(k,563) * b(k,110) + b(k,132) = b(k,132) - lu(k,564) * b(k,110) + b(k,135) = b(k,135) - lu(k,565) * b(k,110) + b(k,142) = b(k,142) - lu(k,566) * b(k,110) + b(k,144) = b(k,144) - lu(k,567) * b(k,110) + b(k,145) = b(k,145) - lu(k,568) * b(k,110) + b(k,146) = b(k,146) - lu(k,569) * b(k,110) + b(k,148) = b(k,148) - lu(k,570) * b(k,110) + b(k,130) = b(k,130) - lu(k,574) * b(k,111) + b(k,134) = b(k,134) - lu(k,575) * b(k,111) + b(k,135) = b(k,135) - lu(k,576) * b(k,111) + b(k,139) = b(k,139) - lu(k,577) * b(k,111) + b(k,141) = b(k,141) - lu(k,578) * b(k,111) + b(k,143) = b(k,143) - lu(k,579) * b(k,111) + b(k,144) = b(k,144) - lu(k,580) * b(k,111) + b(k,145) = b(k,145) - lu(k,581) * b(k,111) + b(k,149) = b(k,149) - lu(k,582) * b(k,111) + b(k,118) = b(k,118) - lu(k,585) * b(k,112) + b(k,120) = b(k,120) - lu(k,586) * b(k,112) + b(k,135) = b(k,135) - lu(k,587) * b(k,112) + b(k,136) = b(k,136) - lu(k,588) * b(k,112) + b(k,137) = b(k,137) - lu(k,589) * b(k,112) + b(k,139) = b(k,139) - lu(k,590) * b(k,112) + b(k,141) = b(k,141) - lu(k,591) * b(k,112) + b(k,144) = b(k,144) - lu(k,592) * b(k,112) + b(k,115) = b(k,115) - lu(k,596) * b(k,113) + b(k,121) = b(k,121) - lu(k,597) * b(k,113) + b(k,126) = b(k,126) - lu(k,598) * b(k,113) + b(k,135) = b(k,135) - lu(k,599) * b(k,113) + b(k,136) = b(k,136) - lu(k,600) * b(k,113) + b(k,137) = b(k,137) - lu(k,601) * b(k,113) + b(k,140) = b(k,140) - lu(k,602) * b(k,113) + b(k,144) = b(k,144) - lu(k,603) * b(k,113) + b(k,146) = b(k,146) - lu(k,604) * b(k,113) + b(k,149) = b(k,149) - lu(k,605) * b(k,113) + b(k,118) = b(k,118) - lu(k,608) * b(k,114) + b(k,127) = b(k,127) - lu(k,609) * b(k,114) + b(k,136) = b(k,136) - lu(k,610) * b(k,114) + b(k,137) = b(k,137) - lu(k,611) * b(k,114) + b(k,144) = b(k,144) - lu(k,612) * b(k,114) + b(k,121) = b(k,121) - lu(k,614) * b(k,115) + b(k,126) = b(k,126) - lu(k,615) * b(k,115) + b(k,136) = b(k,136) - lu(k,616) * b(k,115) + b(k,137) = b(k,137) - lu(k,617) * b(k,115) + b(k,144) = b(k,144) - lu(k,618) * b(k,115) + b(k,117) = b(k,117) - lu(k,624) * b(k,116) + b(k,118) = b(k,118) - lu(k,625) * b(k,116) + b(k,121) = b(k,121) - lu(k,626) * b(k,116) + b(k,126) = b(k,126) - lu(k,627) * b(k,116) + b(k,127) = b(k,127) - lu(k,628) * b(k,116) + b(k,132) = b(k,132) - lu(k,629) * b(k,116) + b(k,135) = b(k,135) - lu(k,630) * b(k,116) + b(k,136) = b(k,136) - lu(k,631) * b(k,116) + b(k,137) = b(k,137) - lu(k,632) * b(k,116) + b(k,138) = b(k,138) - lu(k,633) * b(k,116) + b(k,140) = b(k,140) - lu(k,634) * b(k,116) + b(k,141) = b(k,141) - lu(k,635) * b(k,116) + b(k,144) = b(k,144) - lu(k,636) * b(k,116) + b(k,146) = b(k,146) - lu(k,637) * b(k,116) + b(k,147) = b(k,147) - lu(k,638) * b(k,116) + b(k,149) = b(k,149) - lu(k,639) * b(k,116) + b(k,118) = b(k,118) - lu(k,641) * b(k,117) + b(k,126) = b(k,126) - lu(k,642) * b(k,117) + b(k,137) = b(k,137) - lu(k,643) * b(k,117) + b(k,139) = b(k,139) - lu(k,644) * b(k,117) + b(k,140) = b(k,140) - lu(k,645) * b(k,117) + b(k,141) = b(k,141) - lu(k,646) * b(k,117) + b(k,144) = b(k,144) - lu(k,647) * b(k,117) + b(k,149) = b(k,149) - lu(k,648) * b(k,117) + b(k,127) = b(k,127) - lu(k,650) * b(k,118) + b(k,137) = b(k,137) - lu(k,651) * b(k,118) + b(k,144) = b(k,144) - lu(k,652) * b(k,118) + b(k,121) = b(k,121) - lu(k,655) * b(k,119) + b(k,123) = b(k,123) - lu(k,656) * b(k,119) + b(k,125) = b(k,125) - lu(k,657) * b(k,119) + b(k,126) = b(k,126) - lu(k,658) * b(k,119) + b(k,127) = b(k,127) - lu(k,659) * b(k,119) + b(k,136) = b(k,136) - lu(k,660) * b(k,119) + b(k,137) = b(k,137) - lu(k,661) * b(k,119) + b(k,138) = b(k,138) - lu(k,662) * b(k,119) + b(k,144) = b(k,144) - lu(k,663) * b(k,119) + b(k,149) = b(k,149) - lu(k,664) * b(k,119) + b(k,121) = b(k,121) - lu(k,672) * b(k,120) + b(k,126) = b(k,126) - lu(k,673) * b(k,120) + b(k,127) = b(k,127) - lu(k,674) * b(k,120) + b(k,135) = b(k,135) - lu(k,675) * b(k,120) + b(k,136) = b(k,136) - lu(k,676) * b(k,120) + b(k,137) = b(k,137) - lu(k,677) * b(k,120) + b(k,140) = b(k,140) - lu(k,678) * b(k,120) + b(k,141) = b(k,141) - lu(k,679) * b(k,120) + b(k,144) = b(k,144) - lu(k,680) * b(k,120) + b(k,146) = b(k,146) - lu(k,681) * b(k,120) + b(k,126) = b(k,126) - lu(k,684) * b(k,121) + b(k,127) = b(k,127) - lu(k,685) * b(k,121) + b(k,137) = b(k,137) - lu(k,686) * b(k,121) + b(k,139) = b(k,139) - lu(k,687) * b(k,121) + b(k,141) = b(k,141) - lu(k,688) * b(k,121) + b(k,144) = b(k,144) - lu(k,689) * b(k,121) + b(k,149) = b(k,149) - lu(k,690) * b(k,121) + b(k,123) = b(k,123) - lu(k,703) * b(k,122) + b(k,124) = b(k,124) - lu(k,704) * b(k,122) + b(k,125) = b(k,125) - lu(k,705) * b(k,122) + b(k,126) = b(k,126) - lu(k,706) * b(k,122) + b(k,127) = b(k,127) - lu(k,707) * b(k,122) + b(k,135) = b(k,135) - lu(k,708) * b(k,122) + b(k,136) = b(k,136) - lu(k,709) * b(k,122) + b(k,137) = b(k,137) - lu(k,710) * b(k,122) + b(k,138) = b(k,138) - lu(k,711) * b(k,122) + b(k,139) = b(k,139) - lu(k,712) * b(k,122) + b(k,140) = b(k,140) - lu(k,713) * b(k,122) + b(k,141) = b(k,141) - lu(k,714) * b(k,122) + b(k,144) = b(k,144) - lu(k,715) * b(k,122) + b(k,146) = b(k,146) - lu(k,716) * b(k,122) + b(k,149) = b(k,149) - lu(k,717) * b(k,122) + b(k,125) = b(k,125) - lu(k,727) * b(k,123) + b(k,126) = b(k,126) - lu(k,728) * b(k,123) + b(k,127) = b(k,127) - lu(k,729) * b(k,123) + b(k,135) = b(k,135) - lu(k,730) * b(k,123) + b(k,136) = b(k,136) - lu(k,731) * b(k,123) + b(k,137) = b(k,137) - lu(k,732) * b(k,123) + b(k,139) = b(k,139) - lu(k,733) * b(k,123) + b(k,140) = b(k,140) - lu(k,734) * b(k,123) + b(k,141) = b(k,141) - lu(k,735) * b(k,123) + b(k,144) = b(k,144) - lu(k,736) * b(k,123) + b(k,146) = b(k,146) - lu(k,737) * b(k,123) + b(k,149) = b(k,149) - lu(k,738) * b(k,123) + b(k,125) = b(k,125) - lu(k,745) * b(k,124) + b(k,126) = b(k,126) - lu(k,746) * b(k,124) + b(k,127) = b(k,127) - lu(k,747) * b(k,124) + b(k,132) = b(k,132) - lu(k,748) * b(k,124) + b(k,135) = b(k,135) - lu(k,749) * b(k,124) + b(k,136) = b(k,136) - lu(k,750) * b(k,124) + b(k,137) = b(k,137) - lu(k,751) * b(k,124) + b(k,138) = b(k,138) - lu(k,752) * b(k,124) + b(k,139) = b(k,139) - lu(k,753) * b(k,124) + b(k,140) = b(k,140) - lu(k,754) * b(k,124) + b(k,141) = b(k,141) - lu(k,755) * b(k,124) + b(k,144) = b(k,144) - lu(k,756) * b(k,124) + b(k,146) = b(k,146) - lu(k,757) * b(k,124) + b(k,147) = b(k,147) - lu(k,758) * b(k,124) + b(k,149) = b(k,149) - lu(k,759) * b(k,124) + b(k,126) = b(k,126) - lu(k,766) * b(k,125) + b(k,127) = b(k,127) - lu(k,767) * b(k,125) + b(k,135) = b(k,135) - lu(k,768) * b(k,125) + b(k,136) = b(k,136) - lu(k,769) * b(k,125) + b(k,137) = b(k,137) - lu(k,770) * b(k,125) + b(k,138) = b(k,138) - lu(k,771) * b(k,125) + b(k,139) = b(k,139) - lu(k,772) * b(k,125) + b(k,140) = b(k,140) - lu(k,773) * b(k,125) + b(k,141) = b(k,141) - lu(k,774) * b(k,125) + b(k,144) = b(k,144) - lu(k,775) * b(k,125) + b(k,146) = b(k,146) - lu(k,776) * b(k,125) + b(k,149) = b(k,149) - lu(k,777) * b(k,125) + b(k,127) = b(k,127) - lu(k,794) * b(k,126) + b(k,132) = b(k,132) - lu(k,795) * b(k,126) + b(k,135) = b(k,135) - lu(k,796) * b(k,126) + b(k,136) = b(k,136) - lu(k,797) * b(k,126) + b(k,137) = b(k,137) - lu(k,798) * b(k,126) + b(k,138) = b(k,138) - lu(k,799) * b(k,126) + b(k,139) = b(k,139) - lu(k,800) * b(k,126) + b(k,140) = b(k,140) - lu(k,801) * b(k,126) + b(k,141) = b(k,141) - lu(k,802) * b(k,126) + b(k,144) = b(k,144) - lu(k,803) * b(k,126) + b(k,146) = b(k,146) - lu(k,804) * b(k,126) + b(k,147) = b(k,147) - lu(k,805) * b(k,126) + b(k,149) = b(k,149) - lu(k,806) * b(k,126) + b(k,132) = b(k,132) - lu(k,816) * b(k,127) + b(k,135) = b(k,135) - lu(k,817) * b(k,127) + b(k,137) = b(k,137) - lu(k,818) * b(k,127) + b(k,142) = b(k,142) - lu(k,819) * b(k,127) + b(k,144) = b(k,144) - lu(k,820) * b(k,127) + b(k,145) = b(k,145) - lu(k,821) * b(k,127) + b(k,146) = b(k,146) - lu(k,822) * b(k,127) + b(k,148) = b(k,148) - lu(k,823) * b(k,127) + b(k,130) = b(k,130) - lu(k,827) * b(k,128) + b(k,139) = b(k,139) - lu(k,828) * b(k,128) + b(k,140) = b(k,140) - lu(k,829) * b(k,128) + b(k,141) = b(k,141) - lu(k,830) * b(k,128) + b(k,142) = b(k,142) - lu(k,831) * b(k,128) + b(k,143) = b(k,143) - lu(k,832) * b(k,128) + b(k,144) = b(k,144) - lu(k,833) * b(k,128) + b(k,145) = b(k,145) - lu(k,834) * b(k,128) + b(k,147) = b(k,147) - lu(k,835) * b(k,128) + b(k,148) = b(k,148) - lu(k,836) * b(k,128) + b(k,149) = b(k,149) - lu(k,837) * b(k,128) + b(k,131) = b(k,131) - lu(k,842) * b(k,129) + b(k,132) = b(k,132) - lu(k,843) * b(k,129) + b(k,133) = b(k,133) - lu(k,844) * b(k,129) + b(k,134) = b(k,134) - lu(k,845) * b(k,129) + b(k,135) = b(k,135) - lu(k,846) * b(k,129) + b(k,137) = b(k,137) - lu(k,847) * b(k,129) + b(k,138) = b(k,138) - lu(k,848) * b(k,129) + b(k,143) = b(k,143) - lu(k,849) * b(k,129) + b(k,144) = b(k,144) - lu(k,850) * b(k,129) + b(k,145) = b(k,145) - lu(k,851) * b(k,129) + b(k,146) = b(k,146) - lu(k,852) * b(k,129) + b(k,148) = b(k,148) - lu(k,853) * b(k,129) + b(k,149) = b(k,149) - lu(k,854) * b(k,129) + end do + end subroutine lu_slv03 + subroutine lu_slv04( avec_len, lu, b ) + use shr_kind_mod, only : r8 => shr_kind_r8 + use chem_mods, only : clscnt4, nzcnt + implicit none +!----------------------------------------------------------------------- +! ... Dummy args +!----------------------------------------------------------------------- + integer, intent(in) :: avec_len + real(r8), intent(in) :: lu(veclen,max(1,nzcnt)) + real(r8), intent(inout) :: b(veclen,clscnt4) +!----------------------------------------------------------------------- +! ... Local variables +!----------------------------------------------------------------------- + integer :: k +!----------------------------------------------------------------------- +! ... solve L * y = b +!----------------------------------------------------------------------- + do k = 1,avec_len + b(k,131) = b(k,131) - lu(k,861) * b(k,130) + b(k,133) = b(k,133) - lu(k,862) * b(k,130) + b(k,134) = b(k,134) - lu(k,863) * b(k,130) + b(k,135) = b(k,135) - lu(k,864) * b(k,130) + b(k,139) = b(k,139) - lu(k,865) * b(k,130) + b(k,141) = b(k,141) - lu(k,866) * b(k,130) + b(k,142) = b(k,142) - lu(k,867) * b(k,130) + b(k,143) = b(k,143) - lu(k,868) * b(k,130) + b(k,144) = b(k,144) - lu(k,869) * b(k,130) + b(k,145) = b(k,145) - lu(k,870) * b(k,130) + b(k,148) = b(k,148) - lu(k,871) * b(k,130) + b(k,149) = b(k,149) - lu(k,872) * b(k,130) + b(k,132) = b(k,132) - lu(k,877) * b(k,131) + b(k,133) = b(k,133) - lu(k,878) * b(k,131) + b(k,135) = b(k,135) - lu(k,879) * b(k,131) + b(k,136) = b(k,136) - lu(k,880) * b(k,131) + b(k,137) = b(k,137) - lu(k,881) * b(k,131) + b(k,138) = b(k,138) - lu(k,882) * b(k,131) + b(k,142) = b(k,142) - lu(k,883) * b(k,131) + b(k,144) = b(k,144) - lu(k,884) * b(k,131) + b(k,145) = b(k,145) - lu(k,885) * b(k,131) + b(k,146) = b(k,146) - lu(k,886) * b(k,131) + b(k,148) = b(k,148) - lu(k,887) * b(k,131) + b(k,149) = b(k,149) - lu(k,888) * b(k,131) + b(k,133) = b(k,133) - lu(k,910) * b(k,132) + b(k,134) = b(k,134) - lu(k,911) * b(k,132) + b(k,135) = b(k,135) - lu(k,912) * b(k,132) + b(k,136) = b(k,136) - lu(k,913) * b(k,132) + b(k,137) = b(k,137) - lu(k,914) * b(k,132) + b(k,138) = b(k,138) - lu(k,915) * b(k,132) + b(k,142) = b(k,142) - lu(k,916) * b(k,132) + b(k,143) = b(k,143) - lu(k,917) * b(k,132) + b(k,144) = b(k,144) - lu(k,918) * b(k,132) + b(k,145) = b(k,145) - lu(k,919) * b(k,132) + b(k,146) = b(k,146) - lu(k,920) * b(k,132) + b(k,148) = b(k,148) - lu(k,921) * b(k,132) + b(k,149) = b(k,149) - lu(k,922) * b(k,132) + b(k,134) = b(k,134) - lu(k,933) * b(k,133) + b(k,135) = b(k,135) - lu(k,934) * b(k,133) + b(k,136) = b(k,136) - lu(k,935) * b(k,133) + b(k,137) = b(k,137) - lu(k,936) * b(k,133) + b(k,138) = b(k,138) - lu(k,937) * b(k,133) + b(k,139) = b(k,139) - lu(k,938) * b(k,133) + b(k,141) = b(k,141) - lu(k,939) * b(k,133) + b(k,142) = b(k,142) - lu(k,940) * b(k,133) + b(k,143) = b(k,143) - lu(k,941) * b(k,133) + b(k,144) = b(k,144) - lu(k,942) * b(k,133) + b(k,145) = b(k,145) - lu(k,943) * b(k,133) + b(k,146) = b(k,146) - lu(k,944) * b(k,133) + b(k,148) = b(k,148) - lu(k,945) * b(k,133) + b(k,149) = b(k,149) - lu(k,946) * b(k,133) + b(k,135) = b(k,135) - lu(k,960) * b(k,134) + b(k,136) = b(k,136) - lu(k,961) * b(k,134) + b(k,137) = b(k,137) - lu(k,962) * b(k,134) + b(k,138) = b(k,138) - lu(k,963) * b(k,134) + b(k,139) = b(k,139) - lu(k,964) * b(k,134) + b(k,140) = b(k,140) - lu(k,965) * b(k,134) + b(k,141) = b(k,141) - lu(k,966) * b(k,134) + b(k,142) = b(k,142) - lu(k,967) * b(k,134) + b(k,143) = b(k,143) - lu(k,968) * b(k,134) + b(k,144) = b(k,144) - lu(k,969) * b(k,134) + b(k,145) = b(k,145) - lu(k,970) * b(k,134) + b(k,146) = b(k,146) - lu(k,971) * b(k,134) + b(k,148) = b(k,148) - lu(k,972) * b(k,134) + b(k,149) = b(k,149) - lu(k,973) * b(k,134) + b(k,136) = b(k,136) - lu(k,997) * b(k,135) + b(k,137) = b(k,137) - lu(k,998) * b(k,135) + b(k,138) = b(k,138) - lu(k,999) * b(k,135) + b(k,139) = b(k,139) - lu(k,1000) * b(k,135) + b(k,140) = b(k,140) - lu(k,1001) * b(k,135) + b(k,141) = b(k,141) - lu(k,1002) * b(k,135) + b(k,142) = b(k,142) - lu(k,1003) * b(k,135) + b(k,143) = b(k,143) - lu(k,1004) * b(k,135) + b(k,144) = b(k,144) - lu(k,1005) * b(k,135) + b(k,145) = b(k,145) - lu(k,1006) * b(k,135) + b(k,146) = b(k,146) - lu(k,1007) * b(k,135) + b(k,147) = b(k,147) - lu(k,1008) * b(k,135) + b(k,148) = b(k,148) - lu(k,1009) * b(k,135) + b(k,149) = b(k,149) - lu(k,1010) * b(k,135) + b(k,137) = b(k,137) - lu(k,1022) * b(k,136) + b(k,138) = b(k,138) - lu(k,1023) * b(k,136) + b(k,139) = b(k,139) - lu(k,1024) * b(k,136) + b(k,140) = b(k,140) - lu(k,1025) * b(k,136) + b(k,141) = b(k,141) - lu(k,1026) * b(k,136) + b(k,142) = b(k,142) - lu(k,1027) * b(k,136) + b(k,143) = b(k,143) - lu(k,1028) * b(k,136) + b(k,144) = b(k,144) - lu(k,1029) * b(k,136) + b(k,145) = b(k,145) - lu(k,1030) * b(k,136) + b(k,146) = b(k,146) - lu(k,1031) * b(k,136) + b(k,147) = b(k,147) - lu(k,1032) * b(k,136) + b(k,148) = b(k,148) - lu(k,1033) * b(k,136) + b(k,149) = b(k,149) - lu(k,1034) * b(k,136) + b(k,138) = b(k,138) - lu(k,1082) * b(k,137) + b(k,139) = b(k,139) - lu(k,1083) * b(k,137) + b(k,140) = b(k,140) - lu(k,1084) * b(k,137) + b(k,141) = b(k,141) - lu(k,1085) * b(k,137) + b(k,142) = b(k,142) - lu(k,1086) * b(k,137) + b(k,143) = b(k,143) - lu(k,1087) * b(k,137) + b(k,144) = b(k,144) - lu(k,1088) * b(k,137) + b(k,145) = b(k,145) - lu(k,1089) * b(k,137) + b(k,146) = b(k,146) - lu(k,1090) * b(k,137) + b(k,147) = b(k,147) - lu(k,1091) * b(k,137) + b(k,148) = b(k,148) - lu(k,1092) * b(k,137) + b(k,149) = b(k,149) - lu(k,1093) * b(k,137) + b(k,139) = b(k,139) - lu(k,1129) * b(k,138) + b(k,140) = b(k,140) - lu(k,1130) * b(k,138) + b(k,141) = b(k,141) - lu(k,1131) * b(k,138) + b(k,142) = b(k,142) - lu(k,1132) * b(k,138) + b(k,143) = b(k,143) - lu(k,1133) * b(k,138) + b(k,144) = b(k,144) - lu(k,1134) * b(k,138) + b(k,145) = b(k,145) - lu(k,1135) * b(k,138) + b(k,146) = b(k,146) - lu(k,1136) * b(k,138) + b(k,147) = b(k,147) - lu(k,1137) * b(k,138) + b(k,148) = b(k,148) - lu(k,1138) * b(k,138) + b(k,149) = b(k,149) - lu(k,1139) * b(k,138) + b(k,140) = b(k,140) - lu(k,1153) * b(k,139) + b(k,141) = b(k,141) - lu(k,1154) * b(k,139) + b(k,142) = b(k,142) - lu(k,1155) * b(k,139) + b(k,143) = b(k,143) - lu(k,1156) * b(k,139) + b(k,144) = b(k,144) - lu(k,1157) * b(k,139) + b(k,145) = b(k,145) - lu(k,1158) * b(k,139) + b(k,146) = b(k,146) - lu(k,1159) * b(k,139) + b(k,147) = b(k,147) - lu(k,1160) * b(k,139) + b(k,148) = b(k,148) - lu(k,1161) * b(k,139) + b(k,149) = b(k,149) - lu(k,1162) * b(k,139) + b(k,141) = b(k,141) - lu(k,1195) * b(k,140) + b(k,142) = b(k,142) - lu(k,1196) * b(k,140) + b(k,143) = b(k,143) - lu(k,1197) * b(k,140) + b(k,144) = b(k,144) - lu(k,1198) * b(k,140) + b(k,145) = b(k,145) - lu(k,1199) * b(k,140) + b(k,146) = b(k,146) - lu(k,1200) * b(k,140) + b(k,147) = b(k,147) - lu(k,1201) * b(k,140) + b(k,148) = b(k,148) - lu(k,1202) * b(k,140) + b(k,149) = b(k,149) - lu(k,1203) * b(k,140) + b(k,142) = b(k,142) - lu(k,1242) * b(k,141) + b(k,143) = b(k,143) - lu(k,1243) * b(k,141) + b(k,144) = b(k,144) - lu(k,1244) * b(k,141) + b(k,145) = b(k,145) - lu(k,1245) * b(k,141) + b(k,146) = b(k,146) - lu(k,1246) * b(k,141) + b(k,147) = b(k,147) - lu(k,1247) * b(k,141) + b(k,148) = b(k,148) - lu(k,1248) * b(k,141) + b(k,149) = b(k,149) - lu(k,1249) * b(k,141) + b(k,143) = b(k,143) - lu(k,1285) * b(k,142) + b(k,144) = b(k,144) - lu(k,1286) * b(k,142) + b(k,145) = b(k,145) - lu(k,1287) * b(k,142) + b(k,146) = b(k,146) - lu(k,1288) * b(k,142) + b(k,147) = b(k,147) - lu(k,1289) * b(k,142) + b(k,148) = b(k,148) - lu(k,1290) * b(k,142) + b(k,149) = b(k,149) - lu(k,1291) * b(k,142) + b(k,144) = b(k,144) - lu(k,1324) * b(k,143) + b(k,145) = b(k,145) - lu(k,1325) * b(k,143) + b(k,146) = b(k,146) - lu(k,1326) * b(k,143) + b(k,147) = b(k,147) - lu(k,1327) * b(k,143) + b(k,148) = b(k,148) - lu(k,1328) * b(k,143) + b(k,149) = b(k,149) - lu(k,1329) * b(k,143) + b(k,145) = b(k,145) - lu(k,1414) * b(k,144) + b(k,146) = b(k,146) - lu(k,1415) * b(k,144) + b(k,147) = b(k,147) - lu(k,1416) * b(k,144) + b(k,148) = b(k,148) - lu(k,1417) * b(k,144) + b(k,149) = b(k,149) - lu(k,1418) * b(k,144) + b(k,146) = b(k,146) - lu(k,1460) * b(k,145) + b(k,147) = b(k,147) - lu(k,1461) * b(k,145) + b(k,148) = b(k,148) - lu(k,1462) * b(k,145) + b(k,149) = b(k,149) - lu(k,1463) * b(k,145) + b(k,147) = b(k,147) - lu(k,1509) * b(k,146) + b(k,148) = b(k,148) - lu(k,1510) * b(k,146) + b(k,149) = b(k,149) - lu(k,1511) * b(k,146) + b(k,148) = b(k,148) - lu(k,1535) * b(k,147) + b(k,149) = b(k,149) - lu(k,1536) * b(k,147) + b(k,149) = b(k,149) - lu(k,1557) * b(k,148) + end do + end subroutine lu_slv04 + subroutine lu_slv05( avec_len, lu, b ) + use shr_kind_mod, only : r8 => shr_kind_r8 + use chem_mods, only : clscnt4, nzcnt + implicit none +!----------------------------------------------------------------------- +! ... Dummy args +!----------------------------------------------------------------------- + integer, intent(in) :: avec_len + real(r8), intent(in) :: lu(veclen,max(1,nzcnt)) + real(r8), intent(inout) :: b(veclen,clscnt4) +!----------------------------------------------------------------------- +! ... Local variables +!----------------------------------------------------------------------- + integer :: k +!----------------------------------------------------------------------- +! ... solve L * y = b +!----------------------------------------------------------------------- + do k = 1,avec_len +!----------------------------------------------------------------------- +! ... Solve U * x = y +!----------------------------------------------------------------------- + b(k,149) = b(k,149) * lu(k,1584) + b(k,148) = b(k,148) - lu(k,1583) * b(k,149) + b(k,147) = b(k,147) - lu(k,1582) * b(k,149) + b(k,146) = b(k,146) - lu(k,1581) * b(k,149) + b(k,145) = b(k,145) - lu(k,1580) * b(k,149) + b(k,144) = b(k,144) - lu(k,1579) * b(k,149) + b(k,143) = b(k,143) - lu(k,1578) * b(k,149) + b(k,142) = b(k,142) - lu(k,1577) * b(k,149) + b(k,141) = b(k,141) - lu(k,1576) * b(k,149) + b(k,140) = b(k,140) - lu(k,1575) * b(k,149) + b(k,139) = b(k,139) - lu(k,1574) * b(k,149) + b(k,138) = b(k,138) - lu(k,1573) * b(k,149) + b(k,137) = b(k,137) - lu(k,1572) * b(k,149) + b(k,136) = b(k,136) - lu(k,1571) * b(k,149) + b(k,135) = b(k,135) - lu(k,1570) * b(k,149) + b(k,134) = b(k,134) - lu(k,1569) * b(k,149) + b(k,133) = b(k,133) - lu(k,1568) * b(k,149) + b(k,132) = b(k,132) - lu(k,1567) * b(k,149) + b(k,131) = b(k,131) - lu(k,1566) * b(k,149) + b(k,130) = b(k,130) - lu(k,1565) * b(k,149) + b(k,129) = b(k,129) - lu(k,1564) * b(k,149) + b(k,128) = b(k,128) - lu(k,1563) * b(k,149) + b(k,109) = b(k,109) - lu(k,1562) * b(k,149) + b(k,104) = b(k,104) - lu(k,1561) * b(k,149) + b(k,58) = b(k,58) - lu(k,1560) * b(k,149) + b(k,55) = b(k,55) - lu(k,1559) * b(k,149) + b(k,39) = b(k,39) - lu(k,1558) * b(k,149) + b(k,148) = b(k,148) * lu(k,1556) + b(k,147) = b(k,147) - lu(k,1555) * b(k,148) + b(k,146) = b(k,146) - lu(k,1554) * b(k,148) + b(k,145) = b(k,145) - lu(k,1553) * b(k,148) + b(k,144) = b(k,144) - lu(k,1552) * b(k,148) + b(k,143) = b(k,143) - lu(k,1551) * b(k,148) + b(k,142) = b(k,142) - lu(k,1550) * b(k,148) + b(k,141) = b(k,141) - lu(k,1549) * b(k,148) + b(k,140) = b(k,140) - lu(k,1548) * b(k,148) + b(k,139) = b(k,139) - lu(k,1547) * b(k,148) + b(k,138) = b(k,138) - lu(k,1546) * b(k,148) + b(k,137) = b(k,137) - lu(k,1545) * b(k,148) + b(k,136) = b(k,136) - lu(k,1544) * b(k,148) + b(k,135) = b(k,135) - lu(k,1543) * b(k,148) + b(k,134) = b(k,134) - lu(k,1542) * b(k,148) + b(k,133) = b(k,133) - lu(k,1541) * b(k,148) + b(k,132) = b(k,132) - lu(k,1540) * b(k,148) + b(k,131) = b(k,131) - lu(k,1539) * b(k,148) + b(k,130) = b(k,130) - lu(k,1538) * b(k,148) + b(k,128) = b(k,128) - lu(k,1537) * b(k,148) + b(k,147) = b(k,147) * lu(k,1534) + b(k,146) = b(k,146) - lu(k,1533) * b(k,147) + b(k,145) = b(k,145) - lu(k,1532) * b(k,147) + b(k,144) = b(k,144) - lu(k,1531) * b(k,147) + b(k,143) = b(k,143) - lu(k,1530) * b(k,147) + b(k,142) = b(k,142) - lu(k,1529) * b(k,147) + b(k,141) = b(k,141) - lu(k,1528) * b(k,147) + b(k,140) = b(k,140) - lu(k,1527) * b(k,147) + b(k,139) = b(k,139) - lu(k,1526) * b(k,147) + b(k,138) = b(k,138) - lu(k,1525) * b(k,147) + b(k,137) = b(k,137) - lu(k,1524) * b(k,147) + b(k,136) = b(k,136) - lu(k,1523) * b(k,147) + b(k,135) = b(k,135) - lu(k,1522) * b(k,147) + b(k,134) = b(k,134) - lu(k,1521) * b(k,147) + b(k,133) = b(k,133) - lu(k,1520) * b(k,147) + b(k,132) = b(k,132) - lu(k,1519) * b(k,147) + b(k,131) = b(k,131) - lu(k,1518) * b(k,147) + b(k,130) = b(k,130) - lu(k,1517) * b(k,147) + b(k,128) = b(k,128) - lu(k,1516) * b(k,147) + b(k,127) = b(k,127) - lu(k,1515) * b(k,147) + b(k,118) = b(k,118) - lu(k,1514) * b(k,147) + b(k,104) = b(k,104) - lu(k,1513) * b(k,147) + b(k,58) = b(k,58) - lu(k,1512) * b(k,147) + b(k,146) = b(k,146) * lu(k,1508) + b(k,145) = b(k,145) - lu(k,1507) * b(k,146) + b(k,144) = b(k,144) - lu(k,1506) * b(k,146) + b(k,143) = b(k,143) - lu(k,1505) * b(k,146) + b(k,142) = b(k,142) - lu(k,1504) * b(k,146) + b(k,141) = b(k,141) - lu(k,1503) * b(k,146) + b(k,140) = b(k,140) - lu(k,1502) * b(k,146) + b(k,139) = b(k,139) - lu(k,1501) * b(k,146) + b(k,138) = b(k,138) - lu(k,1500) * b(k,146) + b(k,137) = b(k,137) - lu(k,1499) * b(k,146) + b(k,136) = b(k,136) - lu(k,1498) * b(k,146) + b(k,135) = b(k,135) - lu(k,1497) * b(k,146) + b(k,134) = b(k,134) - lu(k,1496) * b(k,146) + b(k,133) = b(k,133) - lu(k,1495) * b(k,146) + b(k,132) = b(k,132) - lu(k,1494) * b(k,146) + b(k,131) = b(k,131) - lu(k,1493) * b(k,146) + b(k,127) = b(k,127) - lu(k,1492) * b(k,146) + b(k,126) = b(k,126) - lu(k,1491) * b(k,146) + b(k,125) = b(k,125) - lu(k,1490) * b(k,146) + b(k,124) = b(k,124) - lu(k,1489) * b(k,146) + b(k,123) = b(k,123) - lu(k,1488) * b(k,146) + b(k,122) = b(k,122) - lu(k,1487) * b(k,146) + b(k,121) = b(k,121) - lu(k,1486) * b(k,146) + b(k,120) = b(k,120) - lu(k,1485) * b(k,146) + b(k,119) = b(k,119) - lu(k,1484) * b(k,146) + b(k,118) = b(k,118) - lu(k,1483) * b(k,146) + b(k,117) = b(k,117) - lu(k,1482) * b(k,146) + b(k,115) = b(k,115) - lu(k,1481) * b(k,146) + b(k,114) = b(k,114) - lu(k,1480) * b(k,146) + b(k,113) = b(k,113) - lu(k,1479) * b(k,146) + b(k,112) = b(k,112) - lu(k,1478) * b(k,146) + b(k,110) = b(k,110) - lu(k,1477) * b(k,146) + b(k,108) = b(k,108) - lu(k,1476) * b(k,146) + b(k,107) = b(k,107) - lu(k,1475) * b(k,146) + b(k,106) = b(k,106) - lu(k,1474) * b(k,146) + b(k,102) = b(k,102) - lu(k,1473) * b(k,146) + b(k,98) = b(k,98) - lu(k,1472) * b(k,146) + b(k,97) = b(k,97) - lu(k,1471) * b(k,146) + b(k,96) = b(k,96) - lu(k,1470) * b(k,146) + b(k,95) = b(k,95) - lu(k,1469) * b(k,146) + b(k,93) = b(k,93) - lu(k,1468) * b(k,146) + b(k,92) = b(k,92) - lu(k,1467) * b(k,146) + b(k,91) = b(k,91) - lu(k,1466) * b(k,146) + b(k,72) = b(k,72) - lu(k,1465) * b(k,146) + b(k,64) = b(k,64) - lu(k,1464) * b(k,146) + b(k,145) = b(k,145) * lu(k,1459) + b(k,144) = b(k,144) - lu(k,1458) * b(k,145) + b(k,143) = b(k,143) - lu(k,1457) * b(k,145) + b(k,142) = b(k,142) - lu(k,1456) * b(k,145) + b(k,141) = b(k,141) - lu(k,1455) * b(k,145) + b(k,140) = b(k,140) - lu(k,1454) * b(k,145) + b(k,139) = b(k,139) - lu(k,1453) * b(k,145) + b(k,138) = b(k,138) - lu(k,1452) * b(k,145) + b(k,137) = b(k,137) - lu(k,1451) * b(k,145) + b(k,136) = b(k,136) - lu(k,1450) * b(k,145) + b(k,135) = b(k,135) - lu(k,1449) * b(k,145) + b(k,134) = b(k,134) - lu(k,1448) * b(k,145) + b(k,133) = b(k,133) - lu(k,1447) * b(k,145) + b(k,132) = b(k,132) - lu(k,1446) * b(k,145) + b(k,131) = b(k,131) - lu(k,1445) * b(k,145) + b(k,130) = b(k,130) - lu(k,1444) * b(k,145) + b(k,129) = b(k,129) - lu(k,1443) * b(k,145) + b(k,128) = b(k,128) - lu(k,1442) * b(k,145) + b(k,127) = b(k,127) - lu(k,1441) * b(k,145) + b(k,118) = b(k,118) - lu(k,1440) * b(k,145) + b(k,111) = b(k,111) - lu(k,1439) * b(k,145) + b(k,110) = b(k,110) - lu(k,1438) * b(k,145) + b(k,109) = b(k,109) - lu(k,1437) * b(k,145) + b(k,108) = b(k,108) - lu(k,1436) * b(k,145) + b(k,107) = b(k,107) - lu(k,1435) * b(k,145) + b(k,106) = b(k,106) - lu(k,1434) * b(k,145) + b(k,105) = b(k,105) - lu(k,1433) * b(k,145) + b(k,101) = b(k,101) - lu(k,1432) * b(k,145) + b(k,100) = b(k,100) - lu(k,1431) * b(k,145) + b(k,99) = b(k,99) - lu(k,1430) * b(k,145) + b(k,94) = b(k,94) - lu(k,1429) * b(k,145) + b(k,92) = b(k,92) - lu(k,1428) * b(k,145) + b(k,90) = b(k,90) - lu(k,1427) * b(k,145) + b(k,87) = b(k,87) - lu(k,1426) * b(k,145) + b(k,84) = b(k,84) - lu(k,1425) * b(k,145) + b(k,82) = b(k,82) - lu(k,1424) * b(k,145) + b(k,77) = b(k,77) - lu(k,1423) * b(k,145) + b(k,76) = b(k,76) - lu(k,1422) * b(k,145) + b(k,65) = b(k,65) - lu(k,1421) * b(k,145) + b(k,46) = b(k,46) - lu(k,1420) * b(k,145) + b(k,45) = b(k,45) - lu(k,1419) * b(k,145) + b(k,144) = b(k,144) * lu(k,1413) + b(k,143) = b(k,143) - lu(k,1412) * b(k,144) + b(k,142) = b(k,142) - lu(k,1411) * b(k,144) + b(k,141) = b(k,141) - lu(k,1410) * b(k,144) + b(k,140) = b(k,140) - lu(k,1409) * b(k,144) + b(k,139) = b(k,139) - lu(k,1408) * b(k,144) + b(k,138) = b(k,138) - lu(k,1407) * b(k,144) + b(k,137) = b(k,137) - lu(k,1406) * b(k,144) + b(k,136) = b(k,136) - lu(k,1405) * b(k,144) + b(k,135) = b(k,135) - lu(k,1404) * b(k,144) + b(k,134) = b(k,134) - lu(k,1403) * b(k,144) + b(k,133) = b(k,133) - lu(k,1402) * b(k,144) + b(k,132) = b(k,132) - lu(k,1401) * b(k,144) + b(k,131) = b(k,131) - lu(k,1400) * b(k,144) + b(k,130) = b(k,130) - lu(k,1399) * b(k,144) + b(k,129) = b(k,129) - lu(k,1398) * b(k,144) + b(k,128) = b(k,128) - lu(k,1397) * b(k,144) + b(k,127) = b(k,127) - lu(k,1396) * b(k,144) + b(k,126) = b(k,126) - lu(k,1395) * b(k,144) + b(k,125) = b(k,125) - lu(k,1394) * b(k,144) + b(k,124) = b(k,124) - lu(k,1393) * b(k,144) + b(k,123) = b(k,123) - lu(k,1392) * b(k,144) + b(k,122) = b(k,122) - lu(k,1391) * b(k,144) + b(k,121) = b(k,121) - lu(k,1390) * b(k,144) + b(k,120) = b(k,120) - lu(k,1389) * b(k,144) + b(k,119) = b(k,119) - lu(k,1388) * b(k,144) + b(k,118) = b(k,118) - lu(k,1387) * b(k,144) + b(k,117) = b(k,117) - lu(k,1386) * b(k,144) + b(k,116) = b(k,116) - lu(k,1385) * b(k,144) + b(k,115) = b(k,115) - lu(k,1384) * b(k,144) + b(k,114) = b(k,114) - lu(k,1383) * b(k,144) + b(k,113) = b(k,113) - lu(k,1382) * b(k,144) + b(k,112) = b(k,112) - lu(k,1381) * b(k,144) + b(k,111) = b(k,111) - lu(k,1380) * b(k,144) + b(k,110) = b(k,110) - lu(k,1379) * b(k,144) + b(k,109) = b(k,109) - lu(k,1378) * b(k,144) + b(k,104) = b(k,104) - lu(k,1377) * b(k,144) + b(k,103) = b(k,103) - lu(k,1376) * b(k,144) + b(k,102) = b(k,102) - lu(k,1375) * b(k,144) + b(k,101) = b(k,101) - lu(k,1374) * b(k,144) + b(k,99) = b(k,99) - lu(k,1373) * b(k,144) + b(k,98) = b(k,98) - lu(k,1372) * b(k,144) + b(k,96) = b(k,96) - lu(k,1371) * b(k,144) + b(k,95) = b(k,95) - lu(k,1370) * b(k,144) + b(k,93) = b(k,93) - lu(k,1369) * b(k,144) + b(k,91) = b(k,91) - lu(k,1368) * b(k,144) + b(k,90) = b(k,90) - lu(k,1367) * b(k,144) + b(k,89) = b(k,89) - lu(k,1366) * b(k,144) + b(k,88) = b(k,88) - lu(k,1365) * b(k,144) + b(k,86) = b(k,86) - lu(k,1364) * b(k,144) + b(k,85) = b(k,85) - lu(k,1363) * b(k,144) + b(k,84) = b(k,84) - lu(k,1362) * b(k,144) + b(k,83) = b(k,83) - lu(k,1361) * b(k,144) + b(k,81) = b(k,81) - lu(k,1360) * b(k,144) + b(k,80) = b(k,80) - lu(k,1359) * b(k,144) + b(k,79) = b(k,79) - lu(k,1358) * b(k,144) + b(k,78) = b(k,78) - lu(k,1357) * b(k,144) + b(k,75) = b(k,75) - lu(k,1356) * b(k,144) + b(k,74) = b(k,74) - lu(k,1355) * b(k,144) + b(k,73) = b(k,73) - lu(k,1354) * b(k,144) + b(k,71) = b(k,71) - lu(k,1353) * b(k,144) + b(k,70) = b(k,70) - lu(k,1352) * b(k,144) + b(k,69) = b(k,69) - lu(k,1351) * b(k,144) + b(k,68) = b(k,68) - lu(k,1350) * b(k,144) + b(k,67) = b(k,67) - lu(k,1349) * b(k,144) + b(k,66) = b(k,66) - lu(k,1348) * b(k,144) + b(k,65) = b(k,65) - lu(k,1347) * b(k,144) + b(k,64) = b(k,64) - lu(k,1346) * b(k,144) + b(k,62) = b(k,62) - lu(k,1345) * b(k,144) + b(k,61) = b(k,61) - lu(k,1344) * b(k,144) + b(k,60) = b(k,60) - lu(k,1343) * b(k,144) + b(k,57) = b(k,57) - lu(k,1342) * b(k,144) + b(k,56) = b(k,56) - lu(k,1341) * b(k,144) + b(k,55) = b(k,55) - lu(k,1340) * b(k,144) + b(k,54) = b(k,54) - lu(k,1339) * b(k,144) + b(k,52) = b(k,52) - lu(k,1338) * b(k,144) + b(k,51) = b(k,51) - lu(k,1337) * b(k,144) + b(k,50) = b(k,50) - lu(k,1336) * b(k,144) + b(k,48) = b(k,48) - lu(k,1335) * b(k,144) + b(k,47) = b(k,47) - lu(k,1334) * b(k,144) + b(k,34) = b(k,34) - lu(k,1333) * b(k,144) + b(k,33) = b(k,33) - lu(k,1332) * b(k,144) + b(k,30) = b(k,30) - lu(k,1331) * b(k,144) + b(k,29) = b(k,29) - lu(k,1330) * b(k,144) + end do + end subroutine lu_slv05 + subroutine lu_slv06( avec_len, lu, b ) + use shr_kind_mod, only : r8 => shr_kind_r8 + use chem_mods, only : clscnt4, nzcnt + implicit none +!----------------------------------------------------------------------- +! ... Dummy args +!----------------------------------------------------------------------- + integer, intent(in) :: avec_len + real(r8), intent(in) :: lu(veclen,max(1,nzcnt)) + real(r8), intent(inout) :: b(veclen,clscnt4) +!----------------------------------------------------------------------- +! ... Local variables +!----------------------------------------------------------------------- + integer :: k +!----------------------------------------------------------------------- +! ... solve L * y = b +!----------------------------------------------------------------------- + do k = 1,avec_len + b(k,143) = b(k,143) * lu(k,1323) + b(k,142) = b(k,142) - lu(k,1322) * b(k,143) + b(k,141) = b(k,141) - lu(k,1321) * b(k,143) + b(k,140) = b(k,140) - lu(k,1320) * b(k,143) + b(k,139) = b(k,139) - lu(k,1319) * b(k,143) + b(k,138) = b(k,138) - lu(k,1318) * b(k,143) + b(k,137) = b(k,137) - lu(k,1317) * b(k,143) + b(k,136) = b(k,136) - lu(k,1316) * b(k,143) + b(k,135) = b(k,135) - lu(k,1315) * b(k,143) + b(k,134) = b(k,134) - lu(k,1314) * b(k,143) + b(k,133) = b(k,133) - lu(k,1313) * b(k,143) + b(k,132) = b(k,132) - lu(k,1312) * b(k,143) + b(k,131) = b(k,131) - lu(k,1311) * b(k,143) + b(k,130) = b(k,130) - lu(k,1310) * b(k,143) + b(k,128) = b(k,128) - lu(k,1309) * b(k,143) + b(k,127) = b(k,127) - lu(k,1308) * b(k,143) + b(k,126) = b(k,126) - lu(k,1307) * b(k,143) + b(k,118) = b(k,118) - lu(k,1306) * b(k,143) + b(k,117) = b(k,117) - lu(k,1305) * b(k,143) + b(k,114) = b(k,114) - lu(k,1304) * b(k,143) + b(k,111) = b(k,111) - lu(k,1303) * b(k,143) + b(k,101) = b(k,101) - lu(k,1302) * b(k,143) + b(k,98) = b(k,98) - lu(k,1301) * b(k,143) + b(k,93) = b(k,93) - lu(k,1300) * b(k,143) + b(k,86) = b(k,86) - lu(k,1299) * b(k,143) + b(k,84) = b(k,84) - lu(k,1298) * b(k,143) + b(k,75) = b(k,75) - lu(k,1297) * b(k,143) + b(k,74) = b(k,74) - lu(k,1296) * b(k,143) + b(k,71) = b(k,71) - lu(k,1295) * b(k,143) + b(k,66) = b(k,66) - lu(k,1294) * b(k,143) + b(k,60) = b(k,60) - lu(k,1293) * b(k,143) + b(k,44) = b(k,44) - lu(k,1292) * b(k,143) + b(k,142) = b(k,142) * lu(k,1284) + b(k,141) = b(k,141) - lu(k,1283) * b(k,142) + b(k,140) = b(k,140) - lu(k,1282) * b(k,142) + b(k,139) = b(k,139) - lu(k,1281) * b(k,142) + b(k,138) = b(k,138) - lu(k,1280) * b(k,142) + b(k,137) = b(k,137) - lu(k,1279) * b(k,142) + b(k,136) = b(k,136) - lu(k,1278) * b(k,142) + b(k,135) = b(k,135) - lu(k,1277) * b(k,142) + b(k,134) = b(k,134) - lu(k,1276) * b(k,142) + b(k,133) = b(k,133) - lu(k,1275) * b(k,142) + b(k,132) = b(k,132) - lu(k,1274) * b(k,142) + b(k,131) = b(k,131) - lu(k,1273) * b(k,142) + b(k,130) = b(k,130) - lu(k,1272) * b(k,142) + b(k,128) = b(k,128) - lu(k,1271) * b(k,142) + b(k,104) = b(k,104) - lu(k,1270) * b(k,142) + b(k,99) = b(k,99) - lu(k,1269) * b(k,142) + b(k,86) = b(k,86) - lu(k,1268) * b(k,142) + b(k,75) = b(k,75) - lu(k,1267) * b(k,142) + b(k,71) = b(k,71) - lu(k,1266) * b(k,142) + b(k,57) = b(k,57) - lu(k,1265) * b(k,142) + b(k,53) = b(k,53) - lu(k,1264) * b(k,142) + b(k,52) = b(k,52) - lu(k,1263) * b(k,142) + b(k,51) = b(k,51) - lu(k,1262) * b(k,142) + b(k,50) = b(k,50) - lu(k,1261) * b(k,142) + b(k,48) = b(k,48) - lu(k,1260) * b(k,142) + b(k,46) = b(k,46) - lu(k,1259) * b(k,142) + b(k,43) = b(k,43) - lu(k,1258) * b(k,142) + b(k,42) = b(k,42) - lu(k,1257) * b(k,142) + b(k,41) = b(k,41) - lu(k,1256) * b(k,142) + b(k,40) = b(k,40) - lu(k,1255) * b(k,142) + b(k,37) = b(k,37) - lu(k,1254) * b(k,142) + b(k,36) = b(k,36) - lu(k,1253) * b(k,142) + b(k,35) = b(k,35) - lu(k,1252) * b(k,142) + b(k,32) = b(k,32) - lu(k,1251) * b(k,142) + b(k,31) = b(k,31) - lu(k,1250) * b(k,142) + b(k,141) = b(k,141) * lu(k,1241) + b(k,140) = b(k,140) - lu(k,1240) * b(k,141) + b(k,139) = b(k,139) - lu(k,1239) * b(k,141) + b(k,138) = b(k,138) - lu(k,1238) * b(k,141) + b(k,137) = b(k,137) - lu(k,1237) * b(k,141) + b(k,136) = b(k,136) - lu(k,1236) * b(k,141) + b(k,135) = b(k,135) - lu(k,1235) * b(k,141) + b(k,134) = b(k,134) - lu(k,1234) * b(k,141) + b(k,133) = b(k,133) - lu(k,1233) * b(k,141) + b(k,132) = b(k,132) - lu(k,1232) * b(k,141) + b(k,131) = b(k,131) - lu(k,1231) * b(k,141) + b(k,129) = b(k,129) - lu(k,1230) * b(k,141) + b(k,127) = b(k,127) - lu(k,1229) * b(k,141) + b(k,126) = b(k,126) - lu(k,1228) * b(k,141) + b(k,125) = b(k,125) - lu(k,1227) * b(k,141) + b(k,124) = b(k,124) - lu(k,1226) * b(k,141) + b(k,123) = b(k,123) - lu(k,1225) * b(k,141) + b(k,122) = b(k,122) - lu(k,1224) * b(k,141) + b(k,121) = b(k,121) - lu(k,1223) * b(k,141) + b(k,120) = b(k,120) - lu(k,1222) * b(k,141) + b(k,119) = b(k,119) - lu(k,1221) * b(k,141) + b(k,118) = b(k,118) - lu(k,1220) * b(k,141) + b(k,117) = b(k,117) - lu(k,1219) * b(k,141) + b(k,116) = b(k,116) - lu(k,1218) * b(k,141) + b(k,115) = b(k,115) - lu(k,1217) * b(k,141) + b(k,114) = b(k,114) - lu(k,1216) * b(k,141) + b(k,113) = b(k,113) - lu(k,1215) * b(k,141) + b(k,112) = b(k,112) - lu(k,1214) * b(k,141) + b(k,109) = b(k,109) - lu(k,1213) * b(k,141) + b(k,103) = b(k,103) - lu(k,1212) * b(k,141) + b(k,97) = b(k,97) - lu(k,1211) * b(k,141) + b(k,95) = b(k,95) - lu(k,1210) * b(k,141) + b(k,91) = b(k,91) - lu(k,1209) * b(k,141) + b(k,88) = b(k,88) - lu(k,1208) * b(k,141) + b(k,67) = b(k,67) - lu(k,1207) * b(k,141) + b(k,64) = b(k,64) - lu(k,1206) * b(k,141) + b(k,59) = b(k,59) - lu(k,1205) * b(k,141) + b(k,56) = b(k,56) - lu(k,1204) * b(k,141) + b(k,140) = b(k,140) * lu(k,1194) + b(k,139) = b(k,139) - lu(k,1193) * b(k,140) + b(k,138) = b(k,138) - lu(k,1192) * b(k,140) + b(k,137) = b(k,137) - lu(k,1191) * b(k,140) + b(k,136) = b(k,136) - lu(k,1190) * b(k,140) + b(k,135) = b(k,135) - lu(k,1189) * b(k,140) + b(k,134) = b(k,134) - lu(k,1188) * b(k,140) + b(k,133) = b(k,133) - lu(k,1187) * b(k,140) + b(k,132) = b(k,132) - lu(k,1186) * b(k,140) + b(k,127) = b(k,127) - lu(k,1185) * b(k,140) + b(k,126) = b(k,126) - lu(k,1184) * b(k,140) + b(k,125) = b(k,125) - lu(k,1183) * b(k,140) + b(k,124) = b(k,124) - lu(k,1182) * b(k,140) + b(k,123) = b(k,123) - lu(k,1181) * b(k,140) + b(k,122) = b(k,122) - lu(k,1180) * b(k,140) + b(k,121) = b(k,121) - lu(k,1179) * b(k,140) + b(k,120) = b(k,120) - lu(k,1178) * b(k,140) + b(k,119) = b(k,119) - lu(k,1177) * b(k,140) + b(k,118) = b(k,118) - lu(k,1176) * b(k,140) + b(k,117) = b(k,117) - lu(k,1175) * b(k,140) + b(k,115) = b(k,115) - lu(k,1174) * b(k,140) + b(k,114) = b(k,114) - lu(k,1173) * b(k,140) + b(k,113) = b(k,113) - lu(k,1172) * b(k,140) + b(k,102) = b(k,102) - lu(k,1171) * b(k,140) + b(k,98) = b(k,98) - lu(k,1170) * b(k,140) + b(k,95) = b(k,95) - lu(k,1169) * b(k,140) + b(k,91) = b(k,91) - lu(k,1168) * b(k,140) + b(k,89) = b(k,89) - lu(k,1167) * b(k,140) + b(k,80) = b(k,80) - lu(k,1166) * b(k,140) + b(k,69) = b(k,69) - lu(k,1165) * b(k,140) + b(k,64) = b(k,64) - lu(k,1164) * b(k,140) + b(k,54) = b(k,54) - lu(k,1163) * b(k,140) + b(k,139) = b(k,139) * lu(k,1152) + b(k,138) = b(k,138) - lu(k,1151) * b(k,139) + b(k,137) = b(k,137) - lu(k,1150) * b(k,139) + b(k,136) = b(k,136) - lu(k,1149) * b(k,139) + b(k,135) = b(k,135) - lu(k,1148) * b(k,139) + b(k,134) = b(k,134) - lu(k,1147) * b(k,139) + b(k,133) = b(k,133) - lu(k,1146) * b(k,139) + b(k,132) = b(k,132) - lu(k,1145) * b(k,139) + b(k,131) = b(k,131) - lu(k,1144) * b(k,139) + b(k,130) = b(k,130) - lu(k,1143) * b(k,139) + b(k,128) = b(k,128) - lu(k,1142) * b(k,139) + b(k,104) = b(k,104) - lu(k,1141) * b(k,139) + b(k,58) = b(k,58) - lu(k,1140) * b(k,139) + b(k,138) = b(k,138) * lu(k,1128) + b(k,137) = b(k,137) - lu(k,1127) * b(k,138) + b(k,136) = b(k,136) - lu(k,1126) * b(k,138) + b(k,135) = b(k,135) - lu(k,1125) * b(k,138) + b(k,134) = b(k,134) - lu(k,1124) * b(k,138) + b(k,133) = b(k,133) - lu(k,1123) * b(k,138) + b(k,132) = b(k,132) - lu(k,1122) * b(k,138) + b(k,131) = b(k,131) - lu(k,1121) * b(k,138) + b(k,129) = b(k,129) - lu(k,1120) * b(k,138) + b(k,127) = b(k,127) - lu(k,1119) * b(k,138) + b(k,126) = b(k,126) - lu(k,1118) * b(k,138) + b(k,125) = b(k,125) - lu(k,1117) * b(k,138) + b(k,124) = b(k,124) - lu(k,1116) * b(k,138) + b(k,123) = b(k,123) - lu(k,1115) * b(k,138) + b(k,122) = b(k,122) - lu(k,1114) * b(k,138) + b(k,121) = b(k,121) - lu(k,1113) * b(k,138) + b(k,120) = b(k,120) - lu(k,1112) * b(k,138) + b(k,119) = b(k,119) - lu(k,1111) * b(k,138) + b(k,118) = b(k,118) - lu(k,1110) * b(k,138) + b(k,117) = b(k,117) - lu(k,1109) * b(k,138) + b(k,116) = b(k,116) - lu(k,1108) * b(k,138) + b(k,115) = b(k,115) - lu(k,1107) * b(k,138) + b(k,114) = b(k,114) - lu(k,1106) * b(k,138) + b(k,113) = b(k,113) - lu(k,1105) * b(k,138) + b(k,112) = b(k,112) - lu(k,1104) * b(k,138) + b(k,109) = b(k,109) - lu(k,1103) * b(k,138) + b(k,103) = b(k,103) - lu(k,1102) * b(k,138) + b(k,95) = b(k,95) - lu(k,1101) * b(k,138) + b(k,93) = b(k,93) - lu(k,1100) * b(k,138) + b(k,90) = b(k,90) - lu(k,1099) * b(k,138) + b(k,89) = b(k,89) - lu(k,1098) * b(k,138) + b(k,88) = b(k,88) - lu(k,1097) * b(k,138) + b(k,74) = b(k,74) - lu(k,1096) * b(k,138) + b(k,46) = b(k,46) - lu(k,1095) * b(k,138) + b(k,45) = b(k,45) - lu(k,1094) * b(k,138) + b(k,137) = b(k,137) * lu(k,1081) + b(k,136) = b(k,136) - lu(k,1080) * b(k,137) + b(k,135) = b(k,135) - lu(k,1079) * b(k,137) + b(k,134) = b(k,134) - lu(k,1078) * b(k,137) + b(k,133) = b(k,133) - lu(k,1077) * b(k,137) + b(k,132) = b(k,132) - lu(k,1076) * b(k,137) + b(k,131) = b(k,131) - lu(k,1075) * b(k,137) + b(k,130) = b(k,130) - lu(k,1074) * b(k,137) + b(k,128) = b(k,128) - lu(k,1073) * b(k,137) + b(k,127) = b(k,127) - lu(k,1072) * b(k,137) + b(k,126) = b(k,126) - lu(k,1071) * b(k,137) + b(k,125) = b(k,125) - lu(k,1070) * b(k,137) + b(k,124) = b(k,124) - lu(k,1069) * b(k,137) + b(k,123) = b(k,123) - lu(k,1068) * b(k,137) + b(k,122) = b(k,122) - lu(k,1067) * b(k,137) + b(k,121) = b(k,121) - lu(k,1066) * b(k,137) + b(k,120) = b(k,120) - lu(k,1065) * b(k,137) + b(k,119) = b(k,119) - lu(k,1064) * b(k,137) + b(k,118) = b(k,118) - lu(k,1063) * b(k,137) + b(k,117) = b(k,117) - lu(k,1062) * b(k,137) + b(k,115) = b(k,115) - lu(k,1061) * b(k,137) + b(k,114) = b(k,114) - lu(k,1060) * b(k,137) + b(k,113) = b(k,113) - lu(k,1059) * b(k,137) + b(k,112) = b(k,112) - lu(k,1058) * b(k,137) + b(k,102) = b(k,102) - lu(k,1057) * b(k,137) + b(k,101) = b(k,101) - lu(k,1056) * b(k,137) + b(k,99) = b(k,99) - lu(k,1055) * b(k,137) + b(k,98) = b(k,98) - lu(k,1054) * b(k,137) + b(k,97) = b(k,97) - lu(k,1053) * b(k,137) + b(k,96) = b(k,96) - lu(k,1052) * b(k,137) + b(k,95) = b(k,95) - lu(k,1051) * b(k,137) + b(k,94) = b(k,94) - lu(k,1050) * b(k,137) + b(k,93) = b(k,93) - lu(k,1049) * b(k,137) + b(k,89) = b(k,89) - lu(k,1048) * b(k,137) + b(k,85) = b(k,85) - lu(k,1047) * b(k,137) + b(k,84) = b(k,84) - lu(k,1046) * b(k,137) + b(k,81) = b(k,81) - lu(k,1045) * b(k,137) + b(k,78) = b(k,78) - lu(k,1044) * b(k,137) + b(k,73) = b(k,73) - lu(k,1043) * b(k,137) + b(k,72) = b(k,72) - lu(k,1042) * b(k,137) + b(k,70) = b(k,70) - lu(k,1041) * b(k,137) + b(k,69) = b(k,69) - lu(k,1040) * b(k,137) + b(k,68) = b(k,68) - lu(k,1039) * b(k,137) + b(k,62) = b(k,62) - lu(k,1038) * b(k,137) + b(k,61) = b(k,61) - lu(k,1037) * b(k,137) + b(k,47) = b(k,47) - lu(k,1036) * b(k,137) + b(k,38) = b(k,38) - lu(k,1035) * b(k,137) + end do + end subroutine lu_slv06 + subroutine lu_slv07( avec_len, lu, b ) + use shr_kind_mod, only : r8 => shr_kind_r8 + use chem_mods, only : clscnt4, nzcnt + implicit none +!----------------------------------------------------------------------- +! ... Dummy args +!----------------------------------------------------------------------- + integer, intent(in) :: avec_len + real(r8), intent(in) :: lu(veclen,max(1,nzcnt)) + real(r8), intent(inout) :: b(veclen,clscnt4) +!----------------------------------------------------------------------- +! ... Local variables +!----------------------------------------------------------------------- + integer :: k +!----------------------------------------------------------------------- +! ... solve L * y = b +!----------------------------------------------------------------------- + do k = 1,avec_len + b(k,136) = b(k,136) * lu(k,1021) + b(k,135) = b(k,135) - lu(k,1020) * b(k,136) + b(k,134) = b(k,134) - lu(k,1019) * b(k,136) + b(k,133) = b(k,133) - lu(k,1018) * b(k,136) + b(k,132) = b(k,132) - lu(k,1017) * b(k,136) + b(k,131) = b(k,131) - lu(k,1016) * b(k,136) + b(k,130) = b(k,130) - lu(k,1015) * b(k,136) + b(k,128) = b(k,128) - lu(k,1014) * b(k,136) + b(k,127) = b(k,127) - lu(k,1013) * b(k,136) + b(k,118) = b(k,118) - lu(k,1012) * b(k,136) + b(k,99) = b(k,99) - lu(k,1011) * b(k,136) + b(k,135) = b(k,135) * lu(k,996) + b(k,134) = b(k,134) - lu(k,995) * b(k,135) + b(k,133) = b(k,133) - lu(k,994) * b(k,135) + b(k,132) = b(k,132) - lu(k,993) * b(k,135) + b(k,131) = b(k,131) - lu(k,992) * b(k,135) + b(k,130) = b(k,130) - lu(k,991) * b(k,135) + b(k,129) = b(k,129) - lu(k,990) * b(k,135) + b(k,127) = b(k,127) - lu(k,989) * b(k,135) + b(k,126) = b(k,126) - lu(k,988) * b(k,135) + b(k,125) = b(k,125) - lu(k,987) * b(k,135) + b(k,121) = b(k,121) - lu(k,986) * b(k,135) + b(k,118) = b(k,118) - lu(k,985) * b(k,135) + b(k,115) = b(k,115) - lu(k,984) * b(k,135) + b(k,111) = b(k,111) - lu(k,983) * b(k,135) + b(k,110) = b(k,110) - lu(k,982) * b(k,135) + b(k,109) = b(k,109) - lu(k,981) * b(k,135) + b(k,94) = b(k,94) - lu(k,980) * b(k,135) + b(k,83) = b(k,83) - lu(k,979) * b(k,135) + b(k,82) = b(k,82) - lu(k,978) * b(k,135) + b(k,79) = b(k,79) - lu(k,977) * b(k,135) + b(k,73) = b(k,73) - lu(k,976) * b(k,135) + b(k,59) = b(k,59) - lu(k,975) * b(k,135) + b(k,53) = b(k,53) - lu(k,974) * b(k,135) + b(k,134) = b(k,134) * lu(k,959) + b(k,133) = b(k,133) - lu(k,958) * b(k,134) + b(k,132) = b(k,132) - lu(k,957) * b(k,134) + b(k,131) = b(k,131) - lu(k,956) * b(k,134) + b(k,130) = b(k,130) - lu(k,955) * b(k,134) + b(k,129) = b(k,129) - lu(k,954) * b(k,134) + b(k,111) = b(k,111) - lu(k,953) * b(k,134) + b(k,109) = b(k,109) - lu(k,952) * b(k,134) + b(k,101) = b(k,101) - lu(k,951) * b(k,134) + b(k,63) = b(k,63) - lu(k,950) * b(k,134) + b(k,49) = b(k,49) - lu(k,949) * b(k,134) + b(k,44) = b(k,44) - lu(k,948) * b(k,134) + b(k,28) = b(k,28) - lu(k,947) * b(k,134) + b(k,133) = b(k,133) * lu(k,932) + b(k,132) = b(k,132) - lu(k,931) * b(k,133) + b(k,131) = b(k,131) - lu(k,930) * b(k,133) + b(k,130) = b(k,130) - lu(k,929) * b(k,133) + b(k,129) = b(k,129) - lu(k,928) * b(k,133) + b(k,109) = b(k,109) - lu(k,927) * b(k,133) + b(k,94) = b(k,94) - lu(k,926) * b(k,133) + b(k,82) = b(k,82) - lu(k,925) * b(k,133) + b(k,63) = b(k,63) - lu(k,924) * b(k,133) + b(k,49) = b(k,49) - lu(k,923) * b(k,133) + b(k,132) = b(k,132) * lu(k,909) + b(k,131) = b(k,131) - lu(k,908) * b(k,132) + b(k,129) = b(k,129) - lu(k,907) * b(k,132) + b(k,127) = b(k,127) - lu(k,906) * b(k,132) + b(k,118) = b(k,118) - lu(k,905) * b(k,132) + b(k,114) = b(k,114) - lu(k,904) * b(k,132) + b(k,110) = b(k,110) - lu(k,903) * b(k,132) + b(k,109) = b(k,109) - lu(k,902) * b(k,132) + b(k,108) = b(k,108) - lu(k,901) * b(k,132) + b(k,107) = b(k,107) - lu(k,900) * b(k,132) + b(k,106) = b(k,106) - lu(k,899) * b(k,132) + b(k,105) = b(k,105) - lu(k,898) * b(k,132) + b(k,100) = b(k,100) - lu(k,897) * b(k,132) + b(k,92) = b(k,92) - lu(k,896) * b(k,132) + b(k,90) = b(k,90) - lu(k,895) * b(k,132) + b(k,87) = b(k,87) - lu(k,894) * b(k,132) + b(k,77) = b(k,77) - lu(k,893) * b(k,132) + b(k,76) = b(k,76) - lu(k,892) * b(k,132) + b(k,72) = b(k,72) - lu(k,891) * b(k,132) + b(k,46) = b(k,46) - lu(k,890) * b(k,132) + b(k,45) = b(k,45) - lu(k,889) * b(k,132) + b(k,131) = b(k,131) * lu(k,876) + b(k,127) = b(k,127) - lu(k,875) * b(k,131) + b(k,118) = b(k,118) - lu(k,874) * b(k,131) + b(k,99) = b(k,99) - lu(k,873) * b(k,131) + b(k,130) = b(k,130) * lu(k,860) + b(k,111) = b(k,111) - lu(k,859) * b(k,130) + b(k,101) = b(k,101) - lu(k,858) * b(k,130) + b(k,94) = b(k,94) - lu(k,857) * b(k,130) + b(k,49) = b(k,49) - lu(k,856) * b(k,130) + b(k,44) = b(k,44) - lu(k,855) * b(k,130) + b(k,129) = b(k,129) * lu(k,841) + b(k,109) = b(k,109) - lu(k,840) * b(k,129) + b(k,90) = b(k,90) - lu(k,839) * b(k,129) + b(k,63) = b(k,63) - lu(k,838) * b(k,129) + b(k,128) = b(k,128) * lu(k,826) + b(k,104) = b(k,104) - lu(k,825) * b(k,128) + b(k,58) = b(k,58) - lu(k,824) * b(k,128) + b(k,127) = b(k,127) * lu(k,815) + b(k,118) = b(k,118) - lu(k,814) * b(k,127) + b(k,110) = b(k,110) - lu(k,813) * b(k,127) + b(k,108) = b(k,108) - lu(k,812) * b(k,127) + b(k,107) = b(k,107) - lu(k,811) * b(k,127) + b(k,106) = b(k,106) - lu(k,810) * b(k,127) + b(k,105) = b(k,105) - lu(k,809) * b(k,127) + b(k,46) = b(k,46) - lu(k,808) * b(k,127) + b(k,45) = b(k,45) - lu(k,807) * b(k,127) + b(k,126) = b(k,126) * lu(k,793) + b(k,125) = b(k,125) - lu(k,792) * b(k,126) + b(k,124) = b(k,124) - lu(k,791) * b(k,126) + b(k,123) = b(k,123) - lu(k,790) * b(k,126) + b(k,122) = b(k,122) - lu(k,789) * b(k,126) + b(k,121) = b(k,121) - lu(k,788) * b(k,126) + b(k,120) = b(k,120) - lu(k,787) * b(k,126) + b(k,119) = b(k,119) - lu(k,786) * b(k,126) + b(k,118) = b(k,118) - lu(k,785) * b(k,126) + b(k,115) = b(k,115) - lu(k,784) * b(k,126) + b(k,114) = b(k,114) - lu(k,783) * b(k,126) + b(k,91) = b(k,91) - lu(k,782) * b(k,126) + b(k,89) = b(k,89) - lu(k,781) * b(k,126) + b(k,85) = b(k,85) - lu(k,780) * b(k,126) + b(k,79) = b(k,79) - lu(k,779) * b(k,126) + b(k,64) = b(k,64) - lu(k,778) * b(k,126) + b(k,125) = b(k,125) * lu(k,765) + b(k,121) = b(k,121) - lu(k,764) * b(k,125) + b(k,115) = b(k,115) - lu(k,763) * b(k,125) + b(k,89) = b(k,89) - lu(k,762) * b(k,125) + b(k,85) = b(k,85) - lu(k,761) * b(k,125) + b(k,83) = b(k,83) - lu(k,760) * b(k,125) + b(k,124) = b(k,124) * lu(k,744) + b(k,123) = b(k,123) - lu(k,743) * b(k,124) + b(k,121) = b(k,121) - lu(k,742) * b(k,124) + b(k,118) = b(k,118) - lu(k,741) * b(k,124) + b(k,117) = b(k,117) - lu(k,740) * b(k,124) + b(k,116) = b(k,116) - lu(k,739) * b(k,124) + b(k,123) = b(k,123) * lu(k,726) + b(k,121) = b(k,121) - lu(k,725) * b(k,123) + b(k,120) = b(k,120) - lu(k,724) * b(k,123) + b(k,118) = b(k,118) - lu(k,723) * b(k,123) + b(k,115) = b(k,115) - lu(k,722) * b(k,123) + b(k,114) = b(k,114) - lu(k,721) * b(k,123) + b(k,112) = b(k,112) - lu(k,720) * b(k,123) + b(k,80) = b(k,80) - lu(k,719) * b(k,123) + b(k,61) = b(k,61) - lu(k,718) * b(k,123) + b(k,122) = b(k,122) * lu(k,702) + b(k,121) = b(k,121) - lu(k,701) * b(k,122) + b(k,120) = b(k,120) - lu(k,700) * b(k,122) + b(k,119) = b(k,119) - lu(k,699) * b(k,122) + b(k,118) = b(k,118) - lu(k,698) * b(k,122) + b(k,115) = b(k,115) - lu(k,697) * b(k,122) + b(k,114) = b(k,114) - lu(k,696) * b(k,122) + b(k,112) = b(k,112) - lu(k,695) * b(k,122) + b(k,91) = b(k,91) - lu(k,694) * b(k,122) + b(k,80) = b(k,80) - lu(k,693) * b(k,122) + b(k,78) = b(k,78) - lu(k,692) * b(k,122) + b(k,64) = b(k,64) - lu(k,691) * b(k,122) + b(k,121) = b(k,121) * lu(k,683) + b(k,118) = b(k,118) - lu(k,682) * b(k,121) + b(k,120) = b(k,120) * lu(k,671) + b(k,118) = b(k,118) - lu(k,670) * b(k,120) + b(k,115) = b(k,115) - lu(k,669) * b(k,120) + b(k,114) = b(k,114) - lu(k,668) * b(k,120) + b(k,91) = b(k,91) - lu(k,667) * b(k,120) + b(k,80) = b(k,80) - lu(k,666) * b(k,120) + b(k,47) = b(k,47) - lu(k,665) * b(k,120) + b(k,119) = b(k,119) * lu(k,654) + b(k,118) = b(k,118) - lu(k,653) * b(k,119) + b(k,118) = b(k,118) * lu(k,649) + b(k,117) = b(k,117) * lu(k,640) + b(k,116) = b(k,116) * lu(k,623) + b(k,115) = b(k,115) - lu(k,622) * b(k,116) + b(k,96) = b(k,96) - lu(k,621) * b(k,116) + b(k,89) = b(k,89) - lu(k,620) * b(k,116) + b(k,67) = b(k,67) - lu(k,619) * b(k,116) + b(k,115) = b(k,115) * lu(k,613) + b(k,114) = b(k,114) * lu(k,607) + b(k,91) = b(k,91) - lu(k,606) * b(k,114) + b(k,113) = b(k,113) * lu(k,595) + b(k,80) = b(k,80) - lu(k,594) * b(k,113) + b(k,70) = b(k,70) - lu(k,593) * b(k,113) + b(k,112) = b(k,112) * lu(k,584) + b(k,64) = b(k,64) - lu(k,583) * b(k,112) + b(k,111) = b(k,111) * lu(k,573) + b(k,101) = b(k,101) - lu(k,572) * b(k,111) + b(k,44) = b(k,44) - lu(k,571) * b(k,111) + b(k,110) = b(k,110) * lu(k,561) + b(k,108) = b(k,108) - lu(k,560) * b(k,110) + b(k,107) = b(k,107) - lu(k,559) * b(k,110) + b(k,106) = b(k,106) - lu(k,558) * b(k,110) + b(k,105) = b(k,105) - lu(k,557) * b(k,110) + b(k,100) = b(k,100) - lu(k,556) * b(k,110) + b(k,92) = b(k,92) - lu(k,555) * b(k,110) + b(k,53) = b(k,53) - lu(k,554) * b(k,110) + b(k,109) = b(k,109) * lu(k,548) + b(k,55) = b(k,55) - lu(k,547) * b(k,109) + b(k,108) = b(k,108) * lu(k,539) + b(k,107) = b(k,107) - lu(k,538) * b(k,108) + b(k,106) = b(k,106) - lu(k,537) * b(k,108) + b(k,105) = b(k,105) - lu(k,536) * b(k,108) + b(k,100) = b(k,100) - lu(k,535) * b(k,108) + b(k,107) = b(k,107) * lu(k,526) + b(k,106) = b(k,106) - lu(k,525) * b(k,107) + b(k,105) = b(k,105) - lu(k,524) * b(k,107) + b(k,100) = b(k,100) - lu(k,523) * b(k,107) + b(k,92) = b(k,92) - lu(k,522) * b(k,107) + b(k,87) = b(k,87) - lu(k,521) * b(k,107) + b(k,77) = b(k,77) - lu(k,520) * b(k,107) + b(k,76) = b(k,76) - lu(k,519) * b(k,107) + end do + end subroutine lu_slv07 + subroutine lu_slv08( avec_len, lu, b ) + use shr_kind_mod, only : r8 => shr_kind_r8 + use chem_mods, only : clscnt4, nzcnt + implicit none +!----------------------------------------------------------------------- +! ... Dummy args +!----------------------------------------------------------------------- + integer, intent(in) :: avec_len + real(r8), intent(in) :: lu(veclen,max(1,nzcnt)) + real(r8), intent(inout) :: b(veclen,clscnt4) +!----------------------------------------------------------------------- +! ... Local variables +!----------------------------------------------------------------------- + integer :: k +!----------------------------------------------------------------------- +! ... solve L * y = b +!----------------------------------------------------------------------- + do k = 1,avec_len + b(k,106) = b(k,106) * lu(k,511) + b(k,92) = b(k,92) - lu(k,510) * b(k,106) + b(k,105) = b(k,105) * lu(k,501) + b(k,100) = b(k,100) - lu(k,500) * b(k,105) + b(k,92) = b(k,92) - lu(k,499) * b(k,105) + b(k,104) = b(k,104) * lu(k,490) + b(k,58) = b(k,58) - lu(k,489) * b(k,104) + b(k,103) = b(k,103) * lu(k,473) + b(k,97) = b(k,97) - lu(k,472) * b(k,103) + b(k,102) = b(k,102) * lu(k,460) + b(k,95) = b(k,95) - lu(k,459) * b(k,102) + b(k,68) = b(k,68) - lu(k,458) * b(k,102) + b(k,101) = b(k,101) * lu(k,451) + b(k,44) = b(k,44) - lu(k,450) * b(k,101) + b(k,100) = b(k,100) * lu(k,442) + b(k,92) = b(k,92) - lu(k,441) * b(k,100) + b(k,99) = b(k,99) * lu(k,433) + b(k,98) = b(k,98) * lu(k,424) + b(k,80) = b(k,80) - lu(k,423) * b(k,98) + b(k,62) = b(k,62) - lu(k,422) * b(k,98) + b(k,54) = b(k,54) - lu(k,421) * b(k,98) + b(k,97) = b(k,97) * lu(k,411) + b(k,96) = b(k,96) * lu(k,401) + b(k,81) = b(k,81) - lu(k,400) * b(k,96) + b(k,95) = b(k,95) * lu(k,394) + b(k,94) = b(k,94) * lu(k,386) + b(k,49) = b(k,49) - lu(k,385) * b(k,94) + b(k,93) = b(k,93) * lu(k,377) + b(k,72) = b(k,72) - lu(k,376) * b(k,93) + b(k,38) = b(k,38) - lu(k,375) * b(k,93) + b(k,92) = b(k,92) * lu(k,370) + b(k,91) = b(k,91) * lu(k,365) + b(k,90) = b(k,90) * lu(k,358) + b(k,89) = b(k,89) * lu(k,353) + b(k,88) = b(k,88) * lu(k,343) + b(k,87) = b(k,87) * lu(k,334) + b(k,86) = b(k,86) * lu(k,325) + b(k,85) = b(k,85) * lu(k,318) + b(k,84) = b(k,84) * lu(k,311) + b(k,83) = b(k,83) * lu(k,302) + b(k,82) = b(k,82) * lu(k,294) + b(k,81) = b(k,81) * lu(k,286) + b(k,80) = b(k,80) * lu(k,282) + b(k,79) = b(k,79) * lu(k,274) + b(k,78) = b(k,78) * lu(k,266) + b(k,77) = b(k,77) * lu(k,260) + b(k,76) = b(k,76) * lu(k,253) + b(k,75) = b(k,75) * lu(k,246) + b(k,74) = b(k,74) * lu(k,239) + b(k,73) = b(k,73) * lu(k,232) + b(k,72) = b(k,72) * lu(k,227) + b(k,71) = b(k,71) * lu(k,221) + b(k,70) = b(k,70) * lu(k,215) + b(k,69) = b(k,69) * lu(k,209) + b(k,68) = b(k,68) * lu(k,203) + b(k,67) = b(k,67) * lu(k,197) + b(k,66) = b(k,66) * lu(k,189) + b(k,65) = b(k,65) * lu(k,181) + b(k,64) = b(k,64) * lu(k,178) + b(k,63) = b(k,63) * lu(k,173) + b(k,62) = b(k,62) * lu(k,168) + b(k,61) = b(k,61) * lu(k,163) + b(k,60) = b(k,60) * lu(k,157) + b(k,59) = b(k,59) * lu(k,151) + b(k,58) = b(k,58) * lu(k,148) + b(k,57) = b(k,57) * lu(k,142) + b(k,48) = b(k,48) - lu(k,141) * b(k,57) + b(k,56) = b(k,56) * lu(k,135) + b(k,55) = b(k,55) * lu(k,131) + b(k,39) = b(k,39) - lu(k,130) * b(k,55) + b(k,54) = b(k,54) * lu(k,126) + b(k,53) = b(k,53) * lu(k,122) + b(k,52) = b(k,52) * lu(k,117) + b(k,48) = b(k,48) - lu(k,116) * b(k,52) + b(k,51) = b(k,51) * lu(k,112) + b(k,50) = b(k,50) * lu(k,107) + b(k,49) = b(k,49) * lu(k,104) + b(k,48) = b(k,48) * lu(k,101) + b(k,47) = b(k,47) * lu(k,98) + b(k,46) = b(k,46) * lu(k,96) + b(k,45) = b(k,45) - lu(k,95) * b(k,46) + b(k,45) = b(k,45) * lu(k,93) + b(k,44) = b(k,44) * lu(k,91) + b(k,43) = b(k,43) * lu(k,86) + b(k,42) = b(k,42) * lu(k,81) + b(k,41) = b(k,41) * lu(k,76) + b(k,40) = b(k,40) * lu(k,71) + b(k,39) = b(k,39) * lu(k,68) + b(k,38) = b(k,38) * lu(k,65) + b(k,37) = b(k,37) * lu(k,61) + b(k,36) = b(k,36) * lu(k,57) + b(k,35) = b(k,35) * lu(k,53) + b(k,34) = b(k,34) * lu(k,49) + b(k,33) = b(k,33) * lu(k,45) + b(k,32) = b(k,32) * lu(k,41) + b(k,31) = b(k,31) * lu(k,38) + b(k,30) = b(k,30) * lu(k,35) + b(k,29) = b(k,29) * lu(k,32) + b(k,28) = b(k,28) * lu(k,29) + b(k,27) = b(k,27) * lu(k,28) + b(k,26) = b(k,26) * lu(k,26) + b(k,25) = b(k,25) * lu(k,25) + b(k,24) = b(k,24) * lu(k,24) + b(k,23) = b(k,23) * lu(k,23) + b(k,22) = b(k,22) * lu(k,22) + b(k,21) = b(k,21) * lu(k,21) + b(k,20) = b(k,20) * lu(k,20) + b(k,19) = b(k,19) * lu(k,19) + b(k,18) = b(k,18) * lu(k,18) + b(k,17) = b(k,17) * lu(k,17) + b(k,16) = b(k,16) * lu(k,16) + b(k,15) = b(k,15) * lu(k,15) + b(k,14) = b(k,14) * lu(k,14) + b(k,13) = b(k,13) * lu(k,13) + b(k,12) = b(k,12) * lu(k,12) + b(k,11) = b(k,11) * lu(k,11) + b(k,10) = b(k,10) * lu(k,10) + b(k,9) = b(k,9) * lu(k,9) + b(k,8) = b(k,8) * lu(k,8) + b(k,7) = b(k,7) * lu(k,7) + b(k,6) = b(k,6) * lu(k,6) + b(k,5) = b(k,5) * lu(k,5) + b(k,4) = b(k,4) * lu(k,4) + b(k,3) = b(k,3) * lu(k,3) + b(k,2) = b(k,2) * lu(k,2) + b(k,1) = b(k,1) * lu(k,1) + end do + end subroutine lu_slv08 + subroutine lu_slv( avec_len, lu, b ) + use shr_kind_mod, only : r8 => shr_kind_r8 + use chem_mods, only : clscnt4, nzcnt + implicit none +!----------------------------------------------------------------------- +! ... Dummy args +!----------------------------------------------------------------------- + integer, intent(in) :: avec_len + real(r8), intent(in) :: lu(veclen,max(1,nzcnt)) + real(r8), intent(inout) :: b(veclen,clscnt4) + call lu_slv01( avec_len, lu, b ) + call lu_slv02( avec_len, lu, b ) + call lu_slv03( avec_len, lu, b ) + call lu_slv04( avec_len, lu, b ) + call lu_slv05( avec_len, lu, b ) + call lu_slv06( avec_len, lu, b ) + call lu_slv07( avec_len, lu, b ) + call lu_slv08( avec_len, lu, b ) + end subroutine lu_slv + end module mo_lu_solve diff --git a/src/chemistry/pp_waccm_t4ma_mam5/mo_nln_matrix.F90 b/src/chemistry/pp_waccm_t4ma_mam5/mo_nln_matrix.F90 new file mode 100644 index 0000000000..d699560b13 --- /dev/null +++ b/src/chemistry/pp_waccm_t4ma_mam5/mo_nln_matrix.F90 @@ -0,0 +1,2654 @@ + module mo_nln_matrix + use shr_kind_mod, only : r8 => shr_kind_r8 + use chem_mods, only: veclen + private + public :: nlnmat + contains + subroutine nlnmat01( avec_len, mat, y, rxt ) + use chem_mods, only : gas_pcnst, rxntot, nzcnt + implicit none +!---------------------------------------------- +! ... dummy arguments +!---------------------------------------------- + integer, intent(in) :: avec_len + real(r8), intent(in) :: y(veclen,gas_pcnst) + real(r8), intent(in) :: rxt(veclen,rxntot) + real(r8), intent(inout) :: mat(veclen,nzcnt) +!---------------------------------------------- +! ... local variables +!---------------------------------------------- + integer :: k +!---------------------------------------------- +! ... complete matrix entries implicit species +!---------------------------------------------- + do k = 1,avec_len + mat(k,32) = -(rxt(k,341)*y(k,111)) + mat(k,1330) = -rxt(k,341)*y(k,3) + mat(k,876) = -(rxt(k,215)*y(k,27) + rxt(k,216)*y(k,139) + rxt(k,217)*y(k,108)) + mat(k,1016) = -rxt(k,215)*y(k,4) + mat(k,1075) = -rxt(k,216)*y(k,4) + mat(k,1121) = -rxt(k,217)*y(k,4) + mat(k,930) = 4.000_r8*rxt(k,218)*y(k,6) + (rxt(k,219)+rxt(k,220))*y(k,45) & + + rxt(k,223)*y(k,97) + rxt(k,226)*y(k,106) + rxt(k,227)*y(k,111) & + + rxt(k,373)*y(k,122) + mat(k,73) = rxt(k,205)*y(k,144) + mat(k,79) = rxt(k,231)*y(k,144) + mat(k,248) = 2.000_r8*rxt(k,242)*y(k,42) + 2.000_r8*rxt(k,243)*y(k,111) & + + 2.000_r8*rxt(k,254)*y(k,144) + mat(k,327) = rxt(k,244)*y(k,42) + rxt(k,245)*y(k,111) + rxt(k,255)*y(k,144) + mat(k,223) = 3.000_r8*rxt(k,249)*y(k,42) + 3.000_r8*rxt(k,250)*y(k,111) & + + 3.000_r8*rxt(k,232)*y(k,144) + mat(k,1311) = 2.000_r8*rxt(k,242)*y(k,26) + rxt(k,244)*y(k,28) & + + 3.000_r8*rxt(k,249)*y(k,41) + mat(k,956) = (rxt(k,219)+rxt(k,220))*y(k,6) + mat(k,43) = 2.000_r8*rxt(k,233)*y(k,144) + mat(k,434) = rxt(k,228)*y(k,106) + rxt(k,229)*y(k,111) + rxt(k,234)*y(k,144) + mat(k,1493) = rxt(k,223)*y(k,6) + mat(k,1445) = rxt(k,226)*y(k,6) + rxt(k,228)*y(k,67) + mat(k,1400) = rxt(k,227)*y(k,6) + 2.000_r8*rxt(k,243)*y(k,26) + rxt(k,245) & + *y(k,28) + 3.000_r8*rxt(k,250)*y(k,41) + rxt(k,229)*y(k,67) + mat(k,842) = rxt(k,373)*y(k,6) + mat(k,1273) = rxt(k,205)*y(k,19) + rxt(k,231)*y(k,20) + 2.000_r8*rxt(k,254) & + *y(k,26) + rxt(k,255)*y(k,28) + 3.000_r8*rxt(k,232)*y(k,41) & + + 2.000_r8*rxt(k,233)*y(k,64) + rxt(k,234)*y(k,67) + mat(k,923) = rxt(k,221)*y(k,45) + mat(k,949) = rxt(k,221)*y(k,6) + mat(k,856) = (rxt(k,399)+rxt(k,404))*y(k,75) + mat(k,385) = (rxt(k,399)+rxt(k,404))*y(k,71) + mat(k,932) = -(4._r8*rxt(k,218)*y(k,6) + (rxt(k,219) + rxt(k,220) + rxt(k,221) & + ) * y(k,45) + rxt(k,222)*y(k,139) + rxt(k,223)*y(k,97) + rxt(k,224) & + *y(k,98) + rxt(k,226)*y(k,106) + rxt(k,227)*y(k,111) + rxt(k,373) & + *y(k,122)) + mat(k,958) = -(rxt(k,219) + rxt(k,220) + rxt(k,221)) * y(k,6) + mat(k,1077) = -rxt(k,222)*y(k,6) + mat(k,1495) = -rxt(k,223)*y(k,6) + mat(k,994) = -rxt(k,224)*y(k,6) + mat(k,1447) = -rxt(k,226)*y(k,6) + mat(k,1402) = -rxt(k,227)*y(k,6) + mat(k,844) = -rxt(k,373)*y(k,6) + mat(k,878) = rxt(k,217)*y(k,108) + mat(k,297) = rxt(k,225)*y(k,106) + mat(k,435) = rxt(k,235)*y(k,144) + mat(k,389) = rxt(k,230)*y(k,106) + mat(k,1447) = mat(k,1447) + rxt(k,225)*y(k,7) + rxt(k,230)*y(k,75) + mat(k,1123) = rxt(k,217)*y(k,4) + mat(k,1275) = rxt(k,235)*y(k,67) + mat(k,294) = -(rxt(k,225)*y(k,106)) + mat(k,1424) = -rxt(k,225)*y(k,7) + mat(k,925) = rxt(k,224)*y(k,98) + mat(k,978) = rxt(k,224)*y(k,6) + mat(k,239) = -(rxt(k,273)*y(k,42) + rxt(k,274)*y(k,108) + rxt(k,298)*y(k,111)) + mat(k,1296) = -rxt(k,273)*y(k,9) + mat(k,1096) = -rxt(k,274)*y(k,9) + mat(k,1355) = -rxt(k,298)*y(k,9) + mat(k,424) = -(4._r8*rxt(k,275)*y(k,10) + rxt(k,276)*y(k,37) + rxt(k,277) & + *y(k,139) + rxt(k,278)*y(k,97)) + mat(k,1170) = -rxt(k,276)*y(k,10) + mat(k,1054) = -rxt(k,277)*y(k,10) + mat(k,1472) = -rxt(k,278)*y(k,10) + mat(k,169) = .500_r8*rxt(k,280)*y(k,111) + mat(k,158) = rxt(k,281)*y(k,42) + rxt(k,282)*y(k,111) + mat(k,1301) = rxt(k,281)*y(k,13) + mat(k,1372) = .500_r8*rxt(k,280)*y(k,12) + rxt(k,282)*y(k,13) + mat(k,126) = -(rxt(k,279)*y(k,111)) + mat(k,1339) = -rxt(k,279)*y(k,11) + mat(k,421) = .800_r8*rxt(k,275)*y(k,10) + .200_r8*rxt(k,276)*y(k,37) + mat(k,1163) = .200_r8*rxt(k,276)*y(k,10) + mat(k,168) = -(rxt(k,280)*y(k,111)) + mat(k,1345) = -rxt(k,280)*y(k,12) + mat(k,422) = rxt(k,277)*y(k,139) + mat(k,1038) = rxt(k,277)*y(k,10) + mat(k,157) = -(rxt(k,281)*y(k,42) + rxt(k,282)*y(k,111)) + mat(k,1293) = -rxt(k,281)*y(k,13) + mat(k,1343) = -rxt(k,282)*y(k,13) + mat(k,623) = -(rxt(k,301)*y(k,99) + rxt(k,302)*y(k,108) + rxt(k,319)*y(k,111)) + mat(k,1218) = -rxt(k,301)*y(k,14) + mat(k,1108) = -rxt(k,302)*y(k,14) + mat(k,1385) = -rxt(k,319)*y(k,14) + mat(k,475) = .130_r8*rxt(k,352)*y(k,108) + mat(k,1108) = mat(k,1108) + .130_r8*rxt(k,352)*y(k,79) + mat(k,460) = -(rxt(k,303)*y(k,37) + rxt(k,304)*y(k,139) + rxt(k,305)*y(k,97)) + mat(k,1171) = -rxt(k,303)*y(k,15) + mat(k,1057) = -rxt(k,304)*y(k,15) + mat(k,1473) = -rxt(k,305)*y(k,15) + mat(k,33) = 1.670_r8*rxt(k,341)*y(k,111) + mat(k,205) = rxt(k,306)*y(k,111) + mat(k,50) = rxt(k,307)*y(k,111) + mat(k,1375) = 1.670_r8*rxt(k,341)*y(k,3) + rxt(k,306)*y(k,16) + rxt(k,307) & + *y(k,17) + mat(k,203) = -(rxt(k,306)*y(k,111)) + mat(k,1350) = -rxt(k,306)*y(k,16) + mat(k,458) = rxt(k,304)*y(k,139) + mat(k,1039) = rxt(k,304)*y(k,15) + mat(k,49) = -(rxt(k,307)*y(k,111)) + mat(k,1333) = -rxt(k,307)*y(k,17) + mat(k,38) = -(rxt(k,204)*y(k,144)) + mat(k,1250) = -rxt(k,204)*y(k,18) + mat(k,71) = -(rxt(k,205)*y(k,144)) + mat(k,1255) = -rxt(k,205)*y(k,19) + mat(k,76) = -(rxt(k,231)*y(k,144)) + mat(k,1256) = -rxt(k,231)*y(k,20) + mat(k,53) = -(rxt(k,206)*y(k,144)) + mat(k,1252) = -rxt(k,206)*y(k,21) + mat(k,81) = -(rxt(k,207)*y(k,144)) + mat(k,1257) = -rxt(k,207)*y(k,22) + mat(k,57) = -(rxt(k,208)*y(k,144)) + mat(k,1253) = -rxt(k,208)*y(k,23) + mat(k,86) = -(rxt(k,209)*y(k,144)) + mat(k,1258) = -rxt(k,209)*y(k,24) + mat(k,61) = -(rxt(k,210)*y(k,144)) + mat(k,1254) = -rxt(k,210)*y(k,25) + mat(k,246) = -(rxt(k,242)*y(k,42) + rxt(k,243)*y(k,111) + rxt(k,254)*y(k,144)) + mat(k,1297) = -rxt(k,242)*y(k,26) + mat(k,1356) = -rxt(k,243)*y(k,26) + mat(k,1267) = -rxt(k,254)*y(k,26) + mat(k,1021) = -(rxt(k,179)*y(k,42) + rxt(k,215)*y(k,4) + rxt(k,259)*y(k,99) & + + rxt(k,260)*y(k,106) + rxt(k,261)*y(k,111)) + mat(k,1316) = -rxt(k,179)*y(k,27) + mat(k,880) = -rxt(k,215)*y(k,27) + mat(k,1236) = -rxt(k,259)*y(k,27) + mat(k,1450) = -rxt(k,260)*y(k,27) + mat(k,1405) = -rxt(k,261)*y(k,27) + mat(k,242) = rxt(k,274)*y(k,108) + mat(k,428) = .700_r8*rxt(k,276)*y(k,37) + mat(k,631) = .500_r8*rxt(k,302)*y(k,108) + mat(k,466) = rxt(k,303)*y(k,37) + mat(k,797) = rxt(k,286)*y(k,37) + .600_r8*rxt(k,347)*y(k,81) & + + .250_r8*rxt(k,321)*y(k,84) + rxt(k,330)*y(k,86) & + + .250_r8*rxt(k,357)*y(k,134) + mat(k,321) = .500_r8*rxt(k,290)*y(k,111) + mat(k,1190) = .700_r8*rxt(k,276)*y(k,10) + rxt(k,303)*y(k,15) + rxt(k,286) & + *y(k,32) + (4.000_r8*rxt(k,262)+2.000_r8*rxt(k,263))*y(k,37) & + + rxt(k,186)*y(k,45) + 1.200_r8*rxt(k,348)*y(k,81) & + + .880_r8*rxt(k,322)*y(k,84) + 2.000_r8*rxt(k,331)*y(k,86) & + + rxt(k,265)*y(k,97) + .800_r8*rxt(k,315)*y(k,118) & + + .800_r8*rxt(k,358)*y(k,134) + mat(k,283) = rxt(k,266)*y(k,111) + mat(k,210) = .300_r8*rxt(k,267)*y(k,111) + mat(k,1523) = (rxt(k,270)+rxt(k,271))*y(k,144) + mat(k,961) = rxt(k,186)*y(k,37) + mat(k,381) = .500_r8*rxt(k,292)*y(k,97) + mat(k,610) = .800_r8*rxt(k,295)*y(k,111) + mat(k,482) = .910_r8*rxt(k,352)*y(k,108) + mat(k,416) = .072_r8*rxt(k,345)*y(k,97) + .072_r8*rxt(k,346)*y(k,99) & + + .206_r8*rxt(k,344)*y(k,139) + mat(k,709) = .600_r8*rxt(k,347)*y(k,32) + 1.200_r8*rxt(k,348)*y(k,37) & + + .550_r8*rxt(k,350)*y(k,97) + .600_r8*rxt(k,351)*y(k,99) + mat(k,660) = .120_r8*rxt(k,327)*y(k,108) + mat(k,731) = .250_r8*rxt(k,321)*y(k,32) + .880_r8*rxt(k,322)*y(k,37) & + + .250_r8*rxt(k,325)*y(k,97) + .250_r8*rxt(k,324)*y(k,99) + mat(k,769) = rxt(k,330)*y(k,32) + 2.000_r8*rxt(k,331)*y(k,37) & + + 4.000_r8*rxt(k,333)*y(k,86) + rxt(k,334)*y(k,97) + rxt(k,335) & + *y(k,99) + .450_r8*rxt(k,332)*y(k,139) + mat(k,307) = .500_r8*rxt(k,336)*y(k,111) + mat(k,750) = .600_r8*rxt(k,337)*y(k,108) + mat(k,1498) = rxt(k,265)*y(k,37) + .500_r8*rxt(k,292)*y(k,57) & + + .072_r8*rxt(k,345)*y(k,80) + .550_r8*rxt(k,350)*y(k,81) & + + .250_r8*rxt(k,325)*y(k,84) + rxt(k,334)*y(k,86) + rxt(k,313) & + *y(k,114) + rxt(k,317)*y(k,118) + .250_r8*rxt(k,360)*y(k,134) + mat(k,1236) = mat(k,1236) + .072_r8*rxt(k,346)*y(k,80) + .600_r8*rxt(k,351) & + *y(k,81) + .250_r8*rxt(k,324)*y(k,84) + rxt(k,335)*y(k,86) + mat(k,1126) = rxt(k,274)*y(k,9) + .500_r8*rxt(k,302)*y(k,14) & + + .910_r8*rxt(k,352)*y(k,79) + .120_r8*rxt(k,327)*y(k,83) & + + .600_r8*rxt(k,337)*y(k,88) + mat(k,1405) = mat(k,1405) + .500_r8*rxt(k,290)*y(k,36) + rxt(k,266)*y(k,38) & + + .300_r8*rxt(k,267)*y(k,39) + .800_r8*rxt(k,295)*y(k,60) & + + .500_r8*rxt(k,336)*y(k,87) + rxt(k,297)*y(k,113) + mat(k,278) = rxt(k,297)*y(k,111) + mat(k,406) = rxt(k,313)*y(k,97) + mat(k,600) = .800_r8*rxt(k,315)*y(k,37) + rxt(k,317)*y(k,97) & + + .150_r8*rxt(k,316)*y(k,139) + mat(k,676) = .250_r8*rxt(k,357)*y(k,32) + .800_r8*rxt(k,358)*y(k,37) & + + .250_r8*rxt(k,360)*y(k,97) + mat(k,1080) = .206_r8*rxt(k,344)*y(k,80) + .450_r8*rxt(k,332)*y(k,86) & + + .150_r8*rxt(k,316)*y(k,118) + mat(k,1278) = (rxt(k,270)+rxt(k,271))*y(k,40) + mat(k,325) = -(rxt(k,244)*y(k,42) + rxt(k,245)*y(k,111) + rxt(k,255)*y(k,144)) + mat(k,1299) = -rxt(k,244)*y(k,28) + mat(k,1364) = -rxt(k,245)*y(k,28) + mat(k,1268) = -rxt(k,255)*y(k,28) + mat(k,45) = -(rxt(k,246)*y(k,111)) + mat(k,1332) = -rxt(k,246)*y(k,29) + mat(k,640) = -(rxt(k,283)*y(k,99) + rxt(k,284)*y(k,111)) + mat(k,1219) = -rxt(k,283)*y(k,30) + mat(k,1386) = -rxt(k,284)*y(k,30) + mat(k,425) = 3.200_r8*rxt(k,275)*y(k,10) + .800_r8*rxt(k,276)*y(k,37) & + + rxt(k,278)*y(k,97) + mat(k,127) = rxt(k,279)*y(k,111) + mat(k,170) = .500_r8*rxt(k,280)*y(k,111) + mat(k,624) = .500_r8*rxt(k,302)*y(k,108) + mat(k,462) = .270_r8*rxt(k,305)*y(k,97) + mat(k,1175) = .800_r8*rxt(k,276)*y(k,10) + mat(k,740) = .100_r8*rxt(k,337)*y(k,108) + mat(k,1482) = rxt(k,278)*y(k,10) + .270_r8*rxt(k,305)*y(k,15) + rxt(k,313) & + *y(k,114) + mat(k,1109) = .500_r8*rxt(k,302)*y(k,14) + .100_r8*rxt(k,337)*y(k,88) + mat(k,1386) = mat(k,1386) + rxt(k,279)*y(k,11) + .500_r8*rxt(k,280)*y(k,12) + mat(k,403) = rxt(k,313)*y(k,97) + end do + end subroutine nlnmat01 + subroutine nlnmat02( avec_len, mat, y, rxt ) + use chem_mods, only : gas_pcnst, rxntot, nzcnt + implicit none +!---------------------------------------------- +! ... dummy arguments +!---------------------------------------------- + integer, intent(in) :: avec_len + real(r8), intent(in) :: y(veclen,gas_pcnst) + real(r8), intent(in) :: rxt(veclen,rxntot) + real(r8), intent(inout) :: mat(veclen,nzcnt) +!---------------------------------------------- +! ... local variables +!---------------------------------------------- + integer :: k +!---------------------------------------------- +! ... complete matrix entries implicit species +!---------------------------------------------- + do k = 1,avec_len + mat(k,189) = -(rxt(k,247)*y(k,42) + rxt(k,248)*y(k,111)) + mat(k,1294) = -rxt(k,247)*y(k,31) + mat(k,1348) = -rxt(k,248)*y(k,31) + mat(k,793) = -(4._r8*rxt(k,285)*y(k,32) + rxt(k,286)*y(k,37) + rxt(k,287) & + *y(k,139) + rxt(k,288)*y(k,97) + rxt(k,299)*y(k,98) + rxt(k,321) & + *y(k,84) + rxt(k,347)*y(k,81) + rxt(k,357)*y(k,134)) + mat(k,1184) = -rxt(k,286)*y(k,32) + mat(k,1071) = -rxt(k,287)*y(k,32) + mat(k,1491) = -rxt(k,288)*y(k,32) + mat(k,988) = -rxt(k,299)*y(k,32) + mat(k,728) = -rxt(k,321)*y(k,32) + mat(k,706) = -rxt(k,347)*y(k,32) + mat(k,673) = -rxt(k,357)*y(k,32) + mat(k,642) = rxt(k,283)*y(k,99) + rxt(k,284)*y(k,111) + mat(k,793) = mat(k,793) + .530_r8*rxt(k,321)*y(k,84) + mat(k,684) = rxt(k,308)*y(k,99) + rxt(k,309)*y(k,111) + mat(k,319) = .500_r8*rxt(k,290)*y(k,111) + mat(k,1184) = mat(k,1184) + .260_r8*rxt(k,322)*y(k,84) + rxt(k,331)*y(k,86) & + + .300_r8*rxt(k,315)*y(k,118) + mat(k,480) = .080_r8*rxt(k,352)*y(k,108) + mat(k,658) = .100_r8*rxt(k,327)*y(k,108) + mat(k,728) = mat(k,728) + .530_r8*rxt(k,321)*y(k,32) + .260_r8*rxt(k,322) & + *y(k,37) + .530_r8*rxt(k,325)*y(k,97) + .530_r8*rxt(k,324) & + *y(k,99) + mat(k,766) = rxt(k,331)*y(k,37) + 4.000_r8*rxt(k,333)*y(k,86) + rxt(k,334) & + *y(k,97) + rxt(k,335)*y(k,99) + .450_r8*rxt(k,332)*y(k,139) + mat(k,746) = .280_r8*rxt(k,337)*y(k,108) + mat(k,1491) = mat(k,1491) + .530_r8*rxt(k,325)*y(k,84) + rxt(k,334)*y(k,86) & + + rxt(k,317)*y(k,118) + mat(k,1228) = rxt(k,283)*y(k,30) + rxt(k,308)*y(k,34) + .530_r8*rxt(k,324) & + *y(k,84) + rxt(k,335)*y(k,86) + mat(k,1118) = .080_r8*rxt(k,352)*y(k,79) + .100_r8*rxt(k,327)*y(k,83) & + + .280_r8*rxt(k,337)*y(k,88) + mat(k,1395) = rxt(k,284)*y(k,30) + rxt(k,309)*y(k,34) + .500_r8*rxt(k,290) & + *y(k,36) + mat(k,598) = .300_r8*rxt(k,315)*y(k,37) + rxt(k,317)*y(k,97) & + + .150_r8*rxt(k,316)*y(k,139) + mat(k,1071) = mat(k,1071) + .450_r8*rxt(k,332)*y(k,86) + .150_r8*rxt(k,316) & + *y(k,118) + mat(k,394) = -(rxt(k,320)*y(k,111)) + mat(k,1370) = -rxt(k,320)*y(k,33) + mat(k,459) = .820_r8*rxt(k,303)*y(k,37) + .820_r8*rxt(k,305)*y(k,97) + mat(k,1169) = .820_r8*rxt(k,303)*y(k,15) + mat(k,1469) = .820_r8*rxt(k,305)*y(k,15) + mat(k,1370) = mat(k,1370) + .100_r8*rxt(k,365)*y(k,133) + mat(k,344) = .100_r8*rxt(k,365)*y(k,111) + mat(k,683) = -(rxt(k,308)*y(k,99) + rxt(k,309)*y(k,111)) + mat(k,1223) = -rxt(k,308)*y(k,34) + mat(k,1390) = -rxt(k,309)*y(k,34) + mat(k,788) = .250_r8*rxt(k,321)*y(k,84) + .250_r8*rxt(k,357)*y(k,134) + mat(k,1179) = .240_r8*rxt(k,322)*y(k,84) + .500_r8*rxt(k,315)*y(k,118) & + + .100_r8*rxt(k,358)*y(k,134) + mat(k,614) = rxt(k,310)*y(k,111) + mat(k,701) = .020_r8*rxt(k,350)*y(k,97) + mat(k,655) = .880_r8*rxt(k,327)*y(k,108) + mat(k,725) = .250_r8*rxt(k,321)*y(k,32) + .240_r8*rxt(k,322)*y(k,37) & + + .250_r8*rxt(k,325)*y(k,97) + .250_r8*rxt(k,324)*y(k,99) + mat(k,742) = .500_r8*rxt(k,337)*y(k,108) + mat(k,1486) = .020_r8*rxt(k,350)*y(k,81) + .250_r8*rxt(k,325)*y(k,84) & + + .250_r8*rxt(k,360)*y(k,134) + mat(k,1223) = mat(k,1223) + .250_r8*rxt(k,324)*y(k,84) + .250_r8*rxt(k,361) & + *y(k,134) + mat(k,198) = rxt(k,311)*y(k,111) + mat(k,1113) = .880_r8*rxt(k,327)*y(k,83) + .500_r8*rxt(k,337)*y(k,88) + mat(k,1390) = mat(k,1390) + rxt(k,310)*y(k,77) + rxt(k,311)*y(k,100) + mat(k,597) = .500_r8*rxt(k,315)*y(k,37) + mat(k,672) = .250_r8*rxt(k,357)*y(k,32) + .100_r8*rxt(k,358)*y(k,37) & + + .250_r8*rxt(k,360)*y(k,97) + .250_r8*rxt(k,361)*y(k,99) + mat(k,353) = -(rxt(k,289)*y(k,111)) + mat(k,1366) = -rxt(k,289)*y(k,35) + mat(k,620) = .120_r8*rxt(k,302)*y(k,108) + mat(k,781) = .100_r8*rxt(k,286)*y(k,37) + .150_r8*rxt(k,287)*y(k,139) + mat(k,1167) = .100_r8*rxt(k,286)*y(k,32) + mat(k,762) = .150_r8*rxt(k,332)*y(k,139) + mat(k,1098) = .120_r8*rxt(k,302)*y(k,14) + mat(k,1048) = .150_r8*rxt(k,287)*y(k,32) + .150_r8*rxt(k,332)*y(k,86) + mat(k,318) = -(rxt(k,290)*y(k,111)) + mat(k,1363) = -rxt(k,290)*y(k,36) + mat(k,780) = .400_r8*rxt(k,287)*y(k,139) + mat(k,761) = .400_r8*rxt(k,332)*y(k,139) + mat(k,1047) = .400_r8*rxt(k,287)*y(k,32) + .400_r8*rxt(k,332)*y(k,86) + mat(k,1194) = -(rxt(k,186)*y(k,45) + (4._r8*rxt(k,262) + 4._r8*rxt(k,263) & + ) * y(k,37) + rxt(k,264)*y(k,139) + rxt(k,265)*y(k,97) + rxt(k,276) & + *y(k,10) + rxt(k,286)*y(k,32) + rxt(k,303)*y(k,15) + rxt(k,315) & + *y(k,118) + rxt(k,322)*y(k,84) + rxt(k,331)*y(k,86) + rxt(k,348) & + *y(k,81) + rxt(k,358)*y(k,134)) + mat(k,965) = -rxt(k,186)*y(k,37) + mat(k,1084) = -rxt(k,264)*y(k,37) + mat(k,1502) = -rxt(k,265)*y(k,37) + mat(k,430) = -rxt(k,276)*y(k,37) + mat(k,801) = -rxt(k,286)*y(k,37) + mat(k,468) = -rxt(k,303)*y(k,37) + mat(k,602) = -rxt(k,315)*y(k,37) + mat(k,734) = -rxt(k,322)*y(k,37) + mat(k,773) = -rxt(k,331)*y(k,37) + mat(k,713) = -rxt(k,348)*y(k,37) + mat(k,678) = -rxt(k,358)*y(k,37) + mat(k,634) = .280_r8*rxt(k,302)*y(k,108) + mat(k,801) = mat(k,801) + 4.000_r8*rxt(k,285)*y(k,32) + .900_r8*rxt(k,286) & + *y(k,37) + rxt(k,347)*y(k,81) + rxt(k,321)*y(k,84) + rxt(k,330) & + *y(k,86) + rxt(k,288)*y(k,97) + rxt(k,357)*y(k,134) & + + .450_r8*rxt(k,287)*y(k,139) + mat(k,355) = rxt(k,289)*y(k,111) + mat(k,1194) = mat(k,1194) + .900_r8*rxt(k,286)*y(k,32) + mat(k,211) = .700_r8*rxt(k,267)*y(k,111) + mat(k,1527) = rxt(k,180)*y(k,42) + rxt(k,236)*y(k,59) + rxt(k,268)*y(k,111) & + + rxt(k,269)*y(k,144) + mat(k,1320) = rxt(k,180)*y(k,40) + mat(k,493) = rxt(k,236)*y(k,40) + mat(k,485) = .050_r8*rxt(k,352)*y(k,108) + mat(k,713) = mat(k,713) + rxt(k,347)*y(k,32) + mat(k,734) = mat(k,734) + rxt(k,321)*y(k,32) + mat(k,773) = mat(k,773) + rxt(k,330)*y(k,32) + mat(k,1502) = mat(k,1502) + rxt(k,288)*y(k,32) + mat(k,1130) = .280_r8*rxt(k,302)*y(k,14) + .050_r8*rxt(k,352)*y(k,79) + mat(k,1409) = rxt(k,289)*y(k,35) + .700_r8*rxt(k,267)*y(k,39) + rxt(k,268) & + *y(k,40) + mat(k,678) = mat(k,678) + rxt(k,357)*y(k,32) + mat(k,1084) = mat(k,1084) + .450_r8*rxt(k,287)*y(k,32) + mat(k,1282) = rxt(k,269)*y(k,40) + mat(k,282) = -(rxt(k,266)*y(k,111)) + mat(k,1359) = -rxt(k,266)*y(k,38) + mat(k,423) = .300_r8*rxt(k,276)*y(k,37) + mat(k,1166) = .300_r8*rxt(k,276)*y(k,10) + 2.000_r8*rxt(k,263)*y(k,37) & + + .250_r8*rxt(k,348)*y(k,81) + .250_r8*rxt(k,322)*y(k,84) & + + .500_r8*rxt(k,315)*y(k,118) + .300_r8*rxt(k,358)*y(k,134) + mat(k,693) = .250_r8*rxt(k,348)*y(k,37) + mat(k,719) = .250_r8*rxt(k,322)*y(k,37) + mat(k,594) = .500_r8*rxt(k,315)*y(k,37) + mat(k,666) = .300_r8*rxt(k,358)*y(k,37) + mat(k,209) = -(rxt(k,267)*y(k,111)) + mat(k,1351) = -rxt(k,267)*y(k,39) + mat(k,1165) = rxt(k,264)*y(k,139) + mat(k,1040) = rxt(k,264)*y(k,37) + mat(k,1534) = -(rxt(k,180)*y(k,42) + rxt(k,236)*y(k,59) + rxt(k,268)*y(k,111) & + + (rxt(k,269) + rxt(k,270) + rxt(k,271)) * y(k,144)) + mat(k,1327) = -rxt(k,180)*y(k,40) + mat(k,496) = -rxt(k,236)*y(k,40) + mat(k,1416) = -rxt(k,268)*y(k,40) + mat(k,1289) = -(rxt(k,269) + rxt(k,270) + rxt(k,271)) * y(k,40) + mat(k,638) = .100_r8*rxt(k,302)*y(k,108) + mat(k,1137) = .100_r8*rxt(k,302)*y(k,14) + mat(k,221) = -(rxt(k,232)*y(k,144) + rxt(k,249)*y(k,42) + rxt(k,250)*y(k,111)) + mat(k,1266) = -rxt(k,232)*y(k,41) + mat(k,1295) = -rxt(k,249)*y(k,41) + mat(k,1353) = -rxt(k,250)*y(k,41) + mat(k,1323) = -(rxt(k,179)*y(k,27) + rxt(k,180)*y(k,40) + rxt(k,181)*y(k,63) & + + rxt(k,182)*y(k,65) + (rxt(k,183) + rxt(k,184)) * y(k,139) & + + rxt(k,185)*y(k,108) + rxt(k,192)*y(k,46) + rxt(k,201)*y(k,76) & + + rxt(k,242)*y(k,26) + rxt(k,244)*y(k,28) + rxt(k,247)*y(k,31) & + + rxt(k,249)*y(k,41) + rxt(k,281)*y(k,13)) + mat(k,1028) = -rxt(k,179)*y(k,42) + mat(k,1530) = -rxt(k,180)*y(k,42) + mat(k,832) = -rxt(k,181)*y(k,42) + mat(k,314) = -rxt(k,182)*y(k,42) + mat(k,1087) = -(rxt(k,183) + rxt(k,184)) * y(k,42) + mat(k,1133) = -rxt(k,185)*y(k,42) + mat(k,579) = -rxt(k,192)*y(k,42) + mat(k,454) = -rxt(k,201)*y(k,42) + mat(k,250) = -rxt(k,242)*y(k,42) + mat(k,331) = -rxt(k,244)*y(k,42) + mat(k,194) = -rxt(k,247)*y(k,42) + mat(k,225) = -rxt(k,249)*y(k,42) + mat(k,160) = -rxt(k,281)*y(k,42) + mat(k,941) = rxt(k,220)*y(k,45) + mat(k,40) = 4.000_r8*rxt(k,204)*y(k,144) + mat(k,75) = rxt(k,205)*y(k,144) + mat(k,56) = 2.000_r8*rxt(k,206)*y(k,144) + mat(k,85) = 2.000_r8*rxt(k,207)*y(k,144) + mat(k,60) = 2.000_r8*rxt(k,208)*y(k,144) + mat(k,90) = rxt(k,209)*y(k,144) + mat(k,64) = 2.000_r8*rxt(k,210)*y(k,144) + mat(k,46) = 3.000_r8*rxt(k,246)*y(k,111) + mat(k,194) = mat(k,194) + rxt(k,248)*y(k,111) + mat(k,1197) = rxt(k,186)*y(k,45) + mat(k,968) = rxt(k,220)*y(k,6) + rxt(k,186)*y(k,37) + (4.000_r8*rxt(k,187) & + +2.000_r8*rxt(k,189))*y(k,45) + rxt(k,191)*y(k,97) + rxt(k,196) & + *y(k,106) + rxt(k,197)*y(k,111) + rxt(k,374)*y(k,122) + mat(k,115) = rxt(k,241)*y(k,144) + mat(k,110) = rxt(k,251)*y(k,111) + rxt(k,256)*y(k,144) + mat(k,120) = rxt(k,252)*y(k,111) + rxt(k,257)*y(k,144) + mat(k,145) = rxt(k,253)*y(k,111) + rxt(k,258)*y(k,144) + mat(k,868) = rxt(k,199)*y(k,106) + rxt(k,200)*y(k,111) + rxt(k,211)*y(k,144) + mat(k,1505) = rxt(k,191)*y(k,45) + mat(k,1457) = rxt(k,196)*y(k,45) + rxt(k,199)*y(k,71) + mat(k,1412) = 3.000_r8*rxt(k,246)*y(k,29) + rxt(k,248)*y(k,31) + rxt(k,197) & + *y(k,45) + rxt(k,251)*y(k,68) + rxt(k,252)*y(k,69) + rxt(k,253) & + *y(k,70) + rxt(k,200)*y(k,71) + mat(k,849) = rxt(k,374)*y(k,45) + mat(k,1285) = 4.000_r8*rxt(k,204)*y(k,18) + rxt(k,205)*y(k,19) & + + 2.000_r8*rxt(k,206)*y(k,21) + 2.000_r8*rxt(k,207)*y(k,22) & + + 2.000_r8*rxt(k,208)*y(k,23) + rxt(k,209)*y(k,24) & + + 2.000_r8*rxt(k,210)*y(k,25) + rxt(k,241)*y(k,51) + rxt(k,256) & + *y(k,68) + rxt(k,257)*y(k,69) + rxt(k,258)*y(k,70) + rxt(k,211) & + *y(k,71) + mat(k,1292) = rxt(k,192)*y(k,46) + mat(k,948) = 2.000_r8*rxt(k,188)*y(k,45) + mat(k,571) = rxt(k,192)*y(k,42) + (rxt(k,397)+rxt(k,402)+rxt(k,407))*y(k,71) + mat(k,855) = (rxt(k,397)+rxt(k,402)+rxt(k,407))*y(k,46) + (rxt(k,392) & + +rxt(k,398)+rxt(k,403))*y(k,76) + mat(k,450) = (rxt(k,392)+rxt(k,398)+rxt(k,403))*y(k,71) + end do + end subroutine nlnmat02 + subroutine nlnmat03( avec_len, mat, y, rxt ) + use chem_mods, only : gas_pcnst, rxntot, nzcnt + implicit none +!---------------------------------------------- +! ... dummy arguments +!---------------------------------------------- + integer, intent(in) :: avec_len + real(r8), intent(in) :: y(veclen,gas_pcnst) + real(r8), intent(in) :: rxt(veclen,rxntot) + real(r8), intent(inout) :: mat(veclen,nzcnt) +!---------------------------------------------- +! ... local variables +!---------------------------------------------- + integer :: k +!---------------------------------------------- +! ... complete matrix entries implicit species +!---------------------------------------------- + do k = 1,avec_len + mat(k,947) = 2.000_r8*rxt(k,213)*y(k,45) + mat(k,959) = -(rxt(k,186)*y(k,37) + (4._r8*rxt(k,187) + 4._r8*rxt(k,188) & + + 4._r8*rxt(k,189) + 4._r8*rxt(k,213)) * y(k,45) + rxt(k,190) & + *y(k,139) + rxt(k,191)*y(k,97) + rxt(k,193)*y(k,98) + rxt(k,196) & + *y(k,106) + (rxt(k,197) + rxt(k,198)) * y(k,111) + (rxt(k,219) & + + rxt(k,220) + rxt(k,221)) * y(k,6) + rxt(k,374)*y(k,122)) + mat(k,1188) = -rxt(k,186)*y(k,45) + mat(k,1078) = -rxt(k,190)*y(k,45) + mat(k,1496) = -rxt(k,191)*y(k,45) + mat(k,995) = -rxt(k,193)*y(k,45) + mat(k,1448) = -rxt(k,196)*y(k,45) + mat(k,1403) = -(rxt(k,197) + rxt(k,198)) * y(k,45) + mat(k,933) = -(rxt(k,219) + rxt(k,220) + rxt(k,221)) * y(k,45) + mat(k,845) = -rxt(k,374)*y(k,45) + mat(k,1314) = rxt(k,201)*y(k,76) + rxt(k,185)*y(k,108) + rxt(k,184)*y(k,139) + mat(k,575) = rxt(k,194)*y(k,106) + mat(k,863) = rxt(k,212)*y(k,144) + mat(k,453) = rxt(k,201)*y(k,42) + rxt(k,202)*y(k,106) + rxt(k,203)*y(k,111) + mat(k,1448) = mat(k,1448) + rxt(k,194)*y(k,46) + rxt(k,202)*y(k,76) + mat(k,1124) = rxt(k,185)*y(k,42) + mat(k,176) = rxt(k,379)*y(k,122) + mat(k,1403) = mat(k,1403) + rxt(k,203)*y(k,76) + mat(k,845) = mat(k,845) + rxt(k,379)*y(k,109) + mat(k,1078) = mat(k,1078) + rxt(k,184)*y(k,42) + mat(k,1276) = rxt(k,212)*y(k,71) + mat(k,573) = -(rxt(k,192)*y(k,42) + rxt(k,194)*y(k,106) + rxt(k,195)*y(k,111) & + + (rxt(k,397) + rxt(k,402) + rxt(k,407)) * y(k,71)) + mat(k,1303) = -rxt(k,192)*y(k,46) + mat(k,1439) = -rxt(k,194)*y(k,46) + mat(k,1380) = -rxt(k,195)*y(k,46) + mat(k,859) = -(rxt(k,397) + rxt(k,402) + rxt(k,407)) * y(k,46) + mat(k,953) = rxt(k,193)*y(k,98) + mat(k,983) = rxt(k,193)*y(k,45) + mat(k,649) = -(rxt(k,272)*y(k,111)) + mat(k,1387) = -rxt(k,272)*y(k,48) + mat(k,874) = rxt(k,215)*y(k,27) + mat(k,241) = .630_r8*rxt(k,274)*y(k,108) + mat(k,625) = .560_r8*rxt(k,302)*y(k,108) + mat(k,1012) = rxt(k,215)*y(k,4) + rxt(k,179)*y(k,42) + rxt(k,259)*y(k,99) & + + rxt(k,260)*y(k,106) + rxt(k,261)*y(k,111) + mat(k,190) = rxt(k,247)*y(k,42) + mat(k,785) = .220_r8*rxt(k,321)*y(k,84) + .250_r8*rxt(k,357)*y(k,134) + mat(k,682) = rxt(k,308)*y(k,99) + rxt(k,309)*y(k,111) + mat(k,1176) = .110_r8*rxt(k,322)*y(k,84) + .200_r8*rxt(k,358)*y(k,134) + mat(k,1306) = rxt(k,179)*y(k,27) + rxt(k,247)*y(k,31) + mat(k,814) = rxt(k,423)*y(k,148) + mat(k,366) = rxt(k,296)*y(k,111) + mat(k,476) = .620_r8*rxt(k,352)*y(k,108) + mat(k,653) = .650_r8*rxt(k,327)*y(k,108) + mat(k,723) = .220_r8*rxt(k,321)*y(k,32) + .110_r8*rxt(k,322)*y(k,37) & + + .220_r8*rxt(k,325)*y(k,97) + .220_r8*rxt(k,324)*y(k,99) + mat(k,741) = .560_r8*rxt(k,337)*y(k,108) + mat(k,1483) = .220_r8*rxt(k,325)*y(k,84) + .250_r8*rxt(k,360)*y(k,134) + mat(k,1220) = rxt(k,259)*y(k,27) + rxt(k,308)*y(k,34) + .220_r8*rxt(k,324) & + *y(k,84) + .500_r8*rxt(k,361)*y(k,134) + mat(k,1440) = rxt(k,260)*y(k,27) + rxt(k,368)*y(k,110) + mat(k,1110) = .630_r8*rxt(k,274)*y(k,9) + .560_r8*rxt(k,302)*y(k,14) & + + .620_r8*rxt(k,352)*y(k,79) + .650_r8*rxt(k,327)*y(k,83) & + + .560_r8*rxt(k,337)*y(k,88) + mat(k,184) = rxt(k,368)*y(k,106) + rxt(k,369)*y(k,111) + mat(k,1387) = mat(k,1387) + rxt(k,261)*y(k,27) + rxt(k,309)*y(k,34) & + + rxt(k,296)*y(k,61) + rxt(k,369)*y(k,110) + mat(k,670) = .250_r8*rxt(k,357)*y(k,32) + .200_r8*rxt(k,358)*y(k,37) & + + .250_r8*rxt(k,360)*y(k,97) + .500_r8*rxt(k,361)*y(k,99) + mat(k,506) = rxt(k,423)*y(k,49) + mat(k,815) = -(rxt(k,423)*y(k,148)) + mat(k,507) = -rxt(k,423)*y(k,49) + mat(k,628) = .200_r8*rxt(k,302)*y(k,108) + mat(k,794) = 4.000_r8*rxt(k,285)*y(k,32) + .900_r8*rxt(k,286)*y(k,37) & + + 2.000_r8*rxt(k,330)*y(k,86) + rxt(k,288)*y(k,97) + rxt(k,357) & + *y(k,134) + mat(k,354) = rxt(k,289)*y(k,111) + mat(k,320) = .500_r8*rxt(k,290)*y(k,111) + mat(k,1185) = .900_r8*rxt(k,286)*y(k,32) + rxt(k,331)*y(k,86) + mat(k,650) = rxt(k,272)*y(k,111) + mat(k,609) = .800_r8*rxt(k,295)*y(k,111) + mat(k,367) = rxt(k,296)*y(k,111) + mat(k,767) = 2.000_r8*rxt(k,330)*y(k,32) + rxt(k,331)*y(k,37) & + + 4.000_r8*rxt(k,333)*y(k,86) + .450_r8*rxt(k,332)*y(k,139) + mat(k,305) = .500_r8*rxt(k,336)*y(k,111) + mat(k,747) = .100_r8*rxt(k,337)*y(k,108) + mat(k,1492) = rxt(k,288)*y(k,32) + mat(k,1119) = .200_r8*rxt(k,302)*y(k,14) + .100_r8*rxt(k,337)*y(k,88) + mat(k,1396) = rxt(k,289)*y(k,35) + .500_r8*rxt(k,290)*y(k,36) + rxt(k,272) & + *y(k,48) + .800_r8*rxt(k,295)*y(k,60) + rxt(k,296)*y(k,61) & + + .500_r8*rxt(k,336)*y(k,87) + mat(k,674) = rxt(k,357)*y(k,32) + mat(k,1072) = .450_r8*rxt(k,332)*y(k,86) + mat(k,101) = -(rxt(k,240)*y(k,144)) + mat(k,1260) = -rxt(k,240)*y(k,50) + mat(k,72) = rxt(k,205)*y(k,144) + mat(k,77) = rxt(k,231)*y(k,144) + mat(k,82) = rxt(k,207)*y(k,144) + mat(k,58) = 2.000_r8*rxt(k,208)*y(k,144) + mat(k,87) = 2.000_r8*rxt(k,209)*y(k,144) + mat(k,62) = rxt(k,210)*y(k,144) + mat(k,42) = 2.000_r8*rxt(k,233)*y(k,144) + mat(k,116) = rxt(k,252)*y(k,111) + rxt(k,257)*y(k,144) + mat(k,141) = rxt(k,253)*y(k,111) + rxt(k,258)*y(k,144) + mat(k,1335) = rxt(k,252)*y(k,69) + rxt(k,253)*y(k,70) + mat(k,1260) = mat(k,1260) + rxt(k,205)*y(k,19) + rxt(k,231)*y(k,20) & + + rxt(k,207)*y(k,22) + 2.000_r8*rxt(k,208)*y(k,23) & + + 2.000_r8*rxt(k,209)*y(k,24) + rxt(k,210)*y(k,25) & + + 2.000_r8*rxt(k,233)*y(k,64) + rxt(k,257)*y(k,69) + rxt(k,258) & + *y(k,70) + mat(k,112) = -(rxt(k,241)*y(k,144)) + mat(k,1262) = -rxt(k,241)*y(k,51) + mat(k,54) = rxt(k,206)*y(k,144) + mat(k,83) = rxt(k,207)*y(k,144) + mat(k,108) = rxt(k,251)*y(k,111) + rxt(k,256)*y(k,144) + mat(k,1337) = rxt(k,251)*y(k,68) + mat(k,1262) = mat(k,1262) + rxt(k,206)*y(k,21) + rxt(k,207)*y(k,22) & + + rxt(k,256)*y(k,68) + mat(k,135) = -(rxt(k,366)*y(k,99) + (rxt(k,367) + rxt(k,381)) * y(k,111)) + mat(k,1204) = -rxt(k,366)*y(k,52) + mat(k,1341) = -(rxt(k,367) + rxt(k,381)) * y(k,52) + mat(k,227) = -(rxt(k,294)*y(k,107)) + mat(k,891) = -rxt(k,294)*y(k,56) + mat(k,376) = .750_r8*rxt(k,292)*y(k,97) + mat(k,1465) = .750_r8*rxt(k,292)*y(k,57) + mat(k,377) = -(rxt(k,291)*y(k,139) + rxt(k,292)*y(k,97)) + mat(k,1049) = -rxt(k,291)*y(k,57) + mat(k,1468) = -rxt(k,292)*y(k,57) + mat(k,240) = rxt(k,298)*y(k,111) + mat(k,1369) = rxt(k,298)*y(k,9) + mat(k,375) = rxt(k,291)*y(k,139) + mat(k,1035) = rxt(k,291)*y(k,57) + mat(k,490) = -(rxt(k,236)*y(k,40) + rxt(k,237)*y(k,63) + rxt(k,238)*y(k,151) & + + rxt(k,239)*y(k,73)) + mat(k,1513) = -rxt(k,236)*y(k,59) + mat(k,825) = -rxt(k,237)*y(k,59) + mat(k,1561) = -rxt(k,238)*y(k,59) + mat(k,1141) = -rxt(k,239)*y(k,59) + mat(k,78) = rxt(k,231)*y(k,144) + mat(k,88) = rxt(k,209)*y(k,144) + mat(k,102) = 2.000_r8*rxt(k,240)*y(k,144) + mat(k,113) = rxt(k,241)*y(k,144) + mat(k,1270) = rxt(k,231)*y(k,20) + rxt(k,209)*y(k,24) + 2.000_r8*rxt(k,240) & + *y(k,50) + rxt(k,241)*y(k,51) + mat(k,607) = -(rxt(k,295)*y(k,111)) + mat(k,1383) = -rxt(k,295)*y(k,60) + mat(k,783) = .530_r8*rxt(k,321)*y(k,84) + .250_r8*rxt(k,357)*y(k,134) + mat(k,1173) = .260_r8*rxt(k,322)*y(k,84) + .100_r8*rxt(k,358)*y(k,134) + mat(k,228) = rxt(k,294)*y(k,107) + mat(k,696) = .020_r8*rxt(k,350)*y(k,97) + mat(k,721) = .530_r8*rxt(k,321)*y(k,32) + .260_r8*rxt(k,322)*y(k,37) & + + .530_r8*rxt(k,325)*y(k,97) + .530_r8*rxt(k,324)*y(k,99) + mat(k,1480) = .020_r8*rxt(k,350)*y(k,81) + .530_r8*rxt(k,325)*y(k,84) & + + .250_r8*rxt(k,360)*y(k,134) + mat(k,1216) = .530_r8*rxt(k,324)*y(k,84) + .250_r8*rxt(k,361)*y(k,134) + mat(k,904) = rxt(k,294)*y(k,56) + mat(k,668) = .250_r8*rxt(k,357)*y(k,32) + .100_r8*rxt(k,358)*y(k,37) & + + .250_r8*rxt(k,360)*y(k,97) + .250_r8*rxt(k,361)*y(k,99) + mat(k,365) = -(rxt(k,296)*y(k,111)) + mat(k,1368) = -rxt(k,296)*y(k,61) + mat(k,782) = .250_r8*rxt(k,357)*y(k,134) + mat(k,1168) = .100_r8*rxt(k,358)*y(k,134) + mat(k,606) = .200_r8*rxt(k,295)*y(k,111) + mat(k,694) = .020_r8*rxt(k,350)*y(k,97) + mat(k,1466) = .020_r8*rxt(k,350)*y(k,81) + .250_r8*rxt(k,360)*y(k,134) + mat(k,1209) = .250_r8*rxt(k,361)*y(k,134) + mat(k,1368) = mat(k,1368) + .200_r8*rxt(k,295)*y(k,60) + mat(k,667) = .250_r8*rxt(k,357)*y(k,32) + .100_r8*rxt(k,358)*y(k,37) & + + .250_r8*rxt(k,360)*y(k,97) + .250_r8*rxt(k,361)*y(k,99) + mat(k,1556) = -((rxt(k,137) + rxt(k,138) + rxt(k,139)) * y(k,139) + rxt(k,140) & + *y(k,107) + rxt(k,143)*y(k,108)) + mat(k,1092) = -(rxt(k,137) + rxt(k,138) + rxt(k,139)) * y(k,62) + mat(k,921) = -rxt(k,140)*y(k,62) + mat(k,1138) = -rxt(k,143)*y(k,62) + mat(k,1033) = rxt(k,261)*y(k,111) + mat(k,1535) = rxt(k,270)*y(k,144) + mat(k,1328) = rxt(k,181)*y(k,63) + mat(k,497) = rxt(k,237)*y(k,63) + mat(k,836) = rxt(k,181)*y(k,42) + rxt(k,237)*y(k,59) + rxt(k,135)*y(k,106) & + + rxt(k,144)*y(k,111) + rxt(k,117)*y(k,144) + mat(k,439) = rxt(k,235)*y(k,144) + mat(k,871) = rxt(k,212)*y(k,144) + mat(k,570) = rxt(k,167)*y(k,111) + mat(k,1462) = rxt(k,135)*y(k,63) + rxt(k,147)*y(k,111) + mat(k,188) = rxt(k,369)*y(k,111) + mat(k,1417) = rxt(k,261)*y(k,27) + rxt(k,144)*y(k,63) + rxt(k,167)*y(k,89) & + + rxt(k,147)*y(k,106) + rxt(k,369)*y(k,110) + rxt(k,375) & + *y(k,120) + rxt(k,380)*y(k,122) + mat(k,364) = rxt(k,375)*y(k,111) + mat(k,853) = rxt(k,380)*y(k,111) + mat(k,1290) = rxt(k,270)*y(k,40) + rxt(k,117)*y(k,63) + rxt(k,235)*y(k,67) & + + rxt(k,212)*y(k,71) + mat(k,826) = -(rxt(k,117)*y(k,144) + rxt(k,135)*y(k,106) + rxt(k,144) & + *y(k,111) + rxt(k,181)*y(k,42) + rxt(k,237)*y(k,59)) + mat(k,1271) = -rxt(k,117)*y(k,63) + mat(k,1442) = -rxt(k,135)*y(k,63) + mat(k,1397) = -rxt(k,144)*y(k,63) + mat(k,1309) = -rxt(k,181)*y(k,63) + mat(k,491) = -rxt(k,237)*y(k,63) + mat(k,1516) = rxt(k,271)*y(k,144) + mat(k,1537) = rxt(k,137)*y(k,139) + mat(k,1073) = rxt(k,137)*y(k,62) + mat(k,1271) = mat(k,1271) + rxt(k,271)*y(k,40) + mat(k,41) = -(rxt(k,233)*y(k,144)) + mat(k,1251) = -rxt(k,233)*y(k,64) + mat(k,311) = -(rxt(k,136)*y(k,106) + rxt(k,145)*y(k,111) + rxt(k,182)*y(k,42)) + mat(k,1425) = -rxt(k,136)*y(k,65) + mat(k,1362) = -rxt(k,145)*y(k,65) + mat(k,1298) = -rxt(k,182)*y(k,65) + mat(k,1362) = mat(k,1362) + 2.000_r8*rxt(k,150)*y(k,111) + mat(k,1046) = 2.000_r8*rxt(k,151)*y(k,139) + end do + end subroutine nlnmat03 + subroutine nlnmat04( avec_len, mat, y, rxt ) + use chem_mods, only : gas_pcnst, rxntot, nzcnt + implicit none +!---------------------------------------------- +! ... dummy arguments +!---------------------------------------------- + integer, intent(in) :: avec_len + real(r8), intent(in) :: y(veclen,gas_pcnst) + real(r8), intent(in) :: rxt(veclen,rxntot) + real(r8), intent(inout) :: mat(veclen,nzcnt) +!---------------------------------------------- +! ... local variables +!---------------------------------------------- + integer :: k +!---------------------------------------------- +! ... complete matrix entries implicit species +!---------------------------------------------- + do k = 1,avec_len + mat(k,130) = rxt(k,382)*y(k,151) + mat(k,1558) = rxt(k,382)*y(k,124) + mat(k,433) = -(rxt(k,228)*y(k,106) + rxt(k,229)*y(k,111) + (rxt(k,234) & + + rxt(k,235)) * y(k,144)) + mat(k,1430) = -rxt(k,228)*y(k,67) + mat(k,1373) = -rxt(k,229)*y(k,67) + mat(k,1269) = -(rxt(k,234) + rxt(k,235)) * y(k,67) + mat(k,873) = rxt(k,215)*y(k,27) + rxt(k,216)*y(k,139) + mat(k,1011) = rxt(k,215)*y(k,4) + mat(k,1055) = rxt(k,216)*y(k,4) + mat(k,107) = -(rxt(k,251)*y(k,111) + rxt(k,256)*y(k,144)) + mat(k,1336) = -rxt(k,251)*y(k,68) + mat(k,1261) = -rxt(k,256)*y(k,68) + mat(k,117) = -(rxt(k,252)*y(k,111) + rxt(k,257)*y(k,144)) + mat(k,1338) = -rxt(k,252)*y(k,69) + mat(k,1263) = -rxt(k,257)*y(k,69) + mat(k,142) = -(rxt(k,253)*y(k,111) + rxt(k,258)*y(k,144)) + mat(k,1342) = -rxt(k,253)*y(k,70) + mat(k,1265) = -rxt(k,258)*y(k,70) + mat(k,860) = -(rxt(k,199)*y(k,106) + rxt(k,200)*y(k,111) + (rxt(k,211) & + + rxt(k,212)) * y(k,144) + (rxt(k,392) + rxt(k,398) + rxt(k,403) & + ) * y(k,76) + (rxt(k,397) + rxt(k,402) + rxt(k,407)) * y(k,46) & + + (rxt(k,399) + rxt(k,404)) * y(k,75)) + mat(k,1444) = -rxt(k,199)*y(k,71) + mat(k,1399) = -rxt(k,200)*y(k,71) + mat(k,1272) = -(rxt(k,211) + rxt(k,212)) * y(k,71) + mat(k,452) = -(rxt(k,392) + rxt(k,398) + rxt(k,403)) * y(k,71) + mat(k,574) = -(rxt(k,397) + rxt(k,402) + rxt(k,407)) * y(k,71) + mat(k,387) = -(rxt(k,399) + rxt(k,404)) * y(k,71) + mat(k,159) = rxt(k,281)*y(k,42) + mat(k,247) = rxt(k,242)*y(k,42) + mat(k,1015) = rxt(k,179)*y(k,42) + mat(k,326) = rxt(k,244)*y(k,42) + mat(k,191) = 2.000_r8*rxt(k,247)*y(k,42) + mat(k,1517) = rxt(k,180)*y(k,42) + mat(k,222) = rxt(k,249)*y(k,42) + mat(k,1310) = rxt(k,281)*y(k,13) + rxt(k,242)*y(k,26) + rxt(k,179)*y(k,27) & + + rxt(k,244)*y(k,28) + 2.000_r8*rxt(k,247)*y(k,31) + rxt(k,180) & + *y(k,40) + rxt(k,249)*y(k,41) + rxt(k,181)*y(k,63) + rxt(k,182) & + *y(k,65) + rxt(k,201)*y(k,76) + rxt(k,183)*y(k,139) + mat(k,955) = rxt(k,198)*y(k,111) + mat(k,827) = rxt(k,181)*y(k,42) + mat(k,312) = rxt(k,182)*y(k,42) + mat(k,452) = mat(k,452) + rxt(k,201)*y(k,42) + mat(k,1399) = mat(k,1399) + rxt(k,198)*y(k,45) + mat(k,1074) = rxt(k,183)*y(k,42) + mat(k,1512) = rxt(k,236)*y(k,59) + mat(k,489) = rxt(k,236)*y(k,40) + rxt(k,237)*y(k,63) + rxt(k,239)*y(k,73) & + + rxt(k,238)*y(k,151) + mat(k,824) = rxt(k,237)*y(k,59) + mat(k,1140) = rxt(k,239)*y(k,59) + mat(k,1560) = rxt(k,238)*y(k,59) + mat(k,1152) = -(rxt(k,176)*y(k,111) + rxt(k,239)*y(k,59)) + mat(k,1408) = -rxt(k,176)*y(k,73) + mat(k,492) = -rxt(k,239)*y(k,73) + mat(k,1024) = rxt(k,259)*y(k,99) + mat(k,644) = rxt(k,283)*y(k,99) + mat(k,687) = rxt(k,308)*y(k,99) + mat(k,577) = (rxt(k,397)+rxt(k,402)+rxt(k,407))*y(k,71) + mat(k,138) = rxt(k,366)*y(k,99) + mat(k,865) = (rxt(k,397)+rxt(k,402)+rxt(k,407))*y(k,46) + mat(k,1000) = rxt(k,175)*y(k,111) + mat(k,1239) = rxt(k,259)*y(k,27) + rxt(k,283)*y(k,30) + rxt(k,308)*y(k,34) & + + rxt(k,366)*y(k,52) + mat(k,1408) = mat(k,1408) + rxt(k,175)*y(k,98) + mat(k,232) = -(rxt(k,152)*y(k,111)) + mat(k,1354) = -rxt(k,152)*y(k,74) + mat(k,976) = rxt(k,173)*y(k,139) + mat(k,1043) = rxt(k,173)*y(k,98) + mat(k,386) = -(rxt(k,230)*y(k,106) + (rxt(k,399) + rxt(k,404)) * y(k,71)) + mat(k,1429) = -rxt(k,230)*y(k,75) + mat(k,857) = -(rxt(k,399) + rxt(k,404)) * y(k,75) + mat(k,926) = rxt(k,222)*y(k,139) + mat(k,1050) = rxt(k,222)*y(k,6) + mat(k,451) = -(rxt(k,201)*y(k,42) + rxt(k,202)*y(k,106) + rxt(k,203)*y(k,111) & + + (rxt(k,392) + rxt(k,398) + rxt(k,403)) * y(k,71)) + mat(k,1302) = -rxt(k,201)*y(k,76) + mat(k,1432) = -rxt(k,202)*y(k,76) + mat(k,1374) = -rxt(k,203)*y(k,76) + mat(k,858) = -(rxt(k,392) + rxt(k,398) + rxt(k,403)) * y(k,76) + mat(k,951) = rxt(k,190)*y(k,139) + mat(k,572) = rxt(k,195)*y(k,111) + mat(k,1374) = mat(k,1374) + rxt(k,195)*y(k,46) + mat(k,1056) = rxt(k,190)*y(k,45) + mat(k,613) = -(rxt(k,310)*y(k,111)) + mat(k,1384) = -rxt(k,310)*y(k,77) + mat(k,784) = .220_r8*rxt(k,321)*y(k,84) + .250_r8*rxt(k,357)*y(k,134) + mat(k,1174) = .230_r8*rxt(k,322)*y(k,84) + .200_r8*rxt(k,315)*y(k,118) & + + .100_r8*rxt(k,358)*y(k,134) + mat(k,697) = .020_r8*rxt(k,350)*y(k,97) + mat(k,722) = .220_r8*rxt(k,321)*y(k,32) + .230_r8*rxt(k,322)*y(k,37) & + + .220_r8*rxt(k,325)*y(k,97) + .220_r8*rxt(k,324)*y(k,99) + mat(k,303) = .500_r8*rxt(k,336)*y(k,111) + mat(k,1481) = .020_r8*rxt(k,350)*y(k,81) + .220_r8*rxt(k,325)*y(k,84) & + + .250_r8*rxt(k,360)*y(k,134) + mat(k,1217) = .220_r8*rxt(k,324)*y(k,84) + .250_r8*rxt(k,361)*y(k,134) + mat(k,1384) = mat(k,1384) + .500_r8*rxt(k,336)*y(k,87) + .500_r8*rxt(k,314) & + *y(k,117) + mat(k,288) = .500_r8*rxt(k,314)*y(k,111) + mat(k,596) = .200_r8*rxt(k,315)*y(k,37) + mat(k,669) = .250_r8*rxt(k,357)*y(k,32) + .100_r8*rxt(k,358)*y(k,37) & + + .250_r8*rxt(k,360)*y(k,97) + .250_r8*rxt(k,361)*y(k,99) + mat(k,178) = -(rxt(k,342)*y(k,111)) + mat(k,1346) = -rxt(k,342)*y(k,78) + mat(k,778) = .400_r8*rxt(k,347)*y(k,81) + mat(k,1164) = .300_r8*rxt(k,348)*y(k,81) + mat(k,691) = .400_r8*rxt(k,347)*y(k,32) + .300_r8*rxt(k,348)*y(k,37) & + + .330_r8*rxt(k,350)*y(k,97) + .400_r8*rxt(k,351)*y(k,99) + mat(k,1464) = .330_r8*rxt(k,350)*y(k,81) + mat(k,1206) = .400_r8*rxt(k,351)*y(k,81) + rxt(k,355)*y(k,112) + mat(k,1346) = mat(k,1346) + rxt(k,356)*y(k,112) + mat(k,583) = rxt(k,355)*y(k,99) + rxt(k,356)*y(k,111) + mat(k,473) = -(rxt(k,343)*y(k,99) + rxt(k,352)*y(k,108) + rxt(k,353)*y(k,111)) + mat(k,1212) = -rxt(k,343)*y(k,79) + mat(k,1102) = -rxt(k,352)*y(k,79) + mat(k,1376) = -rxt(k,353)*y(k,79) + mat(k,411) = -(rxt(k,344)*y(k,139) + rxt(k,345)*y(k,97) + rxt(k,346)*y(k,99)) + mat(k,1053) = -rxt(k,344)*y(k,80) + mat(k,1471) = -rxt(k,345)*y(k,80) + mat(k,1211) = -rxt(k,346)*y(k,80) + mat(k,472) = rxt(k,343)*y(k,99) + mat(k,1211) = mat(k,1211) + rxt(k,343)*y(k,79) + mat(k,702) = -(rxt(k,347)*y(k,32) + rxt(k,348)*y(k,37) + rxt(k,349)*y(k,139) & + + rxt(k,350)*y(k,97) + rxt(k,351)*y(k,99)) + mat(k,789) = -rxt(k,347)*y(k,81) + mat(k,1180) = -rxt(k,348)*y(k,81) + mat(k,1067) = -rxt(k,349)*y(k,81) + mat(k,1487) = -rxt(k,350)*y(k,81) + mat(k,1224) = -rxt(k,351)*y(k,81) + mat(k,478) = rxt(k,353)*y(k,111) + mat(k,269) = .200_r8*rxt(k,354)*y(k,111) + mat(k,1224) = mat(k,1224) + 1.700_r8*rxt(k,363)*y(k,133) + mat(k,1391) = rxt(k,353)*y(k,79) + .200_r8*rxt(k,354)*y(k,82) & + + 1.640_r8*rxt(k,365)*y(k,133) + mat(k,346) = 1.700_r8*rxt(k,363)*y(k,99) + 1.640_r8*rxt(k,365)*y(k,111) + mat(k,266) = -(rxt(k,354)*y(k,111)) + mat(k,1357) = -rxt(k,354)*y(k,82) + mat(k,692) = rxt(k,349)*y(k,139) + mat(k,1044) = rxt(k,349)*y(k,81) + mat(k,654) = -(rxt(k,327)*y(k,108) + rxt(k,328)*y(k,111)) + mat(k,1111) = -rxt(k,327)*y(k,83) + mat(k,1388) = -rxt(k,328)*y(k,83) + mat(k,786) = .250_r8*rxt(k,347)*y(k,81) + mat(k,1177) = .190_r8*rxt(k,348)*y(k,81) + mat(k,477) = .300_r8*rxt(k,352)*y(k,108) + mat(k,413) = .167_r8*rxt(k,345)*y(k,97) + .167_r8*rxt(k,346)*y(k,99) & + + .167_r8*rxt(k,344)*y(k,139) + mat(k,699) = .250_r8*rxt(k,347)*y(k,32) + .190_r8*rxt(k,348)*y(k,37) & + + .230_r8*rxt(k,350)*y(k,97) + .250_r8*rxt(k,351)*y(k,99) + mat(k,1484) = .167_r8*rxt(k,345)*y(k,80) + .230_r8*rxt(k,350)*y(k,81) + mat(k,1221) = .167_r8*rxt(k,346)*y(k,80) + .250_r8*rxt(k,351)*y(k,81) + mat(k,1111) = mat(k,1111) + .300_r8*rxt(k,352)*y(k,79) + 1.122_r8*rxt(k,364) & + *y(k,133) + mat(k,345) = 1.122_r8*rxt(k,364)*y(k,108) + mat(k,1064) = .167_r8*rxt(k,344)*y(k,80) + mat(k,726) = -(rxt(k,321)*y(k,32) + rxt(k,322)*y(k,37) + rxt(k,323)*y(k,139) & + + rxt(k,324)*y(k,99) + (rxt(k,325) + rxt(k,326)) * y(k,97)) + mat(k,790) = -rxt(k,321)*y(k,84) + mat(k,1181) = -rxt(k,322)*y(k,84) + mat(k,1068) = -rxt(k,323)*y(k,84) + mat(k,1225) = -rxt(k,324)*y(k,84) + mat(k,1488) = -(rxt(k,325) + rxt(k,326)) * y(k,84) + mat(k,656) = .500_r8*rxt(k,328)*y(k,111) + mat(k,164) = .200_r8*rxt(k,329)*y(k,111) + mat(k,743) = rxt(k,338)*y(k,111) + mat(k,1392) = .500_r8*rxt(k,328)*y(k,83) + .200_r8*rxt(k,329)*y(k,85) & + + rxt(k,338)*y(k,88) + mat(k,163) = -(rxt(k,329)*y(k,111)) + mat(k,1344) = -rxt(k,329)*y(k,85) + mat(k,718) = rxt(k,323)*y(k,139) + mat(k,1037) = rxt(k,323)*y(k,84) + mat(k,765) = -(rxt(k,330)*y(k,32) + rxt(k,331)*y(k,37) + rxt(k,332)*y(k,139) & + + 4._r8*rxt(k,333)*y(k,86) + rxt(k,334)*y(k,97) + rxt(k,335) & + *y(k,99) + rxt(k,339)*y(k,98)) + mat(k,792) = -rxt(k,330)*y(k,86) + mat(k,1183) = -rxt(k,331)*y(k,86) + mat(k,1070) = -rxt(k,332)*y(k,86) + mat(k,1490) = -rxt(k,334)*y(k,86) + mat(k,1227) = -rxt(k,335)*y(k,86) + mat(k,987) = -rxt(k,339)*y(k,86) + mat(k,657) = .500_r8*rxt(k,328)*y(k,111) + mat(k,165) = .500_r8*rxt(k,329)*y(k,111) + mat(k,1394) = .500_r8*rxt(k,328)*y(k,83) + .500_r8*rxt(k,329)*y(k,85) + mat(k,302) = -(rxt(k,336)*y(k,111)) + mat(k,1361) = -rxt(k,336)*y(k,87) + mat(k,760) = rxt(k,339)*y(k,98) + mat(k,979) = rxt(k,339)*y(k,86) + mat(k,744) = -(rxt(k,337)*y(k,108) + rxt(k,338)*y(k,111)) + mat(k,1116) = -rxt(k,337)*y(k,88) + mat(k,1393) = -rxt(k,338)*y(k,88) + mat(k,791) = .350_r8*rxt(k,347)*y(k,81) + mat(k,1182) = .260_r8*rxt(k,348)*y(k,81) + mat(k,479) = .200_r8*rxt(k,352)*y(k,108) + mat(k,414) = .039_r8*rxt(k,345)*y(k,97) + .039_r8*rxt(k,346)*y(k,99) & + + .039_r8*rxt(k,344)*y(k,139) + mat(k,704) = .350_r8*rxt(k,347)*y(k,32) + .260_r8*rxt(k,348)*y(k,37) & + + .320_r8*rxt(k,350)*y(k,97) + .350_r8*rxt(k,351)*y(k,99) + mat(k,1489) = .039_r8*rxt(k,345)*y(k,80) + .320_r8*rxt(k,350)*y(k,81) + mat(k,1226) = .039_r8*rxt(k,346)*y(k,80) + .350_r8*rxt(k,351)*y(k,81) + mat(k,1116) = mat(k,1116) + .200_r8*rxt(k,352)*y(k,79) + .442_r8*rxt(k,364) & + *y(k,133) + mat(k,347) = .442_r8*rxt(k,364)*y(k,108) + mat(k,1069) = .039_r8*rxt(k,344)*y(k,80) + end do + end subroutine nlnmat04 + subroutine nlnmat05( avec_len, mat, y, rxt ) + use chem_mods, only : gas_pcnst, rxntot, nzcnt + implicit none +!---------------------------------------------- +! ... dummy arguments +!---------------------------------------------- + integer, intent(in) :: avec_len + real(r8), intent(in) :: y(veclen,gas_pcnst) + real(r8), intent(in) :: rxt(veclen,rxntot) + real(r8), intent(inout) :: mat(veclen,nzcnt) +!---------------------------------------------- +! ... local variables +!---------------------------------------------- + integer :: k +!---------------------------------------------- +! ... complete matrix entries implicit species +!---------------------------------------------- + do k = 1,avec_len + mat(k,561) = -(rxt(k,155)*y(k,97) + (rxt(k,156) + rxt(k,157) + rxt(k,158) & + ) * y(k,98) + rxt(k,159)*y(k,107) + rxt(k,167)*y(k,111) & + + rxt(k,420)*y(k,147)) + mat(k,1477) = -rxt(k,155)*y(k,89) + mat(k,982) = -(rxt(k,156) + rxt(k,157) + rxt(k,158)) * y(k,89) + mat(k,903) = -rxt(k,159)*y(k,89) + mat(k,1379) = -rxt(k,167)*y(k,89) + mat(k,514) = -rxt(k,420)*y(k,89) + mat(k,1438) = rxt(k,153)*y(k,140) + rxt(k,417)*y(k,143) + mat(k,903) = mat(k,903) + rxt(k,418)*y(k,143) + mat(k,528) = 1.100_r8*rxt(k,413)*y(k,141) + .200_r8*rxt(k,411)*y(k,142) + mat(k,540) = rxt(k,153)*y(k,106) + mat(k,340) = 1.100_r8*rxt(k,413)*y(k,138) + mat(k,373) = .200_r8*rxt(k,411)*y(k,138) + mat(k,447) = rxt(k,417)*y(k,106) + rxt(k,418)*y(k,107) + mat(k,122) = -((rxt(k,171) + rxt(k,172)) * y(k,144)) + mat(k,1264) = -(rxt(k,171) + rxt(k,172)) * y(k,90) + mat(k,554) = rxt(k,156)*y(k,98) + mat(k,974) = rxt(k,156)*y(k,89) + mat(k,975) = rxt(k,174)*y(k,99) + mat(k,1205) = rxt(k,174)*y(k,98) + mat(k,35) = -(rxt(k,383)*y(k,111)) + mat(k,1331) = -rxt(k,383)*y(k,95) + mat(k,1508) = -(rxt(k,155)*y(k,89) + rxt(k,164)*y(k,99) + rxt(k,168)*y(k,139) & + + rxt(k,169)*y(k,108) + rxt(k,170)*y(k,106) + rxt(k,191)*y(k,45) & + + rxt(k,223)*y(k,6) + rxt(k,265)*y(k,37) + rxt(k,278)*y(k,10) & + + rxt(k,288)*y(k,32) + rxt(k,292)*y(k,57) + rxt(k,305)*y(k,15) & + + rxt(k,313)*y(k,114) + rxt(k,317)*y(k,118) + (rxt(k,325) & + + rxt(k,326)) * y(k,84) + rxt(k,334)*y(k,86) + rxt(k,345) & + *y(k,80) + rxt(k,350)*y(k,81) + rxt(k,360)*y(k,134) + rxt(k,422) & + *y(k,147)) + mat(k,569) = -rxt(k,155)*y(k,97) + mat(k,1246) = -rxt(k,164)*y(k,97) + mat(k,1090) = -rxt(k,168)*y(k,97) + mat(k,1136) = -rxt(k,169)*y(k,97) + mat(k,1460) = -rxt(k,170)*y(k,97) + mat(k,971) = -rxt(k,191)*y(k,97) + mat(k,944) = -rxt(k,223)*y(k,97) + mat(k,1200) = -rxt(k,265)*y(k,97) + mat(k,432) = -rxt(k,278)*y(k,97) + mat(k,804) = -rxt(k,288)*y(k,97) + mat(k,384) = -rxt(k,292)*y(k,97) + mat(k,470) = -rxt(k,305)*y(k,97) + mat(k,409) = -rxt(k,313)*y(k,97) + mat(k,604) = -rxt(k,317)*y(k,97) + mat(k,737) = -(rxt(k,325) + rxt(k,326)) * y(k,97) + mat(k,776) = -rxt(k,334)*y(k,97) + mat(k,420) = -rxt(k,345)*y(k,97) + mat(k,716) = -rxt(k,350)*y(k,97) + mat(k,681) = -rxt(k,360)*y(k,97) + mat(k,518) = -rxt(k,422)*y(k,97) + mat(k,569) = mat(k,569) + 2.000_r8*rxt(k,157)*y(k,98) + rxt(k,159)*y(k,107) & + + rxt(k,167)*y(k,111) + mat(k,125) = 2.000_r8*rxt(k,171)*y(k,144) + mat(k,1007) = 2.000_r8*rxt(k,157)*y(k,89) + rxt(k,160)*y(k,106) + rxt(k,376) & + *y(k,122) + mat(k,1460) = mat(k,1460) + rxt(k,160)*y(k,98) + mat(k,920) = rxt(k,159)*y(k,89) + rxt(k,154)*y(k,140) + mat(k,1415) = rxt(k,167)*y(k,89) + mat(k,852) = rxt(k,376)*y(k,98) + mat(k,546) = rxt(k,154)*y(k,107) + mat(k,1288) = 2.000_r8*rxt(k,171)*y(k,90) + mat(k,996) = -((rxt(k,156) + rxt(k,157) + rxt(k,158)) * y(k,89) + (rxt(k,160) & + + rxt(k,162)) * y(k,106) + rxt(k,161)*y(k,108) + rxt(k,173) & + *y(k,139) + rxt(k,174)*y(k,99) + rxt(k,175)*y(k,111) + rxt(k,193) & + *y(k,45) + rxt(k,224)*y(k,6) + rxt(k,299)*y(k,32) + rxt(k,339) & + *y(k,86) + rxt(k,376)*y(k,122)) + mat(k,565) = -(rxt(k,156) + rxt(k,157) + rxt(k,158)) * y(k,98) + mat(k,1449) = -(rxt(k,160) + rxt(k,162)) * y(k,98) + mat(k,1125) = -rxt(k,161)*y(k,98) + mat(k,1079) = -rxt(k,173)*y(k,98) + mat(k,1235) = -rxt(k,174)*y(k,98) + mat(k,1404) = -rxt(k,175)*y(k,98) + mat(k,960) = -rxt(k,193)*y(k,98) + mat(k,934) = -rxt(k,224)*y(k,98) + mat(k,796) = -rxt(k,299)*y(k,98) + mat(k,768) = -rxt(k,339)*y(k,98) + mat(k,846) = -rxt(k,376)*y(k,98) + mat(k,934) = mat(k,934) + rxt(k,223)*y(k,97) + mat(k,427) = rxt(k,278)*y(k,97) + mat(k,465) = rxt(k,305)*y(k,97) + mat(k,796) = mat(k,796) + rxt(k,288)*y(k,97) + mat(k,1189) = rxt(k,265)*y(k,97) + mat(k,960) = mat(k,960) + rxt(k,191)*y(k,97) + mat(k,380) = rxt(k,292)*y(k,97) + mat(k,234) = rxt(k,152)*y(k,111) + mat(k,415) = 1.206_r8*rxt(k,345)*y(k,97) + 1.206_r8*rxt(k,346)*y(k,99) & + + .206_r8*rxt(k,344)*y(k,139) + mat(k,708) = .920_r8*rxt(k,350)*y(k,97) + rxt(k,351)*y(k,99) + mat(k,730) = rxt(k,325)*y(k,97) + rxt(k,324)*y(k,99) + mat(k,768) = mat(k,768) + rxt(k,334)*y(k,97) + rxt(k,335)*y(k,99) + mat(k,1497) = rxt(k,223)*y(k,6) + rxt(k,278)*y(k,10) + rxt(k,305)*y(k,15) & + + rxt(k,288)*y(k,32) + rxt(k,265)*y(k,37) + rxt(k,191)*y(k,45) & + + rxt(k,292)*y(k,57) + 1.206_r8*rxt(k,345)*y(k,80) & + + .920_r8*rxt(k,350)*y(k,81) + rxt(k,325)*y(k,84) + rxt(k,334) & + *y(k,86) + 2.000_r8*rxt(k,164)*y(k,99) + rxt(k,170)*y(k,106) & + + rxt(k,169)*y(k,108) + rxt(k,313)*y(k,114) + rxt(k,317) & + *y(k,118) + rxt(k,360)*y(k,134) + rxt(k,168)*y(k,139) + mat(k,1235) = mat(k,1235) + 1.206_r8*rxt(k,346)*y(k,80) + rxt(k,351)*y(k,81) & + + rxt(k,324)*y(k,84) + rxt(k,335)*y(k,86) + 2.000_r8*rxt(k,164) & + *y(k,97) + rxt(k,165)*y(k,106) + rxt(k,166)*y(k,111) & + + rxt(k,355)*y(k,112) + rxt(k,363)*y(k,133) + rxt(k,361) & + *y(k,134) + rxt(k,163)*y(k,139) + mat(k,200) = rxt(k,311)*y(k,111) + mat(k,1449) = mat(k,1449) + rxt(k,170)*y(k,97) + rxt(k,165)*y(k,99) + mat(k,1125) = mat(k,1125) + rxt(k,169)*y(k,97) + mat(k,1404) = mat(k,1404) + rxt(k,152)*y(k,74) + rxt(k,166)*y(k,99) & + + rxt(k,311)*y(k,100) + .400_r8*rxt(k,356)*y(k,112) + mat(k,587) = rxt(k,355)*y(k,99) + .400_r8*rxt(k,356)*y(k,111) + mat(k,405) = rxt(k,313)*y(k,97) + mat(k,599) = rxt(k,317)*y(k,97) + mat(k,348) = rxt(k,363)*y(k,99) + mat(k,675) = rxt(k,360)*y(k,97) + rxt(k,361)*y(k,99) + mat(k,1079) = mat(k,1079) + .206_r8*rxt(k,344)*y(k,80) + rxt(k,168)*y(k,97) & + + rxt(k,163)*y(k,99) + mat(k,1241) = -(rxt(k,163)*y(k,139) + rxt(k,164)*y(k,97) + rxt(k,165) & + *y(k,106) + rxt(k,166)*y(k,111) + rxt(k,174)*y(k,98) + rxt(k,259) & + *y(k,27) + rxt(k,283)*y(k,30) + rxt(k,301)*y(k,14) + rxt(k,308) & + *y(k,34) + rxt(k,324)*y(k,84) + rxt(k,335)*y(k,86) + rxt(k,343) & + *y(k,79) + rxt(k,346)*y(k,80) + rxt(k,351)*y(k,81) + rxt(k,355) & + *y(k,112) + rxt(k,361)*y(k,134) + rxt(k,363)*y(k,133) + rxt(k,366) & + *y(k,52)) + mat(k,1085) = -rxt(k,163)*y(k,99) + mat(k,1503) = -rxt(k,164)*y(k,99) + mat(k,1455) = -rxt(k,165)*y(k,99) + mat(k,1410) = -rxt(k,166)*y(k,99) + mat(k,1002) = -rxt(k,174)*y(k,99) + mat(k,1026) = -rxt(k,259)*y(k,99) + mat(k,646) = -rxt(k,283)*y(k,99) + mat(k,635) = -rxt(k,301)*y(k,99) + mat(k,688) = -rxt(k,308)*y(k,99) + mat(k,735) = -rxt(k,324)*y(k,99) + mat(k,774) = -rxt(k,335)*y(k,99) + mat(k,486) = -rxt(k,343)*y(k,99) + mat(k,418) = -rxt(k,346)*y(k,99) + mat(k,714) = -rxt(k,351)*y(k,99) + mat(k,591) = -rxt(k,355)*y(k,99) + mat(k,679) = -rxt(k,361)*y(k,99) + mat(k,350) = -rxt(k,363)*y(k,99) + mat(k,139) = -rxt(k,366)*y(k,99) + mat(k,300) = rxt(k,225)*y(k,106) + mat(k,1321) = rxt(k,192)*y(k,46) + mat(k,578) = rxt(k,192)*y(k,42) + rxt(k,194)*y(k,106) + rxt(k,195)*y(k,111) + mat(k,494) = rxt(k,239)*y(k,73) + mat(k,1154) = rxt(k,239)*y(k,59) + rxt(k,176)*y(k,111) + mat(k,309) = .500_r8*rxt(k,336)*y(k,111) + mat(k,1002) = mat(k,1002) + rxt(k,162)*y(k,106) + rxt(k,161)*y(k,108) + mat(k,1455) = mat(k,1455) + rxt(k,225)*y(k,7) + rxt(k,194)*y(k,46) & + + rxt(k,162)*y(k,98) + mat(k,1131) = rxt(k,161)*y(k,98) + mat(k,1410) = mat(k,1410) + rxt(k,195)*y(k,46) + rxt(k,176)*y(k,73) & + + .500_r8*rxt(k,336)*y(k,87) + rxt(k,297)*y(k,113) + mat(k,280) = rxt(k,297)*y(k,111) + mat(k,197) = -(rxt(k,311)*y(k,111)) + mat(k,1349) = -rxt(k,311)*y(k,100) + mat(k,619) = rxt(k,301)*y(k,99) + mat(k,1207) = rxt(k,301)*y(k,14) + mat(k,1459) = -(rxt(k,132)*y(k,108) + 4._r8*rxt(k,133)*y(k,106) + rxt(k,134) & + *y(k,107) + rxt(k,135)*y(k,63) + rxt(k,136)*y(k,65) + rxt(k,141) & + *y(k,139) + rxt(k,147)*y(k,111) + (rxt(k,160) + rxt(k,162) & + ) * y(k,98) + rxt(k,165)*y(k,99) + rxt(k,170)*y(k,97) + rxt(k,194) & + *y(k,46) + rxt(k,196)*y(k,45) + rxt(k,199)*y(k,71) + rxt(k,202) & + *y(k,76) + rxt(k,225)*y(k,7) + rxt(k,226)*y(k,6) + rxt(k,228) & + *y(k,67) + rxt(k,230)*y(k,75) + rxt(k,260)*y(k,27) + rxt(k,368) & + *y(k,110) + (rxt(k,415) + rxt(k,416)) * y(k,141) + rxt(k,417) & + *y(k,143)) + mat(k,1135) = -rxt(k,132)*y(k,106) + mat(k,919) = -rxt(k,134)*y(k,106) + mat(k,834) = -rxt(k,135)*y(k,106) + mat(k,316) = -rxt(k,136)*y(k,106) + mat(k,1089) = -rxt(k,141)*y(k,106) + mat(k,1414) = -rxt(k,147)*y(k,106) + mat(k,1006) = -(rxt(k,160) + rxt(k,162)) * y(k,106) + mat(k,1245) = -rxt(k,165)*y(k,106) + mat(k,1507) = -rxt(k,170)*y(k,106) + mat(k,581) = -rxt(k,194)*y(k,106) + mat(k,970) = -rxt(k,196)*y(k,106) + mat(k,870) = -rxt(k,199)*y(k,106) + mat(k,456) = -rxt(k,202)*y(k,106) + mat(k,301) = -rxt(k,225)*y(k,106) + mat(k,943) = -rxt(k,226)*y(k,106) + mat(k,438) = -rxt(k,228)*y(k,106) + mat(k,392) = -rxt(k,230)*y(k,106) + mat(k,1030) = -rxt(k,260)*y(k,106) + mat(k,187) = -rxt(k,368)*y(k,106) + mat(k,342) = -(rxt(k,415) + rxt(k,416)) * y(k,106) + mat(k,449) = -rxt(k,417)*y(k,106) + mat(k,1553) = rxt(k,139)*y(k,139) + mat(k,568) = rxt(k,155)*y(k,97) + rxt(k,156)*y(k,98) + rxt(k,159)*y(k,107) & + + rxt(k,420)*y(k,147) + mat(k,1507) = mat(k,1507) + rxt(k,155)*y(k,89) + mat(k,1006) = mat(k,1006) + rxt(k,156)*y(k,89) + mat(k,919) = mat(k,919) + rxt(k,159)*y(k,89) + rxt(k,370)*y(k,120) & + + rxt(k,377)*y(k,122) + rxt(k,419)*y(k,143) + (rxt(k,120) & + +rxt(k,121))*y(k,144) + rxt(k,426)*y(k,148) + rxt(k,430) & + *y(k,149) + mat(k,1135) = mat(k,1135) + .765_r8*rxt(k,364)*y(k,133) + 2.000_r8*rxt(k,123) & + *y(k,144) + mat(k,1414) = mat(k,1414) + 2.000_r8*rxt(k,149)*y(k,111) + mat(k,363) = rxt(k,370)*y(k,107) + mat(k,851) = rxt(k,377)*y(k,107) + mat(k,352) = .765_r8*rxt(k,364)*y(k,108) + mat(k,533) = rxt(k,411)*y(k,142) + 1.150_r8*rxt(k,412)*y(k,147) + mat(k,1089) = mat(k,1089) + rxt(k,139)*y(k,62) + mat(k,545) = rxt(k,425)*y(k,148) + mat(k,374) = rxt(k,411)*y(k,138) + mat(k,449) = mat(k,449) + rxt(k,419)*y(k,107) + mat(k,1287) = (rxt(k,120)+rxt(k,121))*y(k,107) + 2.000_r8*rxt(k,123)*y(k,108) + mat(k,517) = rxt(k,420)*y(k,89) + 1.150_r8*rxt(k,412)*y(k,138) + mat(k,509) = rxt(k,426)*y(k,107) + rxt(k,425)*y(k,140) + mat(k,265) = rxt(k,430)*y(k,107) + end do + end subroutine nlnmat05 + subroutine nlnmat06( avec_len, mat, y, rxt ) + use chem_mods, only : gas_pcnst, rxntot, nzcnt + implicit none +!---------------------------------------------- +! ... dummy arguments +!---------------------------------------------- + integer, intent(in) :: avec_len + real(r8), intent(in) :: y(veclen,gas_pcnst) + real(r8), intent(in) :: rxt(veclen,rxntot) + real(r8), intent(inout) :: mat(veclen,nzcnt) +!---------------------------------------------- +! ... local variables +!---------------------------------------------- + integer :: k +!---------------------------------------------- +! ... complete matrix entries implicit species +!---------------------------------------------- + do k = 1,avec_len + mat(k,909) = -(rxt(k,120)*y(k,144) + rxt(k,126)*y(k,145) + rxt(k,134) & + *y(k,106) + rxt(k,140)*y(k,62) + rxt(k,154)*y(k,140) + rxt(k,159) & + *y(k,89) + rxt(k,294)*y(k,56) + rxt(k,370)*y(k,120) + rxt(k,377) & + *y(k,122) + rxt(k,414)*y(k,141) + (rxt(k,418) + rxt(k,419) & + ) * y(k,143) + rxt(k,426)*y(k,148) + rxt(k,430)*y(k,149)) + mat(k,1274) = -rxt(k,120)*y(k,107) + mat(k,94) = -rxt(k,126)*y(k,107) + mat(k,1446) = -rxt(k,134)*y(k,107) + mat(k,1540) = -rxt(k,140)*y(k,107) + mat(k,543) = -rxt(k,154)*y(k,107) + mat(k,564) = -rxt(k,159)*y(k,107) + mat(k,229) = -rxt(k,294)*y(k,107) + mat(k,360) = -rxt(k,370)*y(k,107) + mat(k,843) = -rxt(k,377)*y(k,107) + mat(k,341) = -rxt(k,414)*y(k,107) + mat(k,448) = -(rxt(k,418) + rxt(k,419)) * y(k,107) + mat(k,508) = -rxt(k,426)*y(k,107) + mat(k,264) = -rxt(k,430)*y(k,107) + mat(k,877) = rxt(k,217)*y(k,108) + rxt(k,216)*y(k,139) + mat(k,931) = 2.000_r8*rxt(k,218)*y(k,6) + (rxt(k,220)+rxt(k,221))*y(k,45) & + + rxt(k,226)*y(k,106) + rxt(k,222)*y(k,139) + mat(k,426) = rxt(k,277)*y(k,139) + mat(k,464) = rxt(k,304)*y(k,139) + mat(k,1186) = rxt(k,264)*y(k,139) + mat(k,1312) = rxt(k,185)*y(k,108) + rxt(k,183)*y(k,139) + mat(k,957) = (rxt(k,220)+rxt(k,221))*y(k,6) + (2.000_r8*rxt(k,187) & + +2.000_r8*rxt(k,188))*y(k,45) + rxt(k,196)*y(k,106) & + + rxt(k,198)*y(k,111) + rxt(k,190)*y(k,139) + mat(k,1540) = mat(k,1540) + rxt(k,143)*y(k,108) + rxt(k,137)*y(k,139) + mat(k,233) = rxt(k,152)*y(k,111) + mat(k,564) = mat(k,564) + rxt(k,158)*y(k,98) + mat(k,123) = rxt(k,172)*y(k,144) + mat(k,1494) = rxt(k,169)*y(k,108) + rxt(k,422)*y(k,147) + mat(k,993) = rxt(k,158)*y(k,89) + rxt(k,160)*y(k,106) + rxt(k,161)*y(k,108) + mat(k,1232) = rxt(k,165)*y(k,106) + rxt(k,163)*y(k,139) + mat(k,1446) = mat(k,1446) + rxt(k,226)*y(k,6) + rxt(k,196)*y(k,45) & + + rxt(k,160)*y(k,98) + rxt(k,165)*y(k,99) + 2.000_r8*rxt(k,133) & + *y(k,106) + 2.000_r8*rxt(k,132)*y(k,108) + rxt(k,147)*y(k,111) & + + rxt(k,141)*y(k,139) + rxt(k,125)*y(k,145) + mat(k,909) = mat(k,909) + 2.000_r8*rxt(k,126)*y(k,145) + mat(k,1122) = rxt(k,217)*y(k,4) + rxt(k,185)*y(k,42) + rxt(k,143)*y(k,62) & + + rxt(k,169)*y(k,97) + rxt(k,161)*y(k,98) + 2.000_r8*rxt(k,132) & + *y(k,106) + rxt(k,148)*y(k,111) + rxt(k,372)*y(k,120) & + + rxt(k,378)*y(k,122) + 2.000_r8*rxt(k,142)*y(k,139) + ( & + + 2.000_r8*rxt(k,122)+rxt(k,123))*y(k,144) + mat(k,1401) = rxt(k,198)*y(k,45) + rxt(k,152)*y(k,74) + rxt(k,147)*y(k,106) & + + rxt(k,148)*y(k,108) + rxt(k,146)*y(k,139) + mat(k,404) = rxt(k,312)*y(k,139) + mat(k,360) = mat(k,360) + rxt(k,372)*y(k,108) + mat(k,843) = mat(k,843) + rxt(k,378)*y(k,108) + mat(k,1076) = rxt(k,216)*y(k,4) + rxt(k,222)*y(k,6) + rxt(k,277)*y(k,10) & + + rxt(k,304)*y(k,15) + rxt(k,264)*y(k,37) + rxt(k,183)*y(k,42) & + + rxt(k,190)*y(k,45) + rxt(k,137)*y(k,62) + rxt(k,163)*y(k,99) & + + rxt(k,141)*y(k,106) + 2.000_r8*rxt(k,142)*y(k,108) & + + rxt(k,146)*y(k,111) + rxt(k,312)*y(k,114) & + + 2.000_r8*rxt(k,151)*y(k,139) + mat(k,1274) = mat(k,1274) + rxt(k,172)*y(k,90) + (2.000_r8*rxt(k,122) & + +rxt(k,123))*y(k,108) + mat(k,94) = mat(k,94) + rxt(k,125)*y(k,106) + 2.000_r8*rxt(k,126)*y(k,107) + mat(k,515) = rxt(k,422)*y(k,97) + mat(k,1128) = -((rxt(k,122) + rxt(k,123)) * y(k,144) + rxt(k,132)*y(k,106) & + + rxt(k,142)*y(k,139) + rxt(k,143)*y(k,62) + rxt(k,148)*y(k,111) & + + rxt(k,161)*y(k,98) + rxt(k,169)*y(k,97) + rxt(k,185)*y(k,42) & + + rxt(k,217)*y(k,4) + rxt(k,274)*y(k,9) + rxt(k,302)*y(k,14) & + + rxt(k,327)*y(k,83) + rxt(k,337)*y(k,88) + rxt(k,352)*y(k,79) & + + rxt(k,364)*y(k,133) + rxt(k,372)*y(k,120) + rxt(k,378) & + *y(k,122)) + mat(k,1280) = -(rxt(k,122) + rxt(k,123)) * y(k,108) + mat(k,1452) = -rxt(k,132)*y(k,108) + mat(k,1082) = -rxt(k,142)*y(k,108) + mat(k,1546) = -rxt(k,143)*y(k,108) + mat(k,1407) = -rxt(k,148)*y(k,108) + mat(k,999) = -rxt(k,161)*y(k,108) + mat(k,1500) = -rxt(k,169)*y(k,108) + mat(k,1318) = -rxt(k,185)*y(k,108) + mat(k,882) = -rxt(k,217)*y(k,108) + mat(k,244) = -rxt(k,274)*y(k,108) + mat(k,633) = -rxt(k,302)*y(k,108) + mat(k,662) = -rxt(k,327)*y(k,108) + mat(k,752) = -rxt(k,337)*y(k,108) + mat(k,484) = -rxt(k,352)*y(k,108) + mat(k,349) = -rxt(k,364)*y(k,108) + mat(k,361) = -rxt(k,372)*y(k,108) + mat(k,848) = -rxt(k,378)*y(k,108) + mat(k,799) = .150_r8*rxt(k,287)*y(k,139) + mat(k,771) = .150_r8*rxt(k,332)*y(k,139) + mat(k,1452) = mat(k,1452) + rxt(k,134)*y(k,107) + mat(k,915) = rxt(k,134)*y(k,106) + mat(k,1082) = mat(k,1082) + .150_r8*rxt(k,287)*y(k,32) + .150_r8*rxt(k,332) & + *y(k,86) + mat(k,173) = -(rxt(k,379)*y(k,122)) + mat(k,838) = -rxt(k,379)*y(k,109) + mat(k,924) = rxt(k,219)*y(k,45) + mat(k,950) = rxt(k,219)*y(k,6) + 2.000_r8*rxt(k,189)*y(k,45) + mat(k,181) = -(rxt(k,368)*y(k,106) + rxt(k,369)*y(k,111)) + mat(k,1421) = -rxt(k,368)*y(k,110) + mat(k,1347) = -rxt(k,369)*y(k,110) + mat(k,1413) = -(rxt(k,144)*y(k,63) + rxt(k,145)*y(k,65) + rxt(k,146)*y(k,139) & + + rxt(k,147)*y(k,106) + rxt(k,148)*y(k,108) + (4._r8*rxt(k,149) & + + 4._r8*rxt(k,150)) * y(k,111) + rxt(k,152)*y(k,74) + rxt(k,166) & + *y(k,99) + rxt(k,167)*y(k,89) + rxt(k,175)*y(k,98) + rxt(k,176) & + *y(k,73) + rxt(k,195)*y(k,46) + (rxt(k,197) + rxt(k,198) & + ) * y(k,45) + rxt(k,200)*y(k,71) + rxt(k,203)*y(k,76) + rxt(k,227) & + *y(k,6) + rxt(k,229)*y(k,67) + rxt(k,243)*y(k,26) + rxt(k,245) & + *y(k,28) + rxt(k,246)*y(k,29) + rxt(k,248)*y(k,31) + rxt(k,250) & + *y(k,41) + rxt(k,251)*y(k,68) + rxt(k,252)*y(k,69) + rxt(k,253) & + *y(k,70) + rxt(k,261)*y(k,27) + rxt(k,266)*y(k,38) + rxt(k,267) & + *y(k,39) + rxt(k,268)*y(k,40) + rxt(k,272)*y(k,48) + rxt(k,279) & + *y(k,11) + rxt(k,280)*y(k,12) + rxt(k,282)*y(k,13) + rxt(k,284) & + *y(k,30) + rxt(k,289)*y(k,35) + rxt(k,290)*y(k,36) + rxt(k,295) & + *y(k,60) + rxt(k,296)*y(k,61) + rxt(k,297)*y(k,113) + rxt(k,298) & + *y(k,9) + rxt(k,306)*y(k,16) + rxt(k,307)*y(k,17) + rxt(k,309) & + *y(k,34) + rxt(k,310)*y(k,77) + rxt(k,311)*y(k,100) + rxt(k,314) & + *y(k,117) + rxt(k,318)*y(k,119) + rxt(k,319)*y(k,14) + rxt(k,320) & + *y(k,33) + rxt(k,328)*y(k,83) + rxt(k,329)*y(k,85) + rxt(k,336) & + *y(k,87) + rxt(k,338)*y(k,88) + rxt(k,341)*y(k,3) + rxt(k,342) & + *y(k,78) + rxt(k,353)*y(k,79) + rxt(k,354)*y(k,82) + rxt(k,356) & + *y(k,112) + rxt(k,362)*y(k,135) + rxt(k,365)*y(k,133) + (rxt(k,367) & + + rxt(k,381)) * y(k,52) + rxt(k,369)*y(k,110) + rxt(k,371) & + *y(k,123) + rxt(k,375)*y(k,120) + rxt(k,380)*y(k,122) + rxt(k,383) & + *y(k,95)) + mat(k,833) = -rxt(k,144)*y(k,111) + mat(k,315) = -rxt(k,145)*y(k,111) + mat(k,1088) = -rxt(k,146)*y(k,111) + mat(k,1458) = -rxt(k,147)*y(k,111) + mat(k,1134) = -rxt(k,148)*y(k,111) + mat(k,237) = -rxt(k,152)*y(k,111) + mat(k,1244) = -rxt(k,166)*y(k,111) + mat(k,567) = -rxt(k,167)*y(k,111) + mat(k,1005) = -rxt(k,175)*y(k,111) + mat(k,1157) = -rxt(k,176)*y(k,111) + mat(k,580) = -rxt(k,195)*y(k,111) + mat(k,969) = -(rxt(k,197) + rxt(k,198)) * y(k,111) + mat(k,869) = -rxt(k,200)*y(k,111) + mat(k,455) = -rxt(k,203)*y(k,111) + mat(k,942) = -rxt(k,227)*y(k,111) + mat(k,437) = -rxt(k,229)*y(k,111) + mat(k,251) = -rxt(k,243)*y(k,111) + mat(k,332) = -rxt(k,245)*y(k,111) + mat(k,47) = -rxt(k,246)*y(k,111) + mat(k,195) = -rxt(k,248)*y(k,111) + mat(k,226) = -rxt(k,250)*y(k,111) + mat(k,111) = -rxt(k,251)*y(k,111) + mat(k,121) = -rxt(k,252)*y(k,111) + mat(k,146) = -rxt(k,253)*y(k,111) + mat(k,1029) = -rxt(k,261)*y(k,111) + mat(k,285) = -rxt(k,266)*y(k,111) + mat(k,212) = -rxt(k,267)*y(k,111) + mat(k,1531) = -rxt(k,268)*y(k,111) + mat(k,652) = -rxt(k,272)*y(k,111) + mat(k,129) = -rxt(k,279)*y(k,111) + mat(k,172) = -rxt(k,280)*y(k,111) + mat(k,161) = -rxt(k,282)*y(k,111) + mat(k,647) = -rxt(k,284)*y(k,111) + mat(k,356) = -rxt(k,289)*y(k,111) + mat(k,323) = -rxt(k,290)*y(k,111) + mat(k,612) = -rxt(k,295)*y(k,111) + mat(k,369) = -rxt(k,296)*y(k,111) + mat(k,281) = -rxt(k,297)*y(k,111) + mat(k,245) = -rxt(k,298)*y(k,111) + mat(k,207) = -rxt(k,306)*y(k,111) + mat(k,51) = -rxt(k,307)*y(k,111) + mat(k,689) = -rxt(k,309)*y(k,111) + mat(k,618) = -rxt(k,310)*y(k,111) + mat(k,202) = -rxt(k,311)*y(k,111) + mat(k,292) = -rxt(k,314)*y(k,111) + mat(k,219) = -rxt(k,318)*y(k,111) + mat(k,636) = -rxt(k,319)*y(k,111) + mat(k,398) = -rxt(k,320)*y(k,111) + mat(k,663) = -rxt(k,328)*y(k,111) + mat(k,167) = -rxt(k,329)*y(k,111) + mat(k,310) = -rxt(k,336)*y(k,111) + mat(k,756) = -rxt(k,338)*y(k,111) + mat(k,34) = -rxt(k,341)*y(k,111) + mat(k,180) = -rxt(k,342)*y(k,111) + mat(k,487) = -rxt(k,353)*y(k,111) + mat(k,273) = -rxt(k,354)*y(k,111) + mat(k,592) = -rxt(k,356)*y(k,111) + mat(k,100) = -rxt(k,362)*y(k,111) + mat(k,351) = -rxt(k,365)*y(k,111) + mat(k,140) = -(rxt(k,367) + rxt(k,381)) * y(k,111) + mat(k,186) = -rxt(k,369)*y(k,111) + mat(k,551) = -rxt(k,371)*y(k,111) + mat(k,362) = -rxt(k,375)*y(k,111) + mat(k,850) = -rxt(k,380)*y(k,111) + mat(k,36) = -rxt(k,383)*y(k,111) + mat(k,245) = mat(k,245) + .130_r8*rxt(k,274)*y(k,108) + mat(k,172) = mat(k,172) + .500_r8*rxt(k,280)*y(k,111) + mat(k,636) = mat(k,636) + .360_r8*rxt(k,302)*y(k,108) + mat(k,1029) = mat(k,1029) + rxt(k,260)*y(k,106) + mat(k,803) = .450_r8*rxt(k,287)*y(k,139) + mat(k,212) = mat(k,212) + .300_r8*rxt(k,267)*y(k,111) + mat(k,1531) = mat(k,1531) + rxt(k,269)*y(k,144) + mat(k,1324) = rxt(k,184)*y(k,139) + mat(k,495) = rxt(k,238)*y(k,151) + mat(k,1552) = rxt(k,143)*y(k,108) + 2.000_r8*rxt(k,138)*y(k,139) + mat(k,833) = mat(k,833) + rxt(k,135)*y(k,106) + rxt(k,117)*y(k,144) + mat(k,315) = mat(k,315) + rxt(k,136)*y(k,106) + mat(k,437) = mat(k,437) + rxt(k,228)*y(k,106) + rxt(k,234)*y(k,144) + mat(k,869) = mat(k,869) + rxt(k,199)*y(k,106) + rxt(k,211)*y(k,144) + mat(k,391) = rxt(k,230)*y(k,106) + mat(k,455) = mat(k,455) + rxt(k,202)*y(k,106) + mat(k,487) = mat(k,487) + .320_r8*rxt(k,352)*y(k,108) + mat(k,419) = .206_r8*rxt(k,344)*y(k,139) + mat(k,663) = mat(k,663) + .240_r8*rxt(k,327)*y(k,108) + mat(k,167) = mat(k,167) + .100_r8*rxt(k,329)*y(k,111) + mat(k,775) = .450_r8*rxt(k,332)*y(k,139) + mat(k,756) = mat(k,756) + .360_r8*rxt(k,337)*y(k,108) + mat(k,1506) = rxt(k,168)*y(k,139) + mat(k,1244) = mat(k,1244) + rxt(k,163)*y(k,139) + mat(k,1458) = mat(k,1458) + rxt(k,260)*y(k,27) + rxt(k,135)*y(k,63) & + + rxt(k,136)*y(k,65) + rxt(k,228)*y(k,67) + rxt(k,199)*y(k,71) & + + rxt(k,230)*y(k,75) + rxt(k,202)*y(k,76) + rxt(k,141)*y(k,139) + mat(k,1134) = mat(k,1134) + .130_r8*rxt(k,274)*y(k,9) + .360_r8*rxt(k,302) & + *y(k,14) + rxt(k,143)*y(k,62) + .320_r8*rxt(k,352)*y(k,79) & + + .240_r8*rxt(k,327)*y(k,83) + .360_r8*rxt(k,337)*y(k,88) & + + 1.156_r8*rxt(k,364)*y(k,133) + rxt(k,142)*y(k,139) + mat(k,1413) = mat(k,1413) + .500_r8*rxt(k,280)*y(k,12) + .300_r8*rxt(k,267) & + *y(k,39) + .100_r8*rxt(k,329)*y(k,85) + .500_r8*rxt(k,314) & + *y(k,117) + .500_r8*rxt(k,362)*y(k,135) + mat(k,292) = mat(k,292) + .500_r8*rxt(k,314)*y(k,111) + mat(k,603) = .150_r8*rxt(k,316)*y(k,139) + mat(k,351) = mat(k,351) + 1.156_r8*rxt(k,364)*y(k,108) + mat(k,100) = mat(k,100) + .500_r8*rxt(k,362)*y(k,111) + mat(k,1088) = mat(k,1088) + .450_r8*rxt(k,287)*y(k,32) + rxt(k,184)*y(k,42) & + + 2.000_r8*rxt(k,138)*y(k,62) + .206_r8*rxt(k,344)*y(k,80) & + + .450_r8*rxt(k,332)*y(k,86) + rxt(k,168)*y(k,97) + rxt(k,163) & + *y(k,99) + rxt(k,141)*y(k,106) + rxt(k,142)*y(k,108) & + + .150_r8*rxt(k,316)*y(k,118) + mat(k,1286) = rxt(k,269)*y(k,40) + rxt(k,117)*y(k,63) + rxt(k,234)*y(k,67) & + + rxt(k,211)*y(k,71) + 2.000_r8*rxt(k,118)*y(k,151) + mat(k,1579) = rxt(k,238)*y(k,59) + 2.000_r8*rxt(k,118)*y(k,144) + end do + end subroutine nlnmat06 + subroutine nlnmat07( avec_len, mat, y, rxt ) + use chem_mods, only : gas_pcnst, rxntot, nzcnt + implicit none +!---------------------------------------------- +! ... dummy arguments +!---------------------------------------------- + integer, intent(in) :: avec_len + real(r8), intent(in) :: y(veclen,gas_pcnst) + real(r8), intent(in) :: rxt(veclen,rxntot) + real(r8), intent(inout) :: mat(veclen,nzcnt) +!---------------------------------------------- +! ... local variables +!---------------------------------------------- + integer :: k +!---------------------------------------------- +! ... complete matrix entries implicit species +!---------------------------------------------- + do k = 1,avec_len + mat(k,584) = -(rxt(k,355)*y(k,99) + rxt(k,356)*y(k,111)) + mat(k,1214) = -rxt(k,355)*y(k,112) + mat(k,1381) = -rxt(k,356)*y(k,112) + mat(k,412) = .794_r8*rxt(k,345)*y(k,97) + .794_r8*rxt(k,346)*y(k,99) & + + .794_r8*rxt(k,344)*y(k,139) + mat(k,695) = .080_r8*rxt(k,350)*y(k,97) + mat(k,720) = .800_r8*rxt(k,326)*y(k,97) + mat(k,1478) = .794_r8*rxt(k,345)*y(k,80) + .080_r8*rxt(k,350)*y(k,81) & + + .800_r8*rxt(k,326)*y(k,84) + mat(k,1214) = mat(k,1214) + .794_r8*rxt(k,346)*y(k,80) + mat(k,1058) = .794_r8*rxt(k,344)*y(k,80) + mat(k,274) = -(rxt(k,297)*y(k,111)) + mat(k,1358) = -rxt(k,297)*y(k,113) + mat(k,779) = rxt(k,299)*y(k,98) + mat(k,977) = rxt(k,299)*y(k,32) + mat(k,401) = -(rxt(k,312)*y(k,139) + rxt(k,313)*y(k,97)) + mat(k,1052) = -rxt(k,312)*y(k,114) + mat(k,1470) = -rxt(k,313)*y(k,114) + mat(k,621) = rxt(k,319)*y(k,111) + mat(k,1371) = rxt(k,319)*y(k,14) + .500_r8*rxt(k,314)*y(k,117) + mat(k,287) = .500_r8*rxt(k,314)*y(k,111) + mat(k,286) = -(rxt(k,314)*y(k,111)) + mat(k,1360) = -rxt(k,314)*y(k,117) + mat(k,400) = rxt(k,312)*y(k,139) + mat(k,1045) = rxt(k,312)*y(k,114) + mat(k,595) = -(rxt(k,315)*y(k,37) + rxt(k,316)*y(k,139) + rxt(k,317)*y(k,97)) + mat(k,1172) = -rxt(k,315)*y(k,118) + mat(k,1059) = -rxt(k,316)*y(k,118) + mat(k,1479) = -rxt(k,317)*y(k,118) + mat(k,395) = rxt(k,320)*y(k,111) + mat(k,1382) = rxt(k,320)*y(k,33) + rxt(k,318)*y(k,119) + mat(k,216) = rxt(k,318)*y(k,111) + mat(k,215) = -(rxt(k,318)*y(k,111)) + mat(k,1352) = -rxt(k,318)*y(k,119) + mat(k,593) = .850_r8*rxt(k,316)*y(k,139) + mat(k,1041) = .850_r8*rxt(k,316)*y(k,118) + mat(k,358) = -(rxt(k,370)*y(k,107) + rxt(k,372)*y(k,108) + rxt(k,375) & + *y(k,111)) + mat(k,895) = -rxt(k,370)*y(k,120) + mat(k,1099) = -rxt(k,372)*y(k,120) + mat(k,1367) = -rxt(k,375)*y(k,120) + mat(k,841) = -(rxt(k,373)*y(k,6) + rxt(k,374)*y(k,45) + rxt(k,376)*y(k,98) & + + rxt(k,377)*y(k,107) + rxt(k,378)*y(k,108) + rxt(k,379) & + *y(k,109) + rxt(k,380)*y(k,111)) + mat(k,928) = -rxt(k,373)*y(k,122) + mat(k,954) = -rxt(k,374)*y(k,122) + mat(k,990) = -rxt(k,376)*y(k,122) + mat(k,907) = -rxt(k,377)*y(k,122) + mat(k,1120) = -rxt(k,378)*y(k,122) + mat(k,175) = -rxt(k,379)*y(k,122) + mat(k,1398) = -rxt(k,380)*y(k,122) + mat(k,1443) = rxt(k,368)*y(k,110) + mat(k,907) = mat(k,907) + rxt(k,370)*y(k,120) + mat(k,1120) = mat(k,1120) + rxt(k,372)*y(k,120) + mat(k,185) = rxt(k,368)*y(k,106) + mat(k,1398) = mat(k,1398) + rxt(k,375)*y(k,120) + mat(k,359) = rxt(k,370)*y(k,107) + rxt(k,372)*y(k,108) + rxt(k,375)*y(k,111) + mat(k,548) = -(rxt(k,371)*y(k,111)) + mat(k,1378) = -rxt(k,371)*y(k,123) + mat(k,927) = rxt(k,373)*y(k,122) + mat(k,952) = rxt(k,374)*y(k,122) + mat(k,136) = rxt(k,366)*y(k,99) + (rxt(k,367)+.500_r8*rxt(k,381))*y(k,111) + mat(k,981) = rxt(k,376)*y(k,122) + mat(k,1213) = rxt(k,366)*y(k,52) + mat(k,902) = rxt(k,377)*y(k,122) + mat(k,1103) = rxt(k,378)*y(k,122) + mat(k,174) = rxt(k,379)*y(k,122) + mat(k,183) = rxt(k,369)*y(k,111) + mat(k,1378) = mat(k,1378) + (rxt(k,367)+.500_r8*rxt(k,381))*y(k,52) & + + rxt(k,369)*y(k,110) + rxt(k,380)*y(k,122) + mat(k,840) = rxt(k,373)*y(k,6) + rxt(k,374)*y(k,45) + rxt(k,376)*y(k,98) & + + rxt(k,377)*y(k,107) + rxt(k,378)*y(k,108) + rxt(k,379) & + *y(k,109) + rxt(k,380)*y(k,111) + mat(k,131) = -(rxt(k,382)*y(k,151)) + mat(k,1559) = -rxt(k,382)*y(k,124) + mat(k,1340) = rxt(k,371)*y(k,123) + mat(k,547) = rxt(k,371)*y(k,111) + mat(k,343) = -(rxt(k,363)*y(k,99) + rxt(k,364)*y(k,108) + rxt(k,365)*y(k,111)) + mat(k,1208) = -rxt(k,363)*y(k,133) + mat(k,1097) = -rxt(k,364)*y(k,133) + mat(k,1365) = -rxt(k,365)*y(k,133) + mat(k,671) = -(rxt(k,357)*y(k,32) + rxt(k,358)*y(k,37) + rxt(k,359)*y(k,139) & + + rxt(k,360)*y(k,97) + rxt(k,361)*y(k,99)) + mat(k,787) = -rxt(k,357)*y(k,134) + mat(k,1178) = -rxt(k,358)*y(k,134) + mat(k,1065) = -rxt(k,359)*y(k,134) + mat(k,1485) = -rxt(k,360)*y(k,134) + mat(k,1222) = -rxt(k,361)*y(k,134) + mat(k,179) = rxt(k,342)*y(k,111) + mat(k,268) = .800_r8*rxt(k,354)*y(k,111) + mat(k,1389) = rxt(k,342)*y(k,78) + .800_r8*rxt(k,354)*y(k,82) & + + .500_r8*rxt(k,362)*y(k,135) + mat(k,99) = .500_r8*rxt(k,362)*y(k,111) + mat(k,98) = -(rxt(k,362)*y(k,111)) + mat(k,1334) = -rxt(k,362)*y(k,135) + mat(k,665) = rxt(k,359)*y(k,139) + mat(k,1036) = rxt(k,359)*y(k,134) + mat(k,526) = -(rxt(k,411)*y(k,142) + rxt(k,412)*y(k,147) + rxt(k,413) & + *y(k,141)) + mat(k,371) = -rxt(k,411)*y(k,138) + mat(k,512) = -rxt(k,412)*y(k,138) + mat(k,338) = -rxt(k,413)*y(k,138) + mat(k,1081) = -((rxt(k,137) + rxt(k,138) + rxt(k,139)) * y(k,62) + rxt(k,141) & + *y(k,106) + rxt(k,142)*y(k,108) + rxt(k,146)*y(k,111) & + + 4._r8*rxt(k,151)*y(k,139) + rxt(k,163)*y(k,99) + rxt(k,168) & + *y(k,97) + rxt(k,173)*y(k,98) + (rxt(k,183) + rxt(k,184) & + ) * y(k,42) + rxt(k,190)*y(k,45) + rxt(k,216)*y(k,4) + rxt(k,222) & + *y(k,6) + rxt(k,264)*y(k,37) + rxt(k,277)*y(k,10) + rxt(k,287) & + *y(k,32) + rxt(k,291)*y(k,57) + rxt(k,304)*y(k,15) + rxt(k,312) & + *y(k,114) + rxt(k,316)*y(k,118) + rxt(k,323)*y(k,84) + rxt(k,332) & + *y(k,86) + rxt(k,344)*y(k,80) + rxt(k,349)*y(k,81) + rxt(k,359) & + *y(k,134)) + mat(k,1545) = -(rxt(k,137) + rxt(k,138) + rxt(k,139)) * y(k,139) + mat(k,1451) = -rxt(k,141)*y(k,139) + mat(k,1127) = -rxt(k,142)*y(k,139) + mat(k,1406) = -rxt(k,146)*y(k,139) + mat(k,1237) = -rxt(k,163)*y(k,139) + mat(k,1499) = -rxt(k,168)*y(k,139) + mat(k,998) = -rxt(k,173)*y(k,139) + mat(k,1317) = -(rxt(k,183) + rxt(k,184)) * y(k,139) + mat(k,962) = -rxt(k,190)*y(k,139) + mat(k,881) = -rxt(k,216)*y(k,139) + mat(k,936) = -rxt(k,222)*y(k,139) + mat(k,1191) = -rxt(k,264)*y(k,139) + mat(k,429) = -rxt(k,277)*y(k,139) + mat(k,798) = -rxt(k,287)*y(k,139) + mat(k,382) = -rxt(k,291)*y(k,139) + mat(k,467) = -rxt(k,304)*y(k,139) + mat(k,407) = -rxt(k,312)*y(k,139) + mat(k,601) = -rxt(k,316)*y(k,139) + mat(k,732) = -rxt(k,323)*y(k,139) + mat(k,770) = -rxt(k,332)*y(k,139) + mat(k,417) = -rxt(k,344)*y(k,139) + mat(k,710) = -rxt(k,349)*y(k,139) + mat(k,677) = -rxt(k,359)*y(k,139) + mat(k,881) = mat(k,881) + rxt(k,215)*y(k,27) + mat(k,936) = mat(k,936) + rxt(k,227)*y(k,111) + mat(k,243) = .130_r8*rxt(k,274)*y(k,108) + mat(k,429) = mat(k,429) + 2.400_r8*rxt(k,275)*y(k,10) + rxt(k,276)*y(k,37) & + + rxt(k,278)*y(k,97) + mat(k,128) = rxt(k,279)*y(k,111) + mat(k,632) = .280_r8*rxt(k,302)*y(k,108) + mat(k,467) = mat(k,467) + rxt(k,303)*y(k,37) + rxt(k,305)*y(k,97) + mat(k,1022) = rxt(k,215)*y(k,4) + rxt(k,179)*y(k,42) + rxt(k,259)*y(k,99) & + + rxt(k,260)*y(k,106) + mat(k,328) = rxt(k,244)*y(k,42) + rxt(k,245)*y(k,111) + mat(k,192) = rxt(k,247)*y(k,42) + rxt(k,248)*y(k,111) + mat(k,798) = mat(k,798) + .900_r8*rxt(k,286)*y(k,37) + rxt(k,347)*y(k,81) & + + .470_r8*rxt(k,321)*y(k,84) + rxt(k,357)*y(k,134) + mat(k,1191) = mat(k,1191) + rxt(k,276)*y(k,10) + rxt(k,303)*y(k,15) & + + .900_r8*rxt(k,286)*y(k,32) + 4.000_r8*rxt(k,262)*y(k,37) & + + rxt(k,186)*y(k,45) + rxt(k,348)*y(k,81) + .730_r8*rxt(k,322) & + *y(k,84) + rxt(k,331)*y(k,86) + rxt(k,265)*y(k,97) & + + .300_r8*rxt(k,315)*y(k,118) + .800_r8*rxt(k,358)*y(k,134) + mat(k,284) = rxt(k,266)*y(k,111) + mat(k,1524) = rxt(k,270)*y(k,144) + mat(k,1317) = mat(k,1317) + rxt(k,179)*y(k,27) + rxt(k,244)*y(k,28) & + + rxt(k,247)*y(k,31) + rxt(k,182)*y(k,65) + mat(k,962) = mat(k,962) + rxt(k,186)*y(k,37) + rxt(k,197)*y(k,111) + mat(k,651) = rxt(k,272)*y(k,111) + mat(k,137) = .500_r8*rxt(k,381)*y(k,111) + mat(k,231) = rxt(k,294)*y(k,107) + mat(k,382) = mat(k,382) + .250_r8*rxt(k,292)*y(k,97) + mat(k,611) = rxt(k,295)*y(k,111) + mat(k,368) = rxt(k,296)*y(k,111) + mat(k,1545) = mat(k,1545) + rxt(k,140)*y(k,107) + mat(k,313) = rxt(k,182)*y(k,42) + rxt(k,136)*y(k,106) + rxt(k,145)*y(k,111) + mat(k,617) = rxt(k,310)*y(k,111) + mat(k,483) = .370_r8*rxt(k,352)*y(k,108) + mat(k,417) = mat(k,417) + .794_r8*rxt(k,345)*y(k,97) + .794_r8*rxt(k,346) & + *y(k,99) + mat(k,710) = mat(k,710) + rxt(k,347)*y(k,32) + rxt(k,348)*y(k,37) & + + .920_r8*rxt(k,350)*y(k,97) + rxt(k,351)*y(k,99) + mat(k,661) = .140_r8*rxt(k,327)*y(k,108) + mat(k,732) = mat(k,732) + .470_r8*rxt(k,321)*y(k,32) + .730_r8*rxt(k,322) & + *y(k,37) + .470_r8*rxt(k,325)*y(k,97) + .470_r8*rxt(k,324) & + *y(k,99) + mat(k,166) = .200_r8*rxt(k,329)*y(k,111) + mat(k,770) = mat(k,770) + rxt(k,331)*y(k,37) + mat(k,308) = .500_r8*rxt(k,336)*y(k,111) + mat(k,751) = .280_r8*rxt(k,337)*y(k,108) + mat(k,1499) = mat(k,1499) + rxt(k,278)*y(k,10) + rxt(k,305)*y(k,15) & + + rxt(k,265)*y(k,37) + .250_r8*rxt(k,292)*y(k,57) & + + .794_r8*rxt(k,345)*y(k,80) + .920_r8*rxt(k,350)*y(k,81) & + + .470_r8*rxt(k,325)*y(k,84) + rxt(k,313)*y(k,114) + rxt(k,360) & + *y(k,134) + mat(k,1237) = mat(k,1237) + rxt(k,259)*y(k,27) + .794_r8*rxt(k,346)*y(k,80) & + + rxt(k,351)*y(k,81) + .470_r8*rxt(k,324)*y(k,84) + rxt(k,166) & + *y(k,111) + rxt(k,355)*y(k,112) + rxt(k,361)*y(k,134) + mat(k,1451) = mat(k,1451) + rxt(k,260)*y(k,27) + rxt(k,136)*y(k,65) + mat(k,914) = rxt(k,294)*y(k,56) + rxt(k,140)*y(k,62) + mat(k,1127) = mat(k,1127) + .130_r8*rxt(k,274)*y(k,9) + .280_r8*rxt(k,302) & + *y(k,14) + .370_r8*rxt(k,352)*y(k,79) + .140_r8*rxt(k,327) & + *y(k,83) + .280_r8*rxt(k,337)*y(k,88) + rxt(k,148)*y(k,111) + mat(k,1406) = mat(k,1406) + rxt(k,227)*y(k,6) + rxt(k,279)*y(k,11) & + + rxt(k,245)*y(k,28) + rxt(k,248)*y(k,31) + rxt(k,266)*y(k,38) & + + rxt(k,197)*y(k,45) + rxt(k,272)*y(k,48) + .500_r8*rxt(k,381) & + *y(k,52) + rxt(k,295)*y(k,60) + rxt(k,296)*y(k,61) + rxt(k,145) & + *y(k,65) + rxt(k,310)*y(k,77) + .200_r8*rxt(k,329)*y(k,85) & + + .500_r8*rxt(k,336)*y(k,87) + rxt(k,166)*y(k,99) + rxt(k,148) & + *y(k,108) + rxt(k,356)*y(k,112) + rxt(k,371)*y(k,123) + mat(k,589) = rxt(k,355)*y(k,99) + rxt(k,356)*y(k,111) + mat(k,407) = mat(k,407) + rxt(k,313)*y(k,97) + mat(k,601) = mat(k,601) + .300_r8*rxt(k,315)*y(k,37) + mat(k,550) = rxt(k,371)*y(k,111) + mat(k,677) = mat(k,677) + rxt(k,357)*y(k,32) + .800_r8*rxt(k,358)*y(k,37) & + + rxt(k,360)*y(k,97) + rxt(k,361)*y(k,99) + mat(k,1279) = rxt(k,270)*y(k,40) + end do + end subroutine nlnmat07 + subroutine nlnmat08( avec_len, mat, y, rxt ) + use chem_mods, only : gas_pcnst, rxntot, nzcnt + implicit none +!---------------------------------------------- +! ... dummy arguments +!---------------------------------------------- + integer, intent(in) :: avec_len + real(r8), intent(in) :: y(veclen,gas_pcnst) + real(r8), intent(in) :: rxt(veclen,rxntot) + real(r8), intent(inout) :: mat(veclen,nzcnt) +!---------------------------------------------- +! ... local variables +!---------------------------------------------- + integer :: k +!---------------------------------------------- +! ... complete matrix entries implicit species +!---------------------------------------------- + do k = 1,avec_len + mat(k,539) = -(rxt(k,153)*y(k,106) + rxt(k,154)*y(k,107) + rxt(k,425) & + *y(k,148)) + mat(k,1436) = -rxt(k,153)*y(k,140) + mat(k,901) = -rxt(k,154)*y(k,140) + mat(k,504) = -rxt(k,425)*y(k,140) + mat(k,1436) = mat(k,1436) + rxt(k,415)*y(k,141) + mat(k,527) = .900_r8*rxt(k,413)*y(k,141) + .800_r8*rxt(k,411)*y(k,142) + mat(k,339) = rxt(k,415)*y(k,106) + .900_r8*rxt(k,413)*y(k,138) + mat(k,372) = .800_r8*rxt(k,411)*y(k,138) + mat(k,334) = -(rxt(k,413)*y(k,138) + rxt(k,414)*y(k,107) + (rxt(k,415) & + + rxt(k,416)) * y(k,106)) + mat(k,521) = -rxt(k,413)*y(k,141) + mat(k,894) = -rxt(k,414)*y(k,141) + mat(k,1426) = -(rxt(k,415) + rxt(k,416)) * y(k,141) + mat(k,370) = -(rxt(k,411)*y(k,138)) + mat(k,522) = -rxt(k,411)*y(k,142) + mat(k,555) = rxt(k,420)*y(k,147) + mat(k,1467) = rxt(k,422)*y(k,147) + mat(k,1428) = rxt(k,415)*y(k,141) + mat(k,896) = rxt(k,419)*y(k,143) + mat(k,335) = rxt(k,415)*y(k,106) + mat(k,441) = rxt(k,419)*y(k,107) + mat(k,510) = rxt(k,420)*y(k,89) + rxt(k,422)*y(k,97) + mat(k,442) = -(rxt(k,417)*y(k,106) + (rxt(k,418) + rxt(k,419)) * y(k,107)) + mat(k,1431) = -rxt(k,417)*y(k,143) + mat(k,897) = -(rxt(k,418) + rxt(k,419)) * y(k,143) + mat(k,535) = rxt(k,425)*y(k,148) + mat(k,500) = rxt(k,425)*y(k,140) + mat(k,1284) = -(rxt(k,117)*y(k,63) + rxt(k,118)*y(k,151) + (rxt(k,120) & + + rxt(k,121)) * y(k,107) + (rxt(k,122) + rxt(k,123)) * y(k,108) & + + (rxt(k,171) + rxt(k,172)) * y(k,90) + rxt(k,204)*y(k,18) & + + rxt(k,205)*y(k,19) + rxt(k,206)*y(k,21) + rxt(k,207)*y(k,22) & + + rxt(k,208)*y(k,23) + rxt(k,209)*y(k,24) + rxt(k,210)*y(k,25) & + + (rxt(k,211) + rxt(k,212)) * y(k,71) + rxt(k,231)*y(k,20) & + + rxt(k,232)*y(k,41) + rxt(k,233)*y(k,64) + (rxt(k,234) & + + rxt(k,235)) * y(k,67) + rxt(k,240)*y(k,50) + rxt(k,241) & + *y(k,51) + rxt(k,254)*y(k,26) + rxt(k,255)*y(k,28) + rxt(k,256) & + *y(k,68) + rxt(k,257)*y(k,69) + rxt(k,258)*y(k,70) + (rxt(k,269) & + + rxt(k,270) + rxt(k,271)) * y(k,40)) + mat(k,831) = -rxt(k,117)*y(k,144) + mat(k,1577) = -rxt(k,118)*y(k,144) + mat(k,916) = -(rxt(k,120) + rxt(k,121)) * y(k,144) + mat(k,1132) = -(rxt(k,122) + rxt(k,123)) * y(k,144) + mat(k,124) = -(rxt(k,171) + rxt(k,172)) * y(k,144) + mat(k,39) = -rxt(k,204)*y(k,144) + mat(k,74) = -rxt(k,205)*y(k,144) + mat(k,55) = -rxt(k,206)*y(k,144) + mat(k,84) = -rxt(k,207)*y(k,144) + mat(k,59) = -rxt(k,208)*y(k,144) + mat(k,89) = -rxt(k,209)*y(k,144) + mat(k,63) = -rxt(k,210)*y(k,144) + mat(k,867) = -(rxt(k,211) + rxt(k,212)) * y(k,144) + mat(k,80) = -rxt(k,231)*y(k,144) + mat(k,224) = -rxt(k,232)*y(k,144) + mat(k,44) = -rxt(k,233)*y(k,144) + mat(k,436) = -(rxt(k,234) + rxt(k,235)) * y(k,144) + mat(k,103) = -rxt(k,240)*y(k,144) + mat(k,114) = -rxt(k,241)*y(k,144) + mat(k,249) = -rxt(k,254)*y(k,144) + mat(k,330) = -rxt(k,255)*y(k,144) + mat(k,109) = -rxt(k,256)*y(k,144) + mat(k,119) = -rxt(k,257)*y(k,144) + mat(k,144) = -rxt(k,258)*y(k,144) + mat(k,1529) = -(rxt(k,269) + rxt(k,270) + rxt(k,271)) * y(k,144) + mat(k,916) = mat(k,916) + rxt(k,154)*y(k,140) + mat(k,532) = .850_r8*rxt(k,412)*y(k,147) + mat(k,544) = rxt(k,154)*y(k,107) + mat(k,516) = .850_r8*rxt(k,412)*y(k,138) + mat(k,93) = -(rxt(k,125)*y(k,106) + rxt(k,126)*y(k,107)) + mat(k,1419) = -rxt(k,125)*y(k,145) + mat(k,889) = -rxt(k,126)*y(k,145) + mat(k,807) = rxt(k,127)*y(k,146) + mat(k,1419) = mat(k,1419) + rxt(k,129)*y(k,146) + mat(k,889) = mat(k,889) + rxt(k,130)*y(k,146) + mat(k,1094) = rxt(k,131)*y(k,146) + mat(k,95) = rxt(k,127)*y(k,49) + rxt(k,129)*y(k,106) + rxt(k,130)*y(k,107) & + + rxt(k,131)*y(k,108) + mat(k,96) = -(rxt(k,127)*y(k,49) + rxt(k,129)*y(k,106) + rxt(k,130)*y(k,107) & + + rxt(k,131)*y(k,108)) + mat(k,808) = -rxt(k,127)*y(k,146) + mat(k,1420) = -rxt(k,129)*y(k,146) + mat(k,890) = -rxt(k,130)*y(k,146) + mat(k,1095) = -rxt(k,131)*y(k,146) + mat(k,890) = mat(k,890) + rxt(k,120)*y(k,144) + mat(k,1259) = rxt(k,120)*y(k,107) + mat(k,511) = -(rxt(k,412)*y(k,138) + rxt(k,420)*y(k,89) + rxt(k,422)*y(k,97)) + mat(k,525) = -rxt(k,412)*y(k,147) + mat(k,558) = -rxt(k,420)*y(k,147) + mat(k,1474) = -rxt(k,422)*y(k,147) + mat(k,810) = rxt(k,423)*y(k,148) + mat(k,899) = rxt(k,414)*y(k,141) + rxt(k,418)*y(k,143) + rxt(k,426)*y(k,148) & + + rxt(k,430)*y(k,149) + mat(k,337) = rxt(k,414)*y(k,107) + mat(k,444) = rxt(k,418)*y(k,107) + mat(k,502) = rxt(k,423)*y(k,49) + rxt(k,426)*y(k,107) + mat(k,263) = rxt(k,430)*y(k,107) + mat(k,501) = -(rxt(k,423)*y(k,49) + rxt(k,425)*y(k,140) + rxt(k,426)*y(k,107)) + mat(k,809) = -rxt(k,423)*y(k,148) + mat(k,536) = -rxt(k,425)*y(k,148) + mat(k,898) = -rxt(k,426)*y(k,148) + mat(k,1433) = rxt(k,416)*y(k,141) + rxt(k,417)*y(k,143) + rxt(k,429)*y(k,149) & + + rxt(k,435)*y(k,150) + mat(k,524) = rxt(k,427)*y(k,149) + rxt(k,432)*y(k,150) + mat(k,336) = rxt(k,416)*y(k,106) + mat(k,443) = rxt(k,417)*y(k,106) + mat(k,262) = rxt(k,429)*y(k,106) + rxt(k,427)*y(k,138) + mat(k,257) = rxt(k,435)*y(k,106) + rxt(k,432)*y(k,138) + mat(k,260) = -(rxt(k,427)*y(k,138) + rxt(k,429)*y(k,106) + rxt(k,430) & + *y(k,107)) + mat(k,520) = -rxt(k,427)*y(k,149) + mat(k,1423) = -rxt(k,429)*y(k,149) + mat(k,893) = -rxt(k,430)*y(k,149) + mat(k,520) = mat(k,520) + rxt(k,431)*y(k,150) + mat(k,254) = rxt(k,431)*y(k,138) + mat(k,253) = -((rxt(k,431) + rxt(k,432)) * y(k,138) + rxt(k,435)*y(k,106)) + mat(k,519) = -(rxt(k,431) + rxt(k,432)) * y(k,150) + mat(k,1422) = -rxt(k,435)*y(k,150) + mat(k,1584) = -(rxt(k,118)*y(k,144) + rxt(k,238)*y(k,59) + rxt(k,382) & + *y(k,124)) + mat(k,1291) = -rxt(k,118)*y(k,151) + mat(k,498) = -rxt(k,238)*y(k,151) + mat(k,134) = -rxt(k,382)*y(k,151) + mat(k,162) = rxt(k,282)*y(k,111) + mat(k,208) = rxt(k,306)*y(k,111) + mat(k,52) = rxt(k,307)*y(k,111) + mat(k,252) = rxt(k,243)*y(k,111) + mat(k,1034) = rxt(k,261)*y(k,111) + mat(k,333) = rxt(k,245)*y(k,111) + mat(k,48) = rxt(k,246)*y(k,111) + mat(k,648) = rxt(k,284)*y(k,111) + mat(k,196) = rxt(k,248)*y(k,111) + mat(k,399) = rxt(k,320)*y(k,111) + mat(k,690) = rxt(k,309)*y(k,111) + mat(k,357) = rxt(k,289)*y(k,111) + mat(k,324) = rxt(k,290)*y(k,111) + mat(k,214) = rxt(k,267)*y(k,111) + mat(k,1536) = rxt(k,268)*y(k,111) + mat(k,1557) = rxt(k,139)*y(k,139) + mat(k,837) = rxt(k,144)*y(k,111) + mat(k,317) = rxt(k,145)*y(k,111) + mat(k,440) = rxt(k,229)*y(k,111) + mat(k,147) = rxt(k,253)*y(k,111) + mat(k,872) = (rxt(k,399)+rxt(k,404))*y(k,75) + (rxt(k,392)+rxt(k,398) & + +rxt(k,403))*y(k,76) + rxt(k,200)*y(k,111) + mat(k,1162) = rxt(k,176)*y(k,111) + mat(k,238) = rxt(k,152)*y(k,111) + mat(k,393) = (rxt(k,399)+rxt(k,404))*y(k,71) + mat(k,457) = (rxt(k,392)+rxt(k,398)+rxt(k,403))*y(k,71) + rxt(k,203)*y(k,111) + mat(k,664) = .500_r8*rxt(k,328)*y(k,111) + mat(k,37) = rxt(k,383)*y(k,111) + mat(k,1418) = rxt(k,282)*y(k,13) + rxt(k,306)*y(k,16) + rxt(k,307)*y(k,17) & + + rxt(k,243)*y(k,26) + rxt(k,261)*y(k,27) + rxt(k,245)*y(k,28) & + + rxt(k,246)*y(k,29) + rxt(k,284)*y(k,30) + rxt(k,248)*y(k,31) & + + rxt(k,320)*y(k,33) + rxt(k,309)*y(k,34) + rxt(k,289)*y(k,35) & + + rxt(k,290)*y(k,36) + rxt(k,267)*y(k,39) + rxt(k,268)*y(k,40) & + + rxt(k,144)*y(k,63) + rxt(k,145)*y(k,65) + rxt(k,229)*y(k,67) & + + rxt(k,253)*y(k,70) + rxt(k,200)*y(k,71) + rxt(k,176)*y(k,73) & + + rxt(k,152)*y(k,74) + rxt(k,203)*y(k,76) + .500_r8*rxt(k,328) & + *y(k,83) + rxt(k,383)*y(k,95) + 2.000_r8*rxt(k,149)*y(k,111) & + + rxt(k,314)*y(k,117) + rxt(k,318)*y(k,119) + rxt(k,146) & + *y(k,139) + mat(k,293) = rxt(k,314)*y(k,111) + mat(k,220) = rxt(k,318)*y(k,111) + mat(k,1093) = rxt(k,139)*y(k,62) + rxt(k,146)*y(k,111) + end do + end subroutine nlnmat08 + subroutine nlnmat_finit( avec_len, mat, lmat, dti ) + use chem_mods, only : gas_pcnst, rxntot, nzcnt + implicit none +!---------------------------------------------- +! ... dummy arguments +!---------------------------------------------- + integer, intent(in) :: avec_len + real(r8), intent(in) :: dti(veclen) + real(r8), intent(in) :: lmat(veclen,nzcnt) + real(r8), intent(inout) :: mat(veclen,nzcnt) +!---------------------------------------------- +! ... local variables +!---------------------------------------------- + integer :: k +!---------------------------------------------- +! ... complete matrix entries implicit species +!---------------------------------------------- + do k = 1,avec_len + mat(k, 1) = lmat(k, 1) + mat(k, 2) = lmat(k, 2) + mat(k, 3) = lmat(k, 3) + mat(k, 4) = lmat(k, 4) + mat(k, 5) = lmat(k, 5) + mat(k, 6) = lmat(k, 6) + mat(k, 7) = lmat(k, 7) + mat(k, 8) = lmat(k, 8) + mat(k, 9) = lmat(k, 9) + mat(k, 10) = lmat(k, 10) + mat(k, 11) = lmat(k, 11) + mat(k, 12) = lmat(k, 12) + mat(k, 13) = lmat(k, 13) + mat(k, 14) = lmat(k, 14) + mat(k, 15) = lmat(k, 15) + mat(k, 16) = lmat(k, 16) + mat(k, 17) = lmat(k, 17) + mat(k, 18) = lmat(k, 18) + mat(k, 19) = lmat(k, 19) + mat(k, 20) = lmat(k, 20) + mat(k, 21) = lmat(k, 21) + mat(k, 22) = lmat(k, 22) + mat(k, 23) = lmat(k, 23) + mat(k, 24) = lmat(k, 24) + mat(k, 25) = lmat(k, 25) + mat(k, 26) = lmat(k, 26) + mat(k, 27) = lmat(k, 27) + mat(k, 28) = lmat(k, 28) + mat(k, 29) = lmat(k, 29) + mat(k, 30) = lmat(k, 30) + mat(k, 31) = lmat(k, 31) + mat(k, 32) = mat(k, 32) + lmat(k, 32) + mat(k, 35) = mat(k, 35) + lmat(k, 35) + mat(k, 38) = mat(k, 38) + lmat(k, 38) + mat(k, 40) = mat(k, 40) + lmat(k, 40) + mat(k, 41) = mat(k, 41) + lmat(k, 41) + mat(k, 42) = mat(k, 42) + lmat(k, 42) + mat(k, 43) = mat(k, 43) + lmat(k, 43) + mat(k, 45) = mat(k, 45) + lmat(k, 45) + mat(k, 46) = mat(k, 46) + lmat(k, 46) + mat(k, 49) = mat(k, 49) + lmat(k, 49) + mat(k, 53) = mat(k, 53) + lmat(k, 53) + mat(k, 54) = mat(k, 54) + lmat(k, 54) + mat(k, 56) = mat(k, 56) + lmat(k, 56) + mat(k, 57) = mat(k, 57) + lmat(k, 57) + mat(k, 58) = mat(k, 58) + lmat(k, 58) + mat(k, 60) = mat(k, 60) + lmat(k, 60) + mat(k, 61) = mat(k, 61) + lmat(k, 61) + mat(k, 62) = mat(k, 62) + lmat(k, 62) + mat(k, 64) = mat(k, 64) + lmat(k, 64) + mat(k, 65) = lmat(k, 65) + mat(k, 66) = lmat(k, 66) + mat(k, 67) = lmat(k, 67) + mat(k, 68) = lmat(k, 68) + mat(k, 69) = lmat(k, 69) + mat(k, 70) = lmat(k, 70) + mat(k, 71) = mat(k, 71) + lmat(k, 71) + mat(k, 72) = mat(k, 72) + lmat(k, 72) + mat(k, 73) = mat(k, 73) + lmat(k, 73) + mat(k, 75) = mat(k, 75) + lmat(k, 75) + mat(k, 76) = mat(k, 76) + lmat(k, 76) + mat(k, 77) = mat(k, 77) + lmat(k, 77) + mat(k, 78) = mat(k, 78) + lmat(k, 78) + mat(k, 79) = mat(k, 79) + lmat(k, 79) + mat(k, 81) = mat(k, 81) + lmat(k, 81) + mat(k, 82) = mat(k, 82) + lmat(k, 82) + mat(k, 83) = mat(k, 83) + lmat(k, 83) + mat(k, 85) = mat(k, 85) + lmat(k, 85) + mat(k, 86) = mat(k, 86) + lmat(k, 86) + mat(k, 87) = mat(k, 87) + lmat(k, 87) + mat(k, 88) = mat(k, 88) + lmat(k, 88) + mat(k, 90) = mat(k, 90) + lmat(k, 90) + mat(k, 91) = lmat(k, 91) + mat(k, 92) = lmat(k, 92) + mat(k, 93) = mat(k, 93) + lmat(k, 93) + mat(k, 94) = mat(k, 94) + lmat(k, 94) + mat(k, 95) = mat(k, 95) + lmat(k, 95) + mat(k, 96) = mat(k, 96) + lmat(k, 96) + mat(k, 97) = lmat(k, 97) + mat(k, 98) = mat(k, 98) + lmat(k, 98) + mat(k, 100) = mat(k, 100) + lmat(k, 100) + mat(k, 101) = mat(k, 101) + lmat(k, 101) + mat(k, 102) = mat(k, 102) + lmat(k, 102) + mat(k, 104) = lmat(k, 104) + mat(k, 105) = lmat(k, 105) + mat(k, 106) = lmat(k, 106) + mat(k, 107) = mat(k, 107) + lmat(k, 107) + mat(k, 108) = mat(k, 108) + lmat(k, 108) + mat(k, 110) = mat(k, 110) + lmat(k, 110) + mat(k, 112) = mat(k, 112) + lmat(k, 112) + mat(k, 113) = mat(k, 113) + lmat(k, 113) + mat(k, 115) = mat(k, 115) + lmat(k, 115) + mat(k, 116) = mat(k, 116) + lmat(k, 116) + mat(k, 117) = mat(k, 117) + lmat(k, 117) + mat(k, 120) = mat(k, 120) + lmat(k, 120) + mat(k, 122) = mat(k, 122) + lmat(k, 122) + mat(k, 124) = mat(k, 124) + lmat(k, 124) + mat(k, 126) = mat(k, 126) + lmat(k, 126) + mat(k, 131) = mat(k, 131) + lmat(k, 131) + mat(k, 132) = lmat(k, 132) + mat(k, 133) = lmat(k, 133) + mat(k, 135) = mat(k, 135) + lmat(k, 135) + mat(k, 141) = mat(k, 141) + lmat(k, 141) + mat(k, 142) = mat(k, 142) + lmat(k, 142) + mat(k, 145) = mat(k, 145) + lmat(k, 145) + mat(k, 148) = lmat(k, 148) + mat(k, 149) = lmat(k, 149) + mat(k, 150) = lmat(k, 150) + mat(k, 151) = lmat(k, 151) + mat(k, 152) = lmat(k, 152) + mat(k, 153) = lmat(k, 153) + mat(k, 154) = lmat(k, 154) + mat(k, 155) = lmat(k, 155) + mat(k, 156) = lmat(k, 156) + mat(k, 157) = mat(k, 157) + lmat(k, 157) + mat(k, 163) = mat(k, 163) + lmat(k, 163) + mat(k, 168) = mat(k, 168) + lmat(k, 168) + mat(k, 170) = mat(k, 170) + lmat(k, 170) + mat(k, 171) = lmat(k, 171) + mat(k, 172) = mat(k, 172) + lmat(k, 172) + mat(k, 173) = mat(k, 173) + lmat(k, 173) + mat(k, 176) = mat(k, 176) + lmat(k, 176) + mat(k, 177) = lmat(k, 177) + mat(k, 178) = mat(k, 178) + lmat(k, 178) + mat(k, 181) = mat(k, 181) + lmat(k, 181) + mat(k, 182) = lmat(k, 182) + mat(k, 184) = mat(k, 184) + lmat(k, 184) + mat(k, 189) = mat(k, 189) + lmat(k, 189) + mat(k, 193) = lmat(k, 193) + mat(k, 194) = mat(k, 194) + lmat(k, 194) + mat(k, 197) = mat(k, 197) + lmat(k, 197) + mat(k, 199) = lmat(k, 199) + mat(k, 200) = mat(k, 200) + lmat(k, 200) + mat(k, 201) = lmat(k, 201) + mat(k, 203) = mat(k, 203) + lmat(k, 203) + mat(k, 204) = lmat(k, 204) + mat(k, 206) = lmat(k, 206) + mat(k, 207) = mat(k, 207) + lmat(k, 207) + mat(k, 209) = mat(k, 209) + lmat(k, 209) + mat(k, 210) = mat(k, 210) + lmat(k, 210) + mat(k, 212) = mat(k, 212) + lmat(k, 212) + mat(k, 213) = lmat(k, 213) + mat(k, 215) = mat(k, 215) + lmat(k, 215) + mat(k, 217) = lmat(k, 217) + mat(k, 218) = lmat(k, 218) + mat(k, 219) = mat(k, 219) + lmat(k, 219) + mat(k, 221) = mat(k, 221) + lmat(k, 221) + mat(k, 223) = mat(k, 223) + lmat(k, 223) + mat(k, 227) = mat(k, 227) + lmat(k, 227) + mat(k, 230) = lmat(k, 230) + mat(k, 231) = mat(k, 231) + lmat(k, 231) + mat(k, 232) = mat(k, 232) + lmat(k, 232) + mat(k, 234) = mat(k, 234) + lmat(k, 234) + mat(k, 235) = lmat(k, 235) + mat(k, 236) = lmat(k, 236) + mat(k, 237) = mat(k, 237) + lmat(k, 237) + mat(k, 239) = mat(k, 239) + lmat(k, 239) + mat(k, 246) = mat(k, 246) + lmat(k, 246) + mat(k, 248) = mat(k, 248) + lmat(k, 248) + mat(k, 253) = mat(k, 253) + lmat(k, 253) + mat(k, 254) = mat(k, 254) + lmat(k, 254) + mat(k, 255) = lmat(k, 255) + mat(k, 256) = lmat(k, 256) + mat(k, 257) = mat(k, 257) + lmat(k, 257) + mat(k, 258) = lmat(k, 258) + mat(k, 259) = lmat(k, 259) + mat(k, 260) = mat(k, 260) + lmat(k, 260) + mat(k, 261) = lmat(k, 261) + mat(k, 262) = mat(k, 262) + lmat(k, 262) + mat(k, 265) = mat(k, 265) + lmat(k, 265) + mat(k, 266) = mat(k, 266) + lmat(k, 266) + mat(k, 267) = lmat(k, 267) + mat(k, 270) = lmat(k, 270) + mat(k, 271) = lmat(k, 271) + mat(k, 272) = lmat(k, 272) + mat(k, 274) = mat(k, 274) + lmat(k, 274) + mat(k, 275) = lmat(k, 275) + mat(k, 276) = lmat(k, 276) + mat(k, 277) = lmat(k, 277) + mat(k, 279) = lmat(k, 279) + mat(k, 280) = mat(k, 280) + lmat(k, 280) + mat(k, 282) = mat(k, 282) + lmat(k, 282) + mat(k, 286) = mat(k, 286) + lmat(k, 286) + mat(k, 289) = lmat(k, 289) + mat(k, 290) = lmat(k, 290) + mat(k, 291) = lmat(k, 291) + mat(k, 292) = mat(k, 292) + lmat(k, 292) + mat(k, 294) = mat(k, 294) + lmat(k, 294) + mat(k, 295) = lmat(k, 295) + mat(k, 296) = lmat(k, 296) + mat(k, 297) = mat(k, 297) + lmat(k, 297) + mat(k, 298) = lmat(k, 298) + mat(k, 299) = lmat(k, 299) + mat(k, 300) = mat(k, 300) + lmat(k, 300) + mat(k, 302) = mat(k, 302) + lmat(k, 302) + mat(k, 304) = lmat(k, 304) + mat(k, 306) = lmat(k, 306) + mat(k, 311) = mat(k, 311) + lmat(k, 311) + mat(k, 315) = mat(k, 315) + lmat(k, 315) + mat(k, 318) = mat(k, 318) + lmat(k, 318) + mat(k, 320) = mat(k, 320) + lmat(k, 320) + mat(k, 322) = lmat(k, 322) + mat(k, 323) = mat(k, 323) + lmat(k, 323) + mat(k, 325) = mat(k, 325) + lmat(k, 325) + mat(k, 327) = mat(k, 327) + lmat(k, 327) + mat(k, 329) = lmat(k, 329) + mat(k, 334) = mat(k, 334) + lmat(k, 334) + mat(k, 343) = mat(k, 343) + lmat(k, 343) + mat(k, 353) = mat(k, 353) + lmat(k, 353) + mat(k, 358) = mat(k, 358) + lmat(k, 358) + mat(k, 365) = mat(k, 365) + lmat(k, 365) + mat(k, 366) = mat(k, 366) + lmat(k, 366) + mat(k, 368) = mat(k, 368) + lmat(k, 368) + mat(k, 370) = mat(k, 370) + lmat(k, 370) + mat(k, 377) = mat(k, 377) + lmat(k, 377) + mat(k, 386) = mat(k, 386) + lmat(k, 386) + mat(k, 388) = lmat(k, 388) + mat(k, 391) = mat(k, 391) + lmat(k, 391) + mat(k, 394) = mat(k, 394) + lmat(k, 394) + mat(k, 396) = lmat(k, 396) + mat(k, 397) = lmat(k, 397) + mat(k, 401) = mat(k, 401) + lmat(k, 401) + mat(k, 411) = mat(k, 411) + lmat(k, 411) + mat(k, 424) = mat(k, 424) + lmat(k, 424) + mat(k, 433) = mat(k, 433) + lmat(k, 433) + mat(k, 434) = mat(k, 434) + lmat(k, 434) + mat(k, 439) = mat(k, 439) + lmat(k, 439) + mat(k, 442) = mat(k, 442) + lmat(k, 442) + mat(k, 451) = mat(k, 451) + lmat(k, 451) + mat(k, 454) = mat(k, 454) + lmat(k, 454) + mat(k, 455) = mat(k, 455) + lmat(k, 455) + mat(k, 460) = mat(k, 460) + lmat(k, 460) + mat(k, 473) = mat(k, 473) + lmat(k, 473) + mat(k, 490) = mat(k, 490) + lmat(k, 490) + mat(k, 499) = lmat(k, 499) + mat(k, 501) = mat(k, 501) + lmat(k, 501) + mat(k, 505) = lmat(k, 505) + mat(k, 510) = mat(k, 510) + lmat(k, 510) + mat(k, 511) = mat(k, 511) + lmat(k, 511) + mat(k, 518) = mat(k, 518) + lmat(k, 518) + mat(k, 526) = mat(k, 526) + lmat(k, 526) + mat(k, 539) = mat(k, 539) + lmat(k, 539) + mat(k, 548) = mat(k, 548) + lmat(k, 548) + mat(k, 549) = lmat(k, 549) + mat(k, 552) = lmat(k, 552) + mat(k, 556) = lmat(k, 556) + mat(k, 559) = lmat(k, 559) + mat(k, 561) = mat(k, 561) + lmat(k, 561) + mat(k, 572) = mat(k, 572) + lmat(k, 572) + mat(k, 573) = mat(k, 573) + lmat(k, 573) + mat(k, 575) = mat(k, 575) + lmat(k, 575) + mat(k, 576) = lmat(k, 576) + mat(k, 577) = mat(k, 577) + lmat(k, 577) + mat(k, 578) = mat(k, 578) + lmat(k, 578) + mat(k, 579) = mat(k, 579) + lmat(k, 579) + mat(k, 584) = mat(k, 584) + lmat(k, 584) + mat(k, 585) = lmat(k, 585) + mat(k, 587) = mat(k, 587) + lmat(k, 587) + mat(k, 588) = lmat(k, 588) + mat(k, 589) = mat(k, 589) + lmat(k, 589) + mat(k, 590) = lmat(k, 590) + mat(k, 595) = mat(k, 595) + lmat(k, 595) + mat(k, 607) = mat(k, 607) + lmat(k, 607) + mat(k, 608) = lmat(k, 608) + mat(k, 610) = mat(k, 610) + lmat(k, 610) + mat(k, 611) = mat(k, 611) + lmat(k, 611) + mat(k, 613) = mat(k, 613) + lmat(k, 613) + mat(k, 615) = lmat(k, 615) + mat(k, 616) = lmat(k, 616) + mat(k, 617) = mat(k, 617) + lmat(k, 617) + mat(k, 623) = mat(k, 623) + lmat(k, 623) + mat(k, 640) = mat(k, 640) + lmat(k, 640) + mat(k, 641) = lmat(k, 641) + mat(k, 643) = lmat(k, 643) + mat(k, 645) = lmat(k, 645) + mat(k, 649) = mat(k, 649) + lmat(k, 649) + mat(k, 653) = mat(k, 653) + lmat(k, 653) + mat(k, 654) = mat(k, 654) + lmat(k, 654) + mat(k, 657) = mat(k, 657) + lmat(k, 657) + mat(k, 658) = mat(k, 658) + lmat(k, 658) + mat(k, 660) = mat(k, 660) + lmat(k, 660) + mat(k, 661) = mat(k, 661) + lmat(k, 661) + mat(k, 671) = mat(k, 671) + lmat(k, 671) + mat(k, 682) = mat(k, 682) + lmat(k, 682) + mat(k, 683) = mat(k, 683) + lmat(k, 683) + mat(k, 684) = mat(k, 684) + lmat(k, 684) + mat(k, 686) = lmat(k, 686) + mat(k, 702) = mat(k, 702) + lmat(k, 702) + mat(k, 726) = mat(k, 726) + lmat(k, 726) + mat(k, 739) = lmat(k, 739) + mat(k, 741) = mat(k, 741) + lmat(k, 741) + mat(k, 744) = mat(k, 744) + lmat(k, 744) + mat(k, 746) = mat(k, 746) + lmat(k, 746) + mat(k, 754) = lmat(k, 754) + mat(k, 765) = mat(k, 765) + lmat(k, 765) + mat(k, 793) = mat(k, 793) + lmat(k, 793) + mat(k, 814) = mat(k, 814) + lmat(k, 814) + mat(k, 815) = mat(k, 815) + lmat(k, 815) + mat(k, 821) = lmat(k, 821) + mat(k, 826) = mat(k, 826) + lmat(k, 826) + mat(k, 839) = lmat(k, 839) + mat(k, 841) = mat(k, 841) + lmat(k, 841) + mat(k, 851) = mat(k, 851) + lmat(k, 851) + mat(k, 860) = mat(k, 860) + lmat(k, 860) + mat(k, 868) = mat(k, 868) + lmat(k, 868) + mat(k, 871) = mat(k, 871) + lmat(k, 871) + mat(k, 876) = mat(k, 876) + lmat(k, 876) + mat(k, 892) = lmat(k, 892) + mat(k, 893) = mat(k, 893) + lmat(k, 893) + mat(k, 898) = mat(k, 898) + lmat(k, 898) + mat(k, 899) = mat(k, 899) + lmat(k, 899) + mat(k, 900) = lmat(k, 900) + mat(k, 909) = mat(k, 909) + lmat(k, 909) + mat(k, 916) = mat(k, 916) + lmat(k, 916) + mat(k, 919) = mat(k, 919) + lmat(k, 919) + mat(k, 930) = mat(k, 930) + lmat(k, 930) + mat(k, 932) = mat(k, 932) + lmat(k, 932) + mat(k, 943) = mat(k, 943) + lmat(k, 943) + mat(k, 959) = mat(k, 959) + lmat(k, 959) + mat(k, 968) = mat(k, 968) + lmat(k, 968) + mat(k, 970) = mat(k, 970) + lmat(k, 970) + mat(k, 996) = mat(k, 996) + lmat(k, 996) + mat(k,1000) = mat(k,1000) + lmat(k,1000) + mat(k,1005) = mat(k,1005) + lmat(k,1005) + mat(k,1006) = mat(k,1006) + lmat(k,1006) + mat(k,1007) = mat(k,1007) + lmat(k,1007) + mat(k,1012) = mat(k,1012) + lmat(k,1012) + mat(k,1014) = lmat(k,1014) + mat(k,1021) = mat(k,1021) + lmat(k,1021) + mat(k,1033) = mat(k,1033) + lmat(k,1033) + mat(k,1081) = mat(k,1081) + lmat(k,1081) + mat(k,1093) = mat(k,1093) + lmat(k,1093) + mat(k,1094) = mat(k,1094) + lmat(k,1094) + mat(k,1122) = mat(k,1122) + lmat(k,1122) + mat(k,1128) = mat(k,1128) + lmat(k,1128) + mat(k,1132) = mat(k,1132) + lmat(k,1132) + mat(k,1135) = mat(k,1135) + lmat(k,1135) + mat(k,1148) = lmat(k,1148) + mat(k,1152) = mat(k,1152) + lmat(k,1152) + mat(k,1157) = mat(k,1157) + lmat(k,1157) + mat(k,1194) = mat(k,1194) + lmat(k,1194) + mat(k,1232) = mat(k,1232) + lmat(k,1232) + mat(k,1235) = mat(k,1235) + lmat(k,1235) + mat(k,1239) = mat(k,1239) + lmat(k,1239) + mat(k,1241) = mat(k,1241) + lmat(k,1241) + mat(k,1245) = mat(k,1245) + lmat(k,1245) + mat(k,1246) = mat(k,1246) + lmat(k,1246) + mat(k,1284) = mat(k,1284) + lmat(k,1284) + mat(k,1287) = mat(k,1287) + lmat(k,1287) + mat(k,1323) = mat(k,1323) + lmat(k,1323) + mat(k,1413) = mat(k,1413) + lmat(k,1413) + mat(k,1422) = mat(k,1422) + lmat(k,1422) + mat(k,1423) = mat(k,1423) + lmat(k,1423) + mat(k,1433) = mat(k,1433) + lmat(k,1433) + mat(k,1435) = lmat(k,1435) + mat(k,1459) = mat(k,1459) + lmat(k,1459) + mat(k,1467) = mat(k,1467) + lmat(k,1467) + mat(k,1475) = lmat(k,1475) + mat(k,1477) = mat(k,1477) + lmat(k,1477) + mat(k,1507) = mat(k,1507) + lmat(k,1507) + mat(k,1508) = mat(k,1508) + lmat(k,1508) + mat(k,1514) = lmat(k,1514) + mat(k,1515) = lmat(k,1515) + mat(k,1516) = mat(k,1516) + lmat(k,1516) + mat(k,1523) = mat(k,1523) + lmat(k,1523) + mat(k,1527) = mat(k,1527) + lmat(k,1527) + mat(k,1531) = mat(k,1531) + lmat(k,1531) + mat(k,1532) = lmat(k,1532) + mat(k,1534) = mat(k,1534) + lmat(k,1534) + mat(k,1535) = mat(k,1535) + lmat(k,1535) + mat(k,1536) = mat(k,1536) + lmat(k,1536) + mat(k,1556) = mat(k,1556) + lmat(k,1556) + mat(k,1563) = lmat(k,1563) + mat(k,1577) = mat(k,1577) + lmat(k,1577) + mat(k,1579) = mat(k,1579) + lmat(k,1579) + mat(k,1580) = lmat(k,1580) + mat(k,1583) = lmat(k,1583) + mat(k,1584) = mat(k,1584) + lmat(k,1584) + mat(k, 118) = 0._r8 + mat(k, 143) = 0._r8 + mat(k, 378) = 0._r8 + mat(k, 379) = 0._r8 + mat(k, 383) = 0._r8 + mat(k, 390) = 0._r8 + mat(k, 402) = 0._r8 + mat(k, 408) = 0._r8 + mat(k, 410) = 0._r8 + mat(k, 431) = 0._r8 + mat(k, 445) = 0._r8 + mat(k, 446) = 0._r8 + mat(k, 461) = 0._r8 + mat(k, 463) = 0._r8 + mat(k, 469) = 0._r8 + mat(k, 471) = 0._r8 + mat(k, 474) = 0._r8 + mat(k, 481) = 0._r8 + mat(k, 488) = 0._r8 + mat(k, 503) = 0._r8 + mat(k, 513) = 0._r8 + mat(k, 523) = 0._r8 + mat(k, 529) = 0._r8 + mat(k, 530) = 0._r8 + mat(k, 531) = 0._r8 + mat(k, 534) = 0._r8 + mat(k, 537) = 0._r8 + mat(k, 538) = 0._r8 + mat(k, 541) = 0._r8 + mat(k, 542) = 0._r8 + mat(k, 553) = 0._r8 + mat(k, 557) = 0._r8 + mat(k, 560) = 0._r8 + mat(k, 562) = 0._r8 + mat(k, 563) = 0._r8 + mat(k, 566) = 0._r8 + mat(k, 582) = 0._r8 + mat(k, 586) = 0._r8 + mat(k, 605) = 0._r8 + mat(k, 622) = 0._r8 + mat(k, 626) = 0._r8 + mat(k, 627) = 0._r8 + mat(k, 629) = 0._r8 + mat(k, 630) = 0._r8 + mat(k, 637) = 0._r8 + mat(k, 639) = 0._r8 + mat(k, 659) = 0._r8 + mat(k, 680) = 0._r8 + mat(k, 685) = 0._r8 + mat(k, 698) = 0._r8 + mat(k, 700) = 0._r8 + mat(k, 703) = 0._r8 + mat(k, 705) = 0._r8 + mat(k, 707) = 0._r8 + mat(k, 711) = 0._r8 + mat(k, 712) = 0._r8 + mat(k, 715) = 0._r8 + mat(k, 717) = 0._r8 + mat(k, 724) = 0._r8 + mat(k, 727) = 0._r8 + mat(k, 729) = 0._r8 + mat(k, 733) = 0._r8 + mat(k, 736) = 0._r8 + mat(k, 738) = 0._r8 + mat(k, 745) = 0._r8 + mat(k, 748) = 0._r8 + mat(k, 749) = 0._r8 + mat(k, 753) = 0._r8 + mat(k, 755) = 0._r8 + mat(k, 757) = 0._r8 + mat(k, 758) = 0._r8 + mat(k, 759) = 0._r8 + mat(k, 763) = 0._r8 + mat(k, 764) = 0._r8 + mat(k, 772) = 0._r8 + mat(k, 777) = 0._r8 + mat(k, 795) = 0._r8 + mat(k, 800) = 0._r8 + mat(k, 802) = 0._r8 + mat(k, 805) = 0._r8 + mat(k, 806) = 0._r8 + mat(k, 811) = 0._r8 + mat(k, 812) = 0._r8 + mat(k, 813) = 0._r8 + mat(k, 816) = 0._r8 + mat(k, 817) = 0._r8 + mat(k, 818) = 0._r8 + mat(k, 819) = 0._r8 + mat(k, 820) = 0._r8 + mat(k, 822) = 0._r8 + mat(k, 823) = 0._r8 + mat(k, 828) = 0._r8 + mat(k, 829) = 0._r8 + mat(k, 830) = 0._r8 + mat(k, 835) = 0._r8 + mat(k, 847) = 0._r8 + mat(k, 854) = 0._r8 + mat(k, 861) = 0._r8 + mat(k, 862) = 0._r8 + mat(k, 864) = 0._r8 + mat(k, 866) = 0._r8 + mat(k, 875) = 0._r8 + mat(k, 879) = 0._r8 + mat(k, 883) = 0._r8 + mat(k, 884) = 0._r8 + mat(k, 885) = 0._r8 + mat(k, 886) = 0._r8 + mat(k, 887) = 0._r8 + mat(k, 888) = 0._r8 + mat(k, 905) = 0._r8 + mat(k, 906) = 0._r8 + mat(k, 908) = 0._r8 + mat(k, 910) = 0._r8 + mat(k, 911) = 0._r8 + mat(k, 912) = 0._r8 + mat(k, 913) = 0._r8 + mat(k, 917) = 0._r8 + mat(k, 918) = 0._r8 + mat(k, 922) = 0._r8 + mat(k, 929) = 0._r8 + mat(k, 935) = 0._r8 + mat(k, 937) = 0._r8 + mat(k, 938) = 0._r8 + mat(k, 939) = 0._r8 + mat(k, 940) = 0._r8 + mat(k, 945) = 0._r8 + mat(k, 946) = 0._r8 + mat(k, 963) = 0._r8 + mat(k, 964) = 0._r8 + mat(k, 966) = 0._r8 + mat(k, 967) = 0._r8 + mat(k, 972) = 0._r8 + mat(k, 973) = 0._r8 + mat(k, 980) = 0._r8 + mat(k, 984) = 0._r8 + mat(k, 985) = 0._r8 + mat(k, 986) = 0._r8 + mat(k, 989) = 0._r8 + mat(k, 991) = 0._r8 + mat(k, 992) = 0._r8 + mat(k, 997) = 0._r8 + mat(k,1001) = 0._r8 + mat(k,1003) = 0._r8 + mat(k,1004) = 0._r8 + mat(k,1008) = 0._r8 + mat(k,1009) = 0._r8 + mat(k,1010) = 0._r8 + mat(k,1013) = 0._r8 + mat(k,1017) = 0._r8 + mat(k,1018) = 0._r8 + mat(k,1019) = 0._r8 + mat(k,1020) = 0._r8 + mat(k,1023) = 0._r8 + mat(k,1025) = 0._r8 + mat(k,1027) = 0._r8 + mat(k,1031) = 0._r8 + mat(k,1032) = 0._r8 + mat(k,1042) = 0._r8 + mat(k,1051) = 0._r8 + mat(k,1060) = 0._r8 + mat(k,1061) = 0._r8 + mat(k,1062) = 0._r8 + mat(k,1063) = 0._r8 + mat(k,1066) = 0._r8 + mat(k,1083) = 0._r8 + mat(k,1086) = 0._r8 + mat(k,1091) = 0._r8 + mat(k,1100) = 0._r8 + mat(k,1101) = 0._r8 + mat(k,1104) = 0._r8 + mat(k,1105) = 0._r8 + mat(k,1106) = 0._r8 + mat(k,1107) = 0._r8 + mat(k,1112) = 0._r8 + mat(k,1114) = 0._r8 + mat(k,1115) = 0._r8 + mat(k,1117) = 0._r8 + mat(k,1129) = 0._r8 + mat(k,1139) = 0._r8 + mat(k,1142) = 0._r8 + mat(k,1143) = 0._r8 + mat(k,1144) = 0._r8 + mat(k,1145) = 0._r8 + mat(k,1146) = 0._r8 + mat(k,1147) = 0._r8 + mat(k,1149) = 0._r8 + mat(k,1150) = 0._r8 + mat(k,1151) = 0._r8 + mat(k,1153) = 0._r8 + mat(k,1155) = 0._r8 + mat(k,1156) = 0._r8 + mat(k,1158) = 0._r8 + mat(k,1159) = 0._r8 + mat(k,1160) = 0._r8 + mat(k,1161) = 0._r8 + mat(k,1187) = 0._r8 + mat(k,1192) = 0._r8 + mat(k,1193) = 0._r8 + mat(k,1195) = 0._r8 + mat(k,1196) = 0._r8 + mat(k,1198) = 0._r8 + mat(k,1199) = 0._r8 + mat(k,1201) = 0._r8 + mat(k,1202) = 0._r8 + mat(k,1203) = 0._r8 + mat(k,1210) = 0._r8 + mat(k,1215) = 0._r8 + mat(k,1229) = 0._r8 + mat(k,1230) = 0._r8 + mat(k,1231) = 0._r8 + mat(k,1233) = 0._r8 + mat(k,1234) = 0._r8 + mat(k,1238) = 0._r8 + mat(k,1240) = 0._r8 + mat(k,1242) = 0._r8 + mat(k,1243) = 0._r8 + mat(k,1247) = 0._r8 + mat(k,1248) = 0._r8 + mat(k,1249) = 0._r8 + mat(k,1277) = 0._r8 + mat(k,1281) = 0._r8 + mat(k,1283) = 0._r8 + mat(k,1300) = 0._r8 + mat(k,1304) = 0._r8 + mat(k,1305) = 0._r8 + mat(k,1307) = 0._r8 + mat(k,1308) = 0._r8 + mat(k,1313) = 0._r8 + mat(k,1315) = 0._r8 + mat(k,1319) = 0._r8 + mat(k,1322) = 0._r8 + mat(k,1325) = 0._r8 + mat(k,1326) = 0._r8 + mat(k,1329) = 0._r8 + mat(k,1377) = 0._r8 + mat(k,1411) = 0._r8 + mat(k,1427) = 0._r8 + mat(k,1434) = 0._r8 + mat(k,1437) = 0._r8 + mat(k,1441) = 0._r8 + mat(k,1453) = 0._r8 + mat(k,1454) = 0._r8 + mat(k,1456) = 0._r8 + mat(k,1461) = 0._r8 + mat(k,1463) = 0._r8 + mat(k,1476) = 0._r8 + mat(k,1501) = 0._r8 + mat(k,1504) = 0._r8 + mat(k,1509) = 0._r8 + mat(k,1510) = 0._r8 + mat(k,1511) = 0._r8 + mat(k,1518) = 0._r8 + mat(k,1519) = 0._r8 + mat(k,1520) = 0._r8 + mat(k,1521) = 0._r8 + mat(k,1522) = 0._r8 + mat(k,1525) = 0._r8 + mat(k,1526) = 0._r8 + mat(k,1528) = 0._r8 + mat(k,1533) = 0._r8 + mat(k,1538) = 0._r8 + mat(k,1539) = 0._r8 + mat(k,1541) = 0._r8 + mat(k,1542) = 0._r8 + mat(k,1543) = 0._r8 + mat(k,1544) = 0._r8 + mat(k,1547) = 0._r8 + mat(k,1548) = 0._r8 + mat(k,1549) = 0._r8 + mat(k,1550) = 0._r8 + mat(k,1551) = 0._r8 + mat(k,1554) = 0._r8 + mat(k,1555) = 0._r8 + mat(k,1562) = 0._r8 + mat(k,1564) = 0._r8 + mat(k,1565) = 0._r8 + mat(k,1566) = 0._r8 + mat(k,1567) = 0._r8 + mat(k,1568) = 0._r8 + mat(k,1569) = 0._r8 + mat(k,1570) = 0._r8 + mat(k,1571) = 0._r8 + mat(k,1572) = 0._r8 + mat(k,1573) = 0._r8 + mat(k,1574) = 0._r8 + mat(k,1575) = 0._r8 + mat(k,1576) = 0._r8 + mat(k,1578) = 0._r8 + mat(k,1581) = 0._r8 + mat(k,1582) = 0._r8 + mat(k, 1) = mat(k, 1) - dti(k) + mat(k, 2) = mat(k, 2) - dti(k) + mat(k, 3) = mat(k, 3) - dti(k) + mat(k, 4) = mat(k, 4) - dti(k) + mat(k, 5) = mat(k, 5) - dti(k) + mat(k, 6) = mat(k, 6) - dti(k) + mat(k, 7) = mat(k, 7) - dti(k) + mat(k, 8) = mat(k, 8) - dti(k) + mat(k, 9) = mat(k, 9) - dti(k) + mat(k, 10) = mat(k, 10) - dti(k) + mat(k, 11) = mat(k, 11) - dti(k) + mat(k, 12) = mat(k, 12) - dti(k) + mat(k, 13) = mat(k, 13) - dti(k) + mat(k, 14) = mat(k, 14) - dti(k) + mat(k, 15) = mat(k, 15) - dti(k) + mat(k, 16) = mat(k, 16) - dti(k) + mat(k, 17) = mat(k, 17) - dti(k) + mat(k, 18) = mat(k, 18) - dti(k) + mat(k, 19) = mat(k, 19) - dti(k) + mat(k, 20) = mat(k, 20) - dti(k) + mat(k, 21) = mat(k, 21) - dti(k) + mat(k, 22) = mat(k, 22) - dti(k) + mat(k, 23) = mat(k, 23) - dti(k) + mat(k, 24) = mat(k, 24) - dti(k) + mat(k, 25) = mat(k, 25) - dti(k) + mat(k, 26) = mat(k, 26) - dti(k) + mat(k, 28) = mat(k, 28) - dti(k) + mat(k, 29) = mat(k, 29) - dti(k) + mat(k, 32) = mat(k, 32) - dti(k) + mat(k, 35) = mat(k, 35) - dti(k) + mat(k, 38) = mat(k, 38) - dti(k) + mat(k, 41) = mat(k, 41) - dti(k) + mat(k, 45) = mat(k, 45) - dti(k) + mat(k, 49) = mat(k, 49) - dti(k) + mat(k, 53) = mat(k, 53) - dti(k) + mat(k, 57) = mat(k, 57) - dti(k) + mat(k, 61) = mat(k, 61) - dti(k) + mat(k, 65) = mat(k, 65) - dti(k) + mat(k, 68) = mat(k, 68) - dti(k) + mat(k, 71) = mat(k, 71) - dti(k) + mat(k, 76) = mat(k, 76) - dti(k) + mat(k, 81) = mat(k, 81) - dti(k) + mat(k, 86) = mat(k, 86) - dti(k) + mat(k, 91) = mat(k, 91) - dti(k) + mat(k, 93) = mat(k, 93) - dti(k) + mat(k, 96) = mat(k, 96) - dti(k) + mat(k, 98) = mat(k, 98) - dti(k) + mat(k, 101) = mat(k, 101) - dti(k) + mat(k, 104) = mat(k, 104) - dti(k) + mat(k, 107) = mat(k, 107) - dti(k) + mat(k, 112) = mat(k, 112) - dti(k) + mat(k, 117) = mat(k, 117) - dti(k) + mat(k, 122) = mat(k, 122) - dti(k) + mat(k, 126) = mat(k, 126) - dti(k) + mat(k, 131) = mat(k, 131) - dti(k) + mat(k, 135) = mat(k, 135) - dti(k) + mat(k, 142) = mat(k, 142) - dti(k) + mat(k, 148) = mat(k, 148) - dti(k) + mat(k, 151) = mat(k, 151) - dti(k) + mat(k, 157) = mat(k, 157) - dti(k) + mat(k, 163) = mat(k, 163) - dti(k) + mat(k, 168) = mat(k, 168) - dti(k) + mat(k, 173) = mat(k, 173) - dti(k) + mat(k, 178) = mat(k, 178) - dti(k) + mat(k, 181) = mat(k, 181) - dti(k) + mat(k, 189) = mat(k, 189) - dti(k) + mat(k, 197) = mat(k, 197) - dti(k) + mat(k, 203) = mat(k, 203) - dti(k) + mat(k, 209) = mat(k, 209) - dti(k) + mat(k, 215) = mat(k, 215) - dti(k) + mat(k, 221) = mat(k, 221) - dti(k) + mat(k, 227) = mat(k, 227) - dti(k) + mat(k, 232) = mat(k, 232) - dti(k) + mat(k, 239) = mat(k, 239) - dti(k) + mat(k, 246) = mat(k, 246) - dti(k) + mat(k, 253) = mat(k, 253) - dti(k) + mat(k, 260) = mat(k, 260) - dti(k) + mat(k, 266) = mat(k, 266) - dti(k) + mat(k, 274) = mat(k, 274) - dti(k) + mat(k, 282) = mat(k, 282) - dti(k) + mat(k, 286) = mat(k, 286) - dti(k) + mat(k, 294) = mat(k, 294) - dti(k) + mat(k, 302) = mat(k, 302) - dti(k) + mat(k, 311) = mat(k, 311) - dti(k) + mat(k, 318) = mat(k, 318) - dti(k) + mat(k, 325) = mat(k, 325) - dti(k) + mat(k, 334) = mat(k, 334) - dti(k) + mat(k, 343) = mat(k, 343) - dti(k) + mat(k, 353) = mat(k, 353) - dti(k) + mat(k, 358) = mat(k, 358) - dti(k) + mat(k, 365) = mat(k, 365) - dti(k) + mat(k, 370) = mat(k, 370) - dti(k) + mat(k, 377) = mat(k, 377) - dti(k) + mat(k, 386) = mat(k, 386) - dti(k) + mat(k, 394) = mat(k, 394) - dti(k) + mat(k, 401) = mat(k, 401) - dti(k) + mat(k, 411) = mat(k, 411) - dti(k) + mat(k, 424) = mat(k, 424) - dti(k) + mat(k, 433) = mat(k, 433) - dti(k) + mat(k, 442) = mat(k, 442) - dti(k) + mat(k, 451) = mat(k, 451) - dti(k) + mat(k, 460) = mat(k, 460) - dti(k) + mat(k, 473) = mat(k, 473) - dti(k) + mat(k, 490) = mat(k, 490) - dti(k) + mat(k, 501) = mat(k, 501) - dti(k) + mat(k, 511) = mat(k, 511) - dti(k) + mat(k, 526) = mat(k, 526) - dti(k) + mat(k, 539) = mat(k, 539) - dti(k) + mat(k, 548) = mat(k, 548) - dti(k) + mat(k, 561) = mat(k, 561) - dti(k) + mat(k, 573) = mat(k, 573) - dti(k) + mat(k, 584) = mat(k, 584) - dti(k) + mat(k, 595) = mat(k, 595) - dti(k) + mat(k, 607) = mat(k, 607) - dti(k) + mat(k, 613) = mat(k, 613) - dti(k) + mat(k, 623) = mat(k, 623) - dti(k) + mat(k, 640) = mat(k, 640) - dti(k) + mat(k, 649) = mat(k, 649) - dti(k) + mat(k, 654) = mat(k, 654) - dti(k) + mat(k, 671) = mat(k, 671) - dti(k) + mat(k, 683) = mat(k, 683) - dti(k) + mat(k, 702) = mat(k, 702) - dti(k) + mat(k, 726) = mat(k, 726) - dti(k) + mat(k, 744) = mat(k, 744) - dti(k) + mat(k, 765) = mat(k, 765) - dti(k) + mat(k, 793) = mat(k, 793) - dti(k) + mat(k, 815) = mat(k, 815) - dti(k) + mat(k, 826) = mat(k, 826) - dti(k) + mat(k, 841) = mat(k, 841) - dti(k) + mat(k, 860) = mat(k, 860) - dti(k) + mat(k, 876) = mat(k, 876) - dti(k) + mat(k, 909) = mat(k, 909) - dti(k) + mat(k, 932) = mat(k, 932) - dti(k) + mat(k, 959) = mat(k, 959) - dti(k) + mat(k, 996) = mat(k, 996) - dti(k) + mat(k,1021) = mat(k,1021) - dti(k) + mat(k,1081) = mat(k,1081) - dti(k) + mat(k,1128) = mat(k,1128) - dti(k) + mat(k,1152) = mat(k,1152) - dti(k) + mat(k,1194) = mat(k,1194) - dti(k) + mat(k,1241) = mat(k,1241) - dti(k) + mat(k,1284) = mat(k,1284) - dti(k) + mat(k,1323) = mat(k,1323) - dti(k) + mat(k,1413) = mat(k,1413) - dti(k) + mat(k,1459) = mat(k,1459) - dti(k) + mat(k,1508) = mat(k,1508) - dti(k) + mat(k,1534) = mat(k,1534) - dti(k) + mat(k,1556) = mat(k,1556) - dti(k) + mat(k,1584) = mat(k,1584) - dti(k) + end do + end subroutine nlnmat_finit + subroutine nlnmat( avec_len, mat, y, rxt, lmat, dti ) + use chem_mods, only : gas_pcnst, rxntot, nzcnt + implicit none +!---------------------------------------------- +! ... dummy arguments +!---------------------------------------------- + integer, intent(in) :: avec_len + real(r8), intent(in) :: dti(veclen) + real(r8), intent(in) :: lmat(veclen,nzcnt) + real(r8), intent(in) :: y(veclen,gas_pcnst) + real(r8), intent(in) :: rxt(veclen,rxntot) + real(r8), intent(inout) :: mat(veclen,nzcnt) + call nlnmat01( avec_len, mat, y, rxt ) + call nlnmat02( avec_len, mat, y, rxt ) + call nlnmat03( avec_len, mat, y, rxt ) + call nlnmat04( avec_len, mat, y, rxt ) + call nlnmat05( avec_len, mat, y, rxt ) + call nlnmat06( avec_len, mat, y, rxt ) + call nlnmat07( avec_len, mat, y, rxt ) + call nlnmat08( avec_len, mat, y, rxt ) + call nlnmat_finit( avec_len, mat, lmat, dti ) + end subroutine nlnmat + end module mo_nln_matrix diff --git a/src/chemistry/pp_waccm_t4ma_mam5/mo_phtadj.F90 b/src/chemistry/pp_waccm_t4ma_mam5/mo_phtadj.F90 new file mode 100644 index 0000000000..f73ca004cd --- /dev/null +++ b/src/chemistry/pp_waccm_t4ma_mam5/mo_phtadj.F90 @@ -0,0 +1,33 @@ + module mo_phtadj + private + public :: phtadj + contains + subroutine phtadj( p_rate, inv, m, ncol, nlev ) + use chem_mods, only : nfs, phtcnt + use shr_kind_mod, only : r8 => shr_kind_r8 + implicit none +!-------------------------------------------------------------------- +! ... dummy arguments +!-------------------------------------------------------------------- + integer, intent(in) :: ncol, nlev + real(r8), intent(in) :: inv(ncol,nlev,max(1,nfs)) + real(r8), intent(in) :: m(ncol,nlev) + real(r8), intent(inout) :: p_rate(ncol,nlev,max(1,phtcnt)) +!-------------------------------------------------------------------- +! ... local variables +!-------------------------------------------------------------------- + integer :: k + real(r8) :: im(ncol,nlev) + do k = 1,nlev + im(:ncol,k) = 1._r8 / m(:ncol,k) + p_rate(:,k, 84) = p_rate(:,k, 84) * inv(:,k, 2) * im(:,k) + p_rate(:,k, 85) = p_rate(:,k, 85) * inv(:,k, 2) * im(:,k) + p_rate(:,k, 86) = p_rate(:,k, 86) * inv(:,k, 2) * im(:,k) + p_rate(:,k, 87) = p_rate(:,k, 87) * inv(:,k, 2) * im(:,k) + p_rate(:,k, 88) = p_rate(:,k, 88) * inv(:,k, 2) * im(:,k) + p_rate(:,k, 89) = p_rate(:,k, 89) * inv(:,k, 2) * im(:,k) + p_rate(:,k, 90) = p_rate(:,k, 90) * inv(:,k, 2) * im(:,k) + p_rate(:,k, 91) = p_rate(:,k, 91) * inv(:,k, 2) * im(:,k) + end do + end subroutine phtadj + end module mo_phtadj diff --git a/src/chemistry/pp_waccm_t4ma_mam5/mo_prod_loss.F90 b/src/chemistry/pp_waccm_t4ma_mam5/mo_prod_loss.F90 new file mode 100644 index 0000000000..924fa2a671 --- /dev/null +++ b/src/chemistry/pp_waccm_t4ma_mam5/mo_prod_loss.F90 @@ -0,0 +1,881 @@ + module mo_prod_loss + use shr_kind_mod, only : r8 => shr_kind_r8 + use chem_mods, only : veclen + private + public :: exp_prod_loss + public :: imp_prod_loss + contains + subroutine exp_prod_loss( ofl, ofu, prod, loss, y, & + rxt, het_rates, chnkpnts ) + use chem_mods, only : gas_pcnst,rxntot,clscnt1 + implicit none +!-------------------------------------------------------------------- +! ... dummy args +!-------------------------------------------------------------------- + integer, intent(in) :: ofl, ofu, chnkpnts + real(r8), dimension(chnkpnts,max(1,clscnt1)), intent(out) :: & + prod, & + loss + real(r8), intent(in) :: y(chnkpnts,gas_pcnst) + real(r8), intent(in) :: rxt(chnkpnts,rxntot) + real(r8), intent(in) :: het_rates(chnkpnts,gas_pcnst) +!-------------------------------------------------------------------- +! ... local variables +!-------------------------------------------------------------------- + integer :: k +!-------------------------------------------------------------------- +! ... loss and production for Explicit method +!-------------------------------------------------------------------- + do k = ofl,ofu + loss(k,1) = ( + het_rates(k,136))* y(k,136) + prod(k,1) = 0._r8 + loss(k,2) = ( + het_rates(k,137))* y(k,137) + prod(k,2) = 0._r8 + end do + end subroutine exp_prod_loss + subroutine imp_prod_loss( avec_len, prod, loss, y, & + rxt, het_rates ) + use chem_mods, only : gas_pcnst,rxntot,clscnt4 + implicit none +!-------------------------------------------------------------------- +! ... dummy args +!-------------------------------------------------------------------- + integer, intent(in) :: avec_len + real(r8), dimension(veclen,clscnt4), intent(out) :: & + prod, & + loss + real(r8), intent(in) :: y(veclen,gas_pcnst) + real(r8), intent(in) :: rxt(veclen,rxntot) + real(r8), intent(in) :: het_rates(veclen,gas_pcnst) +!-------------------------------------------------------------------- +! ... local variables +!-------------------------------------------------------------------- + integer :: k +!-------------------------------------------------------------------- +! ... loss and production for Implicit method +!-------------------------------------------------------------------- + do k = 1,avec_len + loss(k,1) = ( + het_rates(k,1))* y(k,1) + prod(k,1) = 0._r8 + loss(k,2) = ( + het_rates(k,2))* y(k,2) + prod(k,2) = 0._r8 + loss(k,29) = (rxt(k,341)* y(k,111) + het_rates(k,3))* y(k,3) + prod(k,29) = 0._r8 + loss(k,131) = (rxt(k,215)* y(k,27) +rxt(k,217)* y(k,108) +rxt(k,216) & + * y(k,139) + het_rates(k,4))* y(k,4) + prod(k,131) = (rxt(k,48) +2.000_r8*rxt(k,218)*y(k,6) +rxt(k,219)*y(k,45) + & + rxt(k,220)*y(k,45) +rxt(k,223)*y(k,97) +rxt(k,226)*y(k,106) + & + rxt(k,227)*y(k,111) +rxt(k,373)*y(k,122))*y(k,6) & + + (rxt(k,205)*y(k,19) +rxt(k,231)*y(k,20) + & + 3.000_r8*rxt(k,232)*y(k,41) +2.000_r8*rxt(k,233)*y(k,64) + & + rxt(k,234)*y(k,67) +2.000_r8*rxt(k,254)*y(k,26) +rxt(k,255)*y(k,28)) & + *y(k,144) + (rxt(k,229)*y(k,67) +2.000_r8*rxt(k,243)*y(k,26) + & + rxt(k,245)*y(k,28) +3.000_r8*rxt(k,250)*y(k,41))*y(k,111) & + + (2.000_r8*rxt(k,242)*y(k,26) +rxt(k,244)*y(k,28) + & + 3.000_r8*rxt(k,249)*y(k,41))*y(k,42) + (rxt(k,72) + & + rxt(k,228)*y(k,106))*y(k,67) +rxt(k,47)*y(k,5) +rxt(k,50)*y(k,7) & + +rxt(k,52)*y(k,19) +rxt(k,53)*y(k,20) +2.000_r8*rxt(k,59)*y(k,26) & + +rxt(k,60)*y(k,28) +3.000_r8*rxt(k,63)*y(k,41) +2.000_r8*rxt(k,71) & + *y(k,64) +rxt(k,78)*y(k,75) + loss(k,49) = ( + rxt(k,47) + het_rates(k,5))* y(k,5) + prod(k,49) = (rxt(k,399)*y(k,75) +rxt(k,404)*y(k,75))*y(k,71) & + +rxt(k,221)*y(k,45)*y(k,6) + loss(k,133) = (2._r8*rxt(k,218)* y(k,6) + (rxt(k,219) +rxt(k,220) + & + rxt(k,221))* y(k,45) +rxt(k,223)* y(k,97) +rxt(k,224)* y(k,98) & + +rxt(k,226)* y(k,106) +rxt(k,227)* y(k,111) +rxt(k,373)* y(k,122) & + +rxt(k,222)* y(k,139) + rxt(k,48) + het_rates(k,6))* y(k,6) + prod(k,133) = (rxt(k,49) +rxt(k,225)*y(k,106))*y(k,7) +rxt(k,217)*y(k,108) & + *y(k,4) +rxt(k,235)*y(k,144)*y(k,67) +rxt(k,230)*y(k,106)*y(k,75) + loss(k,82) = (rxt(k,225)* y(k,106) + rxt(k,49) + rxt(k,50) + rxt(k,393) & + + rxt(k,396) + rxt(k,401) + het_rates(k,7))* y(k,7) + prod(k,82) =rxt(k,224)*y(k,98)*y(k,6) + loss(k,3) = ( + het_rates(k,8))* y(k,8) + prod(k,3) = 0._r8 + loss(k,74) = (rxt(k,273)* y(k,42) +rxt(k,274)* y(k,108) +rxt(k,298)* y(k,111) & + + het_rates(k,9))* y(k,9) + prod(k,74) = 0._r8 + loss(k,98) = (2._r8*rxt(k,275)* y(k,10) +rxt(k,276)* y(k,37) +rxt(k,278) & + * y(k,97) +rxt(k,277)* y(k,139) + het_rates(k,10))* y(k,10) + prod(k,98) = (rxt(k,281)*y(k,42) +rxt(k,282)*y(k,111))*y(k,13) & + +.500_r8*rxt(k,280)*y(k,111)*y(k,12) + loss(k,54) = (rxt(k,279)* y(k,111) + het_rates(k,11))* y(k,11) + prod(k,54) = (.400_r8*rxt(k,275)*y(k,10) +.200_r8*rxt(k,276)*y(k,37))*y(k,10) + loss(k,62) = (rxt(k,280)* y(k,111) + rxt(k,20) + het_rates(k,12))* y(k,12) + prod(k,62) =rxt(k,277)*y(k,139)*y(k,10) + loss(k,60) = (rxt(k,281)* y(k,42) +rxt(k,282)* y(k,111) + het_rates(k,13)) & + * y(k,13) + prod(k,60) = 0._r8 + loss(k,116) = (rxt(k,301)* y(k,99) +rxt(k,302)* y(k,108) +rxt(k,319) & + * y(k,111) + het_rates(k,14))* y(k,14) + prod(k,116) =.130_r8*rxt(k,352)*y(k,108)*y(k,79) +.700_r8*rxt(k,40)*y(k,88) + loss(k,102) = (rxt(k,303)* y(k,37) +rxt(k,305)* y(k,97) +rxt(k,304)* y(k,139) & + + het_rates(k,15))* y(k,15) + prod(k,102) = (rxt(k,306)*y(k,16) +rxt(k,307)*y(k,17) + & + 1.670_r8*rxt(k,341)*y(k,3))*y(k,111) + loss(k,68) = (rxt(k,306)* y(k,111) + rxt(k,21) + het_rates(k,16))* y(k,16) + prod(k,68) =rxt(k,304)*y(k,139)*y(k,15) + loss(k,34) = (rxt(k,307)* y(k,111) + het_rates(k,17))* y(k,17) + prod(k,34) = 0._r8 + loss(k,31) = (rxt(k,204)* y(k,144) + rxt(k,51) + het_rates(k,18))* y(k,18) + prod(k,31) = 0._r8 + loss(k,40) = (rxt(k,205)* y(k,144) + rxt(k,52) + het_rates(k,19))* y(k,19) + prod(k,40) = 0._r8 + loss(k,41) = (rxt(k,231)* y(k,144) + rxt(k,53) + het_rates(k,20))* y(k,20) + prod(k,41) = 0._r8 + loss(k,35) = (rxt(k,206)* y(k,144) + rxt(k,54) + het_rates(k,21))* y(k,21) + prod(k,35) = 0._r8 + loss(k,42) = (rxt(k,207)* y(k,144) + rxt(k,55) + het_rates(k,22))* y(k,22) + prod(k,42) = 0._r8 + loss(k,36) = (rxt(k,208)* y(k,144) + rxt(k,56) + het_rates(k,23))* y(k,23) + prod(k,36) = 0._r8 + loss(k,43) = (rxt(k,209)* y(k,144) + rxt(k,57) + het_rates(k,24))* y(k,24) + prod(k,43) = 0._r8 + loss(k,37) = (rxt(k,210)* y(k,144) + rxt(k,58) + het_rates(k,25))* y(k,25) + prod(k,37) = 0._r8 + loss(k,75) = (rxt(k,242)* y(k,42) +rxt(k,243)* y(k,111) +rxt(k,254)* y(k,144) & + + rxt(k,59) + het_rates(k,26))* y(k,26) + prod(k,75) = 0._r8 + loss(k,136) = (rxt(k,215)* y(k,4) +rxt(k,179)* y(k,42) +rxt(k,259)* y(k,99) & + +rxt(k,260)* y(k,106) +rxt(k,261)* y(k,111) + rxt(k,22) + rxt(k,23) & + + het_rates(k,27))* y(k,27) + prod(k,136) = (rxt(k,186)*y(k,45) +2.000_r8*rxt(k,262)*y(k,37) + & + rxt(k,263)*y(k,37) +rxt(k,265)*y(k,97) +.700_r8*rxt(k,276)*y(k,10) + & + rxt(k,286)*y(k,32) +rxt(k,303)*y(k,15) +.800_r8*rxt(k,315)*y(k,118) + & + .880_r8*rxt(k,322)*y(k,84) +2.000_r8*rxt(k,331)*y(k,86) + & + 1.200_r8*rxt(k,348)*y(k,81) +.800_r8*rxt(k,358)*y(k,134))*y(k,37) & + + (.500_r8*rxt(k,292)*y(k,57) +rxt(k,313)*y(k,114) + & + rxt(k,317)*y(k,118) +.250_r8*rxt(k,325)*y(k,84) +rxt(k,334)*y(k,86) + & + .072_r8*rxt(k,345)*y(k,80) +.550_r8*rxt(k,350)*y(k,81) + & + .250_r8*rxt(k,360)*y(k,134))*y(k,97) + (rxt(k,266)*y(k,38) + & + .300_r8*rxt(k,267)*y(k,39) +.500_r8*rxt(k,290)*y(k,36) + & + .800_r8*rxt(k,295)*y(k,60) +rxt(k,297)*y(k,113) + & + .500_r8*rxt(k,336)*y(k,87))*y(k,111) + (rxt(k,274)*y(k,9) + & + .500_r8*rxt(k,302)*y(k,14) +.120_r8*rxt(k,327)*y(k,83) + & + .600_r8*rxt(k,337)*y(k,88) +.910_r8*rxt(k,352)*y(k,79))*y(k,108) & + + (.250_r8*rxt(k,321)*y(k,84) +rxt(k,330)*y(k,86) + & + .600_r8*rxt(k,347)*y(k,81) +.250_r8*rxt(k,357)*y(k,134))*y(k,32) & + + (.250_r8*rxt(k,324)*y(k,84) +rxt(k,335)*y(k,86) + & + .072_r8*rxt(k,346)*y(k,80) +.600_r8*rxt(k,351)*y(k,81))*y(k,99) & + + (.180_r8*rxt(k,29) +rxt(k,270)*y(k,144) +rxt(k,271)*y(k,144)) & + *y(k,40) + (.150_r8*rxt(k,316)*y(k,118) +.450_r8*rxt(k,332)*y(k,86) + & + .206_r8*rxt(k,344)*y(k,80))*y(k,139) +rxt(k,28)*y(k,39) & + +2.000_r8*rxt(k,293)*y(k,56) +rxt(k,33)*y(k,60) +rxt(k,35)*y(k,77) & + +.690_r8*rxt(k,36)*y(k,82) +1.340_r8*rxt(k,37)*y(k,83) & + +2.000_r8*rxt(k,333)*y(k,86)*y(k,86) +rxt(k,41)*y(k,100) +rxt(k,42) & + *y(k,112) +rxt(k,44)*y(k,117) +rxt(k,45)*y(k,119) + loss(k,86) = (rxt(k,244)* y(k,42) +rxt(k,245)* y(k,111) +rxt(k,255)* y(k,144) & + + rxt(k,60) + het_rates(k,28))* y(k,28) + prod(k,86) = 0._r8 + loss(k,33) = (rxt(k,246)* y(k,111) + rxt(k,61) + het_rates(k,29))* y(k,29) + prod(k,33) = 0._r8 + loss(k,117) = (rxt(k,283)* y(k,99) +rxt(k,284)* y(k,111) + rxt(k,24) & + + het_rates(k,30))* y(k,30) + prod(k,117) = (1.600_r8*rxt(k,275)*y(k,10) +.800_r8*rxt(k,276)*y(k,37) + & + rxt(k,278)*y(k,97))*y(k,10) + (rxt(k,20) + & + .500_r8*rxt(k,280)*y(k,111))*y(k,12) + (.270_r8*rxt(k,305)*y(k,15) + & + rxt(k,313)*y(k,114))*y(k,97) + (.500_r8*rxt(k,302)*y(k,14) + & + .100_r8*rxt(k,337)*y(k,88))*y(k,108) +rxt(k,279)*y(k,111)*y(k,11) & + +rxt(k,44)*y(k,117) + loss(k,66) = (rxt(k,247)* y(k,42) +rxt(k,248)* y(k,111) + rxt(k,62) & + + het_rates(k,31))* y(k,31) + prod(k,66) = 0._r8 + loss(k,126) = (2._r8*rxt(k,285)* y(k,32) +rxt(k,286)* y(k,37) +rxt(k,347) & + * y(k,81) +rxt(k,321)* y(k,84) +rxt(k,288)* y(k,97) +rxt(k,299) & + * y(k,98) +rxt(k,357)* y(k,134) +rxt(k,287)* y(k,139) & + + het_rates(k,32))* y(k,32) + prod(k,126) = (rxt(k,331)*y(k,37) +.450_r8*rxt(k,332)*y(k,139) + & + 2.000_r8*rxt(k,333)*y(k,86) +rxt(k,334)*y(k,97) +rxt(k,335)*y(k,99)) & + *y(k,86) + (.530_r8*rxt(k,321)*y(k,32) +.260_r8*rxt(k,322)*y(k,37) + & + .530_r8*rxt(k,324)*y(k,99) +.530_r8*rxt(k,325)*y(k,97))*y(k,84) & + + (rxt(k,26) +rxt(k,308)*y(k,99) +rxt(k,309)*y(k,111))*y(k,34) & + + (.100_r8*rxt(k,327)*y(k,83) +.280_r8*rxt(k,337)*y(k,88) + & + .080_r8*rxt(k,352)*y(k,79))*y(k,108) + (.300_r8*rxt(k,315)*y(k,37) + & + .150_r8*rxt(k,316)*y(k,139) +rxt(k,317)*y(k,97))*y(k,118) & + + (rxt(k,283)*y(k,99) +rxt(k,284)*y(k,111))*y(k,30) & + + (.600_r8*rxt(k,43) +rxt(k,300))*y(k,113) +rxt(k,25)*y(k,33) & + +.500_r8*rxt(k,290)*y(k,111)*y(k,36) +rxt(k,35)*y(k,77) & + +1.340_r8*rxt(k,37)*y(k,83) +.300_r8*rxt(k,40)*y(k,88) +rxt(k,41) & + *y(k,100) +rxt(k,45)*y(k,119) + loss(k,95) = (rxt(k,320)* y(k,111) + rxt(k,25) + het_rates(k,33))* y(k,33) + prod(k,95) = (.820_r8*rxt(k,303)*y(k,37) +.820_r8*rxt(k,305)*y(k,97))*y(k,15) & + +.820_r8*rxt(k,21)*y(k,16) +.100_r8*rxt(k,365)*y(k,133)*y(k,111) + loss(k,121) = (rxt(k,308)* y(k,99) +rxt(k,309)* y(k,111) + rxt(k,26) & + + het_rates(k,34))* y(k,34) + prod(k,121) = (.250_r8*rxt(k,321)*y(k,32) +.240_r8*rxt(k,322)*y(k,37) + & + .250_r8*rxt(k,324)*y(k,99) +.250_r8*rxt(k,325)*y(k,97))*y(k,84) & + + (.250_r8*rxt(k,357)*y(k,32) +.100_r8*rxt(k,358)*y(k,37) + & + .250_r8*rxt(k,360)*y(k,97) +.250_r8*rxt(k,361)*y(k,99))*y(k,134) & + + (.880_r8*rxt(k,327)*y(k,83) +.500_r8*rxt(k,337)*y(k,88))*y(k,108) & + + (rxt(k,310)*y(k,77) +rxt(k,311)*y(k,100))*y(k,111) & + +.500_r8*rxt(k,315)*y(k,118)*y(k,37) +.020_r8*rxt(k,350)*y(k,97) & + *y(k,81) + loss(k,89) = (rxt(k,289)* y(k,111) + het_rates(k,35))* y(k,35) + prod(k,89) = (.100_r8*rxt(k,286)*y(k,37) +.150_r8*rxt(k,287)*y(k,139)) & + *y(k,32) +.120_r8*rxt(k,302)*y(k,108)*y(k,14) & + +.150_r8*rxt(k,332)*y(k,139)*y(k,86) + loss(k,85) = (rxt(k,290)* y(k,111) + rxt(k,27) + het_rates(k,36))* y(k,36) + prod(k,85) = (.400_r8*rxt(k,287)*y(k,32) +.400_r8*rxt(k,332)*y(k,86)) & + *y(k,139) + loss(k,140) = (rxt(k,276)* y(k,10) +rxt(k,303)* y(k,15) +rxt(k,286)* y(k,32) & + + 2._r8*(rxt(k,262) +rxt(k,263))* y(k,37) +rxt(k,186)* y(k,45) & + +rxt(k,348)* y(k,81) +rxt(k,322)* y(k,84) +rxt(k,331)* y(k,86) & + +rxt(k,265)* y(k,97) +rxt(k,315)* y(k,118) +rxt(k,358)* y(k,134) & + +rxt(k,264)* y(k,139) + het_rates(k,37))* y(k,37) + prod(k,140) = (2.000_r8*rxt(k,285)*y(k,32) +.900_r8*rxt(k,286)*y(k,37) + & + .450_r8*rxt(k,287)*y(k,139) +rxt(k,288)*y(k,97) +rxt(k,321)*y(k,84) + & + rxt(k,330)*y(k,86) +rxt(k,347)*y(k,81) +rxt(k,357)*y(k,134))*y(k,32) & + + (rxt(k,30) +rxt(k,180)*y(k,42) +rxt(k,236)*y(k,59) + & + rxt(k,268)*y(k,111) +rxt(k,269)*y(k,144))*y(k,40) & + + (.280_r8*rxt(k,302)*y(k,14) +.050_r8*rxt(k,352)*y(k,79))*y(k,108) & + + (.700_r8*rxt(k,267)*y(k,39) +rxt(k,289)*y(k,35))*y(k,111) & + +rxt(k,60)*y(k,28) +rxt(k,24)*y(k,30) +rxt(k,62)*y(k,31) +rxt(k,25) & + *y(k,33) +rxt(k,27)*y(k,36) +.300_r8*rxt(k,40)*y(k,88) & + +.400_r8*rxt(k,43)*y(k,113) + loss(k,80) = (rxt(k,266)* y(k,111) + het_rates(k,38))* y(k,38) + prod(k,80) = (rxt(k,263)*y(k,37) +.300_r8*rxt(k,276)*y(k,10) + & + .500_r8*rxt(k,315)*y(k,118) +.250_r8*rxt(k,322)*y(k,84) + & + .250_r8*rxt(k,348)*y(k,81) +.300_r8*rxt(k,358)*y(k,134))*y(k,37) + loss(k,69) = (rxt(k,267)* y(k,111) + rxt(k,28) + het_rates(k,39))* y(k,39) + prod(k,69) =rxt(k,264)*y(k,139)*y(k,37) + loss(k,147) = (rxt(k,180)* y(k,42) +rxt(k,236)* y(k,59) +rxt(k,268)* y(k,111) & + + (rxt(k,269) +rxt(k,270) +rxt(k,271))* y(k,144) + rxt(k,29) & + + rxt(k,30) + het_rates(k,40))* y(k,40) + prod(k,147) =.100_r8*rxt(k,302)*y(k,108)*y(k,14) + loss(k,71) = (rxt(k,249)* y(k,42) +rxt(k,250)* y(k,111) +rxt(k,232)* y(k,144) & + + rxt(k,63) + het_rates(k,41))* y(k,41) + prod(k,71) = 0._r8 + loss(k,143) = (rxt(k,281)* y(k,13) +rxt(k,242)* y(k,26) +rxt(k,179)* y(k,27) & + +rxt(k,244)* y(k,28) +rxt(k,247)* y(k,31) +rxt(k,180)* y(k,40) & + +rxt(k,249)* y(k,41) +rxt(k,192)* y(k,46) +rxt(k,181)* y(k,63) & + +rxt(k,182)* y(k,65) +rxt(k,201)* y(k,76) +rxt(k,185)* y(k,108) & + + (rxt(k,183) +rxt(k,184))* y(k,139) + het_rates(k,42))* y(k,42) + prod(k,143) = (4.000_r8*rxt(k,204)*y(k,18) +rxt(k,205)*y(k,19) + & + 2.000_r8*rxt(k,206)*y(k,21) +2.000_r8*rxt(k,207)*y(k,22) + & + 2.000_r8*rxt(k,208)*y(k,23) +rxt(k,209)*y(k,24) + & + 2.000_r8*rxt(k,210)*y(k,25) +rxt(k,211)*y(k,71) +rxt(k,241)*y(k,51) + & + rxt(k,256)*y(k,68) +rxt(k,257)*y(k,69) +rxt(k,258)*y(k,70))*y(k,144) & + + (rxt(k,66) +rxt(k,186)*y(k,37) +2.000_r8*rxt(k,187)*y(k,45) + & + rxt(k,189)*y(k,45) +rxt(k,191)*y(k,97) +rxt(k,196)*y(k,106) + & + rxt(k,197)*y(k,111) +rxt(k,220)*y(k,6) +rxt(k,374)*y(k,122))*y(k,45) & + + (rxt(k,200)*y(k,71) +3.000_r8*rxt(k,246)*y(k,29) + & + rxt(k,248)*y(k,31) +rxt(k,251)*y(k,68) +rxt(k,252)*y(k,69) + & + rxt(k,253)*y(k,70))*y(k,111) + (rxt(k,76) +rxt(k,199)*y(k,106)) & + *y(k,71) +rxt(k,47)*y(k,5) +4.000_r8*rxt(k,51)*y(k,18) +rxt(k,52) & + *y(k,19) +2.000_r8*rxt(k,54)*y(k,21) +2.000_r8*rxt(k,55)*y(k,22) & + +2.000_r8*rxt(k,56)*y(k,23) +rxt(k,57)*y(k,24) +2.000_r8*rxt(k,58) & + *y(k,25) +3.000_r8*rxt(k,61)*y(k,29) +rxt(k,62)*y(k,31) & + +2.000_r8*rxt(k,64)*y(k,43) +2.000_r8*rxt(k,65)*y(k,44) +rxt(k,67) & + *y(k,46) +rxt(k,70)*y(k,51) +rxt(k,73)*y(k,68) +rxt(k,74)*y(k,69) & + +rxt(k,75)*y(k,70) +rxt(k,79)*y(k,76) + loss(k,44) = ( + rxt(k,64) + het_rates(k,43))* y(k,43) + prod(k,44) = (rxt(k,392)*y(k,76) +rxt(k,397)*y(k,46) +rxt(k,398)*y(k,76) + & + rxt(k,402)*y(k,46) +rxt(k,403)*y(k,76) +rxt(k,407)*y(k,46))*y(k,71) & + +rxt(k,192)*y(k,46)*y(k,42) +rxt(k,188)*y(k,45)*y(k,45) + loss(k,28) = ( + rxt(k,65) + rxt(k,214) + het_rates(k,44))* y(k,44) + prod(k,28) =rxt(k,213)*y(k,45)*y(k,45) + loss(k,134) = ((rxt(k,219) +rxt(k,220) +rxt(k,221))* y(k,6) +rxt(k,186) & + * y(k,37) + 2._r8*(rxt(k,187) +rxt(k,188) +rxt(k,189) +rxt(k,213)) & + * y(k,45) +rxt(k,191)* y(k,97) +rxt(k,193)* y(k,98) +rxt(k,196) & + * y(k,106) + (rxt(k,197) +rxt(k,198))* y(k,111) +rxt(k,374)* y(k,122) & + +rxt(k,190)* y(k,139) + rxt(k,66) + het_rates(k,45))* y(k,45) + prod(k,134) = (rxt(k,184)*y(k,139) +rxt(k,185)*y(k,108) +rxt(k,201)*y(k,76)) & + *y(k,42) + (rxt(k,68) +rxt(k,194)*y(k,106))*y(k,46) & + + (rxt(k,202)*y(k,106) +rxt(k,203)*y(k,111))*y(k,76) + (rxt(k,80) + & + rxt(k,379)*y(k,122))*y(k,109) +2.000_r8*rxt(k,214)*y(k,44) & + +rxt(k,212)*y(k,144)*y(k,71) + loss(k,111) = (rxt(k,192)* y(k,42) + (rxt(k,397) +rxt(k,402) +rxt(k,407)) & + * y(k,71) +rxt(k,194)* y(k,106) +rxt(k,195)* y(k,111) + rxt(k,67) & + + rxt(k,68) + rxt(k,395) + rxt(k,400) + rxt(k,406) & + + het_rates(k,46))* y(k,46) + prod(k,111) =rxt(k,193)*y(k,98)*y(k,45) + loss(k,4) = ( + het_rates(k,47))* y(k,47) + prod(k,4) = 0._r8 + loss(k,118) = (rxt(k,272)* y(k,111) + het_rates(k,48))* y(k,48) + prod(k,118) = (rxt(k,22) +rxt(k,23) +rxt(k,179)*y(k,42) +rxt(k,215)*y(k,4) + & + rxt(k,259)*y(k,99) +rxt(k,260)*y(k,106) +rxt(k,261)*y(k,111))*y(k,27) & + + (.630_r8*rxt(k,274)*y(k,9) +.560_r8*rxt(k,302)*y(k,14) + & + .650_r8*rxt(k,327)*y(k,83) +.560_r8*rxt(k,337)*y(k,88) + & + .620_r8*rxt(k,352)*y(k,79))*y(k,108) + (.220_r8*rxt(k,321)*y(k,32) + & + .110_r8*rxt(k,322)*y(k,37) +.220_r8*rxt(k,324)*y(k,99) + & + .220_r8*rxt(k,325)*y(k,97))*y(k,84) + (.250_r8*rxt(k,357)*y(k,32) + & + .200_r8*rxt(k,358)*y(k,37) +.250_r8*rxt(k,360)*y(k,97) + & + .500_r8*rxt(k,361)*y(k,99))*y(k,134) + (rxt(k,26) + & + rxt(k,308)*y(k,99) +rxt(k,309)*y(k,111))*y(k,34) + (rxt(k,31) + & + rxt(k,82) +rxt(k,423)*y(k,148))*y(k,49) + (rxt(k,109) + & + rxt(k,368)*y(k,106) +rxt(k,369)*y(k,111))*y(k,110) & + + (2.000_r8*rxt(k,34) +rxt(k,296)*y(k,111))*y(k,61) +rxt(k,24) & + *y(k,30) +rxt(k,247)*y(k,42)*y(k,31) +.380_r8*rxt(k,29)*y(k,40) & + +rxt(k,33)*y(k,60) +1.340_r8*rxt(k,38)*y(k,83) +.700_r8*rxt(k,40) & + *y(k,88) +rxt(k,42)*y(k,112) + loss(k,127) = (rxt(k,423)* y(k,148) + rxt(k,31) + rxt(k,82) & + + het_rates(k,49))* y(k,49) + prod(k,127) = (rxt(k,272)*y(k,48) +rxt(k,289)*y(k,35) + & + .500_r8*rxt(k,290)*y(k,36) +.800_r8*rxt(k,295)*y(k,60) + & + rxt(k,296)*y(k,61) +.500_r8*rxt(k,336)*y(k,87))*y(k,111) & + + (2.000_r8*rxt(k,285)*y(k,32) +.900_r8*rxt(k,286)*y(k,37) + & + rxt(k,288)*y(k,97) +2.000_r8*rxt(k,330)*y(k,86) +rxt(k,357)*y(k,134)) & + *y(k,32) + (rxt(k,331)*y(k,37) +.450_r8*rxt(k,332)*y(k,139) + & + 2.000_r8*rxt(k,333)*y(k,86))*y(k,86) + (.200_r8*rxt(k,302)*y(k,14) + & + .100_r8*rxt(k,337)*y(k,88))*y(k,108) +rxt(k,27)*y(k,36) & + +.440_r8*rxt(k,29)*y(k,40) +.400_r8*rxt(k,43)*y(k,113) + loss(k,48) = (rxt(k,240)* y(k,144) + rxt(k,69) + het_rates(k,50))* y(k,50) + prod(k,48) = (rxt(k,205)*y(k,19) +rxt(k,207)*y(k,22) + & + 2.000_r8*rxt(k,208)*y(k,23) +2.000_r8*rxt(k,209)*y(k,24) + & + rxt(k,210)*y(k,25) +rxt(k,231)*y(k,20) +2.000_r8*rxt(k,233)*y(k,64) + & + rxt(k,257)*y(k,69) +rxt(k,258)*y(k,70))*y(k,144) + (rxt(k,74) + & + rxt(k,252)*y(k,111))*y(k,69) + (rxt(k,75) +rxt(k,253)*y(k,111)) & + *y(k,70) +rxt(k,52)*y(k,19) +rxt(k,53)*y(k,20) +rxt(k,55)*y(k,22) & + +2.000_r8*rxt(k,56)*y(k,23) +2.000_r8*rxt(k,57)*y(k,24) +rxt(k,58) & + *y(k,25) +2.000_r8*rxt(k,71)*y(k,64) + loss(k,51) = (rxt(k,241)* y(k,144) + rxt(k,70) + het_rates(k,51))* y(k,51) + prod(k,51) = (rxt(k,73) +rxt(k,251)*y(k,111) +rxt(k,256)*y(k,144))*y(k,68) & + + (rxt(k,54) +rxt(k,206)*y(k,144))*y(k,21) + (rxt(k,55) + & + rxt(k,207)*y(k,144))*y(k,22) + loss(k,56) = (rxt(k,366)* y(k,99) + (rxt(k,367) +rxt(k,381))* y(k,111) & + + het_rates(k,52))* y(k,52) + prod(k,56) = 0._r8 + loss(k,5) = ( + het_rates(k,53))* y(k,53) + prod(k,5) = 0._r8 + loss(k,6) = ( + het_rates(k,54))* y(k,54) + prod(k,6) = 0._r8 + loss(k,7) = ( + het_rates(k,55))* y(k,55) + prod(k,7) = 0._r8 + loss(k,72) = (rxt(k,294)* y(k,107) + rxt(k,293) + het_rates(k,56))* y(k,56) + prod(k,72) =.750_r8*rxt(k,292)*y(k,97)*y(k,57) +rxt(k,32)*y(k,58) + loss(k,93) = (rxt(k,292)* y(k,97) +rxt(k,291)* y(k,139) + het_rates(k,57)) & + * y(k,57) + prod(k,93) =rxt(k,298)*y(k,111)*y(k,9) + loss(k,38) = ( + rxt(k,32) + het_rates(k,58))* y(k,58) + prod(k,38) =rxt(k,291)*y(k,139)*y(k,57) + loss(k,104) = (rxt(k,236)* y(k,40) +rxt(k,237)* y(k,63) +rxt(k,239)* y(k,73) & + +rxt(k,238)* y(k,151) + het_rates(k,59))* y(k,59) + prod(k,104) = (rxt(k,209)*y(k,24) +rxt(k,231)*y(k,20) + & + 2.000_r8*rxt(k,240)*y(k,50) +rxt(k,241)*y(k,51))*y(k,144) +rxt(k,53) & + *y(k,20) +rxt(k,57)*y(k,24) +2.000_r8*rxt(k,69)*y(k,50) +rxt(k,70) & + *y(k,51) +rxt(k,77)*y(k,72) + loss(k,114) = (rxt(k,295)* y(k,111) + rxt(k,33) + het_rates(k,60))* y(k,60) + prod(k,114) = (.530_r8*rxt(k,321)*y(k,32) +.260_r8*rxt(k,322)*y(k,37) + & + .530_r8*rxt(k,324)*y(k,99) +.530_r8*rxt(k,325)*y(k,97))*y(k,84) & + + (.250_r8*rxt(k,357)*y(k,32) +.100_r8*rxt(k,358)*y(k,37) + & + .250_r8*rxt(k,360)*y(k,97) +.250_r8*rxt(k,361)*y(k,99))*y(k,134) & + +rxt(k,294)*y(k,107)*y(k,56) +.020_r8*rxt(k,350)*y(k,97)*y(k,81) + loss(k,91) = (rxt(k,296)* y(k,111) + rxt(k,34) + het_rates(k,61))* y(k,61) + prod(k,91) = (.250_r8*rxt(k,357)*y(k,32) +.100_r8*rxt(k,358)*y(k,37) + & + .250_r8*rxt(k,360)*y(k,97) +.250_r8*rxt(k,361)*y(k,99))*y(k,134) & + +.200_r8*rxt(k,295)*y(k,111)*y(k,60) +.020_r8*rxt(k,350)*y(k,97) & + *y(k,81) + loss(k,148) = (rxt(k,140)* y(k,107) +rxt(k,143)* y(k,108) + (rxt(k,137) + & + rxt(k,138) +rxt(k,139))* y(k,139) + het_rates(k,62))* y(k,62) + prod(k,148) = (rxt(k,144)*y(k,63) +rxt(k,147)*y(k,106) +rxt(k,167)*y(k,89) + & + rxt(k,261)*y(k,27) +rxt(k,369)*y(k,110) +rxt(k,375)*y(k,120) + & + rxt(k,380)*y(k,122))*y(k,111) + (rxt(k,117)*y(k,144) + & + rxt(k,135)*y(k,106) +rxt(k,181)*y(k,42) +rxt(k,237)*y(k,59))*y(k,63) & + + (.330_r8*rxt(k,29) +rxt(k,30) +rxt(k,270)*y(k,144))*y(k,40) & + + (rxt(k,72) +rxt(k,235)*y(k,144))*y(k,67) + (rxt(k,76) + & + rxt(k,212)*y(k,144))*y(k,71) + (rxt(k,2) +2.000_r8*rxt(k,3))*y(k,151) & + +2.000_r8*rxt(k,22)*y(k,27) +rxt(k,28)*y(k,39) +rxt(k,77)*y(k,72) + loss(k,128) = (rxt(k,181)* y(k,42) +rxt(k,237)* y(k,59) +rxt(k,135)* y(k,106) & + +rxt(k,144)* y(k,111) +rxt(k,117)* y(k,144) + het_rates(k,63)) & + * y(k,63) + prod(k,128) = (1.440_r8*rxt(k,29) +rxt(k,271)*y(k,144))*y(k,40) +rxt(k,23) & + *y(k,27) +rxt(k,137)*y(k,139)*y(k,62) +rxt(k,1)*y(k,151) + loss(k,32) = (rxt(k,233)* y(k,144) + rxt(k,71) + het_rates(k,64))* y(k,64) + prod(k,32) = 0._r8 + loss(k,84) = (rxt(k,182)* y(k,42) +rxt(k,136)* y(k,106) +rxt(k,145)* y(k,111) & + + rxt(k,4) + het_rates(k,65))* y(k,65) + prod(k,84) =rxt(k,150)*y(k,111)*y(k,111) +rxt(k,151)*y(k,139)*y(k,139) + loss(k,39) = ( + rxt(k,108) + het_rates(k,66))* y(k,66) + prod(k,39) =rxt(k,382)*y(k,151)*y(k,124) + loss(k,99) = (rxt(k,228)* y(k,106) +rxt(k,229)* y(k,111) + (rxt(k,234) + & + rxt(k,235))* y(k,144) + rxt(k,72) + het_rates(k,67))* y(k,67) + prod(k,99) = (rxt(k,215)*y(k,27) +rxt(k,216)*y(k,139))*y(k,4) + loss(k,50) = (rxt(k,251)* y(k,111) +rxt(k,256)* y(k,144) + rxt(k,73) & + + het_rates(k,68))* y(k,68) + prod(k,50) = 0._r8 + loss(k,52) = (rxt(k,252)* y(k,111) +rxt(k,257)* y(k,144) + rxt(k,74) & + + het_rates(k,69))* y(k,69) + prod(k,52) = 0._r8 + loss(k,57) = (rxt(k,253)* y(k,111) +rxt(k,258)* y(k,144) + rxt(k,75) & + + het_rates(k,70))* y(k,70) + prod(k,57) = 0._r8 + loss(k,130) = ((rxt(k,397) +rxt(k,402) +rxt(k,407))* y(k,46) + (rxt(k,399) + & + rxt(k,404))* y(k,75) + (rxt(k,392) +rxt(k,398) +rxt(k,403))* y(k,76) & + +rxt(k,199)* y(k,106) +rxt(k,200)* y(k,111) + (rxt(k,211) + & + rxt(k,212))* y(k,144) + rxt(k,76) + het_rates(k,71))* y(k,71) + prod(k,130) = (rxt(k,179)*y(k,27) +rxt(k,180)*y(k,40) +rxt(k,181)*y(k,63) + & + rxt(k,182)*y(k,65) +rxt(k,183)*y(k,139) +rxt(k,201)*y(k,76) + & + rxt(k,242)*y(k,26) +rxt(k,244)*y(k,28) +2.000_r8*rxt(k,247)*y(k,31) + & + rxt(k,249)*y(k,41) +rxt(k,281)*y(k,13))*y(k,42) +rxt(k,198)*y(k,111) & + *y(k,45) + loss(k,58) = ( + rxt(k,77) + het_rates(k,72))* y(k,72) + prod(k,58) = (rxt(k,236)*y(k,40) +rxt(k,237)*y(k,63) +rxt(k,238)*y(k,151) + & + rxt(k,239)*y(k,73))*y(k,59) + loss(k,139) = (rxt(k,239)* y(k,59) +rxt(k,176)* y(k,111) + rxt(k,9) & + + het_rates(k,73))* y(k,73) + prod(k,139) = (rxt(k,395) +rxt(k,400) +rxt(k,406) +rxt(k,397)*y(k,71) + & + rxt(k,402)*y(k,71) +rxt(k,407)*y(k,71))*y(k,46) + (rxt(k,388) + & + rxt(k,259)*y(k,27) +rxt(k,283)*y(k,30) +rxt(k,308)*y(k,34) + & + rxt(k,366)*y(k,52))*y(k,99) + (2.000_r8*rxt(k,385) + & + 2.000_r8*rxt(k,391) +2.000_r8*rxt(k,394) +2.000_r8*rxt(k,405)) & + *y(k,91) + (rxt(k,393) +rxt(k,396) +rxt(k,401))*y(k,7) & + + (.500_r8*rxt(k,387) +rxt(k,175)*y(k,111))*y(k,98) +rxt(k,389) & + *y(k,112) + loss(k,73) = (rxt(k,152)* y(k,111) + rxt(k,10) + rxt(k,11) + rxt(k,177) & + + het_rates(k,74))* y(k,74) + prod(k,73) =rxt(k,173)*y(k,139)*y(k,98) + loss(k,94) = ((rxt(k,399) +rxt(k,404))* y(k,71) +rxt(k,230)* y(k,106) & + + rxt(k,78) + het_rates(k,75))* y(k,75) + prod(k,94) = (rxt(k,393) +rxt(k,396) +rxt(k,401))*y(k,7) +rxt(k,222)*y(k,139) & + *y(k,6) + loss(k,101) = (rxt(k,201)* y(k,42) + (rxt(k,392) +rxt(k,398) +rxt(k,403)) & + * y(k,71) +rxt(k,202)* y(k,106) +rxt(k,203)* y(k,111) + rxt(k,79) & + + het_rates(k,76))* y(k,76) + prod(k,101) = (rxt(k,395) +rxt(k,400) +rxt(k,406) +rxt(k,195)*y(k,111)) & + *y(k,46) +rxt(k,190)*y(k,139)*y(k,45) + loss(k,115) = (rxt(k,310)* y(k,111) + rxt(k,35) + het_rates(k,77))* y(k,77) + prod(k,115) = (.220_r8*rxt(k,321)*y(k,32) +.230_r8*rxt(k,322)*y(k,37) + & + .220_r8*rxt(k,324)*y(k,99) +.220_r8*rxt(k,325)*y(k,97))*y(k,84) & + + (.250_r8*rxt(k,357)*y(k,32) +.100_r8*rxt(k,358)*y(k,37) + & + .250_r8*rxt(k,360)*y(k,97) +.250_r8*rxt(k,361)*y(k,99))*y(k,134) & + + (.500_r8*rxt(k,314)*y(k,117) +.500_r8*rxt(k,336)*y(k,87))*y(k,111) & + +.200_r8*rxt(k,315)*y(k,118)*y(k,37) +.020_r8*rxt(k,350)*y(k,97) & + *y(k,81) + loss(k,64) = (rxt(k,342)* y(k,111) + het_rates(k,78))* y(k,78) + prod(k,64) = (.400_r8*rxt(k,347)*y(k,32) +.300_r8*rxt(k,348)*y(k,37) + & + .330_r8*rxt(k,350)*y(k,97) +.400_r8*rxt(k,351)*y(k,99))*y(k,81) & + + (rxt(k,355)*y(k,99) +rxt(k,356)*y(k,111))*y(k,112) + loss(k,103) = (rxt(k,343)* y(k,99) +rxt(k,352)* y(k,108) +rxt(k,353) & + * y(k,111) + het_rates(k,79))* y(k,79) + prod(k,103) = 0._r8 + loss(k,97) = (rxt(k,345)* y(k,97) +rxt(k,346)* y(k,99) +rxt(k,344)* y(k,139) & + + het_rates(k,80))* y(k,80) + prod(k,97) =rxt(k,343)*y(k,99)*y(k,79) + loss(k,122) = (rxt(k,347)* y(k,32) +rxt(k,348)* y(k,37) +rxt(k,350)* y(k,97) & + +rxt(k,351)* y(k,99) +rxt(k,349)* y(k,139) + het_rates(k,81)) & + * y(k,81) + prod(k,122) = (rxt(k,353)*y(k,79) +.200_r8*rxt(k,354)*y(k,82) + & + 1.640_r8*rxt(k,365)*y(k,133))*y(k,111) +1.700_r8*rxt(k,363)*y(k,133) & + *y(k,99) + loss(k,78) = (rxt(k,354)* y(k,111) + rxt(k,36) + het_rates(k,82))* y(k,82) + prod(k,78) =rxt(k,349)*y(k,139)*y(k,81) + loss(k,119) = (rxt(k,327)* y(k,108) +rxt(k,328)* y(k,111) + rxt(k,37) & + + rxt(k,38) + het_rates(k,83))* y(k,83) + prod(k,119) = (.250_r8*rxt(k,347)*y(k,32) +.190_r8*rxt(k,348)*y(k,37) + & + .230_r8*rxt(k,350)*y(k,97) +.250_r8*rxt(k,351)*y(k,99))*y(k,81) & + + (.167_r8*rxt(k,344)*y(k,139) +.167_r8*rxt(k,345)*y(k,97) + & + .167_r8*rxt(k,346)*y(k,99))*y(k,80) + (.300_r8*rxt(k,352)*y(k,79) + & + 1.122_r8*rxt(k,364)*y(k,133))*y(k,108) +.288_r8*rxt(k,36)*y(k,82) + loss(k,123) = (rxt(k,321)* y(k,32) +rxt(k,322)* y(k,37) + (rxt(k,325) + & + rxt(k,326))* y(k,97) +rxt(k,324)* y(k,99) +rxt(k,323)* y(k,139) & + + het_rates(k,84))* y(k,84) + prod(k,123) = (.500_r8*rxt(k,328)*y(k,83) +.200_r8*rxt(k,329)*y(k,85) + & + rxt(k,338)*y(k,88))*y(k,111) + loss(k,61) = (rxt(k,329)* y(k,111) + het_rates(k,85))* y(k,85) + prod(k,61) =rxt(k,323)*y(k,139)*y(k,84) + loss(k,125) = (rxt(k,330)* y(k,32) +rxt(k,331)* y(k,37) + 2._r8*rxt(k,333) & + * y(k,86) +rxt(k,334)* y(k,97) +rxt(k,339)* y(k,98) +rxt(k,335) & + * y(k,99) +rxt(k,332)* y(k,139) + het_rates(k,86))* y(k,86) + prod(k,125) = (.660_r8*rxt(k,37) +.500_r8*rxt(k,328)*y(k,111))*y(k,83) & + + (rxt(k,39) +rxt(k,340))*y(k,87) +.500_r8*rxt(k,329)*y(k,111) & + *y(k,85) + loss(k,83) = (rxt(k,336)* y(k,111) + rxt(k,39) + rxt(k,340) & + + het_rates(k,87))* y(k,87) + prod(k,83) =rxt(k,339)*y(k,98)*y(k,86) + loss(k,124) = (rxt(k,337)* y(k,108) +rxt(k,338)* y(k,111) + rxt(k,40) & + + het_rates(k,88))* y(k,88) + prod(k,124) = (.350_r8*rxt(k,347)*y(k,32) +.260_r8*rxt(k,348)*y(k,37) + & + .320_r8*rxt(k,350)*y(k,97) +.350_r8*rxt(k,351)*y(k,99))*y(k,81) & + + (.039_r8*rxt(k,344)*y(k,139) +.039_r8*rxt(k,345)*y(k,97) + & + .039_r8*rxt(k,346)*y(k,99))*y(k,80) + (.200_r8*rxt(k,352)*y(k,79) + & + .442_r8*rxt(k,364)*y(k,133))*y(k,108) +.402_r8*rxt(k,36)*y(k,82) + loss(k,110) = (rxt(k,155)* y(k,97) + (rxt(k,156) +rxt(k,157) +rxt(k,158)) & + * y(k,98) +rxt(k,159)* y(k,107) +rxt(k,167)* y(k,111) +rxt(k,420) & + * y(k,147) + rxt(k,83) + het_rates(k,89))* y(k,89) + prod(k,110) = (rxt(k,153)*y(k,140) +rxt(k,417)*y(k,143))*y(k,106) & + + (.200_r8*rxt(k,411)*y(k,142) +1.100_r8*rxt(k,413)*y(k,141)) & + *y(k,138) +rxt(k,16)*y(k,97) +rxt(k,418)*y(k,143)*y(k,107) & + +rxt(k,424)*y(k,148) + loss(k,53) = ((rxt(k,171) +rxt(k,172))* y(k,144) + rxt(k,12) & + + het_rates(k,90))* y(k,90) + prod(k,53) =rxt(k,156)*y(k,98)*y(k,89) + loss(k,59) = ( + rxt(k,13) + rxt(k,14) + rxt(k,178) + rxt(k,385) + rxt(k,391) & + + rxt(k,394) + rxt(k,405) + het_rates(k,91))* y(k,91) + prod(k,59) =rxt(k,174)*y(k,99)*y(k,98) + loss(k,8) = ( + het_rates(k,92))* y(k,92) + prod(k,8) = 0._r8 + loss(k,9) = ( + het_rates(k,93))* y(k,93) + prod(k,9) = 0._r8 + loss(k,10) = ( + het_rates(k,94))* y(k,94) + prod(k,10) = 0._r8 + loss(k,30) = (rxt(k,383)* y(k,111) + het_rates(k,95))* y(k,95) + prod(k,30) = 0._r8 + loss(k,11) = ( + rxt(k,386) + het_rates(k,96))* y(k,96) + prod(k,11) = 0._r8 + loss(k,146) = (rxt(k,223)* y(k,6) +rxt(k,278)* y(k,10) +rxt(k,305)* y(k,15) & + +rxt(k,288)* y(k,32) +rxt(k,265)* y(k,37) +rxt(k,191)* y(k,45) & + +rxt(k,292)* y(k,57) +rxt(k,345)* y(k,80) +rxt(k,350)* y(k,81) & + + (rxt(k,325) +rxt(k,326))* y(k,84) +rxt(k,334)* y(k,86) +rxt(k,155) & + * y(k,89) +rxt(k,164)* y(k,99) +rxt(k,170)* y(k,106) +rxt(k,169) & + * y(k,108) +rxt(k,313)* y(k,114) +rxt(k,317)* y(k,118) +rxt(k,360) & + * y(k,134) +rxt(k,168)* y(k,139) +rxt(k,422)* y(k,147) + rxt(k,15) & + + rxt(k,16) + het_rates(k,97))* y(k,97) + prod(k,146) = (rxt(k,17) +.500_r8*rxt(k,387) +2.000_r8*rxt(k,157)*y(k,89) + & + rxt(k,160)*y(k,106) +rxt(k,376)*y(k,122))*y(k,98) & + + (rxt(k,159)*y(k,107) +rxt(k,167)*y(k,111))*y(k,89) & + +2.000_r8*rxt(k,171)*y(k,144)*y(k,90) +rxt(k,14)*y(k,91) +rxt(k,19) & + *y(k,99) +rxt(k,154)*y(k,140)*y(k,107) +rxt(k,421)*y(k,147) & + +rxt(k,434)*y(k,150) + loss(k,135) = (rxt(k,224)* y(k,6) +rxt(k,299)* y(k,32) +rxt(k,193)* y(k,45) & + +rxt(k,339)* y(k,86) + (rxt(k,156) +rxt(k,157) +rxt(k,158))* y(k,89) & + +rxt(k,174)* y(k,99) + (rxt(k,160) +rxt(k,162))* y(k,106) & + +rxt(k,161)* y(k,108) +rxt(k,175)* y(k,111) +rxt(k,376)* y(k,122) & + +rxt(k,173)* y(k,139) + rxt(k,17) + rxt(k,387) + het_rates(k,98)) & + * y(k,98) + prod(k,135) = (2.000_r8*rxt(k,164)*y(k,99) +rxt(k,168)*y(k,139) + & + rxt(k,169)*y(k,108) +rxt(k,170)*y(k,106) +rxt(k,191)*y(k,45) + & + rxt(k,223)*y(k,6) +rxt(k,265)*y(k,37) +rxt(k,278)*y(k,10) + & + rxt(k,288)*y(k,32) +rxt(k,292)*y(k,57) +rxt(k,305)*y(k,15) + & + rxt(k,313)*y(k,114) +rxt(k,317)*y(k,118) +rxt(k,325)*y(k,84) + & + rxt(k,334)*y(k,86) +1.206_r8*rxt(k,345)*y(k,80) + & + .920_r8*rxt(k,350)*y(k,81) +rxt(k,360)*y(k,134))*y(k,97) & + + (rxt(k,18) +rxt(k,163)*y(k,139) +rxt(k,165)*y(k,106) + & + rxt(k,166)*y(k,111) +rxt(k,324)*y(k,84) +rxt(k,335)*y(k,86) + & + 1.206_r8*rxt(k,346)*y(k,80) +rxt(k,351)*y(k,81) + & + rxt(k,355)*y(k,112) +rxt(k,361)*y(k,134) +rxt(k,363)*y(k,133)) & + *y(k,99) + (rxt(k,11) +rxt(k,177) +rxt(k,152)*y(k,111))*y(k,74) & + + (rxt(k,39) +rxt(k,340))*y(k,87) + (rxt(k,13) +rxt(k,178))*y(k,91) & + + (rxt(k,41) +rxt(k,311)*y(k,111))*y(k,100) + (rxt(k,42) + & + .400_r8*rxt(k,356)*y(k,111))*y(k,112) + (.600_r8*rxt(k,43) + & + rxt(k,300))*y(k,113) +rxt(k,49)*y(k,7) +rxt(k,68)*y(k,46) +rxt(k,9) & + *y(k,73) +.206_r8*rxt(k,344)*y(k,139)*y(k,80) + loss(k,141) = (rxt(k,301)* y(k,14) +rxt(k,259)* y(k,27) +rxt(k,283)* y(k,30) & + +rxt(k,308)* y(k,34) +rxt(k,366)* y(k,52) +rxt(k,343)* y(k,79) & + +rxt(k,346)* y(k,80) +rxt(k,351)* y(k,81) +rxt(k,324)* y(k,84) & + +rxt(k,335)* y(k,86) +rxt(k,164)* y(k,97) +rxt(k,174)* y(k,98) & + +rxt(k,165)* y(k,106) +rxt(k,166)* y(k,111) +rxt(k,355)* y(k,112) & + +rxt(k,363)* y(k,133) +rxt(k,361)* y(k,134) +rxt(k,163)* y(k,139) & + + rxt(k,18) + rxt(k,19) + rxt(k,388) + het_rates(k,99))* y(k,99) + prod(k,141) = (rxt(k,67) +rxt(k,192)*y(k,42) +rxt(k,194)*y(k,106) + & + rxt(k,195)*y(k,111))*y(k,46) + (rxt(k,13) +rxt(k,14) +rxt(k,178)) & + *y(k,91) + (rxt(k,176)*y(k,73) +rxt(k,297)*y(k,113) + & + .500_r8*rxt(k,336)*y(k,87))*y(k,111) + (rxt(k,50) + & + rxt(k,225)*y(k,106))*y(k,7) + (rxt(k,161)*y(k,108) + & + rxt(k,162)*y(k,106))*y(k,98) +rxt(k,239)*y(k,73)*y(k,59) +rxt(k,10) & + *y(k,74) +.400_r8*rxt(k,43)*y(k,113) + loss(k,67) = (rxt(k,311)* y(k,111) + rxt(k,41) + het_rates(k,100))* y(k,100) + prod(k,67) =rxt(k,301)*y(k,99)*y(k,14) + loss(k,12) = ( + het_rates(k,101))* y(k,101) + prod(k,12) = 0._r8 + loss(k,13) = ( + het_rates(k,102))* y(k,102) + prod(k,13) = 0._r8 + loss(k,14) = ( + het_rates(k,103))* y(k,103) + prod(k,14) = 0._r8 + loss(k,15) = ( + het_rates(k,104))* y(k,104) + prod(k,15) = 0._r8 + loss(k,16) = ( + het_rates(k,105))* y(k,105) + prod(k,16) = 0._r8 + loss(k,145) = (rxt(k,226)* y(k,6) +rxt(k,225)* y(k,7) +rxt(k,260)* y(k,27) & + +rxt(k,196)* y(k,45) +rxt(k,194)* y(k,46) +rxt(k,135)* y(k,63) & + +rxt(k,136)* y(k,65) +rxt(k,228)* y(k,67) +rxt(k,199)* y(k,71) & + +rxt(k,230)* y(k,75) +rxt(k,202)* y(k,76) +rxt(k,170)* y(k,97) & + + (rxt(k,160) +rxt(k,162))* y(k,98) +rxt(k,165)* y(k,99) & + + 2._r8*rxt(k,133)* y(k,106) +rxt(k,134)* y(k,107) +rxt(k,132) & + * y(k,108) +rxt(k,368)* y(k,110) +rxt(k,147)* y(k,111) +rxt(k,141) & + * y(k,139) + (rxt(k,415) +rxt(k,416))* y(k,141) +rxt(k,417)* y(k,143) & + + rxt(k,92) + rxt(k,93) + rxt(k,94) + rxt(k,95) + rxt(k,96) & + + rxt(k,97) + het_rates(k,106))* y(k,106) + prod(k,145) = (rxt(k,5) +2.000_r8*rxt(k,6) +rxt(k,98) +2.000_r8*rxt(k,99) + & + rxt(k,100) +rxt(k,101) +rxt(k,103) +2.000_r8*rxt(k,104) +rxt(k,105) + & + rxt(k,106) +rxt(k,120)*y(k,144) +rxt(k,121)*y(k,144) + & + rxt(k,159)*y(k,89) +rxt(k,370)*y(k,120) +rxt(k,377)*y(k,122) + & + rxt(k,419)*y(k,143) +rxt(k,426)*y(k,148) +rxt(k,430)*y(k,149)) & + *y(k,107) + (rxt(k,155)*y(k,97) +rxt(k,156)*y(k,98) + & + rxt(k,420)*y(k,147))*y(k,89) + (rxt(k,8) + & + 2.000_r8*rxt(k,123)*y(k,144) +.765_r8*rxt(k,364)*y(k,133))*y(k,108) & + + (rxt(k,31) +rxt(k,82))*y(k,49) + (rxt(k,411)*y(k,142) + & + 1.150_r8*rxt(k,412)*y(k,147))*y(k,138) +rxt(k,48)*y(k,6) & + +.180_r8*rxt(k,29)*y(k,40) +rxt(k,66)*y(k,45) +rxt(k,139)*y(k,139) & + *y(k,62) +rxt(k,14)*y(k,91) +rxt(k,16)*y(k,97) +rxt(k,17)*y(k,98) & + +rxt(k,18)*y(k,99) +rxt(k,80)*y(k,109) +rxt(k,149)*y(k,111)*y(k,111) & + +rxt(k,110)*y(k,122) +rxt(k,111)*y(k,123) +rxt(k,112)*y(k,124) & + +rxt(k,425)*y(k,148)*y(k,140) +rxt(k,119)*y(k,144) +rxt(k,428) & + *y(k,149) +rxt(k,433)*y(k,150) +rxt(k,3)*y(k,151) + loss(k,132) = (rxt(k,294)* y(k,56) +rxt(k,140)* y(k,62) +rxt(k,159)* y(k,89) & + +rxt(k,134)* y(k,106) +rxt(k,370)* y(k,120) +rxt(k,377)* y(k,122) & + +rxt(k,154)* y(k,140) +rxt(k,414)* y(k,141) + (rxt(k,418) + & + rxt(k,419))* y(k,143) +rxt(k,120)* y(k,144) +rxt(k,126)* y(k,145) & + +rxt(k,426)* y(k,148) +rxt(k,430)* y(k,149) + rxt(k,5) + rxt(k,6) & + + rxt(k,98) + rxt(k,99) + rxt(k,100) + rxt(k,101) + rxt(k,102) & + + rxt(k,103) + rxt(k,104) + rxt(k,105) + rxt(k,106) + rxt(k,107) & + + het_rates(k,107))* y(k,107) + prod(k,132) = (rxt(k,137)*y(k,62) +rxt(k,141)*y(k,106) + & + 2.000_r8*rxt(k,142)*y(k,108) +rxt(k,146)*y(k,111) + & + rxt(k,151)*y(k,139) +rxt(k,163)*y(k,99) +rxt(k,183)*y(k,42) + & + rxt(k,190)*y(k,45) +rxt(k,216)*y(k,4) +rxt(k,222)*y(k,6) + & + rxt(k,264)*y(k,37) +rxt(k,277)*y(k,10) +rxt(k,304)*y(k,15) + & + rxt(k,312)*y(k,114))*y(k,139) + (rxt(k,8) + & + 2.000_r8*rxt(k,122)*y(k,144) +rxt(k,123)*y(k,144) + & + 2.000_r8*rxt(k,132)*y(k,106) +rxt(k,143)*y(k,62) + & + rxt(k,148)*y(k,111) +rxt(k,161)*y(k,98) +rxt(k,169)*y(k,97) + & + rxt(k,185)*y(k,42) +rxt(k,217)*y(k,4) +rxt(k,372)*y(k,120) + & + rxt(k,378)*y(k,122))*y(k,108) + (rxt(k,125)*y(k,145) + & + rxt(k,133)*y(k,106) +rxt(k,147)*y(k,111) +rxt(k,160)*y(k,98) + & + rxt(k,165)*y(k,99) +rxt(k,196)*y(k,45) +rxt(k,226)*y(k,6))*y(k,106) & + + (rxt(k,187)*y(k,45) +rxt(k,188)*y(k,45) +rxt(k,198)*y(k,111) + & + rxt(k,220)*y(k,6) +rxt(k,221)*y(k,6))*y(k,45) + (rxt(k,115) + & + rxt(k,124) +2.000_r8*rxt(k,126)*y(k,107))*y(k,145) +rxt(k,218)*y(k,6) & + *y(k,6) +rxt(k,152)*y(k,111)*y(k,74) +rxt(k,158)*y(k,98)*y(k,89) & + +rxt(k,172)*y(k,144)*y(k,90) +rxt(k,422)*y(k,147)*y(k,97) +rxt(k,19) & + *y(k,99) +rxt(k,116)*y(k,146) + loss(k,138) = (rxt(k,217)* y(k,4) +rxt(k,274)* y(k,9) +rxt(k,302)* y(k,14) & + +rxt(k,185)* y(k,42) +rxt(k,143)* y(k,62) +rxt(k,352)* y(k,79) & + +rxt(k,327)* y(k,83) +rxt(k,337)* y(k,88) +rxt(k,169)* y(k,97) & + +rxt(k,161)* y(k,98) +rxt(k,132)* y(k,106) +rxt(k,148)* y(k,111) & + +rxt(k,372)* y(k,120) +rxt(k,378)* y(k,122) +rxt(k,364)* y(k,133) & + +rxt(k,142)* y(k,139) + (rxt(k,122) +rxt(k,123))* y(k,144) & + + rxt(k,7) + rxt(k,8) + het_rates(k,108))* y(k,108) + prod(k,138) = (.150_r8*rxt(k,287)*y(k,32) +.150_r8*rxt(k,332)*y(k,86)) & + *y(k,139) +rxt(k,134)*y(k,107)*y(k,106) + loss(k,63) = (rxt(k,379)* y(k,122) + rxt(k,80) + het_rates(k,109))* y(k,109) + prod(k,63) = (rxt(k,189)*y(k,45) +rxt(k,219)*y(k,6))*y(k,45) + loss(k,65) = (rxt(k,368)* y(k,106) +rxt(k,369)* y(k,111) + rxt(k,109) & + + het_rates(k,110))* y(k,110) + prod(k,65) = 0._r8 + loss(k,144) = (rxt(k,341)* y(k,3) +rxt(k,227)* y(k,6) +rxt(k,298)* y(k,9) & + +rxt(k,279)* y(k,11) +rxt(k,280)* y(k,12) +rxt(k,282)* y(k,13) & + +rxt(k,319)* y(k,14) +rxt(k,306)* y(k,16) +rxt(k,307)* y(k,17) & + +rxt(k,243)* y(k,26) +rxt(k,261)* y(k,27) +rxt(k,245)* y(k,28) & + +rxt(k,246)* y(k,29) +rxt(k,284)* y(k,30) +rxt(k,248)* y(k,31) & + +rxt(k,320)* y(k,33) +rxt(k,309)* y(k,34) +rxt(k,289)* y(k,35) & + +rxt(k,290)* y(k,36) +rxt(k,266)* y(k,38) +rxt(k,267)* y(k,39) & + +rxt(k,268)* y(k,40) +rxt(k,250)* y(k,41) + (rxt(k,197) +rxt(k,198)) & + * y(k,45) +rxt(k,195)* y(k,46) +rxt(k,272)* y(k,48) + (rxt(k,367) + & + rxt(k,381))* y(k,52) +rxt(k,295)* y(k,60) +rxt(k,296)* y(k,61) & + +rxt(k,144)* y(k,63) +rxt(k,145)* y(k,65) +rxt(k,229)* y(k,67) & + +rxt(k,251)* y(k,68) +rxt(k,252)* y(k,69) +rxt(k,253)* y(k,70) & + +rxt(k,200)* y(k,71) +rxt(k,176)* y(k,73) +rxt(k,152)* y(k,74) & + +rxt(k,203)* y(k,76) +rxt(k,310)* y(k,77) +rxt(k,342)* y(k,78) & + +rxt(k,353)* y(k,79) +rxt(k,354)* y(k,82) +rxt(k,328)* y(k,83) & + +rxt(k,329)* y(k,85) +rxt(k,336)* y(k,87) +rxt(k,338)* y(k,88) & + +rxt(k,167)* y(k,89) +rxt(k,383)* y(k,95) +rxt(k,175)* y(k,98) & + +rxt(k,166)* y(k,99) +rxt(k,311)* y(k,100) +rxt(k,147)* y(k,106) & + +rxt(k,148)* y(k,108) +rxt(k,369)* y(k,110) + 2._r8*(rxt(k,149) + & + rxt(k,150))* y(k,111) +rxt(k,356)* y(k,112) +rxt(k,297)* y(k,113) & + +rxt(k,314)* y(k,117) +rxt(k,318)* y(k,119) +rxt(k,375)* y(k,120) & + +rxt(k,380)* y(k,122) +rxt(k,371)* y(k,123) +rxt(k,365)* y(k,133) & + +rxt(k,362)* y(k,135) +rxt(k,146)* y(k,139) + het_rates(k,111)) & + * y(k,111) + prod(k,144) = (2.000_r8*rxt(k,138)*y(k,62) +rxt(k,141)*y(k,106) + & + rxt(k,142)*y(k,108) +rxt(k,163)*y(k,99) +rxt(k,168)*y(k,97) + & + rxt(k,184)*y(k,42) +.450_r8*rxt(k,287)*y(k,32) + & + .150_r8*rxt(k,316)*y(k,118) +.450_r8*rxt(k,332)*y(k,86) + & + .206_r8*rxt(k,344)*y(k,80))*y(k,139) + (rxt(k,135)*y(k,63) + & + rxt(k,136)*y(k,65) +rxt(k,199)*y(k,71) +rxt(k,202)*y(k,76) + & + rxt(k,228)*y(k,67) +rxt(k,230)*y(k,75) +rxt(k,260)*y(k,27))*y(k,106) & + + (rxt(k,143)*y(k,62) +.130_r8*rxt(k,274)*y(k,9) + & + .360_r8*rxt(k,302)*y(k,14) +.240_r8*rxt(k,327)*y(k,83) + & + .360_r8*rxt(k,337)*y(k,88) +.320_r8*rxt(k,352)*y(k,79) + & + 1.156_r8*rxt(k,364)*y(k,133))*y(k,108) & + + (.300_r8*rxt(k,267)*y(k,39) +.500_r8*rxt(k,280)*y(k,12) + & + .500_r8*rxt(k,314)*y(k,117) +.100_r8*rxt(k,329)*y(k,85) + & + .500_r8*rxt(k,362)*y(k,135))*y(k,111) + (rxt(k,117)*y(k,63) + & + 2.000_r8*rxt(k,118)*y(k,151) +rxt(k,211)*y(k,71) + & + rxt(k,234)*y(k,67) +rxt(k,269)*y(k,40))*y(k,144) + (rxt(k,2) + & + rxt(k,238)*y(k,59))*y(k,151) +rxt(k,20)*y(k,12) +rxt(k,21)*y(k,16) & + +rxt(k,27)*y(k,36) +rxt(k,28)*y(k,39) +.330_r8*rxt(k,29)*y(k,40) & + +rxt(k,32)*y(k,58) +2.000_r8*rxt(k,4)*y(k,65) +rxt(k,9)*y(k,73) & + +rxt(k,10)*y(k,74) +rxt(k,78)*y(k,75) +rxt(k,79)*y(k,76) & + +.500_r8*rxt(k,387)*y(k,98) +rxt(k,44)*y(k,117) +rxt(k,45)*y(k,119) & + +rxt(k,46)*y(k,135) + loss(k,112) = (rxt(k,355)* y(k,99) +rxt(k,356)* y(k,111) + rxt(k,42) & + + rxt(k,389) + het_rates(k,112))* y(k,112) + prod(k,112) = (.794_r8*rxt(k,344)*y(k,139) +.794_r8*rxt(k,345)*y(k,97) + & + .794_r8*rxt(k,346)*y(k,99))*y(k,80) + (.800_r8*rxt(k,326)*y(k,84) + & + .080_r8*rxt(k,350)*y(k,81))*y(k,97) + loss(k,79) = (rxt(k,297)* y(k,111) + rxt(k,43) + rxt(k,300) & + + het_rates(k,113))* y(k,113) + prod(k,79) =rxt(k,299)*y(k,98)*y(k,32) + loss(k,96) = (rxt(k,313)* y(k,97) +rxt(k,312)* y(k,139) + het_rates(k,114)) & + * y(k,114) + prod(k,96) = (.500_r8*rxt(k,314)*y(k,117) +rxt(k,319)*y(k,14))*y(k,111) + loss(k,17) = ( + het_rates(k,115))* y(k,115) + prod(k,17) = 0._r8 + loss(k,18) = ( + het_rates(k,116))* y(k,116) + prod(k,18) = 0._r8 + loss(k,81) = (rxt(k,314)* y(k,111) + rxt(k,44) + het_rates(k,117))* y(k,117) + prod(k,81) =rxt(k,312)*y(k,139)*y(k,114) + loss(k,113) = (rxt(k,315)* y(k,37) +rxt(k,317)* y(k,97) +rxt(k,316)* y(k,139) & + + het_rates(k,118))* y(k,118) + prod(k,113) = (rxt(k,318)*y(k,119) +rxt(k,320)*y(k,33))*y(k,111) + loss(k,70) = (rxt(k,318)* y(k,111) + rxt(k,45) + het_rates(k,119))* y(k,119) + prod(k,70) =.850_r8*rxt(k,316)*y(k,139)*y(k,118) + loss(k,90) = (rxt(k,370)* y(k,107) +rxt(k,372)* y(k,108) +rxt(k,375) & + * y(k,111) + het_rates(k,120))* y(k,120) + prod(k,90) =rxt(k,109)*y(k,110) +rxt(k,110)*y(k,122) + loss(k,19) = ( + rxt(k,81) + het_rates(k,121))* y(k,121) + prod(k,19) = 0._r8 + loss(k,129) = (rxt(k,373)* y(k,6) +rxt(k,374)* y(k,45) +rxt(k,376)* y(k,98) & + +rxt(k,377)* y(k,107) +rxt(k,378)* y(k,108) +rxt(k,379)* y(k,109) & + +rxt(k,380)* y(k,111) + rxt(k,110) + het_rates(k,122))* y(k,122) + prod(k,129) = (rxt(k,370)*y(k,107) +rxt(k,372)*y(k,108) +rxt(k,375)*y(k,111)) & + *y(k,120) +rxt(k,368)*y(k,110)*y(k,106) +rxt(k,111)*y(k,123) + loss(k,109) = (rxt(k,371)* y(k,111) + rxt(k,111) + het_rates(k,123)) & + * y(k,123) + prod(k,109) = (rxt(k,373)*y(k,6) +rxt(k,374)*y(k,45) +rxt(k,376)*y(k,98) + & + rxt(k,377)*y(k,107) +rxt(k,378)*y(k,108) +rxt(k,379)*y(k,109) + & + rxt(k,380)*y(k,111))*y(k,122) + (rxt(k,366)*y(k,99) + & + rxt(k,367)*y(k,111) +.500_r8*rxt(k,381)*y(k,111))*y(k,52) & + +rxt(k,369)*y(k,111)*y(k,110) +rxt(k,112)*y(k,124) + loss(k,55) = (rxt(k,382)* y(k,151) + rxt(k,112) + het_rates(k,124))* y(k,124) + prod(k,55) =rxt(k,108)*y(k,66) +rxt(k,371)*y(k,123)*y(k,111) + loss(k,20) = ( + het_rates(k,125))* y(k,125) + prod(k,20) = 0._r8 + loss(k,21) = ( + het_rates(k,126))* y(k,126) + prod(k,21) = 0._r8 + loss(k,22) = ( + het_rates(k,127))* y(k,127) + prod(k,22) = 0._r8 + loss(k,23) = ( + het_rates(k,128))* y(k,128) + prod(k,23) = 0._r8 + loss(k,24) = ( + rxt(k,113) + het_rates(k,129))* y(k,129) + prod(k,24) = 0._r8 + loss(k,25) = ( + rxt(k,114) + het_rates(k,130))* y(k,130) + prod(k,25) = 0._r8 + loss(k,26) = ( + rxt(k,390) + het_rates(k,131))* y(k,131) + prod(k,26) = 0._r8 + loss(k,27) = ( + het_rates(k,132))* y(k,132) + prod(k,27) =rxt(k,390)*y(k,131) + loss(k,88) = (rxt(k,363)* y(k,99) +rxt(k,364)* y(k,108) +rxt(k,365)* y(k,111) & + + het_rates(k,133))* y(k,133) + prod(k,88) = 0._r8 + loss(k,120) = (rxt(k,357)* y(k,32) +rxt(k,358)* y(k,37) +rxt(k,360)* y(k,97) & + +rxt(k,361)* y(k,99) +rxt(k,359)* y(k,139) + het_rates(k,134)) & + * y(k,134) + prod(k,120) = (rxt(k,342)*y(k,78) +.800_r8*rxt(k,354)*y(k,82) + & + .500_r8*rxt(k,362)*y(k,135))*y(k,111) + loss(k,47) = (rxt(k,362)* y(k,111) + rxt(k,46) + het_rates(k,135))* y(k,135) + prod(k,47) =rxt(k,359)*y(k,139)*y(k,134) + loss(k,107) = (rxt(k,413)* y(k,141) +rxt(k,411)* y(k,142) +rxt(k,412) & + * y(k,147) + het_rates(k,138))* y(k,138) + prod(k,107) = (rxt(k,98) +rxt(k,100) +rxt(k,101) +rxt(k,102) +rxt(k,103) + & + rxt(k,105) +rxt(k,106) +rxt(k,107))*y(k,107) + (rxt(k,92) + & + rxt(k,93) +rxt(k,94) +rxt(k,95) +rxt(k,96) +rxt(k,97))*y(k,106) & + +rxt(k,83)*y(k,89) +rxt(k,15)*y(k,97) + loss(k,137) = (rxt(k,216)* y(k,4) +rxt(k,222)* y(k,6) +rxt(k,277)* y(k,10) & + +rxt(k,304)* y(k,15) +rxt(k,287)* y(k,32) +rxt(k,264)* y(k,37) & + + (rxt(k,183) +rxt(k,184))* y(k,42) +rxt(k,190)* y(k,45) +rxt(k,291) & + * y(k,57) + (rxt(k,137) +rxt(k,138) +rxt(k,139))* y(k,62) +rxt(k,344) & + * y(k,80) +rxt(k,349)* y(k,81) +rxt(k,323)* y(k,84) +rxt(k,332) & + * y(k,86) +rxt(k,168)* y(k,97) +rxt(k,173)* y(k,98) +rxt(k,163) & + * y(k,99) +rxt(k,141)* y(k,106) +rxt(k,142)* y(k,108) +rxt(k,146) & + * y(k,111) +rxt(k,312)* y(k,114) +rxt(k,316)* y(k,118) +rxt(k,359) & + * y(k,134) + 2._r8*rxt(k,151)* y(k,139) + rxt(k,384) & + + het_rates(k,139))* y(k,139) + prod(k,137) = (rxt(k,145)*y(k,65) +rxt(k,148)*y(k,108) +rxt(k,166)*y(k,99) + & + rxt(k,197)*y(k,45) +rxt(k,227)*y(k,6) +rxt(k,245)*y(k,28) + & + rxt(k,248)*y(k,31) +rxt(k,266)*y(k,38) +rxt(k,272)*y(k,48) + & + rxt(k,279)*y(k,11) +rxt(k,295)*y(k,60) +rxt(k,296)*y(k,61) + & + rxt(k,310)*y(k,77) +.200_r8*rxt(k,329)*y(k,85) + & + .500_r8*rxt(k,336)*y(k,87) +rxt(k,356)*y(k,112) + & + rxt(k,371)*y(k,123) +.500_r8*rxt(k,381)*y(k,52))*y(k,111) & + + (rxt(k,186)*y(k,45) +2.000_r8*rxt(k,262)*y(k,37) + & + rxt(k,265)*y(k,97) +rxt(k,276)*y(k,10) +.900_r8*rxt(k,286)*y(k,32) + & + rxt(k,303)*y(k,15) +.300_r8*rxt(k,315)*y(k,118) + & + .730_r8*rxt(k,322)*y(k,84) +rxt(k,331)*y(k,86) +rxt(k,348)*y(k,81) + & + .800_r8*rxt(k,358)*y(k,134))*y(k,37) + (rxt(k,278)*y(k,10) + & + .250_r8*rxt(k,292)*y(k,57) +rxt(k,305)*y(k,15) +rxt(k,313)*y(k,114) + & + .470_r8*rxt(k,325)*y(k,84) +.794_r8*rxt(k,345)*y(k,80) + & + .920_r8*rxt(k,350)*y(k,81) +rxt(k,360)*y(k,134))*y(k,97) & + + (rxt(k,259)*y(k,27) +.470_r8*rxt(k,324)*y(k,84) + & + .794_r8*rxt(k,346)*y(k,80) +rxt(k,351)*y(k,81) +rxt(k,355)*y(k,112) + & + rxt(k,361)*y(k,134))*y(k,99) + (.130_r8*rxt(k,274)*y(k,9) + & + .280_r8*rxt(k,302)*y(k,14) +.140_r8*rxt(k,327)*y(k,83) + & + .280_r8*rxt(k,337)*y(k,88) +.370_r8*rxt(k,352)*y(k,79))*y(k,108) & + + (rxt(k,179)*y(k,27) +rxt(k,182)*y(k,65) +rxt(k,244)*y(k,28) + & + rxt(k,247)*y(k,31))*y(k,42) + (.470_r8*rxt(k,321)*y(k,84) + & + rxt(k,347)*y(k,81) +rxt(k,357)*y(k,134))*y(k,32) & + + (rxt(k,215)*y(k,4) +rxt(k,260)*y(k,106))*y(k,27) + (rxt(k,293) + & + rxt(k,294)*y(k,107))*y(k,56) + (rxt(k,11) +rxt(k,177))*y(k,74) & + + (1.340_r8*rxt(k,37) +.660_r8*rxt(k,38))*y(k,83) & + +1.200_r8*rxt(k,275)*y(k,10)*y(k,10) +rxt(k,20)*y(k,12) +rxt(k,21) & + *y(k,16) +rxt(k,24)*y(k,30) +rxt(k,26)*y(k,34) +rxt(k,270)*y(k,144) & + *y(k,40) +2.000_r8*rxt(k,33)*y(k,60) +2.000_r8*rxt(k,34)*y(k,61) & + +rxt(k,140)*y(k,107)*y(k,62) +rxt(k,136)*y(k,106)*y(k,65) +rxt(k,35) & + *y(k,77) +rxt(k,36)*y(k,82) +rxt(k,42)*y(k,112) +rxt(k,44)*y(k,117) + loss(k,108) = (rxt(k,153)* y(k,106) +rxt(k,154)* y(k,107) +rxt(k,425) & + * y(k,148) + het_rates(k,140))* y(k,140) + prod(k,108) = (.800_r8*rxt(k,411)*y(k,142) +.900_r8*rxt(k,413)*y(k,141)) & + *y(k,138) +rxt(k,415)*y(k,141)*y(k,106) + loss(k,87) = ((rxt(k,415) +rxt(k,416))* y(k,106) +rxt(k,414)* y(k,107) & + +rxt(k,413)* y(k,138) + het_rates(k,141))* y(k,141) + prod(k,87) =rxt(k,428)*y(k,149) +rxt(k,433)*y(k,150) + loss(k,92) = (rxt(k,411)* y(k,138) + het_rates(k,142))* y(k,142) + prod(k,92) = (rxt(k,421) +rxt(k,420)*y(k,89) +rxt(k,422)*y(k,97))*y(k,147) & + +rxt(k,15)*y(k,97) +rxt(k,415)*y(k,141)*y(k,106) & + +rxt(k,419)*y(k,143)*y(k,107) +rxt(k,424)*y(k,148) + loss(k,100) = (rxt(k,417)* y(k,106) + (rxt(k,418) +rxt(k,419))* y(k,107) & + + het_rates(k,143))* y(k,143) + prod(k,100) =rxt(k,83)*y(k,89) +rxt(k,425)*y(k,148)*y(k,140) +rxt(k,434) & + *y(k,150) + loss(k,142) = (rxt(k,204)* y(k,18) +rxt(k,205)* y(k,19) +rxt(k,231)* y(k,20) & + +rxt(k,206)* y(k,21) +rxt(k,207)* y(k,22) +rxt(k,208)* y(k,23) & + +rxt(k,209)* y(k,24) +rxt(k,210)* y(k,25) +rxt(k,254)* y(k,26) & + +rxt(k,255)* y(k,28) + (rxt(k,269) +rxt(k,270) +rxt(k,271))* y(k,40) & + +rxt(k,232)* y(k,41) +rxt(k,240)* y(k,50) +rxt(k,241)* y(k,51) & + +rxt(k,117)* y(k,63) +rxt(k,233)* y(k,64) + (rxt(k,234) +rxt(k,235)) & + * y(k,67) +rxt(k,256)* y(k,68) +rxt(k,257)* y(k,69) +rxt(k,258) & + * y(k,70) + (rxt(k,211) +rxt(k,212))* y(k,71) + (rxt(k,171) + & + rxt(k,172))* y(k,90) + (rxt(k,120) +rxt(k,121))* y(k,107) & + + (rxt(k,122) +rxt(k,123))* y(k,108) +rxt(k,118)* y(k,151) & + + rxt(k,119) + het_rates(k,144))* y(k,144) + prod(k,142) = (rxt(k,5) +rxt(k,154)*y(k,140))*y(k,107) +rxt(k,12)*y(k,90) & + +rxt(k,7)*y(k,108) +.850_r8*rxt(k,412)*y(k,147)*y(k,138) +rxt(k,1) & + *y(k,151) + loss(k,45) = (rxt(k,125)* y(k,106) +rxt(k,126)* y(k,107) + rxt(k,115) & + + rxt(k,124) + het_rates(k,145))* y(k,145) + prod(k,45) = (rxt(k,128) +rxt(k,127)*y(k,49) +rxt(k,129)*y(k,106) + & + rxt(k,130)*y(k,107) +rxt(k,131)*y(k,108))*y(k,146) +rxt(k,7)*y(k,108) + loss(k,46) = (rxt(k,127)* y(k,49) +rxt(k,129)* y(k,106) +rxt(k,130)* y(k,107) & + +rxt(k,131)* y(k,108) + rxt(k,116) + rxt(k,128) + het_rates(k,146)) & + * y(k,146) + prod(k,46) =rxt(k,120)*y(k,144)*y(k,107) + loss(k,106) = (rxt(k,420)* y(k,89) +rxt(k,422)* y(k,97) +rxt(k,412)* y(k,138) & + + rxt(k,421) + het_rates(k,147))* y(k,147) + prod(k,106) = (rxt(k,102) +rxt(k,107) +rxt(k,414)*y(k,141) + & + rxt(k,418)*y(k,143) +rxt(k,426)*y(k,148) +rxt(k,430)*y(k,149)) & + *y(k,107) +rxt(k,423)*y(k,148)*y(k,49) + loss(k,105) = (rxt(k,423)* y(k,49) +rxt(k,426)* y(k,107) +rxt(k,425) & + * y(k,140) + rxt(k,424) + het_rates(k,148))* y(k,148) + prod(k,105) = (rxt(k,93) +rxt(k,97) +rxt(k,416)*y(k,141) + & + rxt(k,417)*y(k,143) +rxt(k,429)*y(k,149) +rxt(k,435)*y(k,150)) & + *y(k,106) + (rxt(k,103) +rxt(k,106))*y(k,107) & + + (rxt(k,427)*y(k,149) +rxt(k,432)*y(k,150))*y(k,138) +rxt(k,409) & + *y(k,149) +rxt(k,408)*y(k,150) + loss(k,77) = (rxt(k,429)* y(k,106) +rxt(k,430)* y(k,107) +rxt(k,427) & + * y(k,138) + rxt(k,409) + rxt(k,428) + het_rates(k,149))* y(k,149) + prod(k,77) = (rxt(k,94) +rxt(k,95))*y(k,106) + (rxt(k,98) +rxt(k,100)) & + *y(k,107) + (rxt(k,410) +rxt(k,431)*y(k,138))*y(k,150) + loss(k,76) = (rxt(k,435)* y(k,106) + (rxt(k,431) +rxt(k,432))* y(k,138) & + + rxt(k,408) + rxt(k,410) + rxt(k,433) + rxt(k,434) & + + het_rates(k,150))* y(k,150) + prod(k,76) = (rxt(k,92) +rxt(k,96))*y(k,106) + (rxt(k,101) +rxt(k,105)) & + *y(k,107) + loss(k,149) = (rxt(k,238)* y(k,59) +rxt(k,382)* y(k,124) +rxt(k,118) & + * y(k,144) + rxt(k,1) + rxt(k,2) + rxt(k,3) + het_rates(k,151)) & + * y(k,151) + prod(k,149) = (rxt(k,144)*y(k,63) +rxt(k,145)*y(k,65) +rxt(k,146)*y(k,139) + & + rxt(k,149)*y(k,111) +rxt(k,152)*y(k,74) +rxt(k,176)*y(k,73) + & + rxt(k,200)*y(k,71) +rxt(k,203)*y(k,76) +rxt(k,229)*y(k,67) + & + rxt(k,243)*y(k,26) +rxt(k,245)*y(k,28) +rxt(k,246)*y(k,29) + & + rxt(k,248)*y(k,31) +rxt(k,253)*y(k,70) +rxt(k,261)*y(k,27) + & + rxt(k,267)*y(k,39) +rxt(k,268)*y(k,40) +rxt(k,282)*y(k,13) + & + rxt(k,284)*y(k,30) +rxt(k,289)*y(k,35) +rxt(k,290)*y(k,36) + & + rxt(k,306)*y(k,16) +rxt(k,307)*y(k,17) +rxt(k,309)*y(k,34) + & + rxt(k,314)*y(k,117) +rxt(k,318)*y(k,119) +rxt(k,320)*y(k,33) + & + .500_r8*rxt(k,328)*y(k,83) +rxt(k,383)*y(k,95))*y(k,111) & + + (rxt(k,392)*y(k,76) +rxt(k,398)*y(k,76) +rxt(k,399)*y(k,75) + & + rxt(k,403)*y(k,76) +rxt(k,404)*y(k,75))*y(k,71) + (rxt(k,384) + & + rxt(k,139)*y(k,62))*y(k,139) +.050_r8*rxt(k,29)*y(k,40) +rxt(k,108) & + *y(k,66) + end do + end subroutine imp_prod_loss + end module mo_prod_loss diff --git a/src/chemistry/pp_waccm_t4ma_mam5/mo_rxt_rates_conv.F90 b/src/chemistry/pp_waccm_t4ma_mam5/mo_rxt_rates_conv.F90 new file mode 100644 index 0000000000..173d842c37 --- /dev/null +++ b/src/chemistry/pp_waccm_t4ma_mam5/mo_rxt_rates_conv.F90 @@ -0,0 +1,447 @@ +module mo_rxt_rates_conv + use shr_kind_mod, only : r8 => shr_kind_r8 + implicit none + private + public :: set_rates +contains + subroutine set_rates( rxt_rates, sol, ncol ) + real(r8), intent(inout) :: rxt_rates(:,:,:) + real(r8), intent(in) :: sol(:,:,:) + integer, intent(in) :: ncol + rxt_rates(:ncol,:, 1) = rxt_rates(:ncol,:, 1)*sol(:ncol,:, 151) ! rate_const*H2O + rxt_rates(:ncol,:, 2) = rxt_rates(:ncol,:, 2)*sol(:ncol,:, 151) ! rate_const*H2O + rxt_rates(:ncol,:, 3) = rxt_rates(:ncol,:, 3)*sol(:ncol,:, 151) ! rate_const*H2O + rxt_rates(:ncol,:, 4) = rxt_rates(:ncol,:, 4)*sol(:ncol,:, 65) ! rate_const*H2O2 + rxt_rates(:ncol,:, 5) = rxt_rates(:ncol,:, 5)*sol(:ncol,:, 107) ! rate_const*O2 + rxt_rates(:ncol,:, 6) = rxt_rates(:ncol,:, 6)*sol(:ncol,:, 107) ! rate_const*O2 + rxt_rates(:ncol,:, 7) = rxt_rates(:ncol,:, 7)*sol(:ncol,:, 108) ! rate_const*O3 + rxt_rates(:ncol,:, 8) = rxt_rates(:ncol,:, 8)*sol(:ncol,:, 108) ! rate_const*O3 + rxt_rates(:ncol,:, 9) = rxt_rates(:ncol,:, 9)*sol(:ncol,:, 73) ! rate_const*HNO3 + rxt_rates(:ncol,:, 10) = rxt_rates(:ncol,:, 10)*sol(:ncol,:, 74) ! rate_const*HO2NO2 + rxt_rates(:ncol,:, 11) = rxt_rates(:ncol,:, 11)*sol(:ncol,:, 74) ! rate_const*HO2NO2 + rxt_rates(:ncol,:, 12) = rxt_rates(:ncol,:, 12)*sol(:ncol,:, 90) ! rate_const*N2O + rxt_rates(:ncol,:, 13) = rxt_rates(:ncol,:, 13)*sol(:ncol,:, 91) ! rate_const*N2O5 + rxt_rates(:ncol,:, 14) = rxt_rates(:ncol,:, 14)*sol(:ncol,:, 91) ! rate_const*N2O5 + rxt_rates(:ncol,:, 15) = rxt_rates(:ncol,:, 15)*sol(:ncol,:, 97) ! rate_const*NO + rxt_rates(:ncol,:, 16) = rxt_rates(:ncol,:, 16)*sol(:ncol,:, 97) ! rate_const*NO + rxt_rates(:ncol,:, 17) = rxt_rates(:ncol,:, 17)*sol(:ncol,:, 98) ! rate_const*NO2 + rxt_rates(:ncol,:, 18) = rxt_rates(:ncol,:, 18)*sol(:ncol,:, 99) ! rate_const*NO3 + rxt_rates(:ncol,:, 19) = rxt_rates(:ncol,:, 19)*sol(:ncol,:, 99) ! rate_const*NO3 + rxt_rates(:ncol,:, 20) = rxt_rates(:ncol,:, 20)*sol(:ncol,:, 12) ! rate_const*C2H5OOH + rxt_rates(:ncol,:, 21) = rxt_rates(:ncol,:, 21)*sol(:ncol,:, 16) ! rate_const*C3H7OOH + rxt_rates(:ncol,:, 22) = rxt_rates(:ncol,:, 22)*sol(:ncol,:, 27) ! rate_const*CH2O + rxt_rates(:ncol,:, 23) = rxt_rates(:ncol,:, 23)*sol(:ncol,:, 27) ! rate_const*CH2O + rxt_rates(:ncol,:, 24) = rxt_rates(:ncol,:, 24)*sol(:ncol,:, 30) ! rate_const*CH3CHO + rxt_rates(:ncol,:, 25) = rxt_rates(:ncol,:, 25)*sol(:ncol,:, 33) ! rate_const*CH3COCH3 + rxt_rates(:ncol,:, 26) = rxt_rates(:ncol,:, 26)*sol(:ncol,:, 34) ! rate_const*CH3COCHO + rxt_rates(:ncol,:, 27) = rxt_rates(:ncol,:, 27)*sol(:ncol,:, 36) ! rate_const*CH3COOOH + rxt_rates(:ncol,:, 28) = rxt_rates(:ncol,:, 28)*sol(:ncol,:, 39) ! rate_const*CH3OOH + rxt_rates(:ncol,:, 29) = rxt_rates(:ncol,:, 29)*sol(:ncol,:, 40) ! rate_const*CH4 + rxt_rates(:ncol,:, 30) = rxt_rates(:ncol,:, 30)*sol(:ncol,:, 40) ! rate_const*CH4 + rxt_rates(:ncol,:, 31) = rxt_rates(:ncol,:, 31)*sol(:ncol,:, 49) ! rate_const*CO2 + rxt_rates(:ncol,:, 32) = rxt_rates(:ncol,:, 32)*sol(:ncol,:, 58) ! rate_const*EOOH + rxt_rates(:ncol,:, 33) = rxt_rates(:ncol,:, 33)*sol(:ncol,:, 60) ! rate_const*GLYALD + rxt_rates(:ncol,:, 34) = rxt_rates(:ncol,:, 34)*sol(:ncol,:, 61) ! rate_const*GLYOXAL + rxt_rates(:ncol,:, 35) = rxt_rates(:ncol,:, 35)*sol(:ncol,:, 77) ! rate_const*HYAC + rxt_rates(:ncol,:, 36) = rxt_rates(:ncol,:, 36)*sol(:ncol,:, 82) ! rate_const*ISOPOOH + rxt_rates(:ncol,:, 37) = rxt_rates(:ncol,:, 37)*sol(:ncol,:, 83) ! rate_const*MACR + rxt_rates(:ncol,:, 38) = rxt_rates(:ncol,:, 38)*sol(:ncol,:, 83) ! rate_const*MACR + rxt_rates(:ncol,:, 39) = rxt_rates(:ncol,:, 39)*sol(:ncol,:, 87) ! rate_const*MPAN + rxt_rates(:ncol,:, 40) = rxt_rates(:ncol,:, 40)*sol(:ncol,:, 88) ! rate_const*MVK + rxt_rates(:ncol,:, 41) = rxt_rates(:ncol,:, 41)*sol(:ncol,:, 100) ! rate_const*NOA + rxt_rates(:ncol,:, 42) = rxt_rates(:ncol,:, 42)*sol(:ncol,:, 112) ! rate_const*ONITR + rxt_rates(:ncol,:, 43) = rxt_rates(:ncol,:, 43)*sol(:ncol,:, 113) ! rate_const*PAN + rxt_rates(:ncol,:, 44) = rxt_rates(:ncol,:, 44)*sol(:ncol,:, 117) ! rate_const*POOH + rxt_rates(:ncol,:, 45) = rxt_rates(:ncol,:, 45)*sol(:ncol,:, 119) ! rate_const*ROOH + rxt_rates(:ncol,:, 46) = rxt_rates(:ncol,:, 46)*sol(:ncol,:, 135) ! rate_const*XOOH + rxt_rates(:ncol,:, 47) = rxt_rates(:ncol,:, 47)*sol(:ncol,:, 5) ! rate_const*BRCL + rxt_rates(:ncol,:, 48) = rxt_rates(:ncol,:, 48)*sol(:ncol,:, 6) ! rate_const*BRO + rxt_rates(:ncol,:, 49) = rxt_rates(:ncol,:, 49)*sol(:ncol,:, 7) ! rate_const*BRONO2 + rxt_rates(:ncol,:, 50) = rxt_rates(:ncol,:, 50)*sol(:ncol,:, 7) ! rate_const*BRONO2 + rxt_rates(:ncol,:, 51) = rxt_rates(:ncol,:, 51)*sol(:ncol,:, 18) ! rate_const*CCL4 + rxt_rates(:ncol,:, 52) = rxt_rates(:ncol,:, 52)*sol(:ncol,:, 19) ! rate_const*CF2CLBR + rxt_rates(:ncol,:, 53) = rxt_rates(:ncol,:, 53)*sol(:ncol,:, 20) ! rate_const*CF3BR + rxt_rates(:ncol,:, 54) = rxt_rates(:ncol,:, 54)*sol(:ncol,:, 21) ! rate_const*CFC11 + rxt_rates(:ncol,:, 55) = rxt_rates(:ncol,:, 55)*sol(:ncol,:, 22) ! rate_const*CFC113 + rxt_rates(:ncol,:, 56) = rxt_rates(:ncol,:, 56)*sol(:ncol,:, 23) ! rate_const*CFC114 + rxt_rates(:ncol,:, 57) = rxt_rates(:ncol,:, 57)*sol(:ncol,:, 24) ! rate_const*CFC115 + rxt_rates(:ncol,:, 58) = rxt_rates(:ncol,:, 58)*sol(:ncol,:, 25) ! rate_const*CFC12 + rxt_rates(:ncol,:, 59) = rxt_rates(:ncol,:, 59)*sol(:ncol,:, 26) ! rate_const*CH2BR2 + rxt_rates(:ncol,:, 60) = rxt_rates(:ncol,:, 60)*sol(:ncol,:, 28) ! rate_const*CH3BR + rxt_rates(:ncol,:, 61) = rxt_rates(:ncol,:, 61)*sol(:ncol,:, 29) ! rate_const*CH3CCL3 + rxt_rates(:ncol,:, 62) = rxt_rates(:ncol,:, 62)*sol(:ncol,:, 31) ! rate_const*CH3CL + rxt_rates(:ncol,:, 63) = rxt_rates(:ncol,:, 63)*sol(:ncol,:, 41) ! rate_const*CHBR3 + rxt_rates(:ncol,:, 64) = rxt_rates(:ncol,:, 64)*sol(:ncol,:, 43) ! rate_const*CL2 + rxt_rates(:ncol,:, 65) = rxt_rates(:ncol,:, 65)*sol(:ncol,:, 44) ! rate_const*CL2O2 + rxt_rates(:ncol,:, 66) = rxt_rates(:ncol,:, 66)*sol(:ncol,:, 45) ! rate_const*CLO + rxt_rates(:ncol,:, 67) = rxt_rates(:ncol,:, 67)*sol(:ncol,:, 46) ! rate_const*CLONO2 + rxt_rates(:ncol,:, 68) = rxt_rates(:ncol,:, 68)*sol(:ncol,:, 46) ! rate_const*CLONO2 + rxt_rates(:ncol,:, 69) = rxt_rates(:ncol,:, 69)*sol(:ncol,:, 50) ! rate_const*COF2 + rxt_rates(:ncol,:, 70) = rxt_rates(:ncol,:, 70)*sol(:ncol,:, 51) ! rate_const*COFCL + rxt_rates(:ncol,:, 71) = rxt_rates(:ncol,:, 71)*sol(:ncol,:, 64) ! rate_const*H2402 + rxt_rates(:ncol,:, 72) = rxt_rates(:ncol,:, 72)*sol(:ncol,:, 67) ! rate_const*HBR + rxt_rates(:ncol,:, 73) = rxt_rates(:ncol,:, 73)*sol(:ncol,:, 68) ! rate_const*HCFC141B + rxt_rates(:ncol,:, 74) = rxt_rates(:ncol,:, 74)*sol(:ncol,:, 69) ! rate_const*HCFC142B + rxt_rates(:ncol,:, 75) = rxt_rates(:ncol,:, 75)*sol(:ncol,:, 70) ! rate_const*HCFC22 + rxt_rates(:ncol,:, 76) = rxt_rates(:ncol,:, 76)*sol(:ncol,:, 71) ! rate_const*HCL + rxt_rates(:ncol,:, 77) = rxt_rates(:ncol,:, 77)*sol(:ncol,:, 72) ! rate_const*HF + rxt_rates(:ncol,:, 78) = rxt_rates(:ncol,:, 78)*sol(:ncol,:, 75) ! rate_const*HOBR + rxt_rates(:ncol,:, 79) = rxt_rates(:ncol,:, 79)*sol(:ncol,:, 76) ! rate_const*HOCL + rxt_rates(:ncol,:, 80) = rxt_rates(:ncol,:, 80)*sol(:ncol,:, 109) ! rate_const*OCLO + rxt_rates(:ncol,:, 81) = rxt_rates(:ncol,:, 81)*sol(:ncol,:, 121) ! rate_const*SF6 + rxt_rates(:ncol,:, 82) = rxt_rates(:ncol,:, 82)*sol(:ncol,:, 49) ! rate_const*CO2 + rxt_rates(:ncol,:, 83) = rxt_rates(:ncol,:, 83)*sol(:ncol,:, 89) ! rate_const*N + ! rate_const*N2 + ! rate_const*N2 + ! rate_const*N2 + ! rate_const*N2 + ! rate_const*N2 + ! rate_const*N2 + ! rate_const*N2 + ! rate_const*N2 + rxt_rates(:ncol,:, 92) = rxt_rates(:ncol,:, 92)*sol(:ncol,:, 106) ! rate_const*O + rxt_rates(:ncol,:, 93) = rxt_rates(:ncol,:, 93)*sol(:ncol,:, 106) ! rate_const*O + rxt_rates(:ncol,:, 94) = rxt_rates(:ncol,:, 94)*sol(:ncol,:, 106) ! rate_const*O + rxt_rates(:ncol,:, 95) = rxt_rates(:ncol,:, 95)*sol(:ncol,:, 106) ! rate_const*O + rxt_rates(:ncol,:, 96) = rxt_rates(:ncol,:, 96)*sol(:ncol,:, 106) ! rate_const*O + rxt_rates(:ncol,:, 97) = rxt_rates(:ncol,:, 97)*sol(:ncol,:, 106) ! rate_const*O + rxt_rates(:ncol,:, 98) = rxt_rates(:ncol,:, 98)*sol(:ncol,:, 107) ! rate_const*O2 + rxt_rates(:ncol,:, 99) = rxt_rates(:ncol,:, 99)*sol(:ncol,:, 107) ! rate_const*O2 + rxt_rates(:ncol,:, 100) = rxt_rates(:ncol,:, 100)*sol(:ncol,:, 107) ! rate_const*O2 + rxt_rates(:ncol,:, 101) = rxt_rates(:ncol,:, 101)*sol(:ncol,:, 107) ! rate_const*O2 + rxt_rates(:ncol,:, 102) = rxt_rates(:ncol,:, 102)*sol(:ncol,:, 107) ! rate_const*O2 + rxt_rates(:ncol,:, 103) = rxt_rates(:ncol,:, 103)*sol(:ncol,:, 107) ! rate_const*O2 + rxt_rates(:ncol,:, 104) = rxt_rates(:ncol,:, 104)*sol(:ncol,:, 107) ! rate_const*O2 + rxt_rates(:ncol,:, 105) = rxt_rates(:ncol,:, 105)*sol(:ncol,:, 107) ! rate_const*O2 + rxt_rates(:ncol,:, 106) = rxt_rates(:ncol,:, 106)*sol(:ncol,:, 107) ! rate_const*O2 + rxt_rates(:ncol,:, 107) = rxt_rates(:ncol,:, 107)*sol(:ncol,:, 107) ! rate_const*O2 + rxt_rates(:ncol,:, 108) = rxt_rates(:ncol,:, 108)*sol(:ncol,:, 66) ! rate_const*H2SO4 + rxt_rates(:ncol,:, 109) = rxt_rates(:ncol,:, 109)*sol(:ncol,:, 110) ! rate_const*OCS + rxt_rates(:ncol,:, 110) = rxt_rates(:ncol,:, 110)*sol(:ncol,:, 122) ! rate_const*SO + rxt_rates(:ncol,:, 111) = rxt_rates(:ncol,:, 111)*sol(:ncol,:, 123) ! rate_const*SO2 + rxt_rates(:ncol,:, 112) = rxt_rates(:ncol,:, 112)*sol(:ncol,:, 124) ! rate_const*SO3 + rxt_rates(:ncol,:, 113) = rxt_rates(:ncol,:, 113)*sol(:ncol,:, 129) ! rate_const*soa_a1 + rxt_rates(:ncol,:, 114) = rxt_rates(:ncol,:, 114)*sol(:ncol,:, 130) ! rate_const*soa_a2 + rxt_rates(:ncol,:, 115) = rxt_rates(:ncol,:, 115)*sol(:ncol,:, 145) ! rate_const*O2_1D + rxt_rates(:ncol,:, 116) = rxt_rates(:ncol,:, 116)*sol(:ncol,:, 146) ! rate_const*O2_1S + rxt_rates(:ncol,:, 117) = rxt_rates(:ncol,:, 117)*sol(:ncol,:, 144)*sol(:ncol,:, 63) ! rate_const*O1D*H2 + rxt_rates(:ncol,:, 118) = rxt_rates(:ncol,:, 118)*sol(:ncol,:, 144)*sol(:ncol,:, 151) ! rate_const*O1D*H2O + rxt_rates(:ncol,:, 119) = rxt_rates(:ncol,:, 119)*sol(:ncol,:, 144) ! rate_const*N2*O1D + rxt_rates(:ncol,:, 120) = rxt_rates(:ncol,:, 120)*sol(:ncol,:, 144)*sol(:ncol,:, 107) ! rate_const*O1D*O2 + rxt_rates(:ncol,:, 121) = rxt_rates(:ncol,:, 121)*sol(:ncol,:, 144)*sol(:ncol,:, 107) ! rate_const*O1D*O2 + rxt_rates(:ncol,:, 122) = rxt_rates(:ncol,:, 122)*sol(:ncol,:, 144)*sol(:ncol,:, 108) ! rate_const*O1D*O3 + rxt_rates(:ncol,:, 123) = rxt_rates(:ncol,:, 123)*sol(:ncol,:, 144)*sol(:ncol,:, 108) ! rate_const*O1D*O3 + rxt_rates(:ncol,:, 124) = rxt_rates(:ncol,:, 124)*sol(:ncol,:, 145) ! rate_const*N2*O2_1D + rxt_rates(:ncol,:, 125) = rxt_rates(:ncol,:, 125)*sol(:ncol,:, 145)*sol(:ncol,:, 106) ! rate_const*O2_1D*O + rxt_rates(:ncol,:, 126) = rxt_rates(:ncol,:, 126)*sol(:ncol,:, 145)*sol(:ncol,:, 107) ! rate_const*O2_1D*O2 + rxt_rates(:ncol,:, 127) = rxt_rates(:ncol,:, 127)*sol(:ncol,:, 146)*sol(:ncol,:, 49) ! rate_const*O2_1S*CO2 + rxt_rates(:ncol,:, 128) = rxt_rates(:ncol,:, 128)*sol(:ncol,:, 146) ! rate_const*N2*O2_1S + rxt_rates(:ncol,:, 129) = rxt_rates(:ncol,:, 129)*sol(:ncol,:, 146)*sol(:ncol,:, 106) ! rate_const*O2_1S*O + rxt_rates(:ncol,:, 130) = rxt_rates(:ncol,:, 130)*sol(:ncol,:, 146)*sol(:ncol,:, 107) ! rate_const*O2_1S*O2 + rxt_rates(:ncol,:, 131) = rxt_rates(:ncol,:, 131)*sol(:ncol,:, 146)*sol(:ncol,:, 108) ! rate_const*O2_1S*O3 + rxt_rates(:ncol,:, 132) = rxt_rates(:ncol,:, 132)*sol(:ncol,:, 106)*sol(:ncol,:, 108) ! rate_const*O*O3 + rxt_rates(:ncol,:, 133) = rxt_rates(:ncol,:, 133)*sol(:ncol,:, 106)*sol(:ncol,:, 106) ! rate_const*M*O*O + rxt_rates(:ncol,:, 134) = rxt_rates(:ncol,:, 134)*sol(:ncol,:, 106)*sol(:ncol,:, 107) ! rate_const*M*O*O2 + rxt_rates(:ncol,:, 135) = rxt_rates(:ncol,:, 135)*sol(:ncol,:, 63)*sol(:ncol,:, 106) ! rate_const*H2*O + rxt_rates(:ncol,:, 136) = rxt_rates(:ncol,:, 136)*sol(:ncol,:, 65)*sol(:ncol,:, 106) ! rate_const*H2O2*O + rxt_rates(:ncol,:, 137) = rxt_rates(:ncol,:, 137)*sol(:ncol,:, 62)*sol(:ncol,:, 139) ! rate_const*H*HO2 + rxt_rates(:ncol,:, 138) = rxt_rates(:ncol,:, 138)*sol(:ncol,:, 62)*sol(:ncol,:, 139) ! rate_const*H*HO2 + rxt_rates(:ncol,:, 139) = rxt_rates(:ncol,:, 139)*sol(:ncol,:, 62)*sol(:ncol,:, 139) ! rate_const*H*HO2 + rxt_rates(:ncol,:, 140) = rxt_rates(:ncol,:, 140)*sol(:ncol,:, 62)*sol(:ncol,:, 107) ! rate_const*M*H*O2 + rxt_rates(:ncol,:, 141) = rxt_rates(:ncol,:, 141)*sol(:ncol,:, 139)*sol(:ncol,:, 106) ! rate_const*HO2*O + rxt_rates(:ncol,:, 142) = rxt_rates(:ncol,:, 142)*sol(:ncol,:, 139)*sol(:ncol,:, 108) ! rate_const*HO2*O3 + rxt_rates(:ncol,:, 143) = rxt_rates(:ncol,:, 143)*sol(:ncol,:, 62)*sol(:ncol,:, 108) ! rate_const*H*O3 + rxt_rates(:ncol,:, 144) = rxt_rates(:ncol,:, 144)*sol(:ncol,:, 111)*sol(:ncol,:, 63) ! rate_const*OH*H2 + rxt_rates(:ncol,:, 145) = rxt_rates(:ncol,:, 145)*sol(:ncol,:, 111)*sol(:ncol,:, 65) ! rate_const*OH*H2O2 + rxt_rates(:ncol,:, 146) = rxt_rates(:ncol,:, 146)*sol(:ncol,:, 111)*sol(:ncol,:, 139) ! rate_const*OH*HO2 + rxt_rates(:ncol,:, 147) = rxt_rates(:ncol,:, 147)*sol(:ncol,:, 111)*sol(:ncol,:, 106) ! rate_const*OH*O + rxt_rates(:ncol,:, 148) = rxt_rates(:ncol,:, 148)*sol(:ncol,:, 111)*sol(:ncol,:, 108) ! rate_const*OH*O3 + rxt_rates(:ncol,:, 149) = rxt_rates(:ncol,:, 149)*sol(:ncol,:, 111)*sol(:ncol,:, 111) ! rate_const*OH*OH + rxt_rates(:ncol,:, 150) = rxt_rates(:ncol,:, 150)*sol(:ncol,:, 111)*sol(:ncol,:, 111) ! rate_const*M*OH*OH + rxt_rates(:ncol,:, 151) = rxt_rates(:ncol,:, 151)*sol(:ncol,:, 139)*sol(:ncol,:, 139) ! rate_const*HO2*HO2 + rxt_rates(:ncol,:, 152) = rxt_rates(:ncol,:, 152)*sol(:ncol,:, 74)*sol(:ncol,:, 111) ! rate_const*HO2NO2*OH + rxt_rates(:ncol,:, 153) = rxt_rates(:ncol,:, 153)*sol(:ncol,:, 140)*sol(:ncol,:, 106) ! rate_const*N2D*O + rxt_rates(:ncol,:, 154) = rxt_rates(:ncol,:, 154)*sol(:ncol,:, 140)*sol(:ncol,:, 107) ! rate_const*N2D*O2 + rxt_rates(:ncol,:, 155) = rxt_rates(:ncol,:, 155)*sol(:ncol,:, 89)*sol(:ncol,:, 97) ! rate_const*N*NO + rxt_rates(:ncol,:, 156) = rxt_rates(:ncol,:, 156)*sol(:ncol,:, 89)*sol(:ncol,:, 98) ! rate_const*N*NO2 + rxt_rates(:ncol,:, 157) = rxt_rates(:ncol,:, 157)*sol(:ncol,:, 89)*sol(:ncol,:, 98) ! rate_const*N*NO2 + rxt_rates(:ncol,:, 158) = rxt_rates(:ncol,:, 158)*sol(:ncol,:, 89)*sol(:ncol,:, 98) ! rate_const*N*NO2 + rxt_rates(:ncol,:, 159) = rxt_rates(:ncol,:, 159)*sol(:ncol,:, 89)*sol(:ncol,:, 107) ! rate_const*N*O2 + rxt_rates(:ncol,:, 160) = rxt_rates(:ncol,:, 160)*sol(:ncol,:, 98)*sol(:ncol,:, 106) ! rate_const*NO2*O + rxt_rates(:ncol,:, 161) = rxt_rates(:ncol,:, 161)*sol(:ncol,:, 98)*sol(:ncol,:, 108) ! rate_const*NO2*O3 + rxt_rates(:ncol,:, 162) = rxt_rates(:ncol,:, 162)*sol(:ncol,:, 98)*sol(:ncol,:, 106) ! rate_const*M*NO2*O + rxt_rates(:ncol,:, 163) = rxt_rates(:ncol,:, 163)*sol(:ncol,:, 99)*sol(:ncol,:, 139) ! rate_const*NO3*HO2 + rxt_rates(:ncol,:, 164) = rxt_rates(:ncol,:, 164)*sol(:ncol,:, 99)*sol(:ncol,:, 97) ! rate_const*NO3*NO + rxt_rates(:ncol,:, 165) = rxt_rates(:ncol,:, 165)*sol(:ncol,:, 99)*sol(:ncol,:, 106) ! rate_const*NO3*O + rxt_rates(:ncol,:, 166) = rxt_rates(:ncol,:, 166)*sol(:ncol,:, 99)*sol(:ncol,:, 111) ! rate_const*NO3*OH + rxt_rates(:ncol,:, 167) = rxt_rates(:ncol,:, 167)*sol(:ncol,:, 89)*sol(:ncol,:, 111) ! rate_const*N*OH + rxt_rates(:ncol,:, 168) = rxt_rates(:ncol,:, 168)*sol(:ncol,:, 97)*sol(:ncol,:, 139) ! rate_const*NO*HO2 + rxt_rates(:ncol,:, 169) = rxt_rates(:ncol,:, 169)*sol(:ncol,:, 97)*sol(:ncol,:, 108) ! rate_const*NO*O3 + rxt_rates(:ncol,:, 170) = rxt_rates(:ncol,:, 170)*sol(:ncol,:, 97)*sol(:ncol,:, 106) ! rate_const*M*NO*O + rxt_rates(:ncol,:, 171) = rxt_rates(:ncol,:, 171)*sol(:ncol,:, 144)*sol(:ncol,:, 90) ! rate_const*O1D*N2O + rxt_rates(:ncol,:, 172) = rxt_rates(:ncol,:, 172)*sol(:ncol,:, 144)*sol(:ncol,:, 90) ! rate_const*O1D*N2O + rxt_rates(:ncol,:, 173) = rxt_rates(:ncol,:, 173)*sol(:ncol,:, 98)*sol(:ncol,:, 139) ! rate_const*M*NO2*HO2 + rxt_rates(:ncol,:, 174) = rxt_rates(:ncol,:, 174)*sol(:ncol,:, 98)*sol(:ncol,:, 99) ! rate_const*M*NO2*NO3 + rxt_rates(:ncol,:, 175) = rxt_rates(:ncol,:, 175)*sol(:ncol,:, 98)*sol(:ncol,:, 111) ! rate_const*M*NO2*OH + rxt_rates(:ncol,:, 176) = rxt_rates(:ncol,:, 176)*sol(:ncol,:, 73)*sol(:ncol,:, 111) ! rate_const*HNO3*OH + rxt_rates(:ncol,:, 177) = rxt_rates(:ncol,:, 177)*sol(:ncol,:, 74) ! rate_const*M*HO2NO2 + rxt_rates(:ncol,:, 178) = rxt_rates(:ncol,:, 178)*sol(:ncol,:, 91) ! rate_const*M*N2O5 + rxt_rates(:ncol,:, 179) = rxt_rates(:ncol,:, 179)*sol(:ncol,:, 42)*sol(:ncol,:, 27) ! rate_const*CL*CH2O + rxt_rates(:ncol,:, 180) = rxt_rates(:ncol,:, 180)*sol(:ncol,:, 42)*sol(:ncol,:, 40) ! rate_const*CL*CH4 + rxt_rates(:ncol,:, 181) = rxt_rates(:ncol,:, 181)*sol(:ncol,:, 42)*sol(:ncol,:, 63) ! rate_const*CL*H2 + rxt_rates(:ncol,:, 182) = rxt_rates(:ncol,:, 182)*sol(:ncol,:, 42)*sol(:ncol,:, 65) ! rate_const*CL*H2O2 + rxt_rates(:ncol,:, 183) = rxt_rates(:ncol,:, 183)*sol(:ncol,:, 42)*sol(:ncol,:, 139) ! rate_const*CL*HO2 + rxt_rates(:ncol,:, 184) = rxt_rates(:ncol,:, 184)*sol(:ncol,:, 42)*sol(:ncol,:, 139) ! rate_const*CL*HO2 + rxt_rates(:ncol,:, 185) = rxt_rates(:ncol,:, 185)*sol(:ncol,:, 42)*sol(:ncol,:, 108) ! rate_const*CL*O3 + rxt_rates(:ncol,:, 186) = rxt_rates(:ncol,:, 186)*sol(:ncol,:, 45)*sol(:ncol,:, 37) ! rate_const*CLO*CH3O2 + rxt_rates(:ncol,:, 187) = rxt_rates(:ncol,:, 187)*sol(:ncol,:, 45)*sol(:ncol,:, 45) ! rate_const*CLO*CLO + rxt_rates(:ncol,:, 188) = rxt_rates(:ncol,:, 188)*sol(:ncol,:, 45)*sol(:ncol,:, 45) ! rate_const*CLO*CLO + rxt_rates(:ncol,:, 189) = rxt_rates(:ncol,:, 189)*sol(:ncol,:, 45)*sol(:ncol,:, 45) ! rate_const*CLO*CLO + rxt_rates(:ncol,:, 190) = rxt_rates(:ncol,:, 190)*sol(:ncol,:, 45)*sol(:ncol,:, 139) ! rate_const*CLO*HO2 + rxt_rates(:ncol,:, 191) = rxt_rates(:ncol,:, 191)*sol(:ncol,:, 45)*sol(:ncol,:, 97) ! rate_const*CLO*NO + rxt_rates(:ncol,:, 192) = rxt_rates(:ncol,:, 192)*sol(:ncol,:, 46)*sol(:ncol,:, 42) ! rate_const*CLONO2*CL + rxt_rates(:ncol,:, 193) = rxt_rates(:ncol,:, 193)*sol(:ncol,:, 45)*sol(:ncol,:, 98) ! rate_const*M*CLO*NO2 + rxt_rates(:ncol,:, 194) = rxt_rates(:ncol,:, 194)*sol(:ncol,:, 46)*sol(:ncol,:, 106) ! rate_const*CLONO2*O + rxt_rates(:ncol,:, 195) = rxt_rates(:ncol,:, 195)*sol(:ncol,:, 46)*sol(:ncol,:, 111) ! rate_const*CLONO2*OH + rxt_rates(:ncol,:, 196) = rxt_rates(:ncol,:, 196)*sol(:ncol,:, 45)*sol(:ncol,:, 106) ! rate_const*CLO*O + rxt_rates(:ncol,:, 197) = rxt_rates(:ncol,:, 197)*sol(:ncol,:, 45)*sol(:ncol,:, 111) ! rate_const*CLO*OH + rxt_rates(:ncol,:, 198) = rxt_rates(:ncol,:, 198)*sol(:ncol,:, 45)*sol(:ncol,:, 111) ! rate_const*CLO*OH + rxt_rates(:ncol,:, 199) = rxt_rates(:ncol,:, 199)*sol(:ncol,:, 71)*sol(:ncol,:, 106) ! rate_const*HCL*O + rxt_rates(:ncol,:, 200) = rxt_rates(:ncol,:, 200)*sol(:ncol,:, 71)*sol(:ncol,:, 111) ! rate_const*HCL*OH + rxt_rates(:ncol,:, 201) = rxt_rates(:ncol,:, 201)*sol(:ncol,:, 76)*sol(:ncol,:, 42) ! rate_const*HOCL*CL + rxt_rates(:ncol,:, 202) = rxt_rates(:ncol,:, 202)*sol(:ncol,:, 76)*sol(:ncol,:, 106) ! rate_const*HOCL*O + rxt_rates(:ncol,:, 203) = rxt_rates(:ncol,:, 203)*sol(:ncol,:, 76)*sol(:ncol,:, 111) ! rate_const*HOCL*OH + rxt_rates(:ncol,:, 204) = rxt_rates(:ncol,:, 204)*sol(:ncol,:, 144)*sol(:ncol,:, 18) ! rate_const*O1D*CCL4 + rxt_rates(:ncol,:, 205) = rxt_rates(:ncol,:, 205)*sol(:ncol,:, 144)*sol(:ncol,:, 19) ! rate_const*O1D*CF2CLBR + rxt_rates(:ncol,:, 206) = rxt_rates(:ncol,:, 206)*sol(:ncol,:, 144)*sol(:ncol,:, 21) ! rate_const*O1D*CFC11 + rxt_rates(:ncol,:, 207) = rxt_rates(:ncol,:, 207)*sol(:ncol,:, 144)*sol(:ncol,:, 22) ! rate_const*O1D*CFC113 + rxt_rates(:ncol,:, 208) = rxt_rates(:ncol,:, 208)*sol(:ncol,:, 144)*sol(:ncol,:, 23) ! rate_const*O1D*CFC114 + rxt_rates(:ncol,:, 209) = rxt_rates(:ncol,:, 209)*sol(:ncol,:, 144)*sol(:ncol,:, 24) ! rate_const*O1D*CFC115 + rxt_rates(:ncol,:, 210) = rxt_rates(:ncol,:, 210)*sol(:ncol,:, 144)*sol(:ncol,:, 25) ! rate_const*O1D*CFC12 + rxt_rates(:ncol,:, 211) = rxt_rates(:ncol,:, 211)*sol(:ncol,:, 144)*sol(:ncol,:, 71) ! rate_const*O1D*HCL + rxt_rates(:ncol,:, 212) = rxt_rates(:ncol,:, 212)*sol(:ncol,:, 144)*sol(:ncol,:, 71) ! rate_const*O1D*HCL + rxt_rates(:ncol,:, 213) = rxt_rates(:ncol,:, 213)*sol(:ncol,:, 45)*sol(:ncol,:, 45) ! rate_const*M*CLO*CLO + rxt_rates(:ncol,:, 214) = rxt_rates(:ncol,:, 214)*sol(:ncol,:, 44) ! rate_const*M*CL2O2 + rxt_rates(:ncol,:, 215) = rxt_rates(:ncol,:, 215)*sol(:ncol,:, 4)*sol(:ncol,:, 27) ! rate_const*BR*CH2O + rxt_rates(:ncol,:, 216) = rxt_rates(:ncol,:, 216)*sol(:ncol,:, 4)*sol(:ncol,:, 139) ! rate_const*BR*HO2 + rxt_rates(:ncol,:, 217) = rxt_rates(:ncol,:, 217)*sol(:ncol,:, 4)*sol(:ncol,:, 108) ! rate_const*BR*O3 + rxt_rates(:ncol,:, 218) = rxt_rates(:ncol,:, 218)*sol(:ncol,:, 6)*sol(:ncol,:, 6) ! rate_const*BRO*BRO + rxt_rates(:ncol,:, 219) = rxt_rates(:ncol,:, 219)*sol(:ncol,:, 6)*sol(:ncol,:, 45) ! rate_const*BRO*CLO + rxt_rates(:ncol,:, 220) = rxt_rates(:ncol,:, 220)*sol(:ncol,:, 6)*sol(:ncol,:, 45) ! rate_const*BRO*CLO + rxt_rates(:ncol,:, 221) = rxt_rates(:ncol,:, 221)*sol(:ncol,:, 6)*sol(:ncol,:, 45) ! rate_const*BRO*CLO + rxt_rates(:ncol,:, 222) = rxt_rates(:ncol,:, 222)*sol(:ncol,:, 6)*sol(:ncol,:, 139) ! rate_const*BRO*HO2 + rxt_rates(:ncol,:, 223) = rxt_rates(:ncol,:, 223)*sol(:ncol,:, 6)*sol(:ncol,:, 97) ! rate_const*BRO*NO + rxt_rates(:ncol,:, 224) = rxt_rates(:ncol,:, 224)*sol(:ncol,:, 6)*sol(:ncol,:, 98) ! rate_const*M*BRO*NO2 + rxt_rates(:ncol,:, 225) = rxt_rates(:ncol,:, 225)*sol(:ncol,:, 7)*sol(:ncol,:, 106) ! rate_const*BRONO2*O + rxt_rates(:ncol,:, 226) = rxt_rates(:ncol,:, 226)*sol(:ncol,:, 6)*sol(:ncol,:, 106) ! rate_const*BRO*O + rxt_rates(:ncol,:, 227) = rxt_rates(:ncol,:, 227)*sol(:ncol,:, 6)*sol(:ncol,:, 111) ! rate_const*BRO*OH + rxt_rates(:ncol,:, 228) = rxt_rates(:ncol,:, 228)*sol(:ncol,:, 67)*sol(:ncol,:, 106) ! rate_const*HBR*O + rxt_rates(:ncol,:, 229) = rxt_rates(:ncol,:, 229)*sol(:ncol,:, 67)*sol(:ncol,:, 111) ! rate_const*HBR*OH + rxt_rates(:ncol,:, 230) = rxt_rates(:ncol,:, 230)*sol(:ncol,:, 75)*sol(:ncol,:, 106) ! rate_const*HOBR*O + rxt_rates(:ncol,:, 231) = rxt_rates(:ncol,:, 231)*sol(:ncol,:, 144)*sol(:ncol,:, 20) ! rate_const*O1D*CF3BR + rxt_rates(:ncol,:, 232) = rxt_rates(:ncol,:, 232)*sol(:ncol,:, 144)*sol(:ncol,:, 41) ! rate_const*O1D*CHBR3 + rxt_rates(:ncol,:, 233) = rxt_rates(:ncol,:, 233)*sol(:ncol,:, 144)*sol(:ncol,:, 64) ! rate_const*O1D*H2402 + rxt_rates(:ncol,:, 234) = rxt_rates(:ncol,:, 234)*sol(:ncol,:, 144)*sol(:ncol,:, 67) ! rate_const*O1D*HBR + rxt_rates(:ncol,:, 235) = rxt_rates(:ncol,:, 235)*sol(:ncol,:, 144)*sol(:ncol,:, 67) ! rate_const*O1D*HBR + rxt_rates(:ncol,:, 236) = rxt_rates(:ncol,:, 236)*sol(:ncol,:, 59)*sol(:ncol,:, 40) ! rate_const*F*CH4 + rxt_rates(:ncol,:, 237) = rxt_rates(:ncol,:, 237)*sol(:ncol,:, 59)*sol(:ncol,:, 63) ! rate_const*F*H2 + rxt_rates(:ncol,:, 238) = rxt_rates(:ncol,:, 238)*sol(:ncol,:, 59)*sol(:ncol,:, 151) ! rate_const*F*H2O + rxt_rates(:ncol,:, 239) = rxt_rates(:ncol,:, 239)*sol(:ncol,:, 59)*sol(:ncol,:, 73) ! rate_const*F*HNO3 + rxt_rates(:ncol,:, 240) = rxt_rates(:ncol,:, 240)*sol(:ncol,:, 144)*sol(:ncol,:, 50) ! rate_const*O1D*COF2 + rxt_rates(:ncol,:, 241) = rxt_rates(:ncol,:, 241)*sol(:ncol,:, 144)*sol(:ncol,:, 51) ! rate_const*O1D*COFCL + rxt_rates(:ncol,:, 242) = rxt_rates(:ncol,:, 242)*sol(:ncol,:, 26)*sol(:ncol,:, 42) ! rate_const*CH2BR2*CL + rxt_rates(:ncol,:, 243) = rxt_rates(:ncol,:, 243)*sol(:ncol,:, 26)*sol(:ncol,:, 111) ! rate_const*CH2BR2*OH + rxt_rates(:ncol,:, 244) = rxt_rates(:ncol,:, 244)*sol(:ncol,:, 28)*sol(:ncol,:, 42) ! rate_const*CH3BR*CL + rxt_rates(:ncol,:, 245) = rxt_rates(:ncol,:, 245)*sol(:ncol,:, 28)*sol(:ncol,:, 111) ! rate_const*CH3BR*OH + rxt_rates(:ncol,:, 246) = rxt_rates(:ncol,:, 246)*sol(:ncol,:, 29)*sol(:ncol,:, 111) ! rate_const*CH3CCL3*OH + rxt_rates(:ncol,:, 247) = rxt_rates(:ncol,:, 247)*sol(:ncol,:, 31)*sol(:ncol,:, 42) ! rate_const*CH3CL*CL + rxt_rates(:ncol,:, 248) = rxt_rates(:ncol,:, 248)*sol(:ncol,:, 31)*sol(:ncol,:, 111) ! rate_const*CH3CL*OH + rxt_rates(:ncol,:, 249) = rxt_rates(:ncol,:, 249)*sol(:ncol,:, 41)*sol(:ncol,:, 42) ! rate_const*CHBR3*CL + rxt_rates(:ncol,:, 250) = rxt_rates(:ncol,:, 250)*sol(:ncol,:, 41)*sol(:ncol,:, 111) ! rate_const*CHBR3*OH + rxt_rates(:ncol,:, 251) = rxt_rates(:ncol,:, 251)*sol(:ncol,:, 68)*sol(:ncol,:, 111) ! rate_const*HCFC141B*OH + rxt_rates(:ncol,:, 252) = rxt_rates(:ncol,:, 252)*sol(:ncol,:, 69)*sol(:ncol,:, 111) ! rate_const*HCFC142B*OH + rxt_rates(:ncol,:, 253) = rxt_rates(:ncol,:, 253)*sol(:ncol,:, 70)*sol(:ncol,:, 111) ! rate_const*HCFC22*OH + rxt_rates(:ncol,:, 254) = rxt_rates(:ncol,:, 254)*sol(:ncol,:, 144)*sol(:ncol,:, 26) ! rate_const*O1D*CH2BR2 + rxt_rates(:ncol,:, 255) = rxt_rates(:ncol,:, 255)*sol(:ncol,:, 144)*sol(:ncol,:, 28) ! rate_const*O1D*CH3BR + rxt_rates(:ncol,:, 256) = rxt_rates(:ncol,:, 256)*sol(:ncol,:, 144)*sol(:ncol,:, 68) ! rate_const*O1D*HCFC141B + rxt_rates(:ncol,:, 257) = rxt_rates(:ncol,:, 257)*sol(:ncol,:, 144)*sol(:ncol,:, 69) ! rate_const*O1D*HCFC142B + rxt_rates(:ncol,:, 258) = rxt_rates(:ncol,:, 258)*sol(:ncol,:, 144)*sol(:ncol,:, 70) ! rate_const*O1D*HCFC22 + rxt_rates(:ncol,:, 259) = rxt_rates(:ncol,:, 259)*sol(:ncol,:, 27)*sol(:ncol,:, 99) ! rate_const*CH2O*NO3 + rxt_rates(:ncol,:, 260) = rxt_rates(:ncol,:, 260)*sol(:ncol,:, 27)*sol(:ncol,:, 106) ! rate_const*CH2O*O + rxt_rates(:ncol,:, 261) = rxt_rates(:ncol,:, 261)*sol(:ncol,:, 27)*sol(:ncol,:, 111) ! rate_const*CH2O*OH + rxt_rates(:ncol,:, 262) = rxt_rates(:ncol,:, 262)*sol(:ncol,:, 37)*sol(:ncol,:, 37) ! rate_const*CH3O2*CH3O2 + rxt_rates(:ncol,:, 263) = rxt_rates(:ncol,:, 263)*sol(:ncol,:, 37)*sol(:ncol,:, 37) ! rate_const*CH3O2*CH3O2 + rxt_rates(:ncol,:, 264) = rxt_rates(:ncol,:, 264)*sol(:ncol,:, 37)*sol(:ncol,:, 139) ! rate_const*CH3O2*HO2 + rxt_rates(:ncol,:, 265) = rxt_rates(:ncol,:, 265)*sol(:ncol,:, 37)*sol(:ncol,:, 97) ! rate_const*CH3O2*NO + rxt_rates(:ncol,:, 266) = rxt_rates(:ncol,:, 266)*sol(:ncol,:, 38)*sol(:ncol,:, 111) ! rate_const*CH3OH*OH + rxt_rates(:ncol,:, 267) = rxt_rates(:ncol,:, 267)*sol(:ncol,:, 39)*sol(:ncol,:, 111) ! rate_const*CH3OOH*OH + rxt_rates(:ncol,:, 268) = rxt_rates(:ncol,:, 268)*sol(:ncol,:, 40)*sol(:ncol,:, 111) ! rate_const*CH4*OH + rxt_rates(:ncol,:, 269) = rxt_rates(:ncol,:, 269)*sol(:ncol,:, 144)*sol(:ncol,:, 40) ! rate_const*O1D*CH4 + rxt_rates(:ncol,:, 270) = rxt_rates(:ncol,:, 270)*sol(:ncol,:, 144)*sol(:ncol,:, 40) ! rate_const*O1D*CH4 + rxt_rates(:ncol,:, 271) = rxt_rates(:ncol,:, 271)*sol(:ncol,:, 144)*sol(:ncol,:, 40) ! rate_const*O1D*CH4 + rxt_rates(:ncol,:, 272) = rxt_rates(:ncol,:, 272)*sol(:ncol,:, 48)*sol(:ncol,:, 111) ! rate_const*CO*OH + rxt_rates(:ncol,:, 273) = rxt_rates(:ncol,:, 273)*sol(:ncol,:, 9)*sol(:ncol,:, 42) ! rate_const*M*C2H4*CL + rxt_rates(:ncol,:, 274) = rxt_rates(:ncol,:, 274)*sol(:ncol,:, 9)*sol(:ncol,:, 108) ! rate_const*C2H4*O3 + rxt_rates(:ncol,:, 275) = rxt_rates(:ncol,:, 275)*sol(:ncol,:, 10)*sol(:ncol,:, 10) ! rate_const*C2H5O2*C2H5O2 + rxt_rates(:ncol,:, 276) = rxt_rates(:ncol,:, 276)*sol(:ncol,:, 10)*sol(:ncol,:, 37) ! rate_const*C2H5O2*CH3O2 + rxt_rates(:ncol,:, 277) = rxt_rates(:ncol,:, 277)*sol(:ncol,:, 10)*sol(:ncol,:, 139) ! rate_const*C2H5O2*HO2 + rxt_rates(:ncol,:, 278) = rxt_rates(:ncol,:, 278)*sol(:ncol,:, 10)*sol(:ncol,:, 97) ! rate_const*C2H5O2*NO + rxt_rates(:ncol,:, 279) = rxt_rates(:ncol,:, 279)*sol(:ncol,:, 11)*sol(:ncol,:, 111) ! rate_const*C2H5OH*OH + rxt_rates(:ncol,:, 280) = rxt_rates(:ncol,:, 280)*sol(:ncol,:, 12)*sol(:ncol,:, 111) ! rate_const*C2H5OOH*OH + rxt_rates(:ncol,:, 281) = rxt_rates(:ncol,:, 281)*sol(:ncol,:, 13)*sol(:ncol,:, 42) ! rate_const*C2H6*CL + rxt_rates(:ncol,:, 282) = rxt_rates(:ncol,:, 282)*sol(:ncol,:, 13)*sol(:ncol,:, 111) ! rate_const*C2H6*OH + rxt_rates(:ncol,:, 283) = rxt_rates(:ncol,:, 283)*sol(:ncol,:, 30)*sol(:ncol,:, 99) ! rate_const*CH3CHO*NO3 + rxt_rates(:ncol,:, 284) = rxt_rates(:ncol,:, 284)*sol(:ncol,:, 30)*sol(:ncol,:, 111) ! rate_const*CH3CHO*OH + rxt_rates(:ncol,:, 285) = rxt_rates(:ncol,:, 285)*sol(:ncol,:, 32)*sol(:ncol,:, 32) ! rate_const*CH3CO3*CH3CO3 + rxt_rates(:ncol,:, 286) = rxt_rates(:ncol,:, 286)*sol(:ncol,:, 32)*sol(:ncol,:, 37) ! rate_const*CH3CO3*CH3O2 + rxt_rates(:ncol,:, 287) = rxt_rates(:ncol,:, 287)*sol(:ncol,:, 32)*sol(:ncol,:, 139) ! rate_const*CH3CO3*HO2 + rxt_rates(:ncol,:, 288) = rxt_rates(:ncol,:, 288)*sol(:ncol,:, 32)*sol(:ncol,:, 97) ! rate_const*CH3CO3*NO + rxt_rates(:ncol,:, 289) = rxt_rates(:ncol,:, 289)*sol(:ncol,:, 35)*sol(:ncol,:, 111) ! rate_const*CH3COOH*OH + rxt_rates(:ncol,:, 290) = rxt_rates(:ncol,:, 290)*sol(:ncol,:, 36)*sol(:ncol,:, 111) ! rate_const*CH3COOOH*OH + rxt_rates(:ncol,:, 291) = rxt_rates(:ncol,:, 291)*sol(:ncol,:, 57)*sol(:ncol,:, 139) ! rate_const*EO2*HO2 + rxt_rates(:ncol,:, 292) = rxt_rates(:ncol,:, 292)*sol(:ncol,:, 57)*sol(:ncol,:, 97) ! rate_const*EO2*NO + rxt_rates(:ncol,:, 293) = rxt_rates(:ncol,:, 293)*sol(:ncol,:, 56) ! rate_const*EO + rxt_rates(:ncol,:, 294) = rxt_rates(:ncol,:, 294)*sol(:ncol,:, 56)*sol(:ncol,:, 107) ! rate_const*EO*O2 + rxt_rates(:ncol,:, 295) = rxt_rates(:ncol,:, 295)*sol(:ncol,:, 60)*sol(:ncol,:, 111) ! rate_const*GLYALD*OH + rxt_rates(:ncol,:, 296) = rxt_rates(:ncol,:, 296)*sol(:ncol,:, 61)*sol(:ncol,:, 111) ! rate_const*GLYOXAL*OH + rxt_rates(:ncol,:, 297) = rxt_rates(:ncol,:, 297)*sol(:ncol,:, 113)*sol(:ncol,:, 111) ! rate_const*PAN*OH + rxt_rates(:ncol,:, 298) = rxt_rates(:ncol,:, 298)*sol(:ncol,:, 9)*sol(:ncol,:, 111) ! rate_const*M*C2H4*OH + rxt_rates(:ncol,:, 299) = rxt_rates(:ncol,:, 299)*sol(:ncol,:, 32)*sol(:ncol,:, 98) ! rate_const*M*CH3CO3*NO2 + rxt_rates(:ncol,:, 300) = rxt_rates(:ncol,:, 300)*sol(:ncol,:, 113) ! rate_const*M*PAN + rxt_rates(:ncol,:, 301) = rxt_rates(:ncol,:, 301)*sol(:ncol,:, 14)*sol(:ncol,:, 99) ! rate_const*C3H6*NO3 + rxt_rates(:ncol,:, 302) = rxt_rates(:ncol,:, 302)*sol(:ncol,:, 14)*sol(:ncol,:, 108) ! rate_const*C3H6*O3 + rxt_rates(:ncol,:, 303) = rxt_rates(:ncol,:, 303)*sol(:ncol,:, 15)*sol(:ncol,:, 37) ! rate_const*C3H7O2*CH3O2 + rxt_rates(:ncol,:, 304) = rxt_rates(:ncol,:, 304)*sol(:ncol,:, 15)*sol(:ncol,:, 139) ! rate_const*C3H7O2*HO2 + rxt_rates(:ncol,:, 305) = rxt_rates(:ncol,:, 305)*sol(:ncol,:, 15)*sol(:ncol,:, 97) ! rate_const*C3H7O2*NO + rxt_rates(:ncol,:, 306) = rxt_rates(:ncol,:, 306)*sol(:ncol,:, 16)*sol(:ncol,:, 111) ! rate_const*C3H7OOH*OH + rxt_rates(:ncol,:, 307) = rxt_rates(:ncol,:, 307)*sol(:ncol,:, 17)*sol(:ncol,:, 111) ! rate_const*C3H8*OH + rxt_rates(:ncol,:, 308) = rxt_rates(:ncol,:, 308)*sol(:ncol,:, 34)*sol(:ncol,:, 99) ! rate_const*CH3COCHO*NO3 + rxt_rates(:ncol,:, 309) = rxt_rates(:ncol,:, 309)*sol(:ncol,:, 34)*sol(:ncol,:, 111) ! rate_const*CH3COCHO*OH + rxt_rates(:ncol,:, 310) = rxt_rates(:ncol,:, 310)*sol(:ncol,:, 77)*sol(:ncol,:, 111) ! rate_const*HYAC*OH + rxt_rates(:ncol,:, 311) = rxt_rates(:ncol,:, 311)*sol(:ncol,:, 100)*sol(:ncol,:, 111) ! rate_const*NOA*OH + rxt_rates(:ncol,:, 312) = rxt_rates(:ncol,:, 312)*sol(:ncol,:, 114)*sol(:ncol,:, 139) ! rate_const*PO2*HO2 + rxt_rates(:ncol,:, 313) = rxt_rates(:ncol,:, 313)*sol(:ncol,:, 114)*sol(:ncol,:, 97) ! rate_const*PO2*NO + rxt_rates(:ncol,:, 314) = rxt_rates(:ncol,:, 314)*sol(:ncol,:, 117)*sol(:ncol,:, 111) ! rate_const*POOH*OH + rxt_rates(:ncol,:, 315) = rxt_rates(:ncol,:, 315)*sol(:ncol,:, 118)*sol(:ncol,:, 37) ! rate_const*RO2*CH3O2 + rxt_rates(:ncol,:, 316) = rxt_rates(:ncol,:, 316)*sol(:ncol,:, 118)*sol(:ncol,:, 139) ! rate_const*RO2*HO2 + rxt_rates(:ncol,:, 317) = rxt_rates(:ncol,:, 317)*sol(:ncol,:, 118)*sol(:ncol,:, 97) ! rate_const*RO2*NO + rxt_rates(:ncol,:, 318) = rxt_rates(:ncol,:, 318)*sol(:ncol,:, 119)*sol(:ncol,:, 111) ! rate_const*ROOH*OH + rxt_rates(:ncol,:, 319) = rxt_rates(:ncol,:, 319)*sol(:ncol,:, 14)*sol(:ncol,:, 111) ! rate_const*M*C3H6*OH + rxt_rates(:ncol,:, 320) = rxt_rates(:ncol,:, 320)*sol(:ncol,:, 33)*sol(:ncol,:, 111) ! rate_const*CH3COCH3*OH + rxt_rates(:ncol,:, 321) = rxt_rates(:ncol,:, 321)*sol(:ncol,:, 84)*sol(:ncol,:, 32) ! rate_const*MACRO2*CH3CO3 + rxt_rates(:ncol,:, 322) = rxt_rates(:ncol,:, 322)*sol(:ncol,:, 84)*sol(:ncol,:, 37) ! rate_const*MACRO2*CH3O2 + rxt_rates(:ncol,:, 323) = rxt_rates(:ncol,:, 323)*sol(:ncol,:, 84)*sol(:ncol,:, 139) ! rate_const*MACRO2*HO2 + rxt_rates(:ncol,:, 324) = rxt_rates(:ncol,:, 324)*sol(:ncol,:, 84)*sol(:ncol,:, 99) ! rate_const*MACRO2*NO3 + rxt_rates(:ncol,:, 325) = rxt_rates(:ncol,:, 325)*sol(:ncol,:, 84)*sol(:ncol,:, 97) ! rate_const*MACRO2*NO + rxt_rates(:ncol,:, 326) = rxt_rates(:ncol,:, 326)*sol(:ncol,:, 84)*sol(:ncol,:, 97) ! rate_const*MACRO2*NO + rxt_rates(:ncol,:, 327) = rxt_rates(:ncol,:, 327)*sol(:ncol,:, 83)*sol(:ncol,:, 108) ! rate_const*MACR*O3 + rxt_rates(:ncol,:, 328) = rxt_rates(:ncol,:, 328)*sol(:ncol,:, 83)*sol(:ncol,:, 111) ! rate_const*MACR*OH + rxt_rates(:ncol,:, 329) = rxt_rates(:ncol,:, 329)*sol(:ncol,:, 85)*sol(:ncol,:, 111) ! rate_const*MACROOH*OH + rxt_rates(:ncol,:, 330) = rxt_rates(:ncol,:, 330)*sol(:ncol,:, 86)*sol(:ncol,:, 32) ! rate_const*MCO3*CH3CO3 + rxt_rates(:ncol,:, 331) = rxt_rates(:ncol,:, 331)*sol(:ncol,:, 86)*sol(:ncol,:, 37) ! rate_const*MCO3*CH3O2 + rxt_rates(:ncol,:, 332) = rxt_rates(:ncol,:, 332)*sol(:ncol,:, 86)*sol(:ncol,:, 139) ! rate_const*MCO3*HO2 + rxt_rates(:ncol,:, 333) = rxt_rates(:ncol,:, 333)*sol(:ncol,:, 86)*sol(:ncol,:, 86) ! rate_const*MCO3*MCO3 + rxt_rates(:ncol,:, 334) = rxt_rates(:ncol,:, 334)*sol(:ncol,:, 86)*sol(:ncol,:, 97) ! rate_const*MCO3*NO + rxt_rates(:ncol,:, 335) = rxt_rates(:ncol,:, 335)*sol(:ncol,:, 86)*sol(:ncol,:, 99) ! rate_const*MCO3*NO3 + rxt_rates(:ncol,:, 336) = rxt_rates(:ncol,:, 336)*sol(:ncol,:, 87)*sol(:ncol,:, 111) ! rate_const*M*MPAN*OH + rxt_rates(:ncol,:, 337) = rxt_rates(:ncol,:, 337)*sol(:ncol,:, 88)*sol(:ncol,:, 108) ! rate_const*MVK*O3 + rxt_rates(:ncol,:, 338) = rxt_rates(:ncol,:, 338)*sol(:ncol,:, 88)*sol(:ncol,:, 111) ! rate_const*MVK*OH + rxt_rates(:ncol,:, 339) = rxt_rates(:ncol,:, 339)*sol(:ncol,:, 86)*sol(:ncol,:, 98) ! rate_const*M*MCO3*NO2 + rxt_rates(:ncol,:, 340) = rxt_rates(:ncol,:, 340)*sol(:ncol,:, 87) ! rate_const*M*MPAN + rxt_rates(:ncol,:, 341) = rxt_rates(:ncol,:, 341)*sol(:ncol,:, 3)*sol(:ncol,:, 111) ! rate_const*BIGALK*OH + rxt_rates(:ncol,:, 342) = rxt_rates(:ncol,:, 342)*sol(:ncol,:, 78)*sol(:ncol,:, 111) ! rate_const*HYDRALD*OH + rxt_rates(:ncol,:, 343) = rxt_rates(:ncol,:, 343)*sol(:ncol,:, 79)*sol(:ncol,:, 99) ! rate_const*ISOP*NO3 + rxt_rates(:ncol,:, 344) = rxt_rates(:ncol,:, 344)*sol(:ncol,:, 80)*sol(:ncol,:, 139) ! rate_const*ISOPNO3*HO2 + rxt_rates(:ncol,:, 345) = rxt_rates(:ncol,:, 345)*sol(:ncol,:, 80)*sol(:ncol,:, 97) ! rate_const*ISOPNO3*NO + rxt_rates(:ncol,:, 346) = rxt_rates(:ncol,:, 346)*sol(:ncol,:, 80)*sol(:ncol,:, 99) ! rate_const*ISOPNO3*NO3 + rxt_rates(:ncol,:, 347) = rxt_rates(:ncol,:, 347)*sol(:ncol,:, 81)*sol(:ncol,:, 32) ! rate_const*ISOPO2*CH3CO3 + rxt_rates(:ncol,:, 348) = rxt_rates(:ncol,:, 348)*sol(:ncol,:, 81)*sol(:ncol,:, 37) ! rate_const*ISOPO2*CH3O2 + rxt_rates(:ncol,:, 349) = rxt_rates(:ncol,:, 349)*sol(:ncol,:, 81)*sol(:ncol,:, 139) ! rate_const*ISOPO2*HO2 + rxt_rates(:ncol,:, 350) = rxt_rates(:ncol,:, 350)*sol(:ncol,:, 81)*sol(:ncol,:, 97) ! rate_const*ISOPO2*NO + rxt_rates(:ncol,:, 351) = rxt_rates(:ncol,:, 351)*sol(:ncol,:, 81)*sol(:ncol,:, 99) ! rate_const*ISOPO2*NO3 + rxt_rates(:ncol,:, 352) = rxt_rates(:ncol,:, 352)*sol(:ncol,:, 79)*sol(:ncol,:, 108) ! rate_const*ISOP*O3 + rxt_rates(:ncol,:, 353) = rxt_rates(:ncol,:, 353)*sol(:ncol,:, 79)*sol(:ncol,:, 111) ! rate_const*ISOP*OH + rxt_rates(:ncol,:, 354) = rxt_rates(:ncol,:, 354)*sol(:ncol,:, 82)*sol(:ncol,:, 111) ! rate_const*ISOPOOH*OH + rxt_rates(:ncol,:, 355) = rxt_rates(:ncol,:, 355)*sol(:ncol,:, 112)*sol(:ncol,:, 99) ! rate_const*ONITR*NO3 + rxt_rates(:ncol,:, 356) = rxt_rates(:ncol,:, 356)*sol(:ncol,:, 112)*sol(:ncol,:, 111) ! rate_const*ONITR*OH + rxt_rates(:ncol,:, 357) = rxt_rates(:ncol,:, 357)*sol(:ncol,:, 134)*sol(:ncol,:, 32) ! rate_const*XO2*CH3CO3 + rxt_rates(:ncol,:, 358) = rxt_rates(:ncol,:, 358)*sol(:ncol,:, 134)*sol(:ncol,:, 37) ! rate_const*XO2*CH3O2 + rxt_rates(:ncol,:, 359) = rxt_rates(:ncol,:, 359)*sol(:ncol,:, 134)*sol(:ncol,:, 139) ! rate_const*XO2*HO2 + rxt_rates(:ncol,:, 360) = rxt_rates(:ncol,:, 360)*sol(:ncol,:, 134)*sol(:ncol,:, 97) ! rate_const*XO2*NO + rxt_rates(:ncol,:, 361) = rxt_rates(:ncol,:, 361)*sol(:ncol,:, 134)*sol(:ncol,:, 99) ! rate_const*XO2*NO3 + rxt_rates(:ncol,:, 362) = rxt_rates(:ncol,:, 362)*sol(:ncol,:, 135)*sol(:ncol,:, 111) ! rate_const*XOOH*OH + rxt_rates(:ncol,:, 363) = rxt_rates(:ncol,:, 363)*sol(:ncol,:, 133)*sol(:ncol,:, 99) ! rate_const*TERP*NO3 + rxt_rates(:ncol,:, 364) = rxt_rates(:ncol,:, 364)*sol(:ncol,:, 133)*sol(:ncol,:, 108) ! rate_const*TERP*O3 + rxt_rates(:ncol,:, 365) = rxt_rates(:ncol,:, 365)*sol(:ncol,:, 133)*sol(:ncol,:, 111) ! rate_const*TERP*OH + rxt_rates(:ncol,:, 366) = rxt_rates(:ncol,:, 366)*sol(:ncol,:, 52)*sol(:ncol,:, 99) ! rate_const*DMS*NO3 + rxt_rates(:ncol,:, 367) = rxt_rates(:ncol,:, 367)*sol(:ncol,:, 52)*sol(:ncol,:, 111) ! rate_const*DMS*OH + rxt_rates(:ncol,:, 368) = rxt_rates(:ncol,:, 368)*sol(:ncol,:, 110)*sol(:ncol,:, 106) ! rate_const*OCS*O + rxt_rates(:ncol,:, 369) = rxt_rates(:ncol,:, 369)*sol(:ncol,:, 110)*sol(:ncol,:, 111) ! rate_const*OCS*OH + rxt_rates(:ncol,:, 370) = rxt_rates(:ncol,:, 370)*sol(:ncol,:, 120)*sol(:ncol,:, 107) ! rate_const*S*O2 + rxt_rates(:ncol,:, 371) = rxt_rates(:ncol,:, 371)*sol(:ncol,:, 123)*sol(:ncol,:, 111) ! rate_const*M*SO2*OH + rxt_rates(:ncol,:, 372) = rxt_rates(:ncol,:, 372)*sol(:ncol,:, 120)*sol(:ncol,:, 108) ! rate_const*S*O3 + rxt_rates(:ncol,:, 373) = rxt_rates(:ncol,:, 373)*sol(:ncol,:, 122)*sol(:ncol,:, 6) ! rate_const*SO*BRO + rxt_rates(:ncol,:, 374) = rxt_rates(:ncol,:, 374)*sol(:ncol,:, 122)*sol(:ncol,:, 45) ! rate_const*SO*CLO + rxt_rates(:ncol,:, 375) = rxt_rates(:ncol,:, 375)*sol(:ncol,:, 120)*sol(:ncol,:, 111) ! rate_const*S*OH + rxt_rates(:ncol,:, 376) = rxt_rates(:ncol,:, 376)*sol(:ncol,:, 122)*sol(:ncol,:, 98) ! rate_const*SO*NO2 + rxt_rates(:ncol,:, 377) = rxt_rates(:ncol,:, 377)*sol(:ncol,:, 122)*sol(:ncol,:, 107) ! rate_const*SO*O2 + rxt_rates(:ncol,:, 378) = rxt_rates(:ncol,:, 378)*sol(:ncol,:, 122)*sol(:ncol,:, 108) ! rate_const*SO*O3 + rxt_rates(:ncol,:, 379) = rxt_rates(:ncol,:, 379)*sol(:ncol,:, 122)*sol(:ncol,:, 109) ! rate_const*SO*OCLO + rxt_rates(:ncol,:, 380) = rxt_rates(:ncol,:, 380)*sol(:ncol,:, 122)*sol(:ncol,:, 111) ! rate_const*SO*OH + rxt_rates(:ncol,:, 381) = rxt_rates(:ncol,:, 381)*sol(:ncol,:, 52)*sol(:ncol,:, 111) ! rate_const*DMS*OH + rxt_rates(:ncol,:, 382) = rxt_rates(:ncol,:, 382)*sol(:ncol,:, 124)*sol(:ncol,:, 151) ! rate_const*SO3*H2O + rxt_rates(:ncol,:, 383) = rxt_rates(:ncol,:, 383)*sol(:ncol,:, 95)*sol(:ncol,:, 111) ! rate_const*NH3*OH + rxt_rates(:ncol,:, 384) = rxt_rates(:ncol,:, 384)*sol(:ncol,:, 139) ! rate_const*HO2 + rxt_rates(:ncol,:, 385) = rxt_rates(:ncol,:, 385)*sol(:ncol,:, 91) ! rate_const*N2O5 + rxt_rates(:ncol,:, 386) = rxt_rates(:ncol,:, 386)*sol(:ncol,:, 96) ! rate_const*NH4 + rxt_rates(:ncol,:, 387) = rxt_rates(:ncol,:, 387)*sol(:ncol,:, 98) ! rate_const*NO2 + rxt_rates(:ncol,:, 388) = rxt_rates(:ncol,:, 388)*sol(:ncol,:, 99) ! rate_const*NO3 + rxt_rates(:ncol,:, 389) = rxt_rates(:ncol,:, 389)*sol(:ncol,:, 112) ! rate_const*ONITR + rxt_rates(:ncol,:, 390) = rxt_rates(:ncol,:, 390)*sol(:ncol,:, 131) ! rate_const*SOAE + rxt_rates(:ncol,:, 391) = rxt_rates(:ncol,:, 391)*sol(:ncol,:, 91) ! rate_const*N2O5 + rxt_rates(:ncol,:, 392) = rxt_rates(:ncol,:, 392)*sol(:ncol,:, 76)*sol(:ncol,:, 71) ! rate_const*HOCL*HCL + rxt_rates(:ncol,:, 393) = rxt_rates(:ncol,:, 393)*sol(:ncol,:, 7) ! rate_const*BRONO2 + rxt_rates(:ncol,:, 394) = rxt_rates(:ncol,:, 394)*sol(:ncol,:, 91) ! rate_const*N2O5 + rxt_rates(:ncol,:, 395) = rxt_rates(:ncol,:, 395)*sol(:ncol,:, 46) ! rate_const*CLONO2 + rxt_rates(:ncol,:, 396) = rxt_rates(:ncol,:, 396)*sol(:ncol,:, 7) ! rate_const*BRONO2 + rxt_rates(:ncol,:, 397) = rxt_rates(:ncol,:, 397)*sol(:ncol,:, 46)*sol(:ncol,:, 71) ! rate_const*CLONO2*HCL + rxt_rates(:ncol,:, 398) = rxt_rates(:ncol,:, 398)*sol(:ncol,:, 76)*sol(:ncol,:, 71) ! rate_const*HOCL*HCL + rxt_rates(:ncol,:, 399) = rxt_rates(:ncol,:, 399)*sol(:ncol,:, 75)*sol(:ncol,:, 71) ! rate_const*HOBR*HCL + rxt_rates(:ncol,:, 400) = rxt_rates(:ncol,:, 400)*sol(:ncol,:, 46) ! rate_const*CLONO2 + rxt_rates(:ncol,:, 401) = rxt_rates(:ncol,:, 401)*sol(:ncol,:, 7) ! rate_const*BRONO2 + rxt_rates(:ncol,:, 402) = rxt_rates(:ncol,:, 402)*sol(:ncol,:, 46)*sol(:ncol,:, 71) ! rate_const*CLONO2*HCL + rxt_rates(:ncol,:, 403) = rxt_rates(:ncol,:, 403)*sol(:ncol,:, 76)*sol(:ncol,:, 71) ! rate_const*HOCL*HCL + rxt_rates(:ncol,:, 404) = rxt_rates(:ncol,:, 404)*sol(:ncol,:, 75)*sol(:ncol,:, 71) ! rate_const*HOBR*HCL + rxt_rates(:ncol,:, 405) = rxt_rates(:ncol,:, 405)*sol(:ncol,:, 91) ! rate_const*N2O5 + rxt_rates(:ncol,:, 406) = rxt_rates(:ncol,:, 406)*sol(:ncol,:, 46) ! rate_const*CLONO2 + rxt_rates(:ncol,:, 407) = rxt_rates(:ncol,:, 407)*sol(:ncol,:, 46)*sol(:ncol,:, 71) ! rate_const*CLONO2*HCL + rxt_rates(:ncol,:, 408) = rxt_rates(:ncol,:, 408)*sol(:ncol,:, 150) ! rate_const*Op2P + rxt_rates(:ncol,:, 409) = rxt_rates(:ncol,:, 409)*sol(:ncol,:, 149) ! rate_const*Op2D + rxt_rates(:ncol,:, 410) = rxt_rates(:ncol,:, 410)*sol(:ncol,:, 150) ! rate_const*Op2P + rxt_rates(:ncol,:, 411) = rxt_rates(:ncol,:, 411)*sol(:ncol,:, 142)*sol(:ncol,:, 138) ! rate_const*NOp*e + rxt_rates(:ncol,:, 412) = rxt_rates(:ncol,:, 412)*sol(:ncol,:, 147)*sol(:ncol,:, 138) ! rate_const*O2p*e + rxt_rates(:ncol,:, 413) = rxt_rates(:ncol,:, 413)*sol(:ncol,:, 141)*sol(:ncol,:, 138) ! rate_const*N2p*e + rxt_rates(:ncol,:, 414) = rxt_rates(:ncol,:, 414)*sol(:ncol,:, 141)*sol(:ncol,:, 107) ! rate_const*N2p*O2 + rxt_rates(:ncol,:, 415) = rxt_rates(:ncol,:, 415)*sol(:ncol,:, 141)*sol(:ncol,:, 106) ! rate_const*N2p*O + rxt_rates(:ncol,:, 416) = rxt_rates(:ncol,:, 416)*sol(:ncol,:, 141)*sol(:ncol,:, 106) ! rate_const*N2p*O + rxt_rates(:ncol,:, 417) = rxt_rates(:ncol,:, 417)*sol(:ncol,:, 143)*sol(:ncol,:, 106) ! rate_const*Np*O + rxt_rates(:ncol,:, 418) = rxt_rates(:ncol,:, 418)*sol(:ncol,:, 143)*sol(:ncol,:, 107) ! rate_const*Np*O2 + rxt_rates(:ncol,:, 419) = rxt_rates(:ncol,:, 419)*sol(:ncol,:, 143)*sol(:ncol,:, 107) ! rate_const*Np*O2 + rxt_rates(:ncol,:, 420) = rxt_rates(:ncol,:, 420)*sol(:ncol,:, 147)*sol(:ncol,:, 89) ! rate_const*O2p*N + rxt_rates(:ncol,:, 421) = rxt_rates(:ncol,:, 421)*sol(:ncol,:, 147) ! rate_const*N2*O2p + rxt_rates(:ncol,:, 422) = rxt_rates(:ncol,:, 422)*sol(:ncol,:, 147)*sol(:ncol,:, 97) ! rate_const*O2p*NO + rxt_rates(:ncol,:, 423) = rxt_rates(:ncol,:, 423)*sol(:ncol,:, 148)*sol(:ncol,:, 49) ! rate_const*Op*CO2 + rxt_rates(:ncol,:, 424) = rxt_rates(:ncol,:, 424)*sol(:ncol,:, 148) ! rate_const*N2*Op + rxt_rates(:ncol,:, 425) = rxt_rates(:ncol,:, 425)*sol(:ncol,:, 148)*sol(:ncol,:, 140) ! rate_const*Op*N2D + rxt_rates(:ncol,:, 426) = rxt_rates(:ncol,:, 426)*sol(:ncol,:, 148)*sol(:ncol,:, 107) ! rate_const*Op*O2 + rxt_rates(:ncol,:, 427) = rxt_rates(:ncol,:, 427)*sol(:ncol,:, 149)*sol(:ncol,:, 138) ! rate_const*Op2D*e + rxt_rates(:ncol,:, 428) = rxt_rates(:ncol,:, 428)*sol(:ncol,:, 149) ! rate_const*N2*Op2D + rxt_rates(:ncol,:, 429) = rxt_rates(:ncol,:, 429)*sol(:ncol,:, 149)*sol(:ncol,:, 106) ! rate_const*Op2D*O + rxt_rates(:ncol,:, 430) = rxt_rates(:ncol,:, 430)*sol(:ncol,:, 149)*sol(:ncol,:, 107) ! rate_const*Op2D*O2 + rxt_rates(:ncol,:, 431) = rxt_rates(:ncol,:, 431)*sol(:ncol,:, 150)*sol(:ncol,:, 138) ! rate_const*Op2P*e + rxt_rates(:ncol,:, 432) = rxt_rates(:ncol,:, 432)*sol(:ncol,:, 150)*sol(:ncol,:, 138) ! rate_const*Op2P*e + rxt_rates(:ncol,:, 433) = rxt_rates(:ncol,:, 433)*sol(:ncol,:, 150) ! rate_const*N2*Op2P + rxt_rates(:ncol,:, 434) = rxt_rates(:ncol,:, 434)*sol(:ncol,:, 150) ! rate_const*N2*Op2P + rxt_rates(:ncol,:, 435) = rxt_rates(:ncol,:, 435)*sol(:ncol,:, 150)*sol(:ncol,:, 106) ! rate_const*Op2P*O + end subroutine set_rates +end module mo_rxt_rates_conv diff --git a/src/chemistry/pp_waccm_t4ma_mam5/mo_setrxt.F90 b/src/chemistry/pp_waccm_t4ma_mam5/mo_setrxt.F90 new file mode 100644 index 0000000000..9fafea5bbc --- /dev/null +++ b/src/chemistry/pp_waccm_t4ma_mam5/mo_setrxt.F90 @@ -0,0 +1,572 @@ + + module mo_setrxt + + use shr_kind_mod, only : r8 => shr_kind_r8 + + private + public :: setrxt + public :: setrxt_hrates + + contains + + subroutine setrxt( rate, temp, m, ncol ) + + use ppgrid, only : pcols, pver + + + use chem_mods, only : rxntot + use mo_jpl, only : jpl + + implicit none + +!------------------------------------------------------- +! ... dummy arguments +!------------------------------------------------------- + integer, intent(in) :: ncol + real(r8), intent(in) :: temp(pcols,pver) + real(r8), intent(in) :: m(ncol*pver) + real(r8), intent(inout) :: rate(ncol*pver,max(1,rxntot)) + +!------------------------------------------------------- +! ... local variables +!------------------------------------------------------- + integer :: n + integer :: offset + real(r8) :: itemp(ncol*pver) + real(r8) :: exp_fac(ncol*pver) + real(r8) :: ko(ncol*pver) + real(r8) :: kinf(ncol*pver) + + rate(:,115) = 0.000258_r8 + rate(:,116) = 0.085_r8 + rate(:,117) = 1.2e-10_r8 + rate(:,122) = 1.2e-10_r8 + rate(:,123) = 1.2e-10_r8 + rate(:,124) = 1e-20_r8 + rate(:,125) = 1.3e-16_r8 + rate(:,127) = 4.2e-13_r8 + rate(:,129) = 8e-14_r8 + rate(:,130) = 3.9e-17_r8 + rate(:,137) = 6.9e-12_r8 + rate(:,138) = 7.2e-11_r8 + rate(:,139) = 1.6e-12_r8 + rate(:,145) = 1.8e-12_r8 + rate(:,149) = 1.8e-12_r8 + rate(:,153) = 7e-13_r8 + rate(:,154) = 5e-12_r8 + rate(:,163) = 3.5e-12_r8 + rate(:,165) = 1.3e-11_r8 + rate(:,166) = 2.2e-11_r8 + rate(:,167) = 5e-11_r8 + rate(:,202) = 1.7e-13_r8 + rate(:,204) = 2.607e-10_r8 + rate(:,205) = 9.75e-11_r8 + rate(:,206) = 2.07e-10_r8 + rate(:,207) = 2.088e-10_r8 + rate(:,208) = 1.17e-10_r8 + rate(:,209) = 4.644e-11_r8 + rate(:,210) = 1.204e-10_r8 + rate(:,211) = 9.9e-11_r8 + rate(:,212) = 3.3e-12_r8 + rate(:,231) = 4.5e-11_r8 + rate(:,232) = 4.62e-10_r8 + rate(:,233) = 1.2e-10_r8 + rate(:,234) = 9e-11_r8 + rate(:,235) = 3e-11_r8 + rate(:,240) = 2.14e-11_r8 + rate(:,241) = 1.9e-10_r8 + rate(:,254) = 2.57e-10_r8 + rate(:,255) = 1.8e-10_r8 + rate(:,256) = 1.794e-10_r8 + rate(:,257) = 1.3e-10_r8 + rate(:,258) = 7.65e-11_r8 + rate(:,269) = 1.31e-10_r8 + rate(:,270) = 3.5e-11_r8 + rate(:,271) = 9e-12_r8 + rate(:,275) = 6.8e-14_r8 + rate(:,276) = 2e-13_r8 + rate(:,290) = 1e-12_r8 + rate(:,294) = 1e-14_r8 + rate(:,295) = 1e-11_r8 + rate(:,296) = 1.15e-11_r8 + rate(:,297) = 4e-14_r8 + rate(:,310) = 3e-12_r8 + rate(:,311) = 6.7e-13_r8 + rate(:,321) = 1.4e-11_r8 + rate(:,324) = 2.4e-12_r8 + rate(:,335) = 5e-12_r8 + rate(:,341) = 3.5e-12_r8 + rate(:,346) = 2.4e-12_r8 + rate(:,347) = 1.4e-11_r8 + rate(:,351) = 2.4e-12_r8 + rate(:,356) = 4.5e-11_r8 + rate(:,361) = 2.4e-12_r8 + rate(:,370) = 2.3e-12_r8 + rate(:,372) = 1.2e-11_r8 + rate(:,373) = 5.7e-11_r8 + rate(:,374) = 2.8e-11_r8 + rate(:,375) = 6.6e-11_r8 + rate(:,376) = 1.4e-11_r8 + rate(:,379) = 1.9e-12_r8 + rate(:,386) = 6.34e-08_r8 + rate(:,390) = 1.157e-05_r8 + rate(:,408) = 0.047_r8 + rate(:,409) = 7.7e-05_r8 + rate(:,410) = 0.171_r8 + rate(:,414) = 6e-11_r8 + rate(:,417) = 1e-12_r8 + rate(:,418) = 4e-10_r8 + rate(:,419) = 2e-10_r8 + rate(:,420) = 1e-10_r8 + rate(:,421) = 5e-16_r8 + rate(:,422) = 4.4e-10_r8 + rate(:,423) = 9e-10_r8 + rate(:,425) = 1.3e-10_r8 + rate(:,428) = 8e-10_r8 + rate(:,429) = 5e-12_r8 + rate(:,430) = 7e-10_r8 + rate(:,433) = 4.8e-10_r8 + rate(:,434) = 1e-10_r8 + rate(:,435) = 4e-10_r8 + + do n = 1,pver + offset = (n-1)*ncol + itemp(offset+1:offset+ncol) = 1._r8 / temp(:ncol,n) + end do + + rate(:,118) = 1.63e-10_r8 * exp( 60._r8 * itemp(:) ) + rate(:,119) = 2.15e-11_r8 * exp( 110._r8 * itemp(:) ) + exp_fac(:) = exp( 55._r8 * itemp(:) ) + rate(:,120) = 2.64e-11_r8 * exp_fac(:) + rate(:,121) = 6.6e-12_r8 * exp_fac(:) + rate(:,126) = 3.6e-18_r8 * exp( -220._r8 * itemp(:) ) + rate(:,128) = 1.8e-15_r8 * exp( 45._r8 * itemp(:) ) + rate(:,131) = 3.5e-11_r8 * exp( -135._r8 * itemp(:) ) + rate(:,132) = 8e-12_r8 * exp( -2060._r8 * itemp(:) ) + rate(:,135) = 1.6e-11_r8 * exp( -4570._r8 * itemp(:) ) + exp_fac(:) = exp( -2000._r8 * itemp(:) ) + rate(:,136) = 1.4e-12_r8 * exp_fac(:) + rate(:,352) = 1.05e-14_r8 * exp_fac(:) + exp_fac(:) = exp( 200._r8 * itemp(:) ) + rate(:,141) = 3e-11_r8 * exp_fac(:) + rate(:,229) = 5.5e-12_r8 * exp_fac(:) + rate(:,267) = 3.8e-12_r8 * exp_fac(:) + rate(:,280) = 3.8e-12_r8 * exp_fac(:) + rate(:,306) = 3.8e-12_r8 * exp_fac(:) + rate(:,314) = 3.8e-12_r8 * exp_fac(:) + rate(:,318) = 3.8e-12_r8 * exp_fac(:) + rate(:,329) = 2.3e-11_r8 * exp_fac(:) + rate(:,354) = 1.52e-11_r8 * exp_fac(:) + rate(:,362) = 1.52e-12_r8 * exp_fac(:) + rate(:,142) = 1e-14_r8 * exp( -490._r8 * itemp(:) ) + rate(:,143) = 1.4e-10_r8 * exp( -470._r8 * itemp(:) ) + rate(:,144) = 2.8e-12_r8 * exp( -1800._r8 * itemp(:) ) + exp_fac(:) = exp( 250._r8 * itemp(:) ) + rate(:,146) = 4.8e-11_r8 * exp_fac(:) + rate(:,227) = 1.7e-11_r8 * exp_fac(:) + exp_fac(:) = exp( 180._r8 * itemp(:) ) + rate(:,147) = 1.8e-11_r8 * exp_fac(:) + rate(:,292) = 4.2e-12_r8 * exp_fac(:) + rate(:,305) = 4.2e-12_r8 * exp_fac(:) + rate(:,313) = 4.2e-12_r8 * exp_fac(:) + rate(:,350) = 4.4e-12_r8 * exp_fac(:) + rate(:,148) = 1.7e-12_r8 * exp( -940._r8 * itemp(:) ) + rate(:,152) = 4.5e-13_r8 * exp( 610._r8 * itemp(:) ) + rate(:,155) = 2.1e-11_r8 * exp( 100._r8 * itemp(:) ) + exp_fac(:) = exp( 220._r8 * itemp(:) ) + rate(:,156) = 2.9e-12_r8 * exp_fac(:) + rate(:,157) = 1.45e-12_r8 * exp_fac(:) + rate(:,158) = 1.45e-12_r8 * exp_fac(:) + rate(:,159) = 3.3e-12_r8 * exp( -3150._r8 * itemp(:) ) + rate(:,160) = 5.1e-12_r8 * exp( 210._r8 * itemp(:) ) + exp_fac(:) = exp( -2450._r8 * itemp(:) ) + rate(:,161) = 1.2e-13_r8 * exp_fac(:) + rate(:,187) = 3e-11_r8 * exp_fac(:) + exp_fac(:) = exp( 125._r8 * itemp(:) ) + rate(:,164) = 1.7e-11_r8 * exp_fac(:) + rate(:,261) = 5.5e-12_r8 * exp_fac(:) + exp_fac(:) = exp( 260._r8 * itemp(:) ) + rate(:,168) = 3.44e-12_r8 * exp_fac(:) + rate(:,220) = 2.3e-12_r8 * exp_fac(:) + rate(:,223) = 8.8e-12_r8 * exp_fac(:) + exp_fac(:) = exp( -1500._r8 * itemp(:) ) + rate(:,169) = 3e-12_r8 * exp_fac(:) + rate(:,228) = 5.8e-12_r8 * exp_fac(:) + exp_fac(:) = exp( 20._r8 * itemp(:) ) + rate(:,171) = 7.26e-11_r8 * exp_fac(:) + rate(:,172) = 4.64e-11_r8 * exp_fac(:) + rate(:,179) = 8.1e-11_r8 * exp( -30._r8 * itemp(:) ) + rate(:,180) = 7.1e-12_r8 * exp( -1270._r8 * itemp(:) ) + rate(:,181) = 3.05e-11_r8 * exp( -2270._r8 * itemp(:) ) + rate(:,182) = 1.1e-11_r8 * exp( -980._r8 * itemp(:) ) + exp_fac(:) = exp( 270._r8 * itemp(:) ) + rate(:,183) = 1.4e-11_r8 * exp_fac(:) + rate(:,197) = 7.4e-12_r8 * exp_fac(:) + rate(:,288) = 8.1e-12_r8 * exp_fac(:) + rate(:,184) = 3.6e-11_r8 * exp( -375._r8 * itemp(:) ) + rate(:,185) = 2.3e-11_r8 * exp( -200._r8 * itemp(:) ) + rate(:,186) = 3.3e-12_r8 * exp( -115._r8 * itemp(:) ) + rate(:,188) = 1e-12_r8 * exp( -1590._r8 * itemp(:) ) + rate(:,189) = 3.5e-13_r8 * exp( -1370._r8 * itemp(:) ) + exp_fac(:) = exp( 290._r8 * itemp(:) ) + rate(:,190) = 2.6e-12_r8 * exp_fac(:) + rate(:,191) = 6.4e-12_r8 * exp_fac(:) + rate(:,221) = 4.1e-13_r8 * exp_fac(:) + rate(:,192) = 6.5e-12_r8 * exp( 135._r8 * itemp(:) ) + exp_fac(:) = exp( -840._r8 * itemp(:) ) + rate(:,194) = 3.6e-12_r8 * exp_fac(:) + rate(:,243) = 2e-12_r8 * exp_fac(:) + rate(:,195) = 1.2e-12_r8 * exp( -330._r8 * itemp(:) ) + rate(:,196) = 2.8e-11_r8 * exp( 85._r8 * itemp(:) ) + exp_fac(:) = exp( 230._r8 * itemp(:) ) + rate(:,198) = 6e-13_r8 * exp_fac(:) + rate(:,218) = 1.5e-12_r8 * exp_fac(:) + rate(:,226) = 1.9e-11_r8 * exp_fac(:) + rate(:,199) = 1e-11_r8 * exp( -3300._r8 * itemp(:) ) + rate(:,200) = 1.8e-12_r8 * exp( -250._r8 * itemp(:) ) + rate(:,201) = 3.4e-12_r8 * exp( -130._r8 * itemp(:) ) + exp_fac(:) = exp( -500._r8 * itemp(:) ) + rate(:,203) = 3e-12_r8 * exp_fac(:) + rate(:,237) = 1.4e-10_r8 * exp_fac(:) + exp_fac(:) = exp( -800._r8 * itemp(:) ) + rate(:,215) = 1.7e-11_r8 * exp_fac(:) + rate(:,242) = 6.3e-12_r8 * exp_fac(:) + rate(:,216) = 4.8e-12_r8 * exp( -310._r8 * itemp(:) ) + rate(:,217) = 1.6e-11_r8 * exp( -780._r8 * itemp(:) ) + rate(:,219) = 9.5e-13_r8 * exp( 550._r8 * itemp(:) ) + rate(:,222) = 4.5e-12_r8 * exp( 460._r8 * itemp(:) ) + rate(:,225) = 1.9e-11_r8 * exp( 215._r8 * itemp(:) ) + rate(:,230) = 1.2e-10_r8 * exp( -430._r8 * itemp(:) ) + rate(:,236) = 1.6e-10_r8 * exp( -260._r8 * itemp(:) ) + exp_fac(:) = exp( 0._r8 * itemp(:) ) + rate(:,238) = 1.4e-11_r8 * exp_fac(:) + rate(:,240) = 2.14e-11_r8 * exp_fac(:) + rate(:,241) = 1.9e-10_r8 * exp_fac(:) + rate(:,254) = 2.57e-10_r8 * exp_fac(:) + rate(:,255) = 1.8e-10_r8 * exp_fac(:) + rate(:,256) = 1.794e-10_r8 * exp_fac(:) + rate(:,257) = 1.3e-10_r8 * exp_fac(:) + rate(:,258) = 7.65e-11_r8 * exp_fac(:) + rate(:,269) = 1.31e-10_r8 * exp_fac(:) + rate(:,270) = 3.5e-11_r8 * exp_fac(:) + rate(:,271) = 9e-12_r8 * exp_fac(:) + rate(:,275) = 6.8e-14_r8 * exp_fac(:) + rate(:,276) = 2e-13_r8 * exp_fac(:) + rate(:,290) = 1e-12_r8 * exp_fac(:) + rate(:,294) = 1e-14_r8 * exp_fac(:) + rate(:,295) = 1e-11_r8 * exp_fac(:) + rate(:,296) = 1.15e-11_r8 * exp_fac(:) + rate(:,297) = 4e-14_r8 * exp_fac(:) + rate(:,310) = 3e-12_r8 * exp_fac(:) + rate(:,311) = 6.7e-13_r8 * exp_fac(:) + rate(:,321) = 1.4e-11_r8 * exp_fac(:) + rate(:,324) = 2.4e-12_r8 * exp_fac(:) + rate(:,335) = 5e-12_r8 * exp_fac(:) + rate(:,341) = 3.5e-12_r8 * exp_fac(:) + rate(:,346) = 2.4e-12_r8 * exp_fac(:) + rate(:,347) = 1.4e-11_r8 * exp_fac(:) + rate(:,351) = 2.4e-12_r8 * exp_fac(:) + rate(:,356) = 4.5e-11_r8 * exp_fac(:) + rate(:,361) = 2.4e-12_r8 * exp_fac(:) + rate(:,370) = 2.3e-12_r8 * exp_fac(:) + rate(:,372) = 1.2e-11_r8 * exp_fac(:) + rate(:,373) = 5.7e-11_r8 * exp_fac(:) + rate(:,374) = 2.8e-11_r8 * exp_fac(:) + rate(:,375) = 6.6e-11_r8 * exp_fac(:) + rate(:,376) = 1.4e-11_r8 * exp_fac(:) + rate(:,379) = 1.9e-12_r8 * exp_fac(:) + rate(:,386) = 6.34e-08_r8 * exp_fac(:) + rate(:,390) = 1.157e-05_r8 * exp_fac(:) + rate(:,408) = 0.047_r8 * exp_fac(:) + rate(:,409) = 7.7e-05_r8 * exp_fac(:) + rate(:,410) = 0.171_r8 * exp_fac(:) + rate(:,414) = 6e-11_r8 * exp_fac(:) + rate(:,417) = 1e-12_r8 * exp_fac(:) + rate(:,418) = 4e-10_r8 * exp_fac(:) + rate(:,419) = 2e-10_r8 * exp_fac(:) + rate(:,420) = 1e-10_r8 * exp_fac(:) + rate(:,421) = 5e-16_r8 * exp_fac(:) + rate(:,422) = 4.4e-10_r8 * exp_fac(:) + rate(:,423) = 9e-10_r8 * exp_fac(:) + rate(:,425) = 1.3e-10_r8 * exp_fac(:) + rate(:,428) = 8e-10_r8 * exp_fac(:) + rate(:,429) = 5e-12_r8 * exp_fac(:) + rate(:,430) = 7e-10_r8 * exp_fac(:) + rate(:,433) = 4.8e-10_r8 * exp_fac(:) + rate(:,434) = 1e-10_r8 * exp_fac(:) + rate(:,435) = 4e-10_r8 * exp_fac(:) + exp_fac(:) = exp( 400._r8 * itemp(:) ) + rate(:,239) = 6e-12_r8 * exp_fac(:) + rate(:,322) = 5e-13_r8 * exp_fac(:) + rate(:,348) = 5e-13_r8 * exp_fac(:) + rate(:,358) = 5e-13_r8 * exp_fac(:) + rate(:,244) = 1.46e-11_r8 * exp( -1040._r8 * itemp(:) ) + rate(:,245) = 1.42e-12_r8 * exp( -1150._r8 * itemp(:) ) + exp_fac(:) = exp( -1520._r8 * itemp(:) ) + rate(:,246) = 1.64e-12_r8 * exp_fac(:) + rate(:,337) = 8.5e-16_r8 * exp_fac(:) + rate(:,247) = 2.03e-11_r8 * exp( -1110._r8 * itemp(:) ) + rate(:,248) = 1.96e-12_r8 * exp( -1200._r8 * itemp(:) ) + rate(:,249) = 4.85e-12_r8 * exp( -850._r8 * itemp(:) ) + rate(:,250) = 9e-13_r8 * exp( -360._r8 * itemp(:) ) + exp_fac(:) = exp( -1600._r8 * itemp(:) ) + rate(:,251) = 1.25e-12_r8 * exp_fac(:) + rate(:,260) = 3.4e-11_r8 * exp_fac(:) + rate(:,252) = 1.3e-12_r8 * exp( -1770._r8 * itemp(:) ) + rate(:,253) = 9.2e-13_r8 * exp( -1560._r8 * itemp(:) ) + rate(:,259) = 6e-13_r8 * exp( -2058._r8 * itemp(:) ) + rate(:,262) = 5e-13_r8 * exp( -424._r8 * itemp(:) ) + rate(:,263) = 1.9e-14_r8 * exp( 706._r8 * itemp(:) ) + rate(:,264) = 4.1e-13_r8 * exp( 750._r8 * itemp(:) ) + exp_fac(:) = exp( 300._r8 * itemp(:) ) + rate(:,265) = 2.8e-12_r8 * exp_fac(:) + rate(:,317) = 2.9e-12_r8 * exp_fac(:) + rate(:,266) = 2.9e-12_r8 * exp( -345._r8 * itemp(:) ) + rate(:,268) = 2.45e-12_r8 * exp( -1775._r8 * itemp(:) ) + rate(:,274) = 1.2e-14_r8 * exp( -2630._r8 * itemp(:) ) + exp_fac(:) = exp( 700._r8 * itemp(:) ) + rate(:,277) = 7.5e-13_r8 * exp_fac(:) + rate(:,291) = 7.5e-13_r8 * exp_fac(:) + rate(:,304) = 7.5e-13_r8 * exp_fac(:) + rate(:,312) = 7.5e-13_r8 * exp_fac(:) + rate(:,316) = 8.6e-13_r8 * exp_fac(:) + rate(:,323) = 8e-13_r8 * exp_fac(:) + rate(:,344) = 8e-13_r8 * exp_fac(:) + rate(:,349) = 8e-13_r8 * exp_fac(:) + rate(:,359) = 8e-13_r8 * exp_fac(:) + rate(:,278) = 2.6e-12_r8 * exp( 365._r8 * itemp(:) ) + rate(:,279) = 6.9e-12_r8 * exp( -230._r8 * itemp(:) ) + rate(:,281) = 7.2e-11_r8 * exp( -70._r8 * itemp(:) ) + rate(:,282) = 7.66e-12_r8 * exp( -1020._r8 * itemp(:) ) + exp_fac(:) = exp( -1900._r8 * itemp(:) ) + rate(:,283) = 1.4e-12_r8 * exp_fac(:) + rate(:,302) = 6.5e-15_r8 * exp_fac(:) + rate(:,284) = 4.63e-12_r8 * exp( 350._r8 * itemp(:) ) + exp_fac(:) = exp( 500._r8 * itemp(:) ) + rate(:,285) = 2.9e-12_r8 * exp_fac(:) + rate(:,286) = 2e-12_r8 * exp_fac(:) + rate(:,315) = 7.1e-13_r8 * exp_fac(:) + rate(:,331) = 2e-12_r8 * exp_fac(:) + exp_fac(:) = exp( 1040._r8 * itemp(:) ) + rate(:,287) = 4.3e-13_r8 * exp_fac(:) + rate(:,332) = 4.3e-13_r8 * exp_fac(:) + rate(:,289) = 3.15e-14_r8 * exp( 920._r8 * itemp(:) ) + rate(:,293) = 1.6e+11_r8 * exp( -4150._r8 * itemp(:) ) + rate(:,301) = 4.6e-13_r8 * exp( -1156._r8 * itemp(:) ) + rate(:,303) = 3.75e-13_r8 * exp( -40._r8 * itemp(:) ) + rate(:,307) = 9.19e-12_r8 * exp( -630._r8 * itemp(:) ) + exp_fac(:) = exp( -1860._r8 * itemp(:) ) + rate(:,308) = 1.4e-12_r8 * exp_fac(:) + rate(:,355) = 1.4e-12_r8 * exp_fac(:) + rate(:,309) = 8.4e-13_r8 * exp( 830._r8 * itemp(:) ) + exp_fac(:) = exp( 360._r8 * itemp(:) ) + rate(:,325) = 2.7e-12_r8 * exp_fac(:) + rate(:,326) = 1.3e-13_r8 * exp_fac(:) + rate(:,328) = 9.6e-12_r8 * exp_fac(:) + rate(:,334) = 5.3e-12_r8 * exp_fac(:) + rate(:,345) = 2.7e-12_r8 * exp_fac(:) + rate(:,360) = 2.7e-12_r8 * exp_fac(:) + rate(:,327) = 1.5e-15_r8 * exp( -2100._r8 * itemp(:) ) + exp_fac(:) = exp( 530._r8 * itemp(:) ) + rate(:,330) = 4.6e-12_r8 * exp_fac(:) + rate(:,333) = 2.3e-12_r8 * exp_fac(:) + rate(:,338) = 4.13e-12_r8 * exp( 452._r8 * itemp(:) ) + rate(:,342) = 1.86e-11_r8 * exp( 175._r8 * itemp(:) ) + rate(:,343) = 3.03e-12_r8 * exp( -446._r8 * itemp(:) ) + rate(:,353) = 2.54e-11_r8 * exp( 410._r8 * itemp(:) ) + rate(:,357) = 1.3e-12_r8 * exp( 640._r8 * itemp(:) ) + rate(:,363) = 1.2e-12_r8 * exp( 490._r8 * itemp(:) ) + rate(:,364) = 6.3e-16_r8 * exp( -580._r8 * itemp(:) ) + rate(:,365) = 1.2e-11_r8 * exp( 440._r8 * itemp(:) ) + rate(:,366) = 1.9e-13_r8 * exp( 520._r8 * itemp(:) ) + rate(:,367) = 1.1e-11_r8 * exp( -280._r8 * itemp(:) ) + rate(:,368) = 2.1e-11_r8 * exp( -2200._r8 * itemp(:) ) + rate(:,369) = 7.2e-14_r8 * exp( -1070._r8 * itemp(:) ) + rate(:,377) = 1.6e-13_r8 * exp( -2280._r8 * itemp(:) ) + rate(:,378) = 3.4e-12_r8 * exp( -1100._r8 * itemp(:) ) + rate(:,380) = 2.6e-11_r8 * exp( 330._r8 * itemp(:) ) + rate(:,383) = 1.7e-12_r8 * exp( -710._r8 * itemp(:) ) + + itemp(:) = 300._r8 * itemp(:) + + n = ncol*pver + + ko(:) = 5.3e-32_r8 * itemp(:)**1.8_r8 + kinf(:) = 9.5e-11_r8 * itemp(:)**(-0.4_r8) + call jpl( rate(:,140), m, 0.6_r8, ko, kinf, n ) + + ko(:) = 6.9e-31_r8 * itemp(:)**1._r8 + kinf(:) = 2.6e-11_r8 + call jpl( rate(:,150), m, 0.6_r8, ko, kinf, n ) + + ko(:) = 2.5e-31_r8 * itemp(:)**1.8_r8 + kinf(:) = 2.2e-11_r8 * itemp(:)**0.7_r8 + call jpl( rate(:,162), m, 0.6_r8, ko, kinf, n ) + + ko(:) = 9e-32_r8 * itemp(:)**1.5_r8 + kinf(:) = 3e-11_r8 + call jpl( rate(:,170), m, 0.6_r8, ko, kinf, n ) + + ko(:) = 1.9e-31_r8 * itemp(:)**3.4_r8 + kinf(:) = 4e-12_r8 * itemp(:)**0.3_r8 + call jpl( rate(:,173), m, 0.6_r8, ko, kinf, n ) + + ko(:) = 2.4e-30_r8 * itemp(:)**3._r8 + kinf(:) = 1.6e-12_r8 * itemp(:)**(-0.1_r8) + call jpl( rate(:,174), m, 0.6_r8, ko, kinf, n ) + + ko(:) = 1.8e-30_r8 * itemp(:)**3._r8 + kinf(:) = 2.8e-11_r8 + call jpl( rate(:,175), m, 0.6_r8, ko, kinf, n ) + + ko(:) = 1.8e-31_r8 * itemp(:)**3.4_r8 + kinf(:) = 1.5e-11_r8 * itemp(:)**1.9_r8 + call jpl( rate(:,193), m, 0.6_r8, ko, kinf, n ) + + ko(:) = 1.9e-32_r8 * itemp(:)**3.6_r8 + kinf(:) = 3.7e-12_r8 * itemp(:)**1.6_r8 + call jpl( rate(:,213), m, 0.6_r8, ko, kinf, n ) + + ko(:) = 5.2e-31_r8 * itemp(:)**3.2_r8 + kinf(:) = 6.9e-12_r8 * itemp(:)**2.9_r8 + call jpl( rate(:,224), m, 0.6_r8, ko, kinf, n ) + + ko(:) = 1.6e-29_r8 * itemp(:)**3.3_r8 + kinf(:) = 3.1e-10_r8 * itemp(:) + call jpl( rate(:,273), m, 0.6_r8, ko, kinf, n ) + + ko(:) = 8.6e-29_r8 * itemp(:)**3.1_r8 + kinf(:) = 9e-12_r8 * itemp(:)**0.85_r8 + call jpl( rate(:,298), m, 0.48_r8, ko, kinf, n ) + + ko(:) = 7.3e-29_r8 * itemp(:)**4.1_r8 + kinf(:) = 9.5e-12_r8 * itemp(:)**1.6_r8 + call jpl( rate(:,299), m, 0.6_r8, ko, kinf, n ) + + ko(:) = 8e-27_r8 * itemp(:)**3.5_r8 + kinf(:) = 3e-11_r8 + call jpl( rate(:,319), m, 0.5_r8, ko, kinf, n ) + + ko(:) = 8e-27_r8 * itemp(:)**3.5_r8 + kinf(:) = 3e-11_r8 + call jpl( rate(:,336), m, 0.5_r8, ko, kinf, n ) + + ko(:) = 9.7e-29_r8 * itemp(:)**5.6_r8 + kinf(:) = 9.3e-12_r8 * itemp(:)**1.5_r8 + call jpl( rate(:,339), m, 0.6_r8, ko, kinf, n ) + + ko(:) = 2.9e-31_r8 * itemp(:)**4.1_r8 + kinf(:) = 1.7e-12_r8 * itemp(:)**(-0.2_r8) + call jpl( rate(:,371), m, 0.6_r8, ko, kinf, n ) + + end subroutine setrxt + + + subroutine setrxt_hrates( rate, temp, m, ncol, kbot ) + + use ppgrid, only : pcols, pver + + + use chem_mods, only : rxntot + use mo_jpl, only : jpl + + implicit none + +!------------------------------------------------------- +! ... dummy arguments +!------------------------------------------------------- + integer, intent(in) :: ncol + integer, intent(in) :: kbot + real(r8), intent(in) :: temp(pcols,pver) + real(r8), intent(in) :: m(ncol*pver) + real(r8), intent(inout) :: rate(ncol*pver,max(1,rxntot)) + +!------------------------------------------------------- +! ... local variables +!------------------------------------------------------- + integer :: n + integer :: offset + integer :: k + real(r8) :: itemp(ncol*kbot) + real(r8) :: exp_fac(ncol*kbot) + real(r8) :: ko(ncol*kbot) + real(r8) :: kinf(ncol*kbot) + real(r8) :: wrk(ncol*kbot) + + n = ncol*kbot + + rate(:n,124) = 1e-20_r8 + rate(:n,125) = 1.3e-16_r8 + rate(:n,129) = 8e-14_r8 + rate(:n,130) = 3.9e-17_r8 + rate(:n,137) = 6.9e-12_r8 + rate(:n,153) = 7e-13_r8 + rate(:n,154) = 5e-12_r8 + rate(:n,408) = 0.047_r8 + rate(:n,409) = 7.7e-05_r8 + rate(:n,410) = 0.171_r8 + rate(:n,414) = 6e-11_r8 + rate(:n,417) = 1e-12_r8 + rate(:n,418) = 4e-10_r8 + rate(:n,419) = 2e-10_r8 + rate(:n,420) = 1e-10_r8 + rate(:n,422) = 4.4e-10_r8 + rate(:n,425) = 1.3e-10_r8 + rate(:n,428) = 8e-10_r8 + rate(:n,429) = 5e-12_r8 + rate(:n,430) = 7e-10_r8 + rate(:n,433) = 4.8e-10_r8 + rate(:n,434) = 1e-10_r8 + rate(:n,435) = 4e-10_r8 + + do k = 1,kbot + offset = (k-1)*ncol + itemp(offset+1:offset+ncol) = 1._r8 / temp(:ncol,k) + end do + + rate(:n,119) = 2.15e-11_r8 * exp( 110._r8 * itemp(:) ) + exp_fac(:) = exp( 55._r8 * itemp(:) ) + rate(:n,120) = 2.64e-11_r8 * exp_fac(:) + rate(:n,121) = 6.6e-12_r8 * exp_fac(:) + rate(:n,126) = 3.6e-18_r8 * exp( -220._r8 * itemp(:) ) + rate(:n,128) = 1.8e-15_r8 * exp( 45._r8 * itemp(:) ) + rate(:n,131) = 3.5e-11_r8 * exp( -135._r8 * itemp(:) ) + rate(:n,132) = 8e-12_r8 * exp( -2060._r8 * itemp(:) ) + rate(:n,141) = 3e-11_r8 * exp( 200._r8 * itemp(:) ) + rate(:n,142) = 1e-14_r8 * exp( -490._r8 * itemp(:) ) + rate(:n,143) = 1.4e-10_r8 * exp( -470._r8 * itemp(:) ) + rate(:n,146) = 4.8e-11_r8 * exp( 250._r8 * itemp(:) ) + rate(:n,147) = 1.8e-11_r8 * exp( 180._r8 * itemp(:) ) + rate(:n,148) = 1.7e-12_r8 * exp( -940._r8 * itemp(:) ) + rate(:n,155) = 2.1e-11_r8 * exp( 100._r8 * itemp(:) ) + rate(:n,159) = 3.3e-12_r8 * exp( -3150._r8 * itemp(:) ) + rate(:n,160) = 5.1e-12_r8 * exp( 210._r8 * itemp(:) ) + rate(:n,168) = 3.44e-12_r8 * exp( 260._r8 * itemp(:) ) + rate(:n,169) = 3e-12_r8 * exp( -1500._r8 * itemp(:) ) + + itemp(:) = 300._r8 * itemp(:) + + ko(:) = 5.3e-32_r8 * itemp(:)**1.8_r8 + kinf(:) = 9.5e-11_r8 * itemp(:)**(-0.4_r8) + call jpl( wrk, m, 0.6_r8, ko, kinf, n ) + rate(:n,140) = wrk(:) + + + + + + + + + + + + + + + + + + end subroutine setrxt_hrates + + end module mo_setrxt diff --git a/src/chemistry/pp_waccm_t4ma_mam5/mo_sim_dat.F90 b/src/chemistry/pp_waccm_t4ma_mam5/mo_sim_dat.F90 new file mode 100644 index 0000000000..569a355dff --- /dev/null +++ b/src/chemistry/pp_waccm_t4ma_mam5/mo_sim_dat.F90 @@ -0,0 +1,675 @@ + + module mo_sim_dat + + private + public :: set_sim_dat + + contains + + subroutine set_sim_dat + + use chem_mods, only : clscnt, cls_rxt_cnt, clsmap, permute, adv_mass, fix_mass, crb_mass + use chem_mods, only : diag_map + use chem_mods, only : phtcnt, rxt_tag_cnt, rxt_tag_lst, rxt_tag_map + use chem_mods, only : pht_alias_lst, pht_alias_mult + use chem_mods, only : extfrc_lst, inv_lst, slvd_lst + use chem_mods, only : enthalpy_cnt, cph_enthalpy, cph_rid, num_rnts, rxntot + use cam_abortutils,only : endrun + use mo_tracname, only : solsym + use chem_mods, only : frc_from_dataset + use chem_mods, only : is_scalar, is_vector + use shr_kind_mod, only : r8 => shr_kind_r8 + use cam_logfile, only : iulog + + implicit none + +!-------------------------------------------------------------- +! ... local variables +!-------------------------------------------------------------- + integer :: ios + + is_scalar = .false. + is_vector = .true. + + clscnt(:) = (/ 2, 0, 0, 149, 0 /) + + cls_rxt_cnt(:,1) = (/ 3, 0, 0, 2 /) + cls_rxt_cnt(:,4) = (/ 8, 141, 286, 149 /) + + solsym(:151) = (/ 'bc_a1 ','bc_a4 ','BIGALK ','BR ','BRCL ', & + 'BRO ','BRONO2 ','BRY ','C2H4 ','C2H5O2 ', & + 'C2H5OH ','C2H5OOH ','C2H6 ','C3H6 ','C3H7O2 ', & + 'C3H7OOH ','C3H8 ','CCL4 ','CF2CLBR ','CF3BR ', & + 'CFC11 ','CFC113 ','CFC114 ','CFC115 ','CFC12 ', & + 'CH2BR2 ','CH2O ','CH3BR ','CH3CCL3 ','CH3CHO ', & + 'CH3CL ','CH3CO3 ','CH3COCH3 ','CH3COCHO ','CH3COOH ', & + 'CH3COOOH ','CH3O2 ','CH3OH ','CH3OOH ','CH4 ', & + 'CHBR3 ','CL ','CL2 ','CL2O2 ','CLO ', & + 'CLONO2 ','CLY ','CO ','CO2 ','COF2 ', & + 'COFCL ','DMS ','dst_a1 ','dst_a2 ','dst_a3 ', & + 'EO ','EO2 ','EOOH ','F ','GLYALD ', & + 'GLYOXAL ','H ','H2 ','H2402 ','H2O2 ', & + 'H2SO4 ','HBR ','HCFC141B ','HCFC142B ','HCFC22 ', & + 'HCL ','HF ','HNO3 ','HO2NO2 ','HOBR ', & + 'HOCL ','HYAC ','HYDRALD ','ISOP ','ISOPNO3 ', & + 'ISOPO2 ','ISOPOOH ','MACR ','MACRO2 ','MACROOH ', & + 'MCO3 ','MPAN ','MVK ','N ','N2O ', & + 'N2O5 ','ncl_a1 ','ncl_a2 ','ncl_a3 ','NH3 ', & + 'NH4 ','NO ','NO2 ','NO3 ','NOA ', & + 'num_a1 ','num_a2 ','num_a3 ','num_a4 ','num_a5 ', & + 'O ','O2 ','O3 ','OCLO ','OCS ', & + 'OH ','ONITR ','PAN ','PO2 ','pom_a1 ', & + 'pom_a4 ','POOH ','RO2 ','ROOH ','S ', & + 'SF6 ','SO ','SO2 ','SO3 ','so4_a1 ', & + 'so4_a2 ','so4_a3 ','so4_a5 ','soa_a1 ','soa_a2 ', & + 'SOAE ','SOAG ','TERP ','XO2 ','XOOH ', & + 'NHDEP ','NDEP ','e ','HO2 ','N2D ', & + 'N2p ','NOp ','Np ','O1D ','O2_1D ', & + 'O2_1S ','O2p ','Op ','Op2D ','Op2P ', & + 'H2O ' /) + + adv_mass(:151) = (/ 12.011000_r8, 12.011000_r8, 72.143800_r8, 79.904000_r8, 115.356700_r8, & + 95.903400_r8, 141.908940_r8, 99.716850_r8, 28.051600_r8, 61.057800_r8, & + 46.065800_r8, 62.065200_r8, 30.066400_r8, 42.077400_r8, 75.083600_r8, & + 76.091000_r8, 44.092200_r8, 153.821800_r8, 165.364506_r8, 148.910210_r8, & + 137.367503_r8, 187.375310_r8, 170.921013_r8, 154.466716_r8, 120.913206_r8, & + 173.833800_r8, 30.025200_r8, 94.937200_r8, 133.402300_r8, 44.051000_r8, & + 50.485900_r8, 75.042400_r8, 58.076800_r8, 72.061400_r8, 60.050400_r8, & + 76.049800_r8, 47.032000_r8, 32.040000_r8, 48.039400_r8, 16.040600_r8, & + 252.730400_r8, 35.452700_r8, 70.905400_r8, 102.904200_r8, 51.452100_r8, & + 97.457640_r8, 100.916850_r8, 28.010400_r8, 44.009800_r8, 66.007206_r8, & + 82.461503_r8, 62.132400_r8, 135.064039_r8, 135.064039_r8, 135.064039_r8, & + 61.057800_r8, 77.057200_r8, 78.064600_r8, 18.998403_r8, 60.050400_r8, & + 58.035600_r8, 1.007400_r8, 2.014800_r8, 259.823613_r8, 34.013600_r8, & + 98.078400_r8, 80.911400_r8, 116.948003_r8, 100.493706_r8, 86.467906_r8, & + 36.460100_r8, 20.005803_r8, 63.012340_r8, 79.011740_r8, 96.910800_r8, & + 52.459500_r8, 74.076200_r8, 100.113000_r8, 68.114200_r8, 162.117940_r8, & + 117.119800_r8, 118.127200_r8, 70.087800_r8, 119.093400_r8, 120.100800_r8, & + 101.079200_r8, 147.084740_r8, 70.087800_r8, 14.006740_r8, 44.012880_r8, & + 108.010480_r8, 58.442468_r8, 58.442468_r8, 58.442468_r8, 17.028940_r8, & + 18.036340_r8, 30.006140_r8, 46.005540_r8, 62.004940_r8, 119.074340_r8, & + 1.007400_r8, 1.007400_r8, 1.007400_r8, 1.007400_r8, 1.007400_r8, & + 15.999400_r8, 31.998800_r8, 47.998200_r8, 67.451500_r8, 60.076400_r8, & + 17.006800_r8, 133.100140_r8, 121.047940_r8, 91.083000_r8, 12.011000_r8, & + 12.011000_r8, 92.090400_r8, 89.068200_r8, 90.075600_r8, 32.066000_r8, & + 146.056419_r8, 48.065400_r8, 64.064800_r8, 80.064200_r8, 115.107340_r8, & + 115.107340_r8, 115.107340_r8, 115.107340_r8, 12.011000_r8, 12.011000_r8, & + 12.011000_r8, 12.011000_r8, 136.228400_r8, 149.118600_r8, 150.126000_r8, & + 14.006740_r8, 14.006740_r8, 0.548567E-03_r8, 33.006200_r8, 14.006740_r8, & + 28.013480_r8, 30.006140_r8, 14.006740_r8, 15.999400_r8, 31.998800_r8, & + 31.998800_r8, 31.998800_r8, 15.999400_r8, 15.999400_r8, 15.999400_r8, & + 18.014200_r8 /) + + crb_mass(:151) = (/ 12.011000_r8, 12.011000_r8, 60.055000_r8, 0.000000_r8, 0.000000_r8, & + 0.000000_r8, 0.000000_r8, 0.000000_r8, 24.022000_r8, 24.022000_r8, & + 24.022000_r8, 24.022000_r8, 24.022000_r8, 36.033000_r8, 36.033000_r8, & + 36.033000_r8, 36.033000_r8, 12.011000_r8, 12.011000_r8, 12.011000_r8, & + 12.011000_r8, 24.022000_r8, 24.022000_r8, 24.022000_r8, 12.011000_r8, & + 12.011000_r8, 12.011000_r8, 12.011000_r8, 24.022000_r8, 24.022000_r8, & + 12.011000_r8, 24.022000_r8, 36.033000_r8, 36.033000_r8, 24.022000_r8, & + 24.022000_r8, 12.011000_r8, 12.011000_r8, 12.011000_r8, 12.011000_r8, & + 12.011000_r8, 0.000000_r8, 0.000000_r8, 0.000000_r8, 0.000000_r8, & + 0.000000_r8, 12.011000_r8, 12.011000_r8, 12.011000_r8, 12.011000_r8, & + 12.011000_r8, 24.022000_r8, 0.000000_r8, 0.000000_r8, 0.000000_r8, & + 24.022000_r8, 24.022000_r8, 24.022000_r8, 0.000000_r8, 24.022000_r8, & + 24.022000_r8, 0.000000_r8, 0.000000_r8, 24.022000_r8, 0.000000_r8, & + 0.000000_r8, 0.000000_r8, 24.022000_r8, 24.022000_r8, 12.011000_r8, & + 0.000000_r8, 0.000000_r8, 0.000000_r8, 0.000000_r8, 0.000000_r8, & + 0.000000_r8, 36.033000_r8, 60.055000_r8, 60.055000_r8, 60.055000_r8, & + 60.055000_r8, 60.055000_r8, 48.044000_r8, 48.044000_r8, 48.044000_r8, & + 48.044000_r8, 48.044000_r8, 48.044000_r8, 0.000000_r8, 0.000000_r8, & + 0.000000_r8, 0.000000_r8, 0.000000_r8, 0.000000_r8, 0.000000_r8, & + 0.000000_r8, 0.000000_r8, 0.000000_r8, 0.000000_r8, 36.033000_r8, & + 0.000000_r8, 0.000000_r8, 0.000000_r8, 0.000000_r8, 0.000000_r8, & + 0.000000_r8, 0.000000_r8, 0.000000_r8, 0.000000_r8, 12.011000_r8, & + 0.000000_r8, 48.044000_r8, 24.022000_r8, 36.033000_r8, 12.011000_r8, & + 12.011000_r8, 36.033000_r8, 36.033000_r8, 36.033000_r8, 0.000000_r8, & + 0.000000_r8, 0.000000_r8, 0.000000_r8, 0.000000_r8, 0.000000_r8, & + 0.000000_r8, 0.000000_r8, 0.000000_r8, 12.011000_r8, 12.011000_r8, & + 12.011000_r8, 12.011000_r8, 120.110000_r8, 60.055000_r8, 60.055000_r8, & + 0.000000_r8, 0.000000_r8, 0.000000_r8, 0.000000_r8, 0.000000_r8, & + 0.000000_r8, 0.000000_r8, 0.000000_r8, 0.000000_r8, 0.000000_r8, & + 0.000000_r8, 0.000000_r8, 0.000000_r8, 0.000000_r8, 0.000000_r8, & + 0.000000_r8 /) + + fix_mass(: 2) = (/ 0.00000000_r8, 28.0134800_r8 /) + + clsmap(: 2,1) = (/ 136, 137 /) + clsmap(:149,4) = (/ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, & + 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, & + 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, & + 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, & + 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, & + 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, & + 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, & + 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, & + 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, & + 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, & + 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, & + 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, & + 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, & + 131, 132, 133, 134, 135, 138, 139, 140, 141, 142, & + 143, 144, 145, 146, 147, 148, 149, 150, 151 /) + + permute(:149,4) = (/ 1, 2, 29, 131, 49, 133, 82, 3, 74, 98, & + 54, 62, 60, 116, 102, 68, 34, 31, 40, 41, & + 35, 42, 36, 43, 37, 75, 136, 86, 33, 117, & + 66, 126, 95, 121, 89, 85, 140, 80, 69, 147, & + 71, 143, 44, 28, 134, 111, 4, 118, 127, 48, & + 51, 56, 5, 6, 7, 72, 93, 38, 104, 114, & + 91, 148, 128, 32, 84, 39, 99, 50, 52, 57, & + 130, 58, 139, 73, 94, 101, 115, 64, 103, 97, & + 122, 78, 119, 123, 61, 125, 83, 124, 110, 53, & + 59, 8, 9, 10, 30, 11, 146, 135, 141, 67, & + 12, 13, 14, 15, 16, 145, 132, 138, 63, 65, & + 144, 112, 79, 96, 17, 18, 81, 113, 70, 90, & + 19, 129, 109, 55, 20, 21, 22, 23, 24, 25, & + 26, 27, 88, 120, 47, 107, 137, 108, 87, 92, & + 100, 142, 45, 46, 106, 105, 77, 76, 149 /) + + diag_map(:149) = (/ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, & + 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, & + 21, 22, 23, 24, 25, 26, 28, 29, 32, 35, & + 38, 41, 45, 49, 53, 57, 61, 65, 68, 71, & + 76, 81, 86, 91, 93, 96, 98, 101, 104, 107, & + 112, 117, 122, 126, 131, 135, 142, 148, 151, 157, & + 163, 168, 173, 178, 181, 189, 197, 203, 209, 215, & + 221, 227, 232, 239, 246, 253, 260, 266, 274, 282, & + 286, 294, 302, 311, 318, 325, 334, 343, 353, 358, & + 365, 370, 377, 386, 394, 401, 411, 424, 433, 442, & + 451, 460, 473, 490, 501, 511, 526, 539, 548, 561, & + 573, 584, 595, 607, 613, 623, 640, 649, 654, 671, & + 683, 702, 726, 744, 765, 793, 815, 826, 841, 860, & + 876, 909, 932, 959, 996,1021,1081,1128,1152,1194, & + 1241,1284,1323,1413,1459,1508,1534,1556,1584 /) + + extfrc_lst(: 21) = (/ 'num_a1 ','num_a2 ','so4_a1 ','so4_a2 ','num_a4 ', & + 'bc_a4 ','pom_a4 ','num_a5 ','so4_a5 ','CO ', & + 'NO2 ','NO ','SO2 ','O2p ','N2p ', & + 'Np ','N2D ','Op ','N ','e ', & + 'OH ' /) + + frc_from_dataset(: 21) = (/ .true., .true., .true., .true., .true., & + .true., .true., .true., .true., .true., & + .true., .true., .true., .false., .false., & + .false., .false., .false., .false., .false., & + .false. /) + + inv_lst(: 2) = (/ 'M ', 'N2 ' /) + + slvd_lst(: 13) = (/ 'e ', 'HO2 ', 'N2D ', 'N2p ', 'NOp ', & + 'Np ', 'O1D ', 'O2_1D ', 'O2_1S ', 'O2p ', & + 'Op ', 'Op2D ', 'Op2P ' /) + + if( allocated( rxt_tag_lst ) ) then + deallocate( rxt_tag_lst ) + end if + allocate( rxt_tag_lst(rxt_tag_cnt),stat=ios ) + if( ios /= 0 ) then + write(iulog,*) 'set_sim_dat: failed to allocate rxt_tag_lst; error = ',ios + call endrun + end if + if( allocated( rxt_tag_map ) ) then + deallocate( rxt_tag_map ) + end if + allocate( rxt_tag_map(rxt_tag_cnt),stat=ios ) + if( ios /= 0 ) then + write(iulog,*) 'set_sim_dat: failed to allocate rxt_tag_map; error = ',ios + call endrun + end if + rxt_tag_lst( 1: 200) = (/ 'jh2o_b ', 'jh2o_a ', & + 'jh2o_c ', 'jh2o2 ', & + 'jo2_a ', 'jo2_b ', & + 'jo3_a ', 'jo3_b ', & + 'jhno3 ', 'jho2no2_a ', & + 'jho2no2_b ', 'jn2o ', & + 'jn2o5_a ', 'jn2o5_b ', & + 'jno_i ', 'jno ', & + 'jno2 ', 'jno3_a ', & + 'jno3_b ', 'jc2h5ooh ', & + 'jc3h7ooh ', 'jch2o_a ', & + 'jch2o_b ', 'jch3cho ', & + 'jacet ', 'jmgly ', & + 'jch3co3h ', 'jch3ooh ', & + 'jch4_b ', 'jch4_a ', & + 'jco2 ', 'jeooh ', & + 'jglyald ', 'jglyoxal ', & + 'jhyac ', 'jisopooh ', & + 'jmacr_a ', 'jmacr_b ', & + 'jmpan ', 'jmvk ', & + 'jnoa ', 'jonitr ', & + 'jpan ', 'jpooh ', & + 'jrooh ', 'jxooh ', & + 'jbrcl ', 'jbro ', & + 'jbrono2_b ', 'jbrono2_a ', & + 'jccl4 ', 'jcf2clbr ', & + 'jcf3br ', 'jcfcl3 ', & + 'jcfc113 ', 'jcfc114 ', & + 'jcfc115 ', 'jcf2cl2 ', & + 'jch2br2 ', 'jch3br ', & + 'jch3ccl3 ', 'jch3cl ', & + 'jchbr3 ', 'jcl2 ', & + 'jcl2o2 ', 'jclo ', & + 'jclono2_a ', 'jclono2_b ', & + 'jcof2 ', 'jcofcl ', & + 'jh2402 ', 'jhbr ', & + 'jhcfc141b ', 'jhcfc142b ', & + 'jhcfc22 ', 'jhcl ', & + 'jhf ', 'jhobr ', & + 'jhocl ', 'joclo ', & + 'jsf6 ', 'jeuv_26 ', & + 'jeuv_4 ', 'jeuv_18 ', & + 'jeuv_25 ', 'jeuv_13 ', & + 'jeuv_11 ', 'jeuv_6 ', & + 'jeuv_10 ', 'jeuv_22 ', & + 'jeuv_23 ', 'jeuv_16 ', & + 'jeuv_14 ', 'jeuv_2 ', & + 'jeuv_15 ', 'jeuv_3 ', & + 'jeuv_1 ', 'jeuv_20 ', & + 'jeuv_24 ', 'jeuv_8 ', & + 'jeuv_21 ', 'jeuv_5 ', & + 'jeuv_19 ', 'jeuv_12 ', & + 'jeuv_9 ', 'jeuv_7 ', & + 'jeuv_17 ', 'jh2so4 ', & + 'jocs ', 'jso ', & + 'jso2 ', 'jso3 ', & + 'jsoa_a1 ', 'jsoa_a2 ', & + 'ag1 ', 'ag2 ', & + 'O1D_H2 ', 'O1D_H2O ', & + 'O1D_N2 ', 'O1D_O2 ', & + 'O1D_O2b ', 'O1D_O3 ', & + 'O1D_O3a ', 'O2_1D_N2 ', & + 'O2_1D_O ', 'O2_1D_O2 ', & + 'O2_1S_CO2 ', 'O2_1S_N2 ', & + 'O2_1S_O ', 'O2_1S_O2 ', & + 'O2_1S_O3 ', 'O_O3 ', & + 'usr_O_O ', 'usr_O_O2 ', & + 'H2_O ', 'H2O2_O ', & + 'H_HO2 ', 'H_HO2a ', & + 'H_HO2b ', 'H_O2 ', & + 'HO2_O ', 'HO2_O3 ', & + 'H_O3 ', 'OH_H2 ', & + 'OH_H2O2 ', 'OH_HO2 ', & + 'OH_O ', 'OH_O3 ', & + 'OH_OH ', 'OH_OH_M ', & + 'usr_HO2_HO2 ', 'HO2NO2_OH ', & + 'N2D_O ', 'N2D_O2 ', & + 'N_NO ', 'N_NO2a ', & + 'N_NO2b ', 'N_NO2c ', & + 'N_O2 ', 'NO2_O ', & + 'NO2_O3 ', 'NO2_O_M ', & + 'NO3_HO2 ', 'NO3_NO ', & + 'NO3_O ', 'NO3_OH ', & + 'N_OH ', 'NO_HO2 ', & + 'NO_O3 ', 'NO_O_M ', & + 'O1D_N2Oa ', 'O1D_N2Ob ', & + 'tag_NO2_HO2 ', 'tag_NO2_NO3 ', & + 'tag_NO2_OH ', 'usr_HNO3_OH ', & + 'usr_HO2NO2_M ', 'usr_N2O5_M ', & + 'CL_CH2O ', 'CL_CH4 ', & + 'CL_H2 ', 'CL_H2O2 ', & + 'CL_HO2a ', 'CL_HO2b ', & + 'CL_O3 ', 'CLO_CH3O2 ', & + 'CLO_CLOa ', 'CLO_CLOb ', & + 'CLO_CLOc ', 'CLO_HO2 ', & + 'CLO_NO ', 'CLONO2_CL ', & + 'CLO_NO2_M ', 'CLONO2_O ', & + 'CLONO2_OH ', 'CLO_O ', & + 'CLO_OHa ', 'CLO_OHb ', & + 'HCL_O ', 'HCL_OH ' /) + rxt_tag_lst( 201: 400) = (/ 'HOCL_CL ', 'HOCL_O ', & + 'HOCL_OH ', 'O1D_CCL4 ', & + 'O1D_CF2CLBR ', 'O1D_CFC11 ', & + 'O1D_CFC113 ', 'O1D_CFC114 ', & + 'O1D_CFC115 ', 'O1D_CFC12 ', & + 'O1D_HCLa ', 'O1D_HCLb ', & + 'tag_CLO_CLO_M ', 'usr_CL2O2_M ', & + 'BR_CH2O ', 'BR_HO2 ', & + 'BR_O3 ', 'BRO_BRO ', & + 'BRO_CLOa ', 'BRO_CLOb ', & + 'BRO_CLOc ', 'BRO_HO2 ', & + 'BRO_NO ', 'BRO_NO2_M ', & + 'BRONO2_O ', 'BRO_O ', & + 'BRO_OH ', 'HBR_O ', & + 'HBR_OH ', 'HOBR_O ', & + 'O1D_CF3BR ', 'O1D_CHBR3 ', & + 'O1D_H2402 ', 'O1D_HBRa ', & + 'O1D_HBRb ', 'F_CH4 ', & + 'F_H2 ', 'F_H2O ', & + 'F_HNO3 ', 'O1D_COF2 ', & + 'O1D_COFCL ', 'CH2BR2_CL ', & + 'CH2BR2_OH ', 'CH3BR_CL ', & + 'CH3BR_OH ', 'CH3CCL3_OH ', & + 'CH3CL_CL ', 'CH3CL_OH ', & + 'CHBR3_CL ', 'CHBR3_OH ', & + 'HCFC141B_OH ', 'HCFC142B_OH ', & + 'HCFC22_OH ', 'O1D_CH2BR2 ', & + 'O1D_CH3BR ', 'O1D_HCFC141B ', & + 'O1D_HCFC142B ', 'O1D_HCFC22 ', & + 'CH2O_NO3 ', 'CH2O_O ', & + 'CH2O_OH ', 'CH3O2_CH3O2a ', & + 'CH3O2_CH3O2b ', 'CH3O2_HO2 ', & + 'CH3O2_NO ', 'CH3OH_OH ', & + 'CH3OOH_OH ', 'CH4_OH ', & + 'O1D_CH4a ', 'O1D_CH4b ', & + 'O1D_CH4c ', 'usr_CO_OH ', & + 'C2H4_CL_M ', 'C2H4_O3 ', & + 'C2H5O2_C2H5O2 ', 'C2H5O2_CH3O2 ', & + 'C2H5O2_HO2 ', 'C2H5O2_NO ', & + 'C2H5OH_OH ', 'C2H5OOH_OH ', & + 'C2H6_CL ', 'C2H6_OH ', & + 'CH3CHO_NO3 ', 'CH3CHO_OH ', & + 'CH3CO3_CH3CO3 ', 'CH3CO3_CH3O2 ', & + 'CH3CO3_HO2 ', 'CH3CO3_NO ', & + 'CH3COOH_OH ', 'CH3COOOH_OH ', & + 'EO2_HO2 ', 'EO2_NO ', & + 'EO_M ', 'EO_O2 ', & + 'GLYALD_OH ', 'GLYOXAL_OH ', & + 'PAN_OH ', 'tag_C2H4_OH ', & + 'tag_CH3CO3_NO2 ', 'usr_PAN_M ', & + 'C3H6_NO3 ', 'C3H6_O3 ', & + 'C3H7O2_CH3O2 ', 'C3H7O2_HO2 ', & + 'C3H7O2_NO ', 'C3H7OOH_OH ', & + 'C3H8_OH ', 'CH3COCHO_NO3 ', & + 'CH3COCHO_OH ', 'HYAC_OH ', & + 'NOA_OH ', 'PO2_HO2 ', & + 'PO2_NO ', 'POOH_OH ', & + 'RO2_CH3O2 ', 'RO2_HO2 ', & + 'RO2_NO ', 'ROOH_OH ', & + 'tag_C3H6_OH ', 'usr_CH3COCH3_OH ', & + 'MACRO2_CH3CO3 ', 'MACRO2_CH3O2 ', & + 'MACRO2_HO2 ', 'MACRO2_NO3 ', & + 'MACRO2_NOa ', 'MACRO2_NOb ', & + 'MACR_O3 ', 'MACR_OH ', & + 'MACROOH_OH ', 'MCO3_CH3CO3 ', & + 'MCO3_CH3O2 ', 'MCO3_HO2 ', & + 'MCO3_MCO3 ', 'MCO3_NO ', & + 'MCO3_NO3 ', 'MPAN_OH_M ', & + 'MVK_O3 ', 'MVK_OH ', & + 'tag_MCO3_NO2 ', 'usr_MPAN_M ', & + 'BIGALK_OH ', 'HYDRALD_OH ', & + 'ISOP_NO3 ', 'ISOPNO3_HO2 ', & + 'ISOPNO3_NO ', 'ISOPNO3_NO3 ', & + 'ISOPO2_CH3CO3 ', 'ISOPO2_CH3O2 ', & + 'ISOPO2_HO2 ', 'ISOPO2_NO ', & + 'ISOPO2_NO3 ', 'ISOP_O3 ', & + 'ISOP_OH ', 'ISOPOOH_OH ', & + 'ONITR_NO3 ', 'ONITR_OH ', & + 'XO2_CH3CO3 ', 'XO2_CH3O2 ', & + 'XO2_HO2 ', 'XO2_NO ', & + 'XO2_NO3 ', 'XOOH_OH ', & + 'TERP_NO3 ', 'TERP_O3 ', & + 'TERP_OH ', 'DMS_NO3 ', & + 'DMS_OHa ', 'OCS_O ', & + 'OCS_OH ', 'S_O2 ', & + 'SO2_OH_M ', 'S_O3 ', & + 'SO_BRO ', 'SO_CLO ', & + 'S_OH ', 'SO_NO2 ', & + 'SO_O2 ', 'SO_O3 ', & + 'SO_OCLO ', 'SO_OH ', & + 'usr_DMS_OH ', 'usr_SO3_H2O ', & + 'NH3_OH ', 'usr_HO2_aer ', & + 'usr_N2O5_aer ', 'usr_NH4_strat_tau ', & + 'usr_NO2_aer ', 'usr_NO3_aer ', & + 'usr_ONITR_aer ', 'SOAE_tau ', & + 'het1 ', 'het10 ', & + 'het11 ', 'het12 ', & + 'het13 ', 'het14 ', & + 'het15 ', 'het16 ', & + 'het17 ', 'het2 ' /) + rxt_tag_lst( 401: 435) = (/ 'het3 ', 'het4 ', & + 'het5 ', 'het6 ', & + 'het7 ', 'het8 ', & + 'het9 ', 'ag247nm ', & + 'ag373nm ', 'ag732nm ', & + 'elec1 ', 'elec2 ', & + 'elec3 ', 'ion_N2p_O2 ', & + 'ion_N2p_Oa ', 'ion_N2p_Ob ', & + 'ion_Np_O ', 'ion_Np_O2a ', & + 'ion_Np_O2b ', 'ion_O2p_N ', & + 'ion_O2p_N2 ', 'ion_O2p_NO ', & + 'ion_Op_CO2 ', 'ion_Op_N2 ', & + 'ion_Op_N2D ', 'ion_Op_O2 ', & + 'Op2D_e ', 'Op2D_N2 ', & + 'Op2D_O ', 'Op2D_O2 ', & + 'Op2P_ea ', 'Op2P_eb ', & + 'Op2P_N2a ', 'Op2P_N2b ', & + 'Op2P_O ' /) + rxt_tag_map(:rxt_tag_cnt) = (/ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, & + 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, & + 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, & + 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, & + 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, & + 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, & + 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, & + 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, & + 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, & + 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, & + 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, & + 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, & + 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, & + 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, & + 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, & + 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, & + 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, & + 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, & + 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, & + 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, & + 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, & + 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, & + 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, & + 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, & + 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, & + 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, & + 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, & + 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, & + 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, & + 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, & + 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, & + 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, & + 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, & + 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, & + 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, & + 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, & + 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, & + 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, & + 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, & + 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, & + 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, & + 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, & + 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, & + 431, 432, 433, 434, 435 /) + if( allocated( pht_alias_lst ) ) then + deallocate( pht_alias_lst ) + end if + allocate( pht_alias_lst(phtcnt,2),stat=ios ) + if( ios /= 0 ) then + write(iulog,*) 'set_sim_dat: failed to allocate pht_alias_lst; error = ',ios + call endrun + end if + if( allocated( pht_alias_mult ) ) then + deallocate( pht_alias_mult ) + end if + allocate( pht_alias_mult(phtcnt,2),stat=ios ) + if( ios /= 0 ) then + write(iulog,*) 'set_sim_dat: failed to allocate pht_alias_mult; error = ',ios + call endrun + end if + pht_alias_lst(:,1) = (/ ' ', ' ', ' ', ' ', & + 'userdefined ', 'userdefined ', ' ', ' ', & + ' ', ' ', ' ', ' ', & + ' ', ' ', ' ', 'userdefined ', & + ' ', ' ', ' ', ' ', & + ' ', ' ', ' ', ' ', & + ' ', ' ', ' ', ' ', & + ' ', ' ', ' ', ' ', & + ' ', ' ', ' ', ' ', & + ' ', ' ', ' ', ' ', & + ' ', ' ', ' ', ' ', & + ' ', ' ', ' ', ' ', & + ' ', ' ', ' ', ' ', & + ' ', ' ', ' ', ' ', & + ' ', ' ', ' ', ' ', & + ' ', ' ', ' ', ' ', & + ' ', ' ', ' ', ' ', & + ' ', ' ', ' ', ' ', & + ' ', ' ', ' ', ' ', & + ' ', ' ', ' ', ' ', & + ' ', 'userdefined ', 'userdefined ', 'userdefined ', & + 'userdefined ', 'userdefined ', 'userdefined ', 'userdefined ', & + 'userdefined ', 'userdefined ', 'userdefined ', 'userdefined ', & + 'userdefined ', 'userdefined ', 'userdefined ', 'userdefined ', & + 'userdefined ', 'userdefined ', 'userdefined ', 'userdefined ', & + 'userdefined ', 'userdefined ', 'userdefined ', 'userdefined ', & + 'userdefined ', 'userdefined ', 'userdefined ', ' ', & + ' ', ' ', ' ', ' ', & + ' ', ' ' /) + pht_alias_lst(:,2) = (/ ' ', ' ', ' ', ' ', & + ' ', ' ', ' ', ' ', & + ' ', ' ', ' ', ' ', & + ' ', ' ', ' ', ' ', & + ' ', ' ', ' ', 'jch3ooh ', & + 'jch3ooh ', ' ', ' ', ' ', & + ' ', ' ', 'jh2o2 ', ' ', & + ' ', ' ', ' ', 'jch3ooh ', & + ' ', 'jmgly ', ' ', 'jch3ooh ', & + ' ', ' ', 'jpan ', ' ', & + 'jch2o_a ', 'jch3cho ', ' ', 'jch3ooh ', & + 'jch3ooh ', 'jch3ooh ', ' ', ' ', & + ' ', ' ', ' ', ' ', & + ' ', ' ', ' ', ' ', & + ' ', ' ', ' ', ' ', & + ' ', ' ', ' ', ' ', & + ' ', ' ', ' ', ' ', & + ' ', ' ', ' ', ' ', & + ' ', ' ', ' ', ' ', & + ' ', ' ', ' ', ' ', & + ' ', 'userdefined ', 'userdefined ', 'userdefined ', & + 'userdefined ', 'userdefined ', 'userdefined ', 'userdefined ', & + 'userdefined ', 'userdefined ', 'userdefined ', 'userdefined ', & + 'userdefined ', 'userdefined ', 'userdefined ', 'userdefined ', & + 'userdefined ', 'userdefined ', 'userdefined ', 'userdefined ', & + 'userdefined ', 'userdefined ', 'userdefined ', 'userdefined ', & + 'userdefined ', 'userdefined ', 'userdefined ', ' ', & + ' ', ' ', ' ', ' ', & + 'jno2 ', 'jno2 ' /) + pht_alias_mult(:,1) = (/ 1._r8, 1._r8, 1._r8, 1._r8, 1._r8, & + 1._r8, 1._r8, 1._r8, 1._r8, 1._r8, & + 1._r8, 1._r8, 1._r8, 1._r8, 1._r8, & + 1._r8, 1._r8, 1._r8, 1._r8, 1._r8, & + 1._r8, 1._r8, 1._r8, 1._r8, 1._r8, & + 1._r8, 1._r8, 1._r8, 1._r8, 1._r8, & + 1._r8, 1._r8, 1._r8, 1._r8, 1._r8, & + 1._r8, 1._r8, 1._r8, 1._r8, 1._r8, & + 1._r8, 1._r8, 1._r8, 1._r8, 1._r8, & + 1._r8, 1._r8, 1._r8, 1._r8, 1._r8, & + 1._r8, 1._r8, 1._r8, 1._r8, 1._r8, & + 1._r8, 1._r8, 1._r8, 1._r8, 1._r8, & + 1._r8, 1._r8, 1._r8, 1._r8, 1._r8, & + 1._r8, 1._r8, 1._r8, 1._r8, 1._r8, & + 1._r8, 1._r8, 1._r8, 1._r8, 1._r8, & + 1._r8, 1._r8, 1._r8, 1._r8, 1._r8, & + 1._r8, 1._r8, 1._r8, 1._r8, 1._r8, & + 1._r8, 1._r8, 1._r8, 1._r8, 1._r8, & + 1._r8, 1._r8, 1._r8, 1._r8, 1._r8, & + 1._r8, 1._r8, 1._r8, 1._r8, 1._r8, & + 1._r8, 1._r8, 1._r8, 1._r8, 1._r8, & + 1._r8, 1._r8, 1._r8, 1._r8, 1._r8, & + 1._r8, 1._r8, 1._r8, 1._r8 /) + pht_alias_mult(:,2) = (/ 1._r8, 1._r8, 1._r8, 1._r8, 1._r8, & + 1._r8, 1._r8, 1._r8, 1._r8, 1._r8, & + 1._r8, 1._r8, 1._r8, 1._r8, 1._r8, & + 1._r8, 1._r8, 1._r8, 1._r8, 1._r8, & + 1._r8, 1._r8, 1._r8, 1._r8, 1._r8, & + 1._r8, 0.28_r8, 1._r8, 1._r8, 1._r8, & + 1._r8, 1._r8, 1._r8, 1._r8, 1._r8, & + 1._r8, 1._r8, 1._r8, 1._r8, 1._r8, & + 1._r8, 1._r8, 1._r8, 1._r8, 1._r8, & + 1._r8, 1._r8, 1._r8, 1._r8, 1._r8, & + 1._r8, 1._r8, 1._r8, 1._r8, 1._r8, & + 1._r8, 1._r8, 1._r8, 1._r8, 1._r8, & + 1._r8, 1._r8, 1._r8, 1._r8, 1._r8, & + 1._r8, 1._r8, 1._r8, 1._r8, 1._r8, & + 1._r8, 1._r8, 1._r8, 1._r8, 1._r8, & + 1._r8, 1._r8, 1._r8, 1._r8, 1._r8, & + 1._r8, 1._r8, 1._r8, 1._r8, 1._r8, & + 1._r8, 1._r8, 1._r8, 1._r8, 1._r8, & + 1._r8, 1._r8, 1._r8, 1._r8, 1._r8, & + 1._r8, 1._r8, 1._r8, 1._r8, 1._r8, & + 1._r8, 1._r8, 1._r8, 1._r8, 1._r8, & + 1._r8, 1._r8, 1._r8, 1._r8, 1._r8, & + 1._r8, 1._r8, .0004_r8, .0004_r8 /) + allocate( cph_enthalpy(enthalpy_cnt),stat=ios ) + if( ios /= 0 ) then + write(iulog,*) 'set_sim_dat: failed to allocate cph_enthalpy; error = ',ios + call endrun + end if + allocate( cph_rid(enthalpy_cnt),stat=ios ) + if( ios /= 0 ) then + write(iulog,*) 'set_sim_dat: failed to allocate cph_rid; error = ',ios + call endrun + end if + cph_rid(:) = (/ 119, 120, 121, 124, 125, & + 126, 128, 129, 130, 131, & + 132, 133, 134, 137, 140, & + 141, 142, 143, 146, 147, & + 148, 151, 153, 154, 155, & + 159, 160, 168, 169, 408, & + 409, 410, 411, 412, 413, & + 414, 415, 417, 418, 419, & + 420, 422, 424, 425, 426, & + 427, 428, 429, 430, 431, & + 432, 433, 434, 435 /) + cph_enthalpy(:) = (/ 189.810000_r8, 32.910000_r8, 189.810000_r8, 94.300000_r8, 94.300000_r8, & + 94.300000_r8, 62.600000_r8, 62.600000_r8, 62.600000_r8, 62.600000_r8, & + 392.190000_r8, 493.580000_r8, 101.390000_r8, 232.590000_r8, 203.400000_r8, & + 226.580000_r8, 120.100000_r8, 194.710000_r8, 293.620000_r8, 67.670000_r8, & + 165.300000_r8, 165.510000_r8, 229.610000_r8, 177.510000_r8, 313.750000_r8, & + 133.750000_r8, 193.020000_r8, 34.470000_r8, 199.170000_r8, 483.390000_r8, & + 321.300000_r8, 163.060000_r8, 82.389000_r8, 508.950000_r8, 354.830000_r8, & + 339.590000_r8, 67.530000_r8, 95.550000_r8, 239.840000_r8, 646.280000_r8, & + 406.160000_r8, 271.380000_r8, 105.040000_r8, 139.900000_r8, 150.110000_r8, & + 319.370000_r8, 128.320000_r8, 319.360000_r8, 469.400000_r8, 163.060000_r8, & + 482.430000_r8, 291.380000_r8, 67.540000_r8, 501.720000_r8 /) + allocate( num_rnts(rxntot-phtcnt),stat=ios ) + if( ios /= 0 ) then + write(iulog,*) 'set_sim_dat: failed to allocate num_rnts; error = ',ios + call endrun + end if + num_rnts(:) = (/ 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, & + 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, & + 2, 2, 2, 2, 2, 3, 2, 2, 2, 2, & + 2, 2, 2, 2, 2, 3, 2, 2, 2, 2, & + 2, 2, 2, 2, 2, 2, 2, 3, 2, 2, & + 2, 2, 2, 2, 2, 3, 2, 2, 3, 3, & + 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, & + 2, 2, 2, 2, 2, 2, 2, 2, 3, 2, & + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, & + 2, 2, 2, 2, 2, 2, 2, 2, 3, 2, & + 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, & + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, & + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, & + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, & + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, & + 2, 2, 2, 2, 2, 2, 2, 2, 3, 2, & + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, & + 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, & + 2, 2, 2, 3, 3, 2, 2, 2, 2, 2, & + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, & + 2, 2, 2, 2, 3, 2, 2, 2, 2, 2, & + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, & + 2, 3, 2, 2, 3, 2, 2, 2, 2, 2, & + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, & + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, & + 2, 2, 2, 2, 2, 2, 3, 2, 2, 2, & + 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, & + 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, & + 1, 1, 2, 2, 2, 1, 1, 2, 2, 2, & + 1, 1, 2, 1, 1, 1, 2, 2, 2, 2, & + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, & + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, & + 2 /) + + end subroutine set_sim_dat + + end module mo_sim_dat From 9410499047be0186cdfe49e8461585d6d5354ae4 Mon Sep 17 00:00:00 2001 From: Francis Vitt Date: Tue, 28 Jan 2025 16:35:10 -0700 Subject: [PATCH 03/14] adjust compsets names; fix namelist issues with t4ma chem; cldfrac indx issue modified: bld/build-namelist modified: bld/configure modified: cime_config/config_component.xml modified: cime_config/config_compsets.xml modified: cime_config/config_pes.xml modified: cime_config/testdefs/testlist_cam.xml modified: src/physics/rrtmgp/mcica_subcol_gen.F90 --- bld/build-namelist | 33 +++++++++++---------- bld/configure | 4 +-- cime_config/config_component.xml | 1 + cime_config/config_compsets.xml | 24 ++++++++-------- cime_config/config_pes.xml | 4 +-- cime_config/testdefs/testlist_cam.xml | 12 ++++---- src/physics/rrtmgp/mcica_subcol_gen.F90 | 38 ++++++++++++------------- 7 files changed, 60 insertions(+), 56 deletions(-) diff --git a/bld/build-namelist b/bld/build-namelist index 29c7d6b316..40af2fe82b 100755 --- a/bld/build-namelist +++ b/bld/build-namelist @@ -549,7 +549,7 @@ my $rad_prog_bcarb = (($prog_species =~ "BC" or $aero_chem) and !($chem_rad_pa my $rad_prog_sulf = (($prog_species =~ "SO4" or $aero_chem) and !($chem_rad_passive)); my $rad_prog_dust = (($prog_species =~ "DST" or $aero_chem) and !($chem_rad_passive)); my $rad_prog_sslt = (($prog_species =~ "SSLT" or $aero_chem) and !($chem_rad_passive)); -my $rad_prog_ozone = (($chem =~ "mozart" or $chem =~ "waccm_ma" or $chem =~ "tsmlt" or $chem =~ "trop_strat" or $chem =~ /geoschem/) and !($chem_rad_passive)); +my $rad_prog_ozone = (($chem =~ "mozart" or $chem =~ "waccm_ma" or $chem =~ "tsmlt" or $chem =~ "_t4ma" or $chem =~ "trop_strat" or $chem =~ /geoschem/) and !($chem_rad_passive)); # Check for eruptive volcano emissions. These will be radiatively active by default, but # only if using BAM and the camrt radiation package @@ -878,7 +878,7 @@ my @aerosources = (); # and commas) that will be assigned to the namelist variable rad_climate. my $radval = "'A:Q:H2O'"; -if (($chem =~ /waccm_ma/ or $chem =~ /waccm_tsmlt/) and !$chem_rad_passive) { +if (($chem =~ /waccm_ma/ or $chem =~ /waccm_tsmlt/ or $chem =~ /waccm_t4ma/) and !$chem_rad_passive) { $radval .= ",'A:O2:O2','A:CO2:CO2'"; } elsif (($chem =~ /trop_strat/ or $chem =~ /geoschem/) and !$chem_rad_passive) { @@ -908,7 +908,7 @@ if ($rad_prog_ozone) { die "ERROR: can not set ozone rad_climate specification\n"; } -if ((($chem =~ /ghg_mam4/) or ($chem =~ /waccm_ma/) or ($chem =~ /waccm_sc_mam/) or ($chem =~ /waccm_tsmlt/) or ($chem =~ /trop_strat/)) and !$chem_rad_passive ) { +if ((($chem =~ /ghg_mam4/) or ($chem =~ /waccm_ma/) or ($chem =~ /waccm_t4ma/) or ($chem =~ /waccm_sc_mam/) or ($chem =~ /waccm_tsmlt/) or ($chem =~ /trop_strat/)) and !$chem_rad_passive ) { $radval .= ",'A:N2O:N2O','A:CH4:CH4','N:CFC11STAR:CFC11','A:CFC12:CFC12'"; } elsif ($prog_ghg1 and $prog_ghg2 and !$chem_rad_passive ) { $radval .= ",'A:N2O:N2O','A:CH4:CH4','A:CFC11:CFC11','A:CFC12:CFC12'"; @@ -2070,7 +2070,7 @@ if ($chem =~ /geoschem/) { } } -if ($chem =~ /trop_mozart/ or $chem =~ /trop_strat/ or $chem =~ /waccm_tsmlt/) { +if ($chem =~ /trop_mozart/ or $chem =~ /trop_strat/ or $chem =~ /waccm_tsmlt/ or $chem =~ /_t4ma/) { my $val; @@ -2102,7 +2102,7 @@ if ($chem =~ /trop_mozart/ or $chem =~ /trop_strat/ or $chem =~ /waccm_tsmlt/) { my @files; # Datasets - if ($chem =~ /trop_strat/ or $chem =~ /waccm_tsmlt/) { + if ($chem =~ /trop_strat/ or $chem =~ /waccm_tsmlt/ or $chem =~ /waccm_t4ma/) { @files = ( 'flbc_file', 'xs_coef_file','xs_short_file','xs_long_file', 'rsf_file' ); } else { @@ -2282,7 +2282,7 @@ if (($chem =~ /_mam4/ or $chem =~ /_mam5/) and ($phys =~ /cam6/ or $phys =~ /cam } # for mid-atmos gas-phase chemistry - if ($chem =~ /trop_strat/ or $chem =~ /_tsmlt/ or $chem =~ /waccm_ma/) { + if ($chem =~ /trop_strat/ or $chem =~ /_tsmlt/ or $chem =~ /waccm_ma/ or $chem =~ /waccm_t4ma/) { %species = (%species, 'NO_an_srf_file' => 'NO', 'NO_bb_srf_file' => 'NO', @@ -2295,7 +2295,7 @@ if (($chem =~ /_mam4/ or $chem =~ /_mam5/) and ($phys =~ /cam6/ or $phys =~ /cam } # for troposphere gas-phase chemistry - if ($chem =~ /trop_strat/ or $chem =~ /_tsmlt/) { + if ($chem =~ /trop_strat/ or $chem =~ /_tsmlt/ or $chem =~ /_t4ma/) { %species = (%species, 'BIGALK_an_srf_file' => 'BIGALK', 'BIGALK_bb_srf_file' => 'BIGALK', @@ -2326,9 +2326,12 @@ if (($chem =~ /_mam4/ or $chem =~ /_mam5/) and ($phys =~ /cam6/ or $phys =~ /cam 'ISOP_bb_srf_file' => 'ISOP', 'NH3_an_srf_file' => 'NH3', 'NH3_bb_srf_file' => 'NH3', - 'NH3_ot_srf_file' => 'NH3', + 'NH3_ot_srf_file' => 'NH3' ) ; + if (chem_has_species($cfg, 'E90')) { + %species = (%species, 'E90_srf_file' => 'E90' ); - if ($chem !~ /_ts4/) { + } + if ($chem !~ /_ts4/ and $chem !~ /_t4ma/) { %species = (%species, 'BENZENE_an_srf_file' => 'BENZENE', 'BENZENE_bb_srf_file' => 'BENZENE', @@ -2352,7 +2355,7 @@ if (($chem =~ /_mam4/ or $chem =~ /_mam5/) and ($phys =~ /cam6/ or $phys =~ /cam if ($chem =~ /trop_strat_mam4_ts2/ or $chem =~ /trop_strat_mam5_ts2/) { %species = (%species, 'MTERP_bb_srf_file' => 'APIN') ; - } elsif ($chem =~ /_ts4/) { + } elsif ($chem =~ /_ts4/ or $chem =~ /_t4ma/) { %species = (%species, 'MTERP_bb_srf_file' => 'TERP') ; } else { @@ -2402,7 +2405,7 @@ if (($chem =~ /_mam4/ or $chem =~ /_mam5/) and ($phys =~ /cam6/ or $phys =~ /cam $first = 0; } } - if ($chem eq 'trop_mam4' or $chem eq 'waccm_sc_mam4' or $chem eq 'ghg_mam4' or $chem =~ /_ts4/) { + if ($chem eq 'trop_mam4' or $chem eq 'waccm_sc_mam4' or $chem eq 'ghg_mam4' or $chem =~ /_ts4/ or $chem =~ /_t4ma/) { # SOA yields (used for the interactive emissions) have been calculated based on the VBS yields in CAM-chem. # Duseong S. Jo, et al. to be submitted to GMD, 2023 -- see https://github.com/ESCOMP/CAM/pull/727 discussion for additional detail. my %soae_fctrs = ('BENZENE_an_srf_file' => '2.5592D0', @@ -2612,7 +2615,7 @@ if (($chem =~ /_mam4/ or $chem =~ /_mam5/) and ($phys =~ /cam6/ or $phys =~ /cam add_default($nl, 'megan_factors_file'); add_default($nl, 'megan_mapped_emisfctrs', 'val'=>'.false.'); } - if ($chem =~ /trop_strat_mam5_ts4/) { + if ($chem =~ /trop_strat_mam5_ts4/ or $chem =~ /_t4ma/) { my $val = "'ISOP = isoprene'," . "'TERP = carene_3 + pinene_a + thujene_a + bornene + terpineol_4 + terpineol_a + terpinyl_ACT_a +'," . "' myrtenal + sabinene + pinene_b + camphene + fenchene_a + limonene + phellandrene_a + terpinene_a +'," @@ -2683,7 +2686,7 @@ if (($chem =~ /_mam4/ or $chem =~ /_mam5/) and ($phys =~ /cam6/ or $phys =~ /cam add_default($nl, 'megan_mapped_emisfctrs', 'val'=>'.false.'); } if ($chem =~ /waccm_ma/) { - my $val = "'CH2O = formaldehyde', 'CO = carbon_monoxide'"; + my $val = "'CH2O = formaldehyde','CO = carbon_monoxide'"; add_default($nl, 'megan_specifier', 'val'=>$val); add_default($nl, 'megan_factors_file'); add_default($nl, 'megan_mapped_emisfctrs', 'val'=>'.false.'); @@ -2833,7 +2836,7 @@ if ($maxzen>0.0) { # upper boundary specifier my $ubc_ver; -if (($chem =~ /waccm_ma/ or $chem =~ /waccm_tsmlt/ ) and !$waccmx) { +if (($chem =~ /waccm_ma/ or $chem =~ /waccm_tsmlt/ or $chem =~ /waccm_t4ma/) and !$waccmx) { $ubc_ver = 'waccmchem'; } elsif ($chem =~ /waccm_sc/) { $ubc_ver = 'waccmsc'; @@ -2843,7 +2846,7 @@ if (defined $ubc_ver) { } # WACCM options. -if ($chem =~ /waccm_ma/ or $chem =~ /waccm_tsmlt/) { +if ($chem =~ /waccm_ma/ or $chem =~ /waccm_tsmlt/ or $chem =~ /waccm_t4ma/) { # Species with fixed lower boundary my $val = "'CCL4','CF2CLBR','CF3BR','CFC11','CFC113','CFC12','CH3BR','CH3CCL3','CH3CL','CH4','CO2'" diff --git a/bld/configure b/bld/configure index 8f9f435c8c..3536153696 100755 --- a/bld/configure +++ b/bld/configure @@ -708,8 +708,8 @@ if ( ($waccm_phys) and ($dyn_pkg eq 'eul') ) { EOF } -# WACCM includes 4 age of air tracers by default -if ($chem_pkg =~ /waccm_ma/ or $chem_pkg =~ /waccm_tsmlt/) { +# WACCM includes 3 age of air tracers by default +if ($chem_pkg =~ /waccm_ma/ or $chem_pkg =~ /waccm_tsmlt/ or $chem_pkg =~ /waccm_t4ma/) { $cfg_ref->set('age_of_air_trcs', 1); } diff --git a/cime_config/config_component.xml b/cime_config/config_component.xml index e67e8918d5..4f4bc29722 100644 --- a/cime_config/config_component.xml +++ b/cime_config/config_component.xml @@ -287,6 +287,7 @@ waccm_ma_hist_cam6 waccm_ma_hist_cam6 waccm_ma_hist_cam4 + waccm_ma_hist_cam7 hist_trop_strat_vbs_cam6 hist_trop_strat_t4s_cam7 1850_trop_strat_t4s_cam7 diff --git a/cime_config/config_compsets.xml b/cime_config/config_compsets.xml index 2d8eaeb838..ef50e985b0 100644 --- a/cime_config/config_compsets.xml +++ b/cime_config/config_compsets.xml @@ -451,28 +451,28 @@ - FHISTC_LTt1s - HISTC_CAM70%LT%CT1S_CLM60%SP_CICE%PRES_DOCN%DOM_MOSART_SGLC_SWAV + FHIST_LTt1s + HIST_CAM70%LT%CT1S_CLM60%SP_CICE%PRES_DOCN%DOM_MOSART_SGLC_SWAV - FHISTC_MTt1s - HISTC_CAM70%MT%CT1S_CLM60%SP_CICE%PRES_DOCN%DOM_MOSART_SGLC_SWAV + FHIST_MTt1s + HIST_CAM70%MT%CT1S_CLM60%SP_CICE%PRES_DOCN%DOM_MOSART_SGLC_SWAV - FWt0maHISTC - HISTC_CAM70%HT%CT0MA_CLM60%SP_CICE%PRES_DOCN%DOM_MOSART_SGLC_SWAV + FHIST_WAma + HIST_CAM70%HT%CT0MA_CLM60%SP_CICE%PRES_DOCN%DOM_MOSART_SGLC_SWAV - FWt1maHISTC - HISTC_CAM70%HT%CT1MA_CLM60%SP_CICE%PRES_DOCN%DOM_MOSART_SGLC_SWAV + FHIST_WAt1ma + HIST_CAM70%HT%CT1MA_CLM60%SP_CICE%PRES_DOCN%DOM_MOSART_SGLC_SWAV - FWt4maHISTC - HISTC_CAM70%HT%CT4MA_CLM60%SP_CICE%PRES_DOCN%DOM_MOSART_SGLC_SWAV + FHIST_WAt4ma + HIST_CAM70%HT%CT4MA_CLM60%SP_CICE%PRES_DOCN%DOM_MOSART_SGLC_SWAV - FHISTC_MTt4s - HISTC_CAM70%MT%CT4S_CLM60%SP_CICE%PRES_DOCN%DOM_MOSART_SGLC_SWAV + FHIST_MTt4s + HIST_CAM70%MT%CT4S_CLM60%SP_CICE%PRES_DOCN%DOM_MOSART_SGLC_SWAV FCvbsxHIST diff --git a/cime_config/config_pes.xml b/cime_config/config_pes.xml index f488c21b27..dfefd79fae 100644 --- a/cime_config/config_pes.xml +++ b/cime_config/config_pes.xml @@ -339,7 +339,7 @@ - + none -4 @@ -397,7 +397,7 @@ - + none -16 diff --git a/cime_config/testdefs/testlist_cam.xml b/cime_config/testdefs/testlist_cam.xml index d0789ac1f3..9d57b6f787 100644 --- a/cime_config/testdefs/testlist_cam.xml +++ b/cime_config/testdefs/testlist_cam.xml @@ -2036,7 +2036,7 @@ - + @@ -2045,7 +2045,7 @@ - + @@ -2376,7 +2376,7 @@ - + @@ -2386,7 +2386,7 @@ - + @@ -2395,7 +2395,7 @@ - + @@ -2404,7 +2404,7 @@ - + diff --git a/src/physics/rrtmgp/mcica_subcol_gen.F90 b/src/physics/rrtmgp/mcica_subcol_gen.F90 index 85bea8281c..057260b834 100644 --- a/src/physics/rrtmgp/mcica_subcol_gen.F90 +++ b/src/physics/rrtmgp/mcica_subcol_gen.F90 @@ -1,7 +1,7 @@ module mcica_subcol_gen !---------------------------------------------------------------------------------------- -! +! ! Purpose: Create McICA stochastic arrays for cloud optical properties. ! Input cloud optical properties directly: cloud optical depth, single ! scattering albedo and asymmetry parameter. Output will be stochastic @@ -20,11 +20,11 @@ module mcica_subcol_gen ! -------------------------------------------------------------------------- ! This code is a refactored version of code originally in the files ! mcica_subcol_gen_lw.F90 and mcica_subcol_gen_sw.F90 -! +! ! Uses the KISS random number generator. ! ! Overlap assumption: maximum-random. -! +! !---------------------------------------------------------------------------------------- use shr_kind_mod, only: r8 => shr_kind_r8 @@ -60,7 +60,7 @@ subroutine mcica_subcol_lw( & integer, intent(in) :: ngpt ! number of subcolumns (g-point intervals) integer, intent(in) :: ncol ! number of columns integer, intent(in) :: nver ! number of layers - integer, intent(in) :: changeseed ! if the subcolumn generator is called multiple times, + integer, intent(in) :: changeseed ! if the subcolumn generator is called multiple times, ! permute the seed between each call. real(r8), intent(in) :: pmid(pcols,pver) ! layer pressures (Pa) real(r8), intent(in) :: cldfrac(ncol,nver) ! layer cloud fraction @@ -81,16 +81,17 @@ subroutine mcica_subcol_lw( & real(r8) :: cdf(ngpt,ncol,nver) ! random numbers logical :: iscloudy(ngpt,ncol,nver) ! flag that says whether a gridbox is cloudy - !------------------------------------------------------------------------------------------ + !------------------------------------------------------------------------------------------ ! clip cloud fraction - cldf(:,:) = cldfrac(:ncol,:) + cldf(:,1:pver-nver) = 0._r8 + cldf(:,pver-nver+1:pver) = cldfrac(:ncol,:nver) where (cldf(:,:) < cldmin) cldf(:,:) = 0._r8 end where ! Create a seed that depends on the state of the columns. - ! Use pmid from bottom four layers. + ! Use pmid from bottom four layers. do i = 1, ncol kiss_seed(i,1) = (pmid(i,pver) - int(pmid(i,pver))) * 1000000000 kiss_seed(i,2) = (pmid(i,pver-1) - int(pmid(i,pver-1))) * 1000000000 @@ -114,22 +115,22 @@ subroutine mcica_subcol_lw( & ! Maximum-Random overlap ! i) pick a random number for top layer. - ! ii) walk down the column: + ! ii) walk down the column: ! - if the layer above is cloudy, use the same random number as in the layer above - ! - if the layer above is clear, use a new random number + ! - if the layer above is clear, use a new random number do k = 2, nver do i = 1, ncol do isubcol = 1, ngpt if (cdf(isubcol,i,k-1) > 1._r8 - cldf(i,k-1) ) then - cdf(isubcol,i,k) = cdf(isubcol,i,k-1) + cdf(isubcol,i,k) = cdf(isubcol,i,k-1) else cdf(isubcol,i,k) = cdf(isubcol,i,k) * (1._r8 - cldf(i,k-1)) end if end do end do end do - + do k = 1, nver iscloudy(:,:,k) = (cdf(:,:,k) >= 1._r8 - spread(cldf(:,k), dim=1, nCopies=ngpt) ) end do @@ -177,7 +178,7 @@ subroutine mcica_subcol_sw( & integer, intent(in) :: nlay ! number of vertical layers in radiation calc; ! may include an "extra layer" integer, intent(in) :: nver ! number of CAM's vertical layers in rad calc - integer, intent(in) :: changeseed ! if the subcolumn generator is called multiple times, + integer, intent(in) :: changeseed ! if the subcolumn generator is called multiple times, ! permute the seed between each call. real(r8), intent(in) :: pmid(ncol,nlay) ! layer midpoint pressures (Pa) real(r8), intent(in) :: cldfrac(ncol,nver) ! layer cloud fraction @@ -204,7 +205,7 @@ subroutine mcica_subcol_sw( & real(r8) :: cdf(ngpt,ncol,nver) ! random numbers logical :: iscloudy(ngpt,ncol,nver) ! flag that says whether a gridbox is cloudy - !------------------------------------------------------------------------------------------ + !------------------------------------------------------------------------------------------ ! clip cloud fraction cldf(:,:) = cldfrac(:ncol,:) @@ -213,7 +214,7 @@ subroutine mcica_subcol_sw( & end where ! Create a seed that depends on the state of the columns. - ! Use pmid from bottom four layers. + ! Use pmid from bottom four layers. do i = 1, ncol kiss_seed(i,1) = (pmid(i,nlay) - int(pmid(i,nlay))) * 1000000000 kiss_seed(i,2) = (pmid(i,nlay-1) - int(pmid(i,nlay-1))) * 1000000000 @@ -237,22 +238,22 @@ subroutine mcica_subcol_sw( & ! Maximum-Random overlap ! i) pick a random number for top layer. - ! ii) walk down the column: + ! ii) walk down the column: ! - if the layer above is cloudy, use the same random number as in the layer above - ! - if the layer above is clear, use a new random number + ! - if the layer above is clear, use a new random number do k = 2, nver do i = 1, ncol do isubcol = 1, ngpt if (cdf(isubcol,i,k-1) > 1._r8 - cldf(i,k-1) ) then - cdf(isubcol,i,k) = cdf(isubcol,i,k-1) + cdf(isubcol,i,k) = cdf(isubcol,i,k-1) else cdf(isubcol,i,k) = cdf(isubcol,i,k) * (1._r8 - cldf(i,k-1)) end if end do end do end do - + do k = 1, nver iscloudy(:,:,k) = (cdf(:,:,k) >= 1._r8 - spread(cldf(:,k), dim=1, nCopies=ngpt) ) end do @@ -283,4 +284,3 @@ end subroutine mcica_subcol_sw end module mcica_subcol_gen - From 5ead0c53268a0b47f00f9f25dc095658fd46a8af Mon Sep 17 00:00:00 2001 From: Francis Vitt Date: Thu, 30 Jan 2025 11:18:12 -0700 Subject: [PATCH 04/14] start compsets for waccmx7 modified: bld/build-namelist modified: bld/config_files/definition.xml modified: bld/configure modified: cime_config/config_component.xml modified: cime_config/config_compsets.xml new file: bld/namelist_files/use_cases/waccm_ma_hist_cam7.xml --- bld/build-namelist | 2 +- bld/config_files/definition.xml | 3 +- bld/configure | 2 +- .../use_cases/waccm_ma_hist_cam7.xml | 62 +++++++++++++++++++ cime_config/config_component.xml | 5 +- cime_config/config_compsets.xml | 5 ++ 6 files changed, 75 insertions(+), 4 deletions(-) create mode 100644 bld/namelist_files/use_cases/waccm_ma_hist_cam7.xml diff --git a/bld/build-namelist b/bld/build-namelist index ff29f05b2e..fb6c0c9aef 100755 --- a/bld/build-namelist +++ b/bld/build-namelist @@ -2385,7 +2385,7 @@ if (($chem =~ /_mam4/ or $chem =~ /_mam5/) and ($phys =~ /cam6/ or $phys =~ /cam 'IVOC_bb_srf_file' => 'IVOCbb', 'SVOC_an_srf_file' => 'SVOCff', 'SVOC_bb_srf_file' => 'SVOCbb' ); - } elsif ($chem !~ /_ts4/) { + } elsif ($chem !~ /_ts4/ and $chem !~ /_t4ma/) { %species = (%species, 'IVOC_an_srf_file' => 'IVOC', 'IVOC_bb_srf_file' => 'IVOC', diff --git a/bld/config_files/definition.xml b/bld/config_files/definition.xml index a5b2f30838..7f9f283b20 100644 --- a/bld/config_files/definition.xml +++ b/bld/config_files/definition.xml @@ -46,11 +46,12 @@ Switch to turn on analytic initial conditions for the dynamics state: 0 => no 1 => yes. - + Model top specifier - set by compset definition lt: ~ 40 km top mt: ~ 80 km top ht: ~ 140 km top + xt: ~ 500 km top Option to turn on waccmx thermosphere/ionosphere extension: 0 => no, 1 => yes diff --git a/bld/configure b/bld/configure index 3536153696..422abd8cfe 100755 --- a/bld/configure +++ b/bld/configure @@ -89,7 +89,7 @@ OPTIONS -max_n_rad_cnst Maximum number of constituents that are either radiatively active, or in any single diagnostic list for the radiation. -microphys Specify the microphysics option [mg1 | mg2 | mg3| rk | pumas]. - -model_top Specify the model_top option for cam7 [ lt | mt ]. + -model_top Specify the model_top option for cam7 [ lt | mt | ht | xt ]. -nadv Set total number of advected species to . -nadv_tt Set number of advected test tracers . -nlev Set number of levels to . diff --git a/bld/namelist_files/use_cases/waccm_ma_hist_cam7.xml b/bld/namelist_files/use_cases/waccm_ma_hist_cam7.xml new file mode 100644 index 0000000000..ad177fc376 --- /dev/null +++ b/bld/namelist_files/use_cases/waccm_ma_hist_cam7.xml @@ -0,0 +1,62 @@ + + + + +19790101 + + +atm/cam/solar/SolarForcingCMIP6_18491230-23000102_c20200615.nc + + +atm/cam/solar/SolarForcingCMIP6_18491230-23000102_c20200615.nc + + +atm/cam/solar/SolarForcingCMIP6_18491230-23000102_c20200615.nc +'epp_ion_rates' + + +atm/waccm/ic/FHIST_WAt1ma_ne30pg3_spinup01.cam.i.1980-01-01-00000_c250124.nc +atm/waccm/ic/FHIST_WAt1ma_ne16pg3_spinup01.cam.i.1980-01-01-00000_c250124.nc + + +atm/cam/topo/ne16pg3_gmted2010_modis_bedmachine_nc3000_Laplace0200_20230202.nc +atm/cam/topo/ne30pg3_gmted2010_modis_bedmachine_nc3000_Laplace0100_noleak_20240720.nc + + +SERIAL +atm/waccm/lb/LBC_17500116-20150116_CMIP6_0p5degLat_c180905.nc + + 'CCL4', 'CF2CLBR', 'CF3BR', 'CFC11', 'CFC113', 'CFC12', 'CH3BR', 'CH3CCL3', 'CH3CL', 'CH4', 'CO2', 'H2', + 'HCFC22', 'N2O', 'CFC114', 'CFC115', 'HCFC141B', 'HCFC142B', 'CH2BR2', 'CHBR3', 'H2402', 'OCS', 'CFC11eq' + + + +atm/waccm/ub/tgcm_ubc_1850-2100_c100204.nc +'INTERP_MISSING_MONTHS' + + + + +INTERP_MISSING_MONTHS + + +INTERP_MISSING_MONTHS + + + + 1, 30, 120, 240, 240, 480, 365, 73, 30 + 0, -24, -6, -3, -1, 1, -24,-120,-240 + 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'I' + +.true. +.true. +.true. +.true. +.false. +.false. +.false. +.false. +.false. +.false. + + diff --git a/cime_config/config_component.xml b/cime_config/config_component.xml index 5914bb243d..601e1f0730 100644 --- a/cime_config/config_component.xml +++ b/cime_config/config_component.xml @@ -8,7 +8,7 @@ CAM =============== --> - CAM cam7 physics: + CAM cam7 physics: CAM cam6 physics: CAM cam5 physics: CAM cam4 physics: @@ -167,6 +167,7 @@ -chem waccm_tsmlt_mam5 -chem waccm_mad -waccmx -ionosphere wxie + -waccmx -ionosphere wxie -waccmx -ionosphere none -chem waccm_ma -chem waccm_ma -chem waccm_mad @@ -181,6 +182,7 @@ -nlev 58 -model_top lt -nlev 93 -model_top mt -nlev 135 -model_top ht + -nlev 189 -model_top xt -scam arm95 @@ -288,6 +290,7 @@ waccm_ma_hist_cam6 waccm_ma_hist_cam4 waccm_ma_hist_cam7 + waccm_ma_hist_cam7 hist_trop_strat_vbs_cam6 hist_trop_strat_t4s_cam7 1850_trop_strat_t4s_cam7 diff --git a/cime_config/config_compsets.xml b/cime_config/config_compsets.xml index ef50e985b0..a3b6e27e3c 100644 --- a/cime_config/config_compsets.xml +++ b/cime_config/config_compsets.xml @@ -470,6 +470,10 @@ FHIST_WAt4ma HIST_CAM70%HT%CT4MA_CLM60%SP_CICE%PRES_DOCN%DOM_MOSART_SGLC_SWAV + + FHIST_WXma + HIST_CAM70%XT%CT0MA_CLM60%SP_CICE%PRES_DOCN%DOM_MOSART_SGLC_SWAV + FHIST_MTt4s HIST_CAM70%MT%CT4S_CLM60%SP_CICE%PRES_DOCN%DOM_MOSART_SGLC_SWAV @@ -781,6 +785,7 @@ 288 + 288 From 54bbafc98fe712789890bbbddec4e2dcb4c39a07 Mon Sep 17 00:00:00 2001 From: Francis Vitt Date: Tue, 4 Feb 2025 08:09:32 -0700 Subject: [PATCH 05/14] working waccmx7 compsets modified: bld/namelist_files/namelist_defaults_cam.xml modified: bld/namelist_files/use_cases/waccm_ma_hist_cam7.xml modified: src/physics/cam/gw_common.F90 --- bld/namelist_files/namelist_defaults_cam.xml | 23 +++++++--- .../use_cases/waccm_ma_hist_cam7.xml | 2 + src/physics/cam/gw_common.F90 | 44 +++++++++++-------- 3 files changed, 45 insertions(+), 24 deletions(-) diff --git a/bld/namelist_files/namelist_defaults_cam.xml b/bld/namelist_files/namelist_defaults_cam.xml index 3dfdca36f2..1f74585780 100644 --- a/bld/namelist_files/namelist_defaults_cam.xml +++ b/bld/namelist_files/namelist_defaults_cam.xml @@ -755,7 +755,7 @@ atm/waccm/efld/coeff_hflux.dat -atm/waccm/geomag/igrf_ceofs_c160412.nc +atm/waccm/geomag/IGRF14_coeffs_c250130.nc atm/waccm/phot/photon_c130710.dat @@ -3314,12 +3314,16 @@ 3 2 4 - 9 - 8 + 9 + 8 2 3 3 1 + 18 + 18 + 18 + 18 1 3 @@ -3329,6 +3333,7 @@ 4 2 4 + 40 1 2 @@ -3363,6 +3368,8 @@ -1 7.5 -1 + 30 + 30 1 @@ -3376,10 +3383,14 @@ 1 3 - 5 - 2 - 4 + 5 + 2 + 2 + 3 2 + 4 + 4 + 5 10 7 diff --git a/bld/namelist_files/use_cases/waccm_ma_hist_cam7.xml b/bld/namelist_files/use_cases/waccm_ma_hist_cam7.xml index ad177fc376..41907901dc 100644 --- a/bld/namelist_files/use_cases/waccm_ma_hist_cam7.xml +++ b/bld/namelist_files/use_cases/waccm_ma_hist_cam7.xml @@ -17,6 +17,8 @@ atm/waccm/ic/FHIST_WAt1ma_ne30pg3_spinup01.cam.i.1980-01-01-00000_c250124.nc atm/waccm/ic/FHIST_WAt1ma_ne16pg3_spinup01.cam.i.1980-01-01-00000_c250124.nc +atm/waccm/ic/FHIST_WXma_ne30pg3_spinup03.cam.i.1980-01-01-00000_c250201.nc +atm/waccm/ic/FHIST_WXma_ne16pg3_spinup02.cam.i.1980-01-01-00000_c250201.nc atm/cam/topo/ne16pg3_gmted2010_modis_bedmachine_nc3000_Laplace0200_20230202.nc diff --git a/src/physics/cam/gw_common.F90 b/src/physics/cam/gw_common.F90 index 04014c8c97..ea81160a07 100644 --- a/src/physics/cam/gw_common.F90 +++ b/src/physics/cam/gw_common.F90 @@ -147,7 +147,7 @@ end function new_GWBand !========================================================================== subroutine gw_common_init(pver_in, & - tau_0_ubc_in, ktop_in, gravit_in, rair_in, alpha_in, & + tau_0_ubc_in, ktop_in, gravit_in, rair_in, alpha_in, & prndl_in, qbo_hdepth_scaling_in, errstring) integer, intent(in) :: pver_in @@ -356,8 +356,8 @@ subroutine gw_drag_prof(ncol, band, p, src_level, tend_level, dt, & real(r8), intent(in), optional :: & kwvrdg(ncol) - ! Factor for saturation calculation. Here backwards - ! compatibility. I believe it should be 1.0 (jtb). + ! Factor for saturation calculation. Here backwards + ! compatibility. I believe it should be 1.0 (jtb). ! Looks like it has been 2.0 for a while in CAM. real(r8), intent(in), optional :: & satfac_in @@ -425,7 +425,7 @@ subroutine gw_drag_prof(ncol, band, p, src_level, tend_level, dt, & lapply_effgw = .TRUE. endif - + ! Lowest levels that loops need to iterate over. kbot_tend = maxval(tend_level) kbot_src = maxval(src_level) @@ -457,9 +457,9 @@ subroutine gw_drag_prof(ncol, band, p, src_level, tend_level, dt, & !------------------------------------------------------------------------ ! Loop from bottom to top to get stress profiles. - ! do k = kbot_src-1, ktop, -1 !++jtb I think this is right - do k = kbot_src, ktop, -1 !++ but this is in model now - + ! do k = kbot_src-1, ktop, -1 !++jtb I think this is right + do k = kbot_src, ktop, -1 !++ but this is in model now + ! Determine the diffusivity for each column. d = dback + kvtt(:,k) @@ -552,8 +552,8 @@ subroutine gw_drag_prof(ncol, band, p, src_level, tend_level, dt, & ! Write out pre-adjustment tau profile for diagnostc purposes. ! Current implementation only makes sense for orographic waves. - ! Fix later. - if (PRESENT(tau_diag)) then + ! Fix later. + if (PRESENT(tau_diag)) then tau_diag(:,:) = tau(:,0,:) end if @@ -592,11 +592,11 @@ subroutine gw_drag_prof(ncol, band, p, src_level, tend_level, dt, & ubtl = min(ubtl, umcfac * abs(c(:,l)-ubm(:,k)) / dt) if (.not. lapply_effgw) ubtl = min(ubtl, tndmax) - + where (k <= tend_level) ! Save tendency for each wave (for later computation of kzz). - ! sign function returns magnitude of ubtl with sign of c-ubm + ! sign function returns magnitude of ubtl with sign of c-ubm ! Renders ubt/ubm check for mountain waves unecessary gwut(:,k,l) = sign(ubtl, c(:,l)-ubm(:,k)) ubt(:,k) = ubt(:,k) + gwut(:,k,l) @@ -620,7 +620,7 @@ subroutine gw_drag_prof(ncol, band, p, src_level, tend_level, dt, & else ubt_lim_ratio = 1._r8 end if - + do l = -band%ngwv, band%ngwv gwut(:,k,l) = ubt_lim_ratio*gwut(:,k,l) ! Redetermine the effective stress on the interface below from the @@ -634,11 +634,11 @@ subroutine gw_drag_prof(ncol, band, p, src_level, tend_level, dt, & !-------------------------------------------------- where( abs(gwut(:,k,l)) < 1.e-15_r8 ) gwut(:,k,l) = 0._r8 - endwhere + endwhere where (k <= tend_level) - tau(:,l,k+1) = tau(:,l,k) + & - abs(gwut(:,k,l)) * p%del(:,k) / gravit + tau(:,l,k+1) = tau(:,l,k) + & + abs(gwut(:,k,l)) * p%del(:,k) / gravit end where end do @@ -853,7 +853,11 @@ subroutine momentum_fixer(tend_level, p, um_flux, vm_flux, utgw, vtgw) ! Total mass from ground to source level: rho*dz = dp/gravit do i = 1, size(tend_level) - rdm(i) = gravit/(p%ifc(i,pver+1)-p%ifc(i,tend_level(i)+1)) + if (tend_level(i) Date: Wed, 5 Feb 2025 07:23:19 -0700 Subject: [PATCH 06/14] Implement WACCM7-SC compsets modified: cime_config/config_component.xml modified: cime_config/config_compsets.xml --- .../use_cases/waccm_sc_hist_cam7.xml | 79 +++++++++++++++++++ cime_config/config_component.xml | 16 ++-- cime_config/config_compsets.xml | 4 + 3 files changed, 94 insertions(+), 5 deletions(-) create mode 100644 bld/namelist_files/use_cases/waccm_sc_hist_cam7.xml diff --git a/bld/namelist_files/use_cases/waccm_sc_hist_cam7.xml b/bld/namelist_files/use_cases/waccm_sc_hist_cam7.xml new file mode 100644 index 0000000000..605e1eb9c2 --- /dev/null +++ b/bld/namelist_files/use_cases/waccm_sc_hist_cam7.xml @@ -0,0 +1,79 @@ + + + + +19790101 + + +atm/cam/solar/SolarForcingCMIP6_18491230-23000102_c20200615.nc + + +atm/cam/solar/SolarForcingCMIP6_18491230-23000102_c20200615.nc + + +atm/waccm/ic/FHIST_WAt1ma_ne30pg3_spinup01.cam.i.1980-01-01-00000_c250124.nc +atm/waccm/ic/FHIST_WAt1ma_ne16pg3_spinup01.cam.i.1980-01-01-00000_c250124.nc +atm/waccm/ic/FHIST_WXma_ne30pg3_spinup03.cam.i.1980-01-01-00000_c250201.nc +atm/waccm/ic/FHIST_WXma_ne16pg3_spinup02.cam.i.1980-01-01-00000_c250201.nc + + +atm/cam/topo/ne16pg3_gmted2010_modis_bedmachine_nc3000_Laplace0200_20230202.nc +atm/cam/topo/ne30pg3_gmted2010_modis_bedmachine_nc3000_Laplace0100_noleak_20240720.nc + + +SERIAL +atm/waccm/lb/LBC_17500116-20150116_CMIP6_0p5degLat_c180905.nc +'CO2','CH4','N2O','CFC11','CFC12','CFC11eq' + + +atm/waccm/ub/tgcm_ubc_1850-2100_c100204.nc +'INTERP_MISSING_MONTHS' + + +INTERP_MISSING_MONTHS +SCWACCM_forcing_zm_L70_1849-2015_CMIP6ensAvg_c181011.nc +atm/waccm/waccm_forcing + + + 'atm/cam/ozone_strataero' + 'ozone_strataero_WACCM_L70_zm5day_18500101-20150103_CMIP6ensAvg_c180923.nc' + 'O3' + SERIAL + + + .true. + 'atm/cam/ozone_strataero' + 'ozone_strataero_WACCM_L70_zm5day_18500101-20150103_CMIP6ensAvg_c180923.nc' + SERIAL + + + 'atm/cam/tracer_cnst' + 'tracer_cnst_halons_3D_L70_1849-2015_CMIP6ensAvg_c180927.nc' + 'O3','OH','NO3','HO2','HALONS' + INTERP_MISSING_MONTHS + '' + + +INTERP_MISSING_MONTHS + + +INTERP_MISSING_MONTHS + + + + 1, 30, 120, 240, 240, 480, 365, 73, 30 + 0, -24, -6, -3, -1, 1, -24,-120,-240 + 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'I' + +.true. +.true. +.true. +.true. +.false. +.false. +.false. +.false. +.false. +.false. + + diff --git a/cime_config/config_component.xml b/cime_config/config_component.xml index 601e1f0730..684d7f7820 100644 --- a/cime_config/config_component.xml +++ b/cime_config/config_component.xml @@ -8,7 +8,7 @@ CAM =============== --> - CAM cam7 physics: + CAM cam7 physics: CAM cam6 physics: CAM cam5 physics: CAM cam4 physics: @@ -38,14 +38,17 @@ CAM-Chem troposphere/stratosphere chemistry with simplified VBS-SOA: CAM-Chem troposphere/stratosphere chemistry with simplified VBS-SOA and expanded isoprene and terpene oxidation: CAM-Chem troposphere/stratosphere simplified chemistry for climate simulations: - WACCM chemistiry .... - WACCM chemistiry .... - WACCM chemistiry .... + Middle atmosphere chemistiry: + Middle atmosphere chemistiry with T1 troposphere chemistry: + Middle atmosphere chemistiry with T4 troposphere chemistry: + Specified oxidants chemistiry GEOS-Chem troposphere/stratosphere chemistry : CAM-Chem troposphere/stratosphere chem with simplified volatility basis set SOA scheme and fire emissons : CAM CLUBB - turned on by default in CAM60: CAM-Chem troposphere/stratosphere chem with extended volatility basis set SOA scheme and modal aersols : CAM low top model + WACCM high model + WACCMX extended model Modal Aerosol Model composed of 7 modes: CAM mid top model CAM CO2 ramp: @@ -145,6 +148,7 @@ -chem trop_strat_mam5_vbsext -chem trop_strat_mam5_ts2 -chem trop_strat_mam5_ts4 + -chem ghg_mam4 -chem waccm_ma_mam5 -chem waccm_tsmlt_mam5 -chem waccm_t4ma_mam5 @@ -160,6 +164,7 @@ -age_of_air_trcs + -age_of_air_trcs -chem waccm_ma -chem waccm_ma_mam5 -chem waccm_mad_mam5 @@ -289,7 +294,8 @@ waccm_ma_hist_cam6 waccm_ma_hist_cam6 waccm_ma_hist_cam4 - waccm_ma_hist_cam7 + waccm_ma_hist_cam7 + waccm_sc_hist_cam7 waccm_ma_hist_cam7 hist_trop_strat_vbs_cam6 hist_trop_strat_t4s_cam7 diff --git a/cime_config/config_compsets.xml b/cime_config/config_compsets.xml index a3b6e27e3c..9b2e72c73a 100644 --- a/cime_config/config_compsets.xml +++ b/cime_config/config_compsets.xml @@ -458,6 +458,10 @@ FHIST_MTt1s HIST_CAM70%MT%CT1S_CLM60%SP_CICE%PRES_DOCN%DOM_MOSART_SGLC_SWAV + + FHIST_WAsc + HIST_CAM70%HT%CSO_CLM60%SP_CICE%PRES_DOCN%DOM_MOSART_SGLC_SWAV + FHIST_WAma HIST_CAM70%HT%CT0MA_CLM60%SP_CICE%PRES_DOCN%DOM_MOSART_SGLC_SWAV From 289a9b3d896292ffdf15684d6f1b54dc603d8063 Mon Sep 17 00:00:00 2001 From: Francis Vitt Date: Thu, 6 Feb 2025 06:52:15 -0700 Subject: [PATCH 07/14] adjust namelist settings modified: bld/build-namelist modified: bld/namelist_files/namelist_defaults_cam.xml modified: bld/namelist_files/use_cases/waccm_ma_hist_cam7.xml modified: bld/namelist_files/use_cases/waccm_sc_hist_cam7.xml --- bld/build-namelist | 5 +++-- bld/namelist_files/namelist_defaults_cam.xml | 17 +++++++++++++++-- .../use_cases/waccm_ma_hist_cam7.xml | 5 ++++- .../use_cases/waccm_sc_hist_cam7.xml | 11 +++++++---- 4 files changed, 29 insertions(+), 9 deletions(-) diff --git a/bld/build-namelist b/bld/build-namelist index fb6c0c9aef..38a2275e94 100755 --- a/bld/build-namelist +++ b/bld/build-namelist @@ -2825,12 +2825,13 @@ if ($chem eq 'trop_mam7') { } my $waccmx = $cfg->get('waccmx'); +my $model_top = $cfg->get('model_top'); # set maximum solar zenith angle for photolysis my $maxzen = 0.0; if ($waccmx){ $maxzen = 116.; -} elsif ($chem =~ "trop_strat" or $chem =~ "waccm_") { +} elsif ($chem =~ "trop_strat" or $chem =~ "waccm_" or $model_top eq "ht") { $maxzen = 97.01; } elsif ($chem =~ "trop_mam" or $chem =~ "trop_mozart" or $chem =~ "ghg_mam") { $maxzen = 88.85; @@ -2843,7 +2844,7 @@ if ($maxzen>0.0) { my $ubc_ver; if (($chem =~ /waccm_ma/ or $chem =~ /waccm_tsmlt/ or $chem =~ /waccm_t4ma/) and !$waccmx) { $ubc_ver = 'waccmchem'; -} elsif ($chem =~ /waccm_sc/) { +} elsif ($chem =~ /waccm_sc/ or ($model_top eq "ht" and $chem =~ /ghg_mam/)) { $ubc_ver = 'waccmsc'; } if (defined $ubc_ver) { diff --git a/bld/namelist_files/namelist_defaults_cam.xml b/bld/namelist_files/namelist_defaults_cam.xml index 1f74585780..166646bb59 100644 --- a/bld/namelist_files/namelist_defaults_cam.xml +++ b/bld/namelist_files/namelist_defaults_cam.xml @@ -811,15 +811,17 @@ 18 -0.7D0 +0.7D0 0.4D0 0.30D0 0.70D0 +0.25D0 +0.25D0 0.55D0 0.5D0 0.5D0 0.7D0 -0.5D0 +0.5D0 0.5D0 0.5D0 0.5D0 @@ -851,6 +853,7 @@ 0.5d0 1.d0 2.d0 +2.d0 2.d0 2.d0 2.d0 @@ -858,6 +861,7 @@ 2.d0 .true. .false. +.false. .false. .false. .false. @@ -865,6 +869,7 @@ .false. .false. .true. +.true. .true. .true. .true. @@ -3304,6 +3309,7 @@ 0 1 + 1 2 @@ -3333,6 +3339,8 @@ 4 2 4 + 2 + 4 40 1 @@ -3348,10 +3356,12 @@ -1 6.e15 +6.e15 5.e15 -1 6.e15 +6.e15 10.e15 -1 @@ -3359,6 +3369,7 @@ 1.25e5 1.0e6 1.0e6 + 1.0e6 1.0e6 0.0 @@ -3367,6 +3378,7 @@ -1 -1 7.5 + 7.5 -1 30 30 @@ -3397,6 +3409,7 @@ 3 2 + 2 4 3 diff --git a/bld/namelist_files/use_cases/waccm_ma_hist_cam7.xml b/bld/namelist_files/use_cases/waccm_ma_hist_cam7.xml index 41907901dc..6a9add1add 100644 --- a/bld/namelist_files/use_cases/waccm_ma_hist_cam7.xml +++ b/bld/namelist_files/use_cases/waccm_ma_hist_cam7.xml @@ -36,7 +36,8 @@ atm/waccm/ub/tgcm_ubc_1850-2100_c100204.nc 'INTERP_MISSING_MONTHS' - + +SERIAL INTERP_MISSING_MONTHS @@ -61,4 +62,6 @@ .false. .false. +0.25D0 + diff --git a/bld/namelist_files/use_cases/waccm_sc_hist_cam7.xml b/bld/namelist_files/use_cases/waccm_sc_hist_cam7.xml index 605e1eb9c2..b7bb1ce2e1 100644 --- a/bld/namelist_files/use_cases/waccm_sc_hist_cam7.xml +++ b/bld/namelist_files/use_cases/waccm_sc_hist_cam7.xml @@ -25,10 +25,6 @@ atm/waccm/lb/LBC_17500116-20150116_CMIP6_0p5degLat_c180905.nc 'CO2','CH4','N2O','CFC11','CFC12','CFC11eq' - -atm/waccm/ub/tgcm_ubc_1850-2100_c100204.nc -'INTERP_MISSING_MONTHS' - INTERP_MISSING_MONTHS SCWACCM_forcing_zm_L70_1849-2015_CMIP6ensAvg_c181011.nc @@ -53,6 +49,9 @@ INTERP_MISSING_MONTHS '' + +SERIAL + INTERP_MISSING_MONTHS @@ -76,4 +75,8 @@ .false. .false. +0.25D0 + +1850-2015 + From 202f3e4685ed73f2fd303e8792f378eb22eadd75 Mon Sep 17 00:00:00 2001 From: Francis Vitt Date: Thu, 20 Feb 2025 12:58:30 -0700 Subject: [PATCH 08/14] revert the change to gw fixers; better bug fix in rrtmgp; update test list modified: cime_config/testdefs/testlist_cam.xml modified: src/physics/cam/gw_common.F90 modified: src/physics/rrtmgp/mcica_subcol_gen.F90 --- cime_config/testdefs/testlist_cam.xml | 36 ++++++++----------------- src/physics/cam/gw_common.F90 | 12 ++------- src/physics/rrtmgp/mcica_subcol_gen.F90 | 5 ++-- 3 files changed, 15 insertions(+), 38 deletions(-) diff --git a/cime_config/testdefs/testlist_cam.xml b/cime_config/testdefs/testlist_cam.xml index 2026915692..fa1eec9419 100644 --- a/cime_config/testdefs/testlist_cam.xml +++ b/cime_config/testdefs/testlist_cam.xml @@ -1393,24 +1393,24 @@ - - + - + - + + @@ -2448,21 +2448,23 @@ - + + - + + @@ -2473,15 +2475,6 @@ - - - - - - - - - @@ -2491,19 +2484,11 @@ - + - - - - - - - - @@ -2824,13 +2809,14 @@ - + + diff --git a/src/physics/cam/gw_common.F90 b/src/physics/cam/gw_common.F90 index ca6defc9a3..a9897cb140 100644 --- a/src/physics/cam/gw_common.F90 +++ b/src/physics/cam/gw_common.F90 @@ -855,11 +855,7 @@ subroutine momentum_fixer(tend_level, p, um_flux, vm_flux, utgw, vtgw) ! Total mass from ground to source level: rho*dz = dp/gravit do i = 1, size(tend_level) - if (tend_level(i) Date: Fri, 28 Feb 2025 08:41:32 -0700 Subject: [PATCH 09/14] correct waccm-sc chem pkg; move nlev setting to configure modified: bld/configure modified: cime_config/config_component.xml --- bld/configure | 27 ++++++++++++++++++--------- cime_config/config_component.xml | 9 +++++---- 2 files changed, 23 insertions(+), 13 deletions(-) diff --git a/bld/configure b/bld/configure index 32691d2506..6e634ec7ad 100755 --- a/bld/configure +++ b/bld/configure @@ -1211,6 +1211,7 @@ $cfg_ref->set('model_top', $model_top); # user override if (defined $opts{'model_top'} and $opts{'model_top'} ne 'none') { + $model_top = lc($opts{'model_top'}); if ($phys_pkg eq 'cam7') { $cfg_ref->set('model_top', $opts{'model_top'}); } else { @@ -1224,11 +1225,22 @@ if ($print>=2) { print "model_top: $model_top$eol"; } my $nlev = 0; # Defaults -if ($waccmx) { +if ($phys_pkg eq 'cam7') { + if ($model_top eq 'lt') { + $nlev = 58; + } elsif ($model_top eq 'mt') { + $nlev = 93; + } elsif ($model_top eq 'ht') { + $nlev = 135; + } elsif ($model_top eq 'xt') { + $nlev = 189; + } else { + $nlev = 32; # this is for some old cam_dev tests + } +} +elsif ($waccmx) { if ($phys_pkg eq 'cam6') { $nlev = 130; - } elsif ($phys_pkg eq 'cam7') { - $nlev = 130; } else { $nlev = 126; } @@ -1241,9 +1253,6 @@ elsif ($chem_pkg =~ /waccm_/) { $nlev = 70; } } -elsif ($phys_pkg eq 'cam7') { - $nlev = 32; -} elsif ($phys_pkg eq 'cam6') { $nlev = 32; } @@ -1254,9 +1263,9 @@ elsif ($phys_pkg eq 'cam4') { $nlev = 26; } else { - # This will be used for Held-Suarez and other 'simple' physics - # We may change this to 32 once IC files are available. - $nlev = 30; + # Simple models use cam7-lt vertical grid. + # $nlev = 58; # - ERROR: No default value found for ncdata + $nlev = 30; # bit-for-bit baselines for now } # user override diff --git a/cime_config/config_component.xml b/cime_config/config_component.xml index 5ecb361d07..1c5ae463a3 100644 --- a/cime_config/config_component.xml +++ b/cime_config/config_component.xml @@ -145,6 +145,7 @@ -chem trop_strat_mam5_ts2 -chem trop_strat_mam5_ts4 -chem ghg_mam4 + -chem waccm_sc_mam4 -chem waccm_ma_mam5 -chem waccm_tsmlt_mam5 -chem waccm_t4ma_mam5 @@ -176,10 +177,10 @@ -nlev 56 -nlev 88 -nlev 145 - -nlev 58 -model_top lt - -nlev 93 -model_top mt - -nlev 135 -model_top ht - -nlev 189 -model_top xt + -model_top lt + -model_top mt + -model_top ht + -model_top xt -scam arm95 From b1737e7cf34cefc0eee9ec6fe84a7be14050d467 Mon Sep 17 00:00:00 2001 From: Francis Vitt Date: Fri, 28 Feb 2025 14:45:50 -0700 Subject: [PATCH 10/14] some minor changes modified: bld/namelist_files/namelist_defaults_cam.xml modified: bld/namelist_files/use_cases/waccm_ma_hist_cam7.xml modified: bld/namelist_files/use_cases/waccm_sc_hist_cam7.xml --- bld/namelist_files/namelist_defaults_cam.xml | 4 ++-- bld/namelist_files/use_cases/waccm_ma_hist_cam7.xml | 3 +-- bld/namelist_files/use_cases/waccm_sc_hist_cam7.xml | 3 +-- 3 files changed, 4 insertions(+), 6 deletions(-) diff --git a/bld/namelist_files/namelist_defaults_cam.xml b/bld/namelist_files/namelist_defaults_cam.xml index 6571cbfece..fea16ae634 100644 --- a/bld/namelist_files/namelist_defaults_cam.xml +++ b/bld/namelist_files/namelist_defaults_cam.xml @@ -813,8 +813,8 @@ 0.4D0 0.30D0 0.70D0 -0.25D0 -0.25D0 +0.25D0 +0.25D0 0.55D0 0.5D0 0.5D0 diff --git a/bld/namelist_files/use_cases/waccm_ma_hist_cam7.xml b/bld/namelist_files/use_cases/waccm_ma_hist_cam7.xml index 6a9add1add..2fc5a3a8a2 100644 --- a/bld/namelist_files/use_cases/waccm_ma_hist_cam7.xml +++ b/bld/namelist_files/use_cases/waccm_ma_hist_cam7.xml @@ -21,8 +21,7 @@ atm/waccm/ic/FHIST_WXma_ne16pg3_spinup02.cam.i.1980-01-01-00000_c250201.nc -atm/cam/topo/ne16pg3_gmted2010_modis_bedmachine_nc3000_Laplace0200_20230202.nc -atm/cam/topo/ne30pg3_gmted2010_modis_bedmachine_nc3000_Laplace0100_noleak_20240720.nc +atm/cam/topo/se/ne16pg3_gmted2010_modis_bedmachine_nc3000_Laplace0200_20230202.nc SERIAL diff --git a/bld/namelist_files/use_cases/waccm_sc_hist_cam7.xml b/bld/namelist_files/use_cases/waccm_sc_hist_cam7.xml index b7bb1ce2e1..c4032df718 100644 --- a/bld/namelist_files/use_cases/waccm_sc_hist_cam7.xml +++ b/bld/namelist_files/use_cases/waccm_sc_hist_cam7.xml @@ -17,8 +17,7 @@ atm/waccm/ic/FHIST_WXma_ne16pg3_spinup02.cam.i.1980-01-01-00000_c250201.nc -atm/cam/topo/ne16pg3_gmted2010_modis_bedmachine_nc3000_Laplace0200_20230202.nc -atm/cam/topo/ne30pg3_gmted2010_modis_bedmachine_nc3000_Laplace0100_noleak_20240720.nc +atm/cam/topo/se/ne16pg3_gmted2010_modis_bedmachine_nc3000_Laplace0200_20230202.nc SERIAL From 8e7bd5b31f627d2386a8b37885206e5b2984778c Mon Sep 17 00:00:00 2001 From: Francis Vitt Date: Fri, 7 Mar 2025 17:31:23 -0700 Subject: [PATCH 11/14] updates to compset naming modified: cime_config/config_component.xml modified: cime_config/config_compsets.xml modified: cime_config/config_pes.xml modified: cime_config/testdefs/testlist_cam.xml --- cime_config/config_component.xml | 24 +++++++++---------- cime_config/config_compsets.xml | 33 +++++++++++++-------------- cime_config/config_pes.xml | 4 ++-- cime_config/testdefs/testlist_cam.xml | 22 +++++++++--------- 4 files changed, 41 insertions(+), 42 deletions(-) diff --git a/cime_config/config_component.xml b/cime_config/config_component.xml index 1c5ae463a3..85588103a4 100644 --- a/cime_config/config_component.xml +++ b/cime_config/config_component.xml @@ -8,7 +8,7 @@ CAM =============== --> - CAM cam7 physics: + CAM cam7 physics: CAM cam6 physics: CAM cam5 physics: CAM cam4 physics: @@ -47,8 +47,8 @@ CAM CLUBB - turned on by default in CAM60: CAM-Chem troposphere/stratosphere chem with extended volatility basis set SOA scheme and modal aersols : CAM low top model - WACCM high model - WACCMX extended model + WACCM model + WACCMX extended model Modal Aerosol Model composed of 7 modes: CAM mid top model CAM CO2 ramp: @@ -145,7 +145,7 @@ -chem trop_strat_mam5_ts2 -chem trop_strat_mam5_ts4 -chem ghg_mam4 - -chem waccm_sc_mam4 + -chem waccm_sc_mam4 -chem waccm_ma_mam5 -chem waccm_tsmlt_mam5 -chem waccm_t4ma_mam5 @@ -157,7 +157,7 @@ -age_of_air_trcs - -age_of_air_trcs + -age_of_air_trcs -chem waccm_ma -chem waccm_ma_mam5 -chem waccm_mad_mam5 @@ -165,7 +165,7 @@ -chem waccm_tsmlt_mam5 -chem waccm_mad -waccmx -ionosphere wxie - -waccmx -ionosphere wxie + -waccmx -ionosphere wxie -waccmx -ionosphere none -chem waccm_ma -chem waccm_ma -chem waccm_mad @@ -179,8 +179,8 @@ -nlev 145 -model_top lt -model_top mt - -model_top ht - -model_top xt + -model_top ht + -model_top xt -scam arm95 @@ -287,10 +287,10 @@ waccm_ma_hist_cam6 waccm_ma_hist_cam6 waccm_ma_hist_cam4 - waccm_ma_hist_cam7 - waccm_sc_hist_cam7 - waccm_ma_hist_cam7 - hist_trop_strat_vbs_cam6 + waccm_ma_hist_cam7 + waccm_sc_hist_cam7 + waccm_ma_hist_cam7 + hist_trop_strat_vbs_cam6 hist_trop_strat_t4s_cam7 1850_trop_strat_t4s_cam7 hist_trop_strat_nudged_cam6 diff --git a/cime_config/config_compsets.xml b/cime_config/config_compsets.xml index 5a7fc1d339..0d8664928a 100644 --- a/cime_config/config_compsets.xml +++ b/cime_config/config_compsets.xml @@ -409,36 +409,36 @@ - FHIST_LTt1s - HIST_CAM70%LT%CT1S_CLM60%SP_CICE%PRES_DOCN%DOM_MOSART_SGLC_SWAV + FHISTC_LTt1s + HISTC_CAM70%LT%CT1S_CLM60%SP_CICE%PRES_DOCN%DOM_MOSART_SGLC_SWAV - FHIST_MTt1s - HIST_CAM70%MT%CT1S_CLM60%SP_CICE%PRES_DOCN%DOM_MOSART_SGLC_SWAV + FHISTC_MTt1s + HISTC_CAM70%MT%CT1S_CLM60%SP_CICE%PRES_DOCN%DOM_MOSART_SGLC_SWAV - FHIST_WAsc - HIST_CAM70%HT%CSO_CLM60%SP_CICE%PRES_DOCN%DOM_MOSART_SGLC_SWAV + FHISTC_MTt4s + HISTC_CAM70%MT%CT4S_CLM60%SP_CICE%PRES_DOCN%DOM_MOSART_SGLC_SWAV - FHIST_WAma - HIST_CAM70%HT%CT0MA_CLM60%SP_CICE%PRES_DOCN%DOM_MOSART_SGLC_SWAV + FHISTC_WAsc + HISTC_CAM70%WA%CSO_CLM60%SP_CICE%PRES_DOCN%DOM_MOSART_SGLC_SWAV - FHIST_WAt1ma - HIST_CAM70%HT%CT1MA_CLM60%SP_CICE%PRES_DOCN%DOM_MOSART_SGLC_SWAV + FHISTC_WAma + HISTC_CAM70%WA%CT0MA_CLM60%SP_CICE%PRES_DOCN%DOM_MOSART_SGLC_SWAV - FHIST_WAt4ma - HIST_CAM70%HT%CT4MA_CLM60%SP_CICE%PRES_DOCN%DOM_MOSART_SGLC_SWAV + FHISTC_WAt1ma + HISTC_CAM70%WA%CT1MA_CLM60%SP_CICE%PRES_DOCN%DOM_MOSART_SGLC_SWAV - FHIST_WXma - HIST_CAM70%XT%CT0MA_CLM60%SP_CICE%PRES_DOCN%DOM_MOSART_SGLC_SWAV + FHISTC_WAt4ma + HISTC_CAM70%WA%CT4MA_CLM60%SP_CICE%PRES_DOCN%DOM_MOSART_SGLC_SWAV - FHIST_MTt4s - HIST_CAM70%MT%CT4S_CLM60%SP_CICE%PRES_DOCN%DOM_MOSART_SGLC_SWAV + FHISTC_WXma + HISTC_CAM70%WX%CT0MA_CLM60%SP_CICE%PRES_DOCN%DOM_MOSART_SGLC_SWAV FCvbsxHIST @@ -747,7 +747,6 @@ 288 - 288 diff --git a/cime_config/config_pes.xml b/cime_config/config_pes.xml index 5a7cae8f54..7c2b59e164 100644 --- a/cime_config/config_pes.xml +++ b/cime_config/config_pes.xml @@ -339,7 +339,7 @@ - + none -4 @@ -397,7 +397,7 @@ - + none -16 diff --git a/cime_config/testdefs/testlist_cam.xml b/cime_config/testdefs/testlist_cam.xml index fa1eec9419..6b18bbdfc1 100644 --- a/cime_config/testdefs/testlist_cam.xml +++ b/cime_config/testdefs/testlist_cam.xml @@ -1393,7 +1393,7 @@ - + @@ -2016,7 +2016,7 @@ - + @@ -2025,7 +2025,7 @@ - + @@ -2292,7 +2292,7 @@ - + @@ -2302,7 +2302,7 @@ - + @@ -2311,7 +2311,7 @@ - + @@ -2320,7 +2320,7 @@ - + @@ -2448,7 +2448,7 @@ - + @@ -2457,7 +2457,7 @@ - + @@ -2484,7 +2484,7 @@ - + @@ -2809,7 +2809,7 @@ - + From 14399ebed8e7cfa733fed6823cb8073fec4d8774 Mon Sep 17 00:00:00 2001 From: Francis Vitt Date: Mon, 17 Mar 2025 10:18:42 -0600 Subject: [PATCH 12/14] ChangeLog draft --- cime | 2 +- doc/ChangeLog | 123 ++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 124 insertions(+), 1 deletion(-) diff --git a/cime b/cime index 71d2b71216..cdf76d6919 160000 --- a/cime +++ b/cime @@ -1 +1 @@ -Subproject commit 71d2b71216cc39abfb8224cc55861bd6424c95f9 +Subproject commit cdf76d691961d697feafc14907f81b9c195dfe99 diff --git a/doc/ChangeLog b/doc/ChangeLog index 230a20a195..e01ae01a90 100644 --- a/doc/ChangeLog +++ b/doc/ChangeLog @@ -1,5 +1,128 @@ =============================================================== +Tag name: cam6_4_077 +Originator(s): fvitt +Date: 17 Mar 2025 +One-line Summary: Introduce HIST WACCM7(X) compsets +Github PR URL: https://github.com/ESCOMP/CAM/pull/1262 + +Purpose of changes (include the issue number and title text for each relevant GitHub issue): + + Add WACCM(X)7 compsets #1248 + Add WACCM T4MA chemistry mechanism + Fix: Vertical indexing mismatch in rrtmgp/mcica_subcol_gen.F90 in high-top configuration #1261 + +Describe any changes made to build system: N/A + +Describe any changes made to the namelist: N/A + +List any changes to the defaults for the boundary datasets: N/A + +Describe any substantial timing or memory changes: N/A + +Code reviewed by: brian-eaton, cacraigucar, PeterHjortLauritzen + +List all files eliminated: N/A + +List all files added and what they do: +A bld/namelist_files/use_cases/waccm_ma_hist_cam7.xml +A bld/namelist_files/use_cases/waccm_sc_hist_cam7.xml + - build-namelist use case files for WACCM7(X) compsets + +A src/chemistry/pp_waccm_t4ma_mam5/chem_mech.doc +A src/chemistry/pp_waccm_t4ma_mam5/chem_mech.in +A src/chemistry/pp_waccm_t4ma_mam5/chem_mods.F90 +A src/chemistry/pp_waccm_t4ma_mam5/m_rxt_id.F90 +A src/chemistry/pp_waccm_t4ma_mam5/m_spc_id.F90 +A src/chemistry/pp_waccm_t4ma_mam5/mo_adjrxt.F90 +A src/chemistry/pp_waccm_t4ma_mam5/mo_exp_sol.F90 +A src/chemistry/pp_waccm_t4ma_mam5/mo_imp_sol.F90 +A src/chemistry/pp_waccm_t4ma_mam5/mo_indprd.F90 +A src/chemistry/pp_waccm_t4ma_mam5/mo_lin_matrix.F90 +A src/chemistry/pp_waccm_t4ma_mam5/mo_lu_factor.F90 +A src/chemistry/pp_waccm_t4ma_mam5/mo_lu_solve.F90 +A src/chemistry/pp_waccm_t4ma_mam5/mo_nln_matrix.F90 +A src/chemistry/pp_waccm_t4ma_mam5/mo_phtadj.F90 +A src/chemistry/pp_waccm_t4ma_mam5/mo_prod_loss.F90 +A src/chemistry/pp_waccm_t4ma_mam5/mo_rxt_rates_conv.F90 +A src/chemistry/pp_waccm_t4ma_mam5/mo_setrxt.F90 +A src/chemistry/pp_waccm_t4ma_mam5/mo_sim_dat.F90 + - new WACCM T4MA chemistry mechanism + +List all existing files that have been modified, and describe the changes: + +M bld/build-namelist + - namelist setting for + . T4MA chemistry + . HT model top + +M bld/config_files/definition.xml + - expand model_top to include + . "ht" -- high-top waccm + . "xt" -- extended-top waccmx + - include waccmx_t4ma_mam5 chemistry mechanism + +M bld/configure + - set default nlev according to model_top + +M bld/namelist_files/namelist_defaults_cam.xml + - update igrf_geomag_coefs files to IGRF14 + - default namelist settings for model_top ht and xt (se_* and gw) + +M cime_config/config_component.xml +M cime_config/config_compsets.xml + - implement WACCM7(X) compsets + +M cime_config/config_pes.xml + - default PE-layouts for ACCM7(X) compsets on derecho + +M cime_config/testdefs/testlist_cam.xml + - add regression test for WACCM7(X) compsets + - fix broken WACCMX AMIE test by using aqua-planet mode + +M src/physics/rrtmgp/mcica_subcol_gen.F90 + - fix indexing mismatch issue with higher top models + +If there were any failures reported from running test_driver.sh on any test +platform, and checkin with these failures has been OK'd by the gatekeeper, +then copy the lines from the td.*.status files for the failed tests to the +appropriate machine below. All failed tests must be justified. + +derecho/intel/aux_cam: + +derecho/nvhpc/aux_cam: + +izumi/nag/aux_cam: + +izumi/gnu/aux_cam: + +CAM tag used for the baseline comparison tests if different than previous +tag: + +Summarize any changes to answers, i.e., +- what code configurations: +- what platforms/compilers: +- nature of change (roundoff; larger than roundoff but same climate; new + climate): + +If bitwise differences were observed, how did you show they were no worse +than roundoff? + +If this tag changes climate describe the run(s) done to evaluate the new +climate in enough detail that it(they) could be reproduced, i.e., +- source tag (all code used must be in the repository): +- platform/compilers: +- configure commandline: +- build-namelist command (or complete namelist): +- MSS location of output: + +MSS location of control simulations used to validate new climate: + +URL for AMWG diagnostics output used to validate new climate: + +=============================================================== +=============================================================== + Tag name: cam6_4_076 Originator(s): eaton Date: 17 March 2025 From b03596c6b87ebda2329787eb8e55dd6cd1957ad5 Mon Sep 17 00:00:00 2001 From: Francis Vitt Date: Mon, 17 Mar 2025 13:21:50 -0600 Subject: [PATCH 13/14] ChangeLog update --- doc/ChangeLog | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/doc/ChangeLog b/doc/ChangeLog index e01ae01a90..a66a6ca375 100644 --- a/doc/ChangeLog +++ b/doc/ChangeLog @@ -90,10 +90,40 @@ appropriate machine below. All failed tests must be justified. derecho/intel/aux_cam: + FAIL SMS_D_Ln9_P1280x1.ne0ARCTICne30x4_ne0ARCTICne30x4_mt12.FHIST.derecho_intel.cam-outfrq9s + FAIL SMS_D_Ln9_P1280x1.ne0CONUSne30x8_ne0CONUSne30x8_mt12.FCHIST.derecho_intel.cam-outfrq9s + - pre-existing failures due to build-namelist error requiring CLM/CTSM external update + + FAIL ERP_Ln9.f09_f09_mg17.FCSD_HCO.derecho_intel.cam-outfrq9s + DIFF SMS_Lh12.f09_f09_mg17.FCSD_HCO.derecho_intel.cam-outfrq3h + - pre-existing failures due to HEMCO not having reproducible results (issues #1018 and #856) + + DIFF ERP_Ld3.ne16pg3_ne16pg3_mg17.FHISTC_WAt1ma.derecho_intel.cam-reduced_hist1d + DIFF ERP_Ln9.ne30pg3_ne30pg3_mg17.FHISTC_WAma.derecho_intel.cam-outfrq9s + FAIL ERS_Ln9.ne30pg3_ne30pg3_mg17.FHISTC_WXma.derecho_intel.cam-outfrq9s + DIFF SMS_C2_D_Ln9.ne16pg3_ne16pg3_mg17.FHISTC_WXma.derecho_intel.cam-outfrq9s + DIFF SMS_D_Ln9.ne16_ne16_mg17.QPX2000.derecho_intel.cam-outfrq9s_amie + - new tests -- no baselines to compare against + + NLFAIL ERP_Lh12.f19_f19_mg17.FW4madSD.derecho_intel.cam-outfrq3h + NLFAIL ERS_Ln9.f09_f09_mg17.FX2000.derecho_intel.cam-outfrq9s + NLFAIL ERS_Ln9.f19_f19_mg17.FXSD.derecho_intel.cam-outfrq9s + NLFAIL SMS_D_Ln9.f19_f19_mg17.FWma2000climo.derecho_intel.cam-outfrq9s + NLFAIL SMS_D_Ln9.f19_f19_mg17.FWma2000climo.derecho_intel.cam-outfrq9s_waccm_ma_mam4 + NLFAIL SMS_Ld1.f09_f09_mg17.FW2000climo.derecho_intel.cam-outfrq1d + NLFAIL SMS_Ln9.f09_f09_mg17.FW1850.derecho_intel.cam-reduced_hist3s + NLFAIL SMS_Ln9.ne30pg3_ne30pg3_mg17.FW2000climo.derecho_intel.cam-outfrq9s_rrtmgp + - namelist compare failures due to geomag IGRF inputs updates + derecho/nvhpc/aux_cam: izumi/nag/aux_cam: + NLFAIL ERC_D_Ln9.f10_f10_mg37.QPWmaC6.izumi_nag.cam-outfrq3s + NLFAIL SMS_D_Ln3.ne5pg3_ne5pg3_mg37.QPX2000.izumi_nag.cam-outfrq3s + NLFAIL SMS_D_Ln6.ne5_ne5_mg37.QPWmaC4.izumi_nag.cam-outfrq3s_physgrid_tem + - namelist compare failures due to geomag IGRF inputs updates + izumi/gnu/aux_cam: CAM tag used for the baseline comparison tests if different than previous From 6ec83e71f0c2f4fd2688eac384ce8cb29264e7bd Mon Sep 17 00:00:00 2001 From: Francis Vitt Date: Tue, 18 Mar 2025 08:21:11 -0600 Subject: [PATCH 14/14] start WACCM7 compsets modified: bld/config_files/definition.xml modified: cime_config/config_component.xml modified: cime_config/config_compsets.xml --- doc/ChangeLog | 35 ++++++++++------------------------- 1 file changed, 10 insertions(+), 25 deletions(-) diff --git a/doc/ChangeLog b/doc/ChangeLog index a66a6ca375..96a7401c2d 100644 --- a/doc/ChangeLog +++ b/doc/ChangeLog @@ -2,7 +2,7 @@ Tag name: cam6_4_077 Originator(s): fvitt -Date: 17 Mar 2025 +Date: 18 Mar 2025 One-line Summary: Introduce HIST WACCM7(X) compsets Github PR URL: https://github.com/ESCOMP/CAM/pull/1262 @@ -10,7 +10,8 @@ Purpose of changes (include the issue number and title text for each relevant Gi Add WACCM(X)7 compsets #1248 Add WACCM T4MA chemistry mechanism - Fix: Vertical indexing mismatch in rrtmgp/mcica_subcol_gen.F90 in high-top configuration #1261 + Fix vertical indexing mismatch in rrtmgp/mcica_subcol_gen.F90 in high-top configuration #1261 + Update geomagnitic reference field coeficients for WACCM and WACCMX to IGRF 14 Describe any changes made to build system: N/A @@ -115,7 +116,7 @@ derecho/intel/aux_cam: NLFAIL SMS_Ln9.ne30pg3_ne30pg3_mg17.FW2000climo.derecho_intel.cam-outfrq9s_rrtmgp - namelist compare failures due to geomag IGRF inputs updates -derecho/nvhpc/aux_cam: +derecho/nvhpc/aux_cam: All PASS izumi/nag/aux_cam: @@ -125,30 +126,14 @@ izumi/nag/aux_cam: - namelist compare failures due to geomag IGRF inputs updates izumi/gnu/aux_cam: + DIFF ERP_Ln9_P24x2.f45_f45_mg37.QPWmaC6.izumi_gnu.cam-outfrq9s_mee_fluxes + - here change in geomag IGRF inputs caused differences due to start date in 2015 -CAM tag used for the baseline comparison tests if different than previous -tag: - -Summarize any changes to answers, i.e., -- what code configurations: -- what platforms/compilers: -- nature of change (roundoff; larger than roundoff but same climate; new - climate): - -If bitwise differences were observed, how did you show they were no worse -than roundoff? - -If this tag changes climate describe the run(s) done to evaluate the new -climate in enough detail that it(they) could be reproduced, i.e., -- source tag (all code used must be in the repository): -- platform/compilers: -- configure commandline: -- build-namelist command (or complete namelist): -- MSS location of output: - -MSS location of control simulations used to validate new climate: + NLFAIL SMS_D_Ln9.f10_f10_mg37.QPWmaC4.izumi_gnu.cam-outfrq9s_apmee + NLFAIL SMS_P48x1_D_Ln9.f19_f19_mg17.FW4madSD.izumi_gnu.cam-outfrq9s + - namelist compare failures due to geomag IGRF inputs updates -URL for AMWG diagnostics output used to validate new climate: +Summarize any changes to answers: bit-for-bit unchanged =============================================================== ===============================================================