Пример #1
0
 def test_unidades_tiempo_mes_y_día(símismo):
     bf = ModeloPrueba(unid_tiempo='días')
     cnctd = Conectado(bf, símismo.mds)
     cnctd.conectar(var_mds='Aleatorio', var_bf='Escala', mds_fuente=False)
     res = cnctd.simular(10, vars_interés=['bf_Escala', 'mds_Aleatorio'])
     npt.assert_array_equal(res['mds_Aleatorio'], np.arange(11 * 30,
                                                            step=30))
Пример #2
0
    def setUpClass(cls):
        """
        Preparar los modelos genéricos necesarios para las pruebas.
        """

        # Generar las instancias de los modelos individuales y conectados
        cls.mods_mds = generar_modelos_prueba()
        cls.mod_bf = EnvolturaBF(arch_bf)

        cls.modelos = {ll: Conectado()
                       for ll in cls.mods_mds}  # type: dict[str, Conectado]

        # Agregar traducciones necesarias.
        trads.agregar_trad('year', 'año', leng_trad='es', leng_orig='en')
        trads.agregar_trad('month', 'mes', leng_trad='es', leng_orig='en')

        # Conectar los modelos
        for mds, mod_con in cls.modelos.items():
            mod_con.estab_bf(cls.mod_bf)
            mod_con.estab_mds(cls.mods_mds[mds])

            mod_con.conectar(var_mds='Lluvia',
                             var_bf='Lluvia',
                             mds_fuente=False)
            mod_con.conectar(var_mds='Lago', var_bf='Lago', mds_fuente=True)
            mod_con.conectar(var_mds='Aleatorio',
                             var_bf='Aleatorio',
                             mds_fuente=False)
Пример #3
0
    def acción_bt_abrir(símismo):
        apli = símismo.apli
        archivo = diálogo.askopenfilename(
            filetypes=[(apli.Trads['ArchivoTinamit'], '*.tin')],
            title=apli.Trads['CargarModeloConectado'])

        if archivo:

            símismo.apli.ubic_archivo = archivo
            receta = cargar_json(archivo)

            if 'conv_tiempo' not in receta.keys(
            ) or 'conexiones' not in receta.keys():
                Ctrl.CajaAviso(apli=símismo.apli,
                               texto=apli.Trads['ArchivoCorrupto'])

            símismo.apli.Modelo = modelo = Conectado()
            símismo.apli.receta = receta

            try:
                modelo.estab_mds(receta['mds'])
            except KeyError:
                pass

            try:
                modelo.estab_bf(receta['bf'])
            except KeyError:
                pass

            l_mod = list(modelo.modelos)

            for conex in receta['conexiones']:
                mod_fuente = conex['modelo_fuente']

                mod_recip = l_mod[(l_mod.index(mod_fuente) + 1) % 2]

                modelo.conectar_vars(dic_vars={
                    mod_fuente: conex['vars'][mod_fuente],
                    mod_recip: conex['vars'][mod_recip]
                },
                                     modelo_fuente=mod_fuente,
                                     conv=conex['conv'])

            if len(receta['conv_tiempo']):
                if receta['conv_tiempo'][l_mod[0]] == 1:
                    modelo.estab_conv_unid_tiempo(
                        mod_base=l_mod[0],
                        conv=receta['conv_tiempo'][l_mod[1]])
                else:
                    modelo.estab_conv_unid_tiempo(
                        mod_base=l_mod[1],
                        conv=receta['conv_tiempo'][l_mod[0]])

            receta['conexiones'] = modelo.conexiones
            receta['conv_tiempo'] = modelo.conv_tiempo

            símismo.pariente.ContCjEtapas.ir_a_caja(1)
            símismo.pariente.bloquear_cajas([2, 3, 4])
            símismo.pariente.desbloquear_cajas([1])
Пример #4
0
 def test_unidades_tiempo_definidas(símismo):
     bf = ModeloPrueba(unid_tiempo='દિવસ')
     cnctd = Conectado(bf, símismo.mds)
     cnctd.conectar(var_mds='Aleatorio', var_bf='Escala', mds_fuente=False)
     cnctd.estab_conv_tiempo(mod_base='mds', conv=30)
     res = cnctd.simular(10, vars_interés=['bf_Escala', 'mds_Aleatorio'])
     npt.assert_array_equal(res['mds_Aleatorio'], np.arange(11 * 30,
                                                            step=30))
