public cCalculos(cSubTramo SubtramoOrigen, cEstacion EstacionOrigen) { this.SubtramoOrigen = SubtramoOrigen; Solicitacion_Asignado_Momentos = new cSolicitacion_Asignado_Momentos(this); Solicitacion_Asignado_Cortante = new c_Solicitacion_Asignado_Cortante(this); this.EstacionOrigen = EstacionOrigen; }
private void CrearEnvolventeConSimilitud() { cNervio NervioOrigen = CalculosOrigen.SubtramoOrigen.TramoOrigen.NervioOrigen; cEstacion EstacionOrigen = CalculosOrigen.EstacionOrigen; List <cSolicitacion> Lista_Solici2 = new List <cSolicitacion>(); Lista_Solici2.AddRange(lista_solicitaciones); if (NervioOrigen.SimilitudNervioCompleto.IsMaestro) { foreach (cNervio N in NervioOrigen.SimilitudNervioCompleto.NerviosSimilares) { cSubTramo SubTramo = (cSubTramo)N.Lista_Elementos.Find(y => y.Indice == CalculosOrigen.SubtramoOrigen.Indice); cEstacion EstacionFind = EstacionOrigen.EstacionMasCercana(SubTramo.Estaciones); Lista_Solici2.AddRange(EstacionFind.Lista_Solicitaciones); } } else if (NervioOrigen.SimilitudNervioCompleto.BoolSoySimiarA) { cNervio NervioQueEs = NervioOrigen.SimilitudNervioCompleto.SoySimiarA.FindNervio(); cSubTramo SubTramo = (cSubTramo)NervioQueEs.Lista_Elementos.Find(y => y.Indice == CalculosOrigen.SubtramoOrigen.Indice); cEstacion EstacionFind = EstacionOrigen.EstacionMasCercana(SubTramo.Estaciones); cSolicitacion cSolicitacion1 = new cSolicitacion("ENV", 0, -EstacionFind.Calculos.Envolvente.V2[0], 0, 0, EstacionFind.Calculos.Envolvente.M3[0], 0); cSolicitacion cSolicitacion2 = new cSolicitacion("ENV2", 0, -EstacionFind.Calculos.Envolvente.V2[1], 0, 0, EstacionFind.Calculos.Envolvente.M3[1], 0); Lista_Solici2.Add(cSolicitacion1); Lista_Solici2.Add(cSolicitacion2); } float M3MaxPositivo = Lista_Solici2.FindAll(x => x.SelectEnvolvente).Max(x => x.M3); float M3MaxNegativo = Lista_Solici2.FindAll(x => x.SelectEnvolvente).Min(x => x.M3); float V2MaxPositivo = Lista_Solici2.FindAll(x => x.SelectEnvolvente).Max(x => x.V2); float V2MaxNegativo = Lista_Solici2.FindAll(x => x.SelectEnvolvente).Min(x => x.V2); if (M3MaxPositivo < 0) { M3MaxPositivo = 0; } if (M3MaxNegativo > 0) { M3MaxNegativo = 0; } if (V2MaxPositivo < 0) { V2MaxPositivo = 0; } if (V2MaxNegativo > 0) { V2MaxNegativo = 0; } M3 = new float[] { M3MaxPositivo, M3MaxNegativo }; V2 = new float[] { -V2MaxPositivo, -V2MaxNegativo }; Envolvente_CambioCrearEnvolvente(); }
public float AporteMomentoAEstacion(cEstacion Estacion, cSubTramo SubTramo) { float B = SubTramo.Seccion.B; float H = SubTramo.Seccion.H; float fc = SubTramo.Seccion.Material.fc; float d1 = SubTramo.TramoOrigen.NervioOrigen.r1 + cDiccionarios.DiametrosBarras[noBarra] / 2; float d2 = SubTramo.TramoOrigen.NervioOrigen.r2 + cDiccionarios.DiametrosBarras[noBarra] / 2; float fy = SubTramo.Seccion.Material.fy; return(ubicacionRefuerzo == eUbicacionRefuerzo.Inferior ? B_FC_DiseñoVigas.DiseñoYRevisonVigasRectangulares.Revision(B, H, d2, d1, fc, fy, AporteAceroAEstacion(Estacion, SubTramo), 0f)[0] * cConversiones.Momento__kgf_cm_to_Ton_m : B_FC_DiseñoVigas.DiseñoYRevisonVigasRectangulares.Revision(B, H, d1, d2, fc, fy, AporteAceroAEstacion(Estacion, SubTramo), 0f)[0] * cConversiones.Momento__kgf_cm_to_Ton_m); }
public override bool Equals(object obj) { if (obj is cEstacion) { cEstacion temp = (cEstacion)obj; if (temp.StoryLinea == StoryLinea & temp.NombreLinea == NombreLinea & temp.Localizacion == Localizacion) { return(true); } } return(false); }
public cEstacion EstacionMasCercana(List <cEstacion> Estaciones) { float MenorDistancia = 99999; cEstacion EstacionCercana = null; foreach (cEstacion Estacion in Estaciones) { float Distancia = Math.Abs(Estacion.CoordX - CoordX); if (Distancia < MenorDistancia) { MenorDistancia = Distancia; EstacionCercana = Estacion; } } return(EstacionCercana); }
public float AporteAceroAEstacion(cEstacion Estacion, cSubTramo Subtramo) { float XE = (float)Math.Round(Subtramo.Vistas.Perfil_Original.Reales.Min(X => X.X) + Estacion.CoordX, cVariables.CifrasDeciLongBarra); float Ld = traslapo; float xiL = xi; float xfL = xf; if (Subtramo.Indice == 0) { xiL = (float)Math.Floor((xiL - cVariables.RExtremoIzquierdo) * 100f) / 100f; } else if (Subtramo.Indice == TendenciaOrigen.Tendencia_Refuerzo_Origen.NervioOrigen.Lista_Elementos.Last().Indice) { xfL = (float)Math.Ceiling((xfL + cVariables.RExtremoDerecho) * 100f) / 100f; } if (xiL <= XE && XE <= xiL + Ld) { if (!traslapoIzquieda && ganchoIzquierdo == eTipoGancho.None) { return(cFunctionsProgram.InterpolacionY(xiL, 0f, xiL + Ld, AreaTotal, XE)); } else { return(AreaTotal); } } else if (xfL - Ld <= XE && XE <= xfL) { if (!traslapoDerecha && ganchoDerecha == eTipoGancho.None) { return(cFunctionsProgram.InterpolacionY(xfL - Ld, AreaTotal, xfL, 0f, XE)); } else { return(AreaTotal); } } else if (xiL <= XE && XE <= xfL) { return(AreaTotal); } else { return(0f); } }
public bool EstacionEnBarra(cEstacion Estacion, cSubTramo Subtramo) { if (AreaTotal != 0) { float xiL = xi; float xfL = xf; if (Subtramo.Indice == 0) { xiL -= cVariables.RExtremoIzquierdo; } else if (Subtramo.Indice == TendenciaOrigen.Tendencia_Refuerzo_Origen.NervioOrigen.Lista_Elementos.Last().Indice) { xfL += cVariables.RExtremoDerecho; xfL = (float)Math.Ceiling(xfL * 100f) / 100f; } float CoordenaXMenor = Subtramo.Vistas.Perfil_Original.Reales.Min(X => X.X); float A = (float)Math.Ceiling(xfL * 100f) / 100f; float XE = (float)Math.Round(CoordenaXMenor + Estacion.CoordX, cVariables.CifrasDeciLongBarra); return(Math.Floor(xiL * 100f) / 100f <= CoordenaXMenor + Estacion.CoordX && XE <= xfL); } else { return(false); } }
public cPuntoInfelxion(cEstacion Estacion) { SubTramo = Estacion.SubTramoOrigen; CoordX = Estacion.CoordX + SubTramo.Vistas.Perfil_Original.Reales.Min(x => x.X); }