source: MML/trunk/machine/SOLEIL/StorageRing/insertions/IDStarter/idUpdateFeedForwardCorTables2D.m @ 4

Last change on this file since 4 was 4, checked in by zhangj, 11 years ago

Initial import--MML version from SOLEIL@2013

File size: 4.2 KB
Line 
1function res = idUpdateFeedForwardCorTables2D(idName, tabNameDataCHE, tabNameDataCVE, tabNameDataCHS, tabNameDataCVS, vArgVert, vArgHor, updateMode)
2%tabNameDataCHE = {'parallelModeCHE', mCHE}
3%tabNameDataCVE = {'parallelModeCVE', mCVE}
4%vArgVert = [15.5,16,18,...] - gap values
5%vArgHor = [-40,-35,-30,...] - phase values
6%updateMode:
7%   0- set zero in all tables; 1- overwrite values in all tables; 2- add
8%   new tables to existing tables
9
10res = 0;
11
12if((length(vArgVert) > 1) && (length(vArgVert) > 1)) %assume tabNameDataCHE{2} etc. is without arguments
13    mCHE_with_arg = idAuxMergeCorTableWithArg2D(vArgVert, vArgHor, tabNameDataCHE{2});
14    mCVE_with_arg = idAuxMergeCorTableWithArg2D(vArgVert, vArgHor, tabNameDataCVE{2});
15    mCHS_with_arg = idAuxMergeCorTableWithArg2D(vArgVert, vArgHor, tabNameDataCHS{2});
16    mCVS_with_arg = idAuxMergeCorTableWithArg2D(vArgVert, vArgHor, tabNameDataCVS{2});
17else %assume tabNameDataCHE{2} etc. is with arguments
18    mCHE_with_arg = tabNameDataCHE{2};
19    mCVE_with_arg = tabNameDataCVE{2};
20    mCHS_with_arg = tabNameDataCHS{2};
21    mCVS_with_arg = tabNameDataCVS{2};
22end
23
24[DServName, StandByStr] = idGetUndDServer(idName);
25
26%Reading previous cor. tables
27rep = tango_read_attribute2(DServName, tabNameDataCHE{1});
28stOldTablesFF.mCHE_with_arg = rep.value;
29rep = tango_read_attribute2(DServName, tabNameDataCVE{1});
30stOldTablesFF.mCVE_with_arg = rep.value;
31rep = tango_read_attribute2(DServName, tabNameDataCHS{1});
32stOldTablesFF.mCHS_with_arg = rep.value;
33rep = tango_read_attribute2(DServName, tabNameDataCVS{1});
34stOldTablesFF.mCVS_with_arg = rep.value;
35
36numArgVert = length(vArgVert);
37numArgHor = length(vArgHor);
38numArgVert_p_1 = numArgVert;
39numArgHor_p_1 = numArgHor;
40if(updateMode == 0)
41    for i = 2:numArgVert_p_1
42        for j = 2:numArgHor_p_1
43            mCHE_with_arg(i,j) = 0;
44            mCVE_with_arg(i,j) = 0;
45            mCHS_with_arg(i,j) = 0;
46            mCVS_with_arg(i,j) = 0;
47        end
48    end
49end
50
51if(updateMode == 2)
52    strIncompatSizes = 'Incompatible dimensions od mesh of existing and new tables. Incremental update can not be performed.';
53    if((size(stOldTablesFF.mCHE_with_arg, 1) ~= numArgVert_p_1) || (size(stOldTablesFF.mCVE_with_arg, 1) ~= numArgVert_p_1) || (size(stOldTablesFF.mCHS_with_arg, 1) ~= numArgVert_p_1) || (size(stOldTablesFF.mCVS_with_arg, 1) ~= numArgVert_p_1))
54        fprintf(strIncompatSizes);
55        return;
56    end
57    if((size(stOldTablesFF.mCHE_with_arg, 2) ~= numArgHor_p_1) || (size(stOldTablesFF.mCVE_with_arg, 2) ~= numArgHor_p_1) || (size(stOldTablesFF.mCHS_with_arg, 2) ~= numArgHor_p_1) || (size(stOldTablesFF.mCVS_with_arg, 2) ~= numArgHor_p_1))
58        fprintf(strIncompatSizes);
59        return;
60    end
61   
62        for i = 2:numArgVert_p_1
63        if((mCHE_with_arg(i,1) ~= stOldTablesFF.mCHE_with_arg(i,1)) || (mCVE_with_arg(i,1) ~= stOldTablesFF.mCVE_with_arg(i,1)) || (mCHS_with_arg(i,1) ~= stOldTablesFF.mCHS_with_arg(i,1)) || (mCVS_with_arg(i,1) ~= stOldTablesFF.mCVS_with_arg(i,1)))
64            fprintf(strIncompatSizes);
65            return;
66        end
67    end
68        for j = 2:numArgHor_p_1
69        if((mCHE_with_arg(1,j) ~= stOldTablesFF.mCHE_with_arg(1,j)) || (mCVE_with_arg(1,j) ~= stOldTablesFF.mCVE_with_arg(1,j)) || (mCHS_with_arg(1,j) ~= stOldTablesFF.mCHS_with_arg(1,j)) || (mCVS_with_arg(1,j) ~= stOldTablesFF.mCVS_with_arg(1,j)))
70            fprintf(strIncompatSizes);
71            return;
72        end
73        end
74    for i = 2:numArgVert_p_1
75        for j = 2:numArgHor_p_1
76            mCHE_with_arg(i,j) = mCHE_with_arg(i,j) + stOldTablesFF.mCHE_with_arg(i,j);
77            mCVE_with_arg(i,j) = mCVE_with_arg(i,j) + stOldTablesFF.mCVE_with_arg(i,j);
78            mCHS_with_arg(i,j) = mCHS_with_arg(i,j) + stOldTablesFF.mCHS_with_arg(i,j);
79            mCVS_with_arg(i,j) = mCVS_with_arg(i,j) + stOldTablesFF.mCVS_with_arg(i,j);
80        end
81    end
82end
83
84%saving previous ff tables
85fileNameCoreOldFF = 'old_ff_tab';
86idSaveStruct(fileNameCoreOldFF, stOldTablesFF, idName, 0);
87
88tango_write_attribute2(DServName, tabNameDataCHE{1}, mCHE_with_arg);
89tango_write_attribute2(DServName, tabNameDataCVE{1}, mCVE_with_arg);
90tango_write_attribute2(DServName, tabNameDataCHS{1}, mCHS_with_arg);
91tango_write_attribute2(DServName, tabNameDataCVS{1}, mCVS_with_arg);
Note: See TracBrowser for help on using the repository browser.