friction_loss.outputs.send_gauge_data

 1from typing import Dict
 2
 3import numpy as np
 4from custom_plugin_base.server.calculation import SolveRequest
 5from custom_plugin_base.services.clients.well.gauge.gauge_graph_client import (GaugeGraphClient, GaugeGraphCreateData,
 6                                                                               GaugeGraphUpdateData, Plot2DData)
 7from custom_plugin_base.services.clients.well.gauge.gauge_pocket_client import GaugePocketClient, GaugePocketCreateData
 8from custom_plugin_base.utils.service_enum import TypeGraphicEnum, PocketTypeEnum
 9
10from friction_loss.utils.custom_plugin_utils import get_entities
11
12
13def send_gauge_data(request: SolveRequest, data: Dict[str, np.ndarray]) -> None:
14    """
15    Sending the recalculated pressure to the calc pocket
16
17    Parameters
18    ----------
19    request: SolveRequest
20        Input request
21    data: dict[str, np.ndarray]
22        'pressure': np.ndarray(np.ndarray),
23        'time': np.ndarray(np.ndarray)
24        'gauge message': np.ndarray(GaugeMessage),
25        'calendar time': np.array(datetime)}
26    """
27    gauge_pocket_client = GaugePocketClient()
28    gauge_graph_client = GaugeGraphClient()
29
30    for idx in range(len(data['pressure'])):
31        list_gauges_calc = [get_entities(request)[i] for i in data['gauge message'][idx].GaugePocketIds if
32                            get_entities(request)[i].PocketType == PocketTypeEnum.CALCULATION.get_int_value()]
33
34        if len(list_gauges_calc) == 0:
35            # Создаем карман calc, если его нет
36            gauge_pocket_data = [GaugePocketCreateData(gauge_id=data['gauge message'][idx].Id,
37                                                       pocket_type=PocketTypeEnum.CALCULATION)]
38            gauge_pocket = [x for x in gauge_pocket_client.create_gauge_pockets(gauge_pocket_data)][0]
39            gauge_graph_data = [GaugeGraphCreateData(
40                gauge_pocket_id=gauge_pocket.Id,
41                graph_type=TypeGraphicEnum.PRESSURE,
42                calendar_time=data['calendar_time'][idx],
43                plot=Plot2DData(x=data['time'][idx], values=data['pressure'][idx]))]
44            gauge_graph = list(gauge_graph_client.create_graphs(gauge_graph_data))
45        else:
46            # Обновляем карман calc, если он есть
47            gauge_pocket = list_gauges_calc[-1]
48            gauge_graph_id = gauge_pocket.GaugeGraphIds[0]
49            gauge_graph_data = GaugeGraphUpdateData(
50                gauge_graph_id=gauge_graph_id,
51                calendar_time=data['calendar_time'][idx],
52                plot=Plot2DData(x=data['time'][idx], values=data['pressure'][idx]))
53            gauge_graph_client.update_graph(gauge_graph_data)
def send_gauge_data( request: custom_plugin_base.server.calculation.SolveRequest, data: Dict[str, numpy.ndarray]) -> None:
14def send_gauge_data(request: SolveRequest, data: Dict[str, np.ndarray]) -> None:
15    """
16    Sending the recalculated pressure to the calc pocket
17
18    Parameters
19    ----------
20    request: SolveRequest
21        Input request
22    data: dict[str, np.ndarray]
23        'pressure': np.ndarray(np.ndarray),
24        'time': np.ndarray(np.ndarray)
25        'gauge message': np.ndarray(GaugeMessage),
26        'calendar time': np.array(datetime)}
27    """
28    gauge_pocket_client = GaugePocketClient()
29    gauge_graph_client = GaugeGraphClient()
30
31    for idx in range(len(data['pressure'])):
32        list_gauges_calc = [get_entities(request)[i] for i in data['gauge message'][idx].GaugePocketIds if
33                            get_entities(request)[i].PocketType == PocketTypeEnum.CALCULATION.get_int_value()]
34
35        if len(list_gauges_calc) == 0:
36            # Создаем карман calc, если его нет
37            gauge_pocket_data = [GaugePocketCreateData(gauge_id=data['gauge message'][idx].Id,
38                                                       pocket_type=PocketTypeEnum.CALCULATION)]
39            gauge_pocket = [x for x in gauge_pocket_client.create_gauge_pockets(gauge_pocket_data)][0]
40            gauge_graph_data = [GaugeGraphCreateData(
41                gauge_pocket_id=gauge_pocket.Id,
42                graph_type=TypeGraphicEnum.PRESSURE,
43                calendar_time=data['calendar_time'][idx],
44                plot=Plot2DData(x=data['time'][idx], values=data['pressure'][idx]))]
45            gauge_graph = list(gauge_graph_client.create_graphs(gauge_graph_data))
46        else:
47            # Обновляем карман calc, если он есть
48            gauge_pocket = list_gauges_calc[-1]
49            gauge_graph_id = gauge_pocket.GaugeGraphIds[0]
50            gauge_graph_data = GaugeGraphUpdateData(
51                gauge_graph_id=gauge_graph_id,
52                calendar_time=data['calendar_time'][idx],
53                plot=Plot2DData(x=data['time'][idx], values=data['pressure'][idx]))
54            gauge_graph_client.update_graph(gauge_graph_data)

Sending the recalculated pressure to the calc pocket

Parameters

request: SolveRequest Input request data: dict[str, np.ndarray] 'pressure': np.ndarray(np.ndarray), 'time': np.ndarray(np.ndarray) 'gauge message': np.ndarray(GaugeMessage), 'calendar time': np.array(datetime)}