YÜZEYSEL SU KALİTESİ MODELLEME TEKNİKLERİ
ve SWAT MODELİ
Doç. Dr. Ali Ertürk
10/10/2013
Model Nedir?
• Alıcı ortamın maruz kaldığı etkilere karşı;
fiziksel, kimyasal ve biyolojik yapısı itibari ile vereceği tepkilerin tespit edilmesini sağlayan, günümüzde özellikle bilgisayar kullanımı ile geliştirilen araçlardır.
• Gerçek ekosistemlerin basitleştirilmesi ve idealleştirilmesi ile problemlerin
çözülmesine yararlar.
Modellerin Faydaları
• Modeller kullanılarak izleme verileri ile zamanda ve konumda interpolasyon yapabilirler.
• İzleme ağının çözünürlüğü ne kadar yüksek olursa olsun, bir sisteminin her anının ve
noktasının izleme kapsamına alınması mümkün değildir.
• Doğrulanmış modeller ise ölçüm olmayan
zaman ve konumlardaki su kalitesinin tahmin edilmesinde kullanılabilinmektedirler.
• Modeller yardımıyla alıcı ortamlar üzerinde değişik hipotezler sanal olarak
denenebilmektedir. Gerçekleşmemiş olayların sonuçlarının da öngörülmeleri mümkündür.
(Senaryo analizleri).
Örnek Senaryolar
• Yönetilen su ekosisteminin önemli çevresel sorunları yok ama özümleme kapasitesi
belirlenmeye çalışılıyor. Bu ekosistem
“özümleme kapasitesi aşılana kadar kirletilip çevresel sorunların gözlediği kirletici yükünün özümleme kapasitesi olarak tanımlanması” bir belirleme yöntemi olamayacağına göre model tabanlı bir simülasyon yapılması gerekmektedir.
• İklim değişikliği, üzerinde çalıştığımız su
ekosistemindeki su kalitesini nasıl etkileyecek?
• Su kaynağımızın havzasında tarım %50 artarsa ne olur?.
• Su kaynağımıza aniden bir kirletici dökülüyor. Bu kirleticinin su alma ağzında zararlı
konsantrasyonlara ulaşması ne kadar sürer?
Modellerin Faydaları
• Çevre sorunlarının çözülmesi için en uygun seçeneğin belirlenmesi çalışmalarında zaman ve para tasarrufu sağlarlar.
• Değişik senaryolar ve çevre risklerinin daha iyi analiz edilmesini sağlarlar.
• Doğal proseslerin ve sistemin nasıl işlediğinin daha iyi anlaşılmasını sağlarlar.
• Modeller gelecekteki durum ile ilgili yorum
yapılabilmesini sağlarlar.
Modellerin Kullanım Amaçları
• Çevre problemlerinin ve risklerinin belirlenmesine ve kirliliğin önlenmesinde yardımcı araç olarak
• Gelecek senaryolarının kurulup, sürdürülebilir kalkınma da göz önünde bulundurularak, çeşitli yönetim planlarının yapılmasında
• Bu planlar doğrultusunda alınacak önlemlerin çevresel etkilerinin ve maliyetlerinin önceden tahmin
edilmesinde
• İzleme ağlarının tasarımında
• Kirlenmeye karşı önlemlerin ve islah çalışmalarının muhtemel sonuçlarının belirlenmesinde
• Risk altındaki alıcı ortamların belirlenmesinde
• Eksik verilerin tamamlanmasında
• Su kalitesini etkileyen önemli proseslerin belirlenmesinde
• Mevcut su kalitesinin detaylı olarak analizinde
Suyun faydalı kullanım amaçlarının belirlenmesi
Belirlenen faydalı kullanım amaçları için
su kalitesi ölçütleri
Su kalitesi standartları
Matematiksel modeller ile
etki-tepki ilişkilerinin bulunması
Su kalitesi standartlarını sağlayabilmek için
yapılması gerekenler, duyarlılık analizleri
Emniyet faktörlerinin belirlenmesi
Fayda – maliyet analizleri Su kalitesi
standartlarının suyun faydalı kullanım
amaçları ile uyumluluğu ve elde
edilecek faydalar
Su kalitesi yönetim planının
oluşturulması 4
2 1
3
5
6
7 8
9
Su Kalitesi/Havza Yönetiminde Modellerin Yeri
Modelleme (Model Geliştirme) Sürecinin Adımları
Arazi ve laboratuar
verileri
Teorik çatı
Sayısal tanımlama Problemin tanımı
Doğrulama Kalibrasyon
Geçerlilik Kontrolü Modelin
Uygulanması
Doğrulama
Geliştirilen modelin hesap sisteminin ya da modelleme yazılımlarının doğru
çalıştıklarından emin olunmalıdır. Aşağıdaki testler mutlaka yapılmalıdır.
• Model, sistemin kütle dengesini koruyabiliyor mu?
• Su kalitesi değişkenleri arasındaki ilişkiler beklendiği gibi mi?
• Kullanılan sayısal çözüm yöntemleri, model ortamında
canlandırılan ekosistemin yapısını temsil etmeye uygun
mu?
Kalibrasyon
Model katsayılarının değiştirilmesi suretiyle
arazi verilerinin model çıktıları ile uyumlarının
sağlanması olarak tanımlanmaktadır.
Kalibrasyon - Devam
Süreçler ile ilgili taşınım ve
dönüşüm denklemlerinin genel çözümleri
Süreçler ile ilgili kinetik ve stokiyometrik
katsayılar
MODEL DOĞRULUKLARI
SINANMIŞ MODEL GİRDİLERİ
ARAZİDE YAPILAN ÖLÇÜMLER
ARA SONUÇLAR
Ara sonuçlar,
arazi ölçümleri ile uyumlu mu?
Hayır
Evet
Ekosisteme özel kinetik ve
stokiyometrik
katsayılar
Kalibrasyon - Devam
• Karmaşık modellerin kalibrasyonları da uzun sürebilmektedir.
• Model katsayıları ekosistem için kalibre edilene kadar modelin binlerce kez
çalıştırılması gerekebilmektedir.
• Bu zor, sıkıcı ve pek de üretken olmayan bir süreçtir.
• Bu nedenle otomatik kalibrasyon
algoritmaları geliştirilmiştir.
Geçerlilik Kontrolü
Kalibre edilmiş modelin mümkün olduğu
kadar farklı koşullar için yeniden çalıştırılıp
üretilen sonuçların farklı koşulları temsil
eden arazi verileriyle karşılaştırılması
olarak tanımlanmaktadır.
Modelin Uygulanması/Kullanılması
Model Geliştirme
Süreci
Matematiksel Model Sınıfları
Ampirik Modeller
Örneğin fosfor ve chl-A arasındaki ilişkiyi deneysel verilerin analiziyle elde eden modellerdir.
Kuramsal Modeller
Bu tip modeller etkin mekanizmaları
matematiksel denklemlerle ifade edip
olayları açıklayacak şekilde
tasarlanmaktadır.
Kuramsal Modellerin Prensipleri
Kütle Korunumu Kanunu
Doğada enerji ve madde vardan yok olamaz. Yoktan var olamaz. Ancak dönüşümlere uğrayabilir. Teori ağırlıklı modellerdeki hesaplar bu kanuna dayanmaktadır.
Korunan Özelliklere Örnekler:
• Kütle (su kütlesi, bileşen kütlesi) (Su kütlesi = yoğunluk x hacim)
(Bileşen kütlesi = konsantrasyon x hacim)
• Momentum
(Momentum = kütle x hız)
• Isı
Karmaşık Olmayan Bir Model
1) Havalanma
2) Sedimentin oksijen ihtiyacı
3) Organik maddenin oksitlenmesi
4) Organik maddenin çökelmesi
Karmaşık Bir Model
CE-QUAL-R1
( ) ( )
( )
C
t D a f C k C
K C C
v f
D C
P PC OP
T
mPC
S D
8
1 4 83 83
20 4
4 8
3 8
8
1
Organik Fosfor
8 D8 20) (T OPD OPD 4
OP PC
20) (T PZD PZD
3 k θ a (1 f ) C k θ f C
t )
(C
İnorganik Fosfor
1 6 NIT 20) 6 (T 12 12 5
6 BOD 20) 6 (T d d 6 S 2
6
C
C K θ C
14 k C 64 C K θ C
k ) C (C t k
C
NH3
4 1R 1R(T 20) 4nc P1
20) (T
S
k θ C
12 C 32 P
1 14 a 48 12 G 32 D θ
SOD
Çözünmüş Oksijen
2 6 NO3 20) NO3 (T 2D 2D 4 NH3 nc
P1 1 6 NIT 20) 6 (T 12 12
2
C
C K
θ K k C ) P (1 a G C C
K θ C
dt k
C
Nitrat Azotu
1 6 NIT 20) 6 (T 12 12 4 NH3 nc P1 7 4 mPc 20) 4 (T 71 71 4 on nc P1
1
C
C K θ C
k C P a G C C
K θ C
k C ) f (1 a t D
C
Amonyum Azotu
7 D7 S3
7 4 mPc 20) 4 (T 71 71 4 on nc P1
7
C
D ) f (1 C v
C K θ C
k C f a t D
C
Organik Azot
( C a )
t G a C D a C v
D a C
nc
P nc P nc
S nc 4
1 4 1 4
4
4Fitoplankton Karbonlu
WASP Modeli
EUTRO Modülü
Arazi kullanımı ve
özellikleri
Yağış
Hidrolojik hesaplar
Yüzeysel akış (debi)
Kirletici yükü
Havzada yüzeyde taşınım ve
dönüşüm süreçleri
Su ortamına
ulaşan kirletici yükleri
•Birim
dönüşümü
•Zaman serisi analizi
•Biçimlendirme
Farklı senaryolar
için su kaynağına
ulaşan kirletici yükler
Yeraltına sızan debi
Yüzey altındaki taşınım ve
dönüşüm süreçleri
Noktasal kaynaklardan
gelen yükler Sosyoekonomik yapı ve
endüstriyel faaliyetler
Su kaynağındaki taşınım ve dönüşüm süreçleri
Su kalitesi hesapları için gerekli diğer veriler
Su kalitesi değişkenlerinin zamana ve konuma göre alacakları tahmin
edilen sayısal değerler
Veriler Modeller
Sonuçlar
Yardımcı araçlar
SU EKOLOJİSİ MODELİ
Su Kalitesinin Tahmin Edilmesi
HAVZA
MODELİ
Havza/Hidrolojik Modeller
• SWAT
• HSPF
• Ve daha onlarcası
Hidrodinamik Modeller
• SHYFEM*
• TELEMAC
• MOHID*
• EFDC*
• SSIIM*
• CE-QUAL-W2*
* Su kalitesi/ekolojisi bileşenleri de var.
Su Kalitesi/Ekolojisi Modelleri
• AQUATOX
• WASP
• ECOPATH ve ECOSIM
• CE-QUAL-R1
• WQRRS
• ESTAS
• SİSMOD
• EGÖLEM
Modelleme İçin Gerekli Bileşenler
• Donanım
• Yazılım
• Modelleme konusunda yetişmiş uzman personel
• Ve en önemlisi veri
GEREKLİ VERİLER
MODELLEMENİN UYMAMA SEÇENEĞİ OLMAYAN ÜÇ
KURALI
• Modeller; su, enerji ve kütlenin korunumu üzerine kuruludur.
• Modellenen ortam bilgisayar ortamında gerçeğe mümkün olan en yakın şekilde temsil edilmelidir.
Bu koşul ancak kurumlarımızın ellerindeki verileri paylaşmaları ile gerçekleştirilebilir.
• Toplam üç kural vardır.
Havza Modellerinin Çalıştırılması İçin Gerekli Veriler
• Topgrafya (SYM)
• Akarsular ve göletlerle ilgili geometrik veriler (Batimetri, enkesit, vb)
• Su mühendisliği yapılarının özellikleri (Göletler, küçük barajlar, köprüler, bağlamalar, su alma yapıları, sulama yapıları, vb.)
• Su kullanımı ile ilgili ayrıntılı* veriler (aylık)
• Su ortamlarına deşarjlar ile ilgili ayrıntılı** veriler (aylık)
* Ne zaman, hangi kaynaktan ne kadar su alınıyor.
** Ne zaman, nereye, hangi debi ve kalitede (modellenmesi istenen
parametreler açısından) deşarj var.
Havza Modellerinin Çalıştırılması İçin Gerekli Veriler - Devam
• Arazi kullanımı ve özellikleri
- tarım, orman alanları ve yerleşim alanları
- sayısallaştırılmış köy sınırlar (mümkün değilse ilçe sınırları)
- mümkün olduğu kadar çok yıl için köy
ölçeğinde gübre kullanımı ve hayvanclılık verileri (mümkün değilse ilçe)
- ürün deseni ve zirai operasyonlar
- jeoloji ve hidrojeoloji
Havza Modellerinin Çalıştırılması İçin Gerekli Veriler - Devam
• Havzayı temsil eden metroloji istasyonlarında mümkün olduğunca uzun süreli meteorolojik zaman serileri
- yağış (saatlik)
- sıcaklık (saatlik ve günlük maksimum ve minimumlarla birlikte)
- nem (saatlik)
- hava basıncı (saatlik)
- rüzgar hızı ve yönü (saatlik)
- buharlaşma (saatlik, mümkün değilse günlük) - bulutluluk (saatlik)
- güneş ışıması (saatlik)
Havza Modellerinin Doğrulanması İçin Gerekli Veriler
• Akarsulardaki debiler (günlük, mümkünse sürekli)
• Akarsular ve göletlerle modellenen parametreler için su kalitesi değerler (Aylık)
• Ürün desenine göre ürün verimleri
Hidrodinamik Modellerin
Çalıştırılması İçin Gerekli Veriler
• Ayrıntılı* batimetri
• Kıyı bölgesinin büyük ölçekli/ayrıntılı topografyası
• Modellenen ortama olan tüm girişlerin en azından günlük zaman çözünürlüğünde debileri.
• Özellikle baraj göllerinde modellenen ortamın su kaynağı işletmesi ile ilgili günlük veriler
* Eş derinlikler 1 m aralıklarla verilmeli, baraj göllerinde en azından ana akarsu girişlerinin yakın civarında batimetrik ölçümler
yenilenmeli.
Hidrodinamik Modellerin Çalıştırılması İçin Gerekli Veriler-Devam
• Eğer mümkünse uzun yıllar günlük verilerle doğrulanmış bir havza modelleme
çalışmasından elde edilen anlık debiler.
Hidrodinamik Modellerin Çalıştırılması İçin Gerekli Veriler - Devam
• Su ortamını temsil eden metroloji istasyonlarında mümkün olduğunca uzun süreli meteorolojik
zaman serileri
- yağış (saatlik)
- sıcaklık (saatlik ve günlük maksimum ve minimumlarla birlikte)
- nem (saatlik)
- hava basıncı (saatlik)
- rüzgar hızı ve yönü (saatlik) - buharlaşma (saatlik)
- bulutluluk (saatlik)
- güneş ışıması (saatlik)
Hidrodinamik Modellerinin
Doğrulanması İçin Gerekli Veriler
• Su seviyeleri (limnigraf - günlük, mümkünse sürekli)
• Su sıcaklığı (günlük)
• Akıntı hızı ve yönleri (mümkün olduğu
kadar çok noktada ve yüksek zamansal
çözünürlükte)
Su Kalitesi/Ekolojisi Modellerinin Çalıştırılması İçin Gerekli Veriler
• Su ortamını temsil eden metroloji istasyonlarında mümkün olduğunca uzun süreli meteorolojik
zaman serileri
- hava sıcaklığı (günlük) - nem (günlük)
- su sıcaklığı (günlük, mümkünse iyi
doğrulanmış bir hidrodinamik modelden alınan sürekli simülasyon sonuçları)
- rüzgar hızı (saatlik, mümkün değilse günlük ortalama)
- buharlaşma (günlük) - bulutluluk (günlük)
- güneş ışıması (saatlik)
Su Kalitesi/Ekolojisi Modellerinin
Çalıştırılması İçin Gerekli Veriler - Devam
• Ayrıntılı* batimetri
• Kıyı bölgesinin büyük ölçekli/ayrıntılı topografyası
• Modellenen ortama olan tüm girişlerin en
azından günlük zaman çözünürlüğünde debileri.
• Eğer mümkünse uzun yıllar günlük verilerle
doğrulanmış bir havza modelinden elde edilen anlık debiler.
* Eş derinlikler 1 m aralıklarla verilmeli, baraj göllerinde en
azından ana akarsu girişlerinin yakın civarında batimetrik
ölçümler yenilenmeli.
Su Kalitesi/Ekolojisi Modellerinin
Çalıştırılması İçin Gerekli Veriler - Devam
• Eğer mümkünse uzun yıllar günlük verilerle
doğrulanmış bir havza modelleme çalışmasından elde edilen anlık debiler ve modellenen su kalitesi değişkenlerinin anlık değerleri.
• Eğer böyle bir çalışma yoksa modellenen su
ortamına giren başlıca akarsularda ölçülmüş günlük debiler ve su kalitesi değişkenlerinin aylık ölçümleri.
• Modellenen su ortamına giren başlıca deşarjların (en azından diğerlerini temsil edici olanlarını) aylık debileri ve ilgili su kalitesi değişkenlerinin aylık
ölçümleri.
Su Kalitesi/Ekolojisi Modellerinin
Çalıştırılması İçin Gerekli Veriler - Devam
• Eğer mümkünse uzun yıllar günlük verilerle doğrulanmış bir hidrodinamik modelleme çalışmasından elde edilen anlık debiler
• Su kaynağının kullanımı ile ilgili bilgiler (işletme koşulları, su ürünleri avcılığı ve yetiştiriciliği
operasyonları, vb.)
• Ortamın ekolojik yapısı (taban yapısı, çökellerin durumu, jeoloji, tabanda yaşayan canlılar
sazlıklar, vb.)
• Yetiştirilen su ürünleri ile ilgili ayrıntılı veriler
(örneğin yaş ve boy dağılımları, biyokütle, vb.)
Su Kalitesi/Ekolojisi Modellerinin Doğrulanması İçin Gerekli Veriler
• Modellenen su kalitesi değişkenlerinin
(parametrelerinin) en az bir yıl boyunca birden çok istasyonda, her istasyonda temsil edici birden çok derinlik için en az aylık ölçümü.
• Bu ölçümlerin mümkünse bir hidrolojik yıla denk gelecek şekilde planlanmalı.
• Modellenen değişkenlerle ilgili yerinde süreç
hızları (örneğin fotosentez, solunum, fiksasyon
vb) ölçümü.
Model Denklemlerinin Sayısal
Çözümü
Sayısal Çözüm
• Model uzayı sonlu sayıda homojen
bölgeye ayrılır (konumsal ayrıklaştırma).
• Zaman sonlu sayıda aralığa bölünür.
(zamansal ayrıklaştırma).
• Her zaman aralığı için her homojen
bölgede kütle dengesi kurularak, taşınım
denklemi sonlu sayıda cebirsel denkleme
dönüştürülür.
Zamansal Ayrıklaştırma
• Açık yöntemler
Gelecek zaman aralığındaki çözüm, şimdiki zaman aralığındaki değerler ile hesaplanır.
• Kapalı yöntemler
Gelecek zaman aralığındaki çözüm, gelecek zaman aralığındaki değerler ile hesaplanır.
• Yarı kapalı yöntemler
Gelecek zaman aralığındaki çözüm, şimdiki ve gelecek zaman aralıklarındaki değerler ile
hesaplanır.
Zamansal Ayrıklaştırma
C k dt C
d
k C t
C C
t C
k C
C
C t k
C C
t t
t t
t t
t t
t t
t t
Birinci mertebe
bozunma denklemi
Açık çözüm
Zamansal Ayrıklaştırma
t k
1 C C
C t
k 1 C
C t
C k C
t C
k C
C
C t k
C C
t t
t
t t
t
t t
t t
t
t t t
t t
t t t
t t
C k dt C
d
Kapalı Çözüm
Birinci mertebe
bozunma denklemi
Zamansal Ayrıklaştırma
2 t k C C
2 t k C
C
2 t k C 2 t
k C C
C
2 t C k C
C C
2 C k C
t C C
t t
t t t
t
t t
t t
t t
t t
t t
t t
t t
t t
t t
C k dt C
d
2 t 1 k
2 t 1 k
C C
2 t 1 k
2 C t 1 k
C
t t
t
t t
t
Yarı Kapalı Çözüm
Birinci mertebe
bozunma denklemi
Açık Çözümlü Tek Kutu Modeli
C V k C Q C
Q dt C
V d 0
C C k C t
V C Q
C
t C
k C
V C C Q
C
C k C
V C Q t
C C
t t
0 t
t t
t t
0 t
t t
t t
t 0 t
t
Açık çözüm
C C k C
V C Q
dt
d 0
Açık Çözümlü Tek Kutu Modeli
C C k C t
V C Q
C t t t 0 t t
Daha yakından bir bakış
Sınır
konsantrasyonu
Türev (Kütle dengesi denkleminin
sağ tarafı)
Zaman aralığının uzunluğu (Zaman
adımı) Gelecek
zaman adımındaki konsantrasyon
Şimdiki zaman
adımındaki
konsantrasyon
Açık Çözümlü Tek Kutu Modeli
t t
0 C k C
V C
Q
Türeve daha yakından bir bakış
Türev (Kütle dengesi denkleminin sağ tarafı) Taşınım türev
fonksiyonu
Kinetik türev fonksiyonu
Kinetik katsayı
Açık Çözümlü Tek Kutu Modeli
f C , C f k , k , , k , C , C , , C t
C
C 1 t t 1 t Ta ş ı nı m 0,1 1 t Kinetik 1 2 m 1 t 2 t n t
Birden çok değişkenin modellendiği duruma göre genelleştirme
Durum değişkeninin gelecek zaman
adımındaki konsantrasyon
Taşınım türev fonksiyonu
Kinetik türev fonksiyonu
Türev (Kütle dengesi denkleminin
sağ tarafı)
Zaman aralığının uzunluğu (Zaman
adımı) Durum
değişkeninin şimdiki zaman
adımındaki konsantrasyon
f C , C f k , k , , k , C , C , , C t
C
C 2 t t 2 t Ta ş ı nı m 0,2 2 t Kinetik 1 2 m 1 t 2 t n t
f C , C f k , k , , k , C , C , , C t
C
C n t t n t Ta ş ı nı m 0, n n t Kinetik 1 2 m 1 t 2 t n t
Kinetik türev fonksiyonu, durum değişkenlerini birbirlerine bağımlı hale getirir.
1 2 m 1 t 2 t ns t
Kinetik Kinetik
C C
C k
k k
t f
C , , , , , , ,
Kinetik katsayılar
Durum değişkenleri
m
ns t 2
t 1
t m
2 ns
t 2
t 1
t 2
1 ns
t 2
t 1
t 1
m 2 1
ullar ı evre koş
ç diğ er C
C C pH, S, T, f
ullar ı koş
evre ç
diğ er C
C C pH, S, T, f
ullar ı evre koş
ç diğ er C
C C pH, S, T, f
k k k
, , , ,
, , , ,
, , , ,
Kinetik türev fonksiyonuna daha yakından bir bakış
Kinetik türev fonksiyonuna daha yakından bir bakış
Kinetik türev fonksiyonu (ları) karmaşık ve
doğrusal olmayan denklemlerden oluşabilirler.
PHY_G NO3_ALIMI,
PHY_C ALIMI,
NO3
PHY_D ALIMI,
NO3
RGENMES İ NDİ
İ T RAT Nİ
MA T RAT LA Ş Nİ
Kinetik 3
R
R R R t R
N NO
O 2
NIT R, 2
2 pH
NIT R, 20
- T NIT R NIT R,20
NIT R
4 NIT R
MA T RAT LA Ş Nİ
KH O
corr O k
k
N NH
k R
Diğer durum değişkenleri ne bağımlılık İlgilenilen
durum değişkeni
Kinetik katsayı
Kinetik
katsayı
Konumsal Ayrıklaştırma
• Sonlu Farklar
Konumsal Ayrıklaştırma
• Sonlu Elemanlar
Konumsal Ayrıklaştırma
• Kutular (sonlu farkların özel durumu)
Bünyeye alma
Solunum ve ölüm Bünyeye
alma Denitrifikasyon
Solunum ve ölüm
Salınım
Çökelme Çökelme
Salınım
Çökelme
SOİ
Oksitlenme
Ni trif ika sy on
Bünyeye alma
Bünyeye alma
Solunum ve ölüm Bünyeye
alma Denitrifikasyon
Solunum ve ölüm
Salınım
Çökelme Çökelme
Salınım
Çökelme
SOİ
Oksitlenme
Ni trif ika sy on
Bünyeye alma
Örnek bir su kalitesi
modeli
function [OUTMASSES, CONCENTRATIONS] = ...
WQ_ROUTE_1(IN_MASSES, OUTFLOWS, INITIAL_CONCENTRATIONS, ...
VOLUMES, NUM_TIME_STEPS, D_T, DYNAMIC_FORCINGS, ...
ELEVATION)
NUM_S_VARS = numel(INITIAL_CONCENTRATIONS);
CONCENTRATIONS = ones(NUM_TIME_STEPS, NUM_S_VARS) * (-9999);
OUTMASSES = ones(NUM_TIME_STEPS, NUM_S_VARS) * (-9999);
CONCENTRATIONS(1,:) = INITIAL_CONCENTRATIONS;
OUTMASSES (1,:) = INITIAL_CONCENTRATIONS .* OUTFLOWS(1);
MASSES = INITIAL_CONCENTRATIONS .* VOLUMES (1);
CONSTANTS = 0;
OPTIONS = 1;
for i = 2:NUM_TIME_STEPS
FORCINGS(1:9) = DYNAMIC_FORCINGS(i - 1,:);
FORCINGS(10) = ELEVATION;
[KINETIC_DERIVS, SETTLING_DERIVS] = ...
WQ_KINETICS_1(CONCENTRATIONS(i - 1, :), CONSTANTS, ...
FORCINGS, OPTIONS);
%[KINETIC_DERIVS, SETTLING_DERIVS] = ...
% WQ_KINETICS_1_mex(CONCENTRATIONS(i - 1, :), CONSTANTS, ...
% FORCINGS, OPTIONS);
KINETIC_DERIVS = VOLUMES(i - 1) .* KINETIC_DERIVS;
MASSES = MASSES + ...
((IN_MASSES(i-1,:) - OUTMASSES(i-1,:) + ...
KINETIC_DERIVS)) * D_T;
CONCENTRATIONS(i,:) = MASSES ./ VOLUMES(i);
for j = 1:NUM_S_VARS
if (isnan(CONCENTRATIONS(i,j))) fprintf('\n\n\n');
fprintf('---\n');
fprintf('!!! ERROR IN WQ_ROUTE_1 !!!\n');
fprintf('---\n');
fprintf('\n');
fprintf('State variable no : %d\n' , j);
fprintf('VOLUMES(i-1) : %f\n' , VOLUMES(i-1));
fprintf('VOLUMES(i) : %f\n' , VOLUMES(i));
fprintf('IN_MASSES(i-1) : %f\n' , IN_MASSES(i-1,:));
fprintf('OUTMASSES(i-1) : %f\n' , OUTMASSES(i-1,:));
fprintf('KINETIC_DERIVS : %f\n' , KINETIC_DERIVS);
fprintf('MASSES (j) : %f\n' , MASSES (j));
fprintf('KINETIC_DERIVS(j) : %f\n\n', KINETIC_DERIVS(j));
error('Concentration is not a number');
end
if (CONCENTRATIONS(i,j) < 1.0E-10) CONCENTRATIONS(i,j) = 1.0E-10;
end end
MASSES = CONCENTRATIONS(i,:) .* VOLUMES(i);
OUTMASSES (i,:) = CONCENTRATIONS(i,:) .* OUTFLOWS(i);
end end
Meraklısına
…
function [DERIVS, SETTLING_DERIVS] = ...
WQ_KINETICS_1(S_VARS, CONSTANTS, FORCINGS, OPTIONS) NUM_SVAR = numel(S_VARS);
DERIVS = ones(1,NUM_SVAR) * (-9999);
SETTLING_DERIVS = ones(1,NUM_SVAR) * (-9999);
PHYC = S_VARS(1);
ORGN = S_VARS(2);
NH4N = S_VARS(3);
NO2N = S_VARS(4);
NO3N = S_VARS(5);
ORGP = S_VARS(6);
PO4P = S_VARS(7);
CBOD = S_VARS(8);
DOXY = S_VARS(9);
TEMP = S_VARS(10);
C_TO_CHLA = 30;
N_TO_C = 0.25;
P_TO_C = 0.05;
O2_TO_C = 2.66;
K_G_20 = 2.0;
THETA_K_G = 1.066;
K_R_20 = 0.05;
THETA_K_R = 1.045;
V_S_A_20 = 0.3;
THETA_V_S_A_20 = 1.03;
K_H_N_A = 0.2;
K_H_P_A = 0.05;
K_MIN_N = 0.3;
THETA_K_MIN_N = 1.04;
V_S_N_20 = 0.5;
THETA_V_S_N_20 = 1.04;
K_NITR_1_20 = 0.5;
THETA_NITR_1 = 1.045;
K_H_NH4N_NITR_1 = 0.6;
K_H_DOXY_NITR_1 = 1.5;
K_H_PREF_NH4N_GROWTH_NH4N = 0.1;
K_NITR_2_20 = 5.0;
THETA_NITR_2 = 1.045;
K_H_NO2N_NITR_2 = 0.1;
K_H_DOXY_NITR_2 = 1.5;
K_MIN_P = 0.3;
THETA_K_MIN_P = 1.04;
V_S_P_20 = 0.5;
THETA_V_S_P_20 = 1.04;
K_MIN_C = 0.3;
THETA_K_MIN_C = 1.04;
V_S_C_20 = 0.5;
THETA_V_S_C_20 = 1.04;
K_A_20 = 0.5;
THETA_K_A_20 = 1.045;
%I_S = 100000;
K_HS_LIGHT = 3000;
W_TYPE = 1;
K_H_ORGN_MINER = 0.2;
K_H_ORGN_SETTL = 0.2;
K_H_ORGP_MINER = 0.05;
K_H_ORGP_SETTL = 0.05;
K_H_CBOD_MINER = 1.0;
K_H_DOXY_MINER = 1.0;
K_H_CBOD_SETTL = 1.0;
K_DENIT = 0.8;
THETA_K_DENIT = 1.02;
K_HS_DOXY_DENIT = 1.0;
% Air temperature (degrees Celcisus) AIR_TEMP = FORCINGS(1);
% Relative hummidity R_H = FORCINGS(2);
% Shortwave solar radiaton (MJ.m^2.day^-1) J_SN = FORCINGS(3) * 238845.8966275;
% Wind speed (m/s) WIND_SPEED = FORCINGS(4);
FRAC_L = FORCINGS(5);
% Depth(m)
H = FORCINGS(6);
if (H < 0.1) H = 0.1;
end
% Current velocity (m/s) CURRENT_VEL = FORCINGS(7);
% Salinity (ppt)
SALT = FORCINGS(8);
% Background light extinction of water (m^-1) K_E_W = FORCINGS(9);
% Elevation
ELEV = FORCINGS(10);
%238845.8966275 (MJ ---> Calories)
I_A = 0.45 * FORCINGS(9) * 238845.8966275;
if (OPTIONS == 1)
TEMP = 5.0 + (0.75 * AIR_TEMP);
else
TEMP = 10;
end
% --- % PROCESS RATE CALCULATION FOR TEMPERATURE
% --- C_P = 1000000;
RHO = 1;
SIGMA = 11.7E-8; %Stefan-Bolzman constant cal / (cm^2 * d * K^4) A = 0.6;
R_L = 0.03;
EMISS_WATER = 0.97;
C_1 = 0.47; %Bowen ratio, mmHg C-1
% Calculate the saturation vapour pressure
E_SAT = 4.596 * exp((17.27 * AIR_TEMP) / (237.3 + AIR_TEMP));
E_AIR = R_H * E_SAT;
% T_D = 237.3 / (17.27/log(E_AIR / 4.596));
E_S = 4.596 * exp((17.27 * TEMP) / (237.3 + TEMP));
HEAT_CAP = RHO * C_P * H;
F_UW = 19.0 + (0.95 * WIND_SPEED * WIND_SPEED);
NET_SOLAR_RAD = J_SN / HEAT_CAP;
ATMOSPHERIC_LONG_WAVE_RAD = (SIGMA / HEAT_CAP) * ...
((AIR_TEMP+ 273).^4) * (A + 0.031 *(E_AIR.^0.5)) * (1 - R_L);
WATER_LONG_WAVE_RAD = EMISS_WATER * ...
(SIGMA / HEAT_CAP) * ((AIR_TEMP + 273).^4);
CONDUCTION = C_1 * F_UW * (TEMP - AIR_TEMP);
EVAPORATION = F_UW * (E_S - E_AIR);
% --- % END OF PROCESS RATE CALCULATION FOR TEMPERATURE
% ---
% --- % PROCESS RATE CALCULATIONS FOR PHYTOPLAKTON
% --- if (OPTIONS == 1)
% Calculate the TEMPerature limitation LIM_TEMP_A = (THETA_K_G .^(TEMP - 20));
% Calculate the light limitation INORG_SOLID = 0;
DETRITUS = 0;
CHLA = (PHYC / C_TO_CHLA) * 1000;
K_E_P = K_E_W + (0.052 * INORG_SOLID) + (0.174 * DETRITUS);
K_E = K_E_P + (0.0088 * CHLA) + (0.054 *(CHLA .^ (2/3)));
%ALPHA_0 = (I_A / I_S);
%ALPHA_1 = (I_A / I_S) * exp(-K_E * H);
%LIM_LIGHT_A = ((2.718 * FRAC_L) ./ (K_E * H)) * ...
% (exp(-ALPHA_1)-exp(-ALPHA_0));
%if (LIM_LIGHT_A < 0.5) % LIM_LIGHT_A = 0.5;
%end
AVG_LIGHT = (I_A / (H * K_E)) * (1 - exp(-K_E * H));
LIM_LIGHT_A = AVG_LIGHT / (AVG_LIGHT + K_HS_LIGHT);2
% --- % PROCESS RATE CALCULATION FOR TEMPERATURE
% --- C_P = 1000000;
RHO = 1;
SIGMA = 11.7E-8; %Stefan-Bolzman constant cal / (cm^2 * d * K^4) A = 0.6;
R_L = 0.03;
EMISS_WATER = 0.97;
C_1 = 0.47; %Bowen ratio, mmHg C-1
% Calculate the saturation vapour pressure
E_SAT = 4.596 * exp((17.27 * AIR_TEMP) / (237.3 + AIR_TEMP));
E_AIR = R_H * E_SAT;
% T_D = 237.3 / (17.27/log(E_AIR / 4.596));
E_S = 4.596 * exp((17.27 * TEMP) / (237.3 + TEMP));
HEAT_CAP = RHO * C_P * H;
F_UW = 19.0 + (0.95 * WIND_SPEED * WIND_SPEED);
NET_SOLAR_RAD = J_SN / HEAT_CAP;
ATMOSPHERIC_LONG_WAVE_RAD = (SIGMA / HEAT_CAP) * ...
((AIR_TEMP+ 273).^4) * (A + 0.031 *(E_AIR.^0.5)) * (1 - R_L);
WATER_LONG_WAVE_RAD = EMISS_WATER * ...
(SIGMA / HEAT_CAP) * ((AIR_TEMP + 273).^4);
CONDUCTION = C_1 * F_UW * (TEMP - AIR_TEMP);
EVAPORATION = F_UW * (E_S - E_AIR);
% --- % END OF PROCESS RATE CALCULATION FOR TEMPERATURE
% ---
% --- % PROCESS RATE CALCULATIONS FOR PHYTOPLAKTON
% --- if (OPTIONS == 1)
% Calculate the TEMPerature limitation LIM_TEMP_A = (THETA_K_G .^(TEMP - 20));
% Calculate the light limitation INORG_SOLID = 0;
DETRITUS = 0;
CHLA = (PHYC / C_TO_CHLA) * 1000;
K_E_P = K_E_W + (0.052 * INORG_SOLID) + (0.174 * DETRITUS);
K_E = K_E_P + (0.0088 * CHLA) + (0.054 *(CHLA .^ (2/3)));
AVG_LIGHT = (I_A / (H * K_E)) * (1 - exp(-K_E * H));
LIM_LIGHT_A = AVG_LIGHT / (AVG_LIGHT + K_HS_LIGHT);
LIM_LIGHT_A = real(LIM_LIGHT_A);
% Calculate the nutrient limitation DIN = NH4N + NO3N;
LIM_NUT_A = min((DIN / (K_H_N_A + DIN)), (PO4P / (K_H_P_A + PO4P)));
GROWTH = K_G_20 * LIM_TEMP_A * min(LIM_LIGHT_A, LIM_NUT_A) * PHYC;
else
GROWTH = 0;
V_S_A_20 = 1.0;
K_R_20 = K_R_20 * 2;
end
RESPIRATION = K_R_20 * (THETA_K_R .^(TEMP - 20)) * PHYC;
SETTLING_A = (V_S_A_20 / H) * (THETA_V_S_A_20 .^(TEMP - 20)) * PHYC;
% --- % END OF PROCESS RATE CALCULATIONS FOR PHYTOPLAKTON
% ---
% --- % PROCESS RATE CALCULATIONS FOR NITROGEN CYCLE
% --- % Organic Nitrogen
RESPIRATION_N = N_TO_C * RESPIRATION;
LIM_ORGN_MINER = ORGN / (ORGN + K_H_ORGN_MINER);
LIM_ORGN_SETTL = ORGN / (ORGN + K_H_ORGN_SETTL);
MINERALIZATION_N = K_MIN_N * (THETA_K_MIN_N .^(TEMP - 20)) * ...
LIM_ORGN_MINER * ORGN;
SETTLING_N = (V_S_N_20 / H) * (THETA_V_S_N_20 .^(TEMP - 20)) * ...
LIM_ORGN_SETTL * ORGN;
% NH4N
LIM_TEMP_NITR_1 = THETA_NITR_1 .^(TEMP - 20);
LIM_NH4N_NITR_1 = NH4N / (K_H_NH4N_NITR_1 + NH4N);
LIM_DOXY_NITR_1 = DOXY / (K_H_DOXY_NITR_1 + DOXY);
NITRIFICATION_1 = K_NITR_1_20 * LIM_TEMP_NITR_1 * ....
LIM_NH4N_NITR_1 * LIM_DOXY_NITR_1;
SEDIMENT_RELEASE_N = 0;
PREF_NH4N_GROWTH = NH4N / (NH4N + K_H_PREF_NH4N_GROWTH_NH4N);
GROWTH_NN4N = N_TO_C * GROWTH * PREF_NH4N_GROWTH;
% NO2N
LIM_TEMP_NITR_2 = THETA_NITR_2 .^(TEMP - 20);
LIM_NO2N_NITR_2 = NO2N / (K_H_NO2N_NITR_2 + NH4N);
LIM_DOXY_NITR_2 = DOXY / (K_H_DOXY_NITR_2 + DOXY);
NITRIFICATION_2 = K_NITR_2_20 * LIM_TEMP_NITR_2 * ....
LIM_NO2N_NITR_2 * LIM_DOXY_NITR_2;
% NO3N
LIM_TEMP_DENIT = THETA_K_DENIT .^(TEMP - 20);
LIM_O2_DENIT = K_HS_DOXY_DENIT / (DOXY + K_HS_DOXY_DENIT);
GROWTH_NO3N = N_TO_C * GROWTH * (1 - PREF_NH4N_GROWTH);
DENITRIFICATION = K_DENIT * LIM_O2_DENIT * LIM_TEMP_DENIT;
% --- % END OF PROCESS RATE CALCULATIONS FOR NITROGEN CYCLE
% --- % --- % PROCESS RATE CALCULATIONS FOR PHOSPHORUS CYCLE
% --- % Organic Phoshorus
LIM_ORGP_MINER = ORGP / (ORGP + K_H_ORGP_MINER);
LIM_ORGP_SETTL = ORGP / (ORGP + K_H_ORGP_SETTL);
RESPIRATION_P = P_TO_C * RESPIRATION;
MINERALIZATION_P = K_MIN_P * (THETA_K_MIN_P .^(TEMP - 20)) * ...
LIM_ORGP_MINER * ORGP;
SETTLING_P = (V_S_P_20 / H) * (THETA_V_S_P_20 .^(TEMP - 20)) * ...
LIM_ORGP_SETTL * ORGP;
% Phosphate Phosphorus SEDIMENT_RELEASE_P = 0;
GROWTH_P = P_TO_C * GROWTH;
% --- % END OF PROCESS RATE CALCULATIONS FOR PHOSPHORUS CYCLE
% ---
% --- % PROCESS RATE CALCULATIONS FOR ORGANIC MATTER AND DISSOLVED OXYGEN % --- % Carbonaceous BOD
LIM_CBOD_MINER = CBOD / (CBOD + K_H_CBOD_MINER);
LIM_CBOD_SETTL = CBOD / (CBOD + K_H_CBOD_SETTL);
LIM_O2_MINER = DOXY / (DOXY + K_H_DOXY_MINER);
MINERALIZATION_O2 = K_MIN_C * (THETA_K_MIN_C .^(TEMP - 20)) * ...
LIM_CBOD_MINER * LIM_O2_MINER * CBOD;
SETTLING_O2 = (V_S_C_20 / H) * (THETA_V_S_C_20 .^(TEMP - 20)) * ...
LIM_CBOD_SETTL * CBOD;
% Dissolved Oxygen if (OPTIONS == 1)
C_SAT_O2 = DO_SATURATION(TEMP, SALT, ELEV);
if (K_A_20 > 0)
K_A = K_A_20 * (THETA_K_A_20 .^(TEMP - 20));
else
KA_WIND = KAWIND (WIND_SPEED, TEMP, AIR_TEMP, H, WTYPE);
KA_HYDRA = KAHYDRA(H, CURRENT_VEL, (TEMP - 20));
if (KA_WIND > KA_HYDRA) K_A = KA_WIND;
else
K_A = KA_HYDRA;
end end
REAERATION = K_A * (C_SAT_O2 - DOXY);
else
REAERATION = 0;
end
SOD = 0;
GROWTH_O2 = O2_TO_C * GROWTH;
RESPIRATION_O2 = O2_TO_C * RESPIRATION;
NITRIFICATION_1_O2 = 3.43 * NITRIFICATION_1;
NITRIFICATION_2_O2 = 1.14 * NITRIFICATION_2;
% --- % PROCESS RATE CALCULATIONS FOR ORGANIC MATTER AND DISSOLVED OXYGEN % --- % Phytoplankton
DERIVS(1) = GROWTH - RESPIRATION - SETTLING_A;
SETTLING_DERIVS(1) = SETTLING_A;
% Organic Nitrogen
DERIVS(2) = RESPIRATION_N - MINERALIZATION_N - SETTLING_N;
SETTLING_DERIVS(2) = SETTLING_N;
% Ammonia Nitrogen
DERIVS(3) = MINERALIZATION_N - NITRIFICATION_1 + ...
SEDIMENT_RELEASE_N - GROWTH_NN4N;
SETTLING_DERIVS(3) = 0;
% Nitrite Nitrogen
DERIVS(4) = NITRIFICATION_1 - NITRIFICATION_2;
SETTLING_DERIVS(4) = 0;
% Nitrate Nitrogen
DERIVS(5) = NITRIFICATION_2 - GROWTH_NO3N - DENITRIFICATION;
SETTLING_DERIVS(5) = 0;
% Organic Phosphorus
DERIVS(6) = RESPIRATION_P - MINERALIZATION_P - SETTLING_P;
SETTLING_DERIVS(6) = SETTLING_P;
% Phosphate Phosphorus
DERIVS(7) = MINERALIZATION_P + SEDIMENT_RELEASE_P - GROWTH_P;
SETTLING_DERIVS(7) = 0;
% Carbonaceous BOD
DERIVS(8) = RESPIRATION_O2 - MINERALIZATION_O2 - SETTLING_O2;
SETTLING_DERIVS(8) = SETTLING_O2;
% Dissolved Oxygen
DERIVS(9) = REAERATION - MINERALIZATION_O2 - SOD + GROWTH_O2 - ...
RESPIRATION_O2 - NITRIFICATION_1_O2 - NITRIFICATION_2_O2;
SETTLING_DERIVS(9) = 0;
% Temperature if (OPTIONS == 1)
DERIVS(10) = NET_SOLAR_RAD + ATMOSPHERIC_LONG_WAVE_RAD - ...
WATER_LONG_WAVE_RAD - CONDUCTION - EVAPORATION;
else
DERIVS(10) = 0;
end
SETTLING_DERIVS(10) = 0;
if (sum(isnan(DERIVS)) > 0) fprintf('\n\n\n');
fprintf('---\n');
fprintf('!!! ERROR IN WQ_KINETICS_1 !!!\n');
fprintf('---\n');
fprintf('\n');
fprintf('Derivative for PHYC : %f\n', DERIVS(1));
fprintf(' PHYC : %f\n', PHYC);
fprintf('Derivative for ORGN : %f\n', DERIVS(2));
fprintf(' ORGN : %f\n', ORGN);
fprintf('Derivative for NH4N : %f\n', DERIVS(3));
fprintf(' NH4N : %f\n', NH4N);
fprintf('Derivative for NO2N : %f\n', DERIVS(4));
fprintf(' NO2N : %f\n', NO2N);
fprintf('Derivative for NO3N : %f\n', DERIVS(5));
fprintf(' NO3N : %f\n', NO3N);
fprintf('Derivative for ORGP : %f\n', DERIVS(6));
fprintf(' ORGP : %f\n', ORGP);
fprintf('Derivative for PO4P : %f\n', DERIVS(7));
fprintf(' PO4P : %f\n', PO4P);
fprintf('Derivative for CBOD : %f\n', DERIVS(8));
fprintf(' CBOD : %f\n', CBOD);
fprintf('Derivative for DOXY : %f\n', DERIVS(9));
fprintf(' DOXY : %f\n', DOXY);
fprintf('Derivative for TEMP : %f\n', DERIVS(10));
fprintf(' TEMP : %f\n', TEMP);
fprintf('\n');
fprintf('GROWTH : %f\n', GROWTH);
fprintf(' K_G_20 : %f\n' , K_G_20);
if (OPTIONS == 1)
fprintf(' LIM_TEMP_A : %f\n' , LIM_TEMP_A);
fprintf(' THETA_K_G : %f\n', FRAC_L);
fprintf(' TEMP : %f\n', TEMP);
fprintf(' AIR_TEMP : %f\n', AIR_TEMP);
fprintf('\n');
fprintf(' LIM_NUT_A : %f\n' , LIM_NUT_A);
fprintf('\n')
fprintf(' LIM_LIGHT_A : %f\n' , LIM_LIGHT_A);
fprintf(' FRAC_L : %f\n', FRAC_L);
fprintf(' K_E : %f\n', K_E);
fprintf(' H : %f\n', H);
fprintf(' ALPHA_1 : %f\n', ALPHA_1);
fprintf(' ALPHA_0 : %f\n', ALPHA_0);
fprintf(' exp(-ALPHA_1)-exp(-ALPHA_0) : %f\n', ...
exp(-ALPHA_1)-exp(-ALPHA_0));
fprintf(' I_A : %f\n', I_A);
end
fprintf('\n');
fprintf('RESPIRATION : %f\n', RESPIRATION);
fprintf('SETTLING_A : %f\n', SETTLING_A);
fprintf('MINERALIZATION_N : %f\n', MINERALIZATION_N);
fprintf('RESPIRATION_N : %f\n', RESPIRATION_N);
fprintf('MINERALIZATION_N : %f\n', MINERALIZATION_N);
fprintf('SETTLING_N : %f\n', SETTLING_N);
fprintf('MINERALIZATION_N : %f\n', MINERALIZATION_N);
fprintf('NITRIFICATION_1 : %f\n', NITRIFICATION_1);
fprintf('SEDIMENT_RELEASE_N : %f\n', SEDIMENT_RELEASE_N);
fprintf('GROWTH_NN4N; : %f\n', GROWTH_NN4N);
fprintf('NITRIFICATION_1 : %f\n', NITRIFICATION_1);
fprintf('NITRIFICATION_2 : %f\n', NITRIFICATION_2);
fprintf('NITRIFICATION_2 : %f\n', NITRIFICATION_2);
fprintf('GROWTH_NO3N : %f\n', GROWTH_NO3N);
fprintf('DENITRIFICATION : %f\n', DENITRIFICATION);
fprintf('RESPIRATION_P : %f\n', RESPIRATION_P);
fprintf('MINERALIZATION_P : %f\n', MINERALIZATION_P);
fprintf('SETTLING_P : %f\n', SETTLING_P);
fprintf('MINERALIZATION_P : %f\n', MINERALIZATION_P);
fprintf('SEDIMENT_RELEASE_P : %f\n', SEDIMENT_RELEASE_P);
fprintf('GROWTH_P : %f\n', GROWTH_P);
fprintf('RESPIRATION : %f\n', RESPIRATION);
fprintf('MINERALIZATION_O2 : %f\n', MINERALIZATION_O2);
fprintf('SETTLING_O2; : %f\n', SETTLING_O2);
fprintf('REAERATION : %f\n', REAERATION);
fprintf('MINERALIZATION_O2 : %f\n', MINERALIZATION_O2);
fprintf('SOD : %f\n', SOD);
fprintf('GROWTH_O2 : %f\n', GROWTH_O2);
fprintf('RESPIRATION_O2 : %f\n', RESPIRATION_O2);
fprintf('NITRIFICATION_1_O2 : %f\n', NITRIFICATION_1_O2);
fprintf('NITRIFICATION_2_O2 : %f\n', NITRIFICATION_2_O2);
fprintf('NET_SOLAR_RAD : %f\n', NET_SOLAR_RAD);
fprintf('ATMOSPHERIC_LONG_WAVE_RAD : %f\n', ATMOSPHERIC_LONG_WAVE_RAD);
fprintf('WATER_LONG_WAVE_RAD : %f\n', WATER_LONG_WAVE_RAD);
fprintf('CONDUCTION : %f\n', CONDUCTION);
fprintf('EVAPORATION : %f\n', EVAPORATION);
fprintf('\n');
fprintf('OPITONS : %d\n', OPTIONS);
error('One or more of the kinetic derivatives is not a number\n');
end end