def extraction_Kirch_DiodeV2Mod2DirectBranch():
    """
    [Реестровая]

    :return:
    """
    global FT
    global foldername

    funcf=solver_Kirch_DiodeV2Mod2DirectBranch
    jacf = Jac_Kirch_DiodeV2Mod2DirectBranch
    c={}
    Ve=np.array([ [1e-5] ]  )
    #       0           1       2     3   4    5    6
    btrue=[1.238e-14, 1.8,  1.123e-14, 1.5, 1.12, 0.5, 123.]
    bstart=np.array(btrue)-np.array(btrue)*0.3
    bend=np.array(btrue)+np.array(btrue)*0.3
    #binit=[1.1e-14, 1.5,  1.1e-14, 1.9, 1.0, 0.8, 100.]
    binit = np.array(btrue)-np.array(btrue)*0.1

    xstart=[0.001]
    xend=[1.5]
    N=40 #число точек в плане (для планов, кроме априорного)
    NArprior=20 #число точек в априорном плане


    #Получаем априорный план
    import os

    filename =foldername+'/'+os.path.basename(__file__).replace('.py','N{0}_plan'.format (NArprior))
    try:
        oplan=o_p.readPlanFromFile(filename) #переключение на чтение априорного плана из файла
        print ("Read file successful")
    except BaseException as e:
        oplan=o_ap.grandApriornPlanning (xstart, xend, NArprior, bstart, bend, c, Ve, jacf, funcf, Ntries=6, verbose=True)[1]
        o_p.writePlanToFile(oplan, filename)

    newxstart=1.4
    oplan = [item for item in oplan if item[0]<newxstart]

    measdata = o_p.makeMeasAccToPlan_lognorm(funcf, oplan, btrue, c,Ve )


    gknuxlim = o_el.grandCountGN_UltraX1_Limited_wrapper(funcf,jacf,measdata,binit,bstart,bend, c, implicit=True, verbose=False, verbose_wrapper=True )
    #gknux = o_e.grandCountGN_UltraX1(funcf, jacf, measdata, binit, c, implicit=True)

    gknuxlim2=o_q.convertToQualitatStandart (gknuxlim, funcf, jacf,  measdata, c, Ve, name='Limited Count Aprior')
    #gknux2=o_q.convertToQualitatStandart (gknux, funcf, jacf,  measdata, c, Ve, name='Normal Count Aprior')

    o_q.printQualitatStandart (gknuxlim2)
def  gknuxfunc_lambda (plan, binit, bstart, bend, Ve):
    """

    :param plan:
    :param binit:
    :param bstart:
    :param bend:
    :param Ve:
    :return:
    """
    global btrue, c, xstart, xend, funcf, jacf
    try:
        measdata = o_p.makeMeasAccToPlan_lognorm(funcf, plan, btrue, c,Ve )
    except:
        return None

    gknuxlim = o_el.grandCountGN_UltraX1_Limited_wrapper(funcf,jacf,measdata,binit,bstart,bend, c, implicit=True, verbose=False, verbose_wrapper=False )
    try:
        gknuxlim2=o_q.convertToQualitatStandart (gknuxlim, funcf, jacf,  measdata, c, Ve, name='Limited Count Aprior Dependency')
    except:
        return None
    return gknuxlim2
def extraction_Diode_Irev_Limited():
    """
    пробуем экстрагировать коэффициенты из модели диода
    коэффициенты модели: Ток утечки Is, коэффициент неидеальности N, омическое сопротивление, параллельное диоду R
    входные параметры: напряжение, приложенное источником к системе резистор-диод
    +-----------|||||---------->|--------- -
    Резистор подключен до диода
    :return:
    """

    global FT
    global foldername

    #возвращает значение y
    funcf=solver_Diode_Irev_Limited
    jacf = jac_Diode_Irev_Limited
    #теперь попробуем сделать эксперимент.
    c={}

    Ve=np.array([ [1.34e-7] ]  ) #согласно погрешности на мультиметре CHROMA 12061
    #btrue=[5.31656e-8,2 ,.0392384] #номинальные значения диода D1N4001
    btrue=[5e-8, 400 ,.0422] #номинальные значения диода D1N4001 с сайта, вроде официальной модели производителя


    # V=x[0] #напряжение на диоде, в данном случае обратное
    # IBV=b[0]
    # BV=b[1]
    # R=b[2]

    bstart=np.array(btrue)-np.array(btrue)*0.1
    bend=np.array(btrue)+np.array(btrue)*0.1


    print('conditions:')
    print(bstart)
    print(bend)


    binit=[5e-8, 400 ,.0422] #номинальные значения диода D1N4001 с сайта, вроде официальной модели производителя



    xstart=[399]
    xend=[401]
    N=30


    print("performing uniform plan:")
    plan = o_p.makeUniformExpPlan(xstart,xend, N)
    measdata = o_p.makeMeasAccToPlan(funcf, plan, btrue, c,None )
    print (measdata)
    plotPlanAndMeas2D(measdata)

    exit(0)







    print("performing aprior plan:")

