מבוא: מדוע מתן חומרים בעיבוד נתונים להנדסה כימית

יישומים הנדסיים כימיים מטפלים באופן שגרתי בנתונים שהיא גם אינטנסיבית וגם אינטנסיבית חישובית. חישובים של הנכס התרמודינמיקה, סימולציות קינטיות תגובה, אופטימיזציה תהליכים ונתונים בזמן אמת מצמחים או תפעול בקנה מידה מלא כל אלגוריתמים הביקושים שאינם רק נכונים אלא גם שומרים על בעיות ספציפיות של זמן החלמה, כמו מערכות אלה מתפתחות, הקוד המקורי נוטה לצבור מורכבות: מצבים מקוננים עבור פעולות מרובות, פונקציות מונוליטיות כי הם לא רק שילוב נתונים גלגולים מתקדמים יותר, ללא שינוי יעיל יותר.

הבנת הצורך בהנדסת כימיקלים

האופי של עיבוד נתונים בהנדסה כימית שונה באופן יסודי מעסקים טיפוסיים או יישומי אינטרנט.חשב סימולציה קינטית תגובה: הקוד עשוי לכלול פתרון משוואות שונות רגילות (ODEs) באמצעות שינוי זמן הסתגלות, שבו כל הערכה פונקציה מכנה חבילת רכוש אשר משחזרת קבצי חשמל לא נכונים מראש - כלומר, ייתכן שחבילת נכסים זו הוחלפה על ידי סדרה של קידוד חדש לגמרי, כמו גם תכונות קודמות, יכול להוסיף באופן קבוע של שימוש לא מדויק.

