unit udgerais_dat;

{$mode delphi}

interface

uses
  Classes, SysUtils;

TDatosGenerales = class
NOMBRE_DEL_CASO: string;  // 1-80
TIPO_DE_EXECUCAO: integer; // (1:EXECUCAO COMPLETA; 0:SIMULACAO FINAL)
DURACAO_DO_PERIODO: integer; //      1
Nro_DE_ANOS_DO_EST: integer; //     16
MES_INICIO_PRE_EST: integer; //     05
MES_INICIO_DO_ESTUDO: integer; //   05
ANO_INICIO_DO_ESTUDO: integer; // 2010
Nro_DE_ANOS_PRE: integer; //         0
Nro_DE_ANOS_POS: ineger; //         5
Nro_DE_ANOS_POS_FINAL: integer; //   0
IMPRIME_DADOS: integer; //            1
IMPRIME_MERCADOS: integer; //        1
IMPRIME_ENERGIAS: integer;//        1
IMPRIME_Mo_ESTOCAS: integer; //      1
IMPRIME_SUBSISTEMA: integer; //      1
Nro_MAX_DE_ITER: integer; //       45
Nro_DE_SIM_FORWARD: integer; //    200
Nro_DE_ABERTURAS: integer; //        20
Neo_DE_SERIES_SINT: integer; //   2000
ORDEM_MAX_PAR_P_: integer; //       6
ANO_INICIAL_HIST, TAMANO_REC_VAZOES: integer; //    1931   1
CALCULA_VOL_INICIAL: integer; //     1   0=USA REG 23 ; 1= CALCULA EARM. INICIAL
VOLUME INICIAL: string; //  -%   XXX.X  XXX.X  XXX.X  XXX.X  XXX.X  XXX.X  XXX.X  XXX.X  XXX.X  XXX.X
VOL_INI_POR_SUBSISTEMA_p100: array of double; //    82.1   89.4   77.1   99.3  100.0  100.0  100.0  100.0  100.0   82.1
TOLERANCIA_p100: double; //      -%    95.0
TAXA_DE_DESCONTO_p100: double; //-%     8.0
TIPO_SIMUL_FINAL: integer; //       1   (=0 NAO SIMULA; =1 S.SINT.; =2 S.HIST.; =3 CONSIST)
IMPRESSAO_DA_OPER: integer; //       1   (=0 SINOPSE; =1 OP. DETALHADA)
IMPRESSAO_DA_CONVERG: integer; //   1   (=0 CONVERGENCIA FINAL APENAS, =1 TOTAL)
INTERVALO_P_GRAVAR: integer; //     1   SERIES SIMULADAS ( 40  SERIES GRAVADAS )
Nro_MIN_ITER: integer; //.          1
RACIONAMENTO_PREVENT: integer; //.   1   (=0NAO CONSIDERA NA SIMULACAO FINAL; 1=CONSIDERA)
Neo_ANOS_MANUT_UTEs: integer; //    0   (=0 NAO CONSIDERA, =1 ANO, =2 ANOS)
TENDENCIA_HIDROLOGICA: integer; //   0    0   (=0 NAO CONSIDERA, =1 CONSIDERA)
RESTRICAO_DE_ITAIPU: intger; //     0   (FLAG DESATIVADO)
BID: integer; //                     0   (FUNCAO NAO DISPONIVEL)
PERDAS_POR_TRANSMISAO: integer; //   0   (=0 NAO CONSIDERA, =1 CONSIDERA)
EL_NINO: integer; //                 0   (FUNCAO NAO DISPONIVEL)
ENSO_INDEX: integer; //              0   (FUNCAO NAO IMPLEMENTADA)
DURACAO_DO_PATAMAR: integer; //      1   (=0 SAZONAL, =1 VARIAVEL POR ANO)
OUTROS_USOS_DA_AGUA: integer; //     1   (=0 NAO CONSIDERA; =1 CONSIDERA)
ENER_DESV_FC_ARMAZ: intgeer; //      1   (=0 CONSTANTE, =1 VARIAVEL)
C_AVERSAO_PENAL_VMINT: integer; //   0   (=0 NAO USA; =1 C.AVERSAO; =2 PENAL.VMINT)
TIPO_DE_GERACAO_ENAS: integer; //    0   (=0 RUIDOS FW SORTEAOS DA BW E COMPENSAÇÃO CORREL.ESPACIAL; 1=COMPENS.BW; 2=COMPENS.BW E FW)
RISCO_DE_DEFICIT: array[1..2] of double; //:  1.00  05.00
PSEUDO_PARTIDA_QUENTE: integer; //   0
AGRUPAMENTO_LIVRE_INT: integer; //   1
EQUALIZACAO_PEN_INTER: integer; //   1
REPRES_SUBMOTORIZACAO: integer; //   0
ORDENACAO_AUTOMATICA: integer; //    0   (0 = NAO CONSIDERA, 1 = CONSIDERA)
CONS_CARGA_ADICIONAL: integer; //    0   (0 = NAO CONSIDERA, 1 = CONSIDERA)
DELTA_ZSUP: integer; //             10   (PERCENTUAL DE ZSUP)
DELTA_ZINF: integer; //            0.2   (PERCENTUAL DE ZINF)
ITERACOES_DELTA_ZINF: integer; //    3

constructor create_read( archi: textfile );
end;

implementation


constructor TDatosGenerales.Create_FromArchi( archi: string );
var
  f: textfile;
  r: string;
begin
  assignfile( f, archi );
  reset( f );
  NOMBRE_DEL_CASO:= readln_Pal( f, 1, 80 );
  TIPO_DE_EXECUCAO:= readln_Int( f, 22, 25 );
  DURACAO_DO_PERIODO:= readln_Int( f, 22, 25 );
  Nro_DE_ANOS_DO_EST:= readln_Int( f, 22, 25 );
  MES_INICIO_PRE_EST:= readln_Int( f, 22, 25 );
  MES_INICIO_DO_ESTUDO:= readln_Int( f, 22, 25 );
  ANO_INICIO_DO_ESTUDO:= readln_Int( f, 22, 25 );
  Nro_DE_ANOS_PRE:= readln_Int( f, 22, 25 );
  Nro_DE_ANOS_POS:= readln_Int( f, 22, 25 );
  Nro_DE_ANOS_POS_FINAL:= readln_Int( f, 22, 25 );
  IMPRIME_DADOS:= readln_Int( f, 22, 25 );
IMPRIME_MERCADOS:= readln_Int( f, 22, 25 );
IMPRIME_ENERGIAS:= readln_Int( f, 22, 25 );
IMPRIME_Mo_ESTOCAS:= readln_Int( f, 22, 25 );
IMPRIME_SUBSISTEMA:= readln_Int( f, 22, 25 );
Nro_MAX_DE_ITER:= readln_Int( f, 22, 25 );
Nro_DE_SIM_FORWARD:= readln_Int( f, 22, 25 );
Nro_DE_ABERTURAS:= readln_Int( f, 22, 25 );
Neo_DE_SERIES_SINT:= readln_Int( f, 22, 25 );
ORDEM_MAX_PAR_P_:= readln_Int( f, 22, 25 );
ANO_INICIAL_HIST:= read_Int( f, 22, 25 );
TAMANO_REC_VAZOES:= readln_Int( f, 29, 29 );

CALCULA_VOL_INICIAL:= readln_Int( f, 22, 25 ); //     1   0=USA REG 23 ; 1= CALCULA EARM. INICIAL
readln( f, VOLUME INICIAL );
setlength(VOL_INI_POR_SUBSISTEMA_p100,  NSubsistemas );
for k:= 0 to NSubsistemas-1 do
  VOL_INI_POR_SUBSISTEMA_p100[k]:= read_F( f, 22+ k* 7, 25+ k* 7 );

TOLERANCIA_p100: double; //      -%    95.0
TAXA_DE_DESCONTO_p100: double; //-%     8.0
TIPO_SIMUL_FINAL: integer; //       1   (=0 NAO SIMULA; =1 S.SINT.; =2 S.HIST.; =3 CONSIST)
IMPRESSAO_DA_OPER: integer; //       1   (=0 SINOPSE; =1 OP. DETALHADA)
IMPRESSAO_DA_CONVERG: integer; //   1   (=0 CONVERGENCIA FINAL APENAS, =1 TOTAL)
INTERVALO_P_GRAVAR: integer; //     1   SERIES SIMULADAS ( 40  SERIES GRAVADAS )
Nro_MIN_ITER: integer; //.          1
RACIONAMENTO_PREVENT: integer; //.   1   (=0NAO CONSIDERA NA SIMULACAO FINAL; 1=CONSIDERA)
Neo_ANOS_MANUT_UTEs: integer; //    0   (=0 NAO CONSIDERA, =1 ANO, =2 ANOS)
TENDENCIA_HIDROLOGICA: integer; //   0    0   (=0 NAO CONSIDERA, =1 CONSIDERA)
RESTRICAO_DE_ITAIPU: intger; //     0   (FLAG DESATIVADO)
BID: integer; //                     0   (FUNCAO NAO DISPONIVEL)
PERDAS_POR_TRANSMISAO: integer; //   0   (=0 NAO CONSIDERA, =1 CONSIDERA)
EL_NINO: integer; //                 0   (FUNCAO NAO DISPONIVEL)
ENSO_INDEX: integer; //              0   (FUNCAO NAO IMPLEMENTADA)
DURACAO_DO_PATAMAR: integer; //      1   (=0 SAZONAL, =1 VARIAVEL POR ANO)
OUTROS_USOS_DA_AGUA: integer; //     1   (=0 NAO CONSIDERA; =1 CONSIDERA)
ENER_DESV_FC_ARMAZ: intgeer; //      1   (=0 CONSTANTE, =1 VARIAVEL)
C_AVERSAO_PENAL_VMINT: integer; //   0   (=0 NAO USA; =1 C.AVERSAO; =2 PENAL.VMINT)
TIPO_DE_GERACAO_ENAS: integer; //    0   (=0 RUIDOS FW SORTEAOS DA BW E COMPENSAÇÃO CORREL.ESPACIAL; 1=COMPENS.BW; 2=COMPENS.BW E FW)
RISCO_DE_DEFICIT: array[1..2] of double; //:  1.00  05.00
PSEUDO_PARTIDA_QUENTE: integer; //   0
AGRUPAMENTO_LIVRE_INT: integer; //   1
EQUALIZACAO_PEN_INTER: integer; //   1
REPRES_SUBMOTORIZACAO: integer; //   0
ORDENACAO_AUTOMATICA: integer; //    0   (0 = NAO CONSIDERA, 1 = CONSIDERA)
CONS_CARGA_ADICIONAL: integer; //    0   (0 = NAO CONSIDERA, 1 = CONSIDERA)
DELTA_ZSUP: integer; //             10   (PERCENTUAL DE ZSUP)
DELTA_ZINF: integer; //            0.2   (PERCENTUAL DE ZINF)
ITERACOES_DELTA_ZINF: integer; //    3



end.

