Kimyasal Mühendislik Uygulamalarında Kompleks Data Processing için Teknikler
Table of Contents
Giriş: Kimyasal Mühendislik Data Processing'daki Önemlilik Nedenleri
Kimyasal mühendislik uygulamaları, hem voluminous hem de hesaplamalı yoğun olan verileri rutin olarak ele alır. Termodinamik mülk hesaplamaları, reaksiyon kinetik simülasyonlar, süreç optimizasyonu ve gerçek zamanlı sensör verileri pilot bitkiler veya tam ölçekli operasyonlardan elde edilen tüm talep algoritmaları sadece doğru değil, aynı zamanda kullanılabilir ve verimli hale getirir. Bu sistemler karmaşık bir şekilde yeniden yapılandırmaya eğilimlidir: bu tür bir dizi işlem için daha hızlı bir şekilde yeniden yapılandırmak için gerekli olan matematiksel yöntemlere izin vermek için sistemli yöntemler.
Kimyasal Mühendisliğinde Yeniden Bağışlama ihtiyacını anlamak
Kimyasal mühendislikte veri işlemenin doğası temel olarak tipik bir iş veya web uygulamalarından farklıdır. Bir reaksiyon kinetik simülasyonu düşünün: kod, sabit bir veri kümesi ile sabitlenebilir bir zaman adımını kullanarak sert bir normal diferansiyel denklemleri (ODEs) çözümü içerebilir.Yeni bileşenler eklendiğinde, her bir işlev değerlendirmenin yanlış bir şekilde kodlanmış bir hata verileri yanlış bir şekilde hesaplarken, bir hata hattının tamamen yanlış bir şekilde hesaplaması ile birlikte uygulanabilir.
Bu ağrı puanlarını daha modüler, okunabilir ve adapte edilebilir bir şekilde ele alır. Daha da estetik, daha sonra değiştirip, genişleten mühendislere bilişsel yükü azaltır veya kodla yapılan düzenlemelerde, geçerli olan kodlar veya petrokimyalar gibi düzenlenmiş endüstriler, iyi yapılandırılmış kodlar için gerekli olan kodlar, performansları hızlandırır: Tekrarlayıcılar genellikle tek bir şekilde entegre eder: Tekrarlanan bir uygulama için sürekli olarak veri yapıları değiştirmeli ve devre dışı bırakmalı.
Kimyasal Mühendislik Örnekleri ile Ortak Emekli Teknikleri
modülerizasyon: Büyük Simülasyon Modülleri kırınıyor
En etkili refaksiyon hareketlerinden biri, büyük bir dosyaya yüklenen verileri ayrı bir modüle ayırarak, tek başına hesaplamalı modüller için bir CSV okuyucuyu kolayca takas edebilirsiniz. Örneğin, tipik bir toplu reaktör modeli veri yükleme, mülk tahminleri, ODE çözümü ve reaksiyon hızı sabitleri - bu modüler yaklaşım sadece basitleştirme testine göre (özelleştirme) aynı şekilde devre dışı bırakmak için bir modül oluşturabilirsiniz.
Bir beton örneği birçok Python tabanlı kimyasal mühendislik çerçevesinde görülebilir: Her sınıf arasında tek bir ESD 1'e sahip olmak yerine, yeni bir özellik uygulamak ve işbirliğini kolaylaştırmak için zaman ayırın - birden fazla mühendis aynı anda ayrı modüllerde çalışabilir.
Bakup Masaları ve Polymorphism ile Örneksel Mantık
Kimyasal mühendislik kodu genellikle farklı bileşenleri, birim işlemleri veya mülk yöntemleri işlemek için karmaşık koşullu zincirler içerir. Örneğin, aktivite katlarını hesaplayan bir rutin, NRTL, UNIQUAC, Wilson veya Van Laar modelleri için zincir oluşturabilir. daha fazla model ek olarak, bu zincir bir görünüm tablosu ile değiştirilemez.Refaksiyon tablosu ile değiştirin - ya da bir sözcü veya fabrika modeli - ya da bir grafik model adı nesneleri işlevleri veya Java, bu, bu, sanal fonksiyonlar veya hata uygulamaları ile uygulanabilir.
activity_models = {
'NRTL': calculate_nrtl,
'UNIQUAC': calculate_uniquac,
'Wilson': calculate_wilson,
'Van Laar': calculate_van_laar
}
Sonra arama kodu sadece İZFLT:7'i yapar. Bu durum zincirini ortadan kaldırır, yeni modeller ekliyor (sadece yeni bir giriş ekler), ve bir mola veya mantıksal hataları unutma riskini azaltır. Aynı teknik birim dönüşümü için çalışır, denklem-devlet seçimi ve reaksiyon kinetik ifadeler.
Performans ve Clarity için Veri Yapıları
Veri yapıları doğrudan kimyasal mühendisliği kodunun hızını ve kullanılabilirliğini etkiler. Ortak bir anti-pattern paralel listeler olarak fiziksel özellikleri temsil eder: 03. Bu, indekslere güvenmek, filtrelemek veya gruplama gibi işlemleri basitleştirir. büyük ölçekli simülasyonlar için, birçok mülk hesaplamaları için NumPy dizilerini kullanarak, veri öz değerlendirmelerini yapar.
Başka bir optimizasyon, arama operasyonları için doğru veri yapısını seçiyor. Bir simülasyon defalarca sorgulayıcı özellikleri (molecular ağırlık, kritik sıcaklık, asantrik faktör), bir liste tabanlı tarama O (n) bir bileşen tarafından anahtarlanan bir şekilde, özellikle de iteratif çözücüler veya Monte Carlo simülasyonları temsil eden triksler için - en yüksek çözünürlükte.
Yeniden kullanılabilirlik için Fonksiyonlar ve Yöntemler
Uzun fonksiyonlar kötü korunmuş kod bir salondır. Kimyasal mühendislikte, tek bir işlev bir boyutsız sayıyı hesaplayabilir (Reynolds, Prandtl, Damköhler), ve aynı hesaplama on farklı yerde görünebilir. Kopyalama-paste, üniformaya yol açabilir. Boyutsuz sayılar, bir sürüm biraz farklı bir vizasyon işlevi görür.Refaksiyonelleme işlevine karşı bir standalone işlevine geri yükleme.
Intermediate Değişkenleri Clarity için tanıtın
Kompleks bilimsel formüller tek bir ifade olarak yazılabilir. Örneğin, Van der Waals eyalet denklemi: 03.03.2012) Yeterli miktarda, ancak birden çok terimler koşullarla birleştirilirken - Bu sadece kendi kodun-Redlich-Kwong veya Peng-Robinson--- da, kod, el yazısına karşı hesaplamaları bozmak için zorlaşır.
Duplication'ı (DRY Prensi) Yeniden Üretmek (The DRY Principles)
Duplication özellikle kimyasal mühendislik kodbazları ile aynı özellik korelasyonu uygular. Örneğin, Antoine denklemi bir reaktör modülünde kodlanabilir, bir distillasyon modülü ve bir flaş hesaplama modülü, her biri farklı değişken isimler ve birimlerle aynı şekilde uygulanır. korelasyon parametreleri güncellenirken, mühendisler bu tür mantığı dramatik bir şekilde azaltır ve Antoine hesaplamasını merkezi bir fayda işlevine veya sınıfa kadar değiştirir.
Kimyasal Mühendislik Yazılımları için Gelişmiş Yeniden Düzenlemeler
Tasarım Desenleri Uygulayın
Tasarım kalıpları, yapısal sorunları tekrarlamak için kanıtlanmış çözümler sunar. Kimyasal mühendislikte, [[DüzDÜT:0)Strateji modeli), birden fazla termodinamik model veya kinetik ifadeler işlemek için paha biçilmezdir. Bu, model hesaplamadan çok ayrı bir model seçimi tanımlamak, mevcut kodu değiştirmeden yeni modeller eklemek kolaylaşır.
[FONT=0]Observer modeli[[[Dönetici:0]Hebserver modeli [Dönetici: Pilot bir bitkide, merkezi bir süreç kontrol sistemi sıcaklık, basınç ve düzinelerce sensörden elde edilebilir. Kontrol döngüsüne sahip olmak yerine, her sensöre (subject) kayıtlı gözlemcileri (alarm eller, veri loggerları, panoları, panoları, panel güncellemelerini) daha fazla kontrol etmek için sistemden elde etmek.
[FONT=0] Üst düzeye çıkan bir grafik, bir yapılandırma dosyasından birim işletim nesneleri oluşturabilir.A flowsheet Simulator, ayırıcılar ve ısı değiştiricileri. Bir fabrika yöntemi XML sınıfı (örneğin, 03.g., 03.15).
Miraç Kod (Fortran, C++, MATLAB)
Birçok kimyasal mühendislik bölümü ve şirket hala en iyi şekilde "strangler" veya C++ kodu temel termodinamik ve kinetik hesaplamalar için güvenmektedir. Bu nedenle Python ile entegrasyon için zorlanır, ancak çoğu zaman modern Python veya .NET iş akışları ile entegrasyon için gerekli olan. Güvenli bir yaklaşım, ince bir API'de (örneğin, Fortran veya f2py kullanarak) bir dizi düzeltmeyi kullanarak, gerçek zamanlı olarak, bir sabit bir kod kullanarak, en iyi şekilde entegre edilir.
MATLAB kodu için, refaksiyon genellikle senaryoları işlevlerine dönüştürmek, parametreleri açıkça geçen parametreleri ortadan kaldırmak ve mülk verileri için hücre dizilerini yerine yapılandırarak yapılandırılabilir. kodu modüler olduğunda, lisans maliyetlerini azaltmak ve işbirliğini artırmak için limana çıkabilir.
Performans Refaksiyon: Profiling ve Vectorization
Kimyasal mühendislik simülasyonları, özellikle dinamik optimizasyon veya stochastic yöntemleri içerdikleri zaman, kodu daha fazla okumadan önce tekrarlanabilir hale getirmek için yeniden yapılandırılabilir.Bir profilli kullanın (örneğin, Python'un 03.03.2012).
- [FONT:0)Vectorization:[Dönetici:[Dönetici:0)) Basit döngüler, NumPy veya MATLAB vektörize işlemleri ile diziler üzerinde. Örneğin, binlerce puan için hesaplama ısı kapasitesi algT:18 döngü yerine tek bir işlem olarak yapılabilir.
- [FONT:0)Öyleleme:[Döneticileri, Bessel işlevleri veya interpolated buhar masaları gibi sık sık kullanılan işlevlerin ön göz önünde bulundurmak için önbellek tabloları.
- [FONT:0) Parallelizasyon:[Dönetici:[Dönetici:0)[Dönetici:0) Parallelizasyon:[Dönetici:[Dönetici: 0,4) Hassasiyet analizinde birden çok simülasyon vakalarını çalıştırma gibi, çok fazla işleme veya çok fazla işlemeye yardımcı olmak.
- [FONT:0)Algorithm substitution:), Yavaş bir ODE çözücü (bitki Euler) bir a Adaptatif çözücü (veya daha verimli bir kapalı yöntem) ile bir refaksiyon hesabı.
Performans rektörlüğü her zaman ölçümler tarafından yönlendirilmelidir, tahminler değil. Her değişiklikten sonra, iyileşmeyi doğrulamak ve doğruluğu sağlamak için yeniden profiller.
Kimyasal Mühendisliğinde Yeniden İğrenme için Araçlar ve En İyi Uygulamalar
IDEs ve Refaksiyon Destek
PyCharm, Visual Studio ve IntelliJ gibi modern IDE'ler, otomatik rektör araçları sağlar - yeniden adlandırılmış yöntem, imzalar değiştirin - bu da mekanik çabayı ve hataların riskini azaltır.For Fortran code, which are common used in Chemical Engineering research, rephaneing is more manual but same factors to functions, then move the functions into a separate modülü. Tools likeFLT:19 anduring:|xbbbxbxbxbxbxs|spektran kodu için, Photran (anköpektif) temel refaksiyon desteği sunar, ancak manuel olarak yeniden yapılandırmaya ihtiyaç duyar.
Version Control and Code Yorumlar
Sürüm kontrolü olmadan yeniden faktörleme, perilous.Use Git veya benzer bir sistem küçük, mantıksal artışlarda tüm değişiklikleri taahhüt etmek için.Her bir mesaj, tüm test vakaları için orijinal olarak nasıl yeniden faktörlenmiş ve neden. Code reviews with developers - özellikle de kimyasal domain - sayısal davranışlarda yakalamaya yardımcı olabilir.
Güvenlik için Test
Bir güvenlik ağı olmadan, refaksiyon risklidir. Herhangi bir koda dokunmadan önce kapsamlı bir test paketi inşa edin. Kimyasal mühendislik uygulamaları için, bu demektir:
- [FONT=0)Her küçük fonksiyon için (örneğin, Antoine denklem, Reynolds numarası, spesifik entalpy).
- [FONT:0)Integration testleri [[Dönetici: 1 ) Daha büyük iş akışları için (örneğin, bir reaktörün tam simülasyonu, son dönüşüm ve sıcaklıkla bilinen bir kritere kıyasla).
- [FONT=0)Regresyon testleri [[Dönetici:0) Otomatik olarak geceleyin çalıştırın ve çıktıları karşılaştırın (toplam değerleri, arsalar) yaklaşık eşitlik ile ilgili olarak (pytest) araçlar önemlidir.
Yeniden deneme, her değişiklikten sonra tam test paketini çalıştırın. Bir test başarısız olursa, refaksiyon ayarlanmalıdır veya testin güncellenmesi gerekir ( beklenen çıktının yasal olarak değiştirildiği gibi). Teste dayalı geliştirme (TDD) yeni kod için son derece önerilir, ancak miras sistemleri için, mevcut davranışı yakalamak için yapılan testler herhangi bir yeniden faktörlemeden önce ilk adımdır.
Kimyasal Mühendislik Uygulamalarından Gerçek Dünya Örnekleri
Batch Rekriptör Simülasyonu
Kompleksli bir makineyi karmaşık bir kinetiği ile simüle eden bir miras senaryosu düşünün. Orijinal senaryo 800 satır uzunluğundadır, sıcaklık ve baskı için küresel değişkenleri kullanır ve hiçbir işlevi yoktur - her şey bir senaryoda yapılır.Rektör yolculuğu, üç iyi tanımlanmış fonksiyonlarla başlar, her biri ısı bakiyesini ayrı bir işleve çıkar.
Bir Distillation Column Modelini İyileştirmek
C++'da bir distillasyon sütun simülasyonu manuel hafıza yönetimi (yeni /delete), faz özellikleri için ham diziler ve farklı Konsül türleri için büyük bir GÜNCÜŞÜNCÜŞÜNCÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞ
Bir Süreç Akışı Hesap Çözme
Bir Python tabanlı akış tablosu kimyasal bitki için çözülürdü: Her birim işlemi, aritme yöntemi ile bir sınıfdı, ancak birimler arasındaki basit veri akışı, kompozisyon, sıcaklık, baskı ile kontrol edildi.Ana çözücü döngüsü, grafik gösterimi (örneğin, üstolojiyi açıkça tanımladı.) Her bir birim aynı şekilde paylaşılan bir hatanın ardından, veri akışının nesnelliğini kabul etmesi ve geri dönmesine neden oldu.
Sonuç: Habit'i yeniden ele geçir
Kimyasal mühendislikteki veri işleme, fikrenin kaldırılması ve tasarım modellerinin kaldırılması, sağlam, verimli bir yönteme dönüştüğüne dair örneklerdir - bu, yazılımların geleceği için bir yatırımdır. Modülerizasyon, veri yapısı optimizasyonu, ve çoğu zaman performans kazanımlar elde etmek için en iyi uygulama, günlük bir çalışmaya yeniden dahil etmek için bir araya gelir.