#примитивная попытка автоматизировать, риальни надо кешировать в файл под хешем параметров

    import os
    filename =foldername+'/'+'RD_11N4004_'+os.path.basename(__file__).replace('.py','_plan')
    try:
        oplan=o_p.readPlanFromFile(filename) #переключение на чтение априорного плана из файла
        print ("Read file successful")
    except BaseException as e:
        oplan=o_ap.grandApriornPlanning (xstart, xend, N, bstart, bend, c, Ve, jacf, funcf, Ntries=6, verbose=True)[1]
        o_p.writePlanToFile(oplan, filename)





#    получаем измеренные данные
    measdata = o_p.makeMeasAccToPlan_lognorm(funcf, oplan, btrue, c,Ve )
#     #чертим эти данные
#     #o_pl.plotPlanAndMeas2D(measdata, 'Aprior Disp{0} measdata'.format(Ve))
#
#     #оценка


    #grandCountGN_UltraX1_Limited_wrapper (funcf, jacf,  measdata:list, binit:list, bstart:list, bend:list, c, A, NSIG=50, NSIGGENERAL=50, implicit=False, verbose=False, verbose_wrapper=False):

    gknuxlim = o_el.grandCountGN_UltraX1_Limited_wrapper(funcf,jacf,measdata,binit,bstart,bend, c, implicit=True, verbose=False, verbose_wrapper=False )
    gknux = o_e.grandCountGN_UltraX1(funcf, jacf, measdata, binit, c, implicit=True)

    gknuxlim2=o_q.convertToQualitatStandart (gknuxlim, funcf, jacf,  measdata, c, Ve, name='Limited Count Aprior')
    gknux2=o_q.convertToQualitatStandart (gknux, funcf, jacf,  measdata, c, Ve, name='Normal Count Aprior')

    o_q.printQualitatStandart (gknuxlim2)
    o_q.printQualitatStandart (gknux2)
def extraction_Diode_Irev_Limited():
    """
    пробуем экстрагировать коэффициенты из модели диода
    коэффициенты модели: Ток утечки Is, коэффициент неидеальности N, омическое сопротивление, параллельное диоду R
    входные параметры: напряжение, приложенное источником к системе резистор-диод
    +-----------|||||---------->|--------- -
    Резистор подключен до диода
    :return:
    """

    global FT
    global foldername

    #возвращает значение y
    funcf = solver_Diode_Irev_Limited
    jacf = jac_Diode_Irev_Limited
    #теперь попробуем сделать эксперимент.
    c = {}

    Ve = np.array([[1.34e-7]
                   ])  #согласно погрешности на мультиметре CHROMA 12061
    #btrue=[5.31656e-8,2 ,.0392384] #номинальные значения диода D1N4001
    btrue = [
        5e-8, 400, .0422
    ]  #номинальные значения диода D1N4001 с сайта, вроде официальной модели производителя

    # V=x[0] #напряжение на диоде, в данном случае обратное
    # IBV=b[0]
    # BV=b[1]
    # R=b[2]

    bstart = np.array(btrue) - np.array(btrue) * 0.1
    bend = np.array(btrue) + np.array(btrue) * 0.1

    print('conditions:')
    print(bstart)
    print(bend)

    binit = [
        5e-8, 400, .0422
    ]  #номинальные значения диода D1N4001 с сайта, вроде официальной модели производителя

    xstart = [399]
    xend = [401]
    N = 30

    print("performing uniform plan:")
    plan = o_p.makeUniformExpPlan(xstart, xend, N)
    measdata = o_p.makeMeasAccToPlan(funcf, plan, btrue, c, None)
    print(measdata)
    plotPlanAndMeas2D(measdata)

    exit(0)

    print("performing aprior plan:")

    #примитивная попытка автоматизировать, риальни надо кешировать в файл под хешем параметров

    import os
    filename = foldername + '/' + 'RD_11N4004_' + os.path.basename(
        __file__).replace('.py', '_plan')
    try:
        oplan = o_p.readPlanFromFile(
            filename)  #переключение на чтение априорного плана из файла
        print("Read file successful")
    except BaseException as e:
        oplan = o_ap.grandApriornPlanning(xstart,
                                          xend,
                                          N,
                                          bstart,
                                          bend,
                                          c,
                                          Ve,
                                          jacf,
                                          funcf,
                                          Ntries=6,
                                          verbose=True)[1]
        o_p.writePlanToFile(oplan, filename)


