def setLimites(U0): #----------------------------------------------------------- #variáveis globais #---------------------------------------------------------- glob = GlobalVariables() thetaM = glob.getThetaM() phiM = glob.getPhiM() KM = glob.getKM() BSSM = glob.getBSSM() #global thetaM, phiM, KM, BSSM #----------------------------------------------------------- #Separar as variaveis de controle #---------------------------------------------------------- u1 = U0[0, 0] u2 = U0[1, 0] u3 = U0[2, 0] u4 = U0[3, 0] u5 = U0[4, 0] #----------------------------------------------------------- #tratar os dados da variável de controle - theta #----------------------------------------------------------- if u1 < 0: u1 = 0 if u1 > thetaM: u1 = thetaM #----------------------------------------------------------- #tratar os dados da variável de controle - phi #----------------------------------------------------------- if u2 < 0: u2 = 0 if u2 > phiM: u2 = phiM #----------------------------------------------------------- #tratar os dados da variável de controle - K #----------------------------------------------------------- if u3 < 0: u3 = 0 if u3 > KM: u3 = KM #----------------------------------------------------------- #tratar os dados da variável de controle - BSS #----------------------------------------------------------- if u4 < 0: u4 = 0 if u4 > BSSM: u4 = BSSM #----------------------------------------------------------- #retorno da função #vetor corrigido #----------------------------------------------------------- U = np.array([[u1], [u2], [u3], [u4], [u5]]) return U
zod = 0.22 #0.244 #z inicial (muito pequeno apens alguns centimetros) dxod = 0.24 #velocidade desejada no MS dyod = 0.00 #condição de balanço dzod = 0.00 #velocidade em z (igual a zero condição necessaria) #----------------------------------------------------------- #Tamanho do passo (não sendo usado ainda estudar como incorporar #esse dado) #----------------------------------------------------------- lstep = 0.5 + 0.1 * (dxod - 1) #----------------------------------------------------------- #valores máximos das variáveis de controle #reduzir o espaço de busca #----------------------------------------------------------- thetaM = glob.getThetaM() phiM = glob.getPhiM() KM = glob.getKM() expK = glob.getExpK() #ordem de grandeza da constante massa-mola BSSM = glob.getBSSM() #params = [thetaM;phiM;KM;expK;BSSM]; #----------------------------------------------------------- #variavel de controle inicial #modificar os valores obtidos aqui #Geralmente na literatura são usados x para variável de estado #e u para a variável de controle sendo usados essas letras #em maiusculo para representação #----------------------------------------------------------- #phi = 0.5000000000 #theta = 0.3801423352 #k = 19611.4821640244