(הספק כתובות אלה נקודות כאב על ידי ביצוע קוד יותר מודולרי, קריא והתאמה.מעבר לאסתטיקה בלבד, זה מקטין את העומס הקוגניטיבי על מהנדסים אשר חייבים לשנות מאוחר יותר, להרחיב, או ביקורת על הקוד.בתעשיות מוסדרות כמו תרופות או petrochemicals, שבו אימות של סימולציה נדרשת, ללא ספק הנדסת קודים מתקדמים מאיצה את תהליך ההסמכה, שיפור לעתים קרובות: ביצועים כפולים לתוך פונקציות פיתוח אחד, החלמות באופן משמעותי;

טכניקות מספקות עם טכנולוגיות כימיות

מודולים: לשבור את מודולי סימול גדולים

אחד המהלכים היעילים ביותר לשיפוץ הוא חלוקת תסריט סימולציה מונוליטי לחיקוי, מודולים חד-צדדיים חד-צדדיים יחיד.לדוגמה, מודל כור אצווה טיפוסי עשוי לשלב טעינה נתונים, הערכת רכוש, פתרון ODE, ותוצאה מדגימה בקובץ גדול אחד.על ידי הסרת עומס נתונים לתוך מודול נפרד, אתה יכול בקלות להחליף קורא נתונים עבור מסד נתונים ללא פתרון לוגיקה, כמו גם את תפקודים סטנדרטיים אחרים.

דוגמה קונקרטית ניתן לראות במסגרות הנדסיות כימיות מבוססות פייתון: במקום להיות בעל תפקיד יחיד (FLT:1), אשר עושה הכל, מספק שיעורים כמו FLT:2,FLT 3: ו-FLT:4 לכל מחלקה יש ממשק מוגדר היטב, ואת התסריט הראשי פשוט מארגן את זרימת הנתונים ביניהם.

הגדלת לוגיקה תנאי עם שולחנות חיפוש ופולימורפיזם

קוד הנדסה כימית מכיל לעתים קרובות רשתות מורכבות מצב כדי להתמודד עם רכיבים שונים, יחידות פעולות, או שיטות רכוש.לדוגמה, שגרת מחשבת את הפעילות coefficient עשוי להשתמש ארוך טווח FLT:5 שרשרת עבור NRTL, UNIQUAC, וילסון, או ואן לאר מודלים. כמו יותר מודלים נוספים, שרשרת זו הופכת ללא מחוסמת וטעמה - + צורך להחליף אותה עם מראה של פונקציות פשוטות או פורמט זה יכול להיות פועל: או פורמט C.

activity_models = {
 'NRTL': calculate_nrtl,
 'UNIQUAC': calculate_uniquac,
 'Wilson': calculate_wilson,
 'Van Laar': calculate_van_laar
}

לאחר מכן קוד הקריאה רק עושה את 7 (הפסקה 7) זה מבטל את שרשרת המצב, מפשט מודלים חדשים (רק להוסיף כניסה חדשה), ומפחית את הסיכון של שכחה או לייצר שגיאות לוגיות.אותה טכניקה עובדת עבור המרת יחידה, משוואה-ofstate בחירה, וביטויים קינטיים תגובה.

אופטימיזציה של מבנה נתונים עבור ביצועים וקלרנס

מבני נתונים משפיעים ישירות הן על המהירות והן על התחזוקה של קוד הנדסה כימית. an Common Anti-pattern מייצג תכונות פיזיות כמו רשימות מקבילות: FLT:8 [הקוד הזה מחייב את הקוד להסתמך על מעקב אחר אינדקס, אשר הוא שופע כאשר הרשימות מופצות או מסונן.מספקות לרשימה של דיפרנציות, או טוב יותר, פנדות נתוניםFrame, הופך את הנתונים לקידוד עצמי של נתונים וניתוקציה מחדש, כמו סימולציות גדולות, כגון פעולות מקודמות, או סימולציות, או מקודמות, כגון סימולציות, או סימולציות של קבוצות סימולציות, או סימולציות, או סימולציות, או סימולציות, או סימולציות, או סימולציות, או יותר, או יותר, או סימולציות של ציוד סימולציות של ציוד סימולציות של ציוד סימולציה של ציוד סימולציות של קבוצות סימולציה של קבוצות סימולציות של נתונים ממות, או יותר, או יותר, או יותר, או יותר, או יותר, או יותר, או יותר, או סימולציות של ציוד סימולציות לסינון נתונים סימולציות של נתונים סימולציות של סימולציות של סימולציות של סימולציות של

אופטימיזציה נוספת היא בחירת מבנה הנתונים הנכון עבור פעולות בדיקת מידע.כאשר סימולציה שוב ושוב שאילתות תכונות רכיב (משקל מולקולרי, טמפרטורה קריטית, גורם מרכזי), סריקה מבוססת רשימה היא O(n) בעוד מילון מפתח על ידי שם הרכיב הוא O (1), באופן דומה, עבור מזחלות ספירות ספירות המייצגות ריכמטיקה תגובה - שבו רוב הערכים הם אפס - באמצעות אפס - באמצעות FLT:9 מגרות מפחיתות עקבות זיכרון ומהירויות ליניאריות במיוחד עבור שינוי נתונים ראשוניות.

מיצוי פונקציות ושיטות ליעילות

פונקציות ארוכות הן סימן ההיכר של קוד שנשמר בצורה גרועה. בהנדסה כימית, פונקציה אחת עשויה למקם מספר חסר ממד (ריינלדס, Prandtl, Damköhler), ואותו חישוב עשוי להופיע בעשר מקומות שונים. copy-paste מוביל להפרעות המרה (כל גרסה אחת עשויה להשתמש במבחנים קצת שונה).

היכרות עם מגוון ביניים של קלרנס

נוסחאות מדעיות מורכבות יכולות להיות בלתי ניתנות לקריאה כאשר הן כתובות ביטוי יחיד.לדוגמה, משוואה Van der Waals של המדינה:FLT:11 הוא פשוט מספיק, אבל כאשר תנאים מרובים משולבים עם תנאים - כמו ב-Soave-Redlich-Kwong או Peng-Robinson - הקוד הופך קשה לפיצול חישובים יקרים כאלה על ידי הצגת משתנים בשם קודים בינוניים, אך לא רק כדי לאמת את הקוד התרמו-ידי ה-Edicetroldicetexitation, אלא גם כן, אלא גם כן, אלא גם כן, לעומת זאת, הוא הופך להיות קשה לשכפול של קוד זה.

Reducing Duplication (The DRY Principle)

דופל הוא נפוץ במיוחד בבסיסי הנדסה כימית שבו מודולים שונים ליישם את אותו מתאם רכוש.לדוגמה, משוואה Antoine עבור לחץ vapor עשוי להיות מקודמת מודול כור, מודול השקיה, מודול חישוב פלאש, כל אחד עם מעט שמות משתנים יחידות המרה. כאשר הפרמטרים הקורלציה הם מעודכנים, מהנדסים חייבים למצוא ולעדכן את כל העותקים - מקור בשל של באגים.

אסטרטגיות מתקדמות להנדסת כימיקלים

יישום תבניות עיצוב

תבניות עיצוב מספקות פתרונות מוכחים לבעיות מבניות חוזרות ונשנות.בהנדסת כימיקלים, דפוס ה-FLT:0 (Strategy PatternsFLT:1 הוא בלתי חוקי לטיפול במודלים תרמודינמיקה מרובים או ביטויים קינטיים.במקום מצב עצום, להגדיר ממשק (FLT:13 עם שיטה 14 יישום כיתות נפרדות עבור Van der Waals, Peng-Robinson וכו ', וכו 'הקודים הקיימים כדי לשנות מודלים סטנדרטיים מתאימים לדגם.

ה-FLT:0 (Observer Pattern) הוא שימושי לעיבוד נתונים בזמן אמת.בצמח טייס, מערכת בקרת תהליכים מרכזית עשויה לפקח על טמפרטורה, לחץ ורמת קצב זרימה מעשרים חיישנים במקום שיש אבקת לולאה שליטה כל חיישן, להשתמש דפוס צופה שבו כל חיישן (subject) מחלחל לצופים רשומים (מטפלים, נתונים, לוחות נתונים, מעקב), כאשר הערך הני של מערכת ההפעלה משתנה מעדכון הלוגי של מערכת ההפעלה.

(ב) ניתן ליצור אובייקטים של יחידת הפעלה מקובץ תצורה.ד.פיון גליון זרימה יכול לקרוא קובץ XML המתאר כורים, מפרידים, וחילופי חום. שיטה במפעל מכנה את XML ומשחרר את שיעור ה- Python המתאים (למשל, FLT:15,:15, 15FLT) זה נמנע מהצהרת מפעל גדולה ומעביר את רשימת ההפעלה המרכזית של מערכת ההפעלה, במיוחד כאשר היא מתפתחת, במיוחד כאשר היא מתפתחת, בעיקר כאשר היא מהווה את רשימת פעולות מועילות.

אספקת קוד מורשת (Fortran, C++, MATLAB)

מחלקות הנדסה כימית רבות וחברות עדיין להסתמך על קוד מורשת פורטרן או C++ עבור חישובים ליבת תרמודינמיים וקנטיים.לספק קוד כזה הוא מאתגר אבל לעתים קרובות הכרחי לשילוב עם זרימת עבודה מודרנית פייתון או .NET. גישה בטוחה היא "תבנית סטרנגילר": עטוף את השגרה ב- API דק (למשל, באמצעות ctypes או f2py) כך שניתן לקרוא לה מ-Fithon, לדוגמה, שינוי קוד פתוח, לאחר מכן, או משוואות קוד פתוח במיוחד, לאחר מכן, לאחר מכן, או משוואות קוד פתוח, או משוואות עדכניות, לאחר מכן, כגון COPDIRSTS.

עבור קוד MATLAB, מתן לעתים קרובות כרוך להמיר תסריטים לפונקציות, הסרת משתנים גלובליים על ידי העברת פרמטרים במפורש, ושימוש סוגים מובנה במקום ערכות תאים עבור נתונים רכוש. לאחר הקוד הוא מודולרי, זה יכול להיות מועבר פתוח שפות קוד פתוח, צמצום עלויות הרישוי ושיפור שיתוף פעולה.

ביצוע: פרופ' וקטוריזציה

סימולציות הנדסיות כימיות יכולות להיות יקרות חישוביות, במיוחד כאשר הן כרוכות אופטימיזציה דינמיים או שיטות סטוצ'סטיות.לפני אופטימיזציה, מתן אישור להפוך את הקוד לקריאה יותר גם מקל על פרופיל. השתמש בפרופיל (למשל, Python's olip 17, פרופיל MATLAB, או אינטל VTune עבור C++) כדי לזהות כתמים חמים.

  • (ב) ⁇ :0 (ההההההבאה) ⁇ (ב) ⁇ (ב) ⁇ ⁇ ) ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇
  • (FLT:0)Precomputation: FLT:1 טבלאות חיפוש של Cache עבור פונקציות בשימוש לעתים קרובות, כגון פונקציות Bessel או שולחנות קיטור מקוטבים.
  • (FLT:0)Parallelization: FLT:1 Refactor to use multi-thread or multi-מעבד עבור משימות מקבילות במביכות, כמו הפעלת מספר מקרי סימולציה בניתוח רגישות.
  • (הפסקה:0) אלגורית משנה: ⁇ 1) להחליף מפתר איטי של ODE (תיקון שלב אוילר) עם מפתאם אדפטיטיבי (או שיטה יעילה יותר עבור מערכות נוקשות).

ביצוע חוזר צריך תמיד להיות מונע על ידי מדידות, לא ניחושים.לאחר כל שינוי, פרופיל מחדש לאשר את השיפור ולהבטיח נכונות.

כלים ופרקטיקה הטובה ביותר למתן הנדסה כימית

IDE ו-Refactoring Support

מודרני IDEs כמו PyCharm, Visual Studio, ו- IntelliJ מספקים כלים אוטומטיים המספקים מחדש, שם, תמצית שיטת, שינוי חתימות - אשר להפחית את המאמץ המכאני ואת הסיכון של שגיאות.עבור ספרי ג'ואטר Notebooks, אשר משמשים נרחב במחקר הנדסה כימית, מתן מחדש הוא ידני יותר אבל חשוב באותה מידה להמיר תאים לפונקציות, ולאחר מכן להעביר את הפונקציות לתוך מודול נפרד.

בקרת קוד ו-code Reviews

מתן ללא שליטה בגירסה הוא מזיק.שימוש ב- Git או מערכת דומה לבצע את כל השינויים בעסקאות קטנות ולוגיות.כל הודעה המבוצעת צריכה להבהיר מה היה מספק ומדוע. ביקורות קוד עם עמיתים - במיוחד אלה שמכירים את התחום הכימי - עוזרים לתפוס שינויים בלתי נמנעים בהתנהגות המספרית?

בדיקות בטיחות

ללא רשת בטיחות, מתן סיכון הוא בניית חבילת בדיקה מקיפה לפני נגיעה בכל קוד. עבור יישומים הנדסיים כימיים, זה אומר:

  • (ב) [15] ,"ה'" (ב)"ב[[1924]]]], [[1924]]]], [[1924]]]]]], [[1924]]]], [[1924]]]]]], [[1924]]]]]], [[1924]]]]]]]], [[1924]]]]]]]]
  • (ב) מבחנים:0 (Integration TestingFLT:1 for Large Workflows (למשל, סימולציה מלאה של כור אצווה מההתחלה ועד סופו, השוואת המרה וטמפרטורה סופיים למדד ידוע).
  • (FLT:0) בדיקות רגרסיה (Regression TestingsFLT:1) אשר באופן אוטומטי פועל באופן יומיומי ומשווה תפוקה (ערכים מספריים, מזימות) לבסיס.כלי כמו פי עדות ביחס לשוויון (Ptest.approx) הם חיוניים.

כאשר אנו מספקים, להפעיל את חבילת המבחן המלאה לאחר כל שינוי.אם מבחן נכשל, יש להתאים את החיוב או את הבדיקה יש לעדכן (אם התפוקה הצפויה השתנתה באופן לגיטימי) פיתוח מונע בדיקה (TDD) מומלץ מאוד עבור קוד חדש, אבל עבור מערכות מורשת, בדיקות כיבוד ההתנהגות הקיימת היא הצעד הראשון לפני כל שינוי.

דוגמאות אמיתיות בעולם להנדסת כימיה

מספק תגובה ב- Batch Simulation

שקול תסריט MATLAB מורשת המדמה כור אצווה עם קינטיקה מורכבת.התסריט המקורי הוא 800 שורות ארוך, משתמש במשתנה גלובלי לטמפרטורה ולחץ, ואין לו פונקציות - הכל בתסריט אחד.המסע הממריץ מתחיל על ידי תמצית הביטויים הקינטיים לתוך פונקציה חדשה לגמרי, לאחר מכן תמצית איזון החום לתוך פונקציה נפרדת.

אופטימיזציה של מודל דינקה

סימולציה של עמודה C++ השתמשה בניהול זיכרון ידני (חדש / מחיקה), מערך גלם עבור תכונות שלב, והודעה ענקית של סימולציה 22 עבור סוגים שונים של condenser. Refactoring הציגה את ה-FLT:23 ו-FLT:24, החליף את מתג עם דפוס אסטרטגיה עבור סוגים condenser, והשתמשו ב- RAII (תיקון רכישה ראשונית) כדי לפשט את הזיכרון (המכונה גם כן, ניתן למחוק את ה-reative Model) ולהוסיף יכולת חדשה, כמו גם כן, כמו גם כן, לא ניתן למחוק את אותו מודל חדש, כמו גם כן, כמו גם כן, כמו גם את התמונה, כמו גם כן, כמו גם כן, כמו גם את התמונה, כמו גם את התמונה.

מחיקת מעבד Flowsheet Solver

פלזר גליון מבוסס פייתון עבור צמח כימי גדל באופן אורגני: כל ניתוח יחידה היה שיעור עם שיטת ההרחבה של Python, אבל זרימת הנתונים בין יחידות מנוהלת על ידי מילון גלובלי.הספק הציג ייצוג גרף מתאים (באמצעות FLT:26) אשר הגדיר במפורש את הטופולוגיה המקומית.כל יחידה 27 של יחידה היה מספק לקבל את החזרת אובייקטים (זרם קטן), עם זרם נתונים מופחת, אך ורק לאחר שינוי גרף של לחץ דם משותף, לאחר מכן, לאחר מכן, לאחר מכן, לאחר שינוי גרף של מחזור אחד בלבד, לאחר מכן, לאחר מכן, לאחר מכן, לאחר שהפך לטמפרטורה פשוטה יותר, לאחר מכן, לאחר מכן, לאחר תיקון של 2 גרם לתפקודו של גרף של תיקון של 2.

מסקנה: לעשות שינוי

עיבוד נתונים בהנדסה כימית הוא קריטי מדי כדי להישאר בסבך של קוד ספגטי.הפצה היא לא קבלה של כישלון - זה השקעה בעתיד של התוכנה.מודוליזציה, אופטימיזציה למבנה נתונים, הסרת השכפול, יישום מתחשב של תבניות עיצוב יכול להפוך את סימולציה מתמשכת, איטי לתוך כלי חזק ויעיל.