#    получаем измеренные данные
    measdata = o_p.makeMeasAccToPlan_lognorm(funcf, oplan, btrue, c, Ve)
    #     #чертим эти данные
    #     #o_pl.plotPlanAndMeas2D(measdata, 'Aprior Disp{0} measdata'.format(Ve))
    #
    #     #оценка

    #grandCountGN_UltraX1_Limited_wrapper (funcf, jacf,  measdata:list, binit:list, bstart:list, bend:list, c, A, NSIG=50, NSIGGENERAL=50, implicit=False, verbose=False, verbose_wrapper=False):

    gknuxlim = o_el.grandCountGN_UltraX1_Limited_wrapper(funcf,
                                                         jacf,
                                                         measdata,
                                                         binit,
                                                         bstart,
                                                         bend,
                                                         c,
                                                         implicit=True,
                                                         verbose=False,
                                                         verbose_wrapper=False)
    gknux = o_e.grandCountGN_UltraX1(funcf,
                                     jacf,
                                     measdata,
                                     binit,
                                     c,
                                     implicit=True)

    gknuxlim2 = o_q.convertToQualitatStandart(gknuxlim,
                                              funcf,
                                              jacf,
                                              measdata,
                                              c,
                                              Ve,
                                              name='Limited Count Aprior')
    gknux2 = o_q.convertToQualitatStandart(gknux,
                                           funcf,
                                           jacf,
                                           measdata,
                                           c,
                                           Ve,
                                           name='Normal Count Aprior')

    o_q.printQualitatStandart(gknuxlim2)
    o_q.printQualitatStandart(gknux2)
def extraction_Kirch_DiodeV2Mod2DirectBranch():
    """
    [Реестровая]

    :return:
    """
    global FT
    global foldername

    funcf = solver_Kirch_DiodeV2Mod2DirectBranch
    jacf = Jac_Kirch_DiodeV2Mod2DirectBranch
    c = {}
    Ve = np.array([[1e-5]])
    #       0           1       2     3   4    5    6
    btrue = [1.238e-14, 1.8, 1.123e-14, 1.5, 1.12, 0.5, 123.]
    bstart = np.array(btrue) - np.array(btrue) * 0.3
    bend = np.array(btrue) + np.array(btrue) * 0.3
    #binit=[1.1e-14, 1.5,  1.1e-14, 1.9, 1.0, 0.8, 100.]
    binit = np.array(btrue) - np.array(btrue) * 0.1

    xstart = [0.001]
    xend = [1.5]
    N = 40  #число точек в плане (для планов, кроме априорного)
    NArprior = 20  #число точек в априорном плане

    #Получаем априорный план
    import os

    filename = foldername + '/' + os.path.basename(__file__).replace(
        '.py', 'N{0}_plan'.format(NArprior))
    try:
        oplan = o_p.readPlanFromFile(
            filename)  #переключение на чтение априорного плана из файла
        print("Read file successful")
    except BaseException as e:
        oplan = o_ap.grandApriornPlanning(xstart,
                                          xend,
                                          NArprior,
                                          bstart,
                                          bend,
                                          c,
                                          Ve,
                                          jacf,
                                          funcf,
                                          Ntries=6,
                                          verbose=True)[1]
        o_p.writePlanToFile(oplan, filename)

    newxstart = 1.4
    oplan = [item for item in oplan if item[0] < newxstart]

    measdata = o_p.makeMeasAccToPlan_lognorm(funcf, oplan, btrue, c, Ve)

    gknuxlim = o_el.grandCountGN_UltraX1_Limited_wrapper(funcf,
                                                         jacf,
                                                         measdata,
                                                         binit,
                                                         bstart,
                                                         bend,
                                                         c,
                                                         implicit=True,
                                                         verbose=False,
                                                         verbose_wrapper=True)
    #gknux = o_e.grandCountGN_UltraX1(funcf, jacf, measdata, binit, c, implicit=True)

    gknuxlim2 = o_q.convertToQualitatStandart(gknuxlim,
                                              funcf,
                                              jacf,
                                              measdata,
                                              c,
                                              Ve,
                                              name='Limited Count Aprior')
    #gknux2=o_q.convertToQualitatStandart (gknux, funcf, jacf,  measdata, c, Ve, name='Normal Count Aprior')

    o_q.printQualitatStandart(gknuxlim2)
