ايران ويج

نسخه‌ی کامل: اين اولين بمبارونه؟!(يكي براي اين زبان كامپايلر بنويسه!)
شما در حال مشاهده‌ی نسخه‌ی متنی این صفحه می‌باشید. مشاهده‌ی نسخه‌ی کامل با قالب بندی مناسب.
آقا اشكان فرموده‌اند كه ((گسترش منو با پروژه‌هاش بمبارون كرده‌است.)) :wink:
البته من كاري نكردم. سه تا پروژه اول رو براش گفتم. بعد پروژه چهارم رو براش شرح دادم و بعد ميخواستم بگم كه بخدا بانكهاي مترجمه رو هفته آينده مي‌فرستم كه كامل كاملشون كردم و تازه يه چند تاي ديگه هم هست... كه ديدم نه آقا اين اشكان خان گناه داره آدم بامعرفت‌يه اذيت‌اش نكنيم.
الغرض اين كدهايي كه اين پايين مي‌بينيد خيلي خيلي تازه‌اس. يه كم اشكال مشكال داره. در موردش نظر بدين. اول قرار بود اسم اين كدها CChem باشه ولي وقتي نوشتم ديدم بيشتر بيسيك هست ما هم اسمشو گذاشتيم BChem. اولا خدمتتون بگم كه يه برنامه مي خوام براي اين. 8) نترسيد خيلي اطلاعات در مورد اينها درست كردم. وقتي سر شكل و فرم دستور و كامنتها به توافق رسيديم. من اينقدر اطلاعات مي‌دم كه بجاي بمبارون شدن اين سايت درو بشهAmaze اما اين برنامه‌هه بايد اول يك اديتور خوشگل داشته‌باشه براي اينها كه كامنتها رو سبز كنه كلمات كليدي رو آبي كنه و از اينجور چيزها؟! بعد كد رو محاسبه كنه و مقاديري كه به عنوان Vary معرفي شده‌اند رو حساب كنه. اين محاسبات الگوريتمهاي استانداردي داره كه براتون بمرور مي‌گم. ولي ابتدا در مورد كل جمله‌بندي! شكل و شمايل و نحوه نوشتن دستورات نظر بدين. بعد مي‌رسيم به الگوريتمها. راستي هرجاشو نفهميديد فوري همينجا پست بزنيد. :wink:
کد:
/****************************************
/* This is a test of BChem Language
/*     It is a simulator programming    
/*             For Chemical Plant              
/*                      For Piping  
/******************************************
Project Distillation()
    Dim Dty As Duty
    Dimension= English
    With .Dbase
        .Data=PCI
        .IData=156
    End with
    With .Component     /* Definition of Two Component MeOH(Methanol) Water(Water)
        Case 1: "MeOH"
        Case 2: "Water"
    End With
    With .Therodynamic    /* Definition Thermodynamic Banks and Formulation
        .Kvalue(VLE)=NRTL
        .Enth(V)=SRKM
        .Enth(L)=IDEA
        .Dens(V)=SRKM
        .Dens(L)=IDEA
        .Bank=BChem
    End With
    /***************STREAM DEFINTION**********
    Stream L-15    /* Definition the Feed Stream of Disillation Column
        .Temp=150.8        /* Stream Temperature is 150.8 F
        .Pres=15        /* Stream  Pressure is 15 PSIA
        .Phase=M        /* Phase Molar
        .Rate(W)=8        /* Rate= 8 lb
        .Comp(W)=1(2),2(6)      /* MeOH= 2lb, Water=6lb
        .CompMethod=Normalize  /* In Calculation it check the total Sum=100%
    End Stream            /* End of Stream Definition
    /****************COLUMN DEFINTION*********
    Column C-1                /* Definition of the Disillation Column
        .Caption="Column-101"      /* Caption of Column="Column-101"
        .Tray=28                            /* Tray No.=28
        With .Duty        /* Definition the Duties of Disillation Column
            Case 1:1        /* Duty 1=Tray No. 1
            Case 2:28    /* Duty 2=Tray No. 28
        End With
        .Feed("L-15",NotSep).Pres=15    /* Definition the Feed Condition and Press
        .Prod.Over("L-22")=2        /* OverHead Stream=2 lb & Its name "L-22"
        .Prod.Buttom("L-21")=6        /* Buttom Stream=6 lb & Its name "L-21
        .Cond.Bubb=15            /* Condenser Bubble Point=15 PSIA
        .Esti=Conventional        /* Estimation of Calculation=Conventional
        .Spec("L-21",W,1)=0.5        /* Calculation Spect :MeOH in Buttom=0.5 lb
        .Spec("L-22",W,2)=0.5        /* Calculation Spect :Water in OverHead=0.5 lb
        .Vary=Dty            /* Definition the Calculation Variable
        .TolerBubb=0.01            /* Definition the Telorance of Bubb Point Calc.
        .TolerEnth=0.01            /* Definition the Telorance of Enthalpy Calc.
        .Tsize(1,28)=Valve(75)        /* Definition the Type & Size Of Trays
    End Column
    /****************HEATEXCHANGERS DEFINTION********
    HeatExchanger E-1         /* Definition of the Heat Exchanger No. E-1
        .Caption="Ex-102"     /* Caption of HeatExchanger="Ex-102"
        .Config(1,1)=158        /*  Configuration 1 Pass Shell & 1Pass Tube U=158 Btu/lbF
        .Utility(Steam).PSat=147     /* It's Utility=Steam Saturated=147PSIA
        .Attach("C-1")=Rebuiler     /* It is attached to Column C-1 As Rebuiler
    End HeatExchanger
    HeatExchanger E-2
        .Caption="Ex-103"
        .Config(1,1)=123
        .Utility(Water).TIN=77        /* It's Utility=Water Inlet Temp=77F
        .Utility(Water).TOUT=95        /* It's Utility=Water Outlet Temp=95F
        .Attach("C-1")=Condenser        /* It is attached to Column C-1 As Condenser
    End HeatExchanger
End Project
حقيقت من هيچي سر در نيوردم :cry: ميشه يه خورده بيشتر توضيح بدي :cry: :?:
اميرجان خوب كردي كه اينو پرسيدي. من يه همكاري دارم مي‌گه مهندس اشتباه نمي‌كنه مهندس ريويژن ميزنه!Amaze Amaze Amaze
الغرض من ديروز يه چندتايي اشتباه كردم(ببخشيد ريويژن لازم دارم). پس شروع مي‌كنم:
1- توي فيلد نرم‌افزارهاي كاربردي نرم افزارهاي شبيه‌ساز يا همون Simulator فيلد تخصصي جالبي هستند. در رسته مهندسي شيمي از اين نرم افزارها براي بهسازي و بهينه كردن طراحي‌ها بيشترين استفاده مي شود. اين نرم‌افزارها بانكهاي غولي دارند و از سازه‌هاي محاسباتي فوق العاده پرسرعتي سود مي‌برند. كدهاي مثالي كه در اينجا آمد تغيير يافته يكي از اين نرم‌افزارهاست بنام PRO II. يك نرم افزار فوق‌العاده كارآمد. از اين نرم افزارها HISYSY هم نام معروفي است و البته اينها همه به يك طرف نرم افزار ديگري هم هست كه اسمش BChem هست‌اش. اون اصلا يه چيز ديگه‌اس. :wink: :wink:
2- من از شما مي‌خوام انشاي جملات رو پيشنهاد كنيد. ببينيد ما در اينجا يك سري اشياي خاص داريم مثل برج تقطير Column Distiullation مبدلHeat Exchanger و شيرآلاتValves و چندتايي ديگر اينها خواصي دارند كه البته اگه يه محيط ويژوال خوشگل داشتيم خيلي خوب مي‌شد؟!اما در ويرايشهاي اول اينطوري كار مي‌كنيم. ما تمامي خواص رو پابت مي‌گيريم و يك يا چند خاصيت رو كه برامپن اهميت حياتي دارند رو متغير. برنامه با تخصيص دادن مقاديري به اين متغيرها و محاسبه خواص ثابت سعي مي‌كند كه به اين خواص برسد. بنابراين از روشهاي حدس و خطايي و روش نيوتن-رافسون سود مي‌برد كه اينها را حساب كند. مثلا متغير را اگر تعداد سيني‌هاي يك برج‌تقطير بناميم بايد مقادير حرارتي مبادله شده در بويلر و كندانسور برج يا همان Dutyها را داده‌باشيم و اگر بخواهيم كندانسور و بويلر را طراحي كنيم بايد سيني‌هاي برجمات مشخص باشند.
3- اشتباه بعدي من در اين بود كه كد نوشته من خروجي نداشت. اين كدها رو بايد در بخش ابتدايي قبل از تعريف جريانها يا همان Stream اضافه كرد:
کد:
With Problem
Print .Rate(M)=Ok
Print .Percent(M)=Ok
Print .Stream(All)
Print .Input(All)
End With
كد بالا مي‌گويد كه تمامي شدت جريانها و درصد جريانها را به صورت مولار بدهد. كل مشخصات جريانها را چاپ كند و كده را نيز چاپ كند. دستور پرينت را ميتوان براي اشيا هم قرار داد و خواست كه بعضي مشخصات اشيا يا همه آنها پرينت شود.
4) ريويژن ديگري كه بايد تا اينجا زد يكي در تعاريف بود يعني چه :من بايد اشيا را تعريف مي كردم . حالا ريويژن را مي‌زنيم:
کد:
Dim L-15,L-22,L-21 As Stream
Dim C-1 As Column
Dim Hx-1, Hx-2 As HeatExchanger
اونوقت تمام دستورات مثل End Column و End HeatExchangerبايد به End Withتغيير كنند. و اول هركدوم بايد با With L-15 يا With C-1 يا With Hx-1 شروع بشود.
5) فرض كنيد چنين نرم افزاري براي چنين محاسباتي وجود دارد. دلتون مي‌خواست با چه زباني باهاش حرف مي زدين؟! و چه شكلي. اينرو به من بگين. خيلي خيلي بهش نياز دارم؟!
6) راستي اگه اين به يه جايي رسيد يه عالمه پروژه اينطوري مثل سيل سرازير مي‌شه اينجا؟! :wink: :wink:
7) منتظر همه برو بچ هستم.
8) اين هم يه ريويژن جديد. اينكه يه فكري براي محاسبات بكنيد. من در كدها يه اشتباه عمدي كردم اگه اونو درآورديد؟!Amaze Amaze Amaze
به زبون خيلي ساده من بگم قرار يه كمپايلر تهيه بشه(البته براي يه كار خاص) .
گسترش جان من نظرم رو بعدا ميگم. :wink:
اولا اشكان خان تولد ايران ويج رو تبريك مي‌گم.
بهتربود يه لينك ميذاشتي براي ابراز ارادت بروبچ؟! :wink:
دوما به مناسبت تولد ايران‌ويج هفته آينده كه من اونو از طرف خودم هفته رشد و اعتلاي سورس باز در ايران مي‌نامم. بانكهاي كد و بانك كلمات رو براي سايت پست مي‌زنم. چه تقارن ميموني :wink: :wink:
ثالثا اينكه من يك راهنماي توسعه‌دهندگان بفارسي براي مترجمه مي‌نويسم كه بعيد است هفته ديگه بدستتان برسد كه براي انتشار آزاد نيست براي استفاده نرم‌افزارنويسان مجاز است كه خودتون انتخاب مي‌كنيد. :?: :!:
رابعا براي اين برنامه هم يك چنين مدركي مي‌نويسم ولي اونو نمي‌دونم باز بگذارم يا نه. ولي محبت كنيد اشكالات كدها رو بهم بگيد. من خودم دارم Fullروي بانكها كار مي‌كنم. شماها برنامه‌نويسيد به خط به خط‌اش گير بدهيد. منتظر پيشنهاداتون هستم؟!
آقا اشكان اين هم يك اصلاح بزرگ و فوق‌العاده:
کد:
Project Distillation()
    Dim C-1 As Column
    Dim L-15,L-22,L-21 As Stream
    Dim Hx-1,Hx-2 As HeatExchanger
    Dimension= English
    With Dbase
        .Data=PCI
        .IData=156
    End with
    Component     ' Definition of Two Component MeOH(Methanol) Water(Water)
        Case 1: "MeOH"
        Case 2: "Water"
    End Component
    With Therodynamic    ' Definition Thermodynamic Banks and Formulation
        .Kvalue(VLE)=NRTL
        .Enth(V)=SRKM
        .Enth(L)=IDEA
        .Dens(V)=SRKM
        .Dens(L)=IDEA
        .Bank=BChem
    End With
    With Print        ' Definition OutPut Information
        .Rate(M)=ALL
        .Percent(M)=ALL
        .Stream=ALL
        .Input=ALL
    End With
    '**************STREAM DEFINTION*******************
    With L-15            ' Definition the Feed Stream of Disillation Column
        .Temp=150.8        ' Stream Temperature is 150.8 F
        .Pres=15            ' Stream  Pressure is 15 PSIA
        .Phase=M        ' Phase Molar
        .Rate(W)=8        ' Rate= 8 lb
        .Comp(W)=1(2),2(6)      ' MeOH= 2lb, Water=6lb
        .CompMethod=Normalize  ' In Calculation it check the total Sum=100%
    End With            ' End of Stream Definition
    '***************COLUMN DEFINTION*****************************
    With C-1                ' Definition of the Disillation Column
        .Caption="Column-101"      ' Caption of Column="Column-101"
        .Tray=28                            ' Tray No.=28
        .Feed("L-15",NotSep).Pres=15    ' Definition the Feed Condition and Pressure
        .Prod.Over("L-22")=2        ' OverHead Stream=2 lb & Its name "L-22"
        .Prod.Buttom("L-21")=6        ' Buttom Stream=6 lb & Its name "L-21
        .Cond.Bubb=15            ' Condenser Bubble Point=15 PSIA
        .Esti=Conventional        ' Estimation of Calculation=Conventional
.Tsize(1,28)=CValve(75)        ' Definition the Type & Size Of Trays
'**************************Calculation Mode**********************
        TDuty(1)=-15.000    'Pre Assumtion Duty of Tray No.1= -15 Btu/Hr
        TDuty(28)= 15.000    'Pre Assumtion Duty of Tray No.28= -15 Btu/Hr
While Abs(Spec("L-21",W,1)-0.5)<=0.01 And Abs(Spec("L-22",W,2)-0.5)<=0.01
If Spec("L-21",W,1)-0.5<0 then
TDuty(1)=TDuty(1)+0.01
Else TDuty(1)=TDuty(1)-0.01
If Spec("L-22",W,2)-0.5<0 then
TDuty(28)=TDuty(28)+0.01
Else TDuty(28)=TDuty(28)-0.01
Wend            
    End With
    '***************HEATEXCHANGERS DEFINTION***************
    With E-1         'Definition of the Heat Exchanger No. E-1
        .Caption="Ex-102"     'Caption of HeatExchanger="Ex-102"
        .Config(1,1)=158    'Configuration 1 Pass Shell & 1Pass Tube U=158 Btu/lbF
        .Utility(Steam).PSat=147     ' It's Utility=Steam Saturated=147PSIA
        .Attach("C-1")=Rebuiler     ' It is attached to Column C-1 As Rebuiler
    End With
    With E-2
        .Caption="Ex-103"
        .Config(1,1)=123
        .Utility(Water).TIN=77        ' It's Utility=Water Inlet Temp=77F
        .Utility(Water).TOUT=95        ' It's Utility=Water Outlet Temp=95F
        .Attach("C-1")=Condenser    ' It is attached to Column C-1 As Condenser
    End With
End Project
اين جا يه مشكلاتي هست :
کد:
Component    ' Definition of Two Component MeOH(Methanol) Water(Water)
      Case 1: "MeOH"
      Case 2: "Water"
   End Component
اميرجان درست ميگي خودمم با ديدن پيامت فهميدم يه عيبي داره . راستي اينطوري بهتر نيست:

کد:
Dim Comp as Component

Select Case Comp
           Case 1:MeOH
           Case 2:Water
End Select
من جدا مي‌خوام به يك انشاي درست برسم. دلم مي‌خواد خيلي خيلي بهش گير بديد :wink: :wink: :wink: :wink: :wink:
حالا بيتر (بهتر!) شد ! ولي خودمونيما عجب چيز خفني نوشتي !
amirjan نوشته است:اين جا يه مشكلاتي هست :
کد:
Component    ' Definition of Two Component MeOH(Methanol) Water(Water)
      Case 1: "MeOH"
      Case 2: "Water"
  

End Component
Amaze Amaze Amaze
امير جان من خفن تر از اينم توي يه تاپيك گذاشتم ولي حتي يه نفر هم نتونست بفهمه چيه
مي خواي يه نگاه بنداز

http://www.iranvig.com/modules.php?name=...&highlight=

http://www.iranvig.com/modules.php?name=...&highlight=

http://www.iranvig.com/modules.php?name=...&highlight=
نقل قول: Amaze Amaze Amaze
خنده داره ؟ Biggrin
نقل قول: امير جان من خفن تر از اينم توي يه تاپيك گذاشتم ولي حتي يه نفر هم نتونست بفهمه چيه
اين قضيه اش فرق داره ، اينو آقا گسترش خودش نوشته .