Пример #5
0
    def acción_bt_nuevo(símismo):
        símismo.apli.Modelo = Conectado()

        símismo.apli.receta = {
            'conexiones': símismo.apli.Modelo.conexiones,
            'conv_tiempo': símismo.apli.Modelo.conv_tiempo
        }

        símismo.pariente.ContCjEtapas.ir_a_caja(1)
        símismo.pariente.desbloquear_cajas([1])
        símismo.pariente.bloquear_cajas([2, 3, 4])
Пример #6
0
 def test_generar_sin_submodelos(símismo):
     mds = generar_mds(archivo=arch_mds)
     bf = ModeloPrueba(unid_tiempo='mes')
     cnctd = Conectado()
     cnctd.estab_bf(bf)
     cnctd.estab_mds(mds)
     símismo.assertSetEqual(set(cnctd.modelos), {'mds', 'bf'})
Пример #7
0
    def acción_bt_abrir(símismo):
        apli = símismo.apli
        archivo = diálogo.askopenfilename(
            filetypes=[(apli.Trads['ArchivoTinamit'], '*.tin')],
            title=apli.Trads['CargarModeloConectado'])

        if archivo:

            símismo.apli.ubic_archivo = archivo
            receta = cargar_json(archivo)

            if 'conv_tiempo' not in receta.keys(
            ) or 'conexiones' not in receta.keys():
                Ctrl.CajaAviso(apli=símismo.apli,
                               texto=apli.Trads['ArchivoCorrupto'])

            símismo.apli.Modelo = modelo = Conectado()
            símismo.apli.receta = receta

            try:
                modelo.estab_mds(receta['mds'])
            except KeyError:
                pass

            try:
                modelo.estab_bf(receta['bf'])
            except KeyError:
                pass

            for conex in receta['conexiones']:
                modelo.conectar_vars(**conex)

            if len(receta['conv_tiempo']):
                modelo.conv_tiempo_mods = receta['conv_tiempo']

            receta['conexiones'] = modelo.conexiones
            receta['conv_tiempo'] = modelo.conv_tiempo_mods

            símismo.pariente.ContCjEtapas.ir_a_caja(1)
            símismo.pariente.bloquear_cajas([2, 3, 4])
            símismo.pariente.desbloquear_cajas([1])
Пример #8
0
    def __init__(símismo, pariente):
        tk.Frame.__init__(símismo, pariente)
        pariente.title('Tinamit')

        pariente.geometry('%ix%i' % (Fm.ancho_ventana, Fm.altura_ventana))
        pariente.configure(background=Fm.col_fondo)
        # pariente.minsize(width=Fm.ancho_ventana, height=Fm.altura_ventana)

        símismo.Modelo = Conectado()

        símismo.DicLeng = Trad.Diccionario()
        símismo.Trads = símismo.DicLeng.trads_act
        símismo.receta = {'conexiones': símismo.Modelo.conexiones,
                          'conv_tiempo': símismo.Modelo.conv_tiempo_mods}
        símismo.ubic_archivo = None

        símismo.CajaInic = Cj.CajaInic(símismo)
        símismo.CajaCentral = Cj.CajaCentral(símismo)
        símismo.CajaLenguas = Cj.CajaLeng(símismo)
        símismo.CajaCentral.lift()
        símismo.CajaInic.lift()
        símismo.pack()