def extraction_Diode_In_Limited():
    """
    пробуем экстрагировать коэффициенты из модели диода
    коэффициенты модели: Ток утечки Is, коэффициент неидеальности N, омическое сопротивление, параллельное диоду R
    входные параметры: напряжение, приложенное источником к системе резистор-диод
    +-----------|||||---------->|--------- -
    Резистор подключен до диода
    :return:
    """

    global FT
    global foldername

    #возвращает значение y
    funcf = solver_Diode_In_Limited
    jacf = jac_Diode_In_Limited
    #теперь попробуем сделать эксперимент.
    c = {}
    Ve = np.array([[0.00000001]])
    btrue = [1.238e-14, 1.8, 100]
    #btrue=[1.5e-14, 1.75, 150]

    bstart = np.array(btrue) - np.array(btrue) * 0.3
    bend = np.array(btrue) + np.array(btrue) * 0.3002
    #binit=np.array(btrue)-np.array(btrue)*0.1

    print('conditions:')
    print(bstart)
    print(bend)

    binit = [1.1e-14, 1.5, 90]
    xstart = [0.001]
    xend = [2]
    N = 20
    print("performing aprior plan:")

    #примитивная попытка автоматизировать, риальни надо кешировать в файл под хешем параметров

    import os
    filename = foldername + '/' + os.path.basename(__file__).replace(
        '.py', '_plan')
    try:
        oplan = o_p.readPlanFromFile(
            filename)  #переключение на чтение априорного плана из файла
        print("Read file successful")
    except BaseException as e:
        oplan = o_ap.grandApriornPlanning(xstart,
                                          xend,
                                          N,
                                          bstart,
                                          bend,
                                          c,
                                          Ve,
                                          jacf,
                                          funcf,
                                          Ntries=6,
                                          verbose=True)[1]
        o_p.writePlanToFile(oplan, filename)

#    получаем измеренные данные
    measdata = o_p.makeMeasAccToPlan_lognorm(funcf, oplan, btrue, c, Ve)
    #     #чертим эти данные
    #     #o_pl.plotPlanAndMeas2D(measdata, 'Aprior Disp{0} measdata'.format(Ve))
    #
    #     #оценка

    #grandCountGN_UltraX1_Limited_wrapper (funcf, jacf,  measdata:list, binit:list, bstart:list, bend:list, c, A, NSIG=50, NSIGGENERAL=50, implicit=False, verbose=False, verbose_wrapper=False):

    gknuxlim = o_el.grandCountGN_UltraX1_Limited_wrapper(funcf,
                                                         jacf,
                                                         measdata,
                                                         binit,
                                                         bstart,
                                                         bend,
                                                         c,
                                                         implicit=True,
                                                         verbose=False,
                                                         verbose_wrapper=False)
    gknux = o_e.grandCountGN_UltraX1(funcf,
                                     jacf,
                                     measdata,
                                     binit,
                                     c,
                                     implicit=True)

    gknuxlim2 = o_q.convertToQualitatStandart(gknuxlim,
                                              funcf,
                                              jacf,
                                              measdata,
                                              c,
                                              Ve,
                                              name='Limited Count Aprior')
    gknux2 = o_q.convertToQualitatStandart(gknux,
                                           funcf,
                                           jacf,
                                           measdata,
                                           c,
                                           Ve,
                                           name='Normal Count Aprior')

    o_q.printQualitatStandart(gknuxlim2)
    o_q.printQualitatStandart(gknux2)


#extraction_Diode_Irev_Limited()
Beispiel #7
0
def extractionRD():
    """
    пробуем экстрагировать коэффициенты из модели диода
    коэффициенты модели: Ток утечки Is, коэффициент неидеальности N, омическое сопротивление, параллельное диоду R
    входные параметры: напряжение, приложенное источником к системе резистор-диод
    +-----------|||||---------->|--------- -
    Резистор подключен до диода
    :return:
    """

    global FT
    global foldername

    #возвращает значение y
    funcf = solver_Diode_In_Limited
    jacf = jac_Diode_In_Limited
    #теперь попробуем сделать эксперимент.
    c = {}

    Ve = np.array([[1.34e-7]
                   ])  #согласно погрешности на мультиметре CHROMA 12061
    #btrue=[5.31656e-8,2 ,.0392384] #номинальные значения диода D1N4001
    btrue = [
        7.69e-8, 1.45, .0422
    ]  #номинальные значения диода D1N4001 с сайта, вроде официальной модели производителя
    # V=x[0] #напряжение на диоде
    # Is=b[0]
    # N=b[1]
    # R=b[2]

    bstart = np.array(btrue) - np.array(btrue) * 0.2
    bend = np.array(btrue) + np.array(btrue) * 0.2
    #binit=np.array(btrue)-np.array(btrue)*0.1

    print('conditions:')
    print(bstart)
    print(bend)

    binit = [
        7.69e-8, 1.45, .0422
    ]  #номинальные значения диода D1N4001 с сайта, вроде официальной модели производителя
    xstart = [0.001]
    xend = [1.1]
    N = 20

    folderData = '/home/reiner/RDReports/DiodeProof'
    realout = sys.stdout

    listOfMeasdatas = ord.grfiles(folderData)

    for measdata in listOfMeasdatas:

        print(measdata[1])
        print(measdata[0])

        sys.stdout = open(folderData + '/' + 'resGr.res',
                          'a')  # Перенаправить вывод в файл
        print(measdata[1])
        print(measdata[0])
        gknuxlim = o_el.grandCountGN_UltraX1_Limited_wrapper(
            funcf,
            jacf,
            measdata[0],
            binit,
            bstart,
            bend,
            c,
            implicit=True,
            verbose=False,
            verbose_wrapper=False)
        gknuxlim2 = o_q.convertToQualitatStandart(gknuxlim,
                                                  funcf,
                                                  jacf,
                                                  measdata[0],
                                                  c,
                                                  Ve,
                                                  name='Limited Count Aprior')
        o_q.printQualitatStandart(gknuxlim2)

        title = measdata[1]
        twographsfigname = ''.join([folderData, '/', 'twgr_', title, '.png'])
        Rgraphsfigname = ''.join([folderData, '/', 'R_', title, '.png'])

        plotMeasAndModelled(
            measdata[0], funcf, gknuxlim2['b'], twographsfigname, title
        )  #начертить два графика - реальный (синий) и моделированный (красный)

        #o_pl.plotSkGraph(gknuxlim, title='', filename=None) #чертит дроп ск по итерациям - бред, на последнем прогоне лимитед их всего пара штук))

        #o_q.analyseDifList(gknuxlim, True, )

        try:
            o_q.analyseDifList(gknuxlim2, True, title, filename=Rgraphsfigname
                               )  #числовой режим, вектора не поддерживаются
        except:
            pass

        sys.stdout.close()

        sys.stdout = realout
