Attribute VB_Name = "Module1" 'DICHIARAZIONI UTILI Public MonXL As Object Public Fileopen As Boolean Public Nomegruppo As String 'Grafici Public plot1(5000) As Integer Public OpenPic(15) As Integer Public picforms(0 To 15) As New FRMPICTURE Public tipo 'definisce il tipo di grafico su finestra 1-310;2-510;3-710 Public tipo1 Public GraphDim 'tipo 1:310;tipo 2:510;tipo 3:710 Public GraphDimX(15) 'As Single 'As Integer Public GraphDimY(15) 'As Single 'As Integer Public GraphSqX 'As Single 'As Integer Public GraphSqY 'As Single 'As Integer Public ratioXY 'As Single Public MaxX(15) As Double Public MinX(15) As Double Public MaxY(15) As Double Public MinY(15) As Double Public OMaxX(15) As Double Public OMinX(15) As Double Public OMaxY(15) As Double Public OMinY(15) As Double Public deltax1(15) As Double Public deltay1(15) As Double Public CoordinataX As Integer Public Coordinatay As Integer Public IndexSel As Integer Public Intx(15) Public Inty(15) Public DiagramType(15) As String Public DiagramType1 As String Public numopX As Integer Public numopY As Integer Public tipoGraph(15) As String Public ChangeTri As Boolean Public Triangular(15) As Boolean Public Tp1(15) As Integer Public TypeDim(15) As Integer Public SelezioneX As Single Public SelezioneY As Single Public SelezCamp As String Public SelezCampCamB As String Public MF1 As New PedGraph Public Indeks As Integer Public Campione(5000, 15) As String Public xx(5000, 15) As Variant 'As Integer Public yy(5000, 15) As Variant 'As Integer Public XXReal(5000, 15) As Single Public YYReal(5000, 15) As Single Public ZZReal(5000, 15) As Single Public NumCamp(15) As Integer 'serve ad individuare un campione Public Maxindeks As Integer Public ActiveGraph(15) As Boolean 'public NumClassi As Integer 'serve ad individuare il numero delle classi di campioni Public Contatore As Integer 'serve ad immettere un nuovo campione ed individuare il numero di campioni Public Pictureopen(15) As Integer Public binary(15) As Boolean Public SPIDERREE(15) As Boolean Public SPIDEROTHER(15) As Boolean 'Assi binary Public AXX(15) As Integer Public AXY(15) As Integer 'Assi Triangular Public AxAa(15) As Variant Public AXB(15) As Variant Public AXC(15) As Variant Public GraphSelect As Integer Public Xgraph(15) As Integer Public Ygraph(15) As Integer Public BackCol As Variant Public LineSp(15) As Integer Public SimbSp(15) As Integer Public SimbDim(15) As Integer 'Acquisizione ed elaborazione dati Public DatiOrigine(5000, 100) As Double Public DatiOrigineAgg(5000, 100) As Double Public Elementi(100) As String 'ovvero le colonne dei dati di origine (nome degli elementi) Public DElementi(100) As Single Public ElementiAgg(100) As String Public NomeCamp(5000) As String 'ovvero le righe dei dati di origine (nome dei campioni) Public Numelem As Integer Public Numcamp1 As Integer Public NumElem0 As Integer Public NumElem1 As Integer Public FormSelezionato As String 'public NumcampDati(10) As Integer Public INP As New ElabDati Public StatResult Public ErrorElab As Boolean Public FinOpen As Integer 'modelli Public DatiModello(5000, 20) As Double Public CAss(20) As Single Public Crval(20) As Single Public ModElementi(100) As String 'ovvero le colonne dei dati di origine (nome degli elementi) Public ModElementiC(100) As String 'public ModNumElem As Integer Public NumcampMod As Integer Public AsseXop(5000) As String Public AsseYop(5000) As String Public ModXop(5000) As String Public ModYop(5000) As String Public ModAsseX(100) Public ModAssey(100) Public CambiaMod As Boolean Public MODiD As Integer Public ModelSymb Public ModelSymbSp As Integer Public ModelSymbWid Public ModelSymbCol Public ModelLineSp Public ModelLineCol Public Mod1 As Boolean Public NumModelElem2(100) As Integer Public NumModelElem As Integer Public model As New Modelli Public CampioneC0 As String Public CampioneCA As String Public CampioneC1 As String Public CampioneC2 As String Public CampioneCR As String Public CampioneCw As String Public CampioneCz As String Public NumModSpi(20) As Integer Public SPModello(50) Public SpModello0(50) Public C0M(100) As String Public CAM(100) As String Public C1M(100) As String Public C2M(100) As String Public CRM(100) As String Public CwM(100) As String Public CzM(100) As String Public numcampC0 As Integer Public numcampCA As Integer Public SelC0 As Boolean Public SelCA As Boolean Public SelC1 As Boolean Public SelC2 As Boolean Public SelC0I As Boolean Public SelCAI As Boolean Public SelCR As Boolean Public SelCw As Boolean Public SelCz As Boolean Public ModD(20) As Single Public ModDC(20) As Single Public ModDO(20) As Single Public ModPI(20) As Single Public NumModDati As Integer Public NumModelli(15) Public ModDRemember(20, 15) As Single Public initF(100, 100) As Single Public finF(100, 100) As Single Public StepFF(100, 100) As Single 'cambia simbolo colore Public OldCol As String Public OldSym As String Public RowSel1 As Integer 'calcolo norma Public CIPW As New CIPW Public ElemenCIPW(100) As String Public DatiCIPW(5000, 32) As Single Public CIPWyn As Boolean Public Colmodel As Integer Public ColModLine(25, 15) Public ColModSymb(25, 15) 'REE-Spider Public SPI As New REE Public REE(16) As String Public REE1(16) As Boolean Public valREE(16) Public valREEn(16) Public REEabsent(15) As Boolean Public REEabsent1(15) As Boolean Public REESelect(15) As Boolean Public NormREE(15) Public MinREE Public MaxREE Public SPIlineCol As Single Public SpiderColorLine(100) As Variant Public SPI1 As New SPIDER Public EleMSpider(40) As String Public ValSpider(40) As Single Public Spider1(40) As Boolean Public ValSpiderNorm(40) As Single Public NormSpider(40) As Single Public NumSpider As Integer Public MinSpider Public MaxSpider Public SpiderAbsent(40) As Boolean Public SpiderAbsent1(40) As Boolean Public SpiderSelect(40) As Boolean Public NormSP(200) As String Public NormSP1 As String Public SpiPlotted(200) As String Public REEcamp1(200) As String Public SpiNew As Boolean Public SpiderType(200) As String Public Spiy(15, 50, 50) As Single Public PlotSpi(15, 50) As Single Public wwq 'Spider Public CampioniSpi(200, 200) As Integer Public NumCampSpi(200) As Integer Public EuAnom(200) As Single Public YbAnom(200) As Single Public SumRee(200) As Single Public REEtype As String Public REEOperation As Boolean Public REESample As Integer 'non modal melting Public Minerale As Integer Public TipoCopia As String Public KeyVal(5000) As Integer Public Color(5000) As Integer 'Legenda Public TipoL(40) As Integer Public ColL(40) As Integer Public TipoS(40) As Integer Public ColS(40) As Integer Public IndexL As Integer Public SerieL(40) As String Public SerieS(40) As String Public NumL As Integer Public Legen As Boolean 'search Public Sel As Integer 'identifica Public Pick As Boolean Public id1 As Integer 'Partition Coefficent Public RcPC(1000) As String Public MinerPC(1000) As String Public ValuePC(1000) As Double Public ValueMinPC(1000) As Double Public ValueMaxPC(1000) As Double Public ReferencePC(1000) As String Public NumPC As Integer Public Iperbola As Boolean Public Mixip As Boolean Public ProgTrue As Boolean Public IperbolaC1 As Integer Public IperbolaC2 As Integer Public Tipoiper As String Public PB(15) As Single 'init Magma Public PF(15) As Single 'final Magma Public PBTOT As Single 'init Magma Public PFTOT As Single 'final Magma Public PBTOT100 As Single 'init Magma Public PFTOT100 As Single 'final Magma Public PB100(15) As Single 'init Magma Public PF100(15) As Single 'final Magma Public NumOx As Integer Public NumPh As Integer Public OX(15) As String Public Ph(15) As String Public PA(15, 15) As Single Public PA100(15, 15) As Single Public PATOT(15) As Single Public PATOT100(15) As Single Public MTOT(15) As Single 'somma totale Public u(15, 15) 'As Single Public USUM 'As Single Public UTU(15, 15) 'As Single Public BSUM 'As Single Public UTB(15) 'As Single Public DiffPFPB(15) 'As Single Public PROD(15, 15) 'As Single Public QPROD(15, 15) 'As Single Public d(15) Public CQ(15) Public RQ(15) Public DELTA(15) Public SYP(15) Public SYM(15) Public YYP(15) Public YYM(15) Public y(15) 'filtri Public NumFilter As Integer Public SimbFilter(5000) As Integer Public FiltVal(10) Public FiltElem(100) Public FiltOp(10) As Integer Public FilSelect Public StroMagma As Boolean Public StromerInd As Integer Public Sub LINEQF() 'DRMNT = 1 Dim z(15) eps = 10 ^ -30 MDSW = 0 NMI = NumPh - 1 For j = 1 To NMI JI = j + 1 LMAX = j RMAX = Abs(UTU(j, j)) For k = JI To NumPh RNEXT = Abs(UTU(k, j)) If RMAX >= RNEXT Then GoTo www1 RMAX = RNEXT LMAX = k www1: Next k If LMAX <> j Then GoTo www2 If Abs(UTU(j, j)) < eps Then GoTo www3 GoTo www4 www2: For l = j To NumPh w = UTU(j, l) UTU(j, l) = UTU(LMAX, l) UTU(LMAX, l) = w Next l w = UTB(j) UTB(j) = UTB(LMAX) UTB(LMAX) = w DRMNT = -DRMNT '??????????????????? www4: z(j) = 1 / UTU(j, j) For k = JI To NumPh If UTU(j, k) = 0 Then GoTo www5 w = -z(j) * UTU(k, j) For l = JI To NumPh UTU(k, l) = w * UTU(j, l) + UTU(k, l) NOTH = 1 '?????????????????????'' Next l UTB(k) = w * UTB(j) + UTB(k) www5: Next k Next j If Abs(UTU(NumPh, NumPh)) < 10 ^ -30 Then GoTo www3 z(NumPh) = 1 / UTU(NumPh, NumPh) UTB(NumPh) = z(NumPh) * UTB(NumPh) For k = 1 To NMI j = NumPh - k JI = j + 1 w = 0 For i = JI To NumPh w = UTU(j, i) * UTB(i) + w Next i UTB(j) = (UTB(j) - w) * z(j) Next k MDSW = 1 '???????????????????????? If DTRMNT = 0 Then GoTo www6 For j = 1 To NumPh DTRMNT = DTRMNT * UTU(j, j) Next j www6: www3: DTRNMT = 0 End Sub Public Function LOG10(num As Variant) If num <= 0 Then 'MsgBox "An Error Occurred: division by Zero" GoTo ioio End If LOG10 = Log(num) / Log(10) ioio: End Function Public Function EXP10(num As Variant) EXP10 = 10 ^ num End Function