Skip to content

Commit

Permalink
corrected mos script
Browse files Browse the repository at this point in the history
  • Loading branch information
JayHuLBL committed May 16, 2023
1 parent 2d46c55 commit 8f75f31
Show file tree
Hide file tree
Showing 3 changed files with 72 additions and 69 deletions.
133 changes: 65 additions & 68 deletions Buildings/Resources/C-Sources/cfdExchangeData.c
Original file line number Diff line number Diff line change
Expand Up @@ -35,58 +35,58 @@
* @return 0 if no error occurred
*/
int cfdExchangeData(double t0, double dt, const double *u, size_t nU, size_t nY,
double *t1, double *y) {
double *t1, double *y) {
size_t i, j, k;
int writeData = 1;

/*check if current modelica time equals to last time*/
/*if yes, it means cfdExchangeData() was called multiple times at one synchronization point, then directly return*/
if(cosim->modelica->lt - t0 < 1E-6 && t0 - cosim->modelica->lt < 1E-6){
if(cosim->modelica->lt - t0 < 1E-6 && t0 - cosim->modelica->lt < 1E-6) {
/****************************************************************************
| Copy data from CFD
****************************************************************************/
/* Get the temperature/heat flux for solid surface*/
for(i=0; i<cosim->para->nSur; i++) {
y[i] = cosim->ffd->temHea[i];
}
/* Get the temperature/heat flux for solid surface*/
for(i=0; i<cosim->para->nSur; i++) {
y[i] = cosim->ffd->temHea[i];
}

/* Get the averaged room temperature*/
y[i] = cosim->ffd->TRoo;
i++;
/* Get the averaged room temperature*/
y[i] = cosim->ffd->TRoo;
i++;

/* Get the temperature of shading device if there is a shading device*/
if(cosim->para->sha==1) {
for(j=0; j<cosim->para->nConExtWin; i++, j++) {
y[i] = cosim->ffd->TSha[j];
/* Get the temperature of shading device if there is a shading device*/
if(cosim->para->sha==1) {
for(j=0; j<cosim->para->nConExtWin; i++, j++) {
y[i] = cosim->ffd->TSha[j];
}
}
}

/* Get the temperature fluid at the fluid ports*/
for(j=0; j<cosim->para->nPorts; i++, j++) {
y[i] = cosim->ffd->TPor[j];
}

/* Get the mass fraction at fluid ports*/
for(j=0; j<cosim->para->nPorts; j++)
for(k=0; k<cosim->para->nXi; k++, i++) {
y[i] = cosim->ffd->XiPor[j][k];
for(j=0; j<cosim->para->nPorts; i++, j++) {
y[i] = cosim->ffd->TPor[j];
}

/* Get the trace substance at fluid ports*/
for(j=0; j<cosim->para->nPorts; j++)
for(k=0; k<cosim->para->nC; k++, i++) {
y[i] = cosim->ffd->CPor[j][k];
/* Get the mass fraction at fluid ports*/
for(j=0; j<cosim->para->nPorts; j++)
for(k=0; k<cosim->para->nXi; k++, i++) {
y[i] = cosim->ffd->XiPor[j][k];
}

/* Get the sensor data*/
for(j=0; j<cosim->para->nSen; j++, i++) {
y[i] = cosim->ffd->senVal[j];
}
/* Get the trace substance at fluid ports*/
for(j=0; j<cosim->para->nPorts; j++)
for(k=0; k<cosim->para->nC; k++, i++) {
y[i] = cosim->ffd->CPor[j][k];
}

/* Update the data status
cosim->ffd->flag = 0;*/
/* Get the sensor data*/
for(j=0; j<cosim->para->nSen; j++, i++) {
y[i] = cosim->ffd->senVal[j];
}

*t1 = cosim->ffd->t;
/* Update the data status
cosim->ffd->flag = 0;*/

*t1 = cosim->ffd->t;

return 0;
}
Expand All @@ -113,24 +113,24 @@ int cfdExchangeData(double t0, double dt, const double *u, size_t nU, size_t nY,
cosim->modelica->dt = dt;
cosim->modelica->lt = t0;

cosim->modelica->t = t0;
cosim->modelica->dt = dt;
cosim->modelica->lt = t0;
cosim->modelica->t = t0;
cosim->modelica->dt = dt;
cosim->modelica->lt = t0;

/* Copy the Modelica data to shared memory*/
for(i=0; i<cosim->para->nSur; i++) {
cosim->modelica->temHea[i] = u[i];
}
/* Copy the Modelica data to shared memory*/
for(i=0; i<cosim->para->nSur; i++) {
cosim->modelica->temHea[i] = u[i];
}

if(cosim->para->sha==1) {
for(j=0; j<cosim->para->nConExtWin; j++) {
cosim->modelica->shaConSig[j] = u[i+j];
cosim->modelica->shaAbsRad[j] = u[i+j+cosim->para->nConExtWin];
}
i = i + 2*cosim->para->nConExtWin;
if(cosim->para->sha==1) {
for(j=0; j<cosim->para->nConExtWin; j++) {
cosim->modelica->shaConSig[j] = u[i+j];
cosim->modelica->shaAbsRad[j] = u[i+j+cosim->para->nConExtWin];
}
i = i + 2*cosim->para->nConExtWin;
}

if(cosim->para->nSou>0){
if(cosim->para->nSou>0) {
for(j=0; j<cosim->para->nSou; j++) {
cosim->modelica->sourceHeat[j] = u[i+j];
}
Expand All @@ -140,34 +140,31 @@ int cfdExchangeData(double t0, double dt, const double *u, size_t nU, size_t nY,
cosim->modelica->p = u[i];
i++;

cosim->modelica->latentHeat = u[i];
i++;
cosim->modelica->latentHeat = u[i];
i++;

cosim->modelica->p = u[i];
i++;
cosim->modelica->p = u[i];
i++;

for(j=0; j<cosim->para->nPorts; j++) {
cosim->modelica->mFloRatPor[j] = u[i+j];
cosim->modelica->TPor[j] = u[i+j+cosim->para->nPorts];
}
for(j=0; j<cosim->para->nPorts; j++) {
cosim->modelica->mFloRatPor[j] = u[i+j];
cosim->modelica->TPor[j] = u[i+j+cosim->para->nPorts];
}

i = i + 2*cosim->para->nPorts;
for(j=0; j<cosim->para->nPorts; j++)
for(k=0; k<cosim->para->nXi; k++) {
cosim->modelica->XiPor[j][k] = u[i+j*cosim->para->nXi+k];
}
i = i + 2*cosim->para->nPorts;
for(j=0; j<cosim->para->nPorts; j++)
for(k=0; k<cosim->para->nXi; k++) {
cosim->modelica->XiPor[j][k] = u[i+j*cosim->para->nXi+k];
}

i = i + cosim->para->nPorts*cosim->para->nXi;
for(j=0; j<cosim->para->nPorts; j++)
for(k=0; k<cosim->para->nC; k++) {
cosim->modelica->CPor[j][k] = u[i+j*cosim->para->nC+k];
}
i = i + cosim->para->nPorts*cosim->para->nXi;
for(j=0; j<cosim->para->nPorts; j++)
for(k=0; k<cosim->para->nC; k++) {
cosim->modelica->CPor[j][k] = u[i+j*cosim->para->nC+k];
}

/* Set the flag to new data*/
cosim->modelica->flag = 1;
} else {
cosim->ffd->flag = 1;
}

/****************************************************************************
| Copy data from CFD
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
simulateModel("Buildings.ThermalZones.Detailed.Examples.ISAT.Tutorial.MixedConvectionWithBox", stopTime=300, method="Cvode", tolerance=1e-06, resultFile="MixedConvectionWithBoxISAT");
simulateModel("Buildings.ThermalZones.Detailed.Examples.ISAT.Tutorial.MixedConvectionWithBox", stopTime=180, method="Cvode", tolerance=1e-06, resultFile="MixedConvectionWithBoxISAT");
createPlot(id = 1,
position = {0, 0, 2019, 1080},
y = {"roo.yCFD[1]"},
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
compareVars :=
{
"roo.air.heaPorAir.T",
"roo.weaBus.TDryBul",
"roo.air.conExt[1].Q_flow"
};

0 comments on commit 8f75f31

Please sign in to comment.