MCPcopy Create free account
hub / github.com/OpenSees/OpenSees / addFiber

Method addFiber

SRC/material/section/FiberSection.cpp:113–169  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

111}
112
113int
114FiberSection::addFiber(Fiber &newFiber)
115{
116 if (order == 0) {
117 order = newFiber.getOrder();
118
119 e = new Vector(order);
120 eCommit = new Vector(order);
121 s = new Vector(order);
122 ks = new Matrix(order,order);
123
124 code = new ID(order);
125 *code = newFiber.getType();
126 }
127
128 if (numFibers < sizeFibers) {
129 // space available in array .. set new pointer and increment number
130 theFibers[numFibers] = &newFiber;
131 numFibers++;
132 }
133 else {
134 // need to create a larger array
135 int newSize = 2*numFibers;
136 if (newSize == 0)
137 newSize = 2; // in case failed in constructor
138
139 Fiber **newArray = new Fiber *[newSize];
140
141 if (newArray == 0) {
142 opserr << "FiberSection::addFiber -- failed to allocate Fiber pointers";
143 exit(-1);
144
145 return -1;
146 }
147
148 // set the new size of the array
149 sizeFibers = newSize;
150
151 // copy the old pointers
152 for (int i = 0; i < numFibers; i++)
153 newArray[i] = theFibers[i];
154
155 // add the new pointer
156 newArray[numFibers] = &newFiber;
157 numFibers++;
158
159 // zero the last elements of the array
160 for (int j = numFibers; j < newSize; j++)
161 newArray[j] = 0;
162
163 delete [] theFibers;
164
165 theFibers = newArray;
166 }
167
168 return 0;
169}
170

Callers 6

OPS_FiberFunction · 0.45
OPS_PatchFunction · 0.45
OPS_LayerFunction · 0.45
ops_addFiberToSectionFunction · 0.45
TclCommand_addFiberFunction · 0.45

Calls 3

exitFunction · 0.85
getOrderMethod · 0.45
getTypeMethod · 0.45

Tested by

no test coverage detected