def extraction_Diode_In_Limited():
    """
    пробуем экстрагировать коэффициенты из модели диода
    коэффициенты модели: Ток утечки Is, коэффициент неидеальности N, омическое сопротивление, параллельное диоду R
    входные параметры: напряжение, приложенное источником к системе резистор-диод
    +-----------|||||---------->|--------- -
    Резистор подключен до диода
    :return:
    """

    global FT
    global foldername

    #возвращает значение y
    funcf=solver_Diode_In_Limited
    jacf = jac_Diode_In_Limited
    #теперь попробуем сделать эксперимент.
    c={}
    Ve=np.array([ [0.00000001] ]  )
    btrue=[1.238e-14, 1.8, 100]
    #btrue=[1.5e-14, 1.75, 150]

    bstart=np.array(btrue)-np.array(btrue)*0.3
    bend=np.array(btrue)+np.array(btrue)*0.3002
    #binit=np.array(btrue)-np.array(btrue)*0.1

    print('conditions:')
    print(bstart)
    print(bend)


    binit=[1.1e-14, 1.5, 90]
    xstart=[0.001]
    xend=[2]
    N=20
    print("performing aprior plan:")

#примитивная попытка автоматизировать, риальни надо кешировать в файл под хешем параметров

    import os
    filename =foldername+'/'+os.path.basename(__file__).replace('.py','_plan')
    try:
        oplan=o_p.readPlanFromFile(filename) #переключение на чтение априорного плана из файла
        print ("Read file successful")
    except BaseException as e:
        oplan=o_ap.grandApriornPlanning (xstart, xend, N, bstart, bend, c, Ve, jacf, funcf, Ntries=6, verbose=True)[1]
        o_p.writePlanToFile(oplan, filename)

#    получаем измеренные данные
    measdata = o_p.makeMeasAccToPlan_lognorm(funcf, oplan, btrue, c,Ve )
#     #чертим эти данные
#     #o_pl.plotPlanAndMeas2D(measdata, 'Aprior Disp{0} measdata'.format(Ve))
#
#     #оценка


    #grandCountGN_UltraX1_Limited_wrapper (funcf, jacf,  measdata:list, binit:list, bstart:list, bend:list, c, A, NSIG=50, NSIGGENERAL=50, implicit=False, verbose=False, verbose_wrapper=False):

    gknuxlim = o_el.grandCountGN_UltraX1_Limited_wrapper(funcf,jacf,measdata,binit,bstart,bend, c, implicit=True, verbose=False, verbose_wrapper=False )
    gknux = o_e.grandCountGN_UltraX1(funcf, jacf, measdata, binit, c, implicit=True)

    gknuxlim2=o_q.convertToQualitatStandart (gknuxlim, funcf, jacf,  measdata, c, Ve, name='Limited Count Aprior')
    gknux2=o_q.convertToQualitatStandart (gknux, funcf, jacf,  measdata, c, Ve, name='Normal Count Aprior')

    o_q.printQualitatStandart (gknuxlim2)
    o_q.printQualitatStandart (gknux2)






