Local variables to be added
Initialization and finalization
Initialization and finalization is similar to that of the base examples
int *nborne;
char name[8];
Computation of intensity (A/m2) for each electrode
Pre initialisation
for (int i = 0; i < nbelec; i++) {
sir[i] = 0.;
sii[i] = 0.;
}
for (int i = 0; i < nbtrf; i++) {
sirt[i] = 0.;
siit[i] = 0.;
nborne[i] = 0;
}
for (int i = 0; i < nbtrf; i++) {
}
}
for (int i = 0; i < nbelec; i++) {
sprintf(name,
"%07d", transfo->
ielecc[i]);
if (ieljou == 4)
for (
cs_lnum_t ilelt = 0; ilelt < nelts; ilelt++) {
sir[i] += cpro_curre[cell_id][id] * b_face_normal[id][face_id];
if (ieljou == 4)
sii[i] += cpro_curim[cell_id][id] * b_face_normal[id][face_id];
}
}
Definition of Voltage on each termin of transformers
Computation of Intensity on each termin of transformers:
for (int i = 0; i < nbelec; i++) {
if (ieljou == 4)
}
for (int i = 0; i < nbelec; i++) {
if (transfo->
ielect[i] != 0) {
if (ieljou == 4)
}
}
RVoltage on each termin:
for (int ntf = 0; ntf < nbtrf; ntf++) {
if (transfo->
ibrpr[ntf] == 0 &&
nborne[ntf] = 3;
double rnbs2 = 3. * transfo->
rnbs[ntf]
ur[ntf][0] = 1.154675 * transfo->
tenspr[ntf]
+ (transfo->
zr[ntf] * sirb[ntf][0]
- transfo->
zi[ntf] * siib[ntf][0]) / rnbs2;
ur[ntf][1] = -0.5773 * transfo->
tenspr[ntf]
+ (transfo->
zr[ntf] * sirb[ntf][1]
- transfo->
zi[ntf] * siib[ntf][1]) / rnbs2;
ur[ntf][2] =-0.5773 * transfo->
tenspr[ntf]
+ (transfo->
zr[ntf] * sirb[ntf][2]
- transfo->
zi[ntf] * siib[ntf][2]) / rnbs2;
ui[ntf][0] = (transfo->
zi[ntf] * sirb[ntf][0]
- transfo->
zr[ntf] * siib[ntf][0]) / rnbs2;
ui[ntf][1] = (transfo->
zi[ntf] * sirb[ntf][1]
- transfo->
zr[ntf] * siib[ntf][1]) / rnbs2;
ui[ntf][2] = (transfo->
zi[ntf] * sirb[ntf][2]
- transfo->
zr[ntf] * siib[ntf][2]) / rnbs2;
}
else
"transformer matrix not defined\n"));
}
Total intensity for a transformer (zero valued WHEN Offset established):
for (int ntf = 0; ntf < nbtrf; ntf++) {
sirt[ntf] = 0.;
if (ieljou == 4)
siit[ntf] = 0.;
}
for (int i = 0; i < nbelec; i++) {
if (transfo->
ielect[i] != 0) {
sirt[i] += sir[i];
if (ieljou == 4)
siit[i] += sii[i];
}
}
Take in account of Offset:
double capaeq = 3.;
for (int ntf = 0; ntf < nbtrf; ntf++) {
transfo->
uroff[ntf] += sirt[ntf] / capaeq;
if (ieljou == 4)
transfo->
uioff[ntf] += siit[ntf] / capaeq;
}
}
for (int ntf = 0; ntf < nbtrf; ntf++) {
for (int nb = 0; nb < nborne[ntf]; nb++) {
ur[ntf][nb] += transfo->
uroff[ntf];
if (ieljou == 4)
ui[ntf][nb] += transfo->
uioff[ntf];
}
}
bft_printf(
" ---------------------------------------\n");
bft_printf(
" ---------------------------------\n");
bft_printf(
" ---------------------------------\n");
for (int ntf = 0; ntf < nbtrf; ntf++)
bft_printf(
" ---------------------------------------\n");
Take in account of Boundary Conditions
for (int i = 0; i < nbelec; i++) {
sprintf(name,
"%07d", transfo->
ielecc[i]);
for (
cs_lnum_t ilelt = 0; ilelt < nelts; ilelt++) {
if (transfo->
ielect[i] != 0) {
icodcl[ivar * n_b_faces + face_id] = 1;
rcodcl[ivar * n_b_faces + face_id] = ur[transfo->
ielect[i]][transfo->
ielecb[i]];
if (ieljou == 4) {
icodcl[ivar * n_b_faces + face_id] = 1;
rcodcl[ivar * n_b_faces + face_id] = ur[transfo->
ielect[i]][transfo->
ielecb[i]];
}
}
else {
icodcl[ivar * n_b_faces + face_id] = 3;
rcodcl[2 * n_b_faces *
nvar + ivar * n_b_faces + face_id] = 0.;
if (ieljou == 4) {
icodcl[ivar * n_b_faces + face_id] = 3;
rcodcl[2 * n_b_faces *
nvar + ivar * n_b_faces + face_id] = 0.;
}
}
}
}
bool found = false;
for (
cs_lnum_t face_id = 0; face_id < n_b_faces; face_id++) {
if (icodcl[ivar * n_b_faces + face_id] == 1) {
if (ieljou == 3) {
if (fabs(rcodcl[ivar * n_b_faces + face_id]) < 1.e-20)
found = true;
}
else if (ieljou == 4) {
double val = fabs(rcodcl[ivar * n_b_faces + face_id]);
if (fabs(rcodcl[ivar * n_b_faces + face_id]) < 1.e-20 &&
val < 1.e-20)
found = true;
}
}
}
}
if (!found)
"Lack of reference : choose a transformer for wich\n"
"offset is assumed zero or a face at ground on the\n"
"boundary\n"));
}
Finalization step
Test, if not any reference transformer a piece of wall may be at ground: