Instituto Nacional de Ecología Libros INE CLASIFICA CION AE 001932 LIBRO Sistema de información rápida de impacto ambiental TOMO 1111111111111111111111111111111111111111111111111111111 AE 001932 SECRETARIA DE DESARROLLO URBANO Y ECOLOGIA SUBSECRETARIA ;DE ECOLOGIA DIRECCION GENERAL DE NORMATIVIDAD Y REGULACION ECOLOGICA SISTEMA DE INFORMACION RAPIDA DE IMPACTO AMBIENTAL DINAMICA HEURISTICA S .C. DINAMICA HEURISTICA S . C SISTEMA DE INFORMACION RAPIDA DE IMPACTO AMBIENTAL Contrato Numero : Responsable Tecnico por la Compania : 412-011-85 Ing .Sergio Garza Ayala Dr .J .Victor Hugo Paramo F. Responsable Tecnico por la Direccion General: Ing .Rogelio Gonzales Fecha de Inicio: lo . de octubre de 1985 Fecha de Termino: 31 de diciembre de 1985 Av . Co 1 . dmi V1 1 n s04—302 .Co l . dmoi ?l 1 ew . CP . Oa i OO .Mmst i c e D . F . I N D I C E 1. INTRODUCCION 1 .1 OBJETIVOS 1 .2 ALCANCES Y ESQUEMA DESARROLLADO PRIMERA PARTE ------------COMPILACION Y ANALISIS DE INFORMACION 2. BASES DE DATOS 2 .1 . BANCO DE DATOS 2 .1 .1 . CLASIFICACION POR GIRO DE ACTIVIDAD 2 .1 .2 . LISTA DE ACTIVIDADES DE DESARROLLO 2 .1 .3 . FACTORES DE EMISION DE CONTAMINANTES AL AGUA, AIRE Y SUELO DE LAS ACTIVIDADES DE DESARROLLO 2 .1 .4 . LISTA DE CONTAMINANTES 2 .1 .5 . REGLAMENTACIONES NACIONALES Y DE OTROS PAISES 2 .1 .6 . CANTIDADES DE SUSTANCIAS PELIGROSAS` INDICADORAS DE RIESGO 2 .1 .7 . VALORES MAXIMOS PERMISIBLES DE SUSTANCIAS RIESGOSAS Y EFECTOS EN LA SALUD 2 .1 .8 . INFORMACION GENERAL SOBRE PROYECTOS NACIONALES 2 .1 .9 . SISTEMAS DE CONTROL DE LA CONTAMINACION REFERENCIAS 2 .2 . BANCO DE TEXTOS REFERENCIAS SEGUNDA PARTE ------------DISENO DEL SISTEMA 3. MODULO DE INFORMACION 4. MODULO DE PREDICCION 4 .1 . MODELOS DE DISPERSION DE CONTAMINANTES 4 .1 .1 . MODELOS DE DISPERSION AIRE 4 .1 .1 .1 . MODELO GAUSSIANO : POSICION(X,Y,Z) E ISOCONCENTRACION 4 .1 .1 .2 . MODELO GAUSSIANO : FUGAS Y DERRAMES 4 .1 .1 .3 . MODELO GAUSSIANO : PUFF REFERENCIAS 4 .1 .2 . MODELOS DE DISPERSION AGUA 4 .1 .2 .1 . MODELO STREETER Y PHELPS : DBO-OD 4 .1 .2 .2 . MODELO A .I .E .A : DESCARGAS TERMICAS REFERENCIAS 4 .2 . MODELO DE SIMULACION DE IMPACTOS CRUZADOS (KSIM) REFERENCIAS 5. MODULO DE APOYO DECISIONAL 5 .1 . PROCEDIMIENTO DE SELECCION DE ALTERNATIVAS RAJO CRITERIOS MULTIPLES (ELECTRE) REFERENCIAS 6. MODULO DE SISTEMA DE EXPERTOS REFERENCIAS 7. MODULO CONVERSACIONAL 0 DE INTERFASE TERCERA PARTE ------------IMPLEMENTACION OPERATIVA 8. GUTAS DEL USUARIO ANEXOS ANEXO 1 . PROGRAMAS FUENTE MODULO DE INFORMACION ANEXO 2 . PROGRAMAS FUENTE MODULO DE PREDICCION ANEXO 3 . PROGRAMAS FUENTE MODULO DE APOYO DECISIONAL_ ANEXO 4 . PROGRAMAS FUENTE MODULO DE SISTEMA DE EXPERTOS ANEXO 5 . PROGRAMAS FUENTE MODULO CONVERSACIONAL 0 DE INTERFASE 1 . INTRODUCCION. 1 .1 . OBJETIVOS. Entre los objetivos basicos que se persiguen con el desarrollo del SIRIA cabe destacar los siguientes: - Contar con un sistema computarizado que genere la informacion necesaria para la toma de decisiones en la evaluacion de impactos ambientales; - Dinamizar el Procedimiento de Impacto Ambiental en todo el pais ; de la SEDUE, para permitir la identificacion expedita de los posibles impactos ambientales atribuibles a un plan o proyecto. Es conveniente resaltar las implicaciones de los objetivos anteriores . En primer termino, el proceso de evaluacion de impactos ambientales en nuestro creacion, pais es de muy reciente por lo que la experiencia acumulada en la determinacion de efectos posibles es escasa . Existe una grave deficiencia de datos e informacion sobre el comportamiento de los diversos ecosistemas de nuestro pais, haciendo mas dificil la tarea de prediccion de impactos. Las experiencias en materia de Evaluacion de Impactos Ambientales en otros paises tienden a senalar la importancia de contar con esquemas faciliten el proceso de una depuracion de herramientas computarizadas que y evaluacion y permitan llevar a cabo informacion y calibracion de los modelos y metodos empleados. El SIRIA constituye un proyecto cuyos resultados mas importantes son de mediano plazo, si bien, se puede lograr una operatividad inicial en el corto ello de una voluntad politica, plazo, .requiriendose para sostenida, al igual que un esfuerzo tecnico intenso. Asimismo, es el operacion vehiculo un conjunto de mediante el cual se tecnicas, herramientas pondran en y metodos desarrollados en un ambiente academico y de investigacion . A traves de este proceso se podra identificar que herramientas son las mas adecuadas y que grado de calibracion requieren para las condiciones de nuestro pais. En este documento final, los elementos descritos surgen de un proceso evolutivo, por lo que son sujetos a cambios y/o modificaciones, con la idea basica de que se adecuen lo mas posible a las necesidades de la SEDUE . 1 .2 . ALCANCES Y ESQUEMA DESARROLLADO. La heterogeneidad del proceso de evaluacion que se busca que apoye al SIRIA, hizo ineludible el adoptar una estrategia de desarrollo evolutivo, a paultinamente traves del cual se incorporaron herramientas con una cobertura mayor . Su inicial se oriento a tipos de problemas donde existe operacion una mayor definicion y conocimiento, esto con el fin de probar y optimizar su funcionamiento. Fue menester, sin embargo, dotar al sistema desde su inicio, de una estructura amplia, capaz de contender con el mayor numero de problemas que se enmarcan dentro del proceso de evaluacion de impactos ambientales. Para lograr una planteados para esquema modular, el mayor consistencia SIRIA, se considero necesario adoptar un con los objetivos que permita tener una imagen global de los alcances del proyecto. Es adecuado identificar cuatro grandes categorias de problemas implicitos en la evaluacion de impacto ambiental, los cuales requieren de esquemas alternativos de solucion . Las categorias son : - problemas valorativos y de juicio; - problemas de conocimiento; - problemas de informacion; - problemas de prediccion. Dentro de cada categoria de problemas existe un conjunto de herramientas, metodologias y enfoques que hacen factible dar solucion a algunos de los problemas de tal categoria . Asi, se tiene que dentro de la primera categoria se han desarrollado un cumulo de herramientas para atender el area de toma de decisiones . Los problemas del conocimiento han recibido atencion especial en las ultimas dos decadas, dentro del area de Inteligencia Artificial e Ingenieria del Conocimiento . La informacion como un elemento vital en la vida moderna ha cobrado un impetu renovado con el advenimiento de la computadora personal, y todo un universo de herramientas para facilitar su manejo . Los problemas de prediccion estan en el centro de la ciencia e ingenieria misma y dentro de las cuales el desarrollo de modelos constituye una de las herramientas mas visibles y poderosas. Se estima que los problemas centrales de Evaluacion de Impactos Ambientales estan enmarcados dentro de las cuatro categorias anteriores, por consiguiente el SIRIA pretende contar con los elementos para resolver tales problemas dentro de un ambiente integrado y sistematico. En base a lo anterior se doto al SIRIA de los siguientes modulos : - Modulo de Informacion - Modulo de Prediccion - Modulo de Apoyo Decisional - Modulo de Sistema de Expertos - Modulo de Interfase . PRIMERA PARTE ------------- COMPILACION Y ANALISIS DE INFORMACION 2. BASES DE DATOS. La informacion obtuvo de que se empleo en la conformacion del SIRIA se articulos, documentos y libros tecnicos, tanto nacionales como de otros paises . El material incluido se selecciono considerando criterios tales como : objetividad, aplicabilidad, disponibilidad, confiabilidad. La informacion seleccionada se analizo y sistematizo, quedando almacenada en dos bases de datos, designadas como: - Banco de Datos - Banco de Textos. En el Banco de Datos se encuentran integrados una serie de archivos que constituyen la informacion basica (actividades industriales, factores . de del SIRIA emision, reglamentaciones, informacion de proyectos, etc .). ' El Banco de Textos esta constituido por un conjunto de citas referentes a informacion relevante que puede servir de apoyo en las evaluaciones de impacto ambiental . 2 .i BANCO DE DATOS. El Banco de Datos esta formado por los siguientes archivos de informacion: - Clasificacion por giro de actividad - Lista de actividades de . desarrollo - Factores de emision de contaminantes al aire, água y suelo de las actividades de desarrollo - Lista de contaminantes - Reglamentaciones nacionales y de otros paises - Cantidades de sustancias peligrosas indicadoras de riesgo - Valores maximos permisibles de concentraciones de sustancias riesgosas y efectos en la salud - Informacion general sobre proyectos nacionales - Sistemas de control de la contaminacion. En cada uno de estos archivos se tiene almacenada informacion que sirve, por si sola o como apoyo dentro de otros modulas, de referencia en la evaluacion ambiental de un proyecto. A continuacion se presenta archivos del Banco de Datos . el contenido de cada un de los 2.1 .1 . CLASIFICACION POR GIRO DE ACTIVIDAD. La informacion incluida ref .6 . acuerdo Se en este archivo fue extraida de la refiere a la clasificacion de giros industriales de con la del archivo. Ver tabla 2 .1 .1 . O .N .U . A continuacion se presenta el desglose TABLA NUMERO 2 .1 .1 RAND DE DE GIRO ACTIVIDADES ------------------ NOMBRE DE LOS GIROS í 1110a 1110h PRODUCCION AGROPECUARIA 2 3111a 3121b PRODUCCION DE ALIMENTOS !PARA CONSUNO HUMANO) 3 . 3131a 3134 INDUSTRIA DE BEBIDAS 4 321la 3211h MANUFACTURA DE TEXTILES 5 3231a 3231c MANUFACTURA DE CUERO b 3311a 331lb MANUFACTURA DE MADERA Y CORCHO, EXCEPTO MUEBLES 7 3411a 3411f MANUFACTURA DE PULPA, PAPEL Y CARTON 8 3511 3530g MANUFACTURA DE PRODUCTOS QUIMICOS INDUSTRIALES 3540 3540c MANUFACTURA DE PRODUCTOS MISCELANEOS DEL PETROLED Y CARBON 9 10 3551a 3551b MANUFACTURA DE PRODUCTOS DE CAUCHO 11 3610 3697 INDUSTRIA DE MINERALES NO METALICOS 12 3710 3710a INDUSTRIA METALICA BASICA 13 3840a 3843 MANUFACTURA DE PRODUCTOS METALICOS, MAQUINARIA Y EQUIPO 14 4101a 4102 ELECTRICIDAD, GAS Y VAPOR 2 .8 .2 . LISTA DE ACTIVIDADES DE DESARROLLO. La fuente de informacion es tambien la ref .6, y corresponde a la subdivision de los giros industriales en las distintas actividades comprendidas en ellos . Este desglose corresponde igualmente al de la O .N .U . El contenido del archivo se muestra a continuacion. Ver tabla 2 .1 .2 . TABLA 2 .1 .2 CLASIFICACION NUMERO DE LA ACTIVIDAD DE GIRO ------------- ----------------------------- NOMBRE DE LA ACTIVIDAD 1110a 1110b 1 CORRAL DE ENGORDA PARA RESES 1 CORRAL DE ENGORDA PARA CERDOS 111OC 1 CORRAL DE ENGORDA PARA POLLOS 111Od I CORRAL DE ENGORDA PARA CORDEROS 111Oe 1 CORRAL DE ENGORDA PARA PAVOS 111Of I CORRAL DE ENGORDA PARA PATOS 111Og 1 GRANJAS LECHERAS 111Oa 1 GRANJAS DE GALLINAS PONEDORAS 3111a 2 MATADEROS 3111b 3111c 2 EMPACADORAS 2 PROCESAMIENTO DE AVES DE CORRAL 3112 2 MANUFAOCTURA DE PRODUCTOS LACTEOS 3113 2 ENLATADO DE FRUTAS Y VERDURAS 3114 2 ENLATADO DE PESCADO 3115a 3115b 2 EXTRACCION DE ACEITE DE OLIVA 2 REFINACION DE ACEITE VEGETAL 3116 2 MOLINOS DE GRANOS 3118a 2 INGENIOS AIUCAREROS 311Gb 2 MANUFACTURA DE AZÚCAR DE REMOLAO3IA 3121a 2 MANUFACTURA DE ALNIDON Y GLUCOSA 3121b 3131a 2 MANUFACTURA DE LEVADURA 3 DESTILERIAS DE OLOOHOL 3133a 3 MANUFACTURA DE MALTA Y LICOR DE MALTA 31336 3 FERMENTACION DE CERVEZA 3133c 3133d 3 PRODUCCION TOTAL DE CERVEZA 3 PRODUCCION DE VINO 3134 .3 INDUSTRIAS DE REFRESCOS Y AGUAS CARBONATADAS 3211a 3211b 3211c 3211d 4 LANA (INCLUYENDO ESTREGADO) 4 LANA (SIN ESTREGAR) 4 ALGODONG 4 RAYON 321le 4 ACETATO 3211f 4 NAILON 321Gg 4 ACRILICO 3211b 3231a 3231b 3231c 3311a 3311b 4 POLIESIER 5 TENERLAS DE CUERO (A BASE DE SALES DE CROMO) 5 TENERIAS DE CUERO (CON AGENTES VEGETALES) 5 TERMINADOS DE CUERO SOLAMENTE 6 MANUFACTURA DE MADERA TERCIADA 6 MANUFACTURA DE TABLONES 3411a 3411b 3411c 7 PULPA SULFATARA (KRAFT) 7 PULPA SULFITADA 7 PULPA SEMIBUIMICA 341 Id 7 FABRICAS DE PAPEL 3411e 3411f 7 FABRICAS DE PAPEL (CON SISTEMAS DE REUSO DE AGUA) 7 FABRICAS DE PAPEL (CON SISTEMA MEJORADO DE REUSO DE AGUA) 3511 8 MANUFACTURA DE PRODS OUINICOS INDUSTRIALES BASICOS EXCEPTO FERTILIZTES 3511a 3511b 8 ACIDO CLORHIDRICO 8 ACIDO SULFÚRICO 3511c 3511d 8 ACIDO NITRICO 9 ACIDO FOSFORICO (SIN LAGUNA) 351le 8 ACIDO FOSFORICO (CON LAGUNA) 3511f 8 ACIDO FOSFORICO (PROCESO TERNICO) 35118 8 AMONIACO 3511h 8 HIDROXIDO DE SODIO, METODO DE CATODO DE MERCURIO 0 PROC CASTNER-KELLNR 35111 8 HIDROXIDO DE SODIO (CELDA DE DIAFRAGMA) 3511j 9 ACIDO FLUORHIDRICO 3511k 9 PIGMENTOS DE CROMO 351ln 8 VER CUADRO 2 .3, ANEXO 2 PAS .66 EVAL RAPIDA FUENTES DE CONTANINACION 3511n 9 VER CUADRO 2 .3, ANEXO 2 PAB.66 EVAL RAPIDA FUENTES DE CONTANINACION 351 lo 8 VER CUADRO 2 .3, ANcX0 2 PAS .66 EVAL RAPIDA FUENTES DE CONTANINACION 3511p 8 VER CUADRO 2 .3, ANEXO 2 PAG .66 EVAL RAPIDA FUENTES DE CONTANINACION 3512 8 MANUFACTURA DE FERTILIZANTES Y PLAGUICIDAS 3512a 3512b 3512c 3512d 8 SUPERFOSFATO NORMAL (191 P205) 8 SUPERFOSFATO TRIPLE (481 P205) 9 FOSFATO DE AMONIO (201 P205) 8 FOSFATO DI-AMONIO (201 P205) 3512e 3512f 3512g 3512h 8 DDT 9 HERBICIDAS DE HIDROCARBUROS CLORADOS 8 CARBANATOS 8 PARATION 3513 8 RESINAS SINTETICAS, PLASTICOS Y FIBRAS 3513a 3513b 3513c 3513d 3513e 9 FIBRAS DE RAYON 8 ELASTOMEROS VULCANIZABLES - CAUCHO SINTETICO 8 POLIOLEFINAS (POLIETILENOS) 8 RESINAS DE POLIESTIRENO Y COPOL IMEROS 8 RESINAS VINILICAS (PVC) 3513f 3513g 3513h 3513i 8 RESINAS DE POLIESTER Y ALKIDICAS 9 RESINAS FENOLICAS 8 RESINAS ACRILICAS (POLI(IERO A GRANEL) 8 RESINAS ACRILICAS (POLINERO EMULSIONADO) 3521 9 MANUFACTURA DE PINTURAS, BARNICES Y LACAS 3522 8 MANUFACTURA DE DROGAS Y MEDICINAS 3522a 3522b 8 PRODUCTOS BIOL0GICOS 8 PRODUCTOS MEDICOS, GUIMICOS Y BOTANICOS 3523 9 JABONES Y LIMPIADORES 3523a 3523b 3523c 3523d 3523e 8 JASON DE HERVOR A CALDERA 8 JABON DE ACIDOS GRASOS 8 DETERGENTES 8 REFINACION DE GLICERINA 9 DETERGENTES LIQUIDOS 3529 8 NANUF .DE SOMA ANIMAL (DE MATERIAS PRIMAS COMO CARNE,CUERO Y CROMO) 3530 9 REFINACION DE PEtROLEO 3530a 3530b 3530c 8 REFINERIAS DE DESTILACION PRIMARIA 8 REFINERIAS DE PIROLISIS A PRESION BAJA 8 REFINERIAS DE PIROLISIS A PRESION ALTA 3530d 3530e 3530f 3530g 8 REFINERIAS DE ACEITE DE LUBRICACION 3540 3540a 3540b 3540c 8 REFINERIAS PETROOUIMICAS 8 REFINERIAS INTEGRALES 9 RE-REFINACION DE ACEITE LUBRICANTE GASTADO 9 MANUFACTURA DE PRODUCTOS ASFALTICOS 9 PAVIMENTACION ASFALTICA 9 TECHADO ASFALTICO 9 FIELTRO PARA CONSTRUCCION Y ((ORMIGON MANUFACTURA DE LLANTAS Y CÁMARAS 355Ia 10 3551b 10 OTROS PRODUCTOS DE CAUCHO 3610 11 MANUFACTURA DE CERAMICA, PORCELANA Y L01A DE BARRO 3620 11 MANUFACTURA DE VIDRIO Y PRODUCTOS DE VIDRIO 3621 11 MANUFACTURA DE PRODUCTOS DE ARCILLA ESTRUCTURAL 3692 11 MANUFACTURA DE CEMENTO 3697 11 MANUFACTURA DE CAL 3710 12 INDUSTRIA DE HIERRO Y EL ACERO 3710a 12 HORNO DE COQUE METALURBICO 3710b 3710c 3710d 3710e 3710f 12 HORNO DE CHORRO 12 HORNO DE ACERO BOF 12 HORNO DE ACERO ABIERTO 12 HORNO DE ACERO DE ARCO ELECTRICO 12 FUNDIDORAS DE ACERO E HIERRO GRIS 3720 12 INDUSTRIA BASICA DE METALES NO FERROSOS 3720a 3720b 3720c 3720d 12 MANUFACTURA DE ALUMINIO A PARTIR DE BAUXITA 12 FUNDICION PRIMARIA DE ALUMINIO 12 FUNDICION SECUNDARIA DE ALUMINIO 12 FUNDICION DE COBRE A PARTIR DE MINERALES SULFITADOS 3720e 3720f 3720g 3720h 3720i 12 REFINACION ELECTRO.ITICA DE COBRE 12 FUNDICION SECUNDARIA DE COBRE 12 FUNDIDORAS DE LATON Y BRONCE 12 FUNDICION DE PLOMO A PARTIR DE MINERAL 12 FUNDICIOI SECUNDARIA DE PLOMO Y REFINACION 3720j 3720k 12 FUNDICION PRIMARIA DE ESTANO Y REFINACION 12 FUNDICION PRIMARIA DE ZINC 37201 12 TRATAMIENTO SECUNDARIO DE ZINC 3720a 3720n 3720a 12 FUNDICION PRIMARIA DE ANTIMONIO 12 FUNDICION PRIMARIA DE MERCURIO Y REFINACION 12 FUNDICION PRIMARIA DE TITANIC Y REFINACIOR 3840a 3840b 13 ENSERES DONESTICOS 13 GALVANOPLASTIA (DEPOSITO DE COBRE,NIQUEL,CRONO Y ZINC) 3841 13 CONSTRUCCION DE BARCOS 3843 13 MANUFACTURA DE VEHICULOS AUTOMOTORES 4101a 4101b 14 PLANTAS TERMOELECTRICAS DE LIGNITO 14 PLANTAS TERMOELECTRICAS DE CARBON BITUMINOSO 4102 14 MANUFACTURA DE GAS A PARTIR DE HORNOS DE COQUE 2.8 .3 . FACTORES DE EMISION DE CONTAMINANTES AL AIRE, AGUA Y SUELO DE LAS ACTIVIDADES DE DESARROLLO. Para cada una de las actividades de desarrollo mencionadas en el parrafo 2 .1 .2 ., se presentan los factores de emision de contaminantes que generan ya sea al aire, al agua o al suelo (residuos solidos) . Estos factores se tomaron de la ref .6 y provienen de diversas fuentes bibliograficas (por lo general norteamericanas) . El archivo esta integrado por la informacion que se presenta a continuacion. Ver tabla 2 .1 .3 . T A 8 L A CLAVE DE ACTIVIDAD 3114 3114 3116 3138a 3121a 3133c 3211c 3311a 3411a 3411a 3411a 3411a 3411a 3511b 3511c 3511d 3511e 3511f 3511g 3511g 3512 3512 3512a 3512a 3512b 3512c 3512c 3512d 3512d 3512e 3512e 3512e 3512f 3512f 3512f 3512f 3513 3513 3513a 3513a 3513b 3513c 3513c 3521 3521 3521a 3521a 3521b 3521c 3523 2 .1 .3 CLAVE DE CANTIDAD CONTAMINANTE ------------ EMITIDA 1 6 1 1 1 1 1 4 1 2 5 6 2 2 3 13 13 1 4 9 1 13 1 13 13 1 13 1 13 1 3 9 1 2 3 9 7 6 7 6 4 1 4 1 4 1 4 4 4 1 0.050 0 .005 8 .800 20 .000 4 .000 4 .000 14 .000 1 .200 123 .000 2.500 35 .000 7.200 77 .000 20.000 26 .200 20 .100 20 .100 5 .100 45 .000 101 .000 4 .500 0.075 4 .500 0 .075 0 .015 41 .000 0 .020 41 .000 0 .020 5 .000 2 .000 1 .500 10 .000 0.700 2 .000 5.000 27 .500 3 .000 27 .500 3 .000 20 .000 17 .000 3 .500 1 .000 15.000 1 .000 15.000 40 .000 770.000 45 .000 IDIILOD Kglt Kg/t Kg/t Kg/t Kg/t Kg/e3 Kg/t Kglm3 Kg/t Kg/t Kglt Kg/t Kg/t Kq/t Kglt Kg/t Kg/t Kg/t Kglt Kg/t Kg/t Kg/t Kg/t Kg/t Kg/t Kq/t Kg/t Kg/t Kg/t Kg/t Kg/t Kg/t Kglt Kg/t Kglt Kq/t Kglt Kg/t Kg/t Kg/t Kg/t Kg/t Kglt Kg/t Kg/t Kg/t Kglt Kg/t Kglt Kg/t 3523c 3540 3540a 3540b 3540b 3540b 3610 3620 3620 3521 3692a 3697 3710 3110 3710 3710 3710 3710 3710a 3710a 3710a 3710a 3710a 3710a 37106 3710b 3710c 3710e 3710f 3720c 3720d 3720g 3720h 3720h 3720i 3720i 3720k 3720k 37201 3840a 38436 4101a 4101a 4101a 4101a 4101a 4101a 4101a 4101a 4101a 4101a 410fa 4101a 1 1 1 1 4 5 1 1 12 1 1 1 1 2 3 4 5 9 1 2 3 4 5 9 1 5 5 5 5 1 1 1 1 2 1 2 1 21 1 4 4 1 2 3 4 5 9 1 2 3 4 5 9 45 .000 22.000 22 .000 2.300 0.800 0 .500 65 .000 1 .000 10 .000 Kg/t 65 .000 170 .000 170 .000 Kg/t Kg/t, Kg/t 1 .750 2 .010 0 .020 2 .100 0 .630 0 .090 2 .500 2 .900 0 .030 Kg lt Kg/t Kg/t Kg/t Kg/t Kg/t Kg/t Kg/t Kg/t 3 .000 0 .900 0 .130 Kg/t Coque Kg/t Coque Kg/t Coque 75.000 875 .000 69.500 9 .000 72 .500 2.150 270 .000 30 .000 300 .000 297 .000 65 .000 43 .000 300 .000 100 .000 50 .000 16 .200 16 .200 1 .750 2 .010 0 .020 2 .100 0 .630 Kg/t Kg/t Kg/t Kg/t Kg/t Kg/t Kg/t Kglt de C de C de C de C de C de C Coque Coque Coque Kg/t Kg/t Kg/t Kg/t Kg/t Kg/t Kg/t Kg/t Kg/t Kg/t KgIt Kg/t Kg /t Kg/t Kg/t Kg/t , de Kg/t Kg/t de Kg/t de Kg/t de Kg/t de Kg/t de fe C C C C C 0 .090 2 .500 2 .900 0 .030 3 .000 Kg/t Kg/t Kg lt Kg/t Kg/t de C Coque Coque Coque Coque 0.900 0.130 Kg/t Coque Kg/t Coque 2~1~4~ LISTA DE CONTAMINANTES. Este archivo esta formado por una tabla que incluye los nombres, y en la mayoria de los casos los simbolos, de los contaminantes del aire, agua y suelo mas comunes . Esta estructurado de tal forma que los contaminantes se agrupan de acuerdo al receptor en el cual son descargados (aire, agua , suelo) . A continuacion se presenta el contenido del archivo. Ver tabla 2 .1 .4 . TABLA NUMERO 2 .1 .4 DEL CONTAMINANTE CONTAMINANTE ------------ ------------ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 3i 32 PART ICULAS S02 OXIDO DE NITROSENO HIDROCARBUROS CO H2S CS2 FENOLES NH3 CU HCL F2 FLUORUROS HF DB05 D40 SS ACEITE NITR06éNO (N) FENOLES P205 S2CN Hg Cu Ni Cr Zn Cd Sn HIDROCARBUROS CLORADOS F- RECEPTOR' 6 6 8 6 6 6 6 6 6 G 6 G 6 G L L L L L L L l L L L L L L L L L L 2.1 .5. REGLAMENTACIONES NACIONALES Y DE OTROS PAISES. Este archivo consta de un conjunto de tablas con informacion sobre reglamentos referentes a contaminacion del aire, agua y por ruido de nuestro informacion sobre pais (ref .5) ; legislacion ademas se integro ambiental en otros paises . Las tablas incluidas se describen a continuacion. Ver tablas 2 .1 .5 .a hasta 2 .1 .5 .i T A 8 L A 2 .1 .5 .a REGLAMENTO PARA LA EMISION DE POLVOS. 17-SEP-1971 . ARTICULO 20 . EN TODA OPERACION, PROCESO 0 ACTIVIDAD INDUSTRIAL, LA EMISION DE POLVOS NO DEBERA EICEDER DE LAS CANTIDADES INDICADAS EN RELACION AL PESO DE PROCESO CORRESPONDIENTE. --------------------------------------------------------------------------PESO DEL PROCESO Ton/H EMISION MAXIMA PERMITIDA 1Kg/N1 INDUSTRIA NUEVA INDUSTRIA EXISTENTE ------------------------------------------------------------------------0.025 0 .489 0 .652 0.050 0 .780 1 .040 0 .100 1 .239 1 .652 0.220 1 .974 2 .632 0 .300 2 .589 3 .452 0.400 3 .141 4 .188 0.500 3 .648 4 .364 0.750 4 .788 6 .348 1 .000 5 .805 7 .740 1 .250 6 .741 8.988 1 .500 7 .617 10 .156 2 .000 9 .237 12.316 2.500 10 .725 14 .300 3 .000 12 .120 16.160 3.500 13 .437 17 .916 4 .000 14.694 19.592 4 .500 15.900 21 .200 5 .000 17 .064 22.752 6 .0 19.281 26 .708 8 .0 23 .382 31 .176 10 .0 27 .153 36 .201 15 .0 35 .625 47 .500 20 .0 43 .200 57 .600 25.0 50 .166 66 .888 30.0 55 .572 74 .096 35.0 57 .462 76 .616 40.0 59 .127 78 .836 45.0 60 .564 80 .752 50.0 61 .926 82 .568 60.0 64 .269 85 .693 70.0 65 .556 87 .408 80.0 68 .052 90 .736 100.0 71 .154 94 .872 500.0 95 .436 127.248 1000.0 107.313 143 .084 3000.0 130.080 172.650 TABLA 2 .1 .5 .6 REGLAMENTO PARA LA EMISION DE POLVOS . 17-SEP-1971 . ARTICULO 20 . EN TODA OPERACION, PROCESO 0 ACTIVIDAD INDUSTRIAL, LA ENISION DE POLVOS NO DEDERA EXCEDER DE LAS CANTIDADES INDICADAS EN RELACION AL AL VOLUMEN DE 6AS EN LA FUENTE . CONCENTRACION INDUSTR. VOLUMEN DE 6AS EN CONCENTRACION INDUSTR . LA FUENTE M3 NORMAL NUEVA Mg/N3 NORMAL EXISTENTE Mg/N3 NORMAL --------------------------------------------------------------------------100 125 819.0 795.0 1132.0 1000 .0 150 175 200 750.0 714 .0 684 .0 1000.0 952 .0 912.0 300 400 500 750 600.0 543 .0 510.0 800.0 724.0 680.0 592.0 1000 1500 444 .0 405.0 357 .0 2000 3000 324 .0 285 .0 432.0 380.0 4000 5000 7500 258 .0 240 .0 210.0 344.0 320.0 280.0 10000 15000 20000 192 .0 168 .0 154 .2 256.0 224.0 205 .6 30000 40000 50000 135 .0 123 .0 180.0 164 .0 152 .0 114 .0 540 .0 476.0 TABLA 2 .1 .5 .c REGLAMENTO PARA PREVENCION Y CONTROL DE LA CONTAMINACION DE AGUA . (29-MAR -1973) . ARTICULO 24 . LOS CUERPOS RECEPTORES DE UNA CUENCA 0 UNA REGION. CLASIFICACION DE LAS AGUAS DE LOS CUERPOS RECEPTORES SUPERFICIALES. ----------------------------------------------------------------------------CLASE USOS pH TEMPERATURA IC) ----------------------------------------------------------------------------ABASTECIMIENTO PARA SISTEMAS DE AGUA POTABLE E INDUSTRIA DA ALIMENTICIA CON DESINFECCION UNICAMENTE . RECREACION CON- TACTO PRIMARIO Y LIBRE PARA CONDICIONES NATURALES 6 .3 NAS 2 .5 A B .5 LOS USOS DI, DII, DIII. ABASTECIMIENTO DE AGUA POTAILE CON DI TRATAMIENTO CONVENCIONAL 6 .0 ICOAGULACION, SEDIMENTACION, A FILTRACION Y DESINFECCION) E 9 .0 CONDICIONES NATURALES NAS 2.5 INDUSTRIAL. AGUA ADECUADA PARA USO RECREADII DIII TIVO DE CONSERVACION DE FLORA, 6 .0 A FAUNA Y USOS INDUSTRIALES 9 .0 AGUA PARA USO AGRICOLA E IN- 6 .0 DUSTRIAL . A CONDICIONES NATURALES MAS 2.5 CONDICIONES NATURALES MAS 2 .5 9 .0 DIV AGUA PARA USO INDUSTRIAL 5 .0 (EXCEPTO PROCESAMIENTO DE A ALIMENTOS) . 9 .5 --------------- TABLA 2 .1 .5 .d REGLAMENTO PARA PREVENCION Y CONTROL DE LA CONTAMINACION DE AGUA . 129-MAR1973) . ARTICULO 24 . VALORES MAXIMOS PERMISIBLES DE SUBSTANCIAS TOXICAS EN LOS CUERPOS RECEPTORES. ---------------------------------------------------------------------------CLASIFICACION LIMITES MAXIMOS EN MILISRAMOS POR LITRO DA DI DII DIII ---------------------------------------------------------------------------ARSENICO 0 .05 0 .05 1 .00 5 .00 BARIO 1 .00 1 .00 5 .00 BORO 1 .00 1 .00 2 .0 CADMIO 0.01 0 .01 0 .01 0 .005 COBRE 1 .00 1 .00 0 .1 1 .0 CROMO HEXAVALENTE 0 .05 0 .05 0 .1 5 .00 MERCURIO 0.005 0 .005 0 .01 PLOMO 0 .05 0.05 0 .10 5 .00 SELENIO 0 .01 0 .01 0 .05 0 .05 CIANURO 0 .20 0.20 0 .02 FENOLES 0 .001 0 .001 1 .00 SUSTANCIAS ACTIVAS AL AZUL DE METILENO 1DETERSENTESI 0.50 0 .50 0 .15 0.15 0 .017 0 .003 0.042 0 .017 0 .001 '0 .018 0 .018 0 .056 0.035 0.017 0 .003 0.042 0.017 0 .001 0 .018 0 .018 0 .056 0 .035 0.100 0.005 0 .100 0 .100 0 .005 0 .100 3 .0 EXTRACTABLES CON CLOROFORMO PLAGUICIDAS ALORIN CLORDANO D .D.T. DIELDRIN ENDRIN HEPTACLORO EPDXICO DE HEPTACLORO LINDANO METOXICLOiO FORFATOS ORGANICOS CON CARBAMATOS TOXAFENO HERBICIDAS TOTALES RADIACTIVIDAD BETA RADIO 226 ESTRONCIO PICOCURIES I LITRO 1 .000 1 .000 3 3 1 .000 3 10 10 10 2 .1 .5 .e TABLA REFOLAMENTO PARA LA PROTECCION DEL AMBIENTE CONTRA LA CONTAMINACION ORIGINADA POR LA EMISION DE RUIDO . 6-DIC-1982. --------------- ------------------ -------------------------------------------ARTICULOS 11, 19, 22, 29.' ARTICULO 11. EL NIVEL DE EMISION DE RUIDO MAHMO PERMISIBLE EN FUENTES FIJAS ES DE 6B dB (A) OE LAS SEIS A LAS VEINTIDOS HORAS, Y DE 65 dB DE LAS VEINTIDOS A LAS SEIS HORAS . ESTOS NIVELES SE MEDIRAN EN FORMA CONTINUA 0 SEMICONTINUA EN LAS COLINDANCIAS DEL PREDIO, DURANTE UN LAPSO NO MENOR DE 15 MINUTOS, CONFORME A LAS NORMAS CORRESPONDIENTES. EL GRADO DE MOLESTIA PRODUCIDO POR LA EMISIOi DE RUIDO MAXIMO PERMISIBLE SERA DE 5 EN UNA ESCALA LIKERT MODIFICADA DE 7 GRADOS . ESTE GRADO DE MOLESTIA SERA EVALUADO EN UN UNIVERSO ESTADISTICO REPRESENTATIVO CONFORME A LAS NORMAS CORRESPONDIENTES. ARTICULO 19. LOS CIRCOS, FERIAS Y JUEGOS MECÁNICOS QUE SE INSTALEN EN LA CERCANIA DE CENTROS HOSPITALARIOS, SUARDERIAS, ESCUELAS, ASILOS, LUGARES PARA DESCANSO Y OTROS SITIOS DONDE EL RUIDO ENTORPEZCA CUALQUIER ACTIVIDAD, SE DEBERA AJUSTAR A UN NIVEL NAXIMO PERMISIBLE DE EMISION DE RUIDO DE 55 dB IA) . ESTE NIVEL SE MEDIRA EN FORMA CONTINUA 0 SENICONTINUA EN LAS COLINDANCIAS DEL PREDIO AFECTADO DURANTE UN LAPSO NO MENOR DE 15 MINUTOS, CONFORME A LAS NORMAS CORRESPONDIENTES. ARTICULO 22. LOS APARATOS AMPLIFICADORES DE SONIDO Y OTROS DISPOSITIVOS SIMILARES ODE PRODUZCAN RUIDO EN LA VIA PUBLICA 0 EN EL MEDIO AMBIENTE DE LA COMUNIDAD SOLO PODRAN SER USADOS EN CASO DE SERVICIO DE BENEFICIO COLECTIVO NO COMERCIAL Y REQUERIRAN DE PERMISO, QUE OTORGARA LA AUTORIDAD COMPETENTE, SIEMPRE DUE EXCEDA UN NIVEL DE 75 dB (A), MEDIDO DE ACUERDO A LAS NORMAS CORRESPONDIENTES. ARTICULO 29. PARA EFECTOS DE PREVENIR Y CONTROLAR LA CONTAMINACION AMBIENTAL ORIGINADA POR LA EMISION DE RUIDO, OCASIONADAVDR AUTOMOVILES, CAMIONES, AUTOBUSES, TRACTO-CAMIONES Y SIMILARES, SE ESTABLECEN LOS SIGUIENTES NIVELES PERMISIBLES EXPRESADOS EN dB IA). PESO BRUTO VEHICULAR NIVEL MAXIMO HASTA 3,000 Kg MAS DE 3,000 Kg Y HASTA 1,0000 Kg MAS DE 10,000 Kg PERMISIBLE EN 79 81 84 dB IA) LOS VALORES ANTERIORES SERAN NEDIDOS A 15 N DE DISTANCIA DE LA FUENTE POR EL IO:TODO DINAMICO DE CONFORMIDAD CON LA NORMA CORRESPONDIENTE . TABLA 2 .1 . 5 . f REGLAMENTO SOBRE LA PREVENCION DE LA CONTANINACION DEL MAR POR VERTINIETNTO DE DESECHOS Y OTRAS MATERIAS . (23-ENE-1979). ---______________________________________ --________________________________ ANEXOS I, II, III ------------------------------------------------------------------------- ANEXO I. 1 . COMPUESTOS ORGANICOS HAL0GENADOS. 2. MERCURIO Y COMPUESTOS DE MERCURIO. 3. CADMIO Y COMPUESTOS DE CADMIO. 4 . PLASTICOS PERSISTENTES Y DEMAS MATERIALES SINTETICOS PERSISTENETS TALES CONO REDES Y CABOS, QUE PUEDAN FLOTAR 0 QUEDAR EN SUSPENSIN EN EL MAR DE MODO QUE PUEDAN OBSTACULIZAR MATERIALMENTE LA PESCA, LA NAVESACION U OTRAS UTILIZACIONES LEGITIMAS DEL MAR. 5 . PETROLEO CRUDO, FUEL-OIL, ACEITE PESADO DIESEL, Y ACEITES LUBRICANTES, FLUIDOS HIDRALICOS, Y MEZCLAS DUE CONTENGAN ESOS HIDROCARBUROS, CARGADOS CON EL FIN DE SER VERTIDOS. 6 . DESECHOS U OTRAS MATERIAS DE ALTO NIVEL RADIACTIVO QUE POR RAZONES DE SALUD PUBLICA, BIOLOSICAS 0 DE OTRO TIPO HAYAN SIDO DEFINIDAS POR EL ORGANO INTERNACIONAL COMPETENTE EN ESTA ESFERA, ACTUALMENTE EL ORGA NISMO INTERNACIONAL DE ENERGIA ATONICA, CONO INAPROPIADOS PARA SER VERTIDOS EN EL MAR. 7. MATERIALES DE CUALQUIER FORMA (POR EJEMPLO, SOLIDOS, LIQUIDOS, SEMILIQUIDOS, GASEOSOS 0 VIVIENTES) PRODUCIDOS PARA LA GUERRA DUIMICA Y BIOLOSICA. 8. LOS PARRAFOS PRECEDENTES DEL PRESENTE ANEXO NO SE APLICARAN A SUSTANCIAS QUE SE TRANSFORMEN RAPIDAMENTE EN EL MAR EN SUSTANCIAS INOCUAS MEDIANTE PROCESOS FISICOS, QUIMICOS 0 BIOL06ICOS, SIEMPRE QUE: I) NO DEN MAL SABOR A LA CARNE DE LOS ORGANISMOS MARINOS COMESTIBLES, 0 II) NO PONGAN EN PELIGRO LA SALUD DEL HOMBRE 0 DE LOS ANIMALES DONESTICOS. SI EXISTIESE ALGUNA DUDA SOBRE SI UNA SUSTANCIA ES INOCUA, LA PARTE DEBERA SEGUIR EL PROCEDIMIENTO CONSULTIVO DISPUESTO EN EL ARTICULO XIV. 9 . EL PRESENTE ANEXO NO SE APLICARA A DESECHOS U OTROS MATERIALES (TALES CONO LODOS DE AGUAS RESIDUALES Y ESCOMBROS DE DRAGADOS) QUE CONTENGAN COMO VESTIGIOS DE CONTAMINANTES, LAS MATERIAS A QUE SE HACE REFERENCIA EN LOS APARTADOS 1-5 DEL PRESENTE ANEXO . ESTOS DESECHOS ESTARAN SUJETOS A LAS DISPOSICIONES DE LOS ANEXOS II Y III SEGNN PROCEDA. ANEXO II . LAS SUBSTANCIAS Y MATERIAS QUE PARA SU VERTIMIENTO REQUIEREN ESPECIAL ATENCION SE ENUMERAN A CONTINUACION: A. DESECHOS QUE CONTENGAN CANTIDADES CONSIDERABLES DE LAS MATERIAS SIGUIENTES: ARSENICO. PLOMO. COBRE Y SUS COMPUESTOS. ZINC. COMPUESTOS ORGANICOS DE SILICIO. CIANUROS. FLUORUROS. PESTICIDAS Y SUS SUBPRODUCTOS NO INCLUIDOS EN EL ANEXO 1 B. AL CONCEDER PERMISO PARA EL VERIMIENTO DE GRANDES CANTIDADES DE ACIDOS Y ALCALIS, SE TENDRA EN CUENTA LA POSIBLE PRESENCIA EN ESOS DESECHOS DE LAS SUBSTANCIAS ENUMERADAS EN EL APARTADO A Y DE LAS SUBSTANCIAS ADICIONALES SIGUIENTES: BERILIO. CROO. NIQUEL Y SUS COMPUESTOS. VANADIO. C. LOS CONTENEDORES, CHATARRA Y OTROS DESECHOS VOLUMINOSOS QUE PUEDAN HUN DIRESE HASTA EL FONDO DEL MAR Y OBSTACULIZAR SERIAMENTE LA PESCA 0 LA NAVESACION. D. LOS DESECHOS RADIACTIVOS U OTRAS MATERIAS RADIACTIVAS NO INCLUIDOS EN EL ANEXO I . EN LA EXPEDICION DE PERMISOS PARA EL VERTIMIENTO DE ESTAS MATERIAS LAS PARTES CONTRATANTES DEBERAN TEMER DEBIDAMENTE EN CUENTA LAS RECOMENDACIONES DEL ORGANO INTERNACIONAL COMPETENTE EB ESTA ESFERA EN LA ACTUALIDAD EL ORGANISMO INTERNACIONAL DE ENERGIA ATONICA. ANEXO III. ENTRE LOS FACTORES QUE DEBERAN EXAMINARSE AL ESTABLECER CRITERIOS QUE RIJAN LA CONCESION DE PERMISOS PARA EL VERTIMIENTO DE MATERIAS EN EL MAR ESTALA LOS SIGUIENTES: A . CARACTERISTICAS Y COMPOSICION DE LA MATERIA. 1. CANTIDAD TOTAL Y CONPSICION MEDIA DE LA MATERIA VERTIDA (POR EJEMPLO POR ANO). 2. FORMA, POR EJEMPLO, SOLIDA, LODOSA, LIQUIDA 0 GASEOSA. 3. PROPIEDADES : FISICAS (POR EJEMPLO, LA SOLUBILIDAD Y DENSIDAD) QUIMICAS Y BIOQUIMICAS (POR EJEMPLO, DEMANDA DE OXIGENO, NUTRIENTES) Y BIOLOSICA (POR EJEMPLO, PRESENCIA DE VIRUS, BACTERIAS, LEVADURAS, PARASITOS). 4. TOXICIDAD. 5. PERSISTENCIA : FISICA, QUIMICA Y BIOLORICA. 6. ACUMRULACION Y BIOTRANSFORNACION EN MATERIALES BIOLOGICOS 0 SEDIMENTOS. 7. SUSCEPTIBILIDAD A LOS CAMBIOS FISICOS, QUIMICOS Y BIOQUIMICOS E INTERACCION EN EL MEDIO ACUATICO CON OTROS MATERIALES ORSANICOS DISUELTOS. S . PROBABILIDAD DE QUE SE PRODUZCAN CONTAMINACIONES U TOROS CAMBIOS QUE REDUICAN LA POSIBILIDAD DE CONERCIALIZACION DE LOS RECURSOS (PESCADOS, MOLUSCOS, ETC .) B. CARACTERISTICAS DEL LUGAR DE VERTIMIENTO Y METODO DE DEPOSITO. 1. SITUACION (POR EJEMPLO, COORDENADAS DE LA ZONA DE VERTIMIENTO, PROFUNDIAD Y DISTANCIA DE LA COSTA), SITUACION RESPECTO A OTRAS ZONAS (POR EJEMPLO, ZONAS DE ESPARCIMIENTO, DE DESOVE, DE CR1ABERDS Y DE PESCA Y RECURSOS EXPLORARLES). 2. TASA DE ALIMENTACION POR PERIODO ESPECIFICO (POR EJEMPLO, CANTIDAD POR DIA, POR SEMANA, POR MES). 3. METODOS DE ENVASADO Y CONTENCION, SI LOS HUBIERE. 4. DILUCION INICIAL LOGRADA POR EL METODO DE DESCARGA PROPUESTO 5. CARACTERISTICAS DE LA DISPERSION (POR EJEMPLOO, EFECTOS DE LAS CORRIENTES, MAREAS Y VIENTO SOBRE EL DESPLAZAMIENTO HORIIONTAL Y LA MEZCLA VERTICAL). 6. CARACTERISTICAS DEL AGUA (POR EJEMPLO, TEMPERATURA, pH, SALINIDAD, ESTRATIFICACION, INDICES DE OXIGENO DE LA CONTAMINACION, OXIGENO DISUELTO (CO), DEMANDA QUIMICA DE OXIGENO (DQO) Y DEMANDA BIOQUIMICA DE OXIGENO (DBO), NITROGEN() PRESENTE EN FORMA ORGANICA Y MINERAL INCLUYENDO AMONIACO, MATERIAS EN SUSPENSION, OTROS NUTRIENTES Y PRODUCTIVIDAD. 7. CARACTERISTICAS OE LOS FONDOS (POR EJEMPLO, TOPOGRAFIA, CARACTERISTICAS GEOQUIMICAS Y SEOLOGICAS, PRODUCTIVIDAD BIOLOGICA). 8. EXISTENCIA Y EFECTOS DE OTROS VERTIMIENTOS QUE SE HAYAN EFECTUADO EN LA ZONA DE VERTIMIENTO (POR EJEMPLO, ANTECEDENTES SOBRE CONTENIDO DE METALES PESADOS Y CONTENIDO DE CARBONO ORGANICO). 9. AL EXPEDIR UN PERMISO PARA EFECTUAR UNA OPERACION DE VERTIMIENTO LAS PARTES CONTRATANTES DEBERAN CONSIDERAR SI EXISTE UNA BASE CIENTIFICA ADECUADA, PARA DETERMINAR, COMO SE EXPONE EN EL PRESENTE ANEXO LAS OCNSEUCENCIAS DE TAL VERTIMIENTO TENIENDO EN CUENTA LAS VARIACIONES ESTACIONALES. C. CONSIDERACIONES Y CONDICIONES GENERALES. 1. POSIBLE EFECTOS SOBRE LOS ESPARCIMIENTOS (POR EJEMPLO, PRESENCIA DE MATERIAL FLOTANTE 0 VARADO, TURBIDEZ, MALOS OLORES, DECOLORACION Y ESPUMAS). 2. POSIBLES EFECTOS SOBRE LA VIDA MARINA, PISCICULTURA Y (ONQUICULTURA RESERVAS DE ESPECIES MARINAS PESQUERIAS, Y RECOLECCION Y CULTIVO DE ALGAS MARINAS. 3. POSIBLES EFECTOS SOBRE OTRAS UTILIZACIONES DEL MAR (POR EJEMPLO, MENOSCABO DE LA CALIDAD DEL AGUA PARA USOS INDUSTRIALES, CORROSION SUBMARINA DE LAS ESTRUCTURAS, ENTORPECIMIENTO DE LAS OPERACIONES POR LA PRESENCIA DE MATERIALES FLOTANTES, ENTORPECIMIENTO DE LA PESCA 0 DE LA NAVE6ACION POR EL DEPOSITO DE DESECHOS I OBJETOS SOLIDOS EN EL FONDO DEL MAR Y PROTECCION DE ZONAS DE ESPECIAL IMPOR TANCIA PARA FINES CIENTIFICOS 0 DE CONSERVACION). 4. DISPONIBILIDAD PRACTICA DE NETODOS ALTERNATIVOS DE TRATAMIENTO, EVACUACION 0 ELIMENACION SITUADOS EN TIERRA, 0 DE TRATAMIENTO PARA CONVERTIR LA MATERIA EN SUBSTANCIAS MENOS NOCIVAS PARA SU VERTI MIENTO EN EL MAR. TABLA 2 .1 .5 .g DE ESTANDARES CALIDAD DE AIRE BIOXIDO DE AZUFRE l 1 i2 oras ) ias ) nos ) mg/m3 ppm tiempo promedio t 3 Argentina 0 .07 0 .05 0 .3 0 .03 0.02 30 Bulgaria Canada 0.11 0 .02 0 .06 0 .01 0 .06 2 1 24 24 1 1 3 Mexico 0 .06 0 .15 0.03 0 .15 0.365 0.08 0.04 0.37 Rusia 0 .05 0 .14 0 .03 0 .1 0 .13 0 .02 0.9 0 .2 0.1 0.396 0 .45 0 .1 0 .05 0 .21 1 24 1 1 1 1 3 1 11 .5 1 .0 15.0 10.0 23 .0 14 .95 1 .0 10 .0 0 .9 13.0 8 .6 20 .0 13 .0 0 .9 8 24 8 8 8 8 1 1 1 1 1 1 1 0 .1 0.2156 0 .05 0 .11 nivel deseable Espana Estados Unidos s a Japan 24 1 1 1 3 3 24 1 24 24 1 3 1 1 24 1 BIOXIDO DE NITRO8ENO Argentina Espana Estados Unidos Mexico MONOXIDO DE CARBONO Argentina Bulgaria Espana Estados Unidos Japan Mexico Rusia 8 OIONO Israel Mexico PARTICULAS SUSPENDIDAS Argentina Canada 0 .15 0 .06 24 1 1 30 1 2 3 Espana Estados Unidos Italia Japon Mexico Rusia 0 .30 0 .26 0 .30 0.1 0 .275 0.15 24 24 24 24 24 24 1 1 1 1 1 1 TABLA 2 .1 .5 .h REGLAMENTO PARA PREVENCION Y CONTROL DE LA CONTAMINACION DE AGUA . C29-MAR -1973) . ARTICULO 13 . LOS RESPONSABLES DE LAS DESCARGAS DE AGUAS RESIDUALES QUE NO SEAN ARROJADAS EN EL ALCANTARILLADO DE LAS POBLACIONES, DEBERAN DENTRO DE UN PLAIO DE TRES ANOS CONTADOS A PARTIR DE LAFECHA DEL REGISTRO DE LA DESCARGA AJUSTARLA A LA SIGUIENTE TABLA. ---------------------------------------------------------------------------MAXIMOS TOLERABLES ---------------------------------------------------------------------------- I .- SOLIDOS SEDINENTABLES II .- GRASAS Y ACEITES III .- MATERIA FLOTANTE 1 .0 MI/L 70 Mgll NINGUNA QUE PUEDA SER RETENIDA POR MALLA DE 3 Ms DE CLARO LIBRE CUADRADO IV .- TEMPERATURA V .- POTENCIAL HIDROGENO pH o 35 C 4 .5 - 10 .0 TABLA 2 .1 .5 .1 PROTOCOLO RELATIVO A LA INTERVENCION EN ALTANAR POR SUSTANCIAS DISTINTAS DE HIDROCARBUROS. NOV-1980. LISTA DE SUSTANCIAS ESTABLECIDAS POR EL CONITE DE PROTECCION DEL MEDID MARINO. 1. HIDROCARBUROS. SOLUCIONES ASFALTICAS. BASES PARA NEICLAS ASFALTICAS. IIPERNEABILIIANTES BITUMINOSOS. RESIDUOS OE PRIMERA DESTILACIO(. HIDROCARBUROS. ACEITE CLARIFICADO. MEZCLAS OUE CONTENGAN CRUDOS DE PETROLEO. BITUMEN PARA RIEGO DE AFIRMADOS. ACEITES ARONATICOS (EXCLUIDOS LOS ACEITES VEGETALES). ACEITES BASE. ACEITES MINERALES. ACEITES PENETRANTES. ACEITES LIGEROS (SPINDLE). ACEITES PARA TURBINAS. DESTILADOS. FRACCION DIRECTA DE COLUMNAS. CORTE DE EXPANSION. SAS OIL. DE CRAQUED (CRACKING). BASES PARA GASOLINAS. BASES ALKILICAS. BASES POLINERAS. GASOLINA. NATURAL. DE AUTOMOVIL. DE AVIACION. DURECTA DE COLUMNA. COMBUSTIBLES PARA REACTORES. JP-1 (KEROSENO). JP-3. JP-4. JP-5 (KEROSENO PESADO). ATK (TURBO FUEL). ALCOHOL MINERAL. NAFTAS. DISOLVENTE. PETROLEO. FRACCION INTERMEDIA. 2. SUSTANCIAS NOCIVAS. ACETATO DE FENTIN (SECO). ACETONA. ACIDO BUTIRICO. ACIDO CACODILICO. ACIDO CIANHIDRICO. ACIDO CRONICO (TIROIIDO DE CROMO). ACIDO FLUORHIDRICO (SOLUCION ACUOSA 401). ACIDO FLUOSILICICO. ACIDO FOSFORICO. ACIDO NITRICO (901). ACRILATO DE N-NITILO. ACRILONITRILO. ACROLEINA. ALCOHOL METILICO. ALDRINA. AMIL ERCAPTAID. AMONIACO (SOLUCIOI ACUOSA 281). ANHIDRIDO ACETICO. ANILINA. ATRAIINA. AIIDA DE BARIO. AIINFO-METILO (BUTHION). BENCENO. BENCIDINA. BERILIO EN POLVO. BIFENILOS POLIHALOSENADOS. BROMO. BROMOACETATO DE ETILO. BROMURO DE CIAIDGENO. CARBARIL (SEVIN). CIANHI DIINA DE LA ACETONA. CIANURO DE BARIO. CIANURO DE BRONOBENCILD. CLORHIDRATO DE ANILINA. CLORHIDRINA ETILENICA 12- CLORO ETANOL). CLORHIDRINAS (CRUDAS). CLORDANO. CLOROACETONA. COLORACETOFENONA. CLORODINITROBENCENO. CLOROFORMO. CLOROPIERINAS. CLORURO DE CIANOSEND. CLORURO DE METILENO. COCCULUS (COCA OE LEVANTE) (SOLIDO). COMPUESTO DE ANTIMONIO. COMPUESTO DE ARSENICO. COMPUESTO DE CADMIO. COMPUESTO DE CIANURO. COMPUESTO DE COBRE. COMPUESTOS DE MERCURIO. COMPUESTOS DE PLOMO CRESOLES. D .D .T. DICLOROANILINAS. DICLOROBENCENOS. DICLORURO DE ETILENO. DIELDRINA. DIISOCIANATO DE TOLUENO. DIMETILANINA tDOLUCION ACUOSA 401) . MEZCLA DUTANDIPROPANO. MEZCLA DE METILACEIILEND Y PROPADIENO. 01100 DE ETILEND. PROPANO. PROPILENO. 4 . SUSTANCIAS RADIACTIVAS. LAS SUSTANCIAS RADIACTIVAS 60 137 226 239 Co Cs Ra Pu 235 U 2.1 .6 . CANTIDADES DE SUSTANCIAS PELIGROSAS INDICADORAS DE RIESGO. La informacion almacenada en este archivo se refiere a cantidades de sustancias riesgosas almacenadas para las cuales se requiere de una notificacion a las autoridades sanitarias competentes en el Reino Unido . La tabla fue extraida de la ref .4, y se presenta a continuacion. Ver tabla 2 .1 .6 . TABLA 2 .1 .6 PRODUCTO RIESSOSO CANITIDAD NININA PARA SER MONITOREADA 2 TONS . 20 TONS. 100 TONS. MISSEND CLORO ACRILONITRILO ACIDO CIANNIDRICO DISILFURO DE CARBONO DIOZIDO DE AZUFRE BROMO ANONIA HIDROGENO OXI00 DE ETILENO OIIDO DE PROPILENO PEROIIDOS ORSANICOS CORP. DE NITROCELULOSA NITRATO DE ANONIO CLORATO DE SODIO OXISENO LIQUIDO PROPAND COMERCIAL BUTANO COMERCIAL FERTILIZANTES COMPUESTOS ESPUMA PLASTICA CANTIDAD MINIMA PARA SER NOTIFICADA 10 20 20 20 20 40 TONS. TONS. TONS . TONS . TONS . TONS . 100 2 5 5 TONS . TONS. TONS . TONS . 5 50 500 500 1000 TONS . TONS . TONS . TONS . TONS . 30 30 500 500 TONS . TONS . TONS . TONS . 200 200 200 200 400 1000 TONS. TONS. TONS. TONS. TONS. TONS. 20 50 50 50 TONS. TONS. TONS. TONS. 500 5000 5000 10000 300 TONS. TONS. TONS. TONS. TONS. 300 TONS. 5000 TONS. 5000 TONS . 2~1~7~ VALORES MAXIMOS PERMISIBLES DE CONCENTRACIONES DE SUSTANCIAS RIESGOSAS Y EFECTOS EN LA SALUD. En este archivo se incluyo informacion sobre sustancias que son riesgosas para la salud, maxima indicandose permisible, el tiempo de asociados . La ihformacion la concentracion exposicion fue tomada de la y los efectos ref .7, y se encuentra almacenada como se indica en la tabla que se presenta a continuacion. Ver tabla 2 .1 .7 . TABLA CLAVE 2 .1 .7 CONTAMINANTE CANTIDAD CANTIDAD OBSERV- EFECTOS EN EN PPM EN NG VACIONES LA SALID -------------------------------------------------------------- --------- 1 ABRINA Ingestion : Sin establecer datos Anorexia, Nauseas, Diarrea y Debilidad. 200.000 360 .000 En el aire 2 ACETALDEHIDO Inhalation e Ingestion irritante, depresivo del sistema nervioso central. 3 ACETATO DE AMILO 100.000 525 .000 En el aire Inhalation : Irritante, dano a los rinones e higado,depresivo del sistema nervioso. 4 ACETATO DE BUTILO 200.000 950 .000 En el aire Inhalation : Irritante, depresivo del sistema nervioso central. 5 ACETATO DE ETILENSLICOLIOINOETI 100.000 0 .000 Sugerido Inhalation : irritante 6 ACETATO DE ETILO 400 .000 1400 .000 En el aire Inhalation : irritante, hiperemia de rinones y bazo, opresivo del sistema nervioso central. 7 ACETATO DE NETIL CICLOHEXILO Inhalation : irritante 100 .000 0 .000 En el aire 8 ACETATO DE METILO 200 .000 0 .000 En el aire . Inhalation e ingestion : Edema cerebral, depresivn sistema nervioso central, neuritis optica y atrofia. 9 ACETATO DE PROPILO 200 .000 840 .000 En el aire. Inhalation e ingestion ; irritante, depresivo del sistema nervioso central. 10 ACETILENO 500 .000 Inhalacion :asfixia por anorexia. 0 .000 En aire(no confirm .) il ACETOFENONA 20 .000 0 .000 (No confirmado). Inhalacion :irritante y depresivo del sistema nervioso central. 12 ACETONA 1000 .000 0 .000 Inhalation e ingestion: irritation y depresion del sistema nervioso central. 13 ACIDO ACETICO 10 .000 25 .000 : irritation local, peribronquis y enfisema Inhalation e ingestion hiperemia de estomago, congestion hepatica, nefrosis hemorragica. 14 ACIDO ACRILICO 0.000 0 .000 Nada establecido. Inhalation : irritante 15 ACIDO BORICO 0.000 0 .000 Nada establecido. Ingestion, percutaneo:irritante,depresivo del sistema nervioso central, lesiones renales y hepaticas. 16 ACIDO CLORACETICO 0 .000 0 .000 Nada establecido Inhalacion, ingestion,percutanea : irritante. 17 ACIDO CLORHIDRICO 5 .000 7 .000 Sugerido. Inhalation e ingestion :rinitis,laringitis,bronquiteumonia, jaqueca, palpitacion . Por ingestion :quemadura,nausea,vomitos,escalofrios, nefritis, shock. 18 ACIDO FLUORHIDRICO 3 .000 0 .000 Inhalation e ingestion : irritante, corrosivo, edema pulmonar, nefritis, alteraciones degenerativas de higado. 19 ACIDO FORNICO 10.000 0 .000 Sugerido. Inhalation, ingestion, percutaneo : irritante, corrosivo, lesiones renales. 20 ACIDO FOSFORICO 0.000 1 .000 Inhalacion e ingestion : irritante, cuando se calienta hasta la descosposicion, produce humos de oxido fosforoso. 21 ACIDO LACTICO 0 .000 0 .000 Nada establecido. 0 .000 0 .000 Nada establecido. 0 .000 0 .000 Nada establecido. Ingestion : irritation . 22 ACIDO NALEICO Inhalacion : irritante . 23 ACIDOS NAFTENICOS Irritacion de ojos y piel . 24 ACIDO NITRICO 10.000 25.000 Inhalacion e ingestions corrosivos, forma acido xantroteico edema pulsonar,nefritis. 0 .000 0 .000 Nada establecido. Inhalation e ingestion : corrosivo,le5ion de los tubos renales, edema cerebral, se combina con los iones calcicos. 25 ACIDO OXALICO 0.000 0.000 Nada establecido. Inhalation e ingestion : irritante y sensibilizante. 26 ACIDO PERCLORICO 27 ACIDO PICRICO 0.000 0 .100 Inhalacion,ingestion y percutaneo: irritante, depresivo del sistema nervioso central, bronquitis, hepatitis, nefritis hemorragica, anemia hesolitica, sensibilizador lalergeno). 28 ACIDO PRUSICO 10 .000 0 .000 Inhalacion, ingestion y percutaneo: anoxia citotoxico. 0 .000 0.000 Nada establecido. 29 ACIDO SALICILICO Ingestion y percutaneo irritante, depresivo cardiovascular, estimulacion del sistema nervioso central con depresion posterior. 30 ACIDO SULFURICO 0 .000 Inhalacion e ingestion : corrosivo. 1 .000 31 ACIDO TIOBLICOLICO 0 .000 0 .000 Nada establecido. Inhalation: irritante alergeno, al descomponerse produce sulfuro de hidrogeno. 32 ACRIDINA 0 .000 0 .000 Nada establecido. 0 .000 0 .000 Nada establecido. Inhalation : accion irritante . 33 ACRILANIDA Inhalacion : neurotoxico . 34 ACRILATON 0 .000 0.000 Nada establecido . Inhalation e ingestion : irritante, el metil acrila es un alergeno. 35 ACRILONITRILO 20 .000 45 .000 Inhalation, ingestion percutaneo : inhibe la respiracion celular. 36 ACROLEINA 0 .100 0 .250 Inhalation, ingestion y percutaneo: irritation de las mucosas, alergeno. 37 ALCANFOR 0.000 5 .000 Sugerido. Inhalation, ingestion y percutaneo: irritante. 39 ALCOHOL ALILICO 2.000 5.000 Inhalation, ingestion y percutaneo : irritante. 39 ALCOHOL ANILICO 100.000 360 .000 Inhalation : depresivo del sistema nervioso central. 40 ALCOHOL BUTILICO 100 .000 300 .000 Inhalacion e ingestion: accion similar al alcohol etilico, depresivo del sistema nervioso central, degeneracion grasa del higado. 41 ALCOHOL ETILICO 1000.000 1900 .000 Inhalation e ingestion : irritante, depresivo del sistema nervioso central. 42 ALCOHOL ISOPROPILICO 400 .000 980 .000 Inhalacion e ingestion : irritante, se metaboliza dando acetona en el cuerpo, depresivo del sistema nervioso central. 43 ALCOHOL NETILICO 200 .000 260 .000 Inhalacion, ingestion y percutaneo . Se metaboliza dando formaldehido y acido formico . Edema cerebral, neuritis optica y atrofia, congestion renal. 44 ALCOHOL PROPILICO 400.000 0 .000 Inhalacion e ingestion : irritante, se metaboliza dando acetona en el cuerpo, depresivo del sistema nervioso central. 45 ALDREN 0 .000 0 .250 Inhalation, ingestion y percutaneo: irritante,excitacion del sistema nervioso central. 46 ALEACION DE SODIO Y POTACIO Nada establecido Inhalacion :Quemaduras termitas, son posibles los efectos de la radiation procedente de sodio-potasio de los reactores. 47 ALBODON 0,000 100.000 Sugerido. Los constituyentes proteioicos de las fibras pueden originar una respuesta alergica . Contamination de endotoxina bacterial 48 ALOUITRAN 0 .000 Percutaneo : irritante y carcinogeno . 0 .000 Nada establecido. 2~1 .8. La informacion INFORMACION GENERAL SOBRE PROYECTOS NACIONALES. especifica de cada proyecto que se evalue con el SIRIA sera almacenada dentro de este archivo . Se incluiran aspectos tales como la identificacion del proyecto, proponente del mismo, actividad productiva principal, produccion anual, observaciones, materias primas, productos intermedios, productos finales, combustibles, dispositivos de control de contaminantes . La estructura de almacenamiento de la informacion se presenta en las tablas que se muestran a continuacion . / DATOS BASICOS SOBRE PROYECTOS ------------------------------------------------------------- - -1 1 ~ / INFORMACION iPROYECTO ICOMPANIA IACTIVIDAD IPRODUCCION I 1 1 1 1 ANUAL 1 GENERAL 1 P12-85378ICYDSA P15-B59651FERTIMEX PULPA-KRAFT 1 FOSFATO AMONIOI 4000 TON 1 7500 TON I 1 1 MATERIAS PRIMAS UTILIZADAS ---------------------------------------------------------------1 1 CANTIDAD 1 1 PROYECTO 1 1 P12-85378 P15-85965 SUSTANCIA 1 1 1 CLORO HIDROGENO DIARIA 1 UTILIZADA 1 TON 40 KG CANTIDAD ALMACENADA 1 50 TON 1 TON 1 1 1 1 PRODUCTOS INTERMEDIOS 1 PROYECTO 1 I 1 1 P12-85378 P15-85965 I 1 SUSTANCIA 1 CANTIDAD 1 DIARIA I GENERADA IACIDO CLORHIDRICOI 50 KG IACIDO SULFURICO 1 40 KG 1 1 1 1 CANTIDAD ALMACENADA 3 TON 3 TON 1 1 1 1 ;PRODUCTOS FINALES 1 PROYECTO 1 1 SUSTANCIA 1 1 1 CANTIDAD DIARIA PRODUCIDA 1 1 1 CANTIDAD ALMACENADA 1 P12-85378 P15-85965 (AMONIACO ;FOSFATO AMONIO 5 TON ! 10 TON 50 TON 1 400 TON 1 1 1 1 1 1 COMBUSTIBLES ---------------------------------------------------------------1 CANTIDAD PROYECTO ! 1 1 1 SUSTANCIA 1 DIARIA 1 1 UTILIZADA 1 CANTIDAD ALMACENADA 1 I 1 P12-85378 P15-85965 1 GASOLINA 1 DIESEL 5 TON 10 TON 1 50 TON 400 TON 1 1 DISPOSITIVOS DE CONTROL ---------------------------------------------------------------1 1 1 1 1 1 PROYECTO 1 1 P12-85378 P15-85965 1 1 1 DISPOSITIVO UTILIZADO 1 CONTAMINANTE 1 REMOVIDO 1 PORCENTAJE REMOVIDO 1 1 1 1 DEPURADOR 1 PARTICULAS 1 75 % 1 PURIFIC . HUMEDO CO 1 98 'f. 1 2 .8 .9 . SISTEMAS DE CONTROL DE LA CONTAMINACION. El archivo consta de un conjunto de tablas que contienen informacion referente a diversos tipos de sistemas y dispositivos de control de contaminantes del agua (ref .3) y del aire (refs .1,2), sus rangos de aplicacion y eficiencias de remocion de contaminantes, complementaria . Las asi tablas continuacion. Ver tablas 2 .1 .9 .a hasta 2 .1 .9 .r . como alguna otra informacion incluidas se muestran a 2 .1 .9 .a TABLA PORCENTAJE DE REMOCION BE CONTAMINANTES CONTENIDOS EN AGUAS RESIDUALES POR PROCESOS DE INTERCAMBIO IONICO. ------------------------------------------------------------------------CONTAMINANTE ------ ---------------------------- FOSFORO REMOCION ------------------------ ----90 Z NITROSENO 90 Z NITROSENO AMONIACAL 99 X CADMIO 99.9 Z CROMO 96 Z SELENIO 99 .73 TABLA 2 .1 .9 .6 PORCENTAJE DE RENOCION DE CONTAMINANTES CONTENIDOS EN AGUAS RESIDUALES A TRAVES DE FILTROS ROCIADORES. -------------------------------------------------------------------------CONTAMINANTE REMOCION -------------------------------------------------------------------------DRO SOLIDOS SUSPENDIDOS FOSFORO CADMIO CROMO COBRE FIERRO PLOMO MANGANESO MOLIBDENO NIQUEL PLATA ZINC PATO;ENOS . SALMONELLA . MYCOBACTERIUM . QUISTES DE AMOEBA . NELMINTOS . SCHISTOSOMA MANSONI . VIRUS 65-95 1 1851 PROMEDIO) 65-95 1 (85% PROMEDIO) 75 2 51 19 1 47 2 46 X 36 % 16 X 15 1 20 % 48 2 56 X 88-99 .9 2 66-99 2 11-99 .9 2 62-76 1 99 .7 2 0-84% TABLA 2 .1 .9 .c PORCENTAJE DE RENOCION DE CONTAMINANTES CONTENIDOS EN AGUAS RESIDUALES POR ADSORCION CON CARBON ACTIVADO. --------------------------------------------------------------------------CONTAMINANTE RENOCION ---------------------------------------------------------------------------BBO 80 .6 1 42 .6 1 CARBON ORGANICO NITROSENO TOTAL NITRUSENO AMONIACAL NITROGENO ORGANICO 18 X 21 .2 1 66.7 X NITRATOS Y NITRITOS 1 .7 1 69 .2 1 2 .2 1 .2 1 85 1 95 X NITRATOS FOSFORO TOTAL SOLIDOS SUSPENDIDOS DRO CADMIO CR018) (+6) SELENIO MERCURIO 95 1 37 X 70 1 PLABUICIDAS . ALDRIN (50 alll DE CARBON ACTIVADO) . ENDRIN (50 agll DE CARBON ACTIVADO) . DIELDRIN (10-12 .5 0g/1 DE CARBON ACTIVADO) . DDT (12.5 .g/1 DE CARBON ACTIVADO) . DID (50 ag/1 DE CARBON ACTIVADO) . DDE 150 agli DE CARBON ACTIVADO) . TOXAFENO (10-12 .5 ag/l DE CARBON ACTIVADO) . AROCLOR 1242 (10-12 .5 ag/1 DE CARBON ACTIVADO) . AROCLOR 1254 (50 mg/1 DE CARBON ACTIVADO) PATOSENOS 18-40 . POLIOVIRUS TIPO I 91 X 99 .7 I 100 1 >99 X 99 .3 1 97.8 X 100 1 100 X 97.6 S 1 TABLA 2 . 1 . 9 . d EFICIENCIA DE LOS PRINCIPALES TRATAMIENTOS EN FUNCION DE LA ORANULONETRIA DE PARTICULAS . TIPO DE TRATAMIENTO EFICIENCIA EN % POR PARTICULAS DE 5 NICRONTS . 2 MICRONTS . 1 NICRONT. ------------------------------- ------- -----------------------------CICLON DE EFICIENCIA NEDIA . 27 14 8 CICLOS DE ALTA EFICIENCIA . 73 46 27 NUL TICICLCN TUBULAR . 89 77 40 TORRE DE LAVADO (PULVERIZACION) . 94 87 55 TRATAMIENTO CON LAMINA DE AGUA 93 75 40 99 .6 99 97 99 .9 99 .9 99 .0 99 .8 99 .0 98 .4 INDUCIDA . VENTURI CON FUERTE PERDIDA DE CARGA . TRATAMIENTO DE LECHO FI 'OSO (FILTRO DE BOLSAS) . ELECTROFILTRO . TABLA 2 .1 .9 .e PORCENTAJE DE REMOCION DE CONTAMINANTES CONTENIDOS EN AGUAS RESIDUALES LAGUNAS FACULTATIVAS. --------------------------------------------------------------- -------- POR MEDID DE CONTAMINANTE ------------------------------------------------ REMOCIGU --------------------- DBD 10-50 % SOLIDUS SUSPENDIDOS 50-60 % PATOBENOS . ORGANISMOS COLIFORMES 95-99 % . COLIFORMES FECALES 95-99 7. . ESTREPTOCOCOS FECALES 95-99 % . VIRUS 0-96 X L'96 MOOO'O S Z'Li % S'96 L'86 S8S00'0 íLí00'3 600000'0 S4í00'0 Z2600'0 6t0'0 NOVO ViVld 018313S (9+) OV083 01N8V3 NOOHV3 138 830dS30 888d03 130 S31NV nolmum (116J) Kotmimm ------------------------------------------------ ---------------------------'N888V3 NO3 K015HOS0V 80d S06VS3d S31V130 30 N013843U 30 3PVIN33NOd 4 ' 6 ' í ' Z V 18 V TABLA 2 . 1 . 9 . g PORCENTAJE DE RENOCION DE CONTAMINANTES PRESENTES EN AGUAS RESIDUALES EN UNA PLANTA PILOTO DE INTERCANBID IDNICO. - -------------------------------- ------ ------------------- -------------- CONTANINAtITE RENOCION - ------------------------------------------------------------------------- --CALCIO MAGNESIO • SODIO 97 7i 97 % 89 % POTASIO 75 % NITROGENO ANONIACAL 41 7. SULFATO 98 7: CLORO 66 % NITRATO 85 % FOSFATO 96 % SOLIDOS TOTALES DISUELTOS 82 % ALCALINIDAD 81 7i CONDUCTIVIDAD 81 % T A 8 L A 2 . 1 . 9 . h IMPORTANCIA DE PERDIDA DE CARGA Y DE TANAND DE DIFERENTES DISPOSITIVOS OE TRATAMIENTO DE PARTICULAS. -----------------------------------------------------------------------TIPO DE TRATAMIENTO PERDIDA DE CARGA VELOCIDAD DE GAS TANANO 'O/s) -----------------------------------------------------------------------í .ilibars) CICLON NULTICICLON FILTRO TEXTIL FILTRO GRANULAR 5 - 15 5 - 20 BASTANTE PEDUENO 10 - 20 5 - 30 PEOUENO 5 - 30 10 - 60 TORRE DE LAVADO 2 TORRE EMPACADA 5 - 20 0 .05 a 0 .2 GRANDE 0 .2 MEDIO a 1 0 .5 a 2 BASTANTE GRANDE 2 a 5 BASTANTE PEOUENO 10 - 30 5 a G BASTANTE PEOUENO 15 - 50 10 a 50 BASTANTE PEOUEND VENTURI 20 -200 10 a 150 PEOUENO LAVADOR FL1N)- 10-20 20 PEOUENO TORRE DE PULVERIIACION LAVADOR DE CORTINA LIQUIDA a 50 LIOUIDO ELECTROFILTRO 1-3 0 .2 a 4 BASTANTE GRANDE TABLA 2 .1 .9 .1 PORCENTAJE DE REMOCION DE CONTAMINANTES CONTENIDOS EN AGUAS RESIDUALES POR TRATAMIENTO PRIFARIO. CONTAMINANTE POPCENTAJE DE RE?IzCTOI+ ADICI?il DE CAL DB14 42 % DIM 39 X 30LIDO3 SUSPENDIDOS 64 7. DRAMS Y ACEITES 61 g 60 2 95 2 NITRDGENO ANONIACAL 41 % COBRE 36 h 100 X ZINC 26 X 94 L filIQL4:L 20 ti CROMO 32 2 100 2 PATOGENOS . SALNONELLA THIPI >50 2 . SALMONELLA SP . 0-15 2 . STREPTaCLCU-" FEti4LIS <50 1 99 .9 1 . IiYCOBACTERIUN 48-57 2 . ENTEROVIRUS 0 . POLIO VIRUS 0 . COXSACKIE VIRUS <50 % . DUISTES DE ANDEBA POCA EEMOCIDN . LOMBRICES PARASITICAS 50-98 2 . ASCARIS 100 2 TA8LA 2 .1 .9 .~ PROCENTAJE DE RENOCION DE RETALES PESADOS CONTENIDOS EN AGUAS RESIDUALES A TRAVES DE TRATAMIENTO SECUNDARIO. -------------------------------------------------------------------------- - -METAL PROMEDIA DE REROCION CLARIFICADOR FILTROS ROCIADORES PRIMARIO Y CLARIFIC . SEC. ANALISIS POR EMISION LODOS ACTIVADOS Y CLARIFICADOR SECUNDARIO DE RAYOS X CADMIO 30 X 5X 56 h MONO 36 X 19 2 36 X CODE 40 X 47 Z 59 2 FIERRO 57 ! 4il 7 48 7: PLUMí1 pJ1N5AI#E50 MOLIBL`EN? NIOUEL 54 2 36 X 48 t 27 g 16 X 22 7. 22 Z 15 1 23 X 25 8 20 Z 22 X PLATA 46 % 48 7: 71 g ZINC 50 Z 56 3 60 Y ANALYSIS POR ABSORCION ATONICAIDUYRICA HÚMEDA CR0M0 481 191 407: COBRE 38 Z 39 % 70 FIERRO 50 2 43 2 4r X 62 36 % 2Z 43 2 30 2 39 % PIOLIBDEND ZINC TABLA 2 .1 .9 .k POSIBLES CANTIDADES DE SOLIDUS SUSPENDIDOS Y PRODUCTOS OUINICOS REMOVIDOS EN UN TANQUE DE SEDIMENTACION PRIMARIA DE EXPERIMENTACION. --------------------------------------------------------------------------TIPO DE LODO (Kg/oillon de gal) SIN ADICION DE CON ADICION DE PRODUCTOS DUIMICOS PRODUCTOS DUICAL ALUMINIO FIERRO MICOS ---------------------------------------------------------------SOLIDOS SUSPENDIDOS 472 .6 709 .1 945 .2 709 .1 164.3 709 .1 209.7 472 .6 1654 .4 873.5 918.9 10.13) (0 .44) (0 .23) (0 .24) PRODUCTOS OUIMICOS PRODUCCION TOTAL DE LODOS PRODUCCION TOTAL DE LOBOS (Kg/ .3) TABLA 2 .1 .9 .1 COSTO DE TRATAMIENTO DE PARTICULAS DE CALDERAS DE CARBON (CENIIAS) ------------------------------------------------------------------------COSTO TIPO DE EFICIENCIA COSTO DE COSTO DE MANTENIMIENTO TRATAMIENTO SOBRE CENIIAS INVERSION ENERSIA BASE 100: BASE 100: 1 PROMEDIO CICLON BASE 100: CICLON ANUAL DE FUNCIONAMIENTO CICLON BASE 100: CICLON -------------------------------------------------------------------------CICLON ES65 I 100 100 100 100 TANDARD CICLON ALTA EFICIENCIA 84 1 180 140 100 160 lO1t . TICI1LG1i 94 1 210 130 110 157 LECHO FIL- 99 .7 1 450 120 1500 510 99 .9 1 550 160 1800 610 95 I 700 250 500 540 94.5 1 400 120 600 410 TORRE EMPACADA 97 .9 2 450 200 850 600 SI SPENSION 95 I 600 500 450 550 VENTURI NORNAL 99.7 1 410 600 500 500 LAVAD' ALTO RENDIMIENTO 99.9 1 480 800 550 610 ELECTROFILTRO 99 1 900 60 600 440 TRAME LECHO FILTRANTE (FIBRAS CON LIMPIEZA A CONTRA CORRIENTE) FILTRO BRAMULAR TORRE DE LAVABO FLUOLIOUDA TABLA 2 .1 .9 .. PORCENTAJE DE REMOCION DE CONTANINANTEES CONTENIDOS EN AGUAS RESIDUALES A TRAVES DE UN PROCESO DE LODOS ACTIVADOS. ---------------------------------------------------------------------------- CONTAMINANTE PORCENTAJE DE RENOCION FENOLES 90 I 95 I 912 98 I 90 2 NITRGIGNO AIONIACAL 52 1 FOSFORO 67 2 CIANURO 57 1 CADMIO PLOMO 56% 36 1 59 2 48 I 48 2 MANiANESO 22 1 MOLIBDENO NIQUEL 23 2 22 I PLATA 71 2 ZINC 60 i DOD DRO SOLIDOS SUSPENDIDOS GRASAS Y ACEITES CROMO COBRE FIERRO PATOGENDS NICROBACTERIA 96-991 CERCA 87 1 QUISTES DE ALBA POCA REMOCION . SALMONELLA . . . HELMINTOS POCA RGMOCION . ORGANISMOS COLIFORIIES COXSACKIE VIRUS 90-992 84-942 90-992 99 2 90-992 66-882 0-991 0-992 0-501 ECHO VIRUS POCA RENOCIAN . . . . . . . . . ESTREPTOCOCO FECALES SNISELLA PSEUDONONAS A:ROBINOSA CLOSTRIDIUM PERFRINGES NYCOBACTERIUN TUBERCULOSIS ENTEROVIRUS POLIOVIRUS TABLA 2 .1 .9 .n PROCENTAJE DE REMOCION DE CONTAMINANTES CONTENIDOS EN AGUAS RESIDUALES POR FILTRACION CONO PROCESO TERCIARIO. -------------------------------------------------------- ---------CONTANINANTE FILTRACION (eg/1) INFLUENTE REMOCION EFLUENTE = DBO 60-70 1 5-14 14-28 1 .3-3 .5 25-37 21-29 2-3 4.5-7.5 0 .4-1 .0 20-35 18-29 3-12 0-14 1 68-77 1 CRONO(+6) 13-37 TRAZA A 0 .00075 0.0503 0 .0007 0 .049 2.6 1 CRD1O(+3) COBRE NIGUEL SELENIO 2 .7 0 .79 0.08 0.0103 0 .63 0 .32 0 .1 0 .00932 CARBON ORSANICO TOTAL FOSFATOS NITROGENO TOTAL NITROSENO AMONIACAL SOLIDOS SUSPENDIDOS CADMIO PLATA ZINC PATOSENOS (UNIDADES . POLIOVIRUS(PRUEBA POLIOVIRUS(PRUEBA . POLIOVIRUS(PRUEBA 0 .00164 0 .00145 0 .97 0 .23 FORMADORES DE PLACA/L) 1) 2,200 397 2) 15,912 750 3) 1,940 ( 4 .6 . POLIOVIRUS(PRUEBA 4) . POLIOVIRUS(PRUEBA 5) 505 47 12.5 2.8 68-73 .5 1 69-75 1 6-20 1 6 .61 771 59 .5 2 INCREMENTO 9.5 1 11 .6 1 76 .3 1 82 1 95.3 1 > 99.8 2 97 .5 1 94 .0 X TABLA 2 .1 . 9 . o PORCENTAJE DE REMOION DE CONTAMINANTES GASEOSOS, POR DIVERSOS PROCESOS. --------------------------------------------------------------------------TECIIILOSIA REDUCCION DE LA EMISION ------------------------------------------------------------------------PIEDRA CALIZA (FED). 90 1 EN LA REDUCCION DE DIOXIDO DE AZUFRE. FED POR PIEDRA CALIZA CON ACIDO ADIPICO. 90 1 EN LA IR;DUCCION DE DIOXIDO DE AIUFRE. LAVADO EN SECO POR ASPERSION DE CAL. 70 I EN LA REDUCCION DE DIOXIDO DE AZUFRE. QUEMADORES MULTIETAPA CON INYECCION 50-60 i EN LA REDUCCION DE DIOXIDO DE AZUFRE Y 50-60 1 EN LA REDUCCION DESULFURIIACION DE GAS FLUIDO POR DE PIEDRA CALIZA (LIMB) . DE OXIDDS DE NITROGENO . TABLA 2 . 1 . 9 . p COMPUESTOS ORGANICOS POSIBLEMENTE CARCINOSENICOS NO REDUCIDOS SIGNIFICANTENENTE POR PROCESOS DE LODOS ACTIVADOS. -----------------------------------------------------------COMPUESTOS ------------------------------------------------------------------------2, 3 OXI00 DE BUTILENO B-PROPIOLACTONA TIOUREA ETILCARBONATO 2-TIDURACIL 4 -ETOXIFENILUERA BENIIDINA 4,4' -DIDHIDR0XI-A,B-DIETILETILBENO 2-NAFTIL AMINA 4,4' -BIS(DIIB:TILAMINO)BENI0FEN0 P-FENILAIOFENOL P -FENILAIOANILIIBi 9 - 10 -DIMETIL ANTRACENO 1,2 -BENIANTRACE(NI 7 METIL- 1,2-BENZANTRACENO 1,2,5,6 -DIBENIANTRACENO 3,4 -BENZOPIRENO 1,2,4,5 DIBENIOPIREND 20-METIL COLANTRENO 2-NITRO FLUORENO 2 -FLUORENO AMINO ' N-2 FLUDRENIL ACETAMIDA 7,9 DIMETILBENI(C1 ACRIDINA 7,10 DI)B:TILBENZ(CI ACRIDINA DIBENI(A,H) ACRIDINA DIBENI(A,a) ACRIDINA TABLA 2 .1 .9 .q PORCENTAJE DE REMOCION DE METALES CONTENIDOS EN AMAS RESIDUALES POR LA FILTRACION SESUIDA DE COAGULACION CON CAL. ------------------------------------------------------------------------METAL CONCENTRACIONES tag/1) RENOCION ANTES DE POSTERIOR AL FILTRACION TRATAMIENTO -------------------------------------------------------------------------CADMIO CROMO (+6) CROMO t+31 COBRE SELENIO PLATA ZINC 0 .00075 0 .0503 2.7 0 .79 0.0103 0.00164 0 .97 0 .00070 0.049 0.63 0.32 0 .00932 0 .00145 0.23 6 .6 2.6 77.0 59 .5 9.5 11 .6 76.3 1 1 X 1 % 1 . 7 TABLA 2 . 1 . 9 . r PORCENTAJE DE REMOCION DE CONTAMINANTES CONTENIDOS EN AGUAS RESIDUALES POR PROCESOS BUINICOS. ------ --------------------------------------------------------------CONTANINANTE COAGULANTE REMOCION (DOSIS mg/1) --------------------------------------------------------------------------DIO 90 I CLORURO DE FIERRO (170) SOLIDOS SUSPENDIDOS FOSFORO ANTIMONIO ARSENICO CADMIO COMO) (+6) CROMO (+3) COBRE ORO FIERRO PLOMO MANGANESO MERCURIO MOLIBDENO NIOUEL SELENIO PLATA TELURIO TITANIO ZINC PATOSENOS . VIRUS . VIRUS . VIRUS . POLIOVIRUS . POLIOVIRUS CLORURO DE FIERRO (170) CAL CAL CAL CAL CAL CAL CAL CAN. CAL CAL CAL CAL CAL CAR. 95 I 95-98 1 90 1 (10 2 94 .5 1 11 1 >99 .9 2 )99 2 >90 I 40- >99 2 97 1 96 2 (10 1 18 1 >99 .9 1 CAL CAL CAL CAL CAL 16.2 1 97 1 >90 2 >90X >90 1 ALUMBRE (75) CLORURO FERRICO (50) ALUMBRE (18) Y POLIELECTROLITO B(1) CAL (200) CAL (500) 99 .9 2 99 .4 I 99 .2 2 92 .3 I 99 .86 1 REFERENCIAS. (1). Dumon R .,Joffre R ., "Depoussiereurs industriels", Techniques et Procedes Industriels, Masson, Paris, 1984. (2). Interagency Task Force on Acid Precipitation, "National Acid Precipitacion Programs", DOA-NOAA-EPA, Washington D .C ., Anual Report 1983. (3). SARH, "Efectos del reuso del agua para la agricultura, recarga de acuiferos, industria, ganaderia, flora y fauna", CIECA, 1980. (4). Sarmiento B .M .R ., "Pollution due to accidents from the chemical industry", Fuel and Combustion Department, University of Leeds, 1979. (5). SEDUE, "Breviario Juridico Ecologico", Subsecretaria de Ecologia, 1983. (6). SEDUE, "Evaluacion rapida de fuentes de contaminacion del aire, agua y suelo", Subsecretaria de Ecologia-Centro Panamericano de Ecologia Humana y Salud, Traduccion de la publicacion WHO Offset Publication No .62 ., Septiembre 1984. (7) . S .S .A ., "Inventario de contaminantes quimicos industriales", Subsecretaria de Mejoramiento del Ambiente, Septiembre 1973 . 2 .2. BANCO DE TEXTOS. El Banco de Textos es constituido por una serie de citas referentes a informacion suplementario para efectuar ambientales . Dicha concernientes ecologicas, de a impactos informacion se refiere a topicos concretos actividades industriales, caracteristicas Y de industrias, medidas de operacion de impactos, caracteristicas socioeconomicas, mitigacion Las fuentes de alimentacion variadas : citas periodisticas podra evaluaciones de y apoyo datos de produccion, impactos ambientales en fases construccion estudios relevante que sirve de proyectos, etc. del Banco de Textos son muy y bibliograficas, extractos de articulos cientificos, etc . Este banco ser alimentado con material de la SEDUE de estudios de impacto ambiental ya realizados . Las citas que conforman el banco se desglosan a continuacion . ESTUDIO PARA LA EVALUACION DE IMPACTO AMBIENTAL DE LA CONSTRUCCION Y OPERACION DE LOS APROVECHAMIENTOS HIDROELECTRICO (Ref .3) La precipitación media anual en México es de 1 .53 millones de millones de metros cubicos y se distribuyen en forma muy variable (en el norte del pals se tienen regiones con precipitación inferior a 500 mm . y en el sur mayores a 2000 mm). Cerca de las tres cuartas partes del volumen de precipitación se evapora, se evapotranspira y en mucho menor grado se infiltra hacia los acuíferos ; el resto constituye la disponibilidad potencial de agua superficial, estimada en 410,000 millones de millones de metros cubicos. El pals cuenta con 91 plantas hidroeléctricas en operación. Los estados de Michoac&n y México son los que tienen mayor netmero de hidroeléctricas, 16 y 14 respectivamente ; sin embargo el estado de Chiapas cpn solamente 9 plantas, es el que tiene mayor potencia instalada y generación media anual, debido a que cuenta con tres de las plantas hidroeléctricas mas grandes del pals: Malpaso, la Angostura y Chicoasén . La capacidad instalada de las 91 plantas es de 6929 MW y representan una generación media anual de 22,580 millones de KWH . El volumen anual de agua que pasa por estas plantas es de 99,360 millones de metros cubicas. El Edo . de México tiene la carga de diseMo más grande del pals ya que cuenta con sistemas hidroeléctricos como el de Miguel AlemAn . También existen grandes cargas de diseho en el Edo . de Puebla donde se localiza el sistema Necaxa . En los estados de Chiapas, Michoac&n, Guerrero se pals . Puebla y México, generan el 847. del total de energía eléctrica del El potencial hidroeléctrico del pals es de 83,176 millones de KWH ; de este potencial, 27% pertenece a plantas en operación y 73% a plantas en estudio . Mientras que en el Edo . en tiene operación el 100% del potencial de México se y en identificado Michoac&n el 81%, en los Edos . de Chiapas y Oaxaca el porcentaje es solamente del 29% y 6% repectivamente. Los riesgos asociados con la construcción y operación de las accidentes plantas hidroeléctricas se refieren principalmente a en la derrames de bancos de material, explotación del asi como fugas agua almacenada que dependiendo de y su magnitud pueden poner en peligro a las poblaciones situadas aguas abajo. Un aspecto particular a considerar es la sismicidad de la zona. Las principales construcción actividades realizadas para la fase de de una planta hidroeléctrica que provocan impactos al ambiente son : reacomodo de la población, limpieza del terreno, construcción de la cortina, caminos de acceso, cartes y rellenos, bancos de material y obras de desvio. Los efectos adversos mas significativos se presentan con la limpieza del terreno, siendo los mayores impactos al suelo, flora y fauna, reacomodo de la población y por migración de personal a la fuente de empleo . El impacto positivo es en la socioeconomla y se da sobre la economía regional, ya que los ingresos se distribuyen en compras locales . En lo que respecta a los impactos producidos sobre las regiones del pals, se tiene que las mas afectadas seran el tropico humedo y seco, por ser zonas con una biota rica en composición, estructura y diversidad. En la fase de operación de una hidroeléctrica, las principales actividades que causan impacto son : almacenamiento de agua, generación de energia eléctrica, fallas de operación, fugas y derrames de agua, cultivos de peces, zona de recreo, abastecimiento de agua para agricultura, abastecimiento de agua para las poblaciones . Los efectos negativos se dan principalmente por el almacenamiento de agua, fallas de operación y fugas y derrames de agua, impactAndose la calidad del agua, el microclima y habitats terrestres . Las actividades restantes producen efectos positivos sobre el valor estético, la pesca, la caza, la navegación y el bano y la disponibilidad de agua para riego y poblaciones . En esta fase la región m&s beneficiada es la zona &rida, ya que ademés de adolecer de agua, requiere de energia eléctrica para su desarrollo. Las medidas de mitigación de impactos ambientales ocasionados por la construcción y operación de una planta hidroeléctrica son: - Construir unidades habitacionales para el personal que laborará en la obra. - El reacomodo de la población se har& bas&ndose en una investigación socioeconomica para evitar problema a los habitantes de la región. - El desmonte debe realizarse antes de inundar el embalse y asi evitar condiciones anaerobias en el mismo y evitar la generación de olores en los alrededores . Se debe evitar la tala de bosques, aguas arriba y a orillas del embalse para disminuir la erosión y el aporte de sedimentos. - Prohibir el verter desechos municipales o industriales sin tratar, aguas arriba o en el embalse para evitar la contaminación del agua y sus efectos sobre la biota acuAtica. - Realizar desazolve del almacenamiento periodicamente para evitar la proliferación de maleza acuática asi como taponamientos de tuberías. - Tener una estricta supervisión durante la operación para que en el momenta en que detecte una fuga en la presa se proceda a una reparación inmediata . Esto se aplica igualmente para el caso en , que se movimientos sismicos . presenten ESTUDIO PARA LA „ EVALUCION DE IMPACTO AMBIENTAL DE LA INDUSTRIA DEL ACIDO SULFURICO (Ref . 1) Dado que la producción de H2SO4 se utiliza como un servicio auxiliar en muchos procesos, las plantas productoras de H2SO4 se localizan en diversas regiones del pals . (S03 La producción de oleum disuelto en H2SO4 (100X) ) es una actividad asociada . La taza de crecimiento de la producción de H2SO4 fue de 2 .8% promedio anual para el periodo 1978-1982 . La taza de crecimiento del consumo, mismo peri ódo, fue de 7 .7% promedio anual . Si se continzta la misma tendencia, para 1985 se tendran que importar casi 100,000 tons ., para satisfacer la demanda nacional. El consumo de H2SO4 por la industria en México es : 68 .4% industria de los fertilizantes ; 16% industria química ; 16 .57. refinación de petroleo, minería y metales, entre otros. El proceso de producción de H2SO4 empleado en México es el de contacto que implica las operaciones de combustión, conversión y absorción . El almacenamiento se realiza en tanques atmosféricos y el oleum en tanques con venteos a unas torres . El transporte es por carros tanque o pipas de ferrocarril. Los principales factores de riesgo involucrados en la actividad del H2804 son : almacenamiento de H2SO4, manejo y almacenamiento de oleum y emisiones de S02 . Debido a que se pueden producir fugas en los tanques de almacenamiento de oleum y producirse explosiones o fugas masivas de S02 H2804 u en la torre de absorción . El S02 a alta concentración es venenoso . El ácido sulfórico (H2SO4), producto químico inorgánico, se emplea en las industrias de pegamentos, explosivos, farmacéuticos, alimentaria, del rayon, acero y fertilizantes . En México la industria de fertilizantes emplea la mayor parte de la producci6n,disponible. El Acido Sulfórico se puede obtener de : azufre elemental, pirita, natural, hidrodesulfuracibn ácido del petroleo, endulzamiento de gas sulfórico gastado, desecho de fundidoras y refinerías) . -En México el azufre elemental se extrae en los Edos . de S .L .P ., B .C ., ORO ., Sureste de Veracruz y en los domos salinos del Itsmo de Tehuantepec . Se extrae con el proceso Frash . La principal empresa extractora es Azufrera Panamericana. Los yacimientos de Pirita se encuentran en las llanuras boreales dentro de Dgo ., Coah .o N .L . y Chih ., en el NE de B .C ., en la Meseta de Anahuac, en Hgo ., Jal, y la Sierra Madre del Sur, y en porciones de Col . y Mich ., Oro . y .Oax . La hidrodesulfuración del petroleo y el endulzamiento del gas natural se hace en PEMEX que es el principal productor de Azufre en México. La fabricación de H2SO4 produce emisiones de S02 que es un gas irritante, perceptible a concentraciones mínimas y su principal efecto en el hombre es sobre el tracto respiratorio . En los vegetales causa "necrosis" (destrucción de tejidos) y "clorosis" (las hojas se tornan blanquecinas o amarillentas) .Los cultivos más sensibles a este contaminante son las leguminosas, trigo, cebada y alfalfa. Los aerosoles de H2SO4 producen efectos sobre los vegetales, manifestandose como manchas sobre las hojas ; sobre los materiales met&licor causan corrosión ; y sobre los materiales de construcción desgaste . En el hombre estos aerosoles causan lesiones en el tracto respiratorio. Los estandores de emisión, para contaminantes promulgados por la EPA (1971), de plantas de H2SO4 son : SOC. - 4 .0 lb/ton, niebla acida - 0 .15 lb/ton, reducción de visibilidad 10%. Las medidas de mitigación para la fase de construcción de una planta de H2SO4 son : a) la no-construcción de plantas en zonas con abundante vegetación natural, b) la construcción de unidades habitacionales para personal de obra. Las medidas de mitigación para la fase de operación de una planta de H2SO4 consisten principalmente en la instalación de equipos de control para disminuir emisiones a la atmósfera . Para el control de S02 se puede contemplar : a) aumento de la altura de chimeneas (al doble se reduce la emisión en una cuarta parte) b) adopción del proceso Bayer (adición de una torre de absorción de SO3, antes de la ultima etapa de conversión) para aumentar la conversión hasta un 99 .77. y disminuir la emisión de S02 a 2 Kg/M ton H2SO4 . Las nieblas acidas se pueden recuperar con los siguientes dispositivos : precipitadores electrostáticos, filtros de fibra y vidrio, y filtros de tela metálica . Las emisiones de S03 se reducen con un mantenimiento adecuado de los procesos. Durante la fase de construcción de las plantas de H2SO4, las principales actividades que causan impacto son el desmonte, sistemas de drenaje y excavación, las cuales afectan al suelo, flora y fauna terrestre y al en importancia agua ; este impacto es de mayor las regiones tropico humedo aspecto socioeconómico se causa un fuerte impacto por la de mano de obra, dando lugar a la sus seco, por vegetación y ecosistemas sensibles . de caracterlsti.cas y migración En el demanda de personas, formándose campamentos que se convierten en centros poblacionales sin infraestructura adecuada ; este impacto es mas relevante en la región árida por ser escasamente poblada . El impacto positivo en esta fase es para la economía de la región. Durante la fase de operación de las plantas de H2804 se afectan los siguientes factores ambientales : aire, biota terrestre, salud y seguridad del hombre, y en menor proporción la calidad del agua . Los impactos se deben a emisiones de S02 y S03 y nieblas de H2604 (en la torre de absorción), de agua de enfriamiento . y por la descarga Los factores de emisión promedio para los contaminantes mencionados son : 30 Kg de S02, 1 .5-6 Kg de niebla ácida y 0 .1 Kg de S03 por toneladas de H2SO4 . Las regiones ecológicas del pals más sensibles a esta actividad son el tropico humedo y tropico seco . el El impacto positivo de esta fase se da en aspecto socioeconomico, ya que una planta convierte en fuente de empleo permanente, economía regional y nacional . de H2804 se beneficiando la ESTUDIO 'PARA LA EVALUACION DE IMPACTO AMBIENTAL DE LAS PINTURAS Y SOLVENTES (Ref . 7> En México son 7 las empresas que forman el sector de pigmentas orgAnicos e inorg&nicos . Las empresas se localizan en el D . F ., Monterrey, Guadalajara, Tlalnepantla y Altamira . La producción se proyecta fundamentalmente a la industria de pinturas y tintas . Los recubrimientos org&nicos incluyen las pinturas, lacas y barnices . La taza de crecimiento de producción de pigmentos orgAnicos para el peritodo 1975-1982 fue de 9 .7% y la de consumo 10 .27. promedio anual . La taza de producción para pigmentos inorgAnicos fue de 2 .9% y la de consumo de 5 .6% promedio anual. Los pigmentos son parte constitutiva de los recubrimientos orgAnicos y contribuyen directamente a la utilidad de estos en su función protectora, decorativa y artística . En la fabricación de los pigmentos inorgAnicos se utilizan procedimientos muy variados, solo la trituración y pulverización son de uso general. Desde el punto de vista del tonelaje, los pigmentos blancos son los mas importantes, entre éstos se encuentran el bióxido de titanio, el cual posee un excelente poder cubriente, éste sólo es producido en México por la empresa PPO, la cual exporta un gran volumen, en 1982 exporto 11031 toneladas. El proceso de producción de óxido de titanio incluye: reacción, separación, condensación, purificación, oxidación, tratamiento humedo, secado y molido . Las descargas liquidas de estas operaciones contienen : cloruro férrico, cloruro ferroso y Las emisiones gaseosas son de CO, CO2 y vapor Acido clorhídrico . de agua. La de industria los pigmentos orgánicos se de la ocupa conversión de químicos orgánicos usualmente bencenoides cíclicos, en y al final en intermediarias mas complejos Las colorantes . operaciones de pigmentos y son: producción más comunes cristalización, filtración, lavado, secado y molido .Entre los contaminantes gaseosos generados encuentran : óxido de se nitrógeno, azufre, sulfuro de hidrógeno, clururo de hidrógeno. Entre los contaminantes líquidos producidos están : corrientes diluidas de acidos y bases compuestos con contaminadas orgánicos, además de metales o sales metálicas. Los recubrimientos orgánicos incluyen las pinturas, lacas y barnices y se de 4 componen aglutinante orgánico, el ingredientes principales : pigmento, el disolvente y el el agente modificante ; los pasos esenciales en su fabricación son : mezcla, molienda, adelgazamiento y teftido, colado y clarificación. Existe una gran variedad de recubrimientos orgánicos entre los que se ecuentran : recubrimientos basados oleoresinosos, de resinas fentolicass caucho clorado de vinílicas y ésteres acrílicos, y desechos de lacas, de emiten de resinas gases ( líquidos que contienen 8 monómero, polímeros, oligómeros, compuestos orgánicos pesados . barnices de resinas aminicas, otros . Durante su producción se disolventes volatiles) en y metales La industria de alto considerada de volumenes de pigmentas y recubrimientos orgAnicos riesgo, principalmente por los grandes disolventes que se manejan y almacenan ya que altamente flamables . es Los principales sitios de riesgo en son una planta de este tipo son : a> carga y descarga de camiones o carros tanque (derrames accidentales) ; b) fugas o derrames en tanques de almacenamiento ; d) calderas ; tuberías o c) derrames en v&lvulas descargando en areas no de tanques de los domos superiores protegidas ; a almacenamiento expuestos entre otros por trafico vehicular . e) impactos, riesgo de Otra fuente las importante es el vertido de aguas residuales, ya que los residuos de disolventes pueden alcanzar concentraciones que temperatura determinada pueden volatilizarse y a una producir explosiones de graves consecuencias. Para disminuir riesgos por uso de suelo en la ubicación de una industria de pigmentos y recubrimientos orgAnicos, recomienda que los asentamientos humanos se sitúen fuera radio de 5 Km de la industria, de se un y que otras industrias se sitúen por lo menos a una distancia superior a 1 .5 Km. La fase de construcción de una industria de pigmentos y recubrimientos orgAnicos causa impactos sabre la biota terrestre por las actividades de preparación del y el sitio, impacto socioeconomico producido por la migración para satisfacer la mano de obra demandada. En . la fase de operación de una industria recubrimientos org&nicos de pigmentos se producen impactos sobre la y calidad del aire, del agua y del suelo, siendo los 2 primeros los mas importantes. El impacto sabre la calidad del aire de una industria de pigmentos y recubrimientos org&nicos es debido a polvos y particulas emitidas durante las operaciones de molido y trituración de pigmentos, y las emisiones de gases, vapores y olores provenientes de diferentes fuentes durante los procesos y almacenamientos de disolventes, ( en la manufactura de pigmentos orgAnicos y recubrimientos). El impacto sobre la calidad del agua de una industria de pigmentos y recubrimientos orgAnicos es debido principalmente a las aguas residuales provenientes del lavado de peroles de reacción, lavado de pisos y en menor volumen a aguas de los procesos en si . Adem&ss aguas de purgas de calderas y torre de enfriamiento . Estos desechos contienen basicamente reactivos orgAnicos, monómeros, polímeros, sales, grasas y metales pesados como Pb, Fe, Al y Zn, adem&s de tener pH altamente bAsica . Las aguas residuales de pigmentas inorg&nicos son caracterizadas por contener metales pesados. Durante la fase de construcción de una planta de pigmentas y 'recubrimientos orghnicos, las regiones ecológicas m&s afectadas son la zona del tropico humedo y tropico seco, por tener abundante vegetación, y la zona acida por ser escasamente poblada (migración de mano de obra) . Durante la fase de operación, las mas afectadas son el tropico humedo, el tropico seco y la zona templada, por las emisiones liquidas y gaseosas que se emiten durante los procesos, que afectar&n la biota acuAtica, la terrestre y al hombre. Para mitigar los impactos producidos por una fabrica de pigmentos y recubrimientos org&nicos se recomienda: - Su no construcción en zonas con abundante vegetación natural. = Crear unidades habitacionales para personal de obra de construcción. - Implantar sistema efectivo contra incendio y equipos de protección adecuados para el personal. - Realizar tratamientos a las aguas residuales. - Segregar efluentes, siendo una corriente la proveniente de purga de calderas y torres de enfriamiento ( puede ser vertida a sistemas de tratramiento de aguas municipales, previa coagulación quimica para separar componentes de cobre) . La segunda corriente seria limpieza de peroles, tratamiento la de los procesos, de la pisos y bodega (se incluyendo : sedimentador y sugiere un desgrasados, neutralización tratamiento secundario a base de lodos activados, y coagulación, tratamiento fisicoquimico, consistente de precipitación y decantación). Para mitigar los impactos producidos por una fabrica de pigmentos y recubrimientos org&nicos se recomienda: - Disminuir pérdidas por evaporación de los tanques de almacenamiento, usando tanques de techo flotante y sistemas de recompresión en tanques de techo fijo. - Reducir las emisiones durante la carga y descarga de carros tanque utilizando la técnica de llenado sumergido. - Dependiendo de la naturaleza de los procesos y de los químicos orgAnicos, los vapores liberados a través de las v&lvulas de alivio, pueden ser venteados a la atmósfera para su dispersión o quemados y enviados a una chimenea. - Para gases y vapores las técnicas utilizadas para su reducción son : dispersión, chimeneas, combustión directa, combustión catalitica, absorción, compresión y refrigeración. - Los olores son gases y vapores . eliminados por las mismas técnicas que para ESTUDIO PARA LA EVALUACION DE I .A. DE LA INDUSTRIA DE LOS FERTILIZANTES (Ref . 4) La industria de los fertilizantes en Mexico esta representada por la empresa Fertilizantes Mexicanos, S . A. (FERTIMEX), la cual cuenta actualmente con 13 unidades productoras, destacando la de Pajaritos Ver ., L&zaro CArdenas, Mich ., y Queretaro, Oro . Existen otras empresas que producen fertilizantes en menor cuantía, principalmente sulfato de amonio. FERTIMEX divide el mercado de consumo en 8 zonas del pals; encontrindose las mas consumidoras en la región acida. Los principales fertilizantes que se consumen en el pals son los nitrogenados y fosfatados, entre los que se tienen : urea, sulfato y nitrato de amonio, formulas complejas con nitrógeno y con fosfato, y superfosfato simple y triple. El crecimiento en la producción de fertilizantes para el peri6do de 1975 a 1982 fue de 8 .29% promedio anual y el crecimiento del consumo de 12 .97% promedio anual. Las principales materias primas para la producción de fertilizantes son : roca fosfórica y Acido fosfórico, amoniaco y Acido nitrico y ácido sulfdrico. Los yacimientos de roca fosfórica en el pals, se encuentran en Zimapan, Hgo ., Saltillo, Coah ., San Juan de la Costa y Santo Domingo, en B .C .S. La ' obtenci6n de roca fosfórica involucra las siguientes operaciones : minadoo beneficio, molido, triturado, cribado y calcinación . Entre los principales contaminantes generados por dichas operaciones se tienen polvos y particular, asi coma fluor gaseoso y aguas de desecho. La obtención de H3PO4, ácido fosfórico, por via humeda se efecteta por digestión de la roca fosfórica con ácido sulfbrico; de dicha operación se obtiene como desecho una suspensión que contiene principalmente : yeso, ácido fosfórica, fluor, silice y metales pesados como Cd, Hg, Cr y Zn. La producción de ácido nitrito consiste en la oxidación del amoniaco con aire para formar óxido de nitrógeno, el cual es oxidado a dióxido de nitrógeno . Se genera en el proceso gas contaminane de NH3. En el proceso del superfosfato simple, se convierte la roca fosfórica comercializable en superfosfato simple, por reacción con ácido sulfbrico, el cual es vendido directamente o mezclado para elaborar fórmulas complejas . Las emisiones contaminantes generadas son particulas de roca fosfórica y aguas de desecho conteniendo HF y H2SiF6. El superfosfato triple se produce haciendo reaccionar roca fosfórica con ácido fosfórico, el cual puede venderse directamente o mezclarse con otros para elaborar fórmulas complejas . Las emisiones producidas son aguas de lavado y gases de HF3 y SiF4. Para la producción de urea se combina el amoniaco con dióxido de carbono a alta presión y temperatura para formar carbonato de amonio el cual es simultáneamente deshidratado para obtener una solución de urea, de donde Esta se extrae y se convierte en un sólido fundido . Los desechos principales son gases de amoniaco. El sulfato de amonio se produce reaccionando amoniaco con Acido sulfúrico . El producto puede venderse o mezclarse para fabricar fórmulas complejas . El anico desecho es vapor de agua. El nitrato de amonio se produce de la reacción de amoniaco anhidro con Acido nítrico ; puede ser vendido o usado para elaborar fórmulas complejas . Los contaminantes producidos son polvos y amoniaco. La fabricación de fórmulas complejas incluyen las siguientes operaciones : disolución, amonización, granulación, secado, disolución de lodos y mezclado . Las emisiones principales son de amoniaco. Los riesgos a la industria de fertilizantes son por manejo y almacenamiento de combustibles (gas, diesel, combustoleo) y por manejo y almacenamiento de materias peligrosas : H2804 y HNO3 (corrosivos), NH3 (toxico), NH4NO3 (explosivo). En la fase de construcción de una planta de fertilizantes, los impactos mAs sobresalientes son sobre la biota terrestre, por la preparación del sitio, y con mas magnitud en regiones con abundante vegetación como son el tropico humedo y seco . Asi mismo el impacto socioeconomico es importante en la zona Arida debido a la migración y creación de fuentes de empleo ; este aspecto tiene el impacto positivo de generar, emplear y distribuir los ingresos en compras locales beneficiando la economía regional. \ En la fase de operación de una planta de fertilizante, los principales impactos producidos son sobre la biota terrestre y acuAtica . Los primeros por los gases y partículas que son emitidos durante los procesos o en el almacenamiento de productos terminados, siendo principalmente fluor, NH3 y NOx, lo que tambi6n afecta al hombre en su salud ; dicho efecto es de mayor importancia en las regiones tropico humedo, tropico seco y zona templada . La biota acuatica se ve afectada por el desecho líquido producido en la fabricación de acido fosfórico (fosfoyeso). El impacto negativo socioeconomico de la fase de operación de una planta de fertilizantes (dadlo al hombre y pérdidas materiales) tiene su mayor efecto en las zonas más densamente pobladas, que en general corresponden a las de mayor desarrollo industrial, dicha zona corresponde a la región templada . El impacto positivo es en la socioeconomia por constituir fuentes de empleo permanente, además del beneficio para la economía nacional que representa el uso agricola de los fertilizantes. Los efectos sobre el hombre y la biota terrestre producidos por las emisiones contaminantes generadas por una planta de fertilizantes son: - Los óxidos de nitrógeno (NOx) afectan principalmente los bronquios y pulmones del hombre y en altas concentraciones producen la muerte . En los vegetales afectan su estructura, causando rompimiento de los tejidos y disminución de la fotosintesis . Además decoloran las fibras textiles . Los NOx se pueden transformar en HNO3 liquido que es corrosivo para los metales. - El HNO3 en forma gaseosa es tóxico y afecta las vi as respiratorias superiores. - El HF es un gas venenosa a altas concentraciones ; a bajas concentraciones y en exposiciones prolongadas, causa fluorosis en el tejido oseo . En los vegetales afecta su estructura y composición, por el quemado de las orillas de las hojas ; las coníferas son muy sensibles a este contaminante. Las medidas de mitigación de impactos ambientales para una planta de fertilizantes son: - Crear unidades habitacionales, con servicios, para el personal de obra durante la fase de construcción. - Se recomienda no construir plantas en zonas con abundante vegetación. - Se recomienda instalar equipos para disminuir la emisión de contaminantes gaseosos : ciclones primarios y secundarios, en el lavador y secador, de los gases de reacción. - Se recomienda una disolución del fosfoyeso hasta un 99 .06% previa descarga en el mar con un difusor submarino a 30 metros de profundidad. - Se recomienda realizar estudios de recuperación de compuestos de fluor del desecho de fosfoyeso, en forma de H2SiF6 ; esto evita serios problemas de contaminación y es atractivo desde el punto de vista económico. - La distancia minima para permitir asentamientos humanos deber& ser a 5 km a la redonda de la planta y para el emplazamiento de otras industrias a 1 .5 Km. Estandares de emisión para contaminantes de la industria de fertilizantes : CONTAMINANTE Amoniaco Fluor HF NOx Particulas _ ESTANDAR PAIS Al emani a USA Al emani a Alemania Espana 50 ppm (35 mg/m3) 0.4 Kg/ton P205 2 mg/M3 9 mg/M3 120 mg/M3 fert . org. 150 mg/M3 fert . nitr. 150 mg/M3 fert . fosf. Estandares de Emisión para plantas de fertilizantes (EPA, 1975): PROCESO ' Proceso humedo Acido fosforico CONTAMINANTE Fluoruros totales Acido super f osf orico Fosfato diamonico 0 .06 11 Superfosfato triple Superfosfato triple granular 11 0 .02 11 0 .0005 lb/hr/ton • ESTUDIO PARA LA EVALUACION DEL IMPACTO AMBIENTAL DE LA INDUSTRIA DEL AZUCAR (Ref . 2) El cultivo de calla de azucar esta ligado al clima, la abundacia de agua y a suelos ricos en materia orgAnica, esto determina la localización de la actividad azucarera . En México el cultivo de cana de azucar se da principalmente al sur del Tropico de Cancer, en un total de 15 estadoss siendo los m&s importantes Veracruz (39/.), Jalisco, Sinaloa y Oaxaca, contribuyendo estos 3 &Itimos con un 26% de la producción. Se producen 3 tipos 'de azucar : crudo o mascabado, estandar y refinado . Las actividades asociadas con la industria del azucar son : elaboración de alcohol, ron y piloncillo, fabricación de papel . La taza de crecimiento de producción de azocar para los peritodos 1968-1974 y 1978-1983 fue de 2 .6% anual, sin embargo la taza de consumo pera el periodo 1968-1980 fue de 5 .09% . Las actividades involucradas en el cultivo de calla de azocar son : preparación de tierras, cultivo de plantillas y de socass cosecha . En la preparación de tierras se rastrea, surca y fertiliza, por lo general con maquinaria agricola . El cultivo de plantillas y socas involucra el barbecho-cruza, rastredo, surcado, siembra, riego, abonos, cultivos y limpias . Cuando la plantas maduran se efectda la zafra para facilitar su cosecha, la cual dura alrededor de 156 dias. Las actividades involucradas en la obtención de az&car crudo son : extracción de jugos, clarificación y cristalización . La extracción se efectaa en tandems, obteniéndose bagazo de cara (fibras celulosa) . El jugo de cana pasa a clarificación, donde se obtiene la cachaza como subproducto (abono para campos de cana). Después se realiza la cristalización, por evaporación del jugo; pasando a subsecuentes procesos de ebullición y centrifugado, obteniéndose el aztcar crudo ; de las cristalizaciones se obtienen mieles incristalizables, para su posterior utilización en la fabricación de alcohol. El azócar refinado se obtiene a partir del azócar crudo, al cual se le hacen las siguientes operaciones : lavado, clarificación, filtración, purificación (con carbón animal o vegetal), cristalización, centrifugado, secado y envasado en sacos de 50 Kg, al igual que el azócar crudo. El alcohol etílico se produce procesando las mieles de azócar incristalizables (provenientes de la producción de azótcar crudo) : preparación del cultivo, fermentación y destilación . De la destilación se obtienen como subproductos, caldo de destilería que contienen potasio y fosfato (puede servir como abono), aceite de fusel ( mezcla de alcoholes superiores) que puede utilizarse para producir ésteres y dióxido de carbono. Los riesgos asociados a la indusria del azócar son: incendios por almacenamiento de bagazo de cana, debido a los grandes volumenes almacenados, ademAs pueden provocarse fermentaciones anaerobias, con riesgo de explosión en lugares cerrados ; explosiones por manejo y almacenamiento de alcohol, ya que es altamente volatil y flamable ; almacenamiento de combustible (diesel) . explosiones por Las actividades que ocasionan impactos en la fase de construcción de un ingenio azucarero son : limpias, desmontess junta y quema, nivelación del terreno, zafra, riego y fertilización . Dichas actividades causan efectos en el aspecto socioeconómico, en la fauna y flora terrestre, en el suelo, agua y aire . Se presentan efectos positivos en lo que se refiere a fuentes de empleos y niveles de ingresos, asi como en la productividad de cosechas. La localización de los ingenios azucareros del pals corresponden a 44% en el tropico humedo, 36% en la zona templada, 147. en el tropico seco y 6% en la zona árida. Las actividades de operación de un ingenio azucarero, producen efectos negativos en el agua y biota acuática, debido a los desechos que generan . Existen efectos positivos en lo que se refiere a nuevas fuentes de empleo, niveles de ingresos y calidad de vida. La región ecológica más sensible a un desarrollo de un ingenio azucarero es la zona del tropico humedo, por su gran diversidad de especies, asi como por sus ecosistemas frágiles . La región menos afectada es la región árida por sus propias características. Las medidas de mitigación de impacto ambiental en la industria azucarera son: - Asesoramiento al agricultor sobre los tipos y manejo de abonos, fertilizantes, herbicidas e insecticidas asi como uso adecuado de maquinaria dependiendo del tipo de suelo . Prohibición o disminución de las actividades de los aeropuertos cercanos a ingenioss durante la época de zafra, por la pérdida de visibilidad. - Recirculación del agua, principalmente de los evaporadores y del lavado de carta. Utilización de subproductos en la actividad azucarera (bagazo de carta, mieles incristalizables,cachaza) y en la producción de alcohol (caldo de destilerIas aceite de fusel, gas carbonico), para disminuir la contaminación y obtener mayores beneficios económicos. - Tratamiento de los efluentes surgiéndose dos tipos : tratamientos los combinados (lagunas de estabilización de dos pasos o lagunas aereadas mecAnicamente o lodos activados convencionales) ; los tratamientos separados para el efluente proveniente del lavado de carta (remoción mecAnicas decantación, aereación o laguna de estabilización) y para el efluente de condensados (lagunas de estabilización). La descarga de contaminantes al agua de cuerdo con el tipo de producción de azetcar son: TIPO DE AZUCAR Mascabado Estandar Refinado DESCARGA (M3/Ton) 330 .06 196 .00 224 .79 La composición de las aguas residuales en la fabricación de azocar es: TIPO DE AZUCAR' I CRUDO Kg/t gn PC gd_ Par_ámetCg 141 .27 49 .18 50 .50 SST DBO DQO ESTANDAR Kg/tgn PCód_ REFINADA hg/t gn er __ g 179 .73 139 .94 213.83 405 .07 245 .25 263 .00 Las características de un efluente típico de destilerías es: FARAMETRO DBO DQO N-organico ST STF STV SST SDT Fosfatos totales CONCENTRACION (mg/1) 91520 22000 446 97222 27226 69996 33400 63822 1250 ESTUDIO PARA LA EVALUACION DE IMPACTO AMBIENTAL DE LA INDUSTRIA DEL FLUOR Y SUS DERIVADOS (Ref . 5) La industria del fluor y sus derivados en México, est& compuesta por dos ramas principales : producción de ácido fluorhidrico (HF) y producción de fluorocarbonos (principalmente diclorodifluorometano (C12 CF2) y triclorofluorometano (C13 CF). Entre los principales productores de HF se pueden mencionar: Química Fluor, S . A., en Matamoros, Tam ., Industrias Químicas de México, S . A ., en S.L .P., Fluorex, S . A. de C . V ., en Cd . Juárez, Chih ., y Quimos Basicos, S . A ., en Monterrey, N .L. Entre las empresas productoras de fluorocarbonos se encuentran CYDSA en Monterrey, N .L ., y Halocarburos, S .A ., en Tulpetlac, Edo . de México. La materia prima esencial para la producción de HF es la fluorita (Ca F2) siendo México uno de los principales productores de ésta . Los yacimientos se encuentran en los estados de S .L .P ., Hgo ., y Coah . Dadas las características de las zonas de yacimientos de fluorita, el lugar más apropiado para nuevas explotaciones será en Muzquiz, Coah. La producción de HF en el pals creció en un 13 .17 . para el periodo 1975-1982 . El 66 .9% de la producción lo absorbe la exportación, 20 .7% la industria química y un 9 .87. el tratamiento de metales. La obtención de la fluorita implica beneficio y aglomeración . 3 etapas : minado, En el minado se generan polvos fugitivos y se produce contaminación de agua de corrientes subterráneas con polvos de roca, aceite, fluidos hidrAulicos y gasolina y otros materiales usados para trabajos bajo tierra . El beneficio incluye : lavado, separación, molido y cribado flotación, filtración y secado, y trituración ; los efluentes acuosos contienen sólidos suspendidos . La aglomeración consiste en concentrar el material y convertirlo en pellets a prueba de agua ; los desechos generados provienen del horno y consisten de vapores de la solución ligante. El proceso de producción de HF implica dos etapas: generación y purificación . La generación se efectta en hornos rotarorios donde la fluorita (grado Acido) es tratada con acido sulftrico ; se requieren 2 .4 ton de fluorita . y 2.7 ton de H2SO4 (96-987 comercial) por tonelada de HF producido ; el principal contaminante es sulfato de calcio generAndose alrededor de 3 .875 ton Ca SO4/ton producto . La purificación implica : absorción, condensación y destilación ; el HF recuperado alcanza purezas del 99% ; se generan emisiones de S02 y CO2, los cuales se ventean al aire en cantidades menores a 10 Kg/ton de HF. La producción de refrigerantes y aerosoles actualmente conforman el 75% de la producción de fluorocarbono . Las etapas de producción son : fluoración en fase liquida, destilación, separación, neutralización y secado . La fluoración con HF convierte los clorocarburos en fluorocarburos con ayuda de catalizadores de Sb C15, Sb C13 y CC13 F ; se requieren 1 .037 ton de CC14 y 0 .22 ton de HF por tonelada de producto . En la destilación se separan subproductos volatiles y se retorna el catalizador . En la separación, neutralización y secado se separan las productos crudos y productos finales. El principal riesgo que puede presentarse en la industria del fluor y sus derivados, es el almacenamiento de HF y de fluorocarbonos, por fugas de estos ; ya que son venenosos, ademAs, se tiene que los fluorocarbonos destruyen la capa de ozono estratosferico que sirve coma filtro de radiaciones ultravioleta que causan cancer de la piel. El Acido fluorhidrico es un gas irritante a los tejidos del cuerpo y el tracto respiratorio es muy sensible a 61 . Una exposición breve de los vaportes de HF, de alrededor de 1 parte por mil puede ser fatal . Los sintomas que causan una fuga de este son : irritación de mucosas, accesos continuos de tos, asfixia y por raltimo la muerte . Si este es respirado en bajas concentraciones durante peri6dos largos, causa fluorosis . En Alemania se han fijado valores de máxima concentración en los entornos industriales para los compuestos gaseosos de fluor de 2 mg/M3 y para compuestos en forma de polvo de 2 .5 mg/M3. Debido a que la actividad de producción de HF y fluorocarbonos se sitóa básicamente en la región árida del país, es ésta la que se ve afectada, no asi las regiones ecológicas restantes. Dentro de la fase de construcción de una industria de HF y fluorocarbonos, las principales actividades que causan efectos al media son : desmonte, sistemas de drenaje y excavación, los cuales afectan al suelo, al agua y a la biota asociados a embargo en la región &rida no son significativos . aire estos ; sin La calidad del se ve afectada por las actividades de colado, montajes de equipos y estructuras, limpieza de equipo, aplicación de pintura y aislamiento y pruebas de arranque ; término de la obra . estos efectos concluyen En el aspecto socioeconómico hay al impacto negativo . por migración de mano de obra e impacto positivo por generación de empleos y derrama económica en la forma loCal. Los impactos producidos por las actividades de minado de fluorita son: de la Degradación calidad del aire en la explotación y su entorno. Ocupación de terrenos, impidiendo otros usos (camping). - Pérdida de la cubierta vegetal (si la hay). del agua subterrAnea y superficial, Contaminación afectando a la biota asociada. - Reacciones mecAnicas, estéticas y din&micas provocadas por la excavación y explosiones. Dentro sus de la fase de operación de la industria del fluor y con lo que respecta a la producción derivados, afecta a el aire, el agua, de HF, se el suelo y las vistas escenicas, por fugas de &cido de la atmósfera o por derrames liquidos . El CaSO4 producido perturba las vistas escenicas, por su disposición en rellenos o contaminación formando cerros . El agua de enfriamiento causa en las corrientes superficiales por temperatura compuestos químicos . En la producción de fluorocarbonos y se contamina el agua (descarga de aguas rasiduales) y el aire (fugas a la atmósfera) . El impacto positivo es en el aspecto socioeconómico por generación de empleos y generación de divisas para el pals. Las medidas de mitigación de los impactos que ocasiona la industria del fluor y sus derivados son: - Construir unidades habitacionales para el personal de fase de construcción. - Las operaciones de minado deben efectuarse con un riego adecuado de agua o espuma, o colocar captores de polvo donde se genere una gran cantidad del mismo. - Agilizar investigaciones y pruebas para la utilización del SO4 generado en la producción de HF, por lo problematico de su disposición. - Si el CaSO4 se obtiene en forma anhidra, se recomienda manejarlo via humeda para evitar emisiones de polvos. Las medidas de mitigación de los impactos que ocasiona la industria del fluor y sus derivados son: - Con lo que respecta a los gases residuales que son venteados al aire, después de la descarga de los tanques de almacenamiento, se recomienda que sean enviados a una torre de lavado con solución alcalina y silice, para minimizar emisiones a la atmósfera y obtener fluorosilicatos del agua residual generada (los fluorosilicatos son comercializables). - Enviar las aguas residuales de la producción de fluorocarbonos a fosas de neutralización antes de su vertido final. - Se recomienda que los asentamientos humanos se sitáen por lo menos a 5 Km a la redonda de la planta y que otras industrias se sitóen por lo menos a 1 .5 Km de la misma. i ESTUDIO PARA LA EVALUACION DE IMPACTO AMBIENTAL DE LA INDUSTRIA DEL PAPEL Y LA CELULOSA (Ref . 6) Las industrias de celulosa y papel puede ser integradas, que producen celulosa y papel, y no-integradas, que producen sólo celulosa o sólo papel. En México, las materias primas basicas para fabricar celulosa son las maderas de coníferas (maderas blandas) y en menor proporción maderas de especies latifoliadas (maderas duras) y plantas vegetales anuales (agricolas) como borra de algodón, paja de trigo y bagazo de caria . Los bosques de coníferas y latifoliadas se encuentran en relieves elevados y se localizan en las cumbres de las sierras Madre Occidental, Oriental, del Sur y de Chiapas . Siendo las entidades que destacan por sus extensos bosques de coníferas : Michoac&n, Guerrero, Oaxaca, Chihuahua, Durango, México y Jalisco. Las principales actividades para la explotación forestal son : marqueo, timbado, trozado, descortezado, arrime, carga y transporte. En cuanto a los recursos fibrosos no-maderables para fabricación de celulosa, son utilizados en baja escala . Entre las industrias que utilizan bagazo de carta están : Mexicana de Papel Periódico, localizada en tres Valles, Ver ., y Kimberly Clark, Edo . de México. El sector industrial de la celulosa y del papel se encuentra localizado principalemente en la región templada, sutuándose el 66% en el D .F . y el Edo . de México . El crecimiento de la producción de celulosa, para el periodo 1973 a 1982, fue de 4% y para papel de 6% . La producción de celulosa y papel requiere del manejo de considerables volumenes de agua, estiméndose un indice de demanda de 100-200 M3/ton de celulosa fabricada y de 30-40 M3/ton de papel . La celulosa obtenida mecénicamente es un producto extraido de la madera o vegetal anual, el proceso consiste de una disgregación mecénica de la materia prima para separar las fibras entre si, se realiza moliendo la madera en grandes esmeriles, y pasada con agua a través de tamices, posteriormente, y también por tratamiento mecanico, se refina y seca para su transporte . El efluente de la corteza tamizada contiene partículas finas de corteza, madera y algunos sólidos disueltos. La celulosa preparada químicamente se produce por los procesos a la sosa, al sulfato (Kraft) y al sul f i to . Estos procesos se diferencian del mecénico por, el uso de agentes quimicos para la digestión de las astillas . En ellos se generan efluentes liquidas que contienen altas cantidades de materia org&nica, sólidos suspendidos, disueltos y sedimentales, y tienen un olor característico debido a compuestos de azufre formados por los quimicos uitilizados . Se tienen emisiones de compuestos de azufre olorosos (H2S) y . dióxido de azufre (SO2). La ' fabricación de papel implica : desintegración dé las pastas ; refinación ;, mezcla con productos como caolin, talco, y bióxido de titanio y adición de solución de sulfato de aluminio; adición de colorantes . Después de la mezcla, la suspensión de pasta previo paso por una serie de depuradores, concentradores y reguladores de consistencia, entra en la mAqUina para papel ; al final la parte humeda es del 32 .33% , la cual se pasa a la parte seca donde sale con solo 8-6% de humedad . Finalmente pasa a la sección de acabado . Las aguas residuales de la fabrica de papel contienen fibrillas en suspensión, cargas minerales, sales disueltas y accidentalmente colorantes. Los principales factores de riesgo dentro de la industria de la celulosa y papel son el almacenamiento de materia prima y de productos terminados, ya que los materiales celulósicos son altamanente flamables. Durante la fase de construcción de una industria de celulosa y papel la principal actividad que causa impacto es la de desmonte, por la erosión que puede provocar, asi como el cambio en el uso del suelo, y la pérdida de vegetales y animales, cuya importancia dependera de la zona . Otro impacto será el debido a la migración de mano de obra . El impacto positivo es la generación de empleos y la derrama económica regional. Durante la fase de operación de una industria de celulosa y papel, considerando la explotación forestal, los principales impactos se deben a las actividades de : labores agrícolas, pastoreo, incendios provocados y tala clandestina ; que influirán sobre la erosión, el estrato arboreo y arbustivo, calidad del agua, y del suelo y sobre la belleza escenica . En cuanto a los procesos de producción de celulosa y papel, los principales efectos son : sobre la calidad del agua y del aire, y sobre el hombre, en cuanto a salud, seguridad, asi como en el aspecto socioeconómico y est6tico ; el impacto de mayor magnqud es sobre la calidad del agua (por los grandes volumenes manejados y vertidos) y el de mayor importancia sobre la calidad del aire (las características de los contaminantes emitidos tienen efectos sobre el hombre y los materiales). Los impactos generados por la construcción de una industria de celulosa y papel son mas severos en las regiones tropico humedo y seco por tener vegetación . abundante debido a las actividades de preparación del sitio ; y la región acida ya que por ser escamente poblada la migración de mano de obra ser& mas significativa. En la fase de operación de una industria de celulosa y papel, las regiones mas afectadas son las zona templada, tropico humedo y tropico seco ; por las emisiones gaseosas y liquidas las cuales causan un mayor impacto por encontrarse los cuerpos de agua y especies vegetales m&s sensibles. Las medidas de mitigación de impactos para una industria de celulosa y papel son: - No construir plantas en regiones con abundante vegetación natural. - Construir unidades habitacionales para personal de obra. - Explotación racional, usando técnicas silvicolas adecuadas. - Utilizar en mayor proporción materiales fibrosos no-maderables . - Situar esta industria cerca de ingenios azucareros para utilizar bagazo de caña. - Emplear sistemas de recirculación de agua, asi coma de recuperación de subproductos, en la fabricación de celulosa y papel. - Aplicar tratamientos a las aguas residuales (pretratamiento, tratamiento primario y secundario a base de lagunas aereadas mecanicamente). - Controlar emisiones al aire : mejoras en la combustión; recircular corrientes ; instalar precipitadores electrostaticos, lavadores, desniebladores, etc. - Se recomienda no permitir asentamientos humanos a una distancia minina de 2 Km de la planta y de otra industria a 1 Km . "S E D U E" REGIONALIZACION ECOLOGICA DEL TERRITORIO 4a . VERSION (Ref . 8) ZONA AB l Pe Esta zona ocupa la mayor parte del est& determinada por la latitud . centro y norte del pals y A este nivel se encuentran los grandes desiertos del mundo coma el Sahara, el los del centro de Asia, el tropico Arabigo y debidos a que aproximadamente entre de Cancer y los 30 grados latitud norte existe en que predominan los vientos una franja de superficie descendentes, determinados por la' Circulación General de la lo Atmósfera, no que provoca que haya nubosidad y precipitación ; ademas, la gran continentalidad o lejanía al mar y la presencia de los grandes sistemas actetan montaflosos, como barrera para los, vientos humedos, aridez . acent&an que la Estas condiciones climAticas provocan bajos volumenes de precipitación y vegetación de tipo xerofitico y lo matorrales, por disponibilidad de que la limitante ambiental es la agua, que en algunos casos llega a ser extrema. La precipitación media anual es inferior a 600 mm, que las temperaturas que se presentan son mientras extremosas . Esta zona esta dedicada principalmente a la ganaderia y a la agricultura fronterizo de riego y a la y temporal, explotación originales de la zona (cactáceas, de asi como al turismo recursos floristicos jojoba, candelilla, etc .) . Es en este ultimo renglón en donde se est& llevando a cabo una sobreexplotación de recursos que amenaza su permanencia en los ecosistemas. Comprende los estados de Baja California, Baja California Sur, Coahuila, Zacatecas y Aguascalientes, la mayor parte de Sonora, Sinaloa, Chihuahua, Durango, Nuevo León y Tamaulipas e importantes Areas de Guanajuato, Querétaro, San Luis Potosi e Hidalgo. II . ZONA TEMPLADA La zona templada se caracteriza por tener temperaturas supVriores a 18 grados centigrados en el mes más caluroso y descender en la época invernal, aunque conservando su promedio superior a los 0 grados centigrados . Se registran precipitaciones con promedios mayores de 600 mm . anuales, generalmente en verano. Esta zona esta determinada por los grandes sistemas montaftosos, cuya altitud suaviza un teórico clima tropical por la latitud . En ella se desarrolla vegetación de tipo bosque (principalmente de pino, de encino y asociaciones de ambos) y pastizales. Tales condiciones clim&ticas ocasionan la mayor concentración de población del paiss cuyas principales actividades económicas son la agricultura, la ganadería, la explotación forestal, la industria y el turismo . Al constituir la zona mas urbanizada, ha sufrido la mayor degradación de sus ecosistemas, que se traduce en una intensa deforestación y un acusado empobrecimiento Y erosión de los suelos. Las entidades incluidas son Tlaxcala y Distrito Federal, la mayor parte de Puebla, Mexico, Hidalgo y Jalisco, asi como partes de Oaxaca, Morelos, Querétaro, Zacatecas, Tamaulipas, Nuevo León, Michoac&n, Guanajuato, Nayarit, Durango, Sinaloa y Chihuahua. III . ZONA DEL TROP'ICO SECO Esta zona se caracteriza b&sicamente por una temperatura media anual superior a 18 grados centigrados y precipitación pluvial entre 800 y 1200 mm . anuales, que se presenta en su mayor parte en verano. La estacionalidad de la precipitación y las altas temperaturas provocan una alta evaporación durante la temporada seca, que caracteriza ambientalmente a la zona. Los tipos de vegetación que se presentan son muy diversos y varian desde selvas medianas y bajas hasta sabanas, palmares e incluso asociaciones de xerafitas, aunque estas ultimas no son caracterlsticas de la zona . Las actividades económicas b&sicas son la agricultura de temporal, la explotación fotestal y el turismo. La Canica entidad comprendida integramente es Guerrero, mientras que importantes &reas de Oaxaca, Michoachns Colima, Jalisco, Nayarit,Sinaloa, Sonora y Morelos también se incluyen en esta zona. / Iv . ZONA DEL TROP' CO HUMEDO La zona del tropico humedo se caracteriza por presentar una temperatura media anual superior a los 18 grados centígrados y precipitaciones mayores de 1200 mm . anuales . Su clima, favorecido por la prolongada llanura costera, es francamente tropical, lo que permite el desarrollo de exhuberante vegetación del tipo de selvas altas, medianas y bajas que coexisten con pastizales antropogénicos. Aunque corresponde a la zona con recursos naturales más abundantes, comprende también los ecosistemas más frágiles donde la principal limitante ambiental es la cobertura vegetal, por lo que el desarrollo de actividades económicas fácilmente los degradan, de manera particular la ganadería, la agricultura tropical, la extracción petrolera y la explotación forestal. Las entidades comprendidas son Quintana Roo, Yucatan, Campeche, Chiapas, Tabasco y Veracruz, además de porciones de Oaxaca, Tamaulipas y San Luis Potosi . REFERENCIAS. '. (1) . de SEDUE, "Estudio para la evaluacion de impacto ambiental la industria del acido sulfurico", Subsecretaria de Ecologia, 1985. (2). SEDUE, "Estudio para la evaluacion de impacto ambiental de la industria del azucar", Subsecretaria de Ecologia, (3). 1985. SEDUE, "Estudio para la evaluacion de impacto ambiental de la construccion y operacion de los aprovechamientos hidroelectricos", Subsecretaria de Ecologia, 1985. (4). de SEDUE, "Estudio para la evaluacion de impacto ambiental la industria de los fertilizantes", Subsecretaria de Ecologia, 1985. (5) . SEDUE, "Estudio para la evaluacion de impacto ambiental de la industria del fluor y sus derivados", Subsecretaria de Ecologia, 1985~ (6) . SEDUE, "Estudio para la evaluacion de impacto ambiental de la industria del papel y la celulosa", Subsecretaria de Ecologia, 1985. (7) . SEDUE, "Estudio para la evaluacion de impacto ambiental de la industria de pinturas y solventes", Subsecretaria de Ecologia, 1985. (8) . Regionalizacion Ecologica del Territorio", Subsecretaria de Ecologia, 4a . version, Diciembre 1984 . SEGUNDA PARTE -----------a DISENO DEL SISTEMA Como se menciono anteriormente el SIRIA esta constituido por cinco modulas : !MODULO DE ! !MODULO DE ! !INFORMACION! !PREDICCION! ________________ !MODULO ! !CONVERSACIONAL! ! O DE ! !INTERFASE ! ---------------- !MODULO DE ! !APOYO ! !DECISIONAL ! !MODULO DE ! !SISTEMA DE! !EXPERTOS ! A continuacion se describe cada uno de los modulos . 3. MODULO DE INFORMACION . ^ Este modulo esta formado por la informacion de los Bancos de Datos y de Textos, los cuales fueron descritos en los parrafos Cabe mencionar que el modulo esta estructurado de tal forma que el usuario puede efectuar bajas, altas y cambios en los archivos que lo integran, asegurandose de esta manera una permanente actualizacion en la informacion que se maneja ^ 4 . MODULO DE PREDICCION. Este modulo esta constituido por dos tipos de herramientas usadas en la prediccion: - modelos de dispersion de contaminantes - modelos de simulacion de impactos cruzados. Los primeros se refieren a la dispersion de contaminantes en la atmosfera (se incluyen tres modelos) y en cuerpos de agua (se incluyen dos modelos). Los segundos se enfocan a la simulacion de tendencias de los elementos que conforman, por e j emplo, un sistema ecologico (se incluye un modelo) . 4 .1 . MODELOS DE DISPERSION DE CONTAMINANTES. En lo referente a contaminantes del aire, se incluyen los modelos que simulan tres situaciones diferentes: - calculo de concentraciones en un punto con respecto a un emisor puntual continuo y trazo de una curva de isoconcentracion - calculo de concentraciones a una distancia determinada a partir del punto donde se produce una fuga de gas o un derrame de un liquido que se evapora - calculo de concentraciones en el centro de un "puff" o burbuja de un gas, proveniente de un almacenamiento del cual es liberado masiva e instantaneamente. Con respecto a contaminantes del agua se incorporaron dos modelos : - calculo de la variacion de la demanda bioquimica de oxigeno (DBO) y del oxigeno disuelto (OD) en un rio o canal, a partir de un punto de descarga de un efluente liquido contaminado - calculo de la variacion de la temperatura del agua de un rio o canal, a partir de un punto de descarga de agua caliente . 4 .1~8 . MODELOS DE DISPERSION AIRE. A continuacion de describen los siguientes modelos: - Modelo gaussiano : posicion (x,y,z) e isoconcentracion - Modelo gaussiano : fugas y derrames - Modelo gaussiano : puff . 4~1~1~1~ MODELO GAUSSIANO : POSICION (XvYvZ) E ISOCONCENTRACION. El modelo emitido se se basa en la consideracion de que el contaminante dispersa siguiendo una distribucion gaussiana en las direcciones lateral y vertical . La concentracion de un contaminante gaseoso en una posicion proveniente de un emisor puntual continuo se calcula x ,y,z , con la ecuacion (refs .4,5,7): C(x,y,z ;He) = (Q/2PiSySzU) exp((-1/2)(y/Sy) :2) (exp((-1/2)((z-He)/Sz)°) + exp((-1/2)((z+He)/Sz)) (1) donde : C(x,y,z ;He) = concentracion en la posicion x,y,z,(g/m) Q = gasto de contaminante,(g/s) U = velocidad del viento,(m/s) Pi = 3 .1416 He = altura efectiva de emision,(m) Sy = coeficiente de dispersion en la direccion y , {m) Sz = coeficiente de dispersion en He es la direccion z,/m). igual a la suma de la altura real de la chimenea mas el termino de elevacion de la temperatura de los elevacion de la pluma debida gases a la pluma se salida a la velocidad y de la chimenea . La calcula empleando (refs .3,7): dH = (VsD/U)(1 .5 + 2 .72P((Ts-Ta)/Ts)D) donde : dH = elevacion de la pluma,(m) (2) la ecuacion Vs = velocidad de emision del gas,(m/s) D = diametro interno de la chimenea,(m) U = velocidad del viento,(m/s) P = presion atmosferica,(atm) Ts = temperatura del gas,(°°K) Ta = temperatura del aire,( = K). Se no recomienda concentraciones aplicar esta en ecuacion en el calculo de los primeros metros a partir de la base de la chimenea. Los coeficientes el considerando de dispersion Sy y Sz se tipo de estabilidad atmosferica, siguiendo la clasificacion de Pasquill-Turner <refs .3,7>: Clase calculan Estabilidad =========== A Muy inestable B Inestable C Ligeramente inestable D Neutra E Estable F Muy estable. La clase se determina a partir de la tabla siguiente : _____________________________________ Dia ! Noche ! !Velocidad! ! ! del ! ! viento !Radiacion solar!Nebu-!Nebu-! ! (a 10 m)!incidente !losi-!losi-! ! ! ! !dad !dad ! (m/s) !Fuer-!Mode-!Ii-!entre!< 3/8! ! !te !rada !ge !4/8 y! ! ! ! ! !ra !7/8 ! ! ! 1 ! ! <2 A ! A-B ! B ! F ! F ! 2-3 ! A-B ! B ! C ! E ! F ! ! 3-5 ! B ! B-C ! C ! D ! E ! ! 5-6 ! C ! C-D ! D ! D ! D ! >6 ! C ! D ! C> ! ! D ! D !---! ! ! Los valores de Sy o Sz se obtienen utilizando la ecuacion: Sy o Sz = a x ~ + c donde los (3) coeficientes correspondientes , en funcion del tipo de estabilidad, son (ref .3): __________________________________________ !Clase! x < 1km ! x > 1km ' ! c ! a b ! c ! a ! b ! ! ! ! !----! ! ! !A Sy! .215 ! .858 ! 0 ! ! Sz! .467 !1 .89 ! .01 ! mismos !! ! !----! coeficientes !B Sy! .155 ! .889 ! 0 ! que para ! Sz! .103 !1 .11 ! 0 ! x < 1 km !____! !C Sy! .105 ! .903 ! 0 ! ! Sz! .066 ! .915 ! 0 ! !----! ! ! !D Sy! .068 ! .908 ! 0 ! Gz! .0315! .822 ! ! 0 ! ! ! !E Sy! .050 ! .914 ! Q ! .050 ! .914 ! 0 ! ! Sz! .0232! .745 ! 0 ! .148 ! .150 !- .126! !----! ! ! ! ! !F Sy! .034 ! .908 ! 0 ! .034 ! .908 ! 0 ! ! Sz! .0144! .727 ! 0 ! .0312! .306 !- .017! ----/ ' / ! ! ! !----! ! ! ----- _------------ ________________________ Las curvas de isoconcentracion se calculah efectuando el cociente (ref .7): C (x , y , 0 ; He) / C(x,0,0 ;He) = exp((-1/2)(y/Sv)° (4) de donde y = (2 ln(C(x,0,0 ;He)/C(x,y,0 ;He)> 2 /2 8v (5) El programa calcula primeramente las distancias en las cuales la curva de isoconcentracion corta al eje x, determina los valores de y y en sequida en funcion de incrementos de la distancia x . Puesto que la forma de la curva se aproxima a una elipse, el area se puede estimar por (3 .1416 AB), donde A es el semieje mayor y B el semieje menor. El modelo implica las siguientes suposiciones: - la pluma posee una distribucion gaussiana de la concentracion de contaminante en las direcciones vertical y lateral, con desviaciones estandar de Sy y Sz, - la velocidad media del viento es U y se considera constante durante el tiempo de aplicacion del modelo, - la fuente emite con un gasto constante 0, no existe deposito de contaminante hacia el suelo, ni reacciona con el mismo, - la difusion de contaminante en la direccion x es insignificante. El modelo es aplicable en zonas con topografia plana sin obstaculos fisicos importantes . 4 .1 .1 .2. MODELO GAUSSIANO : FUGAS Y DERRAMES. El modelo se aplica para efectuar estimaciones de concentraciones de ' sustancias peligrosas, a nivel de piso , provenientes de una fuga gaseosa o de un derrame de un liquido que se evapora. Los parametros de salida del modelo son el tiempo que tarda la nube peligrosa en alcanzar una concentracion dada y el area de "exclusion" o area de riesgo, dentro de la cual se pueden tomar acciones preventivas de evacuacion de la poblacion en caso de accidente . Para el caso de una gas , la ecuacion empleada es fggª (refs .1,6): C(x,0,0 ;0) = (Q/PiSvSzU) (6) donde : C(x,0,0 ;0) = concentracion de la sustancia peligrosa, x metros abajo de la fuga,(g/m) Q = gasto de la fuga,(g/s) Pi = 3 .1416 U = velocidad media del viento,(m/s) Sy = coeficiente de dispersion en la direccion y , (m) Sz = coeficiente de dispersion en la direccion z,(m). En esta ecuacion, la fuga se considera como una fuente puntual . Para definir el area de exclusion se recomienda tomar los TLV's como criterio para determinar la concentracion maxima a la cual se puede exponer una persona durante periodos de tiempo relativamente cortos (1 hora)(refs .1,6). Las suposiciones implicadas en el modelo son las mismas que se indicaron para el modelo de posicion (x,y,z) e isoconcentracion. Un problema a considerar es la estimacion del gasto de la fuga de gas . Con el fin de dar una idea de la magnitud del gasto se tienen los siguientes datos (ref .1) : Tipo de Almacenamiento Gasto (kg/s) ====================== Valvulas para exceso de flujo en carros tanque y pipas < 0 .9 Valvulas para exceso de flujo en barcasas < 1 .9 Por lo general el tiempo que dura una fuga es de algunas horas, por lo que el gasto Q se puede suponer constante durante la modelacion. La determinacion del area de exclusion se efectua con el mismo procedimiento En el utilizado ca so de un d= para trazar una curva de === 42 un Lismisiggu2 a2 ey224n2 ,los calculos se efectuan considerando la emision como una fuente de area, suponiendose que la forma del derrame es cuadrangular (ref .7). El primer problema a resolver es la estimacion de la cantidad de sustancia que se evapora . Para esto, el modelo utiliza una grafica que relaciona el cociente entre la presion de vapor de la sustancia en cuestion y la presion atmosferica, con el gasto que se esta emitiendo por evaporacion (ref .l). De la misma forma que en el caso de fuga de gas, se asumen las restricciones de aplicacion El que se indicaron para el modelo modelo para derrames esta basado en la ecuacion 6 considerando una pequena modificacion, con el fin de representar la fuente de area : Sz se determina en funcion de la distancia x xv, y Sy en fúncion de una distancia ficticia x + asumiendo que: L = 4 .3 Syo (7) Syo = L/4 .3 (8) donde : L = longitud de un lado del cuadrado de derrame,(m) Syo = coeficiente de dispersion a la distancia x=,(m). Una vez que se calcula Syo, xr es obtenida a partir de la ecuacion 3 ya descrita. El procedimiento de calculo es identico como para el caso de fuga de gas, obteniendose el area de exclusion y el tiempo en que la nube de vapor alcanza un punto determinado con una concentracion dada . 4 .1~1~3 MODELO GAUS$IANO : PUFF. El modelo considera la dispersion de un "puff" tridimensional, o burbuja, formado por la masa de una substancia que es liberada a la atmosfera en unos cuantos segundos, tal como la liberacion de una nube de gas provocada por una explosion o ruptura de una esfera de almacenamiento . Se la dispersion de la nube, o puff, a lo largo de asume que la direccion del viento (x) es igual a la dispersion en la direccion lateral (y) . En este caso el viento interviene como vector de movimiento viento abajo del del puff, condicionando su posicion punto de emision. La ecuacion representativa del modelo es (refs .2,7,8): C(x,y,0 ;He) = (2Q/(2Pi) z5 ^°Sh--r-Sz) exp((-1/2)((((x-Ut)0+yo)/Sh) +(He/Szom)>) (9) donde : C(x,y,O ;He) = concentracion en el puff a nivel de piso en la posicion x,y a partir del centro del puff,(g/rO) Q = emision total de gas , (g) He = altura de emision,(m) Sh = Sy=Sx = coeficiente de dispersion del puff en las direcciones x e y , (m) Sz = coeficiente de dispersion del puff en la direccion z,(m) Pi = 3 .1416 t = tiempo de desplazamiento del puff,(s) U = velocidad promedio del viento,(m/s) x = distancia desde el centro del puff en la direccion del viento,(m) y = distancia desde el centro del puff en la direccion / lateral,(m) z = distancia desde el centro del puff en la direccion vertical,(m) Los terminos Sy y Sz, los cuales definen el tamano del puff , dependen de la distancia recorrida por el mismo (Ut) y de las condiciones de estabilidad atmosferica prevalecientes . En el modelo se considera que la estabilidad, y por lo mismo-el viento, permanece constante durante todo el recorrido del puff ; los coeficientes Sy y Sz se calculan can la ecuacion 3 ya descrita en el modelo de posicion e isoconcentracion, seleccionandolos de tal forma que la concentracion estimada resultante sea representativa de la concentracion que se tendria desde un emisor puntual continuo. El modelo da como salidas la distancia recorrida por el puff , el tiempo de recorrido y la concentracion en el centro del mismo a nivel de piso . Los calculos se efectuan de tal forma que se interrumpen cuando se alcanza una distancia de interes o una concentracion determinada por el usuario (que pueden ser los TLV's) . Igualmente se determinan las curvas de isoconcentracion correspondientes a la concentracion suministrada por el usuario , en varios puntos del recorrido del puff. Las condiciones de aplicacion del modelo son las mismas que fueron descritas para el modelo de posicion e isoconcentracion . REFERENCIAS. (1). Environmental Protection Agency, "Accidental episode manual", Office of Air Programs, Research Triangle Park, North Carolina, January 1972. (2). ~ Ludwig F .L .,Gasiorek L .S .,Ruff R .E ., "Simplif.ication of a gaussian puff model for real-time minicomputer use", Atmos .Environ ., Vol .11, pp .431-436, 1977. dispersion des polluants a l'aval des cheminees industrielles", E .D .F ., Bulletin de la Direction des Etudes et Recherches, Serie A Nucleaire, Hydraulique, Thermique, No .3, pp . 5 -64, 1972. (4). Neely W .B ., "Chemicals in the environment : distribution, transport, analysis", Marcel Dekker Inc ., New York and Basel, 1980 . (5). Pasquill F ., "Atmospheric diffusion : the dispersion of windborne material from industrial and other sources", Ellis Harwood Limited, 2nd .Edition, New york, 1974. (6). Powers developing J .E .,Pultz contingency S .,Paxton K .,Hsu H ., "Guide to plans for hazardous chemical emergencies", Centers for Disease Control, Center for Environmental Health, Atlanta, Georgia, September 1981. (7) . Turner D .B ., "Workbook of atmospheric dispersion ' estimates", Environmental Protection Agency, Office of Air Programs, Research Triangle Park, North Carolina, 1970. (8). U .G .Nuclear Regulatory Commision, "Methods for estimating atmospheric transport and dispersion of gaseous effluents in routine releases from light-water cooled reactors", Regulatory Guide 1 .111 ., July 1977 . 4 .1 .2. MODELOS DE DISPERSION AGUA. A continuacion se describen los modelos de dispersion en rios y caviales: -- Modelo de Streeter y Phelps : DBO-OD - Modelo I .A .E .A . : descargas termicas . 4 .1 .2 .8 . MODELO STREETER Y PHELPS : D.B .O. O .D. El modelo simula las variaciones de la Demanda Bioquimica de Oxigeno (DBO) y del Oxigeno Disuelto (OD), a partir de un punto de descarga de agua residual en un rio o canal, en funcion de la distancia recorrida por la corriente de agua. Las ecuaciones del modelo son deducidas efectuando un balance de masa en un volumen elemental de agua ; haciendo algunas simplificaciones se llega a las ecuaciones establecidas por Streeter y Phelps (refs .1,2,4,6): L = Lo exp(-klx/U) (1) D = (k1Lo/(k2-k1))<exp(-k1x/U) -exp(-k2x/U)>+Doexp(-k2x/U) (2) L = DBO a x km . de la descarga,(mg/l) Lo = DBO del rio, despues del mezclado del efluente,(mg/l) C = OD a x km . de la descarga,(mg/l) Co = OD del rio, despues del mezclado del efluente,(mg/l) Cs = concentracion de OD a la saturacion, (mg/1) k1 = coeficiente de desoxigenacion,(d- l ) k2 = coeficiente de reaereacion,(d- l ) x = distancia recorrida por la corriente a partir de la descarga,(km) U = velocidad de la corriente,(m/s) La ec .1 representa el proceso de biodegradacion de la materia organica, y la ec .2 ` describe la evolucion del deficit de oxigeno disuelto con respecto a la concentracion de saturacion (ref .1). El modelo considera el siguiente esquema: K X x (4.n1). ZONA DE MEZCLADO donde Qi,Qe y Qo son los gastos, de la corriente antes de la descarga "i", de la descarga "e" y de la corriente "o" una vez que los efluentes han sido mezclados . Para correr el modelo es necesario obtener los parametros iniciales Lo, Co y Qo de acuerdo con: Qo = Qi+Qe (5) Lo = (QiLi+QeLe)/(Qi+Qe) (6) Co = (QiCi+QeCe)/(Qi+Qe) (7) Por lo general se tiene que Qe<<Qi . La velocidad U se obtiene considerando: (8) U = Qo/A donde A es el area transversal del rio o canal en cuestion . Se asume que la zona de mezclado es pequena y que la mezcla es homogenea a lo largo del trayecto de la corriente. Los coeficientes kl y k2 son funciones de la temperatura, del gasto , hidraulicas) de las y condiciones de flujo (hidrologicas e del estado general de contaminacion de la corriente . Por lo general estos parametros deben ser obtenidos experimentalmente . A manera indicativa se tienen los siguientes valores para k2 (ref .4) : Tipo de corriente Rangos de k2 a 20 =C(d- ,. ) ================ ======================= Pequenos estanques 0 .10-0 .23 Lagos grandes 0 .23-0 .35 Corrientes grandes 0 .35-0 .46 a baja velocidad Corrientes grandes 0 .46-0 .69 a velocidad normal Corrientes tortuosas 0 .69-1 .15 Rapidos y caidas >1 .15 de agua Para otras temperaturas: ( k2 = (k2 9) a 20°C) 1 .024 -r - 2 ° . Si no se conoce k1 se le puede asignar algun valor inferior a k2 ; la velocidad de desoxigenacion (k1) es siempre mas pequena que la de oxigenacion (k2). La concentracion de saturacion es tambien una funcion de la temperatura (ref .1): donde T = temperatura,(°C). El modelo considera las siguientes suposiciones: - existe un flujo uniforme permanente (U = 0/A), donde Q y A son constantes en el tramo considerado de la corriente, - no toma en cuenta la biodegradacion de compuestos nitrogenados, - representa un balance entre el consumo de oxigeno por los microorganismos que efectuan la biodegradacion inmediata (DBO) la reoxigenacion que se efectua en la interfase y aire-agua, - no incluye el proceso de sedimentacion de particulas solidas conteniendo materia organica biodegradable, - no toma en cuenta la reoxigenacion por fotosintesis debida a ciertas algas. Por lo anterior es necesario tener cautela en la interpretacion de los resultados del modelo cuando se aplique a rios o canales donde: - la porcion modelada no puede considerarse homogenea, - existan puntos singulares, tales como: * varias descargas contaminantes importantes * cambios bruscos de pendiente (por ejemp. la presencia de una cortina) * cambios importantes del gasto de la corriente . 4 .1 .2 .2 . MODELO I .A~E.A. : DESCARGAS TERMICAS. El modelo simula la evolucion de la temperatura en un rio o canal, despues de que este recibe una descarga de un efluente liquido con una temperatura mas elevada que el agua de la corriente, en funcion de la distancia recorrida. El modelo esta basado en el siguiente esquema: .^ _ "= ~- CE o r:::.:~ ~ ~~ ~ .~ .~ .~ .~ .~ .~ .~ .~ . ~ .~ .. La ecuacion represehtativa del modelo es (ref .3): T(d) = Ti+((To-Ti)exp(-d/D)) (11) con Qo = Qi+Oe (12) To = (QiTi+QeTe)/(Qi+Qe) (13) donde : T(d) = temperatura de la corriente d km aguas abajo del punto de descarga, (DC) To = temperatura de la corriente, despues de mezclado del efluente,( D C) Ti = temperatura de la corriente antes del . aC) punto de descarga,( Te = temperatura de la descarga,( =C) d = distancia recorrida por la corriente a partir del punto de descarga,(km) D = distancia de relajacion,(km) Qi = gasto de la corriente antes del punto de descarga,(m 3 /s) Qe = gasto de la descarga,(m~/s) Do = gasto de la corriente despues del punto de ds/scarga,(rO/s) U = velocidad media del viento, a 2 metros de la superficie del agua,(m/s) Estas ecuaciones indican que bajo la influencia de varios factores meteorologicos (evaporacion, conveccion, radiacion), la temperatura corriente abajo del punto de descarga tendera a disminuir . Esta disminucion se asume de tipo exponencial . La distancia de relajacion D, corresponde aproximadamente a la distancia recorrida por la corriente cuando (To-Ti) es igual a un tercio de su valor inicial. Si se suponen condiciones meteorologicas estables a lo largo del recorrido del rio o canal, se tiene la siguiente relacion simplificada para D (ref .3): D = (h'Qo/hb)(864/0 .01T"+0 .95+(0 .62+0 .37U) (14) (1+0 .87e 0 ^ 00r ^)> donde : b = anchura promedio del rio o canal,(m) T" = temperatura superficial del agua,( ="C) h = profundidad media de la corriente,(m) h' = espesor de la capa de agua afectada por la descarga termica,(m) El modelo considera un mezclado completo, lo que conduce a que h=h'yT"=To. Los resultados del modelo deben interpretarse con mucha precaucion Y dentro ,de una perspectiva adecuada . Las aproximaciones teoricas efectuadas hacen que el modelo subestime la disipacion de calor por la corriente y por lo tanto sobrestime la temperatura corriente abajo del punto de descarga . Ademas el modelo no toma en cuenta aspectos tales como : — variaciones diarias de la temperatura del agua de la corriente, _ cambios en las caracteristicas de la corriente (anchura, profundidad, flujo, turbulencia,etc .), a lo largo de su recorridov variaciones en las condiciones meteorologicas . REFERENCIAS. (1). Agence Financiere de Bassin-Seine Normandie, "Modelisation du pouvoir autoepurateur des rivieres", Cahiers Techniques No .5, Juin 1977. (2). Hamer M .J .,MacKichan K .A ., "Hydrology and quality of water resources", John Wiley and Sons, 1981. (3). I .A .E .A ., "Thermal discharges at nuclear power stations: their management and environmental impacts", International Atomic Energy Agency, Technical Report Series No ^ 155, Vienna, 1974 . (4). Metcalf and Eddy Inc ., "Water resource and environmental engineering", Mc .Graw Hill Inc ., 1979. (5). Parker L .F .,Krenkel P .A ., "Thermal pollution : status of the art", Department of Environmental and Water Resources Engineering, School of Engineering, Vanderbilt Universityv December 1969. (6). 1979 . Shen H .W ., "Modelling of rivers", John Wiley and Sons, 4 .2 . MODELO DE SIMULACION DE IMPACTOS CRUZADOS (KSIM). El lenguaje de simulacion KSIM (Kane Simulation Modelling) esta orientado a establecer modelos estructurales, en los cuales el enfasis se pone en la manera que los elementos participantes se interconectan . KSIM fue desarrollado en 1973 por Julius Kane atacar y sus colaboradores, con el proposito de .cierta clase de problemas que emergen con frecuencia en la etapa de estructuracion de problemas socio-tecnologicos comlejos . El procedimiento tiene las siguientes caracteristicas: lo . Involucra interacciones complejas entre variables tanto del tipo cuantitativo como cualitativo. 2o . Estimula la interaccion entre grupos multidisciplinarios y con intereses diversos. 3o . Esta basado en ciertas suposiciones sobre la naturaleza de la dinamica de los sistemas. 4o . Ofrece amplia flexibilidad para modificar las interacciones entre los elementos e incorporar dinamicas de crecimiento alternativo. 5o . Esta diseñado para enfatizar la geometria de las relaciones en lugar de predicciones numericas. Existe un amplio espectro de problemas en los cuales KSIM ha sido empleado en forma exitosa (refs .1,2) . De ª~~ ' cig º del Metodg_ El usuario selecciona, en primer termino, el conjunto de variables que se considera relevantes Xi al problema bajo estudio. La no es restrictiva puesto que, como se menciono, solucion las adiciones y eliminaciones se pueden hacer facilmente. En segundo termino, es necesario normalizar las variables entre cero y uno (X E(0,1)), seleccionando los niveles superiores e inferiores de cada variable Xi. Con las variables seleccionadas y normalizadas, se procede a construir at, la Matriz de indicando ºri0_ E la interaccion Exclusivamente variable j . Interaccion (MI), orden , pudiendose entre se con elementos y la variable i la consideran interacciones de emplear una escala ordinal para medir la intensidad de las interacciones y el signo de las mismas . En este caso se acostumbra emplear el signo de "+" cuando la relacion "amplificacion" una relacion que existe entre o de refuerzo, Xi y Xj es de y el signo °-" cuando existe de amortiguamiento o inhibicion entre las variables. Es necesario contemplar las interacciones entre visceversa, aji entre Xj y Xi ; es decir la relacion a ^ j no es reflexiva. Cªl~~lº_ ~ªt~~ªtiEºa _ Las ecuaciones que rigen al KSIM son las siguientes: Xi(T+dT) = Xi(T) + ^^ r ' Xi y Xj y en donde T = KdT, para K un entero positivo y dT representa un periodo de tiempo . fi(T) esta dada por: m fi(T) = (1+(dT/2)E ! Zi~ -(Zij) Xj(T)/ j=1 m ! Zi~ +(Zij) Xj(T)) (1+(dT/2 j=l con Zij = al,+Bij Bij = b^j(d(ln Xi (T))/dT) y m = numero de variables a ^i = elementos de la matriz de interaccion b^4 = elementos de la matriz de derivadas de interaccion. Es conveniente hacer notar que el uso de las matrices A = (a ^ i) B = (b ^ j) corresponde a la consideracion de y impactos a corto plazo (matriz B) e impactos acumulativos a mediano y largo plazos (matriz A) . En la mayoria de las aplicaciones se hace uso exclusivo de la matriz A dado el objetivo primordial del modelaje y la filosofia basica de la tecnica. Pasos Principales lo . Seleccione las variables Xi. 2o . Escoja los valores maximos y minimos de cada variable y normalicelos dentro del rango (0,1). 3o . Prepare la matriz A de interaccion listando las variables dos veces, una como filas y la otra como columnas . El valor a ^i representa el efecto que Xi tiene sobre Xj . El numero puede ser positivo, negativo o cero, dependiendo si Xj incrementa, decrementa o no altera el valor de Xi. 4o . (Opcional) Preparar la matriz B con los coefficientes bij representados por el nivel de cambio de Xj con Xi. 5o . Las variables que actuan sobre otras pero que no son influenciado por ninguna, deben incluirse en la matriz como columnas exclusivamente. 6o . Seleccione el incremento de tiempo dT y los Valores Iniciales de cada Xi. 7o . Ingrese la informacion a KSIM de acuerdo a lo solicitado por el programa. So . Correr el modelo y analizar las graficas de la simulacion, obtenidas para cada variable. 9o . Modificar el modelo si los resultados no son satisfactorios (eliminando variables, cambiando valores a los niveles de impacto, condiciones iniciales, etc. 10o . Repetir los pasos 8 y 9 hasta obtener un modelo satisfactorio . De no lograrlo, reconceptualice el problema y su estructura y comience con el paso 1. 11o . Con el modelo obtenido y juzgado satisfactorio puede aplicarse para evaluacion de impactos y generacion de escenarios y politicas . REFERENCIAS. (1). Armijo R .,Medina J .G .,Jameson D .A .,Nava R ., "Manejo integral de los recursos renovables", Ciencia y Desarrollo, pp .111-119, Nov .-Dic . 1982. (2). Holling C .S ., "Adaptive environmental assessment and management", IIASA Applied System Analysis, John Wiley and Sons, Chichester, 1978. (3). Kane J ., "A primer for a new cross-impact language KSIM", Technological Forecasting and Social Change, Vol .4, pp .129-142, 1972 .. (4). Kane J ., Vertinsky I ., Thomson W ., °KSIM : a methodology for interactive resource policy simulation", Water Resource Research, Vol .9, No .1, pp .65-79, 1973 . 5. MODULO DE APOYO DECISIONAL 5 .1 PROCEDIMIENTO DE SELECCION DE ALTERNATIVAS BAJO CRITERIOS MULTIPLES (ELECTRE I). INTRODUCCION. El m&todo ELECTRE fu& originalmente desarrollado por la "Direction Scientifique" de la "Soci&tb D'Economie et Mathematique Appliquees" en 1965 de a solicitud , del Gobierno Francés . A sido exitosamente empleado dentro de los sectores p6blico y privado para atender problemas relativos a la selección de alternativas o proyectos bajo un esquema que considera m6ltiples dimensiones de evaluación, sin existir una sola dimensión dominante. Las problemas de decisión cuya naturaleza involucra m0ltiples dimensiones de evaluación o puntos de vista se les denomina multicriterios o multiatributos, y para los cuales se han diseftado esquemas adiversos para apoyar el proceso de toma de decisiones. ELECTRE constituye una herramienta de apoyo cuya filosofía bAsica es la de "facilitar" la decisión sin "intromisiones" excesivas en los procesos cognositivos de "el o la" responsable de tomar la decisión . Esto implica que ELECTRE I no produce una jerarquización de las opciones bajo consideración, sino que sef'fala las "mejores" opciones eliminando aquellas que estan "dominadas" por las opciones seleccionadas . Es posible que en algunas ocasiones una alternativa sobresale sobre el resto, dominando a todas las dem&s por lo que ELECTRE I la señalara como la mejor opción . Por lo general, sin embargo, es suficiente con reducir el netmero inicial de opciones bajo consideración a dos o tres y poder escrutinar con mayor detalle el subconjunto seleccionado. Conviene indicar que existe ELECTRE II cuya función es la de proveer una jerarquización de todas las opciones bajo escrutinio. Se ha considerado pertinente iniciar con ELECTRE I por ser de mas fAcil aplicación y de contar con numerosas instancias en las cuales su uso ha sido exitoso. Como una segunda generaci6n de herramientas de Apoyo Decisional se estima que la implementación de un modelo de funciones utilitaristas multidimensionales (referencia 3) seria el paso mas indicado, dado que este enfoque' complementa al de ELECTRE. PLANTEAMIENTO. El problema bajo consideración puede ser expresado de la siguiente manera: "Dado un conjunto inicial de alternativas, seleccionar un subconjunto de tal manera que las seleccionandas "dominen" a las no seleccionadas de acuerdo a la estructura de preferencias del responsable de tomar la decisión". En terminas prácticos ELECTRE I requiere definir los siguientes elementos: lo . Un conjunto de alternativas dentro de las cuales se hará la Selección. 2o . Un conjunto de puntos de vista o criterios mediante los cuales las alternativas serán evaluadas. 3o . Un conjunto de valores de importancia relativa que representan el peso (relativo) de los atributos de evaluación . Dichos pesos no tienen que sumar 100% y pueden definirse dentro de cualquier escala ordinal. 4o. Definir la escala en las cuales se definirá el conjunto de puntos de vista ; por ejemplo para el criterio de evaluación "COSTO", se le define una escala [0,100 en Millones], el atributo "FLEXIBILIDAD" se le define la escala [NULA, BAJA, MODERADA, ALTA], etc. Esto implica que ELECTRE permite considerar puntos de vista &ggggt 2 t ¡ ygs selección, lo y cuantitativos en el proceso de- cual se logra una visión mas balanceada de el proceso de selección . global 5o . Elaborar una matriz que resuma la evaluación de de vista a los puntos todos todas las alternativas . Esta es de gran utilidad puesto que sintetiza las matriz de características a acuerdo los los objetos bajo evaluación multiples criterios de de evaluación empleada . Asi se tiene que la matriz se forma, poniendo coma renglones a las alternativas y como columnas a los puntos de vista bajo evaluacion: Por ejemplo: P1 P2 P3 Pm ---------------------------Ai all a12 a13 aim A2 a2i . n LI An ani anm Los valores de aij corresponden a la evaluación de j-ava alternativa por el i-avo punto de vista. PROCEDIMIENTO. , A - CALCULO INDICE DE CONCORDANCIA - . El de indice medida del concordancia Cij esta definido como acuerdo que existe con la la hipótesis "La alternativa i es preferida a la j", y se calcula de la siguiente manera : SUM K e s ij w SUM k e P w k ij = Con S ij = C k de vista k. : i es preferido a j de acuerdo al punto w = peso de importancia relativa del punto de vista k. P = Conjunto de todos los puntos de vista. B - CALCULO DE L - INDICE DE DISCORDANCIA. El indice de discordancia Dij esta definido coma el savo elemento del conjunto decreciente R, tal que: la 1 R = C r :r k - a ki 1 kj = k e Dij k RMAX en donde se tiene que Dij = C k : i no es preferido a j de acuerdo con el punto de vista k, k e PI. aki, akj son las evaluaciones de las alternativas i y j empleando el punto de vista k. RMAX = valor mAximo absoluto de las escalas empleadas en todos los puntos de vista. C - CALCULO pg. ---E - - E Condicibn de dominancia. Si Cij >= p y Dij <= q para p y q EO,1], entonces g i ,j = 1 ; de lo contrario g ij = O . La matriz de g ij integra G(p,q,$). Se dice U es el que conjunto de todos los arcos definidos por g ij, tal que arc(i,j) pertenece a U solo g si ij=l . El si y U no es grafo definido por necesariamente completo ni transitivo y puede existir circuitos los cuales se suponen equivalentes. D - 0 I E0 gggg DEL uggLE g . Empleando G'(A,U) = 6(p 5 q,$) es el (sin circuitos), en donde A conjunto de nodos (alternativas) y U dirigidos, el nucleo N se define como el los arcos conjunta de nodos que no tienen arcos dirigidos hacia ellos y si se originan arcos de ellos hacia otros nodos . Formalemente se tiene que si: _ c N A y E= N (complemento de N con respecto a A) c 3 i e N, j e N arc(j,i) e U5 y 3 i,j e arc(i,j) d U, arc (j,i) d U. DE LOS Bgggt.182 gg . E El nucleo N contiene el subconjunto de alternativas que `dominaron' al evaluación empleados . resto de acuerdo a Los los criterios par&metros p y de q, denominados de 'concordancia' y `discordancia" respectivamente, permiten establecer condiciones globales de acuerdo y nivel de desacuerdo deseado en la selección de las alternativas . REFERENCIAS. Benayoun, R ., B . Roy and B . Sussman, 1966 . "ELECTRE : Une methode pour guider le choix en presence de points de vue multiples", Direction Scientifique, Note de Travail No 49, SEMA, Paris . Charpentier, A . R . and E . Jacquet-Lagreze, 1975 . promotion de l'electricite et 1'utilization de " La methodes multicriteres", METRA, v . XIV, No . 3, Paris. Cohon, J. L ., 1978 . Multiobjetive programming and Planning . Academic Press, N .Y. David, L . and L . Duckstein, 1976 . "Multi-criterion ranking of alternative long-range water resources systems" . Water resources Bulletin . Vol 12 . No 4 . pp . 731-754. Diaz-Pemax E ., L . Duckstein and G . Resnick, 1978 . "Water management in the Sonoita Creek Bastin, Arizona : a multicriterion approach", Working paper #78-26, Department of Systems & Industrial Engineering, University of Arizona, Tucson Arizona 85721. Jacquet-Lagreze, E ., 1973 . "Le probleme de l"aggregation des preferences : une classe de procedures a seuil", Mathematiques et Sciences Humaines, 43 . Roy, B . 1968 . " Classment et Choix en presence de criteres multiples ", RIRO, 2 anee, No 8, pp . 57-75 . 6 . SISTEMA DE EXPERTOS Un experto en una Area determinada conoce y emplea una serie de reglas, aserciones e hipótesis de trabajo mediante las cuales hace frente a las situaciones que se le presentan dentro de su campo de especialidad. Un sistema de expertos es una serie de programas que hacen uso efectivo de un conjunto de reglas codificadas por un experto o grupo de expertos de una manera entendible por los programas y que producen decisiones y/o recomendaciones con una calidad similar a la producida por expertos humanos. Los sistemas de expertos tienen caracterlsticas especificas, algunas de las principales son: 1 - El conocimiento codificado por el experto o grupo de expertos puede consistir de: a) Reglas estrictas, o sin incertidumbre. b) Reglas que consideran incertidumbre. La 61tima clase de reglas son aquellas que no pueden ser exactamente probadas, pero que son utilizadas por los expertos como una herramienta muy efectiva en muchos problemas prActicos . El conjunto de reglas generadas por el experto se denomina la "base de conocimientos" . La base de conocimientos puede contener reglas redundantes, asl coma reglas contradictorias . 2 - Al interactuar el sistema de expertos con un caso en particular, la base de conocimientos, la cual constituye el modelo inicial, cambia, a medida que se proporciona información adicional . Esto significa que las medidas de validez de algunas aserciones en la base de conocimientos son recalculadas por fórmulas implementadas en el software del sistema de expertos . A este software se le llama "m&quina de inferencias". Dado que es dificil o costoso obtener toda la in+ormación para el caso en mano, al sistema se le provee solo con la información obtenida, en la forma de un diAlogp entre el sistema de expertos y el usuario . E1 diálogo es un ana1ogia entre la consulta de un usuario a un experto . Las preguntas son hechas del sistema al usuario mediante una microcomputadora y el usuario responde o utiliza la base de conocimientos general, con la informaci6n modelo actual es reconfigurado, suministrada, el hasta que una o varias conclusiones son +armadas. 3 - El sistema de expertos debe explicar las decisiones o el proceso de razonamiento en cada momento de la consulta. 4 - El sistema de expertos debe trabajar con dos tipos de incertidumbre: a) La incertidumbre contenida en la base de conocimientos. b) La incertidumbre contenida en la base de datos (respuestas del usuario) . La base de conocimiento utiliza tres formas de representación del conocimiento: A) Reglas de producción . Son reglas de la forma E -> H que significa "si" hay una evidencia "E" entonces la hipótesis "H" es verdad . Ambas "E" y "H" se consideran como aserciones elementales (proposiciones). La hipótesis "H" puede servir como la evidencia en otra regla de producción, la aserción "E" pudiera ser la hipótesis con respecto a alguna otra regla de producción, de tal manera que la base de conocimientos representada por reglas de producción puede ser gráficamente expresada como un grafo dirigido, usualmente llamado red de inferencias. Los nodos de la red corresponden a las aserciones, las implicaciones entre pares de nodos son representados por los arcos que los unen . Los nodos superiores de los cuales no salen arcos se denominan hipótesis superiores . Los nodos a los cuales no llega ningun arco se llaman nodos hojas . Los nodos o espacios las cuales no son ni nodos hojas ni nodos superiores se llaman nodos internos .. La tarea de una consulta en particular es probar o negar una hipótesis meta. Las hipótesis meta son los nodos superiores de la red de inferencias, aunque tambi6n pueden ser nodos internos. Cada aserción puede ser preguntable o no-preguntable . Es nopreguntable si no tiene sentido preguntar por ella (el usuario nunca sabe la respuesta) o si ya fue respondida por el usuario durante la consulta . Las otras aserciones son todas preguntables . Por supuesto, las hipótesis metas son siempre no-preguntables, todas las hojas son preguntables al inicio de la consulta. cada uno A de los nachos se le asigna una probabilidad inicial de ocurrencia P(S), para cada arco (implicación) dos netmeros se le asignan ; lambda y lambda testada . Los valores de P(S) son siempre dadas por el experto, lambda y lambda testada expresan la incertidumbre subjetiva del experto para cada implicación. B) unciones aserciones 16gicas . Estas hacen posible compuestas . la expresi6n de Los tres tipos de funciones lógicas consideradas son : AND, OR, NOT. C) Arcos de Contexto . Estos arcos se utilizan cuando, antes de que una aserción pueda ser investigada, se requiere una verificación completa de otra . A cada arco de contexto se le asocian dos nameros ; alfal y alfa2 los cuales representan el rango de en el cual debe estar la probabilidad de que el contexto debe aserción . tener, antes de investigar la nodo otra Los arcos de contexto son una herramienta muy efectiva para mejorar la representaci6n del conocimiento de Ios expertos. ESTRATEGIA OE OPERACION DEL SISTEMA DE EXPERTOS 1) Se investiga la hipótesis meta seleccionadav ya sea porque es la que tiene el valor mayor de probabilidad y no ha sido completamente probada o es la hipótesis meta seleccionada por el usuario. 2) Hay dos etapas de operación que se van alternando: a) Preguntar al usuario . Se pregunta al usuario la aserción que mAs significativamente apoye la hipótesis meta b) y que Propagar la informaci6n . La informacibn dada por el usuario al responder una pregunta se propaga a travbs de la red de inferencias hasta la hip6tesis superior con respecto a las rutas del grafo orientado . Las probabilidades de las aserciones son recalculadas de acuerdo a ciertas reglas. 3) La consulta se termina si: a) No hay inferencias, más espacios preguntables en la red esto es, de todas las preguntas han sido respondidas en la consulta. b) El usuario desea terminar la consulta . REFERENCIAS . .) (1). Duda R .O . et Al ., "Systems in pattern-directed inference .systems", Roth Eds ., Academic Press, 1978. (2). Holling C .S ., "Adaptive environmental assessment and management", I .I .A .S .A ., John Wiley and Sons, 1978. (3). Zdrahal systems :MEXEXP 1984 . Z. 1 .0", et Al . , Informe "An eskeleton for expert tecnico AHR-84-29, CINESTAV, 7 . MODULO CONVERSACIONAL 0 DE INTERFASE. La estructura modular del SIRIA le confiere la capacidad de intercambiar informacion de un modulo a otro, sin necesidad de requerirse una intervencion manual, ni de recapturar la informacion ya disponible o generada por los modulos. Esta comunicacion implica un nivel de eficiencia mayor en el uso de los recursos, y se traduce en evaluaciones sistematicas, agiles y reproducibles. El manejo de los diversos modulos y opciones disponibles en el SIRIA se lleva a cabo a traves de una interfase, que proporciona todos los elementos para facilitar la tarea del usuario. El ambiente de trabajo del SIRIA se conformo de tal forma que se adapta a las necesidades de usuarios no especializados en el area de computacion . Para esto, se cuenta con entradas a todos los modulos y procesos mediante comandos simples y menus, pudiendose en cualquier momento solicitar ayuda al sistema en si . TERCERA PARTE ------------- I MPLEMENTAC I ON OPERATIVA S . SUMS DEL USUARIO A continuación se presentan las gulas del usuario para los siguientes programas: - Modelos de Dispersión dd Contaminantes. - Modelo KSIM - Modelo ELECTRE I o Sistema de Expertos . MANUAL DEL USUARIO < MODELOS > Al entrar al modulo MODELOS se despliega el menu principal de esta fase, en la cual hay 8 opciones, 3 para modelos de aire 2 para modelos de agua 2 para ayudas .y una para terminar y salir de MODELOS . MODELOS DE DISPERSION DE CONTAMINANTES aire A ) GAUSSIANO : PUFF B ) GAUSSIANO : ISOCONCENTRACION Y POSICION X,Y,Z C ) GAUSSIANO : FUGAS Y DERRAMES agua D ) STREETER Y PHELPS : DBO-OD E ) I .A .E .A . : DESCARGAS TERMICAS ayuda 1 ) ESCALAS GRAFICAS (Modelos Aire) 2 ) CONSULTAS T ) TERMINAR OPCION ----> DESCRIPCION: OPCION A = PUFF Al teclear primeramente A entrara al modulo PUFF el cual pide el nombre del contaminante , luego tiene varias opciones . A) Correr el modelo S) Salir Al teclear la opcion A) el programa pide los datos necesarios para ejecutarse . El programa ira desplegando los datos tecleados en la parte superior de la pantalla . Alterminar de capturar todos los datos se da la opcion de modificar los datos dados anteriormente, al entrar a modificar, si no se requiere modificar alguno solo teclee return . Cuando no sea necesario modificar ningun data teclear 'N' o 'RET' a la pregunta : Modificar Datos (s/n) --> En este momento se ejecuta el modelo con los datos proporcionados, obteniendo la grafica y desplegando los datos en la parte inferior de la pantalla. Al dar return se despliega de nuevo las opciones A) y S) si se selecciona S) se saldra al Nivel General de Modelos anteriormente descr e g gHHH 2 gg gg g N g E ggggggg N gg N g gggg ggg N X&YAl En esta opcion existen 3 alternativas : A: Concentracion Posicion X,Y,Z B: Isoconcentracion S: SAlir La alternativa A pedira para medir la concentracion las coordenadas X,Y,Z . Y desplegara las desviaciones Sigma Y y Sigma Z ademas de la Concentracion en el punto dado, las unidades de la concentracion van desde miligramos/m3 hasta nanogramos/m3 que se ajustan automaticamente dependiendo de la magnitud de la concentracion en ese punto.Para esta alternativa es recomendable seleccionarla despues de ejecutar la alternativa B ,si no es asi se pedira ademas de las coordenadas las datos' que pide la alternativa B. El programa localiza en la cuadricula las coordenadas X,Y proporcionales a la escala seleccionada en ayudas 1 ). Al teclear la alternativa B se pediran todos los datos necesarios para correr el modelo Gaussiano de Isoconcentracion. Tambien pueden modificarse los datos. Para este modelo es necesario esperar el resultado de la distancia inicial y final dentro de las cuales se encuentra una concentracion mayor o igual a la proporcionada en los datos. Si la grafica es muy pequena o muy grande a la escala en la pantalla, se puede seleccionar otra escala para X y Y saliendo del modelo y seleccionar Escalas Graf i cas con la opcion 1 ). Regresando al modelo y dar returns a todos los datos pedidos por el programa, ya que son almacenados en memoria siempre y cuando no se seleccione otro modelo. OPCION C = FUGAS Y DERRAMES Con esta opcion se selecciona el modelo Gaussiano para Fugas y Derrames, al igual que las opciones anteriores el modelo da las alternativas de correr el modelo o salir de este. MODELOS PARA AGUA OPCIONES "D" Y "E" STREETER Y PHELPS r La opcion "D" ejecutara el modelo Streeter y Phelps. Proporciona las siguientes alternativas : A ) Correr el modelo. B ) Calcular el DBO y OD en Posicion X. C ) Escalas X. S ) Salir. La alternativa A ejecuta el modelo pidiendo primero los datos necesarios y al terminar de capturarlos, el programa muestra la grafica automaticamente en la pantalla del DBO y la OD escala la Y de mg/litro para que ajustando grafica la aparezca completa en la pantalla . La alternativa B despues de tener la grafica en pidela coordenada X en Kms . pantalla y da coma resultado el valor del DBO y la DO en ese punto, localizandolo en la grafica encerrandolo en un circulo rojo. La alternativa C proporciona varias escalas para el eje X y al seleccionarse una, si ya se tiene la grafica en pantalla el programa vuelve a hacer la grafica con la escala seleccionada. a L DESCARGAS .g sti.g.g La opcion E ejecutara el modelo de Descargas Termicas. Proporciona las siguientes alternativas: A ) Correr el modelo. B ) Calcular la Temperatura en Posicion X. C ) Escalas X. S ) Salir. La alternativa necesarios. A ejecuta el modelo pidiendo los datos El programa ajusta la escala Y de temperatura automaticamente, igual que el modelo anterior. La alternativa B despees de seleccionar la A pide la Coordenada X en Kms . Y da como resultado la temperatura en esa coordenada desplegando su valor numerico y la localiza en la grafica encerrando el punto en un circulo rojo. La alternativa C es semejante al del modelo anteriormente descrito. Para salir de este modelo teclear la alternativa S. En la opcion 1) OPCIONES AYUDA se encuentra la ayuda para modificar las escalas en el eje Y y en eje X para los modelos Gaussianos de Aire . La opcion 2 ) selecciona a la rutina de Consultas la cual muestra en pantalla las siguientes alternativas: A ) Estandares de calidad de aire. B ) Niveles maximos de concentracion Permisibles. C ) Datos sobre sustancias peligrosas . 1 ) Descripcion de los Modelos. 2 ) Bibliografía. S ) Salir . Opcion ----> La opcion A despliega Estandares de calidad de aire en el siguiente fprmato: Pais mi1igr/m3 PPM Ti amoe Ecemad i2 Para los contaminantes siguientes: Bioxido de Carbono. Bioxido de Nitrogeno. Monoxido de Carbono. Particulas Suspendidas. La opcion B despliega Niveles Maximos de Concentracion Permisibles con el formato que sigue: Nombre del Contaminante __ 1 Cantidad Max Perm_. La opcion C despliega un listado de Materiales Unidades Peligrosos con el formato siguiente: M _ tat ___ Ealioteae I I_a_a_4_4 _EEM Y2_at ___4 _ 0 i La opcion 1 ) Descripcion De Modelos Despliega el menu de los modelos mencionados anteriormente y en cada uno describe la parte teorica. El Menu que muestra es el siguiente : D E S C R I P C I O N ! MODELOS g aire A ) Gaussiano : PUFF B ) Gaussiano : Isoconcentracion C ) Gaussiano : Fugas y Derrames. agua D ) Streeter y Phelps : DEBO y DO. E ) I .A .E .A . : Descargas Termitas. Opcion y concentracion X,Y,Z. E g im Al entrar al modelo KSIM el programa despliega el siguiente menu : K S I M =========== A ) Capturar Datos Desde el Teclado. B ) Capturar Datos De un Archivo. C ) Desplegar los Datos. D ) Correr el Modelo. S ) Salir. La opcion A pedira desde el teclado primeramente el numero de competidores , que sera el orden de la matriz de Incidencia que se tecleara dato por dato a la peticion desplegada en pantalla alfaCi, j] = ? . Luego pedira los pesos de cada competidor, y al final el numero de periodos en que se va a correr el modelo . Esto tambien sirve para el limite maximo en el eje X de la grafica. La opcion B toma los mismos datos pero desde un archivo tipo texto. La opcion C desplegara la matriz de incidencia, capturada anteriormente, asi como los pesos indicados. La opcion D se encarga de ejecutar el modelo y despliega las graficas de cada competidor con diferentes colores o combinaciones de colores . Al dar return se pasa al menu descrio anteriormente. Para salir del modelo teclear "S" en el menu . gula DE u g ua BB DE gLgni B I. Al entrar al Sistema ELECTRE, se muestra un menor donde se da la posibilidad de hacer varias acciones entre las cuales se encuentras I) LECTURA EN FORMA INTERACTIVA. 2) LECTURA DE ARCHIVO. 3) GRABAR DATOS ACTUALES. 4) EJECUTAR EL MODELO. 5) MODIFICACION DE DATOS. 6) SALIR. 1 . Lgg loe EPA EPBMO Imlm BB 1 B y B Al entrar con el Aumero uno, inmediatamente se cambia la pantalla pidiendo al usuario el NUMERO DE ALTERNATIVAS que se evaluarAn . El n&mero maje imo de alternativas es 15, cuando se escribe un valor, pasa inmediatamente a la lectura de los NOMBRES DE LAS ALETERNATIVAS, en caso de haber insertado un primero erróneo, la pantalla emite un sonido indicando error , debiendose presionar cualquier tecla para inicializar a el campo a cero luego poder reesrribir el n&mero . Y Al pasar a escribir los Nombres de las Alternativas, el indicador en azul se posiciona inmediatamente en el primer elemento (ALTERNATIVA 1) estando listo para que se pueda escribir el identificador de la Alternativa 1 . Se escribe normalente y en caso de error, se usa la tecla de <BACKSPACE> que se encuentra en la parte superior derecha (normalmente est& dibujada una flecha en inverso) . sentido Una vez que se ha escrito el nombre se puede avanzar presionando la tecla <RETURN> o las flechas hacia arriba y hacia abajo . No se avanzara a la siguiente sección hasta estar en la 61tima Alternativa y se presiona < RETURN>, lo cual significa que puede haber correciones antes de salir, moví endose Anicamente con las flechas . El n4mero minima de Alternativas es 2. Al pasar a la pantalla de E untg5 de %%% t. 5 igualmente pide el numero de Puntos de Vista a seleccionar (siendo entre 2 y 15), posteriormente pide el NOMBRE DEL PUNTO DE VISTA, luego el PESO del Punto de Vista, despues la Polaridad (+/-) dependiendo de si el punto de vista entre mas crezca, resulte conveniente o inconveniente para la evaluación ; el VALOR MAXIMO EN LA ESCALA a aceptarse en la matriz de calificaciones y en los calificadores. Luego el NUMERO DE CALIFICADORES EN LA ESCALA, O (cero) si no se usan calificadores, al llegar a este campo mientras no se termine con <RETURN> se pueden modificar algunos valores subiéndose con las flechas, pero si se presiona <RETURN> y el valor del numero de calificadores es cero, pasa al siguiente Punto de Vista, si no, muestra en la pantalla los CALIFICADORES, se permite un mAximo de 10, el primer campo es el NOMBRE DEL CALIFICADOR (m&ximo 10 caracteres), y luego sigue el VALOR para este calificador . Al terminar de llenar la Sección de Puntos de Vistas se pasa hacia la MATRIZ DE CALIFICACIONES entre las Alternativas y los Puntos de Vista, mostrando en la parte inferior las opciones a llenar en cada columna, si es numérica la entrada, se indica el rango de valores en los cuales se puede llenar la casilla correspondiente, si son Calificadores se mostrarán los posibles nombres que se pueden elegir, no se aceptan nombres diferentes a los seleccionados en la sección de Puntos de Vista . Cuando se escriba algun dato en una celda, al presionar <RETURN> simplemente se acepta el valor y se queda en la misma celda, pero cambiando el color a negro (indicador de celda llena)s si se mueve con las flechas (arriba, abajo, derecha, izquierda) se pasa a la localidad seleccionada, si se est& en algan limite la celda no se moverá . Si el ntmero de Puntos de Vista sobrepasa el námero de 6, al llegar a la parte derecha de la pantalla y dar una flecha hacia la derecha automáticamente estaremos en la séptima colmma recorriendo la pantalla de visualización, y asi sucesivamente en caso de tener mas valores hacia la derecha, cuando se desee volver a la izquierda, simplemente se mueve la flecha izquierda hasta llegar a la otra orilla de la pantalla y hacer los recorridos automáticos . Para salirse, la matriz tiene que estar llena (todos los valores en negro), y estar en la dltima posición de Alternativas y Puntos de Vista (esquina derecha inferior). Luego se leerAn los valores de 'p "p" es el es el indice de discordancia indice de concordancia, cual es el valor con el se va a comparar el y indice de discordancia siendo el s- sima oponente mas fuerte (normalemente es con el primero (1)). 2. LECTURA DE ARCHIVO. Al presionar el numero dos, la pantalla pide el nombre un archivo el cual fue anteriormente grabado . de Se pide el nombre y en caso de no existir, manda un aviso de que el archivo llamado no existe . Si todo es correcto inmediatamente lee las datos y muestra el menu principal. 3. GRADAR DATOS ACTUALES. Rara la grabación de los datos actuales de una corrida ELECTRE, simplemente NOMBRE DEL ARCHIVO se presiona la opción tres, a grabar, se y al finalizar regresa pide de el al menu principal. En caso de uno existir datos, manda un mensaje de error. 4. EJECUTAR EL MODELO. Al presionar el numero 4, se ejecuta el modelo con los datos actuales . En la pantalla se muestran las Alternativas Originales, en el lado derecho, y en el lado izquierdo las Alternativas Seleccionadas . En la parte superior derecha se muestran los valores de P y Q que son los indices de concordancia y discordancia respectivamente . Estos valores son normalmente cambiados (en la Sección de Modificación de Datos), y volviendo a correr el modelo, los Pesos de los también se cambian otros atributos como son Puntos de Vista, y las Calificaciones entre las Alternativas y los Puntos de Vista . Para volver al mend principal, oprimir <RETURN>. 5 . P~ODIEICBCION 2g DATOS. Se pueden cambiar los Nombres de las Alternativas, los Puntas de Vista y sus Atributos, las Calificaciones y los valores de P, Q y S . Se muestra un menos para seleccionar . Si se elige el numero 1 se pueden cambiar los Nombres de las Alternativas como en la sección de la Lectura en Forma Interactiva . Al escoger el numero 2 se elige un Punto de Vista y se muestran los valores de los atributos respectivos a este Punta de Vista, pudiéndose hacer los cambios requeridos . Con el punto 3 se pueden cambiar las calificaciones en forma similar a la sección de lectura . El punto 4 modifica las valores de P, y los valores de P, Q estAn entre O y 1 . b. 06IDA. Salir del modelo ELECTRE . ELECTRE I _________________________________________________________________________ IUMERO ---- DE ALTERNATIVAS: - 1 ~_ 2 ._ _____________________________________________________________________ 5 .- ___________________________ __________ __________________ ______________ 3 4 6 7 .- _____________________________________________ 8 9 _______________________ {)~_ _____________________________________________________________________ 1 2 ~_ 3 _____________________________________________________________________ 4 .- _____________________________________________________________________ 5 .- _____________________________________________________________________ gmgsg pg egmg gg : UNIQE Pg SagTA : eggg: ^~_ _____________________________ _____________________________ ______ __________ ______ __________ _______________ _____________________________ ______ __________ _______________ 4-- _____________________________ ______ __________ _______________ ______ __________ _______________ ______ __________ _______________ __________ _______________ __________ _______________ 5-- _____________________________ 6-- _____________________________ 7 ._ _____________________________ 8-- _____________________________ 9-- _____________________________ 0-- _____________________________ ~= ._._ _____________________________ _____________________________ ._~_ _____________________________ _____________________________ _____________________________ ______ ______ ______ ______ ______ ______ ______ ______ ______ __________ __________ __________ __________ __________ __________ __________ _______________ _______________ _______________ _______________ _______________ _______________ _______________ _______________ I I .4 O,o 44tt I-° M +~ ü_ 1 CJ *-~ O.. 1 1 1 I 1 I I-- I I I 1 I I iI l I t 1 I l I I i I f I I iI 1 I I I I I I I I ° eel +-+ +-+ OI 0- JI OI 0. 1 I i I 1 U1 ►-+I 0.81I JI dl UI ~ .0 0 hl ü. COI WI 01 Cl Ulee I QI JI I I o-4 CI JI UI QIU1I UI LW AI I I Í Í I 1 I-° CO 0. 1 C]1 al WI I 1 0+ 0_ eel ~I LLI 1 1 I I-I I QI i I Cl JI I I o i l I l I i I ~-" t l I i 1 L~t I a I l l i l l t i 1 o e a -+ C' I Nl I i i l i 1 I l l i i 1 a t\ CO Q` {} I l l l l I i l l l t e e e 1 l i l l 1 I i l l l 1 o .ri I l l i i 1 I l i l l o e N t .) d- I l i i l I I l i i l a e I f d' l I e it7 F+I t'1 tti 0. UI Cd MÍ 0. ~ I 1 I I I I ° -° ° • I I I I I I I I 1 I 1 l 1 1 1 1 1 1 1 1 i I -° -- -° -- -° I I I I 1 I iI ° I I 1 I i1 l1 1 1 ° -- - ° 1 1 1 I i I t i l 1 I i iI II II I I I I I I 1 1 1 I 1 I t 1 1 1 I I I I I I I I I 1 1 1 1 1 1 1 1 1 1 1 1 I 1 I I I I ilI Iii 1 1 1 I 1 I 1 1 l 1 t 1 1 1 1 I I ° I 1 I I I 1 1 1 1 1 1 - ° -- -- . 1 1 1 1 i Il II i i1 1 I 1I ° ° I I 1I I 1 I I I I I I I I I I I1 I I i I1 I1 I 1 1 I I I 1 I I i 1 1 1 1 1 1 1 I I 1 I I I ° I 1 ° 1 l I I 1 f I II I I I I I 1 I ° -- -I I I I I I 1 I I I 1 1 I 1 I 1 I I I I I I I I I I I I I I Í I Í I Í I Í I Í I Í I Í I Í I Í I Í I Í 1 I 1 I I Í 1 I I I I I I 1 I I I I I I I I I i 1 I I -° -- -° -- -° I I I I l I I ° I I I I ° I I l 1 I I -I I l I I i -- ° I 1 I 1 l l I I 1 I I I ° 1 I I I I I I 1 l l i l I I I I ° -° 1 I II I I I I I I l I 1 I I I I I 1 I i1 lI tI ° I I I I I i i l t1 l l l l l l i i l l l i i --I -°I -° 1 I I 1 I I I I I 1 I I 1 I I I I I I I I I I I i I 1 I I I I I I I I I I I I I I I f I 1 1 I l I I l i 1 1 I I I I I I I I 1 I I I I I I I 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 t I I I I I I I 1 I I I I I I I I 1 1 I I I i i i i I I I i I I I I I I 1 I I 1 I I I 1 I I I I I I ° 1 1 I I I 1 I I I I I I I I I I 1 I 1 I I I I I I I I I I I I I I 1 I I I I 1 I I 1 I I I I I I 1 I I I I I I I 1 I I I I I I ° ° -I i I I I I I I I I 1 1 I I 1 I I I 1 I I I I 1 1 1 1 I I 1 I I I I I I I I I i l I I I I I I 1 I 1 1 1 I I I I 1 I I I ._-° °-I I I 1 I I 1 1 I I 1 I 1 I I I I i 1 I 1 I I I I I I I 1 I 1 I I 1 1 1 1 I I I I I I 1 I I I I I I I 1 1 I I 1 1 I I I - -- -- -- -- ° ° -i I I 1 I I I 1 1 1 1 I I I I I I I 1 1 I 1 1 1 I I 1 I 1 I 1 1 I I I I I I I I 1 1 1 I I I I I I I I I 1 I I I I I 1 I - -- -- -- -- -- -- -- -- -- -- -- - -I i 1 I I 1 I I I I 1 1 1 1 I I I I I I I 1 1 I I I 1 1 I I I I I I I I I I 1 1 I 1 1 I I I 1 I I I I I I I I I 1 I I I F+ Cd PI et It1 d) E` CO CP . 0 *+ C4 MI et 0 ~ .=s .-a +y .-o .4 Ca 1 I I I i 1 I I 1 1 I I 1 I I I I I I I i l i I I I I I 11 II 11 gula DEL USUARIO DEL SISTEMA DE EXPERTOS Al seleccionar la opción del sistema de expertos en el SIRIA, el sistema despliega un heraldo y pregunta par los siguientes tres archivos de trabajo: Knowledge base = siria .dat Record knowledge base = a .a Record of the consultation = b .a Al desplegar el sistema "Knowledge base" indica que requiere el archivo donde se encuentra la base de conocimientos . En este caso es "siria .dat" . "Record knowledge base" se refiere al nombre del archivo donde se copia la base de conocimientos aqui puede ir cualquier nombre de archivo si el archivo existe, su contenido es borrado antes de copiar . En este ejemplo el archivo es "a .a". Al desplegar el sistema "Record of the consultation" se solicita el nombre del archivo donde se guardarA un registro de la consulta al sistema de expertos . En el ejemplo el archivo es "b .a" . Cada uno de estos archivos se puede desplegar o imprimir posteriormente . Para desplegar un archivo teclear "type arch" donde "arch" debe sustituirse por el nombre correspondiente. Ejemplo : "type b .a" . Para imprimir teclear "copy arch pro ;", donde "arch" se sustituye por el archivo requerido . Ejemplo: "copy b .a prn :" . Despu&s de suministrar los nombres de los archivos, el sistema efectúa una serie de preguntas, las cuales forman la consulta a la base de conocimientos. De acuerdo con el tipo de preguntas la respuesta esperada es: 1) Una medida de certidumbre de la aserción, esto es un numero entero entre -5 a +5 que significa lo siguiente: "+5" significa "La aserción es completamente cierta". "-5" significa "La aserción es seguramente falsa". "O H significa "No se sabe si la aserción es cierta o falsa" "2" significa "No hay una seguridad completa de que la aserción sea cierta" "4" significa "Hay una seguridad casi completa de que la aserción es cierta" etc. 2) Un valor de la cantidad requeridas esto es un número simple. 3) Número de intervalos de la cantidad de la cual se dar&n los factores de certidumbre seguido por los correspondientes n6meros de tripletas . Cada tripleta consta <valor inferior valor superior medida de certidumbre> Si la respuesta no esta dentro de los pregunta, de: el sistema despliega un mensaje de lineamientos de la error . El usuario puede teclear una serie de comandos para modificar o investigar sobre la consulta . El comando de solicitud de ayuda "$H" despliega en la pantalla todos los comandos del sistema, los cuales son: $C Se despliega el status de u: nodn seleccionado. $E Se da una explicación de la aserción seleccionada desplegando las evidencias que apoyan o refutan la aserción. $D La investigación de la meta actual se termina y se inicia la investigación de la meta con mayores posibilidades de ocurrenci a. $F El sistema es forzado a aceptar una nueva meta. SG Se despliega la meta actual del sistema. $l Información general del sistema se despliega acerca de las metas, nodos, reglas, reglas de contexto de la red de inferencias. $M El rango de pesos considerado para la aserción actual es modificado. $V Se permite la entrada de información voluntaria. $P Los resultados de la consulta se imprimen y el sistema se reinicializa. $S Los resultados de la consulta se imprimen y la consulta termina. $T Se despliega la linea de razonamiento actual. $H Comando de ayuda del sistema, se despliega los comandos del sistema e indicaciones para responder las preguntas del sistema. $$ Se despliega la versión del sistema . A ANEXOS ANEXO 1. PROGRAMAS FUENTE MODULO DE INFORMACION procedure LeeEscribeReg6ral(CHtbd :char); var NueR :stringti0]; begin Reg ral .tbd := CNtbd; if swBajas then begin textcolor (4) ; textbackground(i4); write(apf8 + l,"); textcolor(il); textbackground(0); end; case Reg6ral .tbd of 'A' :begin read(archtbd,Regórall ; with Reg6ral .edgaV do ( biro de Actividad } begin write(Clave:2 ," :3); write(RangoI,' ' :(7-length(Rangol))); write(RangoF," :(8-length(RangoF))); write(Noesiro); end; end; 'B' :begin read{archTbd,Reg6ral) ; with Reg6ral .edcaV do ( Clase de Actividad } begin write{Clave ,' ' :7-length(Clave)); write(Claveóa :2,' ' :1); write(bomAcct); end; end; 'C' :begin read(archTbd,Reg6ral) ; ( Eeision de Contaminante } with Reg6ral .edecV do begin write{' ',ClaveCa,' ' :(15-length{ClaveCa))); write(ClaveCont :2," :11); str{CantEa :6 :3,Nu0Rl; write(NuiR,' ' :6); write(Unidad); end; end; 'J' :begin read{archTbd,Reg6rall ; I Lista de Contaminante I with Regóral .edlcV do begin write(' ' :5,NumCont :2,' ' :51; write(NomCont,' ' :(45-length(((onCont)I); write{EdoFisCont); end; end; 'F' :begin i read(archTbd,Reg6ral) ; with Reg6ral .edsgv do begin ( Efectos en la Salud 3 write(NusCont :3,' '); wrrite(NoeCont,' ' :(43-length(NomCont))); write(CantPPN :4 :3,' '); write(Cant19g :4 :3,' '); writeln(4lbserv); textcolor(14); gotoxy(1,whereY+11 ; write(EfectSal); textcolor(11); end; 3 end; '5' :begin read(archTbd,Reg6ral) ; ( Sustancias Peligrosas ] with RegGral .edspV do begin write("asNum :4,' '1; write(NomProdPel," :(40-IengthiNomProdPel))l; write(CantlinN :4 :3,' writetCant(linN:4 :3); end; end; 'I' :begin read(archTbd,Regsral) ; with Reg6ral .edctrV do 'l; ( Controladores 3 begin writetNum :3,' '); write(Nombre," :440-length(Nombrel)1; if Numpje[1100 then write(Rumpje[1] :4 :3,' if Numpie[2100 then write(Numpjel2] :413,' if Nunpie[3100 then write(Numpje[3] :4 :3,' if liuepje[4]{>0 then write(Nuepje[41 :4 :3,' end; end; end ; í case 3 end ; t LeeEscribeReg 3 ( PRíOCEDIIRE SCRGLICHtbd:char) ; var reng :integer; '1; 'l; '); 'l; 3 4 Procedimiento Para Nacer Scroles 3 procedure PANTA ; ( Despliega Registros desde 'api' hasta 'apf' 3 begin textbackground40); clrscr; gotoxytl,1); textcolorill); i :=api; repeat seekiarchTbd,i); apfB :=i ; LeeEscribeRegSral(CHtbd); gotoxy(l,nhereY+1); is=i+1; until ti >= apf); end; procedure DESPTEXTOS; var dato :stringtl5]; x,err :integer; repet :boolean; procedure NUEVE; begin textcolortll); nindon(1,RENI,8O,RENF); gotoxytl,l); case corre of 'B' : if swBajas then begin sindon(1,20,80,22); if (Mb < MaxB-1) then begin Nb := Nb + 1; repeat al; gotoxy(1,2); textBackground(0); cireol; let(5,3,15,4,' (Retl para Salir '); let(1,2,15,4,' Borrar Registro I ---) '); readln(dato); if lengthtdato) ) 0 then begin repet : :false ; ( Valida Num . de Begs. Repetidos } val(dato,x,err); if err=0 then for i :=1 to Mb-1 do if x = Borrtil then repet :=true; if (Not repetí and (x ) 0) and ix (= lief + 1) then BorrtMbl := x else err : : 1 ; end else Nb : : Nb - í; textbackground(0); until (err = 0) or (lengthtdato) = 0); end else lett5,3,15,4,"S^S+' Maximo 1 de Bajas alcanzado, Seleccione 1 ESC l '); end; 'B' : if Calif + (rent)) (= lief) then begin apf :=apf+(reng); api :=api+(reng); PUNTA; end el se begin if apf<>linf then begin apf :=lief; if (1i®f-(reng)) >= 0 then api :=linf-(reng) else api :=0; PUNTA; end; end; 'E' : if apf<>li®f then begin if reng ( lief then api :=lief-(reng) else api :=0; apf :=lief; PUNTA; end; 'H' : if api<>0 then begin api :=0; if reng < liaf then apf :=reng else apf :=linf; PUNTA; end; 'U' : if (api - (reng) >= 0) then begin api :=api-(reng); apf :=apf-(reng); PUNTA; and else begin if apiO 0 then begin api :=0; if (li®f) > (reng) then apf :=(reng) else apf :=li®f; PUNTA; end; end; 'd' : if (apf ( lief) then begin apf :=apf+1; api :=api+i; del ti ne; if op='F' then begin delLine; delLine; delLine; end; if op='F' then gotoxy(1,15) else gotoxy(1,reng+l); seek(archTbd,apf); apfe :=apf; LeeEscribeReg6ral(CHtbdi; end; 'u' : if (api > 0) then begin api :=api-l; apf :=apf-1; insLine; if op='F' then begin insLine; insLine; insLine; end; seek(archTbd,api); apfB :=api; LeeEscribeReg6ral(CHtbd); end; end ; ( del case ) end ; ( llueve 3 begin ( DESP TEXTOS l corre :='u'; window(1,23,80,25)} let(01,1,4,15,chr(2411; let(15,1,4,15,chr(25)); let(29,1,4,15,'PgUp'); let(49,I,4,15,'PgDn'); let(69,1 1 4,15,'ESC'); let(10,30,15 5 'Hoee'); let(38 5 3 9 4,15,'End'); if suBajas then let(02,1,6,0,'[ 1 linea l'); let(16,1,6,0,'[ I linea 1et(33,1,6,O,'[ 1 Pagina '+chr(24)+' 1'1; let(53,1,6,0,'I 1 Pagina '+chr(25)+' 3'); let172,1,6,0,'ISalir let(14,3,6,0,'[ Inicio let(33,3,6,0,'[ Fin 1'1; begin let(50,3,4,15,'Del'); let(530,6,0,'I Borrar 3'1; end; while corre()chr(27) do begin corre :='u'; window(1,23,80 5 25); ( Lectura de Option ) gotoxyt79,3); read(K8D,corre); if ord(corre1=27 then if keypressed then begin read(KBD,corre); if ord(corre) in [71,72,13,79,80,81,831 then begin case ord(corre) of 71 : corre :='H' ; 72 corre :='u' ; 73 corre :='U' ; 79 corre :='E' ; 80 : corre :='d' ; 81 : corre :='D' ; ( Hone } f Flecha arriba } ( Pgilp } ( End } ( Flecha abajo ( PgDn ( Del } } 83 : corre :='B' ; } end; NIEVE ; ( proc para hater scroles } end; end ; end; end ; ( Proc . DESP TEXTOS } begin ( proc SCROL } Reg8ral .tbd := CHtbd; limf :=FileSize(archTbd) -l; if op='F' then reng := 4 else reng := RENF - RENI; if (swBajas) and (op='F') then reng 3; api :=0; if liof t reng then apf :=lief else apf : : reng; window(1,RENI,80,RERF1; gotoxy(i,1); PANTA; OESPTEXTOS; if Not swBajas then close(archTbd); windowt1,1,80,25); textbackground(0); clrscr; end ; ( i SCROL } } {SB-} PROGRAII const Slanco80=' NaxB = 101; } { { Estructura de Datos de las Tablas } Type edga = record { A ESTRUCTURA DE GIROS DE ACTIVIDADES } Clave : integer; RangoI : string15l; RangoF : stringl5l; NosGiro : stringE601; end; edca = record { D ESTRUCTURA DE CLASE DE ACTIVIDADES } Clave : stringl51; Clave6a : integer; NoiAct : stringl70]; end; edec = record ClaveCa t C ESTRUCTURA EMISION DE CORTAN . } : stringl51; ClaveCont : integer; CantEe : real; Unidad : stringilll; end ; edlc = record NueCont NoeCont { D ESTRUCTURA LISTA DE CONTAM . } : integer; : stringl401; EdoFisCont : stringl51; end ; { E ESTRUCTURA'S DE REGLAMENTOS } edtab = record Clase : stringl51; ph Teap od be ag sd end; ed3r = record nua : : : ; : : real; real; real; real; real; real; : integer; PesoProc : real; IndNueva : real; IndExist : real; end; edagua = record Nue : integer; Noebre : string[501; DA : real ; Tex = DI D11 DIII end; record real; : real; : real; lineaN : string(BO]; end; edreg = record case reg : char of '1' : '2' : '3' : '4' : (PolGas : ed3r); (Linea : Tex); (Agua : edagua); (Tabla : edtab); end; edsq = record NueCont NaCont CantPPN ( F ESTRUCTURA DE SUSTANCIAS DATOS ] : integer; : string(40); : real; CantNg : real; Obsery : string(15]; EfectSal : string12401; end; edsp = record { 6 integer; string(40I; real; Noe NoaProdPel Cantl(inN CantNinN end ; ESTRUCTURA DE SUSTANCIAS PELIGROSAS ] : real; (H ESTRUCTURA DE EVA). PROYECTOS } edctr = record Hue Noebre NuePje ( I ESTRUCTURA DE CONTROLADORES } : integer; string(301; arrayll . .41 of real; end; ( 1 TipoBaseDatos = record { REGISTRO HAAESTRO ] case tbd : char of 'A' ( edgaV edga ); 'B' : ( edcaV edca ); 'C' : ( edecV edec ); 'D' : ( edlcV : edlc ); 'E' ( edregV : edreg ); '6' : ( edspV : edsp ); 'F' ( edsqV : edsq 'H' : ( edepY : edep ) ; 'I' ( edctrV : edctr ) ; ( } end; { ] RegCpx = record case ripo :char of (NueEnt,Rangolent,RangoFent : integer); 'R' : (RuiRea,Rangolrea,RangoFrea : real ); 'S's (Sir : string124o3 ; long : integer ;); end; lin = stringlBOl; var dir,arch,cocando,lec,linea,non,nooT,noaD,linT : lin; letctr6,letctr2,letctr3,letctr4,letctr5 : lin; Caopo,i,j,k,apf,apfD,api,liaf,RENI,REI(F : integer; RCaopos,Rb : integer; Burr : array[l . .MaxBl of integer; claveE,clavel,io,op,ch,corre : char; VarCpx : RegCpx; suBajas,CaobiaR,CaebiaC : boolean; Regeral : TipoBaseDatos; archTbd : file of TipoBaseDatos; archcop : File of TipoBaseDatos; PROCEDURE LET(x,y,color,fondo :integer ; osg :lin); begin gotoxy (x, y) ; textcolor(color); textbackground(fondo); write(®sg); end; PROCEDURE LIB; begin textbackground(0); clreol; end; PROCEDURE AL; begin erite("6); end; PROCEDURE AbreArch(archi :char ;var io :char); begin Reg6ral .tbd :=archi; case archi of 'A' :begin arch .='6IROACT .DAT'; noo:='biro de Actividades'; end; 'B' :begin arch :='CLASACT .DAT' ; noo :='Clasificacion de Actividades'; end; 'C' :begin arch :='LISTCDH .DAT'; non :='Lista de Contaminantes'; end; 'D' :begin arch :='EHISCDH .DAT'; nom :='Envision de Contaoinantes'; end; 'E' :begin end; 'F' :begin arch :='EFECSAL .DAT'; noes='Efectos de Sustancias en la Salud y el Aabiente'; end; 'S' :begin arch :='FACRIES .DAT'; non :='Factores de Riesgo de Sustancias Peligrosas'; end; 'H' :begin noa:='Evaluacion de Proyectos'; end; 'I' :case clavel of 'A' :begin arch :='CTRAID.DAT'; non:='A : Controlador Contaninacion : Proceso de Intercanbio Ionico'; end; '8' :begin arch :='CTRAFR.DAT'; noo:='8 : Controlador Contaninacion : end; 'C' :begin arch :='CTRACF.DAT'; noa :='C : Controlador Contaninacion : end; 'D' :begin arch :='CTRALF .DAT'; non :='D : Controlador Contaninacion : end; 'E' :begin arch:='CTRALF .DAT'; noo :='E : Controlador Contaninacion : end; 'F' :begin arch :='CTRATP .DAT'; noa :='F : Controlador Contaninacion : Par Filtros Rociadores'; Por Absorcion de Carbon Activado'; Por radio de Lagunas Facultativas'; En Planta Piloto Intercambio Ionico'; Tratamiento Primario'; end; 'S' :begin arch :='CTRATF .DAT'; noa :='6 : Controlador Contaninacion : Tratamiento Secundario'; end; 'H' :begin arch :='CTRAPF .DAT' ; nom:='H : Controlador Contamination : Proceso Lodos Activados'; end; 'I' :begin arch :='CTRAFPT .DAT'; nom :='I : Controlador Contamination : Filtration como Proceso Terciario'; end; 'J' :begin arch :='CTRAFCC .DAT'; nom:='J : Controlador Contamination : Filtration seguida de Coagulation de Cal'; end; 'K' :begin arch :='CTRAPP .DAT'; noo:='K : Controlador Contaminacion : Por Procesos Ouimicos'; end; '1' :begin arch :='CTRATSP .DAT'; nom :='L : Controlador Contamination : En Tanque de Sedimentation Primaria'; end; 'R' :begin arch :='CTRAAC.DAT'; nom :='R : Controlador Contamination : Remotion Metales Pesados por Adsorcion'; end; 'H' :begin arch :='CTRAHR .DAT'; noma='ti : Compuestos Organicos Posibles Carcinogenicos NO Reducisos por Lodos Activ .'; end; 'O' :begin arch :='CTRPTP.DAT'; noma='0 : Controlador Contaminacion-Das : Por Diversos Procesos'; end; 'P' :begin archa='CTRPTP .DAT'; nom :='P : Controlador Contaminacion-Particulas : Branulometria'; end; '9' :begin arch :='CTRPTP.DAT'; nom :='Q : Controlador Contaminacion-Particulas : Diferentes Tratamientos'; end; 'R' :begin arch :='CTRTPC .DAT'; non :='R : Controlador Contaminacion-Particulas : De Calderas de Carbon'; end; end ; { case 'I' } end ; { case archi } getdiri3,dir); if idir='C :\sedue\dbase') or (dir = 'C :\SEDUE\DBASE') then begin assigniarchTbd,'C :\SEDUE\ARCHIVOS\'+arch); {EI-I resetiarchTbd) ; {3I+) end else begin assign tarchTbd,'8 :\ARCHIVOS\'+arch); 0I4 resetiarchTbd) ; (11+) end; if iioresult{>0) then begin if liof>'A') then begin io•='1'• leti1,24,4,0,1"6+'E1 archivo '+arch+' No se encontro (RET>'); read In; end else begin io : = 0'; rewriteiarchTbd); end; end else io:='O'; end ; d PROC . AbreArch ) PROCEDURE LiepiaRegóral(CHtbd :char); begin RegOral .tbd :=CHtbd; with RegOral do case tbd of 'A': with edgaV do begin Clove : : 0 ; NoaGi ro : _"; RangoI := ' '; RangoF := ' for is=l to 60 do NooOiro :=Noa6iro + "; end; 'B': with edcaY do begin clave : : " ; clave6a :=0 ; NoaAct :=" ; end; 'C': with edecY do begin ClaveCa := " ; ClaveCont :=0 ; CantEa :=0 .0 ; end; Unidad :=" ; 'D': with ed1cV do begin NuaCont :=0 ; NoaCont := " ; EdoFisCont := " ; end; 'F' : with edsgv do begin NuaCont := 0 ; NonCont := " ; CantPPN:=0 .0; CantNg :=0 .0 ; Observ :=" ; EfectSal := Blanco8O + Blanco80 + BlancoBO + ' '; end; '6' : with edspV do begin Noa:=O ; NoaProdPel :=" ; CantNinN :=0 .0 ; CantNinN:=0 .0 ; end; 'I' : with edctrV do begin nun:=0; Nombre: _"; for i :=l to 30 do Hombre :=Hombre + ' '; for i :=1 to 4 do NuoPjeli] :=0 .0; end; end; end; PR CEDURE OpcionesCtr; begin textbackground(0); cirscr; LET(10,1,4,14,' CONTROLADORES DE CONTANINANTES'); LET(7, 3,14,0,' Eficiencia en Controladores de Contaeinantes en aguas residuales'); LETt1, 4,11,0,' A : Por Proceso lonico'); LET(7, 5,11,0,' B : A troves de Filtros Rociadores'); LET(7, 6,11,0,' C : Por Absorcion con Carbon Activado '); LET17,07,11,0,' D : Por radio de Lagunas Facultativas 'I; LET (7,08,11,0,' E : En una planta piloto de Intercarbio lonico '); LET(7,09,11,0,' F : Por Tratamiento Prirario '); LET(7,10,11,0,' G : Por Tratamiento Secundario '); LET(7,11,11,0,' N: Por Proceso de Lodos Activados LET(7,12,ll,0,' I : Por Filtracion coro proceso terciario '); LET(7,13,11,0,' J : '%etales reoovidos' Por Filtracion seguida de Coagulacion con Cal LET(7,14,11s0,' K : Por Procesos Ouinicos '); LETI7,15,11,0,' L : Posibles Cantidades par Sedirentacion Primaria '); LET(7,16,11,0,' N : Par Absorcion de Carbon '); LET(7,17 ;11,0,' N : Compuestos NO Reducidos Por Proc . de Lodos Activados'); LET17,18,14,0 ' LET(1,19,11,0,' LET (7,20,11,0,' LET(1s21,11,0,' LET(7,22,11,0,' Controladores de Contaeinantes Gaseosos y ParticuIas'); 0: Gaseoso : Par Diversos Procesos '); P: Particulas : En Funcion de Granuloretria .'); 0 : Particulas : Dispositivos de Tratamiento de Estas .'); R : Particulas : Eficiencia y Costo en Calderas de Carbon'); repeat LET(16,24,6,0,' Opcion ----> '1; read(KBD,claveI) ; clavel :=upcase(claveI); writetclavell; until clavel in ['A' . .'R']; textbackgroundt0); end ; t opciones Ctr 3 PROCEDURE OPCIONES; begin LET(17,03,11,0,' A : Giro de Actividades 'l; LET(17,05,11,0,' B : Clasificacion de Actividades '); LET(17,07,11,0,' C : Lista de Contaminantes '1; LET(17,09,11,0,' D: Eaision de Contaminantes '); LET (17,11,11,0,' E : Reglarentacion de Cantidades y Concentraciones ') ; LETI17,13,11,0,' F : Efectos de Sustancias en la Salud y el Ambiente LETI17,15,11,0,' S : Factores de Riesgos de Sustancias Peligrosas '); LETI17,17,11,0,' H : Datos Basicos sobre Proyectos '); LET(17,19,11,05 ' 1 : Dispositivos de Control '1; LET{17,21,15,01 3 ' S1 Salir '); repeat LET{20 1 23,6,0,' Opcion ----> '); readiKBD,op) ; op :=upcase{op); write(op); until op in ['A' . .']','S']; if op='1' then OpcionesCtr; end; PROCEDURE Capta{X,Y :integer ;Tipo :char ; var ValRet :RegCpx); var Valstr :string{2401; err :integer; ch :char; Procedure EscLee; begin Ca©biaR :=true; write{archTbd,Reg6ral); seek{archTbd,apf); read{arcbTbd,Regóral); seeklarchTbd,apf); Campo :=1; end; begin ValRet .Tipo :=Tipo ; { Se declara el tipo al Registro } Valstr :="; gotoxy{X,Y); textbackground(0); ch :='t'; corre : : 'i'; repeat caabiaC: :false; caibiaR: : false; read(kbd,ch); if ord{ch)=27 then begin { ESC } if keypressed then begin read{KBD,ch); case ord{chl of 71 : if apf > 0 then begin apf : : O ; { Home } EscLee; end else al; 72 : If Caspo > I then begin caehiaC :=true; { Flecha arriba ) Carpo :=Caspo-1; end else al; 73 : if (apf ) 0) then ( PgUp ) begin apf :=apf-l; EscLee; end else al ; 75 : if twhereX-1 >= X) then { Flecha lzq . begin gotoxy(wherex-1,wherey); writel"); ) gotoxy(wherex-10herey); delete(Valstr,length(Yalstr),I); end else if twhereY-I >= Y) then begin gotoxy(80,whereY-1); write("); gotoxy(80,whereY-l); delete(Valstr,length(Valstr),1); end; 77 : corre :='I' ; 79 : if apf ( lief then ( Flecha Derecha ) t End ) begin apf :=lief; EscLee; end else al; 80 : If Capo < Rasps then ( Flecha abajo ) begin caebiaC :=true; Caspo:=Carpo+1; end else al; 81 : if tap ( lief) then begin apf :=apf+1; EscLee; end else { PgDn ) begin caebiaR :=true; Campo :=l; apf := apf + 1; lief :=lief + l; write(archTbd 5 Reg6ral); LiepiaReg6ral(op); end; 83 : begin gotoxy(X,Y); Valstr :="; clreol; ( Del } end; end ; C case } end ; { if keypressed } { Si es Esc } end else if ord(ch)=8 then { Flecha Para begin if (whereX-1 >= X) then Borrar } begin gotoxy(wherex-1,wherey); write(' '); gotoxydwherex-1,wherey); delete(Valstr,length(Valstr),I); end else if (whereY-1 >= Y) then begin gotoxy(80,whereY-1); write(' '); gotoxy(80,uhereY-1); delete(Valstr,length(Valstr),1); end; end else if Tipo = '1' then begin if (ch in 1'0' . .'9','-','+'1) and (length(Valstr) ( 6) then begin write(ch); Valstr :=Valstr + ch; end else al; end else if Tipo = 'R' then begin if (ch in begin write(ch); Valstr :=Valstr + ch ; and (length(Valstr) ( 15) then ) end else al; end else if Tipo='S' then begin if Not (ord(ch) in C0 . .31]) then begin write(ch); Valstr :=Valstr + ch; end; end; if ( ord(ch) in (13,27] ) or CambiaC or Cambia)) then begin err := 0; if length(valstr) > 0 then with ValRet do if Tipo: 'I' then val(Valstr,NueEnt,err) else if Tipo='R' then val(Valstr,NueRea,err) else if Tipo ='S' then begin if ord(Valstr[length(Valstr)]) in (0 . .33J then delete(Valstr,length(Valstr),1); Str :=Valstr; err :=0; end; if ord(ch)=27 ( ESC solo } then corre:='S' else t Return ) if (ord(ch) : 13) and (err=0) then begin if (Cagro < NCaepos) then Campo :=Campo + 1; cambiaC: :true; end; if err<>0 then al; end ; until icorre='S') or cambiaC or cambian; end; t > ( SCRBL(CNtbd :char) ; ( LeeEscRegóral(CNtbd :char) ; } {SI RUTINAS.PAS} } e PROCEDURE BAJAS ; ( Procedimiento para dar de Bajas } procedure BorraRegArch; var FinArch :integer; begin getdir(3,dir); if (di g _ 'C :\sedue\dbase') or (dir = 'C :\SEDUE\DBASE') then assign(archcop,'C:\SEDUE\ARCHIVOSIIUTRCIOH .DAT') else assign(archcop,'B :IARCHIVOS\IUTRCIOH .DAT'); reurite(archcop); flush(archcop); seek(archcop,01; . , j .-l. FinArcb :=FileSize(archtbdl-1; for is O to FinArch do begin seek(archtbd,il; if (01 = j ; =j+( else begin Borrtjll then read(archtbd,Reg6rall; write(archcop,Reg6ral); end; end; gotoxy(3,22); write(' E1 Archivo Modificado Tiene ',FileSize(archcop),' Registros readin; close(archcopl; close(archtbd); erase(archtbd); if (dir = 'C :\sedue\dbase') or (dir = 'C :ISEDUE\DBASE') then rename(archcop,'C :\SEDUEIARCHIVOSI'+arch) else renaoe(archcop,'B :\ARCHlVOS1'+arch); end; PROCEDURE bajaReg6ral(CHtbd :char); var salva :integer; borrar :char; begin RENT :=4; RENF :=19; Scrol(op); if Nb > 0 then begin for i :=l to Nb do for j :=i+1 to Nb do if florrtil > Borrtjl then begin salva:=Borrtil ; Borrlil :=Borr[jl; Borrij) :=salva; end; PBerrINb + 1l :_ -1 ; Registros a dar de Baja '); letti,105 15,4,' uritein; nriteln; for i :=1 to Nb do urite(Borr1il :3,' '1; repeat lett3,17 5 15 5 4,' Desea Borrar todos estos read(Khd,borrar); Registros (sin) --> '); Barrar :=upcasetBorrar); aritetBorrar); until Borrar in I'N','S'l; if Borrar = '5' then BorraRegArth; end; end; begin repeat Nb :=0; swBajas:=true; windoat1,1 5 80,25); texthackground(0); clrscr; LET(4 1 1,4,14,' B AJA S opciones ; t AL A R C H I V O '); TODAS LAS OPCIONES A . .I,S } if op() 'S' then begin io :='B'; AbreArchtop,io); if io='0' then begin textbackgroundlO); clrscr; BajaRegSralfop); ClosetarchTbd); end; end; until op = 'S'; windoull,1,30,25); textbackgroundlO); clrscr; end; ~---^ PROCEDURE ALTHOD ; ° t Altas y tiodificaciones á La Base de Datos } } Procedure Despliega; begin window(1,4,84,22); case Reg6ral .tbd of 'A' : with Reg6ral,edgaV do ( Giro de Actividades > begin NCaepos :=4; repeat let(13,2,15,1,' Registro 4') ; write(apf+1 :3,' de ',Lieftl :3); let(2, 5,15,1,' Clave Giro -> ') ; lie; let(18,5,15,2,''1 ;write(Clave); let(2, 7,15,1,' Rango Ini -> ') ; lie; let(18,7,15,2, ") ;write(Rangoll; let(2, 9,15,1,' Rango Fin -> ') ; lie; let(18,9,15,2, ") ;write(RangoF); let( 2,11,15,1,' Nod . Biro -) ') ; lie; let(18,11,15,2,'') ;write(Noe6irol; with VarCpx do case caepo of 1 : begin Tipo:='I' ; NusEnt :=Clave; Capta(18,5,'I',VarCpx); if Not CasbiaR Then Clave :=NueEnt; end; 2 : begin Tipo:='S' ; Str :=Rangol; Capta(18,7,'5',VarCpx); if Not CasbiaR Then RangoI :=Str; end; 3 : begin Tipo:='S' ; Str :=RangoF; Capta(18,9,'S',VarCpx); if Not CambiaR Then RangoF :=Str; end; 4 : begin Tipo:='S' ; Str :=Noe6iro; Capta(18,11,'S',VarCpx); if Not CasbiaR Then Noe6iro :=Str; end; end ; ( case > until corre='S'; end; '8' : with Reg6ral,edcaV do begin NCanpos :=3; repeat let(13,2,15,l,' Registro #'1 ;write(apf+1 :3, ' de ',lief+) :3); let(2,5,15,1,' Clave Giro -> ') ; lie; let(18,5,15,2, ') ; write(Clave); let(2,7,15,1,' Flue Giro -) ') ; lie; let (18,7,15, 2,") ; write(Clavefial; let(2,9,15,1,' Noe Activ -) ') ; lie; let(18,9,15,2,'') ; write(NoeAct); with VarCpx do case Campo of 1: begin Tipo :='S' ; Str :=Clave; Capta(18,5,'S',VarCpx); if Not CaebiaR then Clave :=Str; end; 2: begin Tipo :='I' ; NueEnt :=ClaveCa; Capta(18,7,'I',VarCpx); if Not CanbiaR then C1ave g a :=NueEnt; end; 3: begin Tipo:='S' ; Str :=NoeAct; Capta(18,9,'S',VarCpx); if Not CaebiaR then No®Act :=Str; end; end ; ( case ) until corre='S'; end; 'C' : with Reg6ral,edecV do begin hCaepos :=4; repeat let(13,2,15,1,' Registro 1!'1; write(apf+1 :3,' de ',Lief+1 :3); let(2, 5,15,1,' Clave de Activ -> '1 ; lie; let(22,5,15,2,'') ;write(C1aveCa); let(2, 7,15,1,' Clave Contaa -> ') ; lie; let(24,7,15,2, " ) ;writelClaveCont); let(2, 9,15,1,' Cantidad Emitida -> ') ; lie; let(24,9,15,2,'') ;write(CantE® :4 :3); let(2,11,15,1,' Unidades -> ') ; lie; let116,11,15,2, ') ;write(Unidad); with VarCpx do case campo of I : begin Tipo :='S' ; Str :=ClaveCa; Capta(22,5,'S',VarCpx); if Not CanbiaR Then ClaveCa :=Str ; end; 2 : begin Tipo :='I' ; Nu®Ent :=ClaveCont; Capta(20,7,'I',VarCpa); if Not Cambian Then ClaveCont :=NumEnt; end; 3 : begin Tipo :='R' ; NuaRea :=CantEm; Capta(24,9,'R',VarCpx); if Not Cambian Then CantEm :=NusRea; end; 4 : begin Tipo :='S' ; Str :=Unidad; Capta(I6,11,'S',VarCpx); if Not Cambian Then Unidad :=Str; end; end ; C case } until corre='S'; end; with Reg&ral,edlcV do begin NCaspos :=3; repeat let(13,2,15,1,' Registro ' de ',Lief+1 :31; write(apf+1 :3 , letC2, 5,15,1,' Numero de Contam -> ') ; lie; let(24,5,15,2, ') ;write{NumCont); let(2, 7,15,1,' Noebre del Cantata -) ') ; lie; let(25,7,15,2, ') ;write(NoeCont); let(2, 9,15,1,' Receptor -> ') ; lie; let(16,9,15,2, " ) ;write(EdoFisCont); with VarCpx do case caspo of 1: begin Tipo :='1' ; NueEnt :=NuaCont; Capta(24,5,'I',VarCpx); if Not CaebiaR Then NueCont :=NueEnt; end; 2: begin Tipo :='S' ; Str :=NoeCont; Capta{25,7,'5',VarCpx); if Not CaebiaR Then NoeCont :=Str; end; 3: begin Tipo :='S' ; Str :=EdoFisCont; Capta{16,9,'S',VarCpxl; if Not CaebiaR Then EdoFisCont :=Sta; end; end ; ( case ) until corre='S' ; end; 'F' : with Regóral,edsgV do begin NCaepos :=6; repeat let(13,2,15,1,' Registro I'); writelapf+1 :3 , ' de ',Lief+1 :3); let(2, 5,15,1,' Nueero de Contae -> '1 ; lie; let(24,5,15,2, " f ;write(NUeCont); let(2, 7,15,1,' Noabre del Cantu -> ') ; lie; let(25,7,15,2, ') ;writeiNoeCont); let(2, 9,15,1,' Cantidad PPN's -> ') ; lie; let(22,9,15,2, ') ;write(CantPPN :3 :3); let(2, 11,15,1,' Cantidad Ngr -> ') ; lie; let(20,11,15,2,") ;write{CantNg :3 :3); let(2, 13,15,1,' Observaciones -> 1 ; lie; leti21,13,15,2, ') ;write(Observl; let(2, 15,15,1,' Efectos en La Salud : '); gotoxy{1,161 ; lie; gotoxy(1,17) ; lie; gotoxy{1,181 ; lie; let{1,16,15,2, ') ;write{Efectsal); with VarCpx do case caepo of 1 : begin Tipo :='I' ; Nu®Ent :=NueCont; Capta(24,5,'I',VarCpx); if Not CaebiaR Then NuaCont :=NuaEnt; end; 2 : begin Tipo :='S' ; Str :=NoaCont; Capte(25,7,'S',VarCpx); if Not CaebiaR Then NoaCont :=Str; end; 3 : begin Tipo :='R' ; NuaRea :=CantPPN; Capta(22,9,'R',VarCpx); if Not CaebiaR Then CantPPN:=NuaRea; end; 4: begin Tipo :='R' ; NuaRea :=Cantllg; Capta(20,11,'R',VarCpx); if Not CaebiaR Then CantNg :=NuaRea; end; 5: begin Tipo :='S' ; Str :=Observ; Capte(21,13,'S',VarCpx); if Not CaebiaR Then Observ :=Str ; end; 6: begin Tipo :='S' ; Stye=EfectSal; Capta(1,16,'S',VarCpx); if Not CaebiaR Then begin EfectSal :=Str; while length(EfectSal) < 240 do EfectSal :=Efectsal + ' end; '; end; end ; { case > until corre='S'; end; 'G' : with Reg6ral,edspY do begin HCaepos :=4; repeat let(13,2,15,1,' Registro 0'1 ; writetapf+1 :3,' de ',lief+1e3); let(2, 5,15,1,' Nun . Prod .Peligroso -) '1 ; lie; let (27,5,15,2, ') ;write (Nue); let(2, 7,15,1,' timbre Prod .Peligroso -) '1 ; lie; let (29,7,15,2,") ;write(floeProdPell; let(2, 9,15,1,' Cant . Ninina Notif . -) '1 ; lie; let (27,9,15,2, ') ;write(CantNinN :3 :3); let( 2,11,15,1,' Cant . Nin .Nonitoreada -) ') ; lie; let(29,11,15,2,'') ;write(CantHinN:3 :31; with VarCpx do case caopo of 1 : begin Tipo :='I' ; NueEnt :=Nun; Capta(27,5,'1',VarCp1); if Not CaebiaR Then Nue :=NueEnt; end; 2 : begin Tipo :='S' ; Str :=NoeProdPel; Capta(29,7,'S',VarCpx); if Not CaebiaR Then NoeProdPel :=Str; end; 3 : begin Tipo :='R' ; NueRea :=CantNinN; Capta(27,9,'R',VarCpxl; if Not CaebiaR Then CantNinN : = NuaRea; end; 4 : begin Tipo :='R' ; NueRea :=CantNinN; Captat29,11,'R',VarCpx1; if Not CaebiaR Then CantNinN :=NueRea; end; end ; ( , case 6 > until corre='S'; end; 'I' : with Reg8ral,edctrV do begin I Aqui la Var NCaepos se Asigna Antes de llaaar a Despliega } repeat lett13,2,15,1,' Registro t# ') ; write(apf+1 :3,' de ',limf+1 :3); let(2, 5,15,1,' Numero Controlador -} ') ; lie; let(27,5,15,2,'') ;write(Nua); let(2, 7,15,1,letctr2) ; Hai let(27,7,15,2, ") ;writel(locbre); let(2, 9,15,1,letctr3) ; lie; let(27,9 5 15,2, " l ;write(NunPje[1] :3:31; let( 2,11,15,1,letctr4l ; lie; let(27,11,15,2,'') ;write(NunPje[21 :3 :3); let( 2,13,15,1,letctr5) ; lie; let(27,13,15,2,'') ;write(NunPjet31 :3 :31; if Ncanpos = 6 then begin let( 2,15,15,1,letctr6) ; lie; let(273 15,15,2,") ;write(NuePje[4] :3:3); end; with VarCpx do case campo of 1 : begin Tipo :='I' ; NuaEnt :=Nue; Capta(27,5,'!',VarCpx); if Not Cambian Then Nue :=NueEnt; end; 2 : begin Tipo :='S' ; Str :=Noebre; Captat27,7,'8',VarCpx); if Not CanbiaR Then Noabre :$tr; end; 3 : begin Tipo :='R' ; Nu ea :=Nuapje[1l; Capta(27,9,'R',VarCpx); if Not Cambian Then Nunpje[1l :=NueRea; end; 4 : begin Tipo :='R' ; NueRea :=Nuepje[2l; Capta (27,11,'R',VarCpx); if Not CanbiaR Then Nuapje[2] :=NuaRea; end; 5 ; begin Tipo :='R' ; NunRea :=Nuapje[31; Capta(27,13,'R',VarCpx); if Not CanbiaR Then Nunpje[3] :=NueRea ; end; 6: if Nca®pos=6 then begin Tipo :='R' ; NueRea :=Nuopje[41; Capte(27,15,'R',YarCpx); if Not CaebiaR Then Nuepje[4l :=NuaRea; end; end; [ case 6 } until corre='S'; end; end ; ( case } end ; ( Despliega ) PROCEDURE NodifReg6ral(CHtbd :char); begin [ proc MODIFICA Regóral } Reg6raletbd := CNtbd; 1i®f :=FileSize(archTbdl-1; if lief<O then lief :=0; apF :=0; Caepo:=1; if lief ) 0 then begin seek(archTbd,apF); read(archTbd,Reg6ral); seek(archTbd,apf); end; uindow(1,23,80,25); let(01 1 1,4,15,chr(24)) ; let(15,1,4,15,chr(25)) ; 1et(29,1,4,15,'PgUp') ; let(49,1,4,15,'PgDn') ; let(69,1,4,15,'ESC') ; let(20,3,4,15,'Hoae') ; let(40,3,4,15,'End') ; let(02,1,6,0,'[ 1 Caepo ]'1; let(16,1,6,0,'I 1 Caapa ]'); let(33,1,6,0,'[ 1 Regist .'+chr(24)+' ]'); let(53,1,6,0,'[ 1 Regist .'+chr(25)+' ]'); let(72,1,6,0,'[Salir l'); let(24,3,6,0,'[ Inicio let(43,3,6,0,'I Fin ]'); nindoe(1,I,80,3); let(13,1,4,14,' A L T A S Y I 0 N 0 0 I F I CAC I ONES'); let(40-length(noa) div 2, 3,4,14,noe); Despliega; end; PROCEDURE CONTROLES; begin textbackground(0); clrscr; LET(4,1,4,14,' ALTAS Yl0 MODIF . A C 0 N T R 0 L A D 0 R E S NCaopos := 5; LiapiaReg6ral(op); letctr2:=' Noobre Cantaainante -) '; letctr3 :=' taje Pron . Reeovido-) ' ; letctr4 : =' Taje Minima Renovido-> '; letctr5 :=' Taje Maxim Resovido-> '; case clavel of 'F' : begin MCampos := 6; letctr6 :=' Con Adicion de Cal end; 'C' :begin -> '; letctr2 :=' Moobre del Metal -> '; letctr3:=' Baje Clarific Aria -) ' ; letctr4 :=' Taje Filtro Rociador-) '; letctr5 :=' Taje Lodos Activados-) '; end; 'J','M' : letctr2 :=' Nombre del Metal -> '; 'L' :begin Mcaepos := 6; letctr2 :=' Tipo Lodo Kg/lOe6Gal-> '; letttr3:=' Sin Prod . Ouimicos -> '; letctr4 :=' Con Adicion de Cal -> '; letctr5:=' Con adicion de Al letctr6 :=' Con adicion de Fe end; -> '; -> '; 'M' : letctr2 :=' Nombre del Compuesto-> '; '0' : letctr2 :=' Tecnologia -> '; 'P' :begin letctr2 :=' Tipo de Tratamiento -> '; letctr3 :=' Taje 5 Micrometros letctr4 :=' Taje 2 Micrometros letctr5 :=' Taje 1 Microeetro -> '; -> '; -> '; end; 'O' :begin HCampos := 6; letctr2 :=' Tipo de Tratamiento -> letctr3 :=' Perdida Carga Desde-> letctr4 :=' Hasta-) letctr5 :=' Velocidad Gas Desde-> letctr6 :=' Hasta-> end; '; '; '; '; '; 'R' :begin 19Campos := 6; letctr2 :=' Tipo Tratara . y Taje -> '; letctr3 :=' Inversion base /100-> '; letctr4 :=' Energía base /100 -> '; letctr5 :=' Mantenimiento /100 -> '; letctr6 :=' end ; Costo Anual end ; t case clavel > end ; /100 -> '; begin ( Proc . Nodifica } repeat uindou(1,1 0 80,251; textbackground(01; clrscr; A L T A S LET(4,1,4,14,' Y J 0 MODIF . ARCHIVO OPCIONES; if op='I' then CONTROLES; if op() 'S' then begin io :='A' 9; AbreArch(op,io); if io='O' then begin textbackground(0); clrscr; ModifReg6rallop); Close(archTbd); end; end; until op = '5'; uindou(l,1,80,25); textbackground(0); clrscr end ; ( ALTAS Y/O MODIFICACIONES } ( } PROCEDURE CONSULTA; BEGIN textoode(c801; repeat uindow(1,1,80,25); textbackground(01; clrscr; RENI :=4; RENF :=22; LET(13,1,4,14,' CONSULTAR OPCIONES; io='C'; if op() 'S' then begin textbackground(0l; cirscr; AbreArch(op,iol; if io='O' then begin ARCHIVO '); window(l,1,80,31; let(l,1,0 1 0,81ancoRO); let(I,2,0,0,Blanco80); case op of 'A' : begin let(15,1,4,14,' Giro de Actividades '); Rango de '); let(1,2,4,0,'Nua . let(1,3,4,0,'Oiro Activodades Nombre de los Giros'); end; 'B' :begin let(i5 1 1,4,14,' Clase de Actividades '); let(1,3,4,0,'Clase Num Nombre de la Actividad'); end; 'C' :begin lettt5,í,4,14,' Envision de Contaoinantes '); let(1 9 2,4,0,' Clave Clave Del let{1,3,4,0,'De Actividad Contaminante Cantidad'); Emitida Unidades'); end; 'D' :begin lettí5,1,4,14,' Lista de Contaminantes '); Nuo .'); let(1,2,4,0,' Receptor'); let(1,30,0,' Contam. Contaminante end; 'F' :begin let(5,1,4,14,' Efectos de Sustancias en la Salud y en el Ambiente '); Ngrs Ubrervaciones 'l; let(1 0 2,11,0,'Num Nombre Contaminante PPN`s let(18,3,14,0,' I Efectos en la Salud I '); end; '6' :begin let(10,1 1 4,14,' Factores de Riesgo en Sustancias Peligrosas '); Iettt,2,4,0,' Nombre del Contaminante Cantidad Minima Notificada Cantidad Minima '); Monitoreada'); let(1,3 5 4,0,'Num end; ')' :begin let(í0,í,4,14,' Controladores de Contaminantes '); let(l,2,4 5 0,nom); end; end; C case I SCROL(up) ; C Rutina que despliega los registros en 80 columnas I end; end; until op = '5'; end ; { CONSULTA I { I BEGIN C Base de Datos I textaode(c80); repeat seBajas:=false ; windostl,1,80,25); textbackground(0); clrscr; LETt10,1,4,14,' BASE DE DATOS LETt20, 5,11,0,' A : Altas yin Modificaciones '); LETt20, 7,11,0,' B : Bajas '); 1E7120, 9,11,0,' C : Consultas '); LET120,15,11,0,' T) Terminar '); repeat LET125,23,6,0,'Opcion ---} '); readlKBD,op) ; op :=upcaselop); writetop); until op in I'A' . .'C','T'1; case op of 'A' : Al tllod; 'B' :Bajas; 'C' :Consulta; end ; f case } until op = 'T'; textmodetc80); window11,1,80,25); let(1,1,7,0,"); textbackgroundl0); clrscr; lett13,13,4,14,' A D I 0 S '); 1et11,1,7,0, " ); END . SIRIA '); ANEXO 2. PROGRAMAS FUENTE MODULO DE PREDICCION ( MODELO GAUSS PUFF (SIMPLIFICADO) ( overlay PROCEDURE PUFF; ( /I SRAPH .P } VAR Xy,Xz,XyY,Xint,Radio : real; FUNCTION FUNPUFF (EMUNIF,VELOC,ALTURA,radY : real) : real; var fun,uno,dos,sz,sy : real; begin ( FUNPUFF UNIDADES en (gr/e3) EMUNIF (0) en (gr/seg) o (curieslseg). (U) en (ets/seg). ALTURA (N) en te) VELOC DIS1X Y II) en (Kos) (Y) en te) } DISTX :=DISTX +' Xz; sz :=SI6RA1(DISTX,CLASE); DISTX :=DISTX - Xz + Xy; sy :=S16MAY(DISTX,CLASE); DISTI :=DISTX-Xy; if (sz 0 0 .0) and (sy 0 0.0) then begin C SDRT(8t Pi 1 Pi $ Pi) } fun := 2 f EMUNIF / 15 .74961 ; fun :=fun/ (5y t 5y t sz ); uno :=-0.5 $ ( radY t radY / (sy i sy) + ALTURA t ALTURA / (sz t sz) l; if uno(-80 then uno :=-80; fun :=fun E exp ( uno ) ; FUNPUFF :=fun; end else begin FUNPUFF :=99 .9e19; MUESTRA('A' 1 1,1,'Err FUNPUFF=',99 .9e19, " ); end; end; PROCEDURE Calclylz; var sigeYZ,a,b,c,expon,logna : real; coon : integer; begin sigaYZ :=Radio / 2 .15; CLASE := upcase(CLASE); coorX :=ord(CLASE) - ord('A') + 1 ; } } a :=tsy(coorX,ll; b :=tsytcoorX,2l; c : : 0; logna :=isigmYl-c) / a; if logna ( le-30 then logna :=le-30; expon :=( 1 / b ) t In( logna ); if expon < -80 then expon :=-80; Xy :=exp(expon)/1000 ; I Xy en Kas } a :=tsztcoorX,1]; b :=tsztcoorX,2]; c :=tszlcoorX,31; logna :=tsigmYZ - c) / a; if logna ( le-30 then logna :=le-30; expon :=( 1 / b) t in t logna ); if expon < -80 then expon:=-80; Xz :=exp( expon ) / 1000 ; ( Xz en Kos } end; PROCEDURE DATPOSICION; var dato : string(l5l; err : integer; begin TEXTOI(true); textcolor(2); gotoxy(l,4) ;write('Posicion a medir la concentracion (Kell'); gotoxy(1,6) ;write(BLANC040); textcolor(3); repeat gotoxy(10,6) ;write('Xint => ') ;read(dato); valtdato,Xint,err); if err<>0 then begin gotoxy(6,6) ;write(BLANCOIO) ;end; until (err=0) and ()lint > 0) and Clint ( 1000); end; PROCEDURE CAPTURA(CLAVE :CHAR); var ND : char; Procedure AYUDA; begin repeat CAPTA(ENUNIF,'Nasa Contaminante Emitida 1gr)','O ----> '); until (ENUNIF ) 01; NUESTRA('B',105 3,'D= ',ENUNIF,'gr'); repeat CAPTA(VELOC,' Velocidad promedio del Viento (m/sg)','U ----> '); until (VELOC > 0) and (VELOC ( 50) ;; NUESTRA('B',10,4 1 'U= ',VELOC,'m/s') ; repeat CAPTA(ALTURA,'Altura efectiva de la Fuente until (ALTURA>O) and (ALTURA(10001; tats) ','Be ---> '); NUESTRAt'B',10,5,'H : ',ALTURA,'ats'); repeat CAPTA(Radio,'Radio aprox . del Recipiente (ml ','R ---> '); until (Radio)O) and (Radio(1000); NUESTRA('B' 5 )0,7 5 'Radio= ',Radio,'mts'); end; begin ( CAPTURA ) repeat TEXTOI(true); repeat CAPTA(JI,'Concentracion de Interes . (cgr/m3)','Conc .----> '); until (JI ) 0) and (JI (5000); NUESTRA ('B',)4,2,'JI=',JI,'mgr/m3'1; AYUDA; ESTABILIDAD; DATPOSICION; CalcXyXz; TEXT01(tr ue ); gotoxy(3,4); write('Ouieres modificar datos? (sin) p); readfKBD,NO); until (upcase(NO)(>'S'); if SMORA then putpic(CUAD A,0,1401; end; PROCEDURE CUADRO; begin ORAFI(true); for i :=0 to 10 do drawtl5,it13+5,314,i$13+5,11 ; for i :=0 to 11 do drawtit30+15,5,i$30+15,135,11 ; dra®(5,69,314,69,1); draw(14,5,14,135,1); circle(15,70,4,2) ; fi) lshapet15,70,2,2); TEXT02; gotoxytl,11) ;write('Fuente'); getpic(CUADBRA,0,0,319,140); nuevo: : false; end; t t ( FUENTE horizontales verticales > l > PROCEDURE 6RAFPUFF; var Delta,LM,xa,xf,ya,yf,ax,ya : real; prieer4 : boolean; radio,xx : integer; begin DISTX : =DISTX / 2; XyY : =O; repeat XyY:=XyY+100; until Jl >= FUNPUFF ( ENUNIF, VELOC, ALTURA, XyY) ; repeat XyY :=XyY -10; until (XyY: O) or (JI (= FUNPUFF ( ENUNIF, VELOC, ALTURA, lyY)) ; repeat XyY: : XyY +1; until JI 3= FUNPUFF ( EMUNIF, VELOC, ALTURA, XyY) ; TEXTO2; gotoxy(1,2); write(lyY :4 :1,' Mts'); LN:=XyY+iO; DISTX :=DISTX t 2; if DISTX < Xint then ax :=Xint else ax :=DISTX; str(ax :3:2,let); j :=lengtb(let); for is :l to j do begin gotoxy(40-j+i,17); urite(let(il); end; gotoxy(37,18); arite('Kes'); Delta :-ax 111; DISTX :=Delta; 6RAF1 (f al se) ; for i :=1 to 11 do begin XyY :=O; ( Oruga 3 repeat XyY :=XyY+100; until JI >: FUNPUFF ( EMUNIF, VELOC, repeat XyY :=XyY-10; until (XyY:O) or ALTURA, XyY) ; (JI (= FUNPUFF ( ENUNIF, VELOC, ALTURA, XyY)) ; repeat XyY: : XyY+1; until JI >: FUNPUFF ( ENUNIF, VELOC, ALTURA, XyY) ; radio : : Rownd{b0 t (XyY / LM)) ; xx :=Round(315 t DISTX / ex ); circle(xx,70, radio, 2); if {i eod 2) () 1 then fillshape(xx + radio - 1, 70, 3, 2); circle(xx,70,2,2); DISTX := DISTX + Delta ; end ; ( for 1 . .11 ) TEXT01(false); gotoxy(35,b); write('IRETI'); readln ; ( Grafica de Concentracion vs Distancia ) gotoxy{20,7); write(''); 6RAFI(true); for i :=0 to 10 do draw(15,it13+5,314,ií13+5,1) ; ( horizontales ) for i :=0 to 11 do draw(i$30+15,5,ií30+15,135,11 ; ( verticales draw{14,5,14,135,1); draw(15,135,315,135,1); draw{15,5,15,135,1); draw(15,13b,315,136,1); draw(14,5,14,135,1); xa :=0; TEXTO2; textcolor(3); for is=1 .to j do begin gotoxy(39-j+i,17); write(lettil); end; gotoxy{37,18); write{'Kos'); gotoxy(2,17); write('O'); Delta :=sx t 0 .05; DISTX :=Delta; ya := FU UFF(EMUNIF,VEL0C,ALTURA,0); gotoxyll,l); write(ya :2 :1,'gr/0'); textcolor(2); gotoxy(12,1) ;write('Concentracion vs Distancia'); yE:=ya; repeat DISTX := DISTX + Delta ; . yf := FUNPUFF( EMUNIF, VELOC, ALTURA, 0) ; draw{Round{310i(xa/ax))+15,Round(135-135t(ya/y .)), ) Round(3101(DISTX/ax))+15,Round(135-1351(yflyn)),21; xa :=DISTX; ya : =yf; until DISTX >: ax ; end ; ( SRAFPUFF } PROCEDURE AREAAFEC; var Nora,Min,Seg :real; begin TEXTOI(true); textcolor(2); gotoxy(13,1); write('MODELO PUFF'l; textcolor(3); JI : =JI/1000 ; ( Se convierte de oiligr/a3 a grlat3 > DISTX :=Xint; gotoxy(10,2) ;write('Para X =',Xint :3:3,'Kas'); gotoxy(1,3) ; write('Conc=',FUEM'UFF(EMUMIF,VELOC,ALTURA,01 :3 :4,'gr/o3'); Hora:=DISTX * 1000 / VELOC / 3600; Min := (Hora-Trunc(Hora))#60; Seg :=(ain-Trunc(Min))t60; write(' Y Tieapo=',Trunc(Hora),' :',Trunc(Min), " " ,Seg :2:2, " " " 1; DISTX :=0 .0; repeat DISTX :=DISTX + 10; until JI >= FUNPUFF ( ENUNIF, VELOC, ALTURA, 0) ; repeat DISTX :=DISTX - 1; until (DISTX=1) or (JI (= FUNPUFF ( EMUNIF, VELOC, ALTURA, 01) ; if DISTX=1 then repeat DISTX :=DISTX - 0 .1; until (DISTX(=0 .1) or (JI ( FUNPUFF ( ENUNIF, VELOC, ALTURA, 0)) I repeat DISTX :=DISTX + 0 .1; until JI >= FUNPUFF ( ENUNIF, VELOC, ALTURA, 0) ; Hora :=DISTX s 1000 I VELOC / 3600; Min :=(Nora-Trunc(Hora))#60; Seg :=(ein-Trunc(Hin))$60; gotoxy(9,5); write('Para Concentration=',JI :3 :4,'gr/o3'); gotoxy(1,6) ;write('Dist: ',DISTX :3 :2,'Kos'); write(' Y Tieopo: ',Trunc(Hora),' :',Trunc(Min)," " ,Seg :2 :2," " "1; 6RAFPUFF; J1 : :J1t1000 ; ( Se convierte a oiligr/ot3 > end; PROCEDURE MODPUFF; begin TEXTO1(true); MUESTRAt'A',2,3,'Q=',EMUNIF,'gls'); MUESTRA('A',2 1 4 1 'Ú=',VELOC,'e/s'); MIJESTRA('A',2,5,'H z ',ALTURA,'its'); MUESTRA('A',20,3,'Radio=',Radio,'ets'); if J1>0 .00001 then begin NUESTRA('A',50,'CONCENTRACION: ',J1,'Miligr/e3'); end else begin MUESTRA('A',5,1,'CONCENTRACION= ',JI$1000,'Nicrogr/e3'1; end; MUESTRAI'A',20,4,'ESTAB= 'tCLASE,0 .0," ); if nuevo then CUADRO else putpic(CUADGRA,0,1401; gotoxy(35,6); arite('IRETI'1; readln; gotoxyt20,11; urite(")l AREAAFEC; end; PROCEDURE MODELO?; begin TEXT011true); CAPTURA ('P'); MODPUFF; TEXTOI (fal se); gotoxy(35,61 ;urite('IRETI'); readln; end; BEGIN OP :_ '7' ; YMAX :=10; t Procedure principal I DF := 50; POSY : : 0 .0; ESCALA := 10 ; POST := 0 .0; clrscr ; ESCALAY :=10; graphcolornode; Sil A :=false; repeat CUADRO ; TEXT02; textcolur(21; gotoxyti2,)) ;writel'MODELO 'PUFF"); TEXT01(true); gotoxy(5,2) ;write('A ) Correr Modelo .'); gotoxy(5,41 ;write('S 1 Salir .'); repeat gotoxy(5,6) ;write('Opcion ---> '); read(KDD,OP); OP : upcasetOP1 ; write(OP1; until OP in I'A','S'l; if OP = 'A' then NODELOP; until OP='S'; texteode(cOO); window(1,1,80,25); clrscr; END; t ] ( } overlay PROCEDURE GAUSS; var opg :char; salva:LETRERO; PROCEDURE DATPOSICIOR; var dato : string(l5l; err : integer; begin TEITO!(true); textcolor(2); letl(1,4,'Posicion a medir la concentracion (Kas)'); let!(l,6,BLAMCO40); textcolor(3); repeat letl(1,6,'I=> ') ;read(dato); val(dato,DISTI,err); if err<>0 then begin letl(6,6,8LAHC010) ;end; until (err=0) and (DISTI > 0); repeat letl(14,6,'Y=) ') ;read(dato); val(dato,POSY,err); if err<>O then begin letl(18,6,SLANCO10) ;end; until (err=0); repeat letl(28,6,'1=) ') ;read(dato); val(dato,POSZ,err); if err<>0 then begin letI(29,6,BLAHCOIO) ;end; until err=0; end; PROCEDURE CalcAlt; var alch, velga,diam,presat,tempga,tempair : real; dato : stringI20l; err : integer; begin repeat CAPTAIalch,'Altura de la Chimenea (mts)','Hch ----> '); until alch > 0 ; HUESTRA('B',10,7,'Hch: ',alch,'ate'); repeat CAPTA(velga,'Velocidad de envision del Gas (m/seg)','Vg ----> '1; until (velga > 01; MUESTRA('B',10,8,'Vg: ',velga,'a/seg'); repeat CAPTAtdiam,'Diametro interno (mts)','Di ----> ') ; until (diam > O); MUESTRA('B',10,9,'Di= ',diam,'mts'); repeat CAPTA(presat,'Presion Atmosferica (Atmosferas)','Pa ----> '); until presat > 0; MUESTRA('B',10,10,'Pa= ',presat,'Atms'); CAPTA(tempga,'Temperatura del Gas (Grad .Centig)','Tg ----> '); MUESTRA ('B',10,11,'Tg= ',tempga,'gC'); repeat CAPTA(teapair,'Temperatura del Aire (Grad .Centig)','Ta ----> '); until (tempair ( tempga); MUESTRA ('D',10,12,'Ta= ',tempair,'gC'); tempga := tempga + 273 ; tenpair := tempair + 273 ; ( Se convierte a grad .Kelvin ) ( Se convierte a grad .Kelvin } ALTURA := aich + (velga t diam / VELOC ) t (1 .5 + 2 .72 t presat t ( (tempga - tempair) / tempga) t diam); end ; ( procedimiento CalcAlt ) PROCEDURE CAPTURA(CLAVE :CHAR); var salva,dato : LETRERO; err : integer; MD : char; PROCEDURE AYUDA; begin repeat CAPTA(EHUMIF,'Gasto Contaminante en la Fuente (g/sg)','G ----> '); until (EMUMIF ) O); MUESTRA ('B',10,3,'0= ',EMUMIF,'g/sg'); repeat CAPTA(VELOC,'Velocidad promedio del Viento (m/sg)','U ----> '); until (VELOC ) O) and (VELOC ( 50) ;; MUESTRA ('B',10,4,'U= ',VELOC,'m/s'); textcolor(2); letl(4,2,'Altura efectiva de la Fuente (m) '); textcolor(3); repeat letl(2,4,'Conocida o Desconocida (cid) --) '); read(KBD,CH) ; CH:=upcase (CH); if ord(CH) <> 13 then Alcon :=CH; until Alcon in ['C','D'l; let 1(1,4,BLAHCO40); if Alton = 'D' then CalcAlt else repeat CAPTA(ALTURA,",'H ----> ') ; until (ALTURA>=0) and (ALTURA(10001; NUESTRA ('B'510,5,'H= ',ALTURA,'s'); let!(l,2,BLANCO401; end; begin ( CAPTURA l repeat TEXT02; textcolor(2l; if CLAVE: 'P' then write(' CONCENTRACION EN POSICION (X ,Y if CLAVE : 'I' then ) '); begin letl(9,1,'CURVA DE 1S000NCENTRACION'); TEXTOI(true); repeat CAPTA(JI,'Isoconcentracion (oiligr/et3)','Conc . ---> '1; until (JI ) 0) and (JI ( 5000); NUESTRA ('B',10,2,'Conc:',JI5'eg/o3'); end; if ((CLAVE:'P') and (not SNSRA)) or (CLAVE='I') then begin TEXTOI(true); AYUDA; ESTABILIDAD; end; if CLAVE='P' then DATPOSICION; TEXTOI(true); if CLAVE : 'P' then MO :_ 'N' else begin letl(3,4,'Ouieres modificar datos? (sin) '); read(KBD,MO); end; until (upcase(MO)<>'S'); if MORA then putpic(CUADSRA,0,140); end ; ( Procedioiento Captura l PROCEDURE ELIPSE; var ycentro,xa,ya,xf,yf,xmax,yeaxg :integer; delta :real; begin if DI < DF then begin ycentro: :70; xoax :=300 ; ORAFI(false); circle(15,ycentro,4,2) ; fillshape(15,ycentro-1,2,2) ; yeaxg : : 130; ( FUENTE 3 xa:=round(xmaxtDI/ESCALA)+15; Ya ' =O ; circle(xa,ya+70,2,2); fillshape(xf,ycentro-1,2,2); TEXT02; gotoxyi13,2); if Jl>le-4 then writet'IsoConc=',(JI) :1 :4,'mg/m3') else if JI > le-b then write('IsoConc=',(JI11000) :1 :4,'ug/m3') else write('IsoConc=',(Jl$le6) :1 :4,'ng/m3'); letl(15,3,let); gotoxy(5,16); writet'Area afec .= ',(PIt((DF-DI)/2)t(YNAX)/1000) :4 :1,'Kes2'); DISTX :=DI; if DISTX = 0 .0 then DISTX :=Ie-b; delta :=ESCALA t 0 .02; repeat xf :=round(xeaxtDISTX /ESCALA) +15; yf :=round(ymaxg*Y/ESCALAY/1000); draw(xa,ycentro+ya,xf,ycentro+yf,2); draw(xa,ycentro-ya,xf,ycentro-yf,2); xa:=xf; ya: =yf; DISTI :=DISTX + delta; until (DISTX )= DF) or lxf ) xmax+20); if xft=xaax then begin circle(xf,ycentro,2,2); fillshape(xf,ycentro+1,2,2); end; end; end; PROCEDURE POSXYI; var coor : integer; f : real; su : boolean; begin sw :=false; if not SYGRA then CUADRO; f :=FUNCNItcoor,ENUNIF,VELOC,ALTURA); if (fí1000 > le-3) then NUESTRA ('A',b,1,'CONCENTRACION= ',fí1000,' Niligr/m3') else if itftleb) ) le-S) then NUESTRA ('A',6,1,'CONCENTRACION= ',ft1e6,'Nicrogr/m3') else NUESTRA ('A',6,1,'CONCENTRACION= ',f$1e9,'Nanogr/m3'); circletround(300tDISTX /ESCALA) +15,70+round(130#POSY/ESCALAY),3,2); circletround(3001DISTI/ ESCALA )+15,70-roundt130tPOSY/ESCALAY),3,2); end ; PROCEDURE NODCAUSS(OP :char); begin if OP='B' then 6RAFI(true); TEXTOI(true); NUESTRA ('A',1,3,'O='5ENUNIF,' g/s'); NUESTRA ('A'01,4,'U=',VELOC,' sls'); MUESTRA ('A',1,5,'1P',ALTURA,' ats'); if OP='A' then begin NUESTRA ('A',29,3,'X= ',DISTX,' Kas'); NUESTRA I'A',29,4,'Y= ',POSY,' Kas'); NUESTRA ('A',29,5,'I= ',POS1,' Kas'); NUESTRA ('A',15,3,'ESTAB= '+CLASE,0 .0,'); NUESTRA ('A',15,4,'SY=',S16NAY(DISTX,CLASE),' Nts'); NUESTRA ('A',15,5,'SZ=',SISNAZ(DISTX,CLASE),' Nts'); POSXY1; end else begin textcolor(2); let1(7,1,'CURVA DE ISOCONCENTRACION'1; textcolor(3); if nuevo then CUADRO else putpic(CUADGRA,0,140); NUESTRA ('A',2Q,3,'ESTAB= '+CLASE,0 .0,'1; AREAAFECI'A'); if (DI(DF) then begin DISTX :=IDF-DI)/2; YNAX :=Y; if YNAI ( 9000 then NUESTRA I'A',20 1 4,'YNax=',YNAX,' Nts') else NUESTRA ('A',20,4,'YNax=',YNAX / 1000,' Kas'); ELIPSE; getpic(CUADSRA,0,0,319,140); Sa6RA:=true; end; end; end; BEGIN C Procedure Gauss Isoconcentracion y Pos X,Y,t 3 OP := '?' ; DF :=50 ; POSY :=0 .0; POSZ YNAX : =10 ; : =0 .0; clrscr; graphcoloraode•, CUADRO; SV6RA :=false ; textolltrue); let1(3,4,'Nombre del Contaminante'); letlil,b,' --> ') ;readlsalval; if salvat>chri131 then NomCon :=salva; letill,4,BLANCO4O); let lll,b,BLANCO40); Repeat TEXTO1(true); OPCIONES'); letl12,1,' letll2,3,'A) Concentration Posicion(X, Y, 1)'); letl12,4,'8) Isoconcentracion Area Afectada'); letl12,5,'C) Escalas X , Y'); letl12,6,'S) Salir'); repeat let1120,7,'Opcion ---> ') ;read(KBD,opgl ;writeiopg); opg :=upcasetopg); until opg in I'A' . .'C','S'l; case opg of 'A': CAPTURAI'P'); 'B' : begin POSY:=0 .0; POSZ :f .O; if not nuevo then CUADRO else begin putpic(CUAD A,0,140); SMSRA :=false; end; CAPTURA('I'l; end; 'C': begin ESCALAS; graphcolormode; 6RAF11false); if SNSRA then putpic(CUADSRA,0,140) else CUADRO; end; end; if opg in I'A','B'l then begin NODBAUSSiopg); texto2; textcolor(2); letll2O-lengthiNoaCon) div 2 , 1,NoaCon); textcolorl3); TEXTO! ifal se); let!(35,6,'IRETI'); readln; end ; Until opg='S'; textoode íc80); oindoni1,1,80,25); clrscr; END ; t Gauss Isoconc . t Pos X,Y,I ) D } ( overlay PROCEDURE DERRAMES; var long,pvc,pp,pe,lo,eo,ro : real; CH,MO,OPpuff : char; PROCEDURE TRIAMSULO; var ycentro,xa,ya,xf,yf,xaax,yaaxg :integer; Hora,Min,Seg :real; begin ycentro :=70; xaax :=300 ; 6RAF1(false); if DF=0 .0 then DF:=1e-9; yaaxg :=130; MUESTRA ('B',5,16,'Area Afec .=',DF 1 (4 .3 1 SI6MAYtDF,(S .ASE) / 1000),' K®s2'); TEXT02; Hora:=OF 1 1000 / VELOC / 3600; Min :=(Nora-trunc(Hora))I60; Seg :=(hin-trunc(hin))*60; gotoxy(5,15) ;urite('Tieapo= ',trunc(Hora),' :',trunc(Min), " " ,Seg:2 :1, --- ); TEXT02; let i( 15, 3, let); xa :=roundlxaax 1 DI / ESCALA) + 15; ya•=0; circle(xa,ya+70,2,2); DISTX :=DI; repeat DISTX :=DISTX+0 .2; xf :=round(xaax 1 DISTX / ESCALA) + 15; yf :=round(yeaxg = 4 .3 ! SIRMAY(DISTX,CLASE) / ESCALAY / 1000); draa(xa,ycentro+ya,xf,ycentro+yf,2); drau(xa,ycentro-ya,xf,ycentro-yf,2); xa:=xf; ya :=yf; until (DISTX >= DF) or (If > xaax+20); if xf<=xeax then drau(xf,ycentro+ya,xf,ycentro-ya,2); SUSRA :=true; end; PROCEDURE CalcPe(pp :real ;var pe:real); PROCEDURE LECTURA; var dir :stringl40l; begin getdir(3,dir); if (dir = 'C:\sedue\sodelos')or(dir = 'C :\SEDUE\MODELOS') then begin assign(TI,'C :\ARCHIYOS\DATEOU .PAS'); (iI-} reset(Tl) ; {Sl+} end else begin assign(TI,'B:IARCNIVOS1DATEQU .PAS'); (fl-> reset(Tl) ; 010 end; if ioresult = 0 then begin for i :=1 to 40 do read(T1,Tab[l,0,Tab[2,i1); leidoD:=true; end else begin leidoD:=false; textcolor(2); ariteln(111,'El Archivo DATEQU .PAS no existe'); ariteln('Favor de verificar . [RET]') ;readln; textcolor(3); end; end ; ( proc . lectura ) begin t prat . CaltPe > if (not leidod) then LECTURA; if leidoD then begin i :=0; repeat is : i+l; until tTabIl,il >= pp)or(i>=40); if i=1 then pe :=0 .01 else pe:=Tab[2,i-17+(Tab[2,il-Tab[2,i-1])t(pp-TabIl,i-1l)l (Tab[l,i]-Tab[l,i-l]); end; end ; ( proc . CalcPe > PROCEDURE ODescoLiq; begin pvc :=-1; repeat CAPTAtpvc,'Presion Vapor del Contaminante (ea/Ng)','Pvc ----> '); until (pvc >= Oland (pvc (= 760); pp:=pvc/7604100; CalcPe(pp,pe); NUESTRA (' B ' ,10,8, ' PresVap=' , pp , ' 7.') ; NUESTRA ('11',10,9,'FuenVap=',pe,' t'); l o: 0; repeat C TA(lo,'8asto liquido derraaado (Ltslseg)','Lo ----> 'l; until (lo > 0); NUESTRA ('B',10,10,'lo=',lo,' Lt/s'1 ; ro := 0 .0; repeat CAPTA(ro,'Peso Especifico del Contaminante (Kg/Lt)','Ro ----> '1; until (ro > 0); Do : : ro S lo t 1000 ; EMUHIF:= Do 1 pe / 100 ; end ; ( Procedimiento QDescoLiq } PROCEDURE CalcXy; var a,b,c,expon,logna,sigeYo :real; coorl :integer; begin repeat CAPTA(long,'Longitud del derrame (mts)','S ----> 'l; until {long ) 0); MUESTRA ('B',10,11,'S=',long,'mts'); sigmYo :=long / 4 .3; tLASE :=upcase(CLASE); coon := ord(CLASE) - ord('A') + 1; a :=tsy[coorX,il; b :=tsy[coorX,21; c=0.0• . , lcqna :=(sigoYo - c) / a; if (logna ( le-30) then logna := le-30; expon :=( 1/b ) ! In( logna ); if expon(-80 then expon :=-80; Xy :=exp( expon 1/1000; ( Xy en Kilometros } end; ( Procedimiento Cady ) PROCEDURE AYUDA; var CH:char; ( AYUDA DERRAMES ) begin textcolor (2); letl(2,2,'6asto Contaminante en la Fuente (g/sg)'); textcolor(3); repeat letl(2,4,'Derrame Contaminante Liquido o Gas?'); leti(15,6,' (1/g) ---) ') ;read(KBD,CH); CH:=upcase(CH) ;Mrite(CH); if ord(CH) <> 13 then LID := CH; until LID in I'L','S'l; letl(1,4,BLARC840); let 1(1,6,BLAHCO40); if LI0='L' then begin ALTURA : 0; repeat let1(2,4,'6asto '0' Conocido o Desconocido ?'); letl(15,6,' (c/d) --) ') ;read(KBD,CH); CH:=upcase(CH) ;ariteECH) ; if ord(CH) <> 13 then NO :=CH; until KO in I'C','0']; letl(1,4,BLANCO40); letl(1,b,BLANC040); end else begin repeat CAPTA(ALTURA,'Altura de la fuga (m)','H ---->'); until (ALTURA>=0) and (ALTURA(1000); NUESTRA ('B',10,5,'H: ',ALTURA,'m'); end; if NOr-'D' then ODescoLiq else repeat CAPTA(ENUNIF,",'O ----> '); until (ENUNIF ) O); NUESTRA (1'00,3,'0= ',ENUNIF,'g/s'); letitl,2,BLANC040); repeat CAPTA(VELOC,' Velocidad promedio del Viento (m/sg)','U ----> '1; until IVELOC > 0) and (VELOC ( 50) ;; NUESTRA ('B',10,4,'Ú= ',VELOC,'m/s'); end ; ( AYUDA DERRAMES ] PROCEDURE NODELODe; begin repeat TEXTOI(true); repeat CAPTA(J1,'Isoconcentracion a localizar (ciligr/c3)','Conc . --->'1; until (JI > 0) ; NUESTRA t'B',10 0 2,'Conc=',JI,'sg/s3'); TEXT01(true); AYUDA; ESTABILIDAD; if LIO='L' then CalcXy; TEXTOI(true); letl(3,4,'Ouieres codificar datos? (sin) '); read(KBD,NO); let 1(1,4,BLANC040); until (upcase(NOX(>'S'); putpic(CUADGRA,0,140); TEXT02; textcolor(2); let](20-lengthtNo.Con) Div 2 ,2,NomCon); TEXTOI(true); textcolor(2); letl(2,1,'NODELO 6AUSSIANO PARA FUGAS Y DERRAMES'); textcolor(3) ; MUESTRA ('A',2,3,'O=',EMUNIF,' gls'); MUESTRA s/s'); MUESTRA ('A',19,3,'Conc=',JI,'Miligr/s3'); if LID='L' then NUESTRA ('A',2,5,'S=',long,'sts'); if LIB 'L'then NUESTRA t'A',19,4,'Z Evapor= ',pe," ) else NUESTRA ('A',19,4,'N=',ALTURA,'sts'); POSY : =0 .0; P051 :=0 .0; AREAAFECt'B'); TRIANGULD; TEXTOI tfalse); gotoxyt34,6); writet'[RETI'1; readln; end ; ( Proc . NodeloDe ) BEGIN ( FUGAS Y DERRAMES } SNBRA:=false; cirscr ; . raphcolorsode; if not SYSRA then CUADRO; TEXT02; gotoxy(l,1); textcolor(2); write(' MODELO 6AUSSIANO PARA FUGAS Y DERRAMES '); TEXTOI(true); letl(5,3,'Noebre del Contasinante'); letl(2,5,'--) '); readln(NosCon); let115,3,BLANCO40); letl(2,5,BLANC040); repeat if not SMBRA then CUADRO; TEXT02; gotoxy(1,l); textcolor(2); write(' MODELO 6AUSSIANO PARA FUGAS Y DERRAMES '); TEXTOI(TRUE); letl(3,3,'A) Correr el Modelo '1; letl(3,4,'B) Escalas X , Y'); letl(3,5,'S) Salir '); repeat letl(5,6,'Opcion ----> '); read(KBD,OPpuff); OPpuff :=upcase(OPpuff); write(OPpuff); until OPpuff in ['A','B','S'll case OPpuff of 'A' : begin CUADRO; NODELODe; end ; 'B' :begin ESCALAS; graphcoloriode; SRAFI(false); if SUSRA then putpic(CUAD6RA,0,140) else CUADRO; TEXTOI(true); end; end; until OPpuff='S'; END ; t fugas Y Derrames } { } { MODELO --> Desanda Dioloquieica de Oxigeno - Oxigeno Disuelto overlay PROCEDURE DROP; € $ I GRAPH, P3 var DboDesc,OdDesc,VolDesc,CoefDesOx,CoefAerea : real; DboR,OdR,ConcOxSat,VallnOx,ConcDo : real; Or,Oe,Lr,Le,Cr,Ce,odReg : real; yl,y2,ex1,ex2 : real; procedure LET(X,Y:integer ;osg :LETRER01; begin gotoxy (X, Y); urite(esg); end; PROCEDURE DESPOATOS; begin HUESTRAI'A' 1 2,3,'Lo =',DboDesc,' eg/l'1; HUESTRAI'A',2,4 2 'Co =',VallnOx,' eg/l'); HUESTRA('A',2 1 5 5 'Cs =',ConcOxSat,' eg/l'); HUESTRAI'A',23,31 'K1 =',CoefDesDx,' lldía'); HUESTRA('A',23,4,'K2 =',CoefAerea,' 1/dia'l; HUESTRA('A',23,59 'U =',VelocR,' e/s'1; textcolor(2); gotoxy(11,l) ;urite('STREETER Y PHELPS'); gotoxy(17,21 ;aritel'Datos :'); end; PROCEDURE CUADRO; begin 6RAFI(true); for i :=0 to 12 do dras(l5,i$12,315,it12,l) ; for i :=O to 10 do dras(it30+15,0,ií30+15,132,1) ; ( horizontales l { verticales > TEXT02; gotoxy(35,17); if ESCALAR >=1 then arite(ESCALAX :2,'Kes') else write((ESCALAX11000) :3,'ets'); gotoxy(3,16) ;arite(LI :2,' mg/l'); gotoxy(3,11 ;urite(LS :2,' eg/l'); getpic(CUADSRA,0,0,319,140); end; PROCEDURE GRAFICA; var xa,xf,dis :integer; yal,ya2,yfl,yf2,delta,exponl,expon2 :real; begin > CoefDesox :=CoefDesox/86 .4; CoefAerea :=CoefAerea/86 .4; S1ORA : =f al se; TEXT02; GRAF1(false); putpic(CUAD6RA,0,140); xa:=15; gotoxy(35,11) ;write(ESCALAX :2,'Kes'); gotoxy(3,16) ;write(LI :2,' mg/l'); gotoxy(3,1) ;write(LS :2,' eg/i'); draw(252,10,262,10,2); draw(252,18,262,18,3); draw(256,18,258,18,0); draw(252,26,257,26,2); if odReg <> 0 then ( Reglasento de OD ) fwr i :=0 to 29 do begin draw(15+i410,Round( 20+it10,Round( draw(20+it10,Round( 24+id10,Round( 120-120 120-120 120-120 120-120 t t ! E odReg odReg odReg odReg l I 1 I LS LS LS LS ) , ),2); ) , ),0); end; TEXT02; let(34,2,'D90'); let(34,3,'OD'); let(34,4,'0D reg'); ya1 := DboDesc ; ( ya1 => Inicio del DUO X = 0 } ya2t= Vailnox ; I ya2 =) Inicio del OD X = 0 ) DistDesc := 0 .0 ; delta : ESCALAX i 0.02 ; repeat DistDesc := DistDesc + delta; xf :=Round(300 $ DistDesc / ESCALAR) + 15; exponi :=-CoefDesBx t DistDesc / VelocR; if exponi < -80 then exponl :_ -80; yfi :=DboDesc 4 exp ( exponi ) ; draw(xa ,Round( 120-120 t yal/LS ) xf ,Round( 120-120 t yfi/LS ) , 2); yal :=yfl; (} expan2:=-CoefAerea t DistDesc / VelocR; if expon2 ( -80 then expon2 := -80; yf2 :=CoefDeSox # DboDesc l ICoefAerea-CoefDesox) t (exp{exponl)-exp(expon2)); yf2 := yf2 + {Conc0z5at-VallnDx) t exp 1 expon2 ) ; yf2 := ConcOxSat - yf2 ; if yf2 ( 0 then yf2 := 0; drawl xa ,Round( 120-120tiya2-LI)/(LS-LI) ) (xf+xaldiv 2,Round( 120-1201((ya2+yf2)/2-LI)l(LS-LI) ) , 3); draw((xa+xf)div 2,Round( 120-120t((ya2+yf2)/2-LI)/tLS-LI1 ) , xf ,Round( 120-120t(yf2-LI)/(LS-LI) ) , 0); xa :=xf; ya2 :=yf2; until (DistDesc >= E5CALAX) or ixf>=315); textcolor(1); if odReg=4 then let(12,17,'Clase Uso DA,DI y DII') else if odReg=3.2 then let(12,17,'Clase Uso DI11 y DIV'); textcolor(3); getpic(CUAD6RA,0,0,314,140); CoefDesox :=CoefDesox t 86 .4; CoefAerea:=CoefAerea t 86 .4; end ; ( órafica ) PROCEDURE ESCALAS; var opcion :char; begin texteode(c40); clrscr; tex tcolor (2); gotoxyi5,1) ;writet'LINITE NAXINO (Distancia) :'); textcolor{3); let{3,3,'A) 1 ats'); let(3,4,'B) 3 Km'); let13,5,'C1 5 Kes'); let(13,3,'D) 10 Km'); let113,4,'E) 15 Kos)); let(13,5,'F) 25 Kes'); let{25,3,'6) 50 Kes'); lett25,4,'H) 75 Kes'l; let(255 5,'I) 100 Kes'); repeat let(12,7,'Opcion ----> '); read(KBD,opcian) ;+:rite(opcion); opcion :=upcase(opcion); until opcion in i'A' . .'I']; case opcion of 'A' :ESCALAI :=1; '8' :ESCALAR : =3 ; 'C' : ESCALAI : 5; '0' :ESCALAX :=10; 'E' :ESCALAX :=15; 'F' :ESCALAX :=25; '6' :ESCALAX :=50; 'H' :ESCALAX :=75; 'I' :ESCALAX :=100; end; graphcoloreode; if not S116RA then CUADRO; if dat then begin DESPDATOS; 6RAFICA; TEXTO! (false); gotoxy(20 1 7); write('(RET)'); readln; end; end; ( Escalas } PROCEDURE DATOS; var opl,op :char; begin repeat if dat then CUADRO; TEXTOI(true); dat :=true; opl := C'; let(1,2,'Concent . DBO Despues de Descarga (og/))'); repeat gotoxy(5,4) ;write('Conocida o Desconocida (c/d) --) '); read(KBD,CH) ;CH:=upcase(CH) ;write(CH); if ord(CH)(>13 then opt :=CH; until op! in I'C','D'l; gotoxy(l,4) ;urite(BLAHC040); if upcase(opl) _ 'D' then begin repeat capta(Or,'6asto del rio (e3/s)','Or ----> '); until (Or ) 0); repeat capta(Lr,'DBD del Rio antes de la descarga(eg/l)','Lr ----> '); until fir ) 0); repeat captal0e,'Gasto de la descarga (s3/s)','Oe ----> 'l; until (9e ) O); repeat capta(Le,'DBO de la descarga (vg/l)','Le ----> '); until ILe > 0) ; DboDesc :=(Qrilr + Oe*Le)/(Or+Oe); end else repeat capta(DboDesc, " ,'lo ----> '1; until DboDesc ) 0; HIIESTRAt'B',10,2,'Lo =',DboDesc,' ag/l'); let{1,2,BLAHC040+"); op :='C'; let(1,2,'Concentracion Oxigeno Saturacion(ag/1)'l; repeat gotox05,4) ;write{'Conocida o Desconocida {c/d) --> 'l; read(KBD,CH) ;CH :=upcase{CH) ;write(CH); if ord(CH)013 then op :=CH; until op in 1'C','D'1; let(l,4,BLAHCO40); if upcase(op) _ 'D' then begin repeat capta(TespR,'Teaperatura del Rio (grad .Centig)','T ----> '); until (TeapR ) -20)and(TeepR ( 50); ConcOxSat := 475 / ( 33 .5 + TeapR l; end else repeat capta(ConcOxSat,','Cs ----> '1; until ConcOxSat > 0; HI)ESTRA('B',10,35 'Cs =',ConcOzSat,' ag/1'1; gotoxy(l,2) ;writelBLANCO40); let(l,2,'OD-Rio Despues de Descarga (ag/l) ( Cs'); repeat gotoxy(5,4) ;write('Conocida o Desconocida (c/d) --> 'l; read(KBD,CH) ;CH : :upcase(CH) ;write(CH); if ord(CH)(>13 then op :=CH; until op in ('C','D'); let(I,4,BLAHC040); if upcaselop) = 'D' then Repeat if opt='C' then repeat capta(Qr,'6asto del Rio . (a3/s)','Or ----> '1; until (Or > 0); repeat capta(Cr,'OD del Rio antes de la Descarga . (ag/l)','Cr ----> '); until (Cr ) 0); if opl = 'C' ' then repeat ° capta(Qe,'Basto de la Descarga . (a3ls)','Oe ----> 'l; until (Qe > 0) ; repeat capta(Ce,'OD de la Descarga . (sg/l)','Ce ----> '); until (Ce ) 0); ValInOx :=(Br*Cr + DetCe)ltOr+Del; if VallnOx > ConcOxSat then begin let(3,5,"6"6+'Valores Inapropiados . Co ) Cs IRETI'); readln; let ll,5,BLANCO40); end; Until VallnOx < ConcOxSat else repeat capta(VallnOx,'','Co ----> '); until tVallnOx > 0) and (VallnOx ( ConcOxSat) ; let(l,2,BLANC040); NUESTRA('B',10,4,'Co =',ValInOx,' sg/1'); repeat capta(CoefDesOx,'Coeficiente de Desoxigenacion . until ( Coeffes0x >= 0); NUESTRA('B',10,5,'K1 =',CoefDesOx,' 1/dia'); '); repeat capta(CoefAerea,'Coeficiente de Aereacion . ) K1','K2 ----> '); until ( CoefAerea > 01and(CoefAerea > CoefDesOx); NUESTRA('B',l0,b,'K2 =',CoefAerea,' 1/dia'); repeat capta(VelocR,'Velocidad del Rio (s/seg)','U ----> •); until (VelocR ) 0)and(VelocR ( 20); NUESTRA('B',10,7,'U =',VelocR,' s/s'); textcolor(2); Iet(7,1,'Sraficar Reglasento de OD (sg/1)'); textcolor(3); let(1,3,'A) Potable y uso Recreativo .OD sin 4 .0'); let(1,4,'B) Para uso Indust . y Agric .OD sin 3 .2'); let(1,5,'C) No Braficar Reglasento'); op•='C'; repeat let(4,7,'0pcion ----> 'l; read(KBD,CN) ;CN :=upcase(CN) ;write(CB); if ord(CH)(>13 then op :=CH; until op in case op of 'A' :odReg :=4.0; 'B' :odReg :=3 .2; 'C' :odReg :=O; end; TEXTO!(true); let(2,4,'Ouieres codificar datos (sin) ---) '); read(KBD,op); let(1,4,BLANC040); until upcase(o)()'S' ; DespDatos; if DboDesc > ConcOxSat then LS :=RoundtDboDesc + 1) else LS :=Round(ConcOxSat+1); end ; ( Datos } PROCEDURE ModeloDbo; begin TEXTOI(true); DATOS; SRAFICA; TEXTOI tfal se); gotoxyt20,7) ;urite('(RET)'); readin; end; PROCEDURE CalcPos; var x :integer; y1,y2,exponi,expon2,tep :real; begin if NOT dat then ModeloDbo; CoefDesox :=CnefDesox / 86 .4; CoefAerea :=CoefAerea / 86 .4; TEXT01ttrue); repeat CAPTA(DistDesc,'Distancia a Medir DBO-OD tKss)','DistX ----> '1; until (DistDesc >= 0 ); x :=Roundt300 t DistDesc / ESCALAR) + 15; exponl : = -CoefDesOx t DistDesc / VeloCR; if exponl ( -80 then exponl :_ -801 yl : :DboOesc t exp t exponi ) ; circletx ,Roundt 120-120ttyl-LI1/tLS-LI) ) ,3 , 2); } ( expon2 : = -CoefAerea t DistDesc / VelocR; if expon2 ( -80 then expon2 :_ -80; y2 : =CoefDesox t DboDesc / tCoefAerea-CoefDesox) tl exptexponll-exptexpon2)); y2 : : y2 + tConcDxSat-ValInOx) t exp t expon2 ) ; y2:= COncOxSat - y2 ; if y2(0 then y2:=0; circlets ,Round( 120- 120t(y2-L1) /(LS-LI) ) ,3 , 2); textcolor(3); gotoxyt5,2) ;aritet'En X = ' 0 DistDesc :3:3,' Kos') ; gotoxytl,4) ;writet'El DB0 es =',yl :3 :2,' y El 0D es =',y2 :3 :2,' mg/PI; gotoxyt20,6) ;writet'(RET>'); readln; CoefDesox :=CoefDesox $ 86 .4; CoefAerea :=CoefAerea i 86 .4; end; BEGIN VelocR :=-1 ; ESCALAX :=20 ; SYGRA :=true; LI :=O ; dat :=false; LS:=30 ; DboDesc :=- l ; ValInOx :=-1 ; ContDxSat :=-1; CoefDes0x :=-l ; CoefAerea :=-l; text®ode(c40); windou(l,l,40,25); clrscr; repeat graphcolor®ode; if SHGRA then CUADRO else putpic(CUAD8RA,O,140); TEXT02; textcolor(2); gotoxy113,1) ;writet'STREETER Y PHELPS'); TEXTOittrue); textcolor t3); gotoxy110,1) ;writet'A :Correr el Itodelo'); gotoxytl0,2) ;write('B :Calcular DBO y OD en Post))'); gotoxy(10,31 ;writet'C :Escala X Kos'); gotoxyt10,4) ;writet'S :Salir'); repeat gotoxytl3,6) ;writei'Opcion --> '); read(KBD,ch); ch:=upcase(ch) ;writetch); until ch in I'A' . .'C','S']; case ch of 'A' :NodeloDbo; 'B' :CalcPos; 'C' :ESCALAS; end; until ch = 'S'; clrscr; END; ( ? ) ( overlay PROCEDURE TERNICO; ( $I 6RAPH .P) var 6astoR,AnchR,ProfR,DistRelaj,reg : real; 6astoDesc,TespDesc,TespFin$ez,VelocV : real; PROCEDURE LETIX,Y :ItTEGER ;NS6 :LETREROI; begin gotoxy(X,Y); write(ssg1; end; PROCEDURE DESPDATOS; begin NUESTRAt'A',6,3,'R =',6astoR,'s3ls'); NUESTRAI'A' 9 6,4,'T =',TespR,'gC'1; NUESTRA('A',6,5,'B =',AnchR,'s'); NUESTRAI'B',17,16,'DistRelai =' 1 DistRelaj,'Kss'1; NUESTRAt'A',26,3,'R " =',6astoDesc,'s3/s'); RUESTRA('A',26,4 9 'T" =',TespDesc,'gC'1; NUESTRAt'A',26,5,'U =',VelocV,'s/s'); AUESTRA('A',26,6,'To =',TespFinNez,'gC'); textcolor(21; letill,l,'DESCARGAS TERNICAS'); let(17,2,'Datos :'1; end; PROCEDURE CUADRO; begin 6RAF1(true); for i :=0 to 12 do draw(l5,i$12,315,i112,11 ; t for i :=0 to 10 do drawti$30+15,0,i$30+15,132,1) ; TEXT02; gotoxy(35,17) ;write(ESCALAX :3,'Kss'); gotoxy(3,16) ;write(LI :2,' gC'); gotoxy(3,1) ;write(LS :2,' gC'); getpictCUAD6RA,0,0,319,140); end; PROCEDURE 6RAFICA; var xa,xf,dis:integer; ya,yf,delta,expon,FAC :real; begin SUSRA :=false; TEXT02; 6RAFI (false) ; horizontales ( verticales I l xa :=15; ya :=Teopfinl(el ; j :=0; t Linea Teaperatura Reglamentaria dis :=Round!120-1201(TeapR-LI+reg)J(LS-LI)); for i :=1 to 30 do begin draw(15+j,dis, 18+i,dis,2); drawll9+j,dis, 22+j,dis,3); draw{23+j,dis, 25+j,dis,0); j•=j+10; end ; 1 Linea Teaperatura del Rió ) draw115 ,Round!120-120t(TeapR-LI)I(LS-LI)), 315 ,Roundt120-1201(TeapR-LI)/(LS-LI)), 3); draw{138,10,148,10 9 2); drawl138,18,148,18,3); drawl138,26,141,26,2); draw(141,26,145,26,3); TEXT02; let120,2,'Teap .Rio+Descarga'); let(20,3,'Teap .Rio'); let(20,4,'Teop .Reglaa .=T+2 .5'); gotoxy(35,17) ;write(ESCALAX :3,'Kas'); gotoxyt3,16) ;write(LI :2,' gC'); gotoxy(3,1) ;write(LS :2,' gC'); DistDesc := 0 .0 ; delta:=ESCALAX t 0 .01 ; repeat DistDesc := DistDesc + delta; xf :=Round(300 t DistDesc I ESCALAR) + 15; expon :=-DistDesc / DistRelaj; if expon ( -80 then expon := -80; yf :=TeapR + (TeapfinMez - TeapR) t exp t expon ) ; draw(xa ,Round( 120-120tlya-LI)/(LS-LI) ) , xf ,Round( 120-120(yf-LI)/lLS-LI) ) , 2); xa :=xf; ya :=yf; until (DistDesc >= ESCALAR) or (xf >=315); getpic(CUADSRA,0,0,319,140); end; PROCEDURE ESCALAS; var opcion : char; begin textaodetc40) ; clrscr; texttolort2l; lett5,1,'LIMITE MAIM (Distancial :'); textcolort3); lett3,3,'A) 1 Ko'1; let(3,4,'8) 10 Kas'l; let(3,5,'C) 20 Kos'); lett13,3,'D) 30 Ka'1; lett13,4,'E) 50 Kos'); let(13,5,'F) 80 Kas'1; let(25,3,'61 100 Kos'l; let125,4,'H) 200 Kas'l; lett25,5,'l) 300 Kas'l; repeat lett12,1,'Opcion ----> '1; readtKBD,opcion) ;writetopcion); opcion :=upcasetopcion); until (Ipciao in t'A' . .'I']; case opcion of 'A' :ESCALAX :=1; '8' :ESCALAX :=10; 'C' :ESCALAX:=20; 'D' :ESCALAX :=30; 'E' :ESCALAX :=50; 'F' :ESCALAX :=80; '6' :ESCALAX :=100; 'H' :ESCALAX :=200; 'I' :ESCALAX :=300; end; graphcoloroode; if not SVGRA then CUADRO; if dat then begin DESPDATOS; 6RAFICA; TEXT01(f al sel; let(20,7,'1RET]'); readln; end; end; PROCEDURE CalcToDyV; begin TeapfinNez := 1 6astoR t TeapR + 6astoDesc t TeapDesc ) I ( óastoR + 6astoDesc ) ; DistRelaj DistRelaj f VelocR end ; := tóastoR t 864 )/anchR; := DistRelaj / 10 .01 t TeapFinNez + 0 .95 + 10 .62 + 0 .37 t VelocV) t 11 + 0 .87 t exp 10.05 t TeapFinMez) 1 1; := Basta / t AnchR t ProfR l ; ? PROCEDURE DATOS; var mo : char; begin CUADRO; TEXTO!(false); dat :=true; repeat repeat CAPTA(óastoR,'Oasto del rio (e3/segl','R ----> '); until BastoR > 0; MUESTRA('B',9,2 5 'R =',GastoR,'a3/s'); repeat CAPTAtleepR,'Teeperatura del Rio (grad .Centig)','T ----> '); until (TempR > -5) and (TeepR ( 100); MUESTRA('B',9,3,'T =',TespR,'gC'); 6RAF1(false); TEXT011false); repeat CAPTA(AnchR,'Anchura del rio (mts)','B ----> '); until AnchR > 0; MUESTRA('8',9,4,'8 =',AnchR,'a'); repeat CAPTA(SastoDesc,'Basto de la Descarga (e3lseg)','R" ----> '1; until óastoDesc > 0; M(R:STRA('8',26,2,'R" =', GastoDesc,'o31s'); repeat CAPTA(Tempfesc,'Teep . de la Descarga (grad .Centig)','T" ----> '); until (TeepDesc > -273) and (TeopOesc ( 300 ); NUESTRA('B',26,3,'T" =',TeepDesc,'gC'); repeat CAPTA(VelocV,'Velocidad media del Viento lets/seg)','U ----> '); until (VelocV > 0) and (VelocV (= 300); MUESTRA('D',26,4,'Ú" =',VelocV,'e/s'); CalcToDyV; MUESTRA('B',26,5 1 'To=',TeopFinlez,'gC'); MUESTRA('B',22,6 1 'DisRel =',DistRelai,'Kms'l; let(5,3,'Ouieres modificar datos (s/n) '); let(13,5,'----> '); read(KDD,eo); mo :=upcaseteo); let (5, 3,' ' ); let(13,5,' until eo<>'S'; putpic(CUADSRA,0,140); TEXTOI(true); DESPDATOS ; '); if tempR ( tespDesc then begin reg:=2 .5 ; i Temp . Max . Reg l :=Trunc( (TespFinMez+5)/10+1 ) $ 10; LS LI :=Trunc( (TespR-5)); end else begin reg :=-2.5 ; ( Temp . Max . Reg > LS: :Trunc( (TespR+5)110+1 ) t 10; LI :=Trunc( (TempFinMez-5)); end; end ; t Proc Datos l PROCEDURE,ModeloDT; begin TEXTOI(true); DATOS; ORAFICA; TEXT01(false); let(20,7,'(RETI'); readln; end; PROCEDURE TEMP; var x,y : integer; expon,temp : real; begin if NOT dat then DATOS; TEXTOI(true); repeat CAPTA(DistDesc,'Distancia a Medir Temperatura (Kss)','DistX ----> '1; until (DistDesc )= 0 1; x :=Round(300 # DistDesc / ESCALAR) + 15; expon :=-DistDesc / DistRelaj; temp := TespR + (TespFinMez - TempR) t exp(expon); if expon < -80 then expon :_ -80; y :=Round(120-120t(tesp-LI)/(LS-L111; circle(x,y,3,2); gotoxy(3,2) ;write('En X = ',DistDesc :3 :3,' Kos'); gotoxy(3,4) ; ::rite('La Tesp . es = ',tesp :3:2,' grad .Centigrados'); let (20,6,' (RETI' ); readln; end; BEGIN AnchR :=O; SastoR :=O; TespR :=-300 ; ProfR :=0; SastoDesc :=0 ; TespDesc : :-300; VelocV:=-1 ; ESCALAX :=300 ; SUBRA:=true; LS: =30 ; LI : =10; dat : =false; text®odetc40); window(l,1,40,25); clrscr; repeat graphcolor®ode; if SBSRA then CUADRO else putpic(CUADBRA,0,140); TEXTD2; textcolor (2); let(13,1,'DESCARSAS TERNICAS'); TEXTDiltrue); textcolor(3); lett1O,1,'A :Correr el Nodelo'); letllO,2,'B :Calcular Temp . en Pos(X)'); let{10,3,'C :Escala X Kos'); let(10,4 5 'S :Salir'); repeat let(13,6,'Dpcion --> '); read(KBD,ch); ch :=upcaselch) ;writelch); until ch in I'A' . .'C','S']; case ch of 'A' :HodeloDT; 'B' :TENP; 'C' :ESCALAS; end; until ch = 'S'; clrscr; END; ( I ) ( overlay PROCEDURE CONSULTA; coast B30 = ' type lin = string 1801; cocando ,lec,linea,noa,nouT,no;D,linT : lin; var dir t apf,api,linf,RENI,RENF : integer; i,j,k, ch,op,ops, corre : char; r : real; archDat : file of lin; T1 :text; PROCEDURE LET(x,y,color,fondo :integer ; ssg :lin); begin gotoxy(x,y); textcolor(color); textbackground (fondo); write(esg); end; } ( PROCEDURE SCROL; procedure PANTA; begin clrscr; j ' 4); for i :=api to apf do begin `i ;2+1; seek(archDat,il; read(archDat,linT); let(1,j,I1,0,linT); end; end; procedure DESCTEXTOS; var e :integer; procedure NUEVE; begin window(i,RENI,80,RENF) ; C 3, 22} gotoxy(1,1); case corre of 'd' : if (apf ( lief) then begin tl; apf :=apf api :=api+í; delLine; seek(archDat,apf); read(archDat,línT); let(1,RENF-RENI+1,11,0,linT); end; 'u' : if (api > 0) then begin api :api-1; apf :=apf -l; insline; seek(archDat,apil; read(archDat,linT); let(1,1,11,O,linT); end; 'D' : if (apf + (RENF-RENI) (= lief) then begin apf :=apf+(RENF-REND ; api :=api+(RENF-RENI); PANTA; end else begin if apf<>li .f then begin apf :=lief; if (lief-(RENF-RENI)) >= 0 then api :=lief-(RENF-RENI) else api :=0; PANTO; end; end; 'U' : if (api - (RENF-REND >= O) then ( 19 > begin api :=api-(RENF-RENI); apf :=apf-(RENF-RENII; PANTA; end else begin if api<> 0 then begin api :=O; if (lief) > (RENF-RENII then apf :=(RENF-RENII else apf :=lief; PANTA; end; end; 'H' : if apiCO then begin api :0; if (RENF-RENI) ( lief then apf :=RENF-RENI else apf :=lief; PANTO; end; 'E' : if apf<>lisf then begin if (RENF-REND ( lief then api :=lief-(RENF-RENI) else api :=0; apf :=1ief; PARTA; end; end; ( del case } end; begin { DESCTEXTOS } corte :='u'; window(1,23,80,25); let(01,1,4,15,chr(241); let(02,1,6,0,'I 1 linea ]'); let(15,1,4,15,chr(251); let(29,1,4,15,'PgUp'); let(49,1,4,15,'PgDn'); let(16,1,6,0,'I 1 linea 1'1; let(33,1,6,0,'I I Pagina '+chr(24)+' 1'1; let(53,1,6,0,'( 1 Pagina '+chr(25)+' ]'); 1et(69,1,4,15,'ESC'); let(72,1,6,0,'ISalir ]'); let(30,3,4,15,'HoOe'); let(50,3,4,15,'End'1 ; let(34,3,6,0,'(Inicio ]'); lett53,3,6,0,'(Fin 1'1; while corre(}chr(27) do begin . window(1,23,80,25); gotoxy(80,21; read(KBD,corre); if ord(corre)=27 then if keypressed then begin read(KBD,correl; if ord(corre) in (71,72,73,79,80,81] then begin case ord(corre) of 71 : corre :='H' ; ( Hose ] 72 : corre : : 'u' ; ( Flecha arriba } 73 : corre : : 'U' ; ( PgUp } } 79 : corre :='E' ; ( End 80 : corre :='d' ; ( Flecha abajo } } 81 : corre :='D' ; ( PgDn end; nueve ; ( proc para hacer scroles } end; end; end; end ; ( Proc . DESCTEXTOS } begin ( proc SCROL } liof :=FileSize(archDat)-1; api :=0; if lief ( RENF-RENT then apf :=lief else apf :=RENF-RENI; window(1,RENI,80,RERF1; gotoxy(1,1); PANTA; deScTextos; close(archDat); window(1,1,80,24); end ; ------------------------------------------------------------------------- PROCEDURE BIBLIO; begin getdir(3,dir); if (dir = 'C:\sedue\oodelos')or(dir = 'C :\SEDUE\MODELOS') then begin assign(archDat,'C :tARCNIVOS\BIBLIO .DAT'); {SI-1 reset(archDat) ; {SI+) end else begin if (dir{1 K >'C') or (dirlll(>'c') then begin assign(archDat,'B :\ARCHIVOS\BI IO .DAT'); ($I-} reset(archDatl ; {$I+} end; end; if ioresult z 0 then begin clrscr; LET(12,1,4,0,'BIBLIOSRAFIA DE MODELOS DE DISPERSION ATMOSFERICA'1; LET(12,2,14,0,' AIRE Y ASUA'l; SCROL; end else begin LET(1,24,4,0,'El archivo BIBLIO .DAT no existe, favor de verificar . writel1,"6,"61 ; readln; end; (RET>'l; window(1,1,80,24); clrscr; end ; { PROC . BIBLIO } ( > PROCEDURE SUSPEL; begin getdir(3,dir); if (dir = 'C :\sedue\oodelos'lorldir = 'C :\SEDUE\MODELOS') then begin assign(archDat,'C :\ARCHIVOS\SUSPEL .DAT'); {SI-) reset(archDatl ; ($I+} end else begin assign(archDat,'B :\ARCHIYDS\SUSPEL .DAT'); {SI-) reset(archDat) ; (11+} end; if ioresult = 0 then begin clrscr; LET(6,1,4,0,'DATOS SOBRE SUSTANCIAS PELIGROSAS'); '); LET(1,3,9,0,' 9,0,'1 Toxicidad 1 Volatilidad, Presion 1'); LET11,4 1 LET(1,5,9,0,'1 Material Peligroso 1 1ITLV(ppa)1 TLV(mg/m3)1 de vapor a 20 grad .centig.('); gotoxy(l,7); textcolor(11); RENI :=6; RENF :=22; SCROL; end ( del if } else begin LET(1 1 24,4,0,'El archivo B :SUSPEL .PAS no existe, favor de verificar . <RET>'); write("6,"6,1) ; readln; end; end ; ( PROC . SUSPEL } } ( PROCEDURE NIVELES; begin getdir(3,dir); if (dir = 'C :\sedue\modelos'lor(dir = 'C8\SEDUE\NODELOS') then begin assign(arch0at,'C :\ARCHIVOS\NIVELES .DAT'); ($1-} resettarch0at) ; (1I+} end else begin if (dirlilo'C') or (dirE171)'c') then begin assign(archDat,'B:\ARCHIVOSINIVELES .DAT'); ($1-} reset(archDat) ; (fl+l end; end; if ioresult = 0 then begin clrscr; LET(17,1,4,0,'NIVELES MAXIMUS PERMISIBLES DE CONTAMINANTES'); LET11 , 30, 0 1 ,I LET(1,4,9,0,'1 LET(1,5,9,0,'1 Producto Riesgoso 1 Cantidad Minima 1 Cantidad Minima 1 Para Ser Notificada 1 Para ser Nonitoreada textcolor(11); RENT :=6; RENF :=22; SCROL; end else begin LET(1,24,4,0,'El archivo NIVELES .DAT no existe, favor de verificar . <RET>'); readln; write("6,'6,"6) ; end ; ); window(1,1,80,24); clrscr; end; ) ( PROCEDURE ESTANDARES; var nusl,nue2,nus3 : real; NO : char; nus4 : integer; begin ch :='?'; getdir(3,dir); if (dir = 'C :\sedue\sodelos'1or(dir = 'C :\SEDUE\NODELOS') then begin assign(Ti,'C :\ARCHIVOS\SUSTANCI .PAS'); (SI-1 reset(TI) ; (SI+I end else begin assign(T1,'B :\ARCHIVOS\SUSTANCI .PAS'); ($1-) reset(T11 ; (11+I end; if ioresult = 0 then while (not eof(T1)) and (ord(ch1027) do begin clrscr; LET(4,1,4,0,'ESTANDARES DE CALIDAD textcolor(61; readln(T1,nos) ;LET((60-length(nos)) div 2,3,14,0,noel; readln(T1,lec1; LET(1,4,9,0,' LET(1,5,9,0,' : Pais Niligrsls3 1 writeln; writeln; repeat textcolor(11); if lec='Mexico' then begin textcolor(14); lec : ='N'+chr(130)+'xico'; end; write(lecl ;write(copy(830,1,20-length(lecll1; read(Tl,nusl); read(TI,nus21; PPN DEL 1 Tieepo Promedio read(Tl,nue3); write(nuol :8 :3,"1; if nus2(-0 then write(" :141 else write(nus2 :11 :3,' '1; write(nue3 :7 :0 I "); readln(Tl,nue4); case nus4 of 1 :if nue3=1 then writeln('Nora') else writeln('Horas'} ; AIRE'); 1'1; { 2 :if nue3=1 then writelnt'D'+chrt161)+'a') else writelnt'Dias'); 3 :if nue3=1 then writelnl'A'+chrt164)+'o') else writelnl'A'+chr(164)+'os'); dia } ( ano y anos } end; readln(Ti,lec); until (lec='OO') or eof(T1); writeln ;LET11,24,6,0,'(ESC) Salir, (RET) Continuar ') ;readtOD,ch); end { while y el if } else begin LET11,24,4,0,'El Archivo SUSTANCIAS .PAS no existe, favor de verificar . tRET>'); srite("6, 46,"6); readln; end; end; ( } PROCEDURE DESCRIPCIOII; var ops :char; procedure DESCMDDELOSteodelo :char); var noe,arch : lin; begin ( DESCNODELOS } ch•='?'; case nodelo of. 'A' :begin noe :='GAUSSIANO : PUFF' ; arch :='ARPUFF .DAT' ; end; 'D' :begin noe :='6AUSSIANO : ISOCONCENTRACION Y POSICIONtX,Y,11' ;arch :='ARISO .DAT' ; end; 'C' :begin noe:='6AUSSIANO : FUGAS Y DERRAMES' ; arch :='ARFUGA .DAT' ; end; arch :='ARSTREET .DAT'end; 'D' :begin non :='STREETER Y PHELPS : ODO-DO' ; 'E' :begin noa:='I .A.E .A : DESCARGAS TERMICAS' ; arch :='ARTERMO .DAT' end; end; getdirt3,dir); if (dir='C:tsedueloodelos') or tdir : 'C :iSEDUEUMODELOS') then begin assigntarchDat,'C:\ARCHIVOS\'+arch); {4I-} resettarchDat) ; (11+} end else begin assigntarchDat,'8 :1ARCHIVOSI'+arch); {8I-} resettarchDat) ; (11+) end; if ioresult=O then begin clrscr; lett18,1,4,0,'DESCR I PCI ON DEL MODELO :'); lett4O-lengthtnos) div 2 ,2,14,0,noe); SCR; end (if >----> while ) else begin lettl,24,4,0, 46"61+'E1 archivo '+arch+' No se encontro (RET>') ; readin; end; clrscr; end ; ( PROC. DESCNDDELOS > begin ( DESCRIPCION } repeat texteode (c80) ; uindou(l,l,80 0 24); clrscr; LET14,1,4,14,' DESCRIPCION LET(10,35 14,0,' A I R E'); LET(10 5 5,11,0,'A ) 6AUSSIANO : PUFF'); DE MODELOS '); LET(10,6,11,0,'B ) GAUSSIANO : ISOCONCENTRACION Y POSICION (X,Y,I)'); LET(10,1,11 1 0,'C ) GAUSSIANO : FUGAS Y DERRAMES'); LET(10,9,14,0,' A G U A'); LETi10,1l,1l,0,'D ) STREETER Y PHELPS : D80-OD'); LET(10,12,1I,0,'E ) I .A.E .A . : DESCARGAS TERMICAS'); LET(10,11,11,0,'S ) SALIR'); repeat LET(40,22,6,O,'Opcion ----) '); read(KBD,ops) ;ops :=upcase(ups); urite(ops); until ops in I'A' . .'E','S'l; if ops(> '5' then DESCMODELOS(ops); until ops = 'S'; end ; ( proc . DESCRIPCION > ( } BEGIN texteode(c80); repeat clrscr; RENI :=3; RENF :=22; LET(8,3,4,0,' C 0 N S U L T A R '); LET(7,5,11,0,'A : Estandares De Calidad De Aire'); LET(7 0 7,11,0,'B : Niveles N'+chr(16O)+'xiuos De Concentraci'+chr(1b2)+'n Peruisibles'); LET(7,9,11,0,'C : Datos sobre Sustancias Peligrosas'); LETt1 5 13,11,0,'i : Descripci'+chr(162)+'n De Modelos'); LET(7,15,11,0,'2 : Blbliograf'+chr(1b1)+'a'); LET(7,21,11 1 0,'S : Salir'); repeat LET(30,23,6,0,'Opcion ----> '); read(KBD,op) ; op : :upcase(op); write top); until op in tase op of 'A': ESTANDARES; 'B': NIVELES; 'C': SUSPEL; '1': DESCRIPCION; '2': BIBLIO; end; until op='S'; cl nu; END; { ) PRO6iRAM [SI MODELOS; BRAPH .P } COMST PI = 3.141592; BLAMCOIO = ' BLAMC040 = ' TYPE LETRERO = string[40]1 LET40 = string[39I; = string[80]; Lift VAR VelocR,nue,DISTX,EMUMIF,JI,POSY,POSZ,TIEMPO : real; TeepR,DístDesc,VELOC,ALTURA,YMAX,DI,DF,Xy real; Alcon,LIO,ch,CLASE,OP,DIAONOCHE,HUBOSIDAD,RADSOL char; 1,J,K,LS,LI,ESCALA,ESCALAX,ESCALAY : integer; HooCCon,LISTESTAB,let,dir,noe,lec : LETRERO; dat,silecd,leidod,nuevo,SMBRA boolean; CUADBRA : array [1 . .5700] of integer; Tab : array [1 . .2,1 . .40] of real; tsy,tsz : array [1 . .8,1 . .3 I of real; Ti : text; } [ i Procedimientos Globales Para Los Includes PROCEDURE GRAFI(liepia :boolean); begin graphwindowt0,0,319,140); if limpia then filiscreenlO); end; PROCEDURE TEXTO!(limpia :boolean); begin uindowt1,19,40,25); textbackground(3); textcolor(3); gotoxy(1,1); if limpia then for i1=1 to 279 do write("I; gotoxy(1,l); end; PROCEDURE TEXT02; begin windowt1,1,80,19); textcolort3); gotozytl,i); end ; } PROCEDURE NUESTRA(VE :char ;PX,PY :integer ;LETI :LETRERO ;NUH:real ;uni :LETRERO); begin if VE='A' then TEXT01(false) else TEXT02; gotoxy(PX,PY1; write(LETI); or (LET1 = 'Conc=') then uritetNUN :3 :5,uni) if (LET1 = 'CONCE ENTRACION= else if NUN<10 .O then write(NI1M:4 :2,uni); TEXTOItfalse); end; PROCEDURE CAPTA(var valret :real ;letl,let2 :LET401; var dato :LETRERO; err :integer; begin gotoxy(20-length(letl) div 2 , 31; write(letl); repeat gotoxy(15,51; write(let2l; readidato); val(dato,valret,errl; until err = O; gotoxy(1,3) ; vrite(BLANC040); gotoxy(1,51 ; write(BLANC0401; end; PROCEDURE CARSA; begin getdir(3,dir); if (dir = 'C:lsedue1oodelos')or(dir = 'C :ISEDUEINODELOS') then begin assign(Ti,'C :\ARCHIVOSIARCHI .PAS'); (*1-1 reset(T1) ; 01+1 end else begin assign(Ti,'B :IARCHIVDSIARCHI .PAS'); ($I-1 reset(Tl) ; ($I+1 end; if ioresult=0 then begin for il=l to 6 do for j :=1 to 3 do read(TI,tsy(i,jl); for iv-1 to 0 do for j :=1 to 3 do read(TI,tsz(i,jl); close(t11 ; end else begin gotoxy(1,24); textcolor (4); write( ASAr6,'El archivo ARCHI .PAS no existe, favor de salir de MODELOS .'); READLN; end; { proc . carga > end ; { FUNCIONES <SINIAY> Y <SINNAI> Funciones para calcular la sigeaY y la signal en base al sueario: LES MIYENS D'ESTINATIDN DE LA DISPERSION DES POLLUANTS A L'AVAL DES CHEIINEES INDUSTRIELLES <FUNCHI> Obtiene la concentracion Isoconcentrica { } FUNCTION SISNAY(DISTX :real ;CLASE :char) :real; var a,b,c,d :real; coorX :integer; begin { UNIDADES DISTX en (Ka) . > 0 .0 SI6IIAY en tMtsl . ) 0 .0 ). CLASE de t °A' . . > coorX :=ordtCLASEI-ordt'A')+1; a :=tsylcoorX,1]; b:=tsylcoorX,2]; c :=0 .0; ( Para el caso de derrames liquides I Xy en Kms ) if (LID = 'L') then DISTX :=DISTX + Xy; if DISTX > 0 .0 then ( CONVERSION a Mts . ) SIGNAY := (a f exp ( b t In ( DISTX ) + c ) ) $ 1000 else begin writelnt'ERROR (SIGNAY) 'DISTX' negativo o cero'); SISNAY := 0 .0; end; if (LI6 = 'L') then DISTX :=DISTX - Xy; end; FUNCTION SINAI( DISTX : real ; CLASE : char ) : real; var a,b,csreal; coorX :integer; begin C UNIDADES SISNAZ en (Nts) . > 0 .0 DISTX en Ike) . > 0 .0 CLASE de ( °A° . . 'F° ) } coorX:=ord(CLASE)-ord('A')+1; if (DISTX ) 1) and (CLASE ) 'D') then coorX :=coorX+2; a : : tszlcoorX,1I; b := tszlcoorX,21; c : : t5zlcoorX,37; { CONVERSION a Nts . 1 if DISTX ) 0 .0 then SI6NA1 : : I a t exp 1 b t 1n ( DISTX ) ) + c) * 1000 else begin writeln('ERROR (SIMNA1) 'DISTX° negativo o cero'); SISNA1 := 0.0; end; end; FUNCTION FUNCHI(COOR:integer ;ENUNIF,VELOC,ALTURA :real) :real; var fun,uno,dos,sz,sy :real; begin { UNIDADES ENUNIF (0) en (grlseg) o (curies/seg). VELOC (U) en tots/seg). ALTURA IN) en lets) POSY (Y) en lets) POST IX) en lots) I sz :=SI6NAZtDISTX,CLASEI; sy :=SI6NAYtDISTX,CLASEI; if (sz t> 0 .0) and (sy <> 0 .01 then begin POSY :=POSYt1000; .POSZ :=POSZt1000; fan :=ENUNIF /( 2 * P1 t sy * sz $ VELOC uno:=(-0.5 t sgrl POSY I sy )); if uno(-80 then uno := -80; fun :=fun t exp ( uno ) ; uno :=(-0 .5 t sqr( (POS1 - ALTURA) / sz 1); dos :=(-0 .5 $ sqr( (POS1 + ALTURA) I sz I); if uno(- :, then uno :=-80; if dos(-80 then dos :=-80; fan :=fun t t expluno) + exp(dos) ); POSY :4OSY/1000; POSZ :1OSZ/1000; FUNCHI :=fun; end else begin FIRICHI :=99 .9e19; HUESTRAI'A' 1 1,7,'Err ISOCONC=',99 .9e19, " ); end; end; FUNCTION Y : REAL; VAR R,S :REAL; begin JI :=JI/1000 ; { Se convierte a gr/et3 > R :=2 $ In(FUNCHI(I,ENUNIF,VELOC,ALTURA) / JI); if R(0 then R :=0; S :=sgrt( R ); JI : =JIt1000 ; { Se convierte a siligr/et3 > Y := S t SIBNAY(DISTX,CLASE); end; PROCEDURE LET!(X,Y :INTE6ER ;NS6 :LIN); begin gotoxy(X,Y); arite(esg); end; PROCEDURE ESTABILIDAD; var X,Y :integer; CH :char; begin textcolor(2); let!(8,2,'lnforeacion Ateosferica :'); textcolor(3); repeat lett(7,5,'Dia o Noche (din) ----> '); read(KBD,CH); CH:=upcase(CH) ;writetCH); if ord(CH) (> 13 then DIAONOCHE :=CH; until IDIAONOCHE 'D') or iDIAONOCHE 'N') ; let!(l,5,BLANC040); if (DIADNOCHE _ 'N') then begin repeat '4/8 y 7/8' , '3/8' 'l; letl(5,7,' let!{4,6,'Nubosidad 1 A)lta, Baja I ----> '); read(KBD,CH); CH :=upcase(CH) ;write(CHI; if ard(CH) <> 13 then NUBOSIDAD :=CH; until(NUBOSIDAD = 'A') or (NUDOSIDAD = 'B'); let 1(1,6,BLANCO40); end else begin repeat Radiation Solar :'); letl(10,4,' letl(1,7,' <300 N/s2 300y600 >600 N/®2'); letl(1,6,'I L)igera , N)oderada , Fluerte I --> 'l; read(KBD,CH); CH:=upcase(CH) ;write(CH); if ord{ch) (> 13 then RADSOL CH; until (RADSOL = 'F') or (RADSOL = 'N') or (RADSOL = 'L'); let!(1,2,BLANC040); letl{1,4,BLANC040); let!(1,6 5 BLANCO40); let!(1,7,BLANCO40); end; let :="; LISTESTAB:=' AABFFABEFBBCDECCDDDCDDDD'; if VELOC ( 2 then I :=l else if VELOC ( 3 then X :=2 else if VELOC < 5 then X :=3 else if VELOC < 6 then X := 4 else X :=5; if DIAONOCHE 'D' then case RADSOL OF 'F' :Y :=1; 'N' :Y : 2; 'L' :Y :=3; end else case NUBOSIDAD of 'A' : Y:=4; 'B' :Y :=5; end; CLASE :=LISTESTABI(X-1IS5+YI; let :='Estab .'+CLASE; case CLASE of 'A' :let :=let+' Nuy Inestable'; 'B' :let :=let+' Inestable'; 'C' :let :=let+' Lgrste Inestable'; 'D' :let :=let+' Neutro' ; 'E' :let :=let+' Estable'; 'F' :let :=let+' Muy Estable'; end; CIUESTRA(' 8',10, 6, let,0 .0," 1; end; PROCEDURE CUADRO; begin 6RAF1(true); for i :=0 to 10 do draw(15,ií13+5,314,ií13+5,1) ; ( horizontales 3 for i :=0 to 11 do draw(ií30+15,5,ií30+15,135,1) ; ( verticales ? drawt5,69,314,69,1); draw(14,5,14,135,1); circle(15,70,4,2) ; ( FUENTE } fillshape(15',70,2,21; TEXT02; leti(1,11,'Fuente'); leti(40,9,'X'l; gotoxyt39,10) ;write(ESCALA:2); letl(38,11,'K .s'); letl(3,2,'Y'1; gotoxy(2,1) ; write((ESCALAY/2) :1 :1,'Kes'); gotoxy(1,17) ; write((-ESCALAY/21 :1 :1,'Kas'); getpic(CUADSRA,0,0,319,140); nuevo :=false; end; PROCEDURE ESCALAS; var opcion :char; begin nuevo : =true; text®ode(c401; cirscr; textcolor (2); letl(9,3,'LIMITES MAXIMOS (Norizontal) :'1; textcolor(3); leti(1,6,'A) 1 KA'1; letl(1,7,'B) 2 Kos'); letl(1,8,'C) 5 Kos'); 1et1(13,6,'D) 10 Ki'l; letl(13,7,'E) 20 Kos'); letl(13,8,'F1 30 Kas'); letl(26,6,'8) 40 Kos'); letl(26,7,'N) 50 K E '); leti(26,8,'1) 60 Kes'1; repeat letl(13,10,'Opcion ----> '); read(opcion); opcion:=upcase(opcion) ; ( until opcion in I'A' . .'I']; case opcion of 'A' :ESCALA:=1; 'B' :ESCALA :=2; 'C' :ESCALA : 5; 'O' :ESCALA :=10; 'E' :ESCALA:=20; 'F' :ESCALA : =30; '0' :ESCALA :=40; H' :ESCALA :=50; I' :ESCALA :=60; end; textcolor (2); letl0,16,'LIMITES MAXIMOS (Vertical) :'); textcolor(3); letl(1,18,'A1 +0 .5 Kas'); letl(1,19,'B1 +1 .0 Kas'); letlti,24,'C) +2 .5 Kas'); letl(13,18,'D) +5 Kas'); let1(13,19,'E) +7 .5 Kas'l; letl(13,20,'F) +10 Kes'); letl(26,18,'6) +15 Kas'1; letl(26,19,'H) +20 Kas'); letl(2b,20,'I1 +25 Kas'); repeat letl(13,22,'Oprion ----) '); read(opcion); opcion :=upcase(opcionl; until opcion in I'A' . .'I']; case option of 'A' :ESCALAY:=1; 'B' :ESCALAY :=2; ' C' :ESCALAY : =5; 'D' :ESCALAY :=10; 'E' :ESCALAY:=15; 'F' :ESCALAY :=20; '6' :ESCALAY:=30; H' :ESCALAY :=40; I' :ESCALAY:=50; .end; end; PROCEDURE AREAAFEC(UP :char); var sale :boolean; begin YHAX :=0 .0; DISTX :=0 .O ; sale:=false; TEXTOItfalsel ; DI := 0 .0; textcolor(21 ; Ji :=J111000 ; ( Se convierte a gr/at3 ] letl(22,1,'Procesando . . .'); if OP = 'A' then begin repeat DISTX :=DISTX + 0.3 ; until (JI repeat ( FUNCHI(1,ENUNIF,VELOC,ALTURA) ) or ( DISTX > 100 ); DISTX :=DISTX - 0.1; if DISTX > 0 then begin if JI > FUNCHI(I,ENUNIF,VELOC,ALTURA) then sale :=true; end else begin sale := true; DISTX :=0 .0; end; until (sale) or (DISTX ( 0); if DISTX()O then repeat DISTX :=DISTX + 0 .01; until (JI < FUNCHI(1,EHUNIF,VELOC,ALTtRtA)) or ( DISTX > 100); if (DISTX > 0) then DI :=DISTX else begin DI : 0 .O; DISTX :=0 .0; end; textcolor (2); gotoxy(1,7) ;write('Dist .Ini=',DI :3 :3,'Kes'); end ; ( del if OP='A' } if DI ( 100 then begin repeat DISTX :=DISTX + 0 .5; until (JI > FUNCHI(1,ENUNIF,VELOC,ALTURA)) or (DISTX > 100); if DISTX < 100 then begin repeat DISTX :=DISTX - 0 .1; if DISTX ) 0 then begin if JI ( FUNCHI(1,01UNIF,VELOC,ALTURA) then sale :=true; end else begin sale := true; DISTX :=0.0; end; until (sale); repeat DISTX :=DISTX + 0 .01; until end; (JI > FUNCHI(1,0UNIF,VELOC,ALTURA)) or (DISTX > 100); DF :=DISTX; if DF=0 .0 then DF :=1e-9 ; TEXTO!(false); textcolor(2); gotoxy(20,7); if 0P='A' then begin if OF ( 100 then writet'Dist .Fin=',DF :3 :2,' Kas ') else write('Dist . ) a ',DF :3 :2,' Kes'); end else if DF(100 then write{'Distancia=',DF :4 :3,'Kas') else write('Dist . ) a ',DF:3 :2,' K®s'); textcoloril); end { del if DI<100 } else begin gotoxytl,7); write( A6"6,'La Conc: ',(JIt1000) :3 :3,' ag No se Encontro. OF : :0 .0; end; if (OP='B')and(DF>le-4) then NUESTRA t'A',14,5,'Yoax=',4 .3 t SI6NAY(DF,CLASE),' Mts'); t Se convierte a eiligrlet3 } JI :4111000; end ; { Area Afectada } ( { t AREA DE Procedimiento consulta OVERLAY ) } } t Arch .Incluido ) (4I CONSULTAS .PAS) } { t ( ( ( { Modelo--> DESCAR6AS TERNICAS (Arch .Incluidol ill TERNICO .PAS} } } Modelo--) GAUSS : DBO-OD tArch .lncluido) (f2 DBO .PASI } } } Modelo--> GAUSS : PUFF (Arch .Incluido) {3I PUFFI .PAS} ( { } Nucleic—) GAUSS: CURVA DE ISOCONCENTRACION } ($1 ISOCPDS .PAS} { ( } Modelo--) Gauss: FUGAS Y DERRAMES {4i DERRAME .PAS} BEGIN { MODELOS, PROGRAMA PRINCIPAL } hirescolor (0); OP :_ '?' ; DF :=50 ; POSY :=0 .0; } YNAX :=10 ; ESCALA:=10 ; ESCALAY :=10; CARGA ; leidoD :=false; texteode(c40); POSI :=0 .0; nueva :=false; clrscr; textcoloril).; let(15,7,'SEDUE'); let0l,17 1 'DINAMICA HEURISTICA, S .C .'); delay(13); repeat textoodelc80); window(1,1,80,25); clrscr; textcolor (4); letl(16,1,'NODELOS DE DISPERSION'); letl(20,2,'DE CONTAMINANTES'); textcolor (14); letl(18,4,'Aire'); textcolor(11); letl(14,06,'A) GAUSSIANO : letl(14,07,'B) GAUSSIANO : letl(14,08,'C) GAUSSIANO : textcolor(14); letl(1801,'Agua'); textcolor(1i1; letl(14,13,'D) STREETER Y PUFF 'l; CURVA ISOCONCENTRACION Y EN POSICION (X,Y,I)'); FUGAS Y DERRAMES'); PHELPS: DBO Y OD'); letl(14,14,'E) DESCARGAS TERMICAS'); textcolor(14); letl(18,16,'Ayuda'); textcolor(11); letl(14,1B,'ll CONSULTAS'); letlti4,21,'T) TERMINAR'); repeat letl(25,24,'Opcion ----> '); read(KBD,OP) ;erite(OP); OP :=upcase(OP); until OP in t'A' . .'E','T','l'l; graphcoloroode; case OP of 'A' :PUFF; '8' :GAUSS; 'C' :DERRANES; 'D' :DBOP; 'E' :TERNICO; '1' :CONSULTA; end; until 0P-' T' ; clrscr; END. ( } PROAN KSIM; (iI 6RAPR .P} cost max = 15; type let40 = stringt403; let80 = string(8O]; var i,j,k,n : integer; Xp,Yp : integer; xa,xf,nT: real; sumal,suma2,expon,tf,ti :real; alfa,beta : array (1 . .max,l . .max] of real; y,p,ya,yf : array I1 . .max] of real; HomComp : array (l . .maxl of string t5]; CUADERA: array (1 . .5725] of integer; datleidos : Boolean; op: char; T: text; PROCEDURE LETix,y,color :integer ;msg :let40); begin gotoxy(x,y); textcolor(color); write(osg); end; PROCEDURE C TA(var valret :real ;X,Y :integerl; VAR dato:let4O; err :integer; begin repeat gotoxy(X,Y); read (dato); val(dato,valret,errl; if err(}0 then urite(^6"6,' until (err = Ol; end ; ( Capta } PROCEDURE ñODELO; var sumal,suma2,delta,ti,tf,expon :real; Xag,Xfg,Yag,Yfg :integer; caad:boolean; procedure VenTex; begin window(1,19,40,25); gotoxy(1,11; for I :=1 to 279 do write(' '1; end; procedure CALCULOS ; begin for i :=1 to n do begin sueal :=0; suea2 : 0; for j :=1 to n do begin sum! := su®al + tabs(alfaii,jl) - alfaEi,j]) 1 suea2 := suea2 + tabsialfa(i,jl) + alfati,jl) t ytjl; end; sumal : = 1 + 0 .5 1 tf $ sueal; suea2 := 1 + 0 .5 1 tf 1 suma2; sumai / suea2; expon : =pti] 1 ln(ytil) ; if expon < -80 then expon :=-80; yfti] :=expt expon ); end; end; procedure DESPtIDRBRES; var Xg,Yg,Colorl,Color2 :integer; begin for is=l to n do begin graphwindowt4,145,310,1991; Xg :=(1i-1) mod 3) 1 103 ; Yg :=11i-1) div 3) 1 8 + 10 ; if i (4 then drawlXg + 10,Yg,Xg + 20,Yg, i) else begin case i of 4,5 :begin colorl :=i-3; color2:=i-2; end; 6:begin Colorl :=3; CoI or2:=1; end; 7,8,9 :begin Colorl :=i-6; Color2 :=0; end; end ; ( case ) drawlXg + 10 0 'g s Xg + 15,Yg, Colorí); drawlXg + 15,Yg 0 Xg + 20,Yg, Color2); end ; ( del if ) window(1,20,40,25); lett( 1i-1) mod 3) 1 13 + 4, ((i-1) write1nomcoepti1 :5) ; div 3) + Is 3,"); end ; { For } readin; end ; { DespNoobres } procedure 6RAFICA; Var Color l,Color2 :integer; begin for i :=1 to n do begin Xág:=Round(290txa/nT) +10; Xfg :=Round(290txflnT) +10; Yag :=Round(120-120 t yali]); Yfg :=Round(120-120 $ yf[i]); ifi(4then draw(Xag,Yag,Xfg,Yfg, i) else case i of 4,5 :begin Colorí :=i-3; Color2 :=i-2; end; 6 :begin Colorí :=3; Color2 :=1; end; 7,8,9 :begin Colorí :=i-6; Color2 :=0; end; end ; { Case } draw(Xaq,Yag,Round(1458(xa+xf)/nT)+10,Round(120-60 t dyali]+yf{i])),Color)); draw(Round(1451(xa+xf)/nT)+10,Round(120-60 t (ya{i]+yf(i])),Xfg,Yfg,Color2); yafi] :=yf{i7; end; xa :=xf; end ; t 6rafica } procedure OPCIONES; var opO :char; begin VenTex; repeat let(10,1,3,'Opciones'); let(5,3,3,'a) Calcular valores en t=X if cuad then let(5,4,3,'b) Poner Cuadricula else let(5,4,3,'b) guitar Cuadricula let{5,5,3,'c) Nuoero de Periodos'); let(5,6,3,'s) Salir'); repeat let(7,7,3,'Opcion ---> '); read(kbd,op0) ; op0 :=upcaselop0); urite(ap0); until op0 in ['A' . .'C','5'l; case op0 of 'A' :begin Ventex; let(10,4,3,'Para X = '1; Xp :=uhereX; Yp :=whereY; repeat write("6); captaltf,Xp,Yp); let(Xp,Yp,3,' until (tf)=0) and (tf(=nT); ') 9 let(10,4,3,' graphwindow(10,11,310,131); { ') : graphwindow(10,11,310,131); draw(Round(2901tflnT)+10, 0, Round(290ttf/nT)+10, 120,2); CALCUL05; window(1,18,40,25); let(12,1 5 2,'Para = '); write(tf :2 :1); textcolor(3); for is=1 to n do begin gotoxp(( (i-1) nod 3) t 13 + 1, ((i-11 div 3) + 3); write(noncoop[i1 :5); write('= ',Yf[i1 :1 :3); end; readin; putpic(CUADSRA,0,120); let(12,1,2,' 'l; VenTex; cuad :=true; end; '8' :begin graphwindow(10,11,310,131); if cuad then begin for i :=1 to trunc(nTl do draw(Round(290ti/nT)+10, 0, Round(290$i/nT)+10, 120,1); for i :=0 to 10 do draw(10,it12,320,i*12,1); end else putpic(CUADSRA,0,120); cuad :=not cuad; end; 'C' :begin Ventex; let(10,4,3,'Uuoero de Periodos = '); Xp :=where:; Yp :=whereY; repeat write("6); capta(nT,Xp,Yp); let(Xp,Yp,3,' until (nT>=4); let(10,4,3,' graphwindow(10,11,310,131); fillscreen(0); draw(10,0,10,310,2); for i :=O to 10 do draw(l,it12,12,it12,2); xa : =0; tf :=0; ti :=4; for i :=1 to n do ya(il :=y(il; delta : : nT t 0 .05; repeat tf := tf + delta; CALCULDS; xf := tf; 6RAFICA; until tf > nT; getpic(CUADSRA,0,0,310,131); DESPNDNDRES; Ventex; cuad :=true; end; end; { case > until op0='S'; end ; ( opciones ) begin ( Nadel :: 3 cuad :=true; clrscr; let(4,1,6,'Wueero De Periodos --> 'I; Xp :=wherel; Yp :=ahereY; repeat capta(nT,Xp,Yp); until nT > 0; graphcoloreode; draw(9, 10,311, 10,3); draw(9, 132,311,132,3); draw(9, 10, 9,132,3); draw(311,10,311,132,3); window(1, 1,40,25) ; let{1 1 1,2,'aax'); letl1,2,2,'1'1; iet(I,18,2,'®in'); let(1,17,2,'0'); let(14,1,2,'K S I N'1; let(34,18 9 2 1 'Tieapo'1; graphwindow(10,11,310,131); draw(10,0,10,310 5 21; for i :=0 to 10 do draw(7,it12,12,iE12,2); tf :=0; ti : 41; for i :=1 to n do yatil :=ytil; delta := nT t 0 .05; repeat tf := tf + delta; CALCULUS; xf := tf; SRAFICA; until tf > nT; getpic(CUADSRA,0 1 0,310,131); DESPHOS; OPCIONES; end ; ( Hodelo ) PROCEDURE LEEARCH; var noaarch :stringt401; procedure DATOS; begin ( Datos textaode(c801; window(1,1,80,241; clrscr; let(2,2,4,'Orden de la readln(T,n ); textcolor(11); write(o); writeln; writeln; for i :=1 to n do ) Matriz --> '1; begin readln(T,noecoaptil); textcolor(14) ; write(i :3,' '1; textcolor(11) ; writeln(noacoaptill; end; let(1,24,4, A6A G+'tRET>'); readin; clrscr; let(5,3,4,'Captura de la 1{atriz de textcolor(11); writeln ; writeln ; Trabajo'); for i :=1 to n do begin us-Rein; for j :=1 to n do begin { Captura la Natrix } read(T,alfatisil); write(' ',alfati,jl :2 :2); end; end; let(1,24,4,"S"S+'(RET)'); readln; clrscr; let(6,3,4,'Captura de los valores de impacto para cada competidor'); writeln ; writeln; for i :=1 to n do begin read(T,y(i1); textcolor(14); write(' X[',i,'l = ') s textcolor(11); writeln(ytil :l :3); writeln; end; let(1,24,4,"6"6+'<RET>'); readln; { DATOS } end ; begin t Leearch } clrscr; let(4,7,6,'Noebre del Archivo '); let14,9,14,'--> 'l; read(noearch); assign(T,nowarch+' .pas'); {5I-} reset {T) ; ($I+} if ioresult=0 then begin DATOS; datleidos:=true; end else begin let11,24,4,"6"8"6+'El archivo '+nooarch+' .pas No existe (RET>'); readln; end; end; PROCEDURE LEETEC; var dato:let40; err,Xg,Yg :integer; begin datleidos :=true; clrscr; repeat gotoxy(25,3) ;write(' ') D gotoxy(2,3); writet'Orden de la Matriz --> '); read(dato); val(dato,n,err); until (err = 0) and (n > O) and ( n <= eax ); textsode(c80); window(1 1 1,80,25); clrscr; writeln('Moabre de los coapetidores :'); ariteln; for i :=1 ton do begin write(i :2,' ' ); readln(noecoapli]); end; clrscr; gotoxy(5 1 3) ;writelnt'Captura de la Matriz de Trabajo'); for i :=1 to n do t Captura la Matriz } begin ariteln; for j :=1 to n do begin '1; CAPTAtalfali,jl,wherex,wherey); end; end; clrscr; gotoxyt6,3); write('Captura de los valores de iapacto para cada coapetidor'); writeln; writeln; for i :=1 to n do begin write(' X(',i,'l = '); Xg :=whereX ; Yg : whereY; repeat capta(yti],Xg,Yg); until (yli] > 0) and (y[i] < 1); yatil :=y1il; wri tel n; end; end ; ( LEETEC } PROCEDURE MUESTRA; begin textaode(c80); window(1,1,80,25); clrscr; let(2,2,4,'Orden de la Matriz --> '); textcolor(il); writelntn); writeln ; textcolor(4); writelnt'Nombre de los Competidores'); writeln; for i :=1 to n do begin textcolortl4) ; write(i :3s' '); textcolor(l1) ; writeln(noacoep[i]); end; let(1,24,45 "6A 6+'<RET>'); readln; clrscr; let(5,3,4,'Natriz de Trabajo'); textcolor(]1); writeln ; writeln; for i :=1 to n do begin t Captura la Matriz > writeln; for j :=1 to n do write(' ',alfa[i,j] :2 :2); end; lett1,24,4,"6"6+'<RET>'); readln; clrscr; lett6,3,4,'Valores de inpatto de cada competidor'); writeln ; writeln; for i :=1 to n do begin textcolor(14); write(' R ,i,'] _ '1; textcolor(11); writeln(y[i]tI :3); writeln; end; let(l,24,4,^6"6+'(RET>'1; readln; end; PROCEDURE PRESENTACION; begin repeat textaode (c80) ; clrscr; xa :=0; window(1,1,80,25); textbackground(7); let(11,2,4 1 ' K S I N '); textbackground(0); let(O7,5,11,'A) CAPTURAR DATOS DE ARCHIVO'); let(07,7,11,'B1 CAPTURAR DATOS INTERACTIVO'); let(070,11,'C) DESPLEGAR DATOS'); let(07,11,11,'D) CORRER MODELA') ; LETt07,14,11,'S) SALIR'); repeat LET0,17,6,'Opcion ----> '); readlKBD,op); op :=upcasetop); uritelop); until op in t'A' . .'D','S'l; case op of 'A' :LEEARCN; 'B' :LEETEC; 'C' :if datleidos then MUESTRA else begin lettl,24,4, A8 6+'Datos Inexistentes . . <RET)'I; readln; let(1,24,0,' end; 'D' :if datleidos then MODELO else begin lett1,24,4,"6"6+'Datos Inexistentes . . (RET)'); readln; let (1,24,0,' end; end; until op='S'; end ; { Presentation ) BEGIN datleidos :=false; hirescolor(0); graphcoloreode; PRESENTACION; textoodetcRO); windoull,100,24); clrscr; END . ANEXO 3. PROGRAMAS FUENTE MODULO DE APOYO DECISIONAL procedure scuadro(x1,y1,x2,y2 :integer) ; ( CUADRO SENCILLO } var i,j :integer; begin ( 179 barra vertical 196 barra horizontal 218 esquina superior izquierda 191 esquina superior derecha 192 esquina inferior izquierda 217 esquina inferior derecha } gotoxy(yl,x1) ;writeíchr(218)); gotoxy(y202) ;write(chr(217)); gotoxy(yl,x2) ;srite(chr(192)); gotoxy(y2,x1) ;write(chr(191)); for i :=1 to y2-yl-1 do begin gotoxy(yl+i,xl) ; write(chr(196)) ; end; for i :=1 to y2-yl-1 do begin gotoxy(y1+i,x2) ; writetchr(196)) ; end; for i :=1 to x2-xl-1 do begin gotoxy(yl,xl+i) ; write(chr(1791) ; end; for is=1 to x2-xl-1 do begin gotoxy(y2,x1+i) ; writedchr(179)) ; end; end; procedure dcuadro(xl,yl,x2,y2 :integer) ; t CUADRO DOBLE } var i,j :integer; begin t 186 barra vertical 205 barra horizontal 201 esquina superior izquierda 187 esquina superior derecha 200 esquina inferior izquierda 138 esquina inferior derecha gotoxy{y1, ;1) ;write(chr(201)); gotoxyty2,x2l ;write(chr(1 gatoxy(yi,x2) ;write(chr(200)); gotoxyty2,xl) ;write(chr(187)1; far is=1 to y2-yi-1 do begin gotoxy(y1+i,x1l ; writetchr(2051) ; end; for i :=1 to y2-y1-1 do begin gotoxy(yi+i,x2) ; writetchr(205)) ; end; for is=! to x2-xi-1 do begin gotoxy(y101+i) ; urite(chr(186)) ; end; for i :=1 to x2-xl-1 do begin gotoxy(y2,x1+i) ; write(chr(186D) ; end; end; procedure s2hcuadro(x1,yl0203,y3:integer) ; (2 CUADROS HORIZONTALES } var i :integer; begin t 195 CONECTOR IZQUIERDO 180 CONECTOR DERECHO } scuadro(xi,yI,x3,y3); gotoxytyl,x2) ;write(chr(195)); gotoxyty3,x2) ;wite(chr(I80)) ; for il=l to y3-yl-1 do begin gotoxy(yl+i,x2) ;write(chr(196)) ; end; end; procedure d2hcuadrotxl,yl,x2,%3,y3 :integer) ; { 2 CUADROS HORIZONTALES I var i :integer; begin t 204 COHECTOR IZQUIERDO 181 CONECTOR DERECHO I dcuadro(xl,y1,x3,y3); gotoxy(y1,x2) ;writetchr(204)l; gotoxy(y3,x2) ;write1chr(185)); for i :=1 to y3-yl-1 do begin gotoxy(yl+i,x2) ;write(chr(205)) ; end; end; procedure d2vcuadro(xl,yl,y2,x3,y3:integer) ; { 2 CUADROS HORIZONTALES > var i :integer; begin t 203 CONECTOR SUPERIOR 202 CONECTOR INFERIOR > dcuadro(xl,yl,x3,y3); gotoxy(y2,x1) ;write(chr(203)); gotoxy(y2,x3) ;write(chr(202)); for i :=1 to x3-xl-1 do begin gotoxy(y2,i+xi) ;write(chrí1861) ; end; end; procedure fespeciall; begin d2hcuadrotl,10,24,8O); dcoadro(5,41,24,80); dcuadro(3,63,5,80); gotoxy(41,24) ;urite(chr(202)); gotoxy(41,5 ) ;urite(chr(203)); gotoxy(80,5 ) ;write(chr(185)); gotoxy(80,3 ) ;write(chr(185)); gotoxy(63,5 ) ;writetchrt202)); end; (t COLORES PARA LA PANTALLA Y TEXTOS t) procedure color_texto(colorl,color2 :pintura); (t color! es el color del texto t) (t color2 es el color del fondo del texto t) begin if color! t> no then textcolorlord(color1)); if color2 4> no then 1t SI ES 'no' NO PINTA SU FONDO t) textbackgroundlord(color2)); end ; procedure color_f textodcolor :pintura ; taoiinteger); var i :integer; begin textbackground(ord(color)); for is l to tan do write(' '1; end; procedure color_pantallatcolor :pintura); begin textbackground(ord(color)); clrscr; end; function letra(var status :char) :char; var chl,ch2 :char; begin read(KBD,chl); if ord(chl)=27 then begin if keypressed then (t SI FUE TECLA QUE DEVUELVE DOS VALORES ENTONCES t) begin (t 'KEYFRESSED' ES VERDADERO t) read(KBD,ch2); if orddch2l in [72,75 9 77,80] then begin case ord(ch2) of 72: status :='u' ; ( flecha arriba [ESCI[72] ] 75 : status :='l' ; ( flecha izquierda [E5C][75] ] 77: status :='r' ; ( flecha derecha [ESC]I771 ] 80 : status :='d' ; ( flecha abajo (ESC][80] ) end ; (case) Ietra :=chr(13); end else status :='t' ; (t ERROR t) end; end else ( CUALQUIER OTRA LETRA } begin letra : =chl; status : = "; end; end; procedure bell; begin urite(chr(7)); end; procedure val entero(var vint :integer ; y,x,num esp,ini,fin :integer; coll,col2:pintura); It t val entero(var,y,x,espacio,inicio de rango, fin de rango); t 'vint' allí se regresa el valor de la variable t 'nu®esp' nunero oaxiao de espacios para leer t) var i,j,code:integer; ch :char; cadena :string(255); ceros,error :boo)ean; begin error :=false; repeat i :=0; if col l Ono then texttolor(ord(coll)); if col20no then textbactground(ord(col2)); gotoxy(y,x); for j :=1 to nue_esp do write(' '); if error then vint :=O; error :=false; str(vint :num_esp,cadena); cadena :=copy(cadena,l,nu®esp); 5otoxy(y,x) ;write(cadena); while (ch () chr(13)) and (i3=O) do begin i :=i+1; if i3num esp then i : =nuk esp+l; repeat gotoxy(y+i -1,x) ;ch :=letra(status) ; (t . read(((BD,ch) ; t) until status()'t' ; it NO ACEPTA FLECHAS 8UE HO SEAN U,D,R,L t) if (i=1) and (ord(ch)<313) then cadena := " ; it REINICIA STRING SI NO FUE FLECHA t) if tiC=nu®esp) then write(ch) ; it para no seguir escribiendo hasta 'HET' t) if ch = chr(8) then begin cadena :=copy(cadena,l,length(cadena)-1); i :=i-2; if i CO then i :=0; gotoxy(y+i,x) ;write(' ") ;gotoxyly+i,x); end else if (ch0chr(13)) and (i (=num_esp) then cadena :=cadena +ch; end ; it while t) if cadena :" then code: :-1 else begin zeros :=false ; j :=1; while not ceros do begin if copy(cadena,j,1) " then begin delete(cadena, j,1) ;insert('O',cadena,j); end else ceros :=true; j :=j+1; end; val(cadena,vint,code); end; if (code <> 0) or not(dvint)=ini) and (vint(=fin)) then begin bell; gotoxy(y,x); read(KBD,ch); error true; end; until (code = 0) and (vint>=ini) and (vínt<=fin); end; procedure val real(var vint :real ;y,x,nua esp :integer ;ini,fin :real; coll,col2:pintura); (S ! val rael(var,y,x,espacio,inicio de rango, fin de rango); # `vint' allí se regresa el valor de la variable # `nue esp' nunero maxima de espacios para leer t) var i,j,code :integer; ch :char; cadena :stringl255l; ceros, error :boolean; begin error :=false; repeat i :=0; if col l Ono then textcolortordtcoli)); if col20no then textbackground(ord(col2)); gotoxy(y,x); for j :=1 to nué esp do write("); if error then vint :=0; error :=false; str(vint :nuo esp :2,cadena); cadena :=copy(cadena,d,nue esp); gotoxy(y,x) ;arite(cadena); chile (ch <} chr(13)) and (i>=0) do begin is =i+1; if i>nue esp then i :=nun_esp+1 ; repeat gotoxy(y+i -1,x) ;ch :=letra(status) ; (read(KBD,cb) ;) until status< 't' ; ( SOLAIENTE ACEPTAR U,D,R,L ? if (i=1) and (ord(ch)<>13) then cadena :_ "; if (i(=num esp) then write(ch) ; (t para no seguir escribiendo hasta 'RET' t) if ch = chr(8) then begin cadena;=copytcadena,1,1ength(cadena)-1); i :=i-2; if i <O then i :=0; gotoxy(y+i,x) ;write(' ') ;gotoxy(y+i,x); end else if (ch(>chr(13)) and (i<=nu®esp) then cadena :=cadena+ch; end ; (t while t) if cadena=" then code :=-1 else begin ceros:=false ; j ;=1; while not ceros do begin if copy(cadena,j,1) = ' ' then begin delete(cadena, j,l) ;insert('0',cadena,j); end else ceros :=true; j : = j+1; end; val( cadena,vint,code); end; if (code <> 0) or not((vint>=ini) and (vint(=fin)) then begin bell; gotoxy (y, x); read(KBD,ch); error :=true; end; until (code = O) and (vint>=ini) and (vint(=fin); end; procedure val_string(var cadena :string255 ; y,x,num_esp ;integer; col l,col2 :pintura); (t t val string(var,y,x,espacio); t `cadena' alli se regresa el valor de la variable t `nun esp' numero maniac, de espacios para leer 1) var i,j,code :integer; ch:char; begin i :=0; if coll<>no then textcolor(ord(coll)); if colt<)no then textbackgroundtord(col2)); gotoxy(y,x); for i :=1 to nua esp do write"); cadena :=" ; ) cadena : =copy(cadena,1,nua_esp); < gotoxy(y,x) ;write(cadena); while (ch <> chr(13)) and (i ») do begin i :=i+1; if i>nue_esp then i :=nub esp+l; repeat gotoxyty+i -1,x) ;ch :=letra(status) ; (t read(KBD,chl ; t) until status()'!' ; (t NO ACEPTA FLECHAS BUE NO SEAN U,D,R,L t) if ti=l) and tord(ch1013) then cadena :=" ; (t REINICIA STRING SI NO FUE ALGUNA FLECHA t) if (i (=nua_esp) then write(ch) ; (t para no seguir escribiendo hasta 'RET' E) if ch = chrt8) then begin cadena :=ropy(cedena,l,length(cadena)-11; i•=i-2 if i <0 then i :=0; gotoxy(y+i,x) ;write("I ;gotoxy(y+i,xl; end else if (ch0chr(13}) and (i<=nu® esp) then cadena : =cadena+ch; end ; (â while #) end; procedure Baja_tex(cadena :string255;y,x,tae :integer ;coli,col2 :pintura); var isinteger; begin if colt<>no then textcolortord(coll)); if toll<>no then textbackground(ord(col2)); gotoxy(y,x) ;write(cadena); for i :=1 to too-length(cadenal do write("1; end ; p!acedure baja_ent(entero,y,x,tao :integer ;coli,col2 :pintura); var i :integer; begin if cola >no then textcolor(ord(coll)); if coll<>no then textbackgroundtordtcol2D); gotoxy(y,xl ;eritetentero :tan); end; procedure baja_realtnu®real :real ;y,x,taol,taa2 :integer ;coli,col2 :pintura); var i :integer; begin if colt >no then textcolor(ord(coll)); if collOno then textbackgroundtordtcol2)i; gotoxyty,x) ;write(nua real :tael :ta®2); end ; program electre_ll const NAX ALT = 15 ; ( NAXINO NUMERO DE ALTERNATIVAS U OBJETIVOS ) NAX PV = 15 ; t MARINO NUMERO DE PUNTOS DE VISTA I NAX PV2 = 225; { CUADRADO DEL MAXIMO DE PV } MAX VECR = 3375 ; t (N x N x N) TANANO NAXIMO DE 'vet R' ) MAX_CAL ' = 10; TAN NOMALT = 35 ; { TAN . DEL STRING DE LAS TAN_NON_CAL : 10; ALTERNATIVAS y P .V. } type pintura = (neJro,azul, verde ,cyan,rojo,aagenta,cafe,gris claro, gris_oscuro,azul claro,verdeclaro,cyan claro,rojo_claro, nagenta_claro,aoarillo,blanco,no); string255 = stringt2551 ; ( PARA LECTURA DE VARIABLES STRING ) var noá arch : stringt15l ; { PARA LEER EL-ARCHIVO LO USA ' assign ' } i, j, k, aux :integer; nun _alt : integer ; { NUMERO DE ALTERNATIVAS U OBJETIVOS } nua_pv :irteger ; ( NUMERO DE PUNTOS DE VISTA O ATRIBUTOS } n nua_alt : integer ; t NUEVO NUN . DE ALTERMAT . DESPUES DE REDUCIR CICLOS } sig, recorre : integer; encontrado, hay_circuito : Boolean; ai9 nodo, long ciclo, inic ciclo : integer; tih : char; peso_tot : real ; { ALMACENA EL PESO TOTAL PARA LA MATRIZ DE CONCORDANCIA } max _rang : real ; ( NAXINO RANGO ENTRE TODAS LAS ESCALAS } s : integer ; 6 INDICE DE FUERZA } p : real ; 6 ORADO DE ACUERDO NECESARIO PARA DECLARAR HUE 'I' ES PREFERIDO A 'J' ) puayor,peenor,paedie :real; s : real ; { ? } gaayor,quenor,gaedia :real; no;nit :arrayti . .NAXALTI of stringiSO] ; { NOMBRES DE LAS ALTERNATIVAS } noa_pv:arrayll . .NAX )Vl of stringl80l ; I NOMBRE DE LOS PUNTOS DE VISTA I peso_pv :arrayll . .NAXPVI of real ; t PESO DE LOS PUNTOS DE VISTA } puntos escala calif :arraytl . .NAX PV] of integer ; C NUMERO DE PUNTOS EN ESA ESCALA } noo califdor escala :arrayll . .NAXPV,I . .NAX_CALI of string[TAN_NON_CALI; { HOMBRE DEL CALIFIC . DE ESA ESCALA ] escal ne9eax :arrayll . .eax_pv] of real ; ( GUARDAR VAL . MAX . PARA DESINVERT,IR LA EIATRIZ 3 noo_califdor escala :arraytl . .MAXPVI of string[TAN_tlOMCAL] ; 3 val califdorescala :arraytl . .NAXPV3 of real ;] ( VALOR DEL CALIFIC . DE ESA ESCALA 3 valcalifdor escala :arraytl . .NAX PV,1 . .MAX CALI of real ; ( VALOR DEL CALIFIC . DE ESA ESCALA 3 moo__califdor_actual :arraytl . .NAY PV] of string(TAN_NON_CALI; ( CALIFICADOR LEIDO EN ESE NONENTO 3 val calif :arrayii . .NAX_ALT,I . .NAX_PV] of real ; ( VALORES DE CALIFICACIONES 3 cc : array["., .MAXALT, 1 . .NAXALT] of real ; ( MATRIZ DE CONCORDANCIA 3 dc : arraytl . .NAX_ALT, 1 . .MAXALTI of real ; t NATRII DE DISCORDANCIA 3 rango : array(l . .NAX )V] of real ; í RANGO DE LA ESCALA DEL PTO . DE VISTA 3 grafica : array[i . .NAX ALT,I . .MAX ALT] of integer; siguiente : array[1 . .NAX ALT] of integer; marcado : arrayEl . .NAX_ALT] of integer; trayectoria : arraytl . .NAX_ALT] of integer; verdirR : array I1 . .MAX PV21 of integer; vec R : array E1 . .MAX_VECR] of real; reg_ciclos : arraytl . .MAx ALT] of record nom :stringl5]; inic : integer; fin : integer; end; stack_ciclos : arrayll . .NAX_ALT] of stringlBO]; n noo á1t : arraytl . .MAXALT] of string[BO3; nuevo_identif, nue_stac stl : string[80]; ciclos : integer; escalneg : arrayii . .NAX_PV] of char ; ( PARA PUNTOS DE VISTA INVERSOS 3 vauxgl : integer ; ( VAR . AUX . GLOBAL 1 PARA IMPRIMIR EL NUCLEO ER PANT. 3 hay datos : boolean; ( SI ES VERDADERA, PUEDE GRABAR UN ARCHIVO 3 hubo_ejecucion : boolean ; ( CHECA SI YA EJECUTO AL MENOS UNA VEZ 3 hobo oodifeatriz : boolean ; ( CHECA SI SE CAMBIO LA MATRIZ DE VALORES 3 canbio_de_polaridad : boolean ; ( SI CANBIA LA POLARIDAD DE CUALQUIER ALTERN . 3 arch_lec :text; status:char ; ( VAR. GLOBAL PARA STATUS EH LA LECTURA 3 flecha:integer ; ( INDICADOR DE RENSLON EN LA LECTURA I prie vez_iepr matr : boolean; ($I RUT BRAL .PAS3 ( RUTINAS AUXILIARES I procedure invierte_estala ; forward; procedure ppeso_tot ; forward; procedure concordancia ; forward; procedure discordancia; forward; procedure desinvierte_escala ; forward ; procedure ventana_®atriz(inic,fin :integer); var i,j :integer; procedure escribe_e]eeento(i,j :integer); var k : integer; found : boolean; begin if puntos_escala calif[j] > 0 then begin if val calif[i,jJ = -1 then begin color texto(blanco,cyan); write(' '); end else begin k :=l ; found :=false; while (k(=puntos_escala_califIi]) and (not found) do begin if val calif[i,j) = val califdorescala[j,k] then found :=true; k k+l; end; if found then begin color texto(negro,cyan); write (nos_califdor escala[j,k-1]1; end else write ('ERROR'); end ; (else val calif) end (if puntos) else begin if val calif(i,j] _ -1 then color„texto(blanco,cyan) else color texto(negro,cyan); write (val_calif[i,i] :10 :2); end; end; begin color texto(blanco,azul); for j :=inic to fin do begin gotoxy(16+(j-inic)$11,6); writeij :2); end; color_texto(blanco,cyan); for i :=l to nu®alt do ( ESPACIOS COLOR CYAR ) for j :=inic to fin do begin gotoxy(O+(j-inic)iil,6+i) ; write(' '); end; for i :=l to nuo alt do for j :=inic to fin do begin gotoxy(8+(j-inic)#11,6+i); escribe_eleeento(i,j); end; end; ( ___=========================== === ===== °= ) procedure lectura_interact; var str_aux : stringl2551; i, j, k, flecha, flecha2, wax, val nay ,npe : integer; abase,ybase,xfactor,yfactor,xflecha,yflecha,xftope,yftope,y,x,ysub :integer; stl :stringf2551; found : hoolean; ( ) procedure lee_alternativas; begin hirescoloriard(gris_claro)); color_pantalla(gris_claro); color texto(negro,no); d2hcuadro(1,1,5,24,80); color texto(gris claro,negro); gotoxy(26,3) ;write(' A L TERNA T I V A S '); color texto(negro,gris clara); gotoxy(5,6) ; write ('NIINERO DE ALTERNATIVAS : '); color texto(cyan claro,azul); nuo_alt :=0; val entero(num alt,30,6,5,2,NA1 ALT,cyan_claro,azul) ; I NIN. 2 ALTERNAT . ] baja_ent(oua_alt,30,6,5 3 negro,gris_claro); for i :=1 to nua_ait do begin gotoxy(5,7+i); write('ALTERNATIVA : '); end; for i :=l to nus alt do no®altli] :="; flecha := 1; repeat str_aux :=copy(noe alt[flechal,1,TAN N0N ALT); val string(str aux,23,7+flecha,TAN N0N_ALT,cyan claro,azu)); baja_tex(str aun;,23,7+flecha,TAN_N0N_ALT,negro,gris claro); noo altlflecha] :=copy(str aux,1,TAN NON_ALT); if {flecha(>)) and (flecha< nuo_a1t) then begin if status in I'u','l'l then flecha :=flecha-1; if status in end else tegin then flecha :=flecha+l; if flecha=l then begin if status in then flecha := flecha+l; end else if flecha=nue alt then if status in then flecha :=flecha-1 else if status=' ' then flecha :=flecha+) ; (status="(ret)) end; until flecha = nue a1t +i; for jr :) to nun_alt do ( ASREGARLE 0- A LOS NONBRES DE ALTERNATIVAS ) begin str(i :2 5 str aux); str_aux := str_aux + '-' + no®alt[il; no&_alt(il := str_aux; end; ( BORRAR DATOS ANTERIORES color_texto(no,gris claro); '); gotoxy(26,3) ; g rite(' gotoxy(5,6) ; *rite (' '1; for i :=1 to nu®_alt do begin gotoxy(5,7 +i); write(' ' ); write(' '); end; end ; (PROCEDURE ALTERNATIVAS) ( ) procedure lee_puntos de vista; begin " ( PUNTOS DE VISTA ) tt color_pantalla(grisclaro); color texto(negro,no); d2hcuadro(1,1,5,24,80); I) color texto(gris claro,negro); gotoxy(22 5 3) ;write(' P U N T 0 S D E V I S T A '); colortexto(negro,grisclaro); gotoxy(5,7) ; write('NUNERO DE PUNTOS DE VISTA : num_pv := 0; val entero(nue_pv,33,7,5,l,NAX PV,cyan claro,azul) ; ( Nlll 1 P .V . ) baja_ent(nuo_pv,33,7 5 5,negro,gris -claro); color texto(negro,cyan); gotoxy(7,9) ; *rite(' PUNTO DE VISTA'); gotoxyt7,11) ;*rite(' NONBRE : '); gotoxy(7,)2) ;*rite(' PESO : '); gotoxyt7,l3) ; :srite(' POLARIDAD DEL PUNTO DE VISTA (+/-) : '); gotoxy(7,14) ;write(' VALOR NAXINO EN LA ESCALA : '); gotoxy(7,15) ;*rite(' NUN . DE CALIFICADORES EN LA ESCALA : '); for i :=l to num_pv do begin noe_pv[il := " ; peso_pvti] : =0 .00; escal neg[il : = "; rango[i1 :=0; pnntos_escala_calif[i1 :=0; end; for i :=1 to begin nu®_pv do colortextolblanco,azull; gotoxy(23,9) ;urite(i :2); (8 LINPIA LOCALIDADES A ESCRIBIR 11 gotoxy( 17 , 11 ) ;color_f_textolgris_claro,40); gotoxy( 15,12) ;color_f_textolgrisclaro,6); gotoxy .145,13) ;color_f texto(gris clarosl); gotoxy(36,14) ;color_f texto(gris claro,B); gotoxy(45,15) ;color_f texto(grisclaro,31; flecha :=1; repeat case flecha of 1 :begin str_aux :=copy(noo_pv[i],I,TAN_NON_ALT); vaI string(str aux,17,11,TAN NOM ALT,blanco,azul); baja_tex(str_aux,17,11,TANNON ALT,negro,gris_claro); noo_pv[i] :=copy(str aux,1,TAMNOMALT); ( NOMBRE DEL PUNTO DE VISTA } if status in then flecba : =flecha +l; end; 2 :begin val real(peso_pv[i1, 15,12,6,0, 100,blanco,azul); baja_reai(peso_pvli],15,12,6,2,negro,gris_clarol; ( PESO DEL PUNTO DE VISTA } if status in t'd','r',' '] then flecha :=flecha+l; if status in then flecha :=flecha-1; end; 3 : begin str aux := " ;escal negtil :='+'l str_aux :=str_aux + escal negtil; repeat val_ string(str_aux,45,13,1,blanco,azul); if str_aux s " then str aux : = "; escalneg[il :=copy(str_aux,1,1); if not (escalneg[i] in t'-','+']) then bell; until escal negtil in ['-','+'l; baja _tex(str_aux,45,13,1,negro,gris claro); if status in ['d','r',"I then flecha :=flecha+l; if status in L'u','l'] then flecha :=flecha-1; end; 4 : begin val_ real( rango [i1,36,14,6,0,995999 .0,blanco,azul); baja_real(rangoti],36,14,6,2,negro,gris_clarol; ( VALOR MAXIMO DELA CALIF DEL PUNTO DE VISTA } if status in then flecha :=flecha+l; if status in t'u','l'l then flecha :=flecha-1; end; 5 : begin valenterotpuntos_escala_calif[il,45,15,2,0,TA NOD_CAL,blanco,azull; baja enttpuntos_escala calif[i7,45,i5,2,negro,gris_clarol; { DE CALIFICADORES EN LA ESCALA DEL P.V . } NUMERO if status in ['u','1'} then flecha : :flecha-1; if status in t" l then flecha :=flecha+l; if status = " then begin if pantos_es a)a calif[i] } 0 then begin { CALIFICADORES } color_textotnegro,cyan) ;gotoxyt7,171 ;write(' CALIFICADORES '); color textotnegro,grisclarc); max : : 4; for j :=1 to puntos escala_calif[i] do { INICIALIZACION } begin noá califdor escala[i,jl :=" ; valcalifdor escalati,j] :=0; end; j :=1; npe := puntas_escala_calif[i] ; {VA A NOD1F .} while j (= puntos escala_calif[i] do begin flecha2 :=1; if npet=flax then begin k :=1; while k{=npe do begin gotoxy(8,17+k) ;writetj+k-1 :2 1 ' NOMBRE gotoxy(40,17+k1 ;writei'VALOR '); : '); k := k+1; end; val may k-1; end else begin for k :=l to max do begin gotoxyt8,17+k) ;writetj+k-1 :2,' NOMBRE : '); gotoxyt40,17+k) ;writet'VALOR : '1; end; npe := npe-max; val _may := max; end; repeat str aux : :copytnon_califdor escala[i,flecha2+j-1], 1 5 TAM_NOt_CAL.1; val stringistr_aux,23,17+flecha2,TAM_NOM CAL,blanco,azul); baja tex(str_aux,23,17+flecha2,TAM NOA CAL,negro,gris_claro); nom califdor escala[i,flecha2+j-11 :=copytstr aux,l,TAM NON_CAL1; val realtvalcalifdor escala[i,flecha2+j-[],48,17+flecha2,6, 0,rangotil,blanco,axul); baja_realtvalcalifdor escalali,flecha2+j-1],48,17+flecha2, 6,2,negro,gris_claro); if (flecha201) and (flecha2(>val nay) then begin if status in then flecha2 :=flecha2-1; if status in I'd','r',") then flecha2 :=flecha2+1; end else begin if flecha2=1 then begin if status in flecha2 := flecha2+l; end then else if flecha2 val_nay then if status in then flecha2 :=flecha2-1 else if status= " then flecha2 : :flecha2+1 ; «ret>) end; until flecha2 = val may+i; j := jinn; gotoxy(7,17) ;write(' for k :=1 to nax do begin gotoxy(8,17+k) ;write(' write(' end; end ; (while j) '); ') ; ( 60 espacios ) end ; (if puntos) end; end ; (5) end ; (case) until flecha=6; end; {for i) end ; (PROCEDURE LEE)UNTüS DE VISTA) ( . ) procedure lee_calificaciones; var sl :string(l4]; pi : integer; ch : char; matrix 11ena : Boolean; nceldash, inic, fin : integer; begin fax il=l to nun alt do ( IMICIALIZACION DE MATRIZ ) for j :=l to nue_pv do val calif{i,j] :=-l; clrscr ; sh e ALTERNATIVAS '; ( LETREROS } d2hcuadro(1,10,24,80); color_texto(gris_claro,negro); gotoxy(25,2) ;write(' MATRIZ DE CALIFICACIONES 'I; gotoxy(300) ;write(' PUNTOS DE VISTA '); for i :=l to 14 do begin gotoxyi2,4+i) ;write(sl(i],") ;end ; color textoiblanco,azul); for i :=1 to nue alt do begin gotoxyt5,&+i) ; write(i :2) ; end; nceldash := 6; inic := 1; if eu®_pv > nceldash then fin := inic + nceldash - 1 else fin := nuo_pv; ventana_oatriz (inic,fin) ; t MUESTRA PRIMERA PANTALLA } xbase:=6 ; ybase := 8; xfactor :=1 ; yfactor :=11; xflecha :=1 ; yflecha :=1; xftope:=nu® alt ; yftope:=nuD_pv; color texto(azul,gris_claro); for i :=1 to NAX PV do nod califdoractual[il :="; repeat ( HASTA QUE LA MATRIZ ESTE LLENA (> -fl ) repeat npe :=puntos escala_calif[yflechal ; (PUNTOS DE VISTA) if fin - inic + 1 = nceldash then y :=ybase + (yflecha-inic) t yfactor else y :=ybase + (yflecha-1) t yfactor; x :=xbase + xflecha $ xfactor; ( HOMBRE DE LA ALTERNATIVA y PUNT() DE VISTA ABAJO } color textotno,azul); gotoxy(1,25); write(' gotoxy(40,25); write(' '); color texto(amarillo,azul); gotoxy(1,251 ;write(noa_alt[xflecha)); gotoxy(40,25) ;urite(nom_pv[yflechal); if npe>0 then ( LEER STRING } begin for i :=1 to npe do ( LETRERO DE CALIFICADORES ) begin ( ABAJO ) if i (= 7 then baia_tex(nom califdor escala[yflecha,il,3+(i-1)#11,22, TAN_MOM_CA1,blanco,®agenta) else baja texinoocalifdor_escala[yflecha,il,3+(i-7-1)#11,23, TAN NON_CAL,blanco,magenta) end; repeat ( STRING ) i :=1; while (val califdor escalatyflecha,il(>val calif[xflecha,yflechall and (i(npe ( NAX_PV) 1 do i :=i+1 ; if i=npe+1 {MAIM) then stis= :: else stl :=copytnots_califdor escalatyflecha,i],1,TAM_1101t_CAL); val stringtstl,y,x,TAM M0R_CAL,blanco,azul); baja_textstl,y,x,TAl4NONCA1,negro,cyan) ; {negro,gris_claro} no®califdor actual(xflecha] :=copytst1 l,TAR_ROM_CAL); found : =false; for i :=1 to npe do if non_califdoractual(xflecha] = nom califdorescala(yflecha,il then begin found :=true; ysub : =i; end; if not found then bell; until found; val_ aliftxflecha,yflecha] := val califdor escala(yflecha,ysub]; end else begin { REAL ) color textotblanco,e:agenta); gotoxyt3,22); writet' 0 : ',rangolyflecha] :5 :2,' '); val realtval califfxflecha,yflecha],y,x,TAR MOM_CAL,O,rango(yflecha], blanco,azul); baja_realtvat calif(xflecha,yflecha],y,x,TAMNOM_CAL,2, negro,cyan) ; tnegro,gris_claro) end; if status='r' then begin if yflecha < nun_pv then begin yflecha := yflecha + 1; if yflecha = fin + 1 then begin inic := inic + 1; fin := fin + 1; yflecha := fin; ventana_eatriztinic,fin); end; end; end; if status='l' then begin if yflecha } I then begin yflecha := yflecha - 1; if yflecha = inic - 1 then begin inic := inic - 1; fin := fin - t RIGHT ) t LEFT ) yflecha := inic; ventana aatrix(inic,fin); end; end; end; if status='d' then if xflecha t xftope then xflecha := xflecha + 1; if status='u' then if xflecha > 1 then xflecha := xflecha - 1; 6OTOXY(3,24) ;NRITE('STATUS = ',STATUS,',)(FLECHA=',XFLECHA,'YFLECHA=', YFLECHA,' VAL CALIFI',xflecha,',',yflecha,']=', val calif(XFLECHA,YFLECHAI); color texto(no,gris_claro) ; (LIMPIA LETREROS FONDO (CALIFICADORES)} gotoxy(3,22); write(' '); write(' '); gotoxy(3,23); write(' '); '); write(' until (status") and (xflecha=xftope) and (yflecha=yftope); matriz _llena true ; ( CHECA MATRIZ DUE ESTE LLENA ) for i :=1 to nun_alt do for j :=1 to nuo_pv do if val calif(i,j] _ -1 then matriz llena := false; if not matriz llena then bell; until matriz I1ena; end ; (PROCEDURE LEE_CALIFICACIONESI ( } procedure lee_p_q_s; begin clrscr; dcuadro(â,1,24,90); flecha :=1; p :=1 .000 ;q :=O,010 ;s :=i; dcuadro(5,5,7,17); dcuadro(9,5,1107); dcuadro(13,5,15,17); color texto(blanco,aagenta); gotoxy(6,6) ; write(' P = ',p :5 :3,''); gotoxy16,10) ;write(' O = gotoxy(6,14) ;write(' S = ',s ;5,"); color texto(azul claro,gris_claro); gotoxy(20,5) ; write('6RADO DE ACUERDO NECESARIO PARA ESTABLECER DUE LA'); gotoxy(20,6) ; write('ALTERNATIVA Eí] ES PREFERIDA A LA ALTERNATIVA (j]'1; gotoxy(20,9) ; write('GRADO DE ACUERDO NECESARIO PARA ESTABLECER OUE LA' ► ; gotoxy(20,101 ;write('ALTERNATIVA ti] NO ES PREFERIDA A LA ALTERNATIVA Iil'); gotoxy(20,11) ;write('CONTRA EL S-ESIHD OPONENTE HAS FUERTE'); gotoxy(20,13) ;write('S-ESIHD OPONENTE HAS FUERTE A COMPARAR PARA °a"); repeat case flecha of 1 :begin val real(p,11,6,6,0,1,blanco,azul); baja _real(p,11,6,6,3,cyan,oagenta); if status in ('d','r',"] then flecha :=flecha+l; end; 2 :begin valreal(q,11,10,6,0,1,blanco,azul); baja real(q,11,10,6,3,cyan,eagental; if status in ('d','r',' ') then flecha :=flecha+l; if status in ('u','l'l then flecha :=flecha-1; end; 3 :begin val entero (s,11,14,6,0,l,blanco,azul); baja_ent(s,11,14,6,cyan,eagenta); if status in ('u','1'} then flecha :=flecha-I; if status in ("I then flecha :=flecha+l; end; end ; tcase} until flecha=4; end (LEE_P_ S} } begin (LECTURA) pria_vez_iapr_oatr := true; { lee_alternativas; PROCEDIMIENTOS INTERNOS } lee_puntos_de_vista; lee_calificaciones; 1ee_p_q_s; hay_datos := true; end; procedure lee_de_arch ; var ok :boolean; option :char; str_aux :string255; (1 LEE DE ARCHIVO 1) function la_entero(var e :integerl : boolean; begin ($1-) readln(arch_lec,e); if ioresult = 0 then ia_entero := true else la_entero := false; (S1+) end ; function la_real(var r :real) : boolean; begin (3I-1 readln(arch_lec,r); if ioresult = 0 then la_real := true else la_real := false; {3I+} end; procedure mensaje ; - var ch :char; begin gotoxy(3 0 23); color texto(eagenta,cyan); write(' ERROR, DATOS EH ARCHIVO HO CORRESPONDEN, HO PUEDE LEERSE '); read(KBD,ch); end; begin hay_datos := false; repeat color texto(blanco,azul); textcolor(ord(gris claro)) ; } clrscr; dcuadro(1,1,24,80); ootoxy(10,5) ; write ('HOMBRE DEL ARCHIVO :'l; str aux :="; valctring(str_aux,31,5,8,aoarillo,verde); nom_arch :=copy(str_aux,l,length(str aux)); nom_arch :=noe_arch+' .ELE'; assign(arch_iec,noe_arch); 01-I ; ( ELIHIHA I/O CHECKING } reset (arch_lec); (3I+}; ok :_ (ioresult = 0); if not ok then begin gotoxy(3,23); color texto(eagenta,cyan); write ('ERROR : ARCHIVO °',noe_arch,'° HO ENCONTRADO'); read(KDD,opcion); gotoxy(3,23); write (' gotoxy(3,23); (C)ONTINUAR, (R)EGRESAR --->'); read(KDD,opcion); write ('DESEA if upcase(opcion) _ 'R' then exit ; { SALIR } end; until ok; { HUH. DE ALTERNATIVAS } not ilaentero(nua_altl) then begin oensaje ; exit end; for is l to nu®alt do readln(arch_lec,nom_alttil) ; t STRINGS SE LEEN NORMAL } i; t NUN. DE PLINTOS DE VISTA } if not (laenterotnue_pv)) then begin mensaje ; exit end; for i :=l to nue_pv do begin readln(arch_lec,noo_pvti]) ; { NOMBRE DEL PUNTO DE VISTA } t PESO DEL PUNTO DE VISTA } if not (lareal(peso_pvtill) then begin aensaje ; exit end; readln(arch_lec,escal negtill ; t ES EL PUNTO DE VISTA NEB .-/+ } ( VALOR MAXIMO DEL P .V . } if not ila_realirangoli])) then begin aensaje ; exit end; t NUN . DE CALIFIC . EN LA ESCALA } if not (la_entero(puntos_escala_calif(i])) then begin nensaje ;exit ;end; if puntos_escala_califtil > 0 then for j :=1 to puntos escala_califIi] do { NOMBRE DEL CALIFICADOR } begin ( Y SU VALOR } readln(arch_lec,nom_califdor escalati,j]); if not O a real(val califdor escalati,jlll then begin aensaje ; exit end; end; ( MATRIX DE CALIFICACIONES } for i :l to nud alt do for j :=1 to nua_pv do readln(arch_lec,val califti,jl); {P,9,S} readlntarch_lec,p); readln(arch lec,q); readlntarch lec,$); close larch hay datos lec); := true; end; (=============================== == ================================== procedure grabacion; label SALTO; var ch,opcion :char; ok :boolean; arch_esc :text; noe_arch :stringl15]; str aux :string255; begin repeat } color texto(blanco,azul); clrscr; dcuadro(1,1,24,80); gotoxy(10,5); write ('NOMBRE DEL ARCHIVO :'); str aux :="; val_string(str_aux,31,5,8,aearillo,verde); noa_arch :=copy(str aux,l,length(str aux)); noa_arch : =noa_arch+' .ELE'; assign(archesc,nc.arch); ($1-> ; ( ELIMINA I/O CHECKING > reset (arch esc); 1I0; ok :_ (ioresult = 0); if ok then begin gotoxy(3,23); color texto(aagenta,cyan); write('ERROR : ARCHIVO " ,noa_arch, " YA EXISTE, PRESIONAR (RET>'l; read(KBD,ch); gotoxy(3,23); write(' '); gotoxy(3,23); write('DESEA SOBREESCRIBIR EL ARCHIVO (SIN) --->'); read(KBD,ch); write(ch); if upcase(ch) = 'S' then goto SALTO; gotoxy(3,23); write (' '); gotoxy(3,23); write ('DESEA (C)OUTINUAR, (R)EGRESAR --->'); readln(opcion); if (option = 'R') or (option = 'r') then exit; end; until not ok; SALTO: rewrite(arcfi esc) ; ( ARCHIVO A ESCRIBIR NO EXISTENTE > writeln(arch esc,nua_alt); for i :=1 to nu®alt do writeln(arch esc,noa_altlil); writeln(arch esc,nua_pv); for i :=1 to nus_pv do begin writeln(arch esc,noa_pv(il) ; ( NOMBRE DEL PUNTO DE VISTA ) writeln(arch esc,peso_pv[il) ; ( PESO DEL PUNTO DE VISTA > writeln(arch_esc,escal neglil) ; (ES EL PUNTO DE VISTA NEB . ) writeln(arch esc,rangolil) ; ( VALOR MAXIMO DEL P.V . > writeln(arch_esc,puntos_escala_califfil) ; ( NUM . DE CALIF . EN LA ESCALA > if puntosescala_calif[il > 0 then for j :=1 to puntos escala_califtil do begin writeln(arch esc,noe califdor escalati,j]); writeln{arch_esc,val_califdor escalali,j]); { NOMBRE DEL CALIFICADOR Y SU VALOR, EN CASO DE end; QUE HAYA ) end; for i :=1 to nu®alt do for j :=1 to nuo_pv do uriteln(arch esc,val califti,jl); writeln(arch esc,p); writeln(arch esc,q); writeln(arch esc,$); close (arch_eec); end; ) { procedure codification; var ch,cht,ch2,opcion :char ; sl :stringtl5l; i,na,np :integer; begin hubo oodif catriz := false ; (t TODAVIA NO SE MODIFICA LA HATRII DE VAL . t) repeat textbackground{ord(negro)); textcolorlord(grisclaro)); clrscr; d2hcuadro(1,1,5,24,80); texxtbackgroundCord( gris_claro)) ;textcolortordtnegro)); gotoxy(23,3) ;write(' M 0 D I F 1 C A C I 0 N E S '); textbackground(ord(negro)) ; textcolor(ord{grisclaro)); gotoxy(30,10) ;write('1) ALTERNATIVAS'); gotoxy(30,11) ;write('2) PUNTOS DE VISTA'); gotoxy(30,12) ;write('3) CALIFICACIONES'); gotoxy(30,13) ;writei'4) VALORES DE P, 0, S'); gotoxy(3O,14) ;write('5) SALIR'); repeat uotoxy(3R,181 ;write{'OPCION ---)') ; read(KBD,chi); if chi in t'l' . .'S'I then write(chi) else bell; until (chi in ('1' . .'5']); case chl of '1' : begin clrscr; repeat textcolor(ord(eagenta_claro)); s2hcuadro(1,1,3,24,801; gotoxy(29,2) ;write('A L T E R g A T I Y A S'1; gotoxy(8,4) ; write('NUMERO DE ALTERNATIVAS : '); textcolor(ord(cagenta)) ;w-ite(nu® alt); for i :=1 to nus_alt do begin textcolor(ord(oagentaclaro)) ;gotoxy(4,5+il ;write(i :2,' : '1 ; textcoloriardioagenta)) ;write(noe_altUil); end; textcolor(ord(aearillo)); gotoxy(3,23) ;writet'DESEA MODIFICAR ALGUNA ALTERNATIVA --4'1; read(KBD,ch); if tch='S') or (ch='s') then begin gotoxy13,23) ;write(' gotoxy(3,23) ;write('NUNERD DE ALTERNATIVA --->') ;readlnlna); gotoxy18,5+na) ;writei' '1; gotoxy(0,5+na) ;readin(not aluna)); end; until t ch<>'S') and (ch<>'s'); end; '2' : begin { PUNT05 DE VISTA > repeat clrscr; textcolor(ord(oagenta_claro)); s2hcuadro(I,1,3,24,80); gotoxy125,2) ;writet'P U N T 0 S D E V 1 S T A'); gotoxy(8,4) ; write('NUNERO DE PUNTOS DE VISTA : '); textcolor(ord(oagenta)) ;writelnuu_pv); for i :=1 to num_pv do begin textcolor(ord(sagenta claro)) ;gotoxyt4,5+i) ;writeti :2,' : '); textcolor(ord(magenta)) ;write1noe_pv(i1); end; textcolor(ord(aoarillo)); gotoxy(3,23) ;write(' '1; gotoxy(3,23) ;writet'DESEA MODIFICAR ALBUN PUNTO DE VISTA --->'); readIKBD,ch); if (ch='S') or (ch='s') then begin gotoxy(3,23) ;write(' '); gotoxy(3,23) ;write('NUMERO DE PUNTO DE VISTA --->') ;readln(np); if np <= nus pv then begin clrscr; textcolor(ord(cyanclaro)); s2hcuadro(1,1,5,24,80); a2hcuadrot1,1,22,24,80); textcolcr(ord(magenta)); gotoxy(32,3) ; write('PUNTOS DE VISTA'); gotoxy13,71 ; textcolor(ord(sagenta)) ; write(')) NOMBRE : '); textcolor(ord(eagenta_claro)) ;write(noe_pvinpl); gotoxy(3,9) ; textcolor(ord(aagental) ; urite('2) PESO : '); textcolor(ord(®agenta_claro)) ;writetpeso_pvtnp) :5 :2); gotoxy(3,11 : ;teftcolor(crd(sagenta)) ; write('3) POLARIDAD : '); textco1cr(3rd(aagenta_claro)) ;write(escal_negdnpl); gotoxy0,131 ;textcolorlerdfusgenta)) ; write('4) VALOR MAXIMO : '); textcolor(ardtsagenta_claro)) ;write(rangotnp) :8:2); goto7y(3,15) ;textco)or(ordtsagenta)); write('5) NUMERO DE PUNTOS EN ESCALA DE CALIF . : '); testcolor(ord(®agenta_claro)) ;write(punto5 escala_califtnp1 :21 ; textcolor(ord(acarillo)3; gotoxy(3,23) ;write(' ') D gotoxy(3,23) ;write('DESEA MODIFICAR AL6UN DATO ---)'l; read{KBD,ch); if (ch='s') or (ch='S') then begin gotoxy(3,23) ;write(' gotoxyt3,23) ;write('PUNTO A MODIFICAR ---)'1; read{KBD,ch2); case ch2 of ')' : begin gotoxy{15,71 ;write(' ') i gotoxy(15,7) ;readlnlnon_pv(npl); end; '2' : begin goto;:y(13,9) ;write(' '1; gotoxy(13,9) ;readln(peso_pvinp]); end; '3' : begin gotoxy(18,1l) ;write(' '); gotoxy(18,11) ;readlnlescal neglnp]); end; '4' : begin gotoxy(21,13) ;writet' gotoxy(21,13) ;readln(rangolnp]); end; begin gotoxy148,15) ;writet' '1; gotoxy(48,15) ;readln(puntos escala calif[npl); end; end ; ($case*) end; end; end; until { ch()'S') and (chO's'l; end; (1 if puntos_escala califli] ) 0 then for j :=1 to puntosescala_califti] do begin writeln(' ',noe califdor escalali,j]); writeln(" t val_califdor escalali,j]); )IDMBRE DEL CALIFICADOR Y SU VALOR, EN CASO DE ODE HAYA } end; 1) '3' : begin t CALIFICACIONES ) sl : : 'ALTERNATIVAS'; repeat clrscr; textcolorlordlaoarilloll; s2hcuadrol1,1,3,24,80); gotoxyI20,210ritel'MATRIZ DE CALIFICACIONES'); gotoxy(32,4) ;write('PUNTOS DE VISTA'); for i :=1 to 12 do begin gotoxy(3,4+i) ;write{s1lil) ; end; for i : :1 to nue_alt do begin if i(=10 then' gut)Nyl5,4+it2) else gotoxy{S,502) ; write( : : :); End; for hz I to nuw_pv do be,in if i<=10 then gotoxy(i$7,5) else gotoxytit7+4gá1; write(i :2); end; textcolor(ord(azul clar3)); for i :=1 to nu g alt do for j :=1 to nua_pv do begin if i <= 10 then gotoxy(j$7,4+02) else gotoxy(j17+4,5+i$2); write(val calif[i,j] :5 :2); end; aotoxyt3,23) ;write('DESEA NODIFICAR AL6UN VALOR -4'1; read(KBD,chl; if (ch='S') or (ch='s') then begin gotoxy(3,23) ;write(' gotoxy13,231 ; write('NUM . ALTERNATIVA --->'l ;readln(na); gotoxy(27,231 ;write('NUM . DE PUNTO DE VISTA --->'); readln(np); for is=1 to 2 do begin if np <= 10 then gotoxy(npt7,4+nat2l else gotoxy(npt7+4,4+nat2); if i=1 then write (' '1 else readln(val calif(na,npl); hubo_eodif .atriz := true; end; end; until ( ch<>'S') and (ch(>'s'); end; '4' : begin if not hubo_ejecucion or hubo wodif eatriz then begin (t inicializa valores de peax, pain, . . t) invierte escala ; ( INVIERTE LOS VALORES EN CASO DE QUE LA ESCALA SEA NEB . ) caabio_de_pclaridad :=false ; ( PARA DUE NO VUELVA A INVERTIR > ppeso_tet ; ( OBTENER EL PESO TOTAL ) concordancia ; ( OBTENER LA MATRII DE CONCORDANCIA CC Cl peax rang ; YA NO SE USA, QUITARLA POSTERIORMENTE t) disccrdancia ; ( OBTENER LA MATRIZ DE DISCORDANCIA D ii I desinvierte_escala; end; textbackgroundtordtazul)) ; clrscr ; textcolortord(blanco)); dcuadro(1,1,24,80) ; textcolor(ord(aagenta_claro)); gotoxy(44,5); write('P MAI = ',peayor :5 :3,' O MAI = ',gaayor :5 :31 ; gotoxy(44,b); write('P NIN = ',peenor :5 :3,' gotoxy(44,7); 0 HIN = ',gaenor :5 :31; write('P NED = ',psedia :5 :3,' O NED = ',gsedia :5:3); d2vcuadro(3 1 42,60 5 9,78); textcolor(ord(blanco)); dcuadro(4,8,l2,321; gotoxy(10,5) ; write('() VALOR DE P : ',p :5 :3); gotoxy(10,7) ; write('2) VALOR DE 0 : ',8 :5 :31; gotoiy(10,9) ; writet'31 VALOR DE S : ',sl; gotoxy(10,11) ;write('4) REGRESAR'); repeat repeat gotoxy(25,14) ;write('OPCION --->') ;read(KBD,opcion); if option in t'l' . .'4'] then writelopcion) else bell; until option in I'1' . .'4'1; case option of 'I' : begin val reallp,26,5,5,0,l,azul,gris_claro); baja real(p,26,5,5,3,blanco,azulclarol; end; '2': begin val real(q,26,7,5,0,l,azul,gris_claro); baja _real(q,26,7,5,3,blanco,azul claro); end; '3': begin Eral_entero(s,26,9,I, 1,5,azul,gris_clarol; baja_ ent(s,26,9,1,blenco,azu1_claro); end; end ; Ucaset); until (opcion='4'1; end ; U case de eodif ID end ; Ucase!) It pendiente 41 until (ch1 = '5'1; U for i :=1 to nu®_alt do tegin for j :=1 to nua_pv do begin if puntos_escala califlj]=0 then begin writeln(arch_esc,val califli,j]); nom califdor actuallj] := "; end else begin writeln(arch_esc,nom_califdor_actual[jll; end; if ne®califdor actcallj]<>" then repeat 1 :=1 ; encontradod=false; while ( I in <= puntos_escala califtj]) and (not encostrado)) do begin writeln ('<1=',1,'>') ; } if noe_califdor escala[j,l]=nos califdar actualtj] begin val califli,jl := val_califdor escalatj,l]; writeln ('nuevo valor = ',valcalifti,ji) ;] then encontrado := true; end; 1 := 1+1; end ; (while) if not encontrado then begin writeln ('ERROR'); exit ; } end; until encontrado; write (val calif[i,j1 :6 :2) ;} < end; writeln ;) end, writeln(arch esc,p); writeln(arch esc,q}; writeln(arch_esc,$); t) end; ) ( procedure invierte_escala ; ( INVIERTE LOS VALORES CORRESPONDIENTES AL P .V. DUE SEA '-' ; 0 SEA CUE ENTRE NAYOR SEA EL NUN. PEOR ES LA CONSIDERACION ) var sax : real; i,j :integer; begin for i :=1 to nun_pv do if (escal negi]='-') then be g in max :- -100; for j :=1 to nu®alt tin if val califtj,i] > sax then sax := valcalif[j,i]; escal neg naxti] := sax; for j :=1 to nuo_alt do valcaliftj,i] := sax - val califtj,i]; end; end; procedure desinvierte_escala; var i 9 j :integer ; begin for i :=1 to nuo_pv do if {escalnegtil -') then for j :=l to nue_alt do valc aliftj,i] := escal neg_maxtil - val califtj,il; end; procedure ppeso_tot ; { CALCULA PESO TOTAL } begin peso_tot := 0; for i :=l to nua_pv do peso_tot := peso_tot + peso_pvti]; if peso_tot = 0 then peso_tot := 1; { writeln{'PESO TOTAL =',peso_tot :6 :2) ;} end; procedure concordancia ; { CALCULA LA MATRIZ DE CONCORDANCIA } var sus_c :real ; paux :real; begin paayor :=0;paenor :=100;paedia :=0;paux :=0; for i :=1 to nus_alt do { COMPARA LAS ALTERNATIVAS i, j ENTRE ELLAS MISMAS } begin for { k LAS VARIA POR CADA PUNTO DE VISTA } j :=1 to nug alt do begin if then ccti,j] : : 1 else begin sua_c F. 0; for k : : l to nue_pv do begin if val califti,kl = val califtj,kl then { SUMA 1/2 PESO } sus_c : : sua_c + 0 .5 t peso_pvtk] else if val califti,kl } val califlj,k] then { SUMA PESO COMPLETO } sus_c := sum + peso_pvtkl; end ; {k} ccti,jl := sua_c / peso_tot ; { ELEMENTO DE LA MATRII DE CONCORDANCIA } if ccti,jl } 'mayor then psayor :=ccti,j]; if ccli,ji { psenor then psenor :=ccli,j]; paux : :paux+cc{i,j]; end ; {else} end ; in end ; {i } ptedia := paint / {num alt t nua_pvl; end; U 1VJ SIRVE POROUE NO SE PUEDEN REVOLVER PERAS CON MANZANAS procedure peak rang ; { DETERMINAR EL RAN60 MAXIMO ENTRE TODAS LAS ESCALAS } begin sax rang := -20000; for i :=1 to nus_pv do if rango[il > max_ rang then sax rang := rangolil; if oats rang = 0 then sax rang :=1; { witeln(LST,'RANGD MAXIMO = ',sax rangl ;} end; tl procedure discordancia ; ( OBTENER LA NATRII DE DISCORDANCIA } var ptrvecR, kk :integer; vec_dirR : array {1 . .HAX PV2l of integer; vec R :arrayll . .NAX_PV2l of real; teep :real; swl : boolean; qaux : real; begin quayer :=0 ; goenor :=100 ; geedia :=0; gaux :=0; 1 :=4 ptrvecR :=1; swI :=true ; ( SIRVE PARA ASIGNAR EL APUNTADOR DE 'VEC_R' } for i :=1 to nun _alt do for j :=1 to nus_alt do begin dcli,j] :=0; ( ASIGNAR UN VALOR INICIAL A LA HATRII DE DISCORDANCIA } if swi then begin 1 :=]+1; vec dirRlll :=ptr_vecR; swl : :false; end; if i<>j then ( SI 1=J UNICANENTE DC[I,JI <-- 0 } begin for k : : l to nuo_pv do begin ( HACE LA POSIBLE OPERACION DEL VECTOR 'R' } if val calif[i,kl < val calif[j,k] then begin if rangolklOO then vecR[ptr vecR3 :=(val calif[j,kl-val calif[i,klllrango[k] else vec R[ptrvecR] :=0; { write(ptr vecR,' ',vec R(ptr vecRl :6 :2,'l'} ;} ptr_vecR := ptr_vecR + 1; swl :=true; end; end; t - write(' iS '10 { 'BUBBLE SORT' DE MAYOR A MENOR } for k :=vec dirR[ll to ptr_vecR - 2 do if vec dirR[i]+i ( ptr_vetR then ( CHECA OUE HAYA POSIBLE CAMBIO } begin for kk : : k to ptr_vecR - I do if vec R[k] < ver R[kk3 then begin - tesp vec_R i; vecRtk] vecRlkkl; vecRlkkl := tesp; ene; =NI f 11EYA LA MATRIZ 'DC' CON EL S-ESINO VALOR EN EL VECTOR 'VEC_R'. SI ND EXISTE NINBLRID, DEJA EL ELEMENTO CON EL VALOR DE CERO 'dc=0' ORIGINAL ) if vecdirRlll+1s-11 ( ptr vecR then begin dc[i,j] := vec Rlvec dirRlll+ds-1)]; if dcli,j] > gsayor then geayor :=dc[i,il; if dcli,j] ( qeenor then gaenor :=dcti,jl; gaux :=gaux + dcii,jl; ecd; end ; of <>) ead ; .for j) gsedia := qaux I (nus_alt g nus_pv); ariteln d' ( INPRESION DE LOS VECTORES 'vec dirR' Y 'vec_R' '); for i :=1 to 1-1 do uritelnd'i=',i,' ',vec dirRlil); for i :=1 to ptr vecR do aritelnd'i=',i,"svec RIi] :6 :2); writeln d' '1; xriteln d'ESCRIDIR LA MATRIZ DE DISCORDAIR;IA '); ) for i :=1 to nu ... all do { begin for j :=1 to nus_alt do write(' ',dcli,j} :6 :2); uritein; end; end; ( : procedure obtener_grafica ; f BRAFICA (P,Q,S) ) begin for is=) to nua alt do t INICIALIZA ) for j :=1 to nus_alt do grafica[i,,l := 0; for is=l to nus_alt do for j :=l to nus_alt do if i<>j then if ccli,jl >: p then if dcli,j] l= q then graficali,jl : : 1 ; ==__ ) ( writelR('p= ' , p, ' 9= ' 09 ) ; writeln (' writeln ('MATRIZ DE LA URAFICA'); for i :=I to nua_alt do begin for j :=1 to num_alt do write (grafica(i,j]); writeln; end; r eadln; ) n num_alt := nu®á1t ; ( TRABAJAR EN COPIA PURDUE SE VA A MODIFICAR } for i :=1 to n_nuu_alt do begin n noa_alt(i] := nom alttil; end; nuevo_identif := 0; nue stack ciclos := 0; end; procedure nucleo_aparente; begin ( EL NUCLEO APARENTE ESTA EN ' siguienteti]=0 ' } for i :=1 to n num alt do begin - - i : = 1 .s while I( j<=n_num_alt) and (graficatj,i] = 0)) do j' = j+1; if j=nnum_a1t+1 then siguientetil : 0 else siguienteti] :=j; end; end; procedure buscar circuito; begin i :=0; hay circuito := false ; ( SE SUPONE NO HAY CIRCUITOS INICIALMENTE } ( VA A REVISAR CADA MODO, 0 HASTA QUE ENCUENTRE UN CIRCUITO } while ( (i ( n nus_alt) and (not hay_circuito) do begin i := i + 1; for j :=1 to nuo alt do ( LIMPIA LAS MARCAS } sarcadotjJ := 0; sig := i ; ( EL SISUIENTE PARA BUSCAR CICLO } 1 : 0; ( BUSCA SI HAY UN CIRCUITO PARA EL NODO 'i' } while ( (not hay_circuito) and (siguiente[sig] (> 0) ) do begin I :=1+1; trayectoria[1] := sig; if aarcado[sigl = 0 then begin marcado[sig] := 1 ; ( MARCADO, SI NO ESTABA MARCADO > sig := siguiente[sig]; end else begin hay_circuito true ; ( HUBO CIRCUITO Y SALE A REDUCIRLO > end; end; end; t BUSCAR EL INICIO DEL CICLO I t BUSCA HACIA ATRAS EL INICIO DEL CICLO, PUEDE . HABER ENTRADA Y LLEGAR A UN CICLO EH UN PUNTO MAS ADELANTE l inic ciclo := 1 - 1; while ( (trayectoria[inicciclo] (> sig) and (inic_ciclo >= 0) ) do inic_ciclo := inic ciclo - 1; long ciclo := I - inic_ciclo; ( OBTENER EL NODO DE MENOR NUMERO EN EL CICLO > min _nodo := 100; for i :=inic ciclo to I-1 do if min _nodo > trayectoria[i] then oin_noeo := trayectoria[il; end; procedure reeuc ciclo ; ( REDUCE CICLOS, ELIMINANDO RENGLONES Y COLUMNAS > var su®unos : integer; i, ii, ji, jor :integer; jdest, ishft :integer; begin nuevo_identif nuevo_identif + 1; for i :=1 to NAX_ALT do begin reg ciclos[i] .noa :_ ''; reg_ciclos[i] .inic := 0; reg_ciclos[il .fin := 0; end; with reg_ciclos[nuevo_identifl do begin str(nuevo identif, sti); nom 'xx'+ stl ; inic := nue_stack ciclos + 1; ( REPITE DESDE DONDE EMPIEZA EL CICLO HASTA FIN DE CICLO - I SUARDA LOS NOMBRES DE LAS ALTERNATIVAS EN UNA LISTA LLAMADA 'stack_ciclos' Y LOS LIMITES SE ENCUENTRAN EN UN REGISTRO LLAMADO 'regciclos[ l' CON CAMPOS DE NOMBRE, INICIO, FIN ------------EJEM LO XXI 1 3 XX2 4 5 1 2 3 4 5 stack ciclos -----------casa xx1 carro vacaciones deportivo xx2 aviacion } for i :=inic ciclo to inic ciclo + long_ciclo - I do begin nuk stack ciclos nux♦stackciclas + I; aux := trayectorialil; stack ciclostnue stack_ciclosl := n nos altlauxl; end; fin := nur_stack ciclos; str(nuevo_identif, stil; nno9 altlain_nado} :_ 'xx' + stl ; end; ( REDUCE LAS COLUMNAS AL COPIAR TODAS A LA MENOR } for i :=1 to n nu!_alt do begin su!_unos := 0; for j := I to 1-1 do ( RECORRE TODAS LAS COLUMNAS DEL RENGLON begin jj :=trayectoria(jl; sua_unos := su! unos + graficali,jj1; end; if su! unos > 0 then ) ( LE PONE UN `1' SI AL MENDS UNA DE LAS ) grafical i, nin codo 1 := 1 else grafica[ is !in_nodo 1 := 0; end; ( COLUMNAS ES '1' ) ( REDUCE LOS RENGLONES AL COPIAR TODOS AL MENOR ) for j :=1 to n nue_alt do begin su!_unos := 0; for i := I to 1-1 do ( RECORRE TODOS LOS REMOLONES DE LA COLUMNA `j' ) begin ii :=trayectoriaEil; sum unos := sua_unos + graficatii,jl; erd; if sue unos 1 0 then ( LE PONE UN `1' SI AL MENOS UNO DE LOS } ( grafical sin_rodo, j I := 1 RENGLONES ES 'I' ) else grafica[ oin nodo, j l := 0; end; grafica[ !in_nodo, !in nodo 1 := 0 ; ( FRIA A `0' EL ELEMENTO i,i ) i ELIMINA COLUMNAS DEL CICLO ER LA 6RAFICA ] recorre := 0; for jar :_ ®in nodo+1 to n_nus_alt do i ELIMINA LAS COLUMNAS DE LA DERECHA > ( DEL NODO MINIM ) begin i :=1; while t (trayectoria(i] <> jor) and (i C= 1-1 ) ) do i := 1+1; if trayectoria(il = jor then begin recorre := recorre + I; end else if recorre <> 0 then begin jdest := jor - recorre; n no®alt(jdestl := n_nas_alt(jor]; for i :=1 to n_nue_alt do begin grafica(i,jdestl := graficali,jor]; end; end; end; I ELIMINA RENSLOMES DEL CICLO EN LA 6RAFICA ] recorre := 0; for jar := oin nodo+l to n nus_alt do begin i ELIMINA LAS COLUMNAS { DEL HOOD NININO ] j : = 1; ttrayectcria(jl <> jar) and tj (= 1-1 ) ) do while j := j+1 4 if trayectoria(j) = jor then recorre := recorre + 1 else if recorre C> 0 then begin jdest := jor - recorre; for j :=I to n nuo_a1t do begin ggrafica(jdest,jl := grafica(jor,jl; end; end; end; nnun_alt := n_nue_alt - long ciclo + 1; end; procedure recursivotinicio, final : integer); var i,j,codigo:integer; begin for i :=inicio to final do if (copy(stack ciclos(i1,1,2)='xx') then begin val (copytstack_ciclos(i1,3,2),j,codigo); recursivotreg ciclos (jl .inic,regciclos(jl .fin) ; DE LA DERECHA I end else begin gotoxy(3,7+vauxgl); erite(stackciclostii); vauxgl := vauxgl + 1; end! end; procedure lipri .ir nucleo; var coligo :integer; begin textbackground(ord(negro)); clrscr; textcolor(ord(gris_claro)); fespeciall ; ( RECUADRO ESPECIAL PARA LA EJECUCION } textbackground(ord(gris claro)) ;textcolor(ord(negro)); gotoxy(26,2) ;write(' E L E C T R E 1 '); tevtcolor(ord(gris_claro)); textbackground(ord(negro)); rotoxy(1,6) ;write('ALTERNATIVAS SELECCIONADAS'); gotoxy(48,6) ;write('ALTERNATIVAS ORIGINALES'); textcolor(ord(cyan)); gotoxy(64,4) ; writel'P=',p :4 :3,' G-',q :4 :3); textcolor(ard(magenta_claro)); vauxgl := 1; for i :=I to n_nu®_alt do begin if siguientetil = 0 then begin if (copy(n_nos_alttil,l,2) 'xx') then begin val(copy(n nom_alttil,3,2) , j, codigol ; t EL J-ESINO xxj } recursivo(reg ciclostjl .inic, reg ciclostj] .fin); end else begin gotoxy{3,7+vauxgl); write(n nos_altli]); vauxgl := vauxgl + 1; end; end; end; (t for t) rg EN LUGAR DE ESCRIBIR, PASAR DATOS A ARREGLO 2 SORTEAR EL ARREGLO 3 ESCRIBIR EL ARREGLO A PANTALLA } textcolor(ord(gris claro)); end; procedure ieprimir_alt brig; var i :integer ; begin textcolor(ord(aaarillo)); for i :=1 to num alt do begin gotoxy(42,7+i) ;write(nom_alt(il) ; end; textcolor(ord(grisclaro)); end; procedure graficas; begin obtener_grafica ; repeat ( OBTIENE LA MATRIZ DE LA ERAFICA ) ( REPITE NIENTRAS HAYA CIRCUITOS ) nucleo_aparente; buscar circuito; if haycircaito then (SI ENCONTRO CIRCUITO, PROCEDE A REDUCIRLO ) begin reduc_ciclo; end; until not (hay_circu(to ); imprimir nucleo; ( IMPRINIR RESULTADO > iaprimir_a1t p rig ; ( IMPRIMIR ALTERN . ORIS . ) end; ( ::::__::: :_: ::: : :::: .:::: :: .=_===========_::::_:_: ___ == _: ) procedure menu_princ; var i : integer; opcion ch, ch : char; procedure error(par :integer); var ch : char; begin textbackground(ord(negro)); Clrscr; textcolor(ord(aoarillo)); s_2hcuadro(1,1,7,24,80); text :olor(ord(rojo)); gotoxy(3,4); writet'ERROR, 'l; derrite (chr (7) ); if par = 0 then write ('NO EXISTEN AUN DATOS PARA GRABAR'); if par = 1 then write ('NO PUEDE EJECUTARSE, PORQUE NO EXISTEN DATOS AUN'); if par = 2 then write ('NO PUEDE HABER MODIFICACIONES, NO EXISTEN DATOS AUN'); gotoxy(3,23); write('OPRINIR (RETURN>'); read(KBD,ch); textaode(ord(verde)) ; (t cambio a amarillo ??? t) end; begin repeat hirescolor (!) ; color_pantalla(azul); color texto(blanco,no); d2hcuadro(1,1,6,24,00); gotoxy(1,1); gotoxy(32,2); writeln('E L E C T R E 1'); gotoxy(27,5); writeln('SELECCION DE ALTERNATIVAS'); gotoxy(26,8); writeln('MENU DE EJECUCION DEL MODELO'); gotoxy(25,11) ; write('!) LECTURA EN FORMA INTERACTIVA'); gotoxy(25,121 ; write('2) LECTURA DE ARCHIVO'); gotoxy(25,13) ; write('3) GRABAR DATOS ACTUALES'); gotoxy(25,14) ; write('4) EJECUTAR EL MODELO'); gotoxy(25,15) ; write('S) NODIFICACION DE DATOS'); gotoxy(25,16) ; write('6) SALIR'); option ch := lee option n('ó',47,21); hirescolor(0); case opcion_ch of 'I' : begin { LECTURA 1NTERACTIVA } lectura_interact; end; '2': begin { LECTURA DE lee_de_arch; '3': begin { GRABACION .I ARCHIVO } end; if hay datos then grabacion else erro r (0); end; '4' : begin { EJECUCION } if hay datos then begin clrscr; invierte escala ; { INVIERTE LOS VALORES EN CASO DE QUE LA ESCALA SEA NEGATIVA } ppeso_tot ; { OBTENER EL PESO TOTAL ) concordancia ; { OBTENER LA MATRIZ DE CONCORDANCIA CC ij } { 9 paax rang ; YA NO SE USA, QUITARLA POSTERIORMENTE } { OBTENER LA MATRIZ DE DISCORDANCIA graficas ; { OBTENER LA MATRIZ DE GRAFICA Y RESOLVER } desirvierte_escala ; { DESINVIERTE LOS VALORES DE ESCALA NEG . } hubo_e ;ecucion := true; gotoxy(3,23) ; write('OFRIMIR <RETURN}'); read(KBD,ch); end eú se error (1); end; 'S' : begin D ij } discordancia ; { MODIFICACIONES } if hay_datas then eadificacion else error (2); end; '6' : begin clrscr; end; end ; (case) until iopcion_ch = '6'1; end; procedure inicializa; begin hay_datos false; hubo_ejecucian := false; hubo_aodif oatriz := false; ca bio_de_polasidad :=true; end; { == begin { PRU8RAfA PRINCIPAL ) textsodetc801; inicializa; eenu_princ; end . ) ANEXO 4. PROGRAMAS FUENTE MODULO DE SISTEMA DE EXPERTOS Los programas fuente del Sistema de Expertos no se reproducen en este documento, ya que son propiedad del autor, el SIRIA sólo utiliza los programas objeto código binario . ANEXO 5. PROGRAMAS FUENTE MODULO CONVERSACIONAL 0 DE INTERFASE procedure scuadro(xI,yl02,y2 :integer) ; ( CUADRO SENCILLO } var i,j :integer; begin { 879 barra vertical 196 barra horizontal 218 esquina superior izquierda 191 esquina superior derecha 192 esquina inferior izquierda 217 esquina inferior derecha } gotoxy(yl,xl) ;write(chr(218)); gotoxy(y2,x2l ;write(chr(2171); gotoxy(yl,x2) ;write(chr(1921); gotoxy(y2,xll ;write(chr(191)); for i :=1 to y2-yl-i do begin gotoxy(y1+i,x1) ; write(chr(196f) ; end; for i :=1 to y2-y1-1 do begin gatoxy(y1+i,x2) ; write(chr(19611 ; end; for i :=1 to x2-xl-1 do begin gotoxy(yl,xl+i) ; write(chr(1791) ; end; for i :=1 to x2-x1-1 do begin gotoxy(y2,xl+i) ; write(chr(179)l ; end; end; procedure dcuadro(xâ,yl,x2,y2:integer) ; ( CUADRO DOBLE } var i,j :integer; begin { 186 barra vertical 205 barra horizontal 201 esquina superior izquierda 187 esquina superior derecha 200 esquila inferior izquierda 189 esquina inferior derecha gotoxy(yâ,x1) ;write(chrí20111; gotoxyty2,x2) ;write(chr(1)); gotoxy(y1,x2) ;write(chr(200)1; gotoxy(y2,xl) ;write(chr(187)); for is=1 to y2-y1-1 do begin gotoxy(yl+i,xl) ; write(chr(205)1 ; end; for i :=1 to y2-yl-1 do begin gotoxy(yl+i,x2) ; write(chr(205)) ; end; for i :=l to x2-x1-1 do begin gotoxy(yl,xl+i) ; urite(chr(1861) ; end; for i :=1 to x2-xl-1 do begin gotoxyty2,xl+i) ; writeichr(186)l ; end; end; procedure s2hcuadro(x1,y1,x2,x3,y3:integerl ; (2 CUADROS HORIZONTALES } var izinteger; begin ( 195 CONECTOR IZOUIERDO 180 CONECTOR DERECHO } scuadro(xl,yl,x3,y3); gotoxy(yl,x2) ;write(chr(195)); gotoxy(y302) ;write(chr(180)) ; for is=l to y3-yl-1 do begin gotoxy(y1+i,x2) ;write(chr(1961) ; end; end; procedure d2hcuadro(xl,yl,x2,x3,y3 :integer) ; { 2 CUADROS HORIZONTALES } var i :integer; begin { 204 CONECTOR IIOUIERDO 181 CONECTOR DERECHO } dcuadro(x1,yl,x3,y3); gotoxy(yl,x2) ;write(chr(204)l; gotoxy(y3,x2) ;write(chr(1851); for is=1 to y3-y1-1 do begin gotoxy(y1+i,x2) ;write(chr(205)l ; end; end; procedure d2vcuadro(x1,y1,y2,x3,y3 :integerl ; { 2 CUADROS HORIZONTALES } var i :integer; begin C 203 CONECTOR SUPERIOR 202 CONECTOR INFERIOR } dcuadro(xi,yl,x3,y3); gotoxy(y2,xl) ;write(chr(203)l; gotoxy(y2,x3) ;write(chr(202)); for i :=1 to x3-xl-1 do begin gotoxy(y2,i+xl) ;write(chr(186)) ; end; end; procedure fespeciall; begin d2hcuadro(1,1,5,24,80); dcuadro(5,41,24,80); dcuadro(3,63,5,80); gotoxy(41,24) ;write(chr(202)l; gatoxy(41,5 l ;write(chr(203)1; gotoxy(80,5 ) ;write(chr(185)l; gotoxy(80,3 ) ;write(chr(185)); gotoxy(63,5 l ;write(chr(20211; end ; program psedue; var numero_giro :integer; clavec :stringt57; tEI fORNATOS .PAS} CBI EaECTREI .PAS} SSI GRAPN .P} ttt EOS .PAS} It t) (t BASE DE DATOS DE GIROS (t t) clave_ga N2/ rangoi_ga C5/ rangof_ga C5/ giro_ga C70 / t) procedure bd_giros; var ar_giros : text; Iinea :stringEB27; i,nua:integer', begin assign(ar_giros, ' P6IROACT .TXT'); reset tar_giros); textcolor (0); clrscr; tewtbackground(1); textcoler(15); gotoxy(28,11 ;writet' gotoxy(28,2) ;aritel' GIRO DE ACTIVIDAD gotoxy(28,3) ;write(' 'l; '1; is=I; while notteof(ar_giros)) do begin readin (ar_giros,linea); gotoxy(3,4+i1 ;write(i :2); gotoxy(6,4+i) ;writet't',copy(linea,13,701,'7'); i := i+l; end; close lar_giros); repeat gotoxy(50,23) ;write('OPCION ---)') ;readln(nu®1; if (nuo(Il or Inum)14) then begin gotoxy(60,23) ;writetchr(7),' '1; end; until nua in (1 . .147; numero_giro := nun; end; (t 1t (t t1 BASE DE DATOS DE ACTIVIDADES clave ca C5/ clav_ga_ca N2/ nombre_ca C70 procedure bd_actividades; tl t) var ar activ : text; linea :string(77]; i,j,sw,indice,ind,nuo :integer; valor,code :integer; ch :char; begin assign(ar activ,'PCLASACT .TXT'); reset (ar activ); textbackground(0); clrscr; textbackground(5); textcolor(0); gotoxy(26,1) ;writet' gotoxy(26,2) ;write(' 'l; A C T I Y I D A D E S gotoxy(26,31 ;write(' '); '); is=1 ; j : : 1 ;sw :=0 ;indice :=0; while (not (eof tar_activl 11 begin indice :=indice+l; readln (ar activ,linea); if (copyllinea,6,1)=' '1 then begin delete(linea,6 ;1) ;insert('0',linea,6) ;end; val(copy(1inea,6,2l,valor,codel; if valor = nu,ero_giro then begin if sw<>0 then begin textbackground(0); cirscr; textbackground(5); textcolor(0); gotoxy(26,I) ;write(' gotoxy(26,2) ;write(' A C T I Y I D A D E S gotoxy(26,31 ;write(' end; if i=1 then ind := indice; gotoxy(3,4+j) ;write(i :2); gotoxy(6,4+j) ;write('I',copy(linea,8,70),']'1; is=i+1 ;j :=j+1; if j>18 then begin j :=1 ; gotoxy(70,23); write('<RETURN>') ;read(KBD,ch); sw: = 1; end else sw : = O; end ; (Sift) end ; (*while*) i :=i-l; close (ar_activ); repeat gotoxy(75,23) ;write(' '); gotoxy(64,23) ;write('OPCION --->') ;readlnlnua); if (nue(1) or (nus>i ) then begin gotoxy(75,23) ;write(chr(7),"I; end ; until nus in I1 . .il; reset(ar_activ); foT i :=1 to ind+nue-1 do readln(ar activ,linea); (1 EN 'linea' ESTA TODO EL REN6LON PARA SACAR LA CLAVE $1 clavec := copy(Iinea,1,5); close(ar_activl; end; tt t) 10 BASE DE DATOS DE EMISION DE CONTAMINANTES it PENISCON .TXT : clave_ec C5 I cve e ec N2 I t) fac e ec N8 3/ uni_e_ec C10 #1 11 PLISTCON .TIT: nuo Ic N2 / contae_lc C35 / edo_fis_lc Cl 11 procedure bd eeis_cont; var steals, ar_lis : text; linea :stringE25l; linea2istringE38l; I+roduccion :real; clav_prod :stringE23; linaux :strinql80l; t :boolean; nueaux :real; i,nue,code,ii :integer; begin textbackgrmmd (0); textcolor(â); clrscr, textbackground(7); gotoxy(18,11 ;writel' PRODUCCION EN LA ACTIVIDAD SELECCIONADA '); textbackground(6) ;textcolorlâ); gotoxy(31,2) ;write('> ( TONELADAS'); gotoxy(32,2) ;readln(produccion); textcolor(21; assign lar eeis,'PENISCON .UT'); reset tar eois); assign(ar_lis,'PLISTCON .TIT'); reset tar lis); textcolor(0); textbackground(i); testcelor(â5); gotoxy(24,41 ;write(' '); gotoxy(24,5) ;arite(' EMISION DE CONTAMINANTES '); gotoxy(24 9 6) ;write(' '1; i : =1; writein; while notteof(ar_eois)) do begin readln tar eais,linea); if clavec = copy (linea,l,51 then begin gotoxy(2,7+i) ;writeti :2) ; (1 23434 .34 1) linaux :=copy(linea,8,8); gotoxy(5,7+i) ; write(" 9 1inaux,' '); for ii :=1 to lengthtlinaux) do (1 inserta ceros por espacios t) if copy(linaux,ii,1)=' ' then begin delete(linaux,ii,ll; insert('0',linaux,ii); end; val(linaux,nusaux,code); linaux :=copy(linea,16,10); t9 Kg/t 1) nrite(copy(linaux,l,pos(' ',linea))); clav_prod := copy(linea,6,2); t :=true; while (not (eof(ar_lis))) and (t) do begin readln(ar lis,linea2l; if copy (linea2,1,2) = clav_prod then begin (1 PARTICULAS 1) linaux :=copy(linea2,3,35); case copy(linea2,38,1) of writet'AL AIRE DE '); 'L' : write('AL AGUA DE '); 'S' : write('DE DESECHO SCUM DE '9; end ; (1 case it write (linaux,' ',produccionlnuaaux :8 :2,' Tons'); t :=false; end; end; i := i+1; end; end; close tar eei s) ; close (ar_lis); readin; (1 repeat gotoxyt50,23) ;write('OPCION --->') ;readln(nua); if (nua(1) or (num>14) then begin gotoxy(60,23) ;write(chr(7),' '); end; until nua in 11 . .141; nusero_giro := nu®; 1) end; procedure pant_eenu; var opcion :char ; termina :boolean; begin repeat termina :=false; hirescolor(4); textbackground(0); clrscr; textbackground(4); textcolor(15); gotoxy(28 1 3) ;write(' gotoxy(28,4) ;write(' NODULOS gotoxy(28,5) ;write(' 'I 1 ,). 4 'I 1 gotoxy(1B, 9) ;write(' gotoxy(18,10) ;write(' A: BASE DE DATOS gotoxy(18,11) ;write(' B: MODELOS DE CONTAMINACION gotoxy(18 5 12) ;write(' C: ELECTRE 1 (SELECCION DE ALTERNAT)VAS) gotoxy(IB,13) ;write(' D: KS111 (IMPACTOS CRUZADOS) gotoxy(18,14) ;write(' E: SISTEMA DE EXPERTOS gotoxyl1B,15) ;write(' F: SALIR gotoxy(IB,16) ;write(' repeat gotoxy(61,22) ;write(' '); gotoxy(50,22) ;write('OPCION ---> ') ;read(KBD,opcion); opcion :=upcase(opcion); if (opcion('A') or (opcion)'F') then write(chr(7)); until (opcion) in I'A' . .'F'l; hirescolor(0); textbackground(0); clrscr; case option of 'A' : begin bd_giros; bd_actividades; bd emis cent; end; 'B': begin gauss ; end; 'C'• begin electrel end; 'D': begin end; 'E': begin end; 'F'° termina := true; end; until termina; r lrscr; end ; procedure presentacion; begin textbackground(2); clrscr; textcolor(1); graphcolormode; gotoxy(5,3) ; write ('SISTEMA DE IMFORMACION RAPIDA'); gotoxy(10,5) ; write ('DE IMPACTO AMBIENTAL'); gotoxyl13,7) ; write ('( S I R I A 1'); gotoxy(16,18) ; write ('SEDUE'); getoxy( 7,20) ; write ('SUBSECRETARIA DE ECOLOGIA'); (t graphwindow(50,100,250,150); draw(O,0,200,50,3); t) reading texteode; hirescolor(1); textbackground(1); clrscr; textcolor(11); gotoxy(26,1) ;write('ESTRUCTURA MODULAR DEL SIRIA'); textbackground(4); gotoxy(1,3) ;textcoior(11); writelni' INFORMACION BASICA '); writeln( ' ' l; writeln(' t PROYECTOS '); writeln(' t CONTAMINANTES ,); writeln(' t RIESGOS writeln(' t NORMAS writeln(' t EFECTOS '1; writeln(' t CARACTERISTICAS ECOLOSICAS '); writeln(' t CONTROL DE CONTAMINANTES '); textcolor(11); textbackground(14); gotoxy(45, 3) ;write(' SISTEMA DE EXPERTOS gotoxyt45, 4) ;write(' '1; '1; gotoxy(45, 5) ;write(' SISTEMATI2ACION DEL CONOCIMIENTO'); gotoxy(45, 6) ;write(' DE IMPACTO AMBIENTAL PARA EFECTUAR'); gotoxy(45, 7) ;write(' DIASMOSTICOS ECOLOGICOS BASADOS EN'); gotoxy(45, 8) ;write(' EXERTOS EN EL AREA. gotoxy(45„ 9) ;writel' '); gotoxy(45,10) ;write(' 'I; gotoxy(45,11) ;write(' '); textcolor(i); textbackgroundt11); gotoxy(),15) ;writelnt' MODELOS DE PREDICCIOM writelnl' writeln(' t NODELAJE ESTRUCTURAL '); writeln(' t MODELOS DE DISPERSION '); writeln(' - ATMOSFERICOS writeln(' - AGUA SUPERFICIAL 'l; writeln(' - PRODUCTOS RIESGOSOS EN '); writeln(' CASO DE ACCIDENTES writeln(' t OTROS MODELOS 'l; 'l; tex#color(ll); textbackground(8); gotoxyt45,15) ;write(' gotoxy(45,16) ;writet' APOYO DECISIONAL gotoxy(45,17) ;write(' gotoxy(45,18) ;write(' t ELECTRE I '1; gotoxy(45,19) ;write(' gotoxy(45 9 20) ;write(' SELECCION DE ALTERNATIVAS gotoxy(45,211 ;write(' BAJO CRITERIOS MULTIPLES. gotoxy(45,22) ;write(' gotoxy(45,23) ;write(' textbackground(10); gotoxy(30,11) ;write(' '); 7). gotoxy(30,12) ;write(' gotoxy(30,13) ;writet' gotoxy(30,14) ;write(' CONVERSACIONAL 0 '); Df INTERFASE gotoxy(30,15) ;write(' gotoxy(30,16) ;write(' readin; end; begin (t PROSRAMA PRINCIPAL S) presentacion; pant menu; end . '); ,) . s ');