library KinLib; uses SysUtils, GlType, // MathObj, Kinetika in 'KINETIKA.PAS'; {$R KIN.RES} procedure AllInit(var at,adt,atfinal:PRealType;Dirs : PDirRec);export; begin ptime:=@at; pdtime:=@adt; ptimefinal:=@atfinal; p_DirRec:=Dirs; end; procedure AllDone;export; begin // if MBTY_BUF_SIZE > 0 then FreeMem(MBTY_BUF,MBTY_BUF_SIZE); end; procedure GetLibInfo(Action: Integer;var BlockId, ParamId: Integer; Info: pchar);export; const { TPointKin1Param : array [1..7] of pchar = ('beta','ro0','l','count','bi','lami','norm'); TPointKin2Param : array [1..6] of pchar = ('beta','ro0','count','bi','lami','norm'); TOstEnParam : array [1..2] of pchar = ('t','n');} {$IFDEF ENGLVER} TPointKin1Cap : array [1..7] of pchar = ( 'Effective part of lagging neutrons', 'Initial subcrit (in parts of beta)', 'Prompt neutrons lifetime', 'Delayed neutrons group count', 'Relational parts of delayed neutrons groups', 'Decay coefficient of delayed neutrons groups', 'Normalization'); TPointKin2Cap : array [1..6] of pchar = ( 'Effective part of lagging neutrons', 'Initial subcrit (in parts of beta)', 'Delayed neutrons group count', 'Relational parts of delayed neutrons groups', 'Decay coefficient of delayed neutrons groups', 'Normalization'); TOstEnCap : array [1..2] of pchar = ('Time','Power'); {$ELSE} TPointKin1Cap : array [1..7] of pchar = ( 'Эффективная доля запаздывающих нейтронов', 'Начальная подкритичность(в долях beta)', 'Время жизни мгновенных нейтронов', 'Число групп запаздывающих нейтронов', 'Относительные доли групп запаздывающих нейтронов', 'Постоянные распада групп запаздывающих нейтронов', 'Нормировка'); TPointKin2Cap : array [1..6] of pchar = ( 'Эффективная доля запаздывающих нейтронов', 'Начальная подкритичность(в долях beta)', 'Число групп запаздывающих нейтронов', 'Относительные доли групп запаздывающих нейтронов', 'Постоянные распада групп запаздывающих нейтронов', 'Нормировка'); TOstEnCap : array [1..2] of pchar = ('Время','Мощность'); {$ENDIF} TPointKin1Val : array [1..7] of pchar = ('0.0065','0','0.001','6', '0.033 0.219 0.196 0.395 0.115 0.042','0.0124 0.0305 0.111 0.301 1.14 3.01','1'); TPointKin2Val : array [1..6] of pchar = ('0.0065','0','6', '0.033 0.219 0.196 0.395 0.115 0.042','0.0124 0.0305 0.111 0.301 1.14 3.01','1'); TOstEnVal : array [1..2] of pchar = ('0 9000000','1 1'); begin StrCopy(Info,nul); case Action of {$IFDEF ENGLVER} i_GetPageName : StrCopy(Info,'Nuclear fission'); {$ELSE} i_GetPageName : StrCopy(Info,'Кинетика'); {$ENDIF} i_GetBlocksCount: BlockId := 3; i_GetBlockIndex, i_GetHelpIndex : case BlockId of 1: ParamId := 110; 2: ParamId := 112; 3: ParamId := 115; end; i_GetBlockType : ParamId := t_din; i_GetBlockName, i_GetRUNName : case BlockId of 1: StrCopy(Info,'TPntKin'); 2: StrCopy(Info,'TPntKinM'); 3: StrCopy(Info,'TOstEn'); end; i_GetBMPName : case BlockId of 1: StrCopy(Info,'PntKin'); 2: StrCopy(Info,'PntKinM'); 3: StrCopy(Info,'OstEn'); end; {$IFDEF ENGLVER} i_GetBlockHint : case BlockId of 1: StrCopy(Info,'Point kinetics'); 2: StrCopy(Info,'Momentary step kinetics model'); 3: StrCopy(Info,'Delayed heat'); end; {$ELSE} i_GetBlockHint : case BlockId of 1: StrCopy(Info,'Точечная кинетика'); 2: StrCopy(Info,'Модель мгновенного скачка'); 3: StrCopy(Info,'Остаточное энерговыделение'); end; {$ENDIF} i_GetHelpName : StrCopy(Info,'MBTY'); i_GetChild : ParamId := 0; i_GetInputCount, i_GetOutPutCount: ParamId := -1; i_GetParamsCount: case BlockId of 1: ParamId := 7; 2: ParamId := 6; 3: ParamId := 2; end; { i_GetParamName : case BlockId of 1: StrCopy(Info,TPointKin1Param[ParamId]); 2: StrCopy(Info,TPointKin2Param[ParamId]); 3: StrCopy(Info,TOstEnParam[ParamId]); end;} i_GetParamCaption: case BlockId of 1: StrCopy(Info,TPointKin1Cap[ParamId]); 2: StrCopy(Info,TPointKin2Cap[ParamId]); 3: StrCopy(Info,TOstEnCap[ParamId]); end; i_GetParamValue : case BlockId of 1: StrCopy(Info,TPointKin1Val[ParamId]); 2: StrCopy(Info,TPointKin2Val[ParamId]); 3: StrCopy(Info,TOstEnVal[ParamId]); end; i_GetParamValues: case BlockId of 1: if ParamId=7 then StrCopy(Info,'1:0'); 2: if ParamId=6 then StrCopy(Info,'1:0'); end; i_GetParamMin : case BlockId of 1: case ParamId of 1,3: StrCopy(Info,'1.e-10'); 2: StrCopy(Info,'0'); 4: StrCopy(Info,'1'); end; 2: case ParamId of 1: StrCopy(Info,'1.e-10'); 2: StrCopy(Info,'0'); 3: StrCopy(Info,'1'); end; end; i_GetParamType : case BlockId of 1: case ParamId of 1..3: StrCopy(Info,'1'); 4: StrCopy(Info,'0'); 5,6: StrCopy(Info,'3'); 7: StrCopy(Info,'40'); end; 2: case ParamId of 1..2: StrCopy(Info,'1'); 3: StrCopy(Info,'0'); 4,5: StrCopy(Info,'3'); 6: StrCopy(Info,'40'); end; 3: StrCopy(Info,'3'); end; i_GetParamAct : StrCopy(Info,'0'); i_GetFuncsCount : BlockId := 0; end; end; EXPORTS AllInit, AllDone, GetLibInfo, TPntKin, TPntKinM, TOstEn; end.