fluxcontrol/genCurvas.py
Oscar Suescun Elizalde 4d8f247668 correccion main
2025-03-31 11:06:30 +02:00

105 lines
2.4 KiB
Python

import numpy as np
import pandas as pd
import random, os, json
def valores_objetivo(archivo, material):
carga = pd.read_excel(archivo, sheet_name='carga', engine='openpyxl').dropna()
E = np.mean(carga.loc[carga['material'] == material, ['V1', 'V2']].values, axis=1)
I = np.mean(carga.loc[carga['material'] == material, ['I1', 'I2']].values, axis=1)
f = np.array(carga['f'][carga['material'] == material])
return E, I, f
def generar_curva(offset, ruta):
muVacio = 4 * np.pi * 1e-7
with open("h_values.json", "r") as f : h = np.array(json.load(f))
b = muVacio * h + offset
with open(ruta, "w") as f:
f.write('[PLACOND]\n')
f.write('Type=Fixed_Solid\n')
f.write('Solid Type=Plastic\n')
f.write('Thermal Conductivity=0\n')
f.write('Specific Heat=0\n')
f.write('Density=1850\n')
f.write('Notes=\n')
f.write('ElectricalResistivity=0\n')
f.write('TempCoefElectricalResistivity=0\n')
f.write('PoissonsRatio=0\n')
f.write('YoungsCoefficient=0\n')
f.write('YieldStress=0\n')
f.write(f'BValue[0]=0\n')
f.write(f'HValue[0]=0\n')
for i in np.arange(len(h)):
f.write(f'BValue[{i+1}]={b[i]}\n')
f.write(f'HValue[{i+1}]={h[i]}\n')
def logica_offset(offset, error, errorObjetivo):
'''
Coge el offset, error actual y lo analiza.
devuelve flag y offset nuevo
si se cumple la condicion devuelve
un True y None para offset
'''
limSup = 1 + errorObjetivo
limInf = 1 - errorObjetivo
delta = random.random() * 1e-6
if error <= limSup and error >= limInf: return True, None
if error > 1: offset = offset - delta
elif error < 1: offset = offset + delta
return False, offset
if __name__ == '__main__':
'''
Esto solo se activa si se lanza este script en concreto
no si se invocan las funciones desde otro script.
Contiene ejemplos de como funciona el codigo para ver
como funciona todo
'''
directorio = ''
nombre = "PLACond.mdb"
ruta = f'{directorio}{nombre}'
offset = 0
generar_curva(offset,ruta)
# B = 1e-2
# BObjetivo = 2e-2
# errorObjetivo = 0.01
# flag = False
# while flag == False:
# os.system('cls')
# B = B + offset
# error = B/BObjetivo
# print(B)
# print(error)
# flag, offset = logica_offset(offset, error, errorObjetivo)