Пример #9
0
                    for ir in ops['Policy Irrigation improvement']:
                        run_name = 'TC {}, Fw {}, CL {}, RW {}, II {}'.format(
                            cp, fw, cl, rw, ir
                        )

                        runs_complex[run_name] = {
                            'Capacity per tubewell': cp,
                            'Fw': fw,
                            'Policy Canal lining': cl,
                            'Policy RH': rw,
                            'Policy Irrigation improvement': ir
                        }

    # 3. Now create the model
    # Create a coupled model instance
    modelo = Conectado()

    # Establish SDM and Biofisical model paths. The Biofisical model path must point to the Python wrapper for the model
    modelo.estab_mds(os.path.join(os.path.split(__file__)[0], 'Vensim', 'Tinamit_Rechna.vpm'))
    modelo.estab_bf(Envoltura)
    modelo.estab_conv_unid_tiempo(unid='season', unid_ref='mes', factor=6)

    # Couple models(Change variable names as needed)
    modelo.conectar(var_mds='Soil salinity Tinamit CropA', mds_fuente=False, var_bf="CrA - Root zone salinity crop A")
    modelo.conectar(var_mds='Soil salinity Tinamit CropB', mds_fuente=False, var_bf="CrB - Root zone salinity crop B")
    modelo.conectar(var_mds='Area fraction Tinamit CropA', mds_fuente=False,
                    var_bf="Area A - Seasonal fraction area crop A")
    modelo.conectar(var_mds='Area fraction Tinamit CropB', mds_fuente=False,
                    var_bf="Area B - Seasonal fraction area crop B")
    modelo.conectar(var_mds='Watertable depth Tinamit', mds_fuente=False, var_bf="Dw - Groundwater depth")
    modelo.conectar(var_mds='ECdw Tinamit', mds_fuente=False, var_bf='Cqf - Aquifer salinity')
Пример #10
0
import os

from tinamit.Conectado import Conectado

modelo = Conectado()

directorio = os.path.dirname(__file__)

modelo.estab_mds(os.path.join(directorio, "Prueba dll.mdl"))
modelo.estab_bf(os.path.join(directorio, 'Prueba bf.py'))

modelo.conectar(var_mds='Lluvia', var_bf='Lluvia', mds_fuente=False)
modelo.conectar(var_mds='Bosques', var_bf='Bosques', mds_fuente=True)

res = modelo.simular(paso=1, t_final=100, nombre_corrida='Corrida_Tinamit')
print(res)
Пример #11
0
def run_model(name, switches):
    # Create a coupled model instance
    modelo = Conectado()

    # Establish SDM and Biofisical model paths. The Biofisical model path must point to the Python wrapper for the model
    modelo.estab_bf(os.path.join(os.path.split(__file__)[0], 'SAHYSMOD.py'))

    modelo.estab_mds(
        os.path.join(os.path.split(__file__)[0], 'Tinamit_sub_v2.vpm'))

    # Set appropriate switches for policy analysis
    modelo.mds.inic_vals_vars(switches)

    # Couple models(Change variable names as needed)
    modelo.conectar(
        var_mds='Soil salinity Tinamit CropA',
        mds_fuente=False,
        var_bf="Cr4 - Fully rotated land irrigated root zone salinity")
    modelo.conectar(
        var_mds='Soil salinity Tinamit CropB',
        mds_fuente=False,
        var_bf="Cr4 - Fully rotated land irrigated root zone salinity")
    modelo.conectar(var_mds='Watertable depth Tinamit',
                    mds_fuente=False,
                    var_bf="Dw - Groundwater depth")
    modelo.conectar(var_mds='ECdw Tinamit',
                    mds_fuente=False,
                    var_bf='Cqf - Aquifer salinity')
    modelo.conectar(var_mds='Lc',
                    mds_fuente=True,
                    var_bf='Lc - Canal percolation')
    modelo.conectar(var_mds='IaAS1',
                    mds_fuente=True,
                    var_bf='IaA - Crop A field irrigation')
    modelo.conectar(var_mds='IaBS1',
                    mds_fuente=True,
                    var_bf='IaB - Crop B field irrigation')
    modelo.conectar(var_mds='Gw',
                    mds_fuente=True,
                    var_bf='Gw - Groundwater extraction')
    modelo.conectar(var_mds='Irrigation efficiency',
                    mds_fuente=True,
                    var_bf='FsA - Water storage efficiency crop A')
    modelo.conectar(var_mds='Fw',
                    mds_fuente=True,
                    var_bf='Fw - Fraction well water to irrigation')

    # Simulate the coupled model
    modelo.simular(
        paso=1, t_final=240,
        nombre_corrida=name)  # time step and final time are in months