Changeset 3f198cc in tol for tol_pkg/MulVarFunAprox/DesignC2.Monomial.Spheric.Grid.tol
- Timestamp:
- Dec 23, 2009, 2:25:56 PM (17 years ago)
- Branches:
- 1941-docker-image-to-test, devel, master
- Children:
- f389530
- Parents:
- 38052b37
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
tol_pkg/MulVarFunAprox/DesignC2.Monomial.Spheric.Grid.tol
r38052b37 r3f198cc 14 14 ////////////////////////////////////////////////////////////////////////////// 15 15 { 16 @IndexedGrid.Border _.grid; 16 17 ////////////////////////////////////////////////////////////////////////////// 17 18 //Configuration parameters 18 19 ////////////////////////////////////////////////////////////////////////////// 19 @IndexedGrid.Border _.grid; 20 Real _.radius; 21 Real _.radius.margin; 22 Real _.grid.size; 20 23 21 24 ////////////////////////////////////////////////////////////////////////////// 22 25 //Auxiliar members 23 26 ////////////////////////////////////////////////////////////////////////////// 27 VMatrix _.Y.h = Rand(0,0,0,0); 28 VMatrix _.Y.neighbourhood = Rand(0,0,0,0); 24 29 25 30 //////////////////////////////////////////////////////////////////////////// … … 45 50 46 51 ////////////////////////////////////////////////////////////////////////////// 52 VMatrix get.radius(VMatrix Y.idx) 53 ////////////////////////////////////////////////////////////////////////////// 54 { 55 Constant(VRows(Y.idx),1,_.radius) 56 }; 57 58 ////////////////////////////////////////////////////////////////////////////// 47 59 VMatrix closest.reference.index(VMatrix X) 48 60 ////////////////////////////////////////////////////////////////////////////// … … 68 80 VMatrix _.Yj := Mat2VMat(SetMat([[EvalSet(X.class,Card)]]),1); 69 81 Real _.H := _.grid::_.H 82 }; 83 84 ////////////////////////////////////////////////////////////////////////////// 85 Real build.stress.points(Real void) 86 ////////////////////////////////////////////////////////////////////////////// 87 { 88 Text _MID = "[@DesignC2.Spheric::build.stress.points] "; 89 WriteLn("TRACE "+_MID+"1"); 90 Matrix Y.neighbour.triplet = Group("ConcatRows", For(1,_.H,Matrix(Real h) 91 { 92 Set neighbours = Unique(VRow2Set(SubRow(_.Y.neighbourhood,[[h]]))); 93 Set neighbours.up = Select(neighbours,Real(Real s) { s>h }); 94 Matrix s = SetCol(Sort(neighbours.up,Compare)); 95 Rand(Rows(s),1,h,h)|s|Rand(Rows(s),1,1,1) 96 })); 97 98 WriteLn("TRACE "+_MID+"2"); 99 VMatrix Y.neighbour.1.map = Triplet(Y.neighbour.triplet,_.H,_.H); 100 VMatrix Y.neighbour.2.map = Y.neighbour.1.map*Y.neighbour.1.map; 101 VMatrix Y.neighbour.12.map = Max(Y.neighbour.1.map,Y.neighbour.2.map); 102 Matrix Y.neighbour.12.triplet = VMat2Triplet(Y.neighbour.12.map); 103 VMatrix Z.h.a = Mat2VMat(SubCol(Y.neighbour.12.triplet,[[1]])); 104 VMatrix Z.h.b = Mat2VMat(SubCol(Y.neighbour.12.triplet,[[2]])); 105 VMatrix Y.neighbour.a = SubRow(_.Y,VCol2Set(Z.h.a)); 106 VMatrix Y.neighbour.b = SubRow(_.Y,VCol2Set(Z.h.b)); 107 VMatrix Z.all = (Y.neighbour.a + Y.neighbour.b)*0.5; 108 109 WriteLn("TRACE "+_MID+"3"); 110 VMatrix Z.interior.a = 111 { 112 VMatrix Z.norm2 = RPow(Y.neighbour.a-Z.all,2)*Rand(_.n,1,1,1); 113 VMatrix Z.tao = RPow(Z.norm2,0.5)/_.radius; 114 LE(Z.tao,Rand(VRows(Z.tao),1,1,1)) 115 }; 116 VMatrix Z.interior.b = 117 { 118 VMatrix Z.norm2 = RPow(Y.neighbour.b-Z.all,2)*Rand(_.n,1,1,1); 119 VMatrix Z.tao = RPow(Z.norm2,0.5)/_.radius; 120 LE(Z.tao,Rand(VRows(Z.tao),1,1,1)) 121 }; 122 VMatrix match.interior = Z.interior.a $* Z.interior.b; 123 124 Set sel.interior = MatQuery::SelectMatch(match.interior); 125 VMatrix Z.interior = SubRow(Z.all,sel.interior); 126 VMatrix Z.h.interior = SubRow(Z.h.a | Z.h.b,sel.interior); 127 Set criterium = Range(1,_.n,1); 128 Set sel.unique = Col2Set(Sort(VMat2Mat(Z.interior),criterium,True)); 129 WriteLn("TRACE "+_MID+"4"); 130 VMatrix _.Z := SubRow(Z.interior, sel.unique); 131 VMatrix _.Z.h := SubRow(Z.h.interior, sel.unique); 132 Real _.Tz := VRows(_.Z); 133 VMatrix _.Z.Y.neighbour := 134 { 135 Matrix Z.t = DifEq(1/(1-B),Rand(_.Tz,1,1,1)); 136 Matrix Z.th = (Z.t << Z.t) | 137 VMat2Mat((SubCol(_.Z.h,[[1]])<<SubCol(_.Z.h,[[2]]))); 138 Matrix Z.Y.idx = PivotByRows(Z.th,Sort(Z.th,[[2]])); 139 VMatrix Z.Y.dif = 140 SubRow(_.Z,Col2Set(SubCol(Z.Y.idx,[[1]]))) - 141 SubRow(_.Y,Col2Set(SubCol(Z.Y.idx,[[2]]))); 142 VMatrix Z.Y.norm2 = RPow(Z.Y.dif,2)*Rand(_.n,1,1,1); 143 VMatrix Z.Y.tao = RPow(Z.Y.norm2,0.5)/_.radius; 144 VMatrix Z.Y.match = LE(Z.Y.tao,Rand(VRows(Z.Y.tao),1,1,1)); 145 SubRow(Mat2VMat(Z.Y.idx),MatQuery::SelectMatch(Z.Y.match)) 146 }; 147 VMatrix aux = MatQuery::SortAndCount(SubCol(_.Z.Y.neighbour,[[2]])); 148 VMatrix _.Yt := Triplet(VMat2Mat(SubCol(aux,[[1]])) | 149 Rand(VRows(aux),1,1,1) | 150 VMat2Mat(SubCol(aux,[[2]])),_.H,1); 151 Real _.Mz := Case( 152 prior.Z.order< 0, 0, 153 prior.Z.order==0, _.Tz, 154 prior.Z.order==1, _.Tz*(1+_.n), 155 prior.Z.order==2, _.Tz*(1+_.n*3/2+(1/2)*_.n^2)); 156 _.Tz 70 157 }; 71 158
Note: See TracChangeset
for help on using the changeset viewer.
