强弱电解质比较

强弱电解质比较 preview image

1 collaborator

Default-person Ying Li (Author)

Tags

(This model has yet to be categorized with any tags)
Visible to everyone | Changeable by the author
Model was written in NetLogo 6.4.0 • Viewed 3 times • Downloaded 0 times • Run 0 times
Download the '强弱电解质比较' modelDownload this modelEmbed this model

Do you have questions or comments about this model? Ask them here! (You'll first need to log in.)


## WHAT IS IT?

This model demonstrates the kinetics of a simple reversible reaction. It demonstrates numerically that the application of the Principle of Stationary Concentrations is valid in this case.

In this model there are two kinds of molecules, green and red. Green turtles turn into red turtles bimolecularly whereas red turtles turn back into pairs of green turtles monomolecularly. You can control the rate at which this changes occur with sliders Kb and Ku.

The reaction here is a reversible reaction of the type:

```text

Kb

A + A <=======> B

Ku

```

An example of such a reaction would be dimerization of acetic acid:

```text

Kb

2 H C-COOH <=======> H C-COOH~...~HOOC-C H

3 Ku 3 3

```

This reaction is an example of a complex reaction which consists of two elementary reactions. The forward bimolecular reaction

```text

Kb

A + A --------> B

```

is characterized by the constant Kb and the reverse unimolecular reaction

```text

Ku

B ---------> A + A

```

is characterized by the constant Ku.

The system of ordinary differential equations (ODE) that describes the concentrations of A and B is given below:

```text

dA 2

-- = -2Kb * A + 2Ku * B (1)

dt

dB 2

-- = Kb * A - Ku * B (2)

dt

```

The usual initial conditions are A(0) = Ao and B(0) = 0. While it is possible to solve this system of ODE analytically, chemists usually apply the Principle of Stationary Concentrations when they investigate the kinetics of reactions of this type. The Principle says that one can assume that the concentrations of the species stop changing from some point on after the system reaches equilibrium. If concentrations are stationary, the derivatives

```text

dA dB

-- and --

dt dt

```

are zero. Hence one can replace the system of ODE above with the system of algebraic equations below:

```text

2

0 = -2Kb * A* + 2Ku * B* (1')

2

0 = Kb * A* - Ku * B* (2')

```

where concentrations marked with * are stationary concentrations. The second equation (2') is linearly dependent on the first equation (1'). Luckily we also have another equation coming from the law of the conservation of mass:

```text

A* + 2 * B* = Ao (3)

```

From equation (2') we can express B* in terms of A* :

```text

Kb 2

B* = -- A* (4)

Ku

```

We can now plug in expression (4) into (3) and then we will have a quadratic equation in terms of A*:

```text

Kb 2

A* + -- A* = Ao (5)

Ku

```

whose solution is:

```text

_____________

|

| Kb

| 1 + 4 * -- - 1

\| Ku

-------------------- (6)

Kb

2 * --

Ku

```

One can now find the stationary concentration of B using equation (4).

## HOW TO USE IT

Choose the values of Ku and Kb with appropriate sliders:

- Kb controls the rate of the forward reaction by which two green turtles turn bimolecularly into a single red turtle.

- Ku controls the rate of the reverse reaction, by which a red turtle turns unimolecularly into two green turtles.

Having chosen appropriate values of the constants, press SETUP to clear the world and create an initial number of green turtles. Note: we do not create red turtles initially, although this could be done in principle.

Press GO to start the simulation.

## THINGS TO NOTICE

You will see turtles wandering around the world and changing color. Pay more attention to the plot of the concentrations. Do the plots soon reach stationary concentrations?

## THINGS TO TRY

How do the stationary concentrations depend on the values of Kb and Ku? You can change Ku and Kb while the model is running. See if you can predict what the stationary concentrations will be with various combinations of Kb and Ku.

## EXTENDING THE MODEL

Try to implement the following reaction:

```text

Kb K2

A + A <======> B -------> C

Ku

```

This reaction underlines a vast number of microbiological processes (e.g. fermentation). You can read about its kinetics in any book on Biochemistry. Look up the so-called Michaeles-Menten equation. Does it check numerically?

Try to implement the following reaction:

```text

Kb K2

A + B <======> C -------> D

Ku

```

## RELATED MODELS

Enzyme Kinetics

Chemical Equilibrium

Simple Kinetics 2

Simple Kinetics 3

## CREDITS AND REFERENCES

Thanks to Mike Stieff for his work on this model.

## HOW TO CITE

If you mention this model or the NetLogo software in a publication, we ask that you include the citations below.

For the model itself:

* Wilensky, U. (1998). NetLogo Simple Kinetics 1 model. http://ccl.northwestern.edu/netlogo/models/SimpleKinetics1. Center for Connected Learning and Computer-Based Modeling, Northwestern University, Evanston, IL.

Please cite the NetLogo software as:

* Wilensky, U. (1999). NetLogo. http://ccl.northwestern.edu/netlogo/. Center for Connected Learning and Computer-Based Modeling, Northwestern University, Evanston, IL.

## COPYRIGHT AND LICENSE

Copyright 1998 Uri Wilensky.

![CC BY-NC-SA 3.0](http://ccl.northwestern.edu/images/creativecommons/byncsa.png)

This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 3.0 License. To view a copy of this license, visit https://creativecommons.org/licenses/by-nc-sa/3.0/ or send a letter to Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA.

Commercial licenses are also available. To inquire about commercial licenses, please contact Uri Wilensky at uri@northwestern.edu.

This model was created as part of the project: CONNECTED MATHEMATICS: MAKING SENSE OF COMPLEX PHENOMENA THROUGH BUILDING OBJECT-BASED PARALLEL MODELS (OBPML). The project gratefully acknowledges the support of the National Science Foundation (Applications of Advanced Technologies Program) -- grant numbers RED #9552950 and REC #9632612.

This model was converted to NetLogo as part of the projects: PARTICIPATORY SIMULATIONS: NETWORK-BASED DESIGN FOR SYSTEMS LEARNING IN CLASSROOMS and/or INTEGRATED SIMULATION AND MODELING ENVIRONMENT. The project gratefully acknowledges the support of the National Science Foundation (REPP & ROLE programs) -- grant numbers REC #9814682 and REC-0126227. Converted from StarLogoT to NetLogo, 2001.

Comments and Questions

Please start the discussion about this model! (You'll first need to log in.)

Click to Run Model

; Li Ying created this module at Shaanxi Normal University in 2024. If you mention this model in a publication, we ask that you include the citations below.
;Ying, L. (2024). Comparison of Strong and Weak Electrolytes. School of Chemistry and Chemical Engineering, Shaanxi Normal University.
breed [ch3cooh_ion mode1_ch3coo_]
breed [ch3cooh_molecule  mode1_ch3cooh]
breed [cl_ion mode1_cl_]
breed [h3o_ion_Strong_acid Strong_acid_h3o_]
breed [h3o_ion_weak_acid Weak_acid_h3o_]
turtles-own [attribute]

globals [
  Strong_Co
  Weak_Co
  Strong_PH
  Weak_PH
  Strong_elrpha
  Weak_elrpha
  water_cur
  water_max

  cl_count
  h3o_strong_count
  ch3coo_count
  ch3cooh_count
  h3o_weak_count
]

;初始设置

to setup
  clear-all
  reset-ticks
  set-default-shape ch3cooh_ion "mode1_ch3coo_"
  set-default-shape ch3cooh_molecule "mode1_ch3cooh"
  set-default-shape cl_ion "mode1_cl_"
  set-default-shape h3o_ion_Strong_acid "mode1_h3o_"
  set-default-shape h3o_ion_weak_acid "mode1_h3o_"

  set water_max water
  set water_cur 0

  ;;起始浓度选择
  ifelse Start_switch = "Starting concentration" [
    set Strong_Co 0.1
    set Weak_Co 0.1
    set Strong_elrpha 0

    ;;上层窗口初始化,创建cl和H3o模块
  create-h3o_ion_Strong_acid (50)
    [
    ; 在 x 范围 (-30, 30) 内生成随机坐标
    let random-xcor-xcor (random 58) - 29
    ; 在 y 范围 (1, 33) 内生成随机坐标
    let random-ycor-ycor random 33 + 1
    setxy random-xcor-xcor random-ycor-ycor
    set size 2.5
    ]
  create-cl_ion (50)
    [
    let random-xcor-xcor (random 58) - 29
    ; 在 y 范围 (1, 35) 内生成随机坐标
    let random-ycor-ycor random 33 + 1
    setxy random-xcor-xcor random-ycor-ycor
    set size 3
    set color (yellow - 0.4)
    ]

  ;;下层窗口初始化,创建醋酸分子和醋酸离子 水质子模块
  create-ch3cooh_ion (1)
    [
    let random-xcor-xcor (random 58) - 29
    ; 在 y 范围 (1, 35) 内生成随机坐标
    let random-ycor-ycor random -32 - 2
    setxy random-xcor-xcor random-ycor-ycor
    set size 5
    ]
  create-h3o_ion_weak_acid (1)
    [
    let random-xcor-xcor (random 58) - 29
    ; 在 y 范围 (1, 35) 内生成随机坐标
    let random-ycor-ycor random -32 - 2
    setxy random-xcor-xcor random-ycor-ycor
    set size 2
    ]
  create-ch3cooh_molecule (49)
    [
    let random-xcor-xcor (random 58) - 29
    ; 在 y 范围 (1, 35) 内生成随机坐标
    let random-ycor-ycor random -32 - 2
    setxy random-xcor-xcor random-ycor-ycor
    set size 5
    ]
  ]
  [;;起始PH选择
    set Strong_Co 0.001
    set Weak_Co 0.05814
    set Strong_elrpha 0

  ;;上层窗口初始化,创建cl和H3o模块
  create-h3o_ion_Strong_acid (2)
    [
    ; 在 x 范围 (-30, 30) 内生成随机坐标
    let random-xcor-xcor (random 58) - 29
    ; 在 y 范围 (1, 33) 内生成随机坐标
    let random-ycor-ycor random 33 + 1
    setxy random-xcor-xcor random-ycor-ycor
    set size 2.5
    ]
  create-cl_ion (2)
    [
    let random-xcor-xcor (random 58) - 29
    ; 在 y 范围 (1, 35) 内生成随机坐标
    let random-ycor-ycor random 33 + 1
    setxy random-xcor-xcor random-ycor-ycor
    set size 3
    set color (yellow - 0.4)
    ]
  ;;下层窗口初始化,创建ch3cooh/ch3coo和H3o模块
  create-ch3cooh_ion (2)
    [
    let random-xcor-xcor (random 58) - 29
    ; 在 y 范围 (1, 35) 内生成随机坐标
    let random-ycor-ycor random -32 - 2
    setxy random-xcor-xcor random-ycor-ycor
    set size 4
    ]
  create-h3o_ion_weak_acid (2)
    [
    let random-xcor-xcor (random 58) - 29
    ; 在 y 范围 (1, 35) 内生成随机坐标
    let random-ycor-ycor random -32 - 2
    setxy random-xcor-xcor random-ycor-ycor
    set size 2.1
    ]
  create-ch3cooh_molecule (130)
    [
    let random-xcor-xcor (random 58) - 29
    ; 在 y 范围 (1, 35) 内生成随机坐标
    let random-ycor-ycor random -32 - 2
    setxy random-xcor-xcor random-ycor-ycor
    set size 4
    ]
  ]

  ; 在上半部分设置patches的颜色x:(-30,35)(30,35)   y:(35,1)
  ask patches with [pycor > 0] [
    set pcolor white
  ]

  ; 在中间部分设置patches的颜色
  ask patches with [pycor = 0] [
    set pcolor black
  ]

  ; 在下半部分设置patches的颜色x:(-300,-355)(300,-355)   y:(-1,-355)
  ask patches with [pycor < 0] [
    set pcolor white
  ]
end 

to go
  ;;设置强酸elrpha
  set Strong_elrpha 100
  ;;起始浓度选择
  if water_cur < water_max[
    set water_cur (water_cur + 1 )

    calculate_elrpha (Weak_Co / (1 + water_cur))
    calculate_Strong_acid_ph water_cur
    calculate_Weak_acid_ph water_cur
  ]
    if ticks mod 10 = 0 [
      ask h3o_ion_Strong_acid [
        ; 随机选择运动距离和角度
        let distance_h30 1

        ifelse (ycor > 2) and (ycor < 33) and (xcor > -29) and (xcor < 29) [
          set heading random 360
        ][
          ; 左边墙
          ifelse (xcor < -29) [
            set heading 90
          ][]
          ; 右边墙
          ifelse (xcor > 29) [
            set heading 270
          ][]
          ; 下面墙
          ifelse (ycor < 2) [
            set heading 0
          ][]
          ; 上面墙
          ifelse (ycor > 33) [
            set heading 180
          ][]
          ; 左上角
          ifelse (xcor <= -29) and (ycor >= 33) [
            set heading 135
          ][]
          ; 右上角
          ifelse (xcor >= 29) and (ycor >= 33) [
            set heading  315
          ][]
          ; 左下角
          ifelse (xcor <= -29) and (ycor <= 2) [
            set heading 45
          ][]
          ; 右下角
          ifelse (xcor >= 29) and (ycor <= 2) [
            set heading 225
          ][]
        ]
        fd 1
      ]
      ask cl_ion [
        ; 随机选择运动距离和角度
        let distance_h30 1

        ifelse (ycor > 2) and (ycor < 33) and (xcor > -29) and (xcor < 29) [
          set heading random 360
        ][
          ; 左边墙
          ifelse (xcor < -29) [
            set heading 90
          ][]
          ; 右边墙
          ifelse (xcor > 29) [
            set heading 270
          ][]
          ; 下面墙
          ifelse (ycor < 2) [
            set heading 0
          ][]
          ; 上面墙
          ifelse (ycor > 33) [
            set heading 180
          ][]
          ; 左上角
          ifelse (xcor <= -29) and (ycor >= 33) [
            set heading 135
          ][]
          ; 右上角
          ifelse (xcor >= 29) and (ycor >= 33) [
            set heading  315
          ][]
          ; 左下角
          ifelse (xcor <= -29) and (ycor <= 2) [
            set heading 45
          ][]
          ; 右下角
          ifelse (xcor >= 29) and (ycor <= 2) [
            set heading 225
          ][]
        ]
        fd 1
      ]

      ;下半区间
      ask ch3cooh_ion [
        ; 随机选择运动距离和角度
        let distance_h30 1

        ifelse (ycor > -33) and (ycor < -3) and (xcor > -29) and (xcor < 29) [
          set heading random 360
        ][
          ; 左边墙
          ifelse (xcor < -29) [
            set heading 90
          ][]
          ; 右边墙
          ifelse (xcor > 29) [
            set heading 270
          ][]
          ; 上面墙
          ifelse (ycor > -3) [
            set heading 180
          ][]
          ; 下面墙
          ifelse (ycor < -33) [
            set heading 0
          ][]
          ; 左上角
          ifelse (xcor <= -29) and (ycor > -3) [
            set heading 135
          ][]
          ; 右上角
          ifelse (xcor >= 29) and (ycor > -3) [
            set heading  225
          ][]
          ; 左下角
          ifelse (xcor <= -29) and (ycor < -33) [
            set heading 45
          ][]
          ; 右下角
          ifelse (xcor >= 29) and (ycor < -33) [
            set heading 315
          ][]
        ]
        fd 1
      ]

      ask h3o_ion_weak_acid [
        ; 随机选择运动距离和角度
        let distance_h30 1

        ifelse (ycor > -33) and (ycor < -3) and (xcor > -29) and (xcor < 29) [
          set heading random 360
        ][
          ; 左边墙
          ifelse (xcor < -29) [
            set heading 90
          ][]
          ; 右边墙
          ifelse (xcor > 29) [
            set heading 270
          ][]
          ; 上面墙
          ifelse (ycor > -3) [
            set heading 180
          ][]
          ; 下面墙
          ifelse (ycor < -33) [
            set heading 0
          ][]
          ; 左上角
          ifelse (xcor <= -29) and (ycor > -3) [
            set heading 135
          ][]
          ; 右上角
          ifelse (xcor >= 29) and (ycor > -3) [
            set heading  225
          ][]
          ; 左下角
          ifelse (xcor <= -29) and (ycor < -33) [
            set heading 45
          ][]
          ; 右下角
          ifelse (xcor >= 29) and (ycor < -33) [
            set heading 315
          ][]
        ]
        fd 1
      ]
      ask ch3cooh_molecule [;醋酸分子
        ; 随机选择运动距离和角度
        let distance_h30 1

        ifelse (ycor > -33) and (ycor < -3) and (xcor > -29) and (xcor < 29) [
          set heading random 360
        ][
          ; 左边墙
          ifelse (xcor < -29) [
            set heading 90
          ][]
          ; 右边墙
          ifelse (xcor > 29) [
            set heading 270
          ][]
          ; 上面墙
          ifelse (ycor > -3) [
            set heading 180
          ][]
          ; 下面墙
          ifelse (ycor < -33) [
            set heading 0
          ][]
          ; 左上角
          ifelse (xcor <= -29) and (ycor > -3) [
            set heading 135
          ][]
          ; 右上角
          ifelse (xcor >= 29) and (ycor > -3) [
            set heading  225
          ][]
          ; 左下角
          ifelse (xcor <= -29) and (ycor < -33) [
            set heading 45
          ][]
          ; 右下角
          ifelse (xcor >= 29) and (ycor < -33) [
            set heading 315
          ][]
        ]
        fd 1
    ]
    ifelse Start_switch = "Starting concentration"[
      Unitary_weak_acid_dissociation_equilibrium
    ]
    [
      Unitary_weak_acid_dissociation_equilibrium_2
    ]
  ]

  set cl_count count cl_ion
  set h3o_strong_count count h3o_ion_Strong_acid
  set ch3coo_count count ch3cooh_ion
  set ch3cooh_count count ch3cooh_molecule
  set h3o_weak_count count h3o_ion_weak_acid

  tick
end 

to calculate_elrpha [Co_t]
  set Weak_elrpha (((sqrt (0.0000175 * 0.0000175 + 4 * 0.0000175 * Co_t ) - 0.0000175) / 2) / Co_t) * 100
end 

to calculate_Strong_acid_ph [water_t]
  set Strong_PH (- (ln (Strong_Co / (1 + water_t)) / ln 10))
end 

to calculate_Weak_acid_ph [water_t]
  set Weak_PH (- (ln ((sqrt (0.0000175 * 0.0000175 + 4 * 0.0000175 * (Weak_Co / (1 + water_t))) - 0.0000175) / 2)/ ln 10))
end 

to Unitary_weak_acid_dissociation_equilibrium
  ask patches [
    let ch3cooh_ion-count count turtles-here with [breed = ch3cooh_ion]
    let h3o_ion_weak_acid-count count turtles-here with [breed = h3o_ion_weak_acid]
    let ch3cooh_molecule-count count turtles with [breed = ch3cooh_molecule]

    ask ch3cooh_ion [
    let meeting-turtles h3o_ion_weak_acid in-radius 2
    if count meeting-turtles > 0 [
      ; 在半径5的范围内相遇时,创建新的ch3cooh_molecule turtle
      let turtle_ch3cooh_ion one-of turtles-here with [breed = ch3cooh_ion]
      ask turtle_ch3cooh_ion [
          set breed ch3cooh_molecule
        ]
      ; 删除原来的ch3cooh_ions和h3o_ions
      ask meeting-turtles [ die ]
    ]
  ]

   ifelse ch3cooh_molecule-count > ((100 - Weak_elrpha) / 100 * 50)[
        let turtle_ch3cooh_molecule one-of turtles with [breed = ch3cooh_molecule]
        ask turtle_ch3cooh_molecule [
          create-h3o_ion_weak_acid_ 1
        ]
        let turtle_ch3cooh_molecule_2 one-of turtles with [breed = ch3cooh_molecule]
        ask turtle_ch3cooh_molecule_2 [
          set breed ch3cooh_ion
        ]
    ][]
  ]
end 

to Unitary_weak_acid_dissociation_equilibrium_2
  ask patches [
    let ch3cooh_ion-count count turtles-here with [breed = ch3cooh_ion]
    let h3o_ion_weak_acid-count count turtles-here with [breed = h3o_ion_weak_acid]
    let ch3cooh_molecule-count count turtles with [breed = ch3cooh_molecule]

    ask ch3cooh_ion [
    let meeting-turtles h3o_ion_weak_acid in-radius 2
    if count meeting-turtles > 0 [
      ; 在半径5的范围内相遇时,创建新的ch3cooh_molecule turtle
      let turtle_ch3cooh_ion one-of turtles-here with [breed = ch3cooh_ion]
      ask turtle_ch3cooh_ion [
          set breed ch3cooh_molecule
        ]
      ; 删除原来的ch3cooh_ions和h3o_ions
      ask meeting-turtles [ die ]
    ]
  ]
   ifelse ch3cooh_molecule-count > ((100 - Weak_elrpha) / 100 * 130)[
        let turtle_ch3cooh_molecule one-of turtles with [breed = ch3cooh_molecule]
        ask turtle_ch3cooh_molecule [
          create-h3o_ion_weak_acid_ 1
        ]
        let turtle_ch3cooh_molecule_2 one-of turtles with [breed = ch3cooh_molecule]
        ask turtle_ch3cooh_molecule_2 [
          set breed ch3cooh_ion
        ]
    ][]
   ]
end 

to create-h3o_ion_weak_acid_ [num-turtles]
  ask n-of num-turtles patches [
    sprout 1 [
      set breed h3o_ion_weak_acid
      let random-xcor-xcor (random 58) - 29
      ; 在 y 范围 (1, 35) 内生成随机坐标
      let random-ycor-ycor random -33 - 1
      setxy random-xcor-xcor random-ycor-ycor
      set size 2
    ]
  ]
end 

There is only one version of this model, created 16 days ago by Ying Li.

Attached files

File Type Description Last updated
强弱电解质比较.png preview Preview for '强弱电解质比较' 16 days ago, by Ying Li Download

This model does not have any ancestors.

This model does not have any descendants.