Ignore:
Timestamp:
Nov 15, 2020 8:11:14 PM (4 years ago)
Author:
monakurppa
Message:

Bug fix in initialising salsa aerosol and gas emissions

File:
1 edited

Legend:

Unmodified
Added
Removed
  • palm/trunk/SOURCE/salsa_mod.f90

    r4768 r4785  
    2626! -----------------
    2727! $Id$
     28! Fixing a segmentation fault in initialising aerosol and gas emissions
     29!
     30! 4768 2020-11-02 19:11:23Z suehring
    2831! Enable 3D data output also with 64-bit precision
    2932!
     
    98169819!--          If the chemical component is not activated, set its mass fraction to 0 to avoid
    98179820!--          inbalance between number and mass flux
    9818              cc_i2m = aero_emission_att%cc_in2mod
    9819              IF ( index_so4 < 0  .AND.  cc_i2m(1) > 0 )                                            &
    9820                 aero_emission%mass_fracs(:,cc_i2m(1)) = 0.0_wp
    9821              IF ( index_oc  < 0  .AND.  cc_i2m(2) > 0 )                                            &
    9822                 aero_emission%mass_fracs(:,cc_i2m(2)) = 0.0_wp
    9823              IF ( index_bc  < 0  .AND.  cc_i2m(3) > 0 )                                            &
    9824                 aero_emission%mass_fracs(:,cc_i2m(3)) = 0.0_wp
    9825              IF ( index_du  < 0  .AND.  cc_i2m(4) > 0 )                                            &
    9826                 aero_emission%mass_fracs(:,cc_i2m(4)) = 0.0_wp
    9827              IF ( index_ss  < 0  .AND.  cc_i2m(5) > 0 )                                            &
    9828                 aero_emission%mass_fracs(:,cc_i2m(5)) = 0.0_wp
    9829              IF ( index_no  < 0  .AND.  cc_i2m(6) > 0 )                                            &
    9830                 aero_emission%mass_fracs(:,cc_i2m(6)) = 0.0_wp
    9831              IF ( index_nh  < 0  .AND.  cc_i2m(7) > 0 )                                            &
    9832                 aero_emission%mass_fracs(:,cc_i2m(7)) = 0.0_wp
     9821             IF ( index_so4 < 0  .AND.  aero_emission_att%cc_in2mod(1) > 0 )  THEN
     9822                aero_emission%mass_fracs(:,aero_emission_att%cc_in2mod(1)) = 0.0_wp
     9823                aero_emission_att%cc_in2mod(1) = 0
     9824             ENDIF
     9825             IF ( index_oc  < 0  .AND.  aero_emission_att%cc_in2mod(2) > 0 )  THEN
     9826                aero_emission%mass_fracs(:,aero_emission_att%cc_in2mod(2)) = 0.0_wp
     9827                aero_emission_att%cc_in2mod(2) = 0
     9828             ENDIF
     9829             IF ( index_bc  < 0  .AND.  aero_emission_att%cc_in2mod(3) > 0 )  THEN
     9830                aero_emission%mass_fracs(:,aero_emission_att%cc_in2mod(3)) = 0.0_wp
     9831                aero_emission_att%cc_in2mod(3) = 0
     9832             ENDIF
     9833             IF ( index_du  < 0  .AND.  aero_emission_att%cc_in2mod(4) > 0 )  THEN
     9834                aero_emission%mass_fracs(:,aero_emission_att%cc_in2mod(4)) = 0.0_wp
     9835                aero_emission_att%cc_in2mod(4) = 0
     9836             ENDIF
     9837             IF ( index_ss  < 0  .AND.  aero_emission_att%cc_in2mod(5) > 0 )  THEN
     9838                aero_emission%mass_fracs(:,aero_emission_att%cc_in2mod(5)) = 0.0_wp
     9839                aero_emission_att%cc_in2mod(5) = 0
     9840             ENDIF
     9841             IF ( index_no  < 0  .AND.  aero_emission_att%cc_in2mod(6) > 0 )  THEN
     9842                aero_emission%mass_fracs(:,aero_emission_att%cc_in2mod(6)) = 0.0_wp
     9843                aero_emission_att%cc_in2mod(6) = 0
     9844             ENDIF
     9845             IF ( index_nh  < 0  .AND.  aero_emission_att%cc_in2mod(7) > 0 )  THEN
     9846                aero_emission%mass_fracs(:,aero_emission_att%cc_in2mod(7)) = 0.0_wp
     9847                aero_emission_att%cc_in2mod(7) = 0
     9848             ENDIF
    98339849!
    98349850!--          Then normalise the mass fraction so that SUM = 1
     
    1025110267!
    1025210268!--             Sulphate
    10253                 IF ( index_so4 > 0 )  THEN
     10269                IF ( cc_i_mod(1) > 0 )  THEN
    1025410270                   ic = cc_i_mod(1)
    1025510271                   CALL set_mass_flux( surface, m, ib, index_so4, mass_fracs(ic), arhoh2so4,       &
     
    1025810274!
    1025910275!--             Organic carbon
    10260                 IF ( index_oc > 0 )  THEN
     10276                IF ( cc_i_mod(2) > 0 )  THEN
    1026110277                   ic = cc_i_mod(2)
    1026210278                   CALL set_mass_flux( surface, m, ib, index_oc, mass_fracs(ic),arhooc,            &
     
    1026510281!
    1026610282!--             Black carbon
    10267                 IF ( index_bc > 0 )  THEN
     10283                IF ( cc_i_mod(3) > 0 )  THEN
    1026810284                   ic = cc_i_mod(3)
    1026910285                   CALL set_mass_flux( surface, m, ib, index_bc, mass_fracs(ic), arhobc,           &
     
    1027210288!
    1027310289!--             Dust
    10274                 IF ( index_du > 0 )  THEN
     10290                IF ( cc_i_mod(4) > 0 )  THEN
    1027510291                   ic = cc_i_mod(4)
    1027610292                   CALL set_mass_flux( surface, m, ib, index_du, mass_fracs(ic), arhodu,           &
     
    1027910295!
    1028010296!--             Sea salt
    10281                 IF ( index_ss > 0 )  THEN
     10297                IF ( cc_i_mod(5) > 0 )  THEN
    1028210298                   ic = cc_i_mod(5)
    1028310299                   CALL set_mass_flux( surface, m, ib, index_ss, mass_fracs(ic), arhoss,           &
     
    1028610302!
    1028710303!--             Nitric acid
    10288                 IF ( index_no > 0 )  THEN
     10304                IF ( cc_i_mod(6) > 0 )  THEN
    1028910305                    ic = cc_i_mod(6)
    1029010306                   CALL set_mass_flux( surface, m, ib, index_no, mass_fracs(ic), arhohno3,         &
     
    1029310309!
    1029410310!--             Ammonia
    10295                 IF ( index_nh > 0 )  THEN
     10311                IF ( cc_i_mod(7) > 0 )  THEN
    1029610312                    ic = cc_i_mod(7)
    1029710313                   CALL set_mass_flux( surface, m, ib, index_nh, mass_fracs(ic), arhonh3,          &
     
    1074110757
    1074210758          DO  ig = 1, ngases_salsa
     10759             IF (cc_i_mod(ig) < 1) CYCLE
    1074310760             IF ( use_time_fac )  THEN
    1074410761                surface%gtsws(m,ig) = surface%gtsws(m,ig) + rho_air_zw(k-1) * conv(ig) * time_fac  &
Note: See TracChangeset for help on using the changeset viewer.