#extraction_Diode_Irev_Limited()
def extractionRD():
    """
    пробуем экстрагировать коэффициенты из модели диода
    коэффициенты модели: Ток утечки Is, коэффициент неидеальности N, омическое сопротивление, параллельное диоду R
    входные параметры: напряжение, приложенное источником к системе резистор-диод
    +-----------|||||---------->|--------- -
    Резистор подключен до диода
    :return:
    """



    global FT
    global foldername

    #возвращает значение y
    funcf=solver_Diode_In_Limited
    jacf = jac_Diode_In_Limited
    #теперь попробуем сделать эксперимент.
    c={}

    Ve=np.array([ [1.34e-7] ]  ) #согласно погрешности на мультиметре CHROMA 12061
    #btrue=[5.31656e-8,2 ,.0392384] #номинальные значения диода D1N4001
    btrue=[7.69e-8, 1.45 ,.0422] #номинальные значения диода D1N4001 с сайта, вроде официальной модели производителя
    # V=x[0] #напряжение на диоде
    # Is=b[0]
    # N=b[1]
    # R=b[2]

    bstart=np.array(btrue)-np.array(btrue)*0.2
    bend=np.array(btrue)+np.array(btrue)*0.2
    #binit=np.array(btrue)-np.array(btrue)*0.1

    print('conditions:')
    print(bstart)
    print(bend)

    binit=[7.69e-8, 1.45 ,.0422] #номинальные значения диода D1N4001 с сайта, вроде официальной модели производителя
    xstart=[0.001]
    xend=[1.1]
    N=20


    folderData = '/home/reiner/RDReports/DiodeProof'
    realout= sys.stdout


    listOfMeasdatas=ord.grfiles (folderData)

    for measdata in listOfMeasdatas:

        print (measdata[1])
        print (measdata[0])

        sys.stdout = open(folderData+'/'+'resGr.res', 'a') # Перенаправить вывод в файл
        print (measdata[1])
        print (measdata[0])
        gknuxlim = o_el.grandCountGN_UltraX1_Limited_wrapper(funcf,jacf,measdata[0],binit,bstart,bend, c, implicit=True, verbose=False, verbose_wrapper=False )
        gknuxlim2=o_q.convertToQualitatStandart (gknuxlim, funcf, jacf,  measdata[0], c, Ve, name='Limited Count Aprior')
        o_q.printQualitatStandart (gknuxlim2)

        title = measdata[1]
        twographsfigname = ''.join([folderData,'/','twgr_',title,'.png'])
        Rgraphsfigname = ''.join([folderData,'/','R_',title,'.png'])


        plotMeasAndModelled(measdata[0],funcf,gknuxlim2['b'], twographsfigname, title) #начертить два графика - реальный (синий) и моделированный (красный)

        #o_pl.plotSkGraph(gknuxlim, title='', filename=None) #чертит дроп ск по итерациям - бред, на последнем прогоне лимитед их всего пара штук))

        #o_q.analyseDifList(gknuxlim, True, )

        try:
            o_q.analyseDifList(gknuxlim2, True, title, filename=Rgraphsfigname ) #числовой режим, вектора не поддерживаются
        except:
            pass

        sys.stdout.close()

        sys.stdout = realout
def extraction_Kirch_DiodeV2Mod2DirectBranch():
    """
    [Реестровая]

    :return:
    """

    global FT
    global foldername

    funcf = solver_Kirch_DiodeV2Mod2DirectBranch
    jacf = Jac_Kirch_DiodeV2Mod2DirectBranch
    c = {}
    Ve = np.array([[1.9e-5]])

    btrue = [341.4e-6, 2.664, 37.08e-3, 17.26e-27, 5.662, 4.282, 0.5751, 3.65e-3]

    bstart = np.array(btrue) - np.array(btrue) * 0.05
    bend = np.array(btrue) + np.array(btrue) * 0.05

    binit = [
        341.4e-6,
        2.664,
        37.08e-3,
        17.26e-27,
        5.662,
        4.282,
        0.5751,
        3.65e-3,
    ]  # binit=btrue так как взято из спайс-модели

    xstart = [0.7]
    # xend=[20,60]
    xend = [0.77]

    N = 20  # число точек в априорном плане

    # Получаем априорный план
    print("performing aprior plan:")

    # блок кеширования априорного плана в файл
    import os

    filename = (
        foldername + "/" + "RD_10BQ100_N{0}_Dev-62012P_".format(N) + os.path.basename(__file__).replace(".py", "_plan")
    )

    try:

        oplan = o_p.readPlanFromFile(filename)  # переключение на чтение априорного плана из файла
        print("Read file successful")
    except BaseException as e:
        oplan = o_ap.grandApriornPlanning(xstart, xend, N, bstart, bend, c, Ve, jacf, funcf, Ntries=6, verbose=True)[1]
        o_p.writePlanToFile(oplan, filename)

    # #Задание опций для последовательного плана
    # terminationOptDict={'VdShelfPow':-7}

    measdata = o_p.makeMeasAccToPlan_lognorm(funcf, oplan, btrue, c, Ve)
    plotPlanAndMeas2D(measdata)

    gknuxlim = o_el.grandCountGN_UltraX1_Limited_wrapper(
        funcf, jacf, measdata, binit, bstart, bend, c, implicit=True, verbose=False, verbose_wrapper=False
    )
    gknuxlim2 = o_q.convertToQualitatStandart(gknuxlim, funcf, jacf, measdata, c, Ve, name="Limited Count Aprior")
    o_q.printQualitatStandart(gknuxlim2)