50 #define TINYXML //read CEMHYD3D input file through tinyXML library 52 #ifdef __TM_MODULE //OOFEM transport module 54 #include "../isoheatmat.h" 59 #define _IFT_CemhydMat_Name "cemhydmat" 60 #define _IFT_CemhydMat_conductivitytype "conductivitytype" 61 #define _IFT_CemhydMat_capacitytype "capacitytype" 62 #define _IFT_CemhydMat_densitytype "densitytype" 63 #define _IFT_CemhydMat_eachgp "eachgp" 64 #define _IFT_CemhydMat_nowarnings "nowarnings" 65 #define _IFT_CemhydMat_scaling "scaling" 66 #define _IFT_CemhydMat_reinforcementDegree "reinforcementdegree" 67 #define _IFT_CemhydMat_inputFileName "file" 91 #ifdef __TM_MODULE //OOFEM transport module 108 virtual double giveTimeOfCycle(
GaussPoint *gp);
122 virtual int initMaterial(
Element *element);
124 virtual void clearWeightTemperatureProductVolume(
Element *element);
126 virtual void storeWeightTemperatureProductVolume(
Element *element,
TimeStep *tStep);
128 virtual void averageTemperature();
153 #ifdef __TM_MODULE //OOFEM transport module 170 virtual void updateYourself(
TimeStep *tStep);
171 virtual void printOutputAt(FILE *file,
TimeStep *tStep);
181 void InitializePy(
const char *inp);
184 void initializeMicrostructure(
void);
185 void read(
char *inp);
186 double GivePower(
double GiveTemp,
double TargTime);
187 double MoveCycles(
double GiveTemp,
int cycles);
188 int MoveToDoH(
double GiveTemp,
double DesiredDoH,
int maxcyc);
189 int MoveToTime(
double GiveTemp,
double TargTime);
190 double GiveTotCemHeat(
void);
191 double GiveTotHeat(
void);
193 double computeConcreteCapacityBentz(
void);
194 double GiveDensity(
void);
195 double GiveDoHLastCyc(
void);
197 double GiveDoHActual(
void);
198 int GiveCycNum(
void);
199 double GiveCycTime(
void);
200 void CreateHDCSH(
void);
201 void PercolateForOutput(
void);
202 double GiveWcr(
void);
203 void GetInputParams(
char *my_string);
204 void constructor_init(
void);
205 void AnalyticHomogenizationPaste(
double &
E,
double &nu,
int perc_unperc_flag);
206 void AnalyticHomogenizationConcrete(
double E_paste_inp,
double nu_paste_inp,
double *E_paste,
double *nu_paste,
double *E_mortar,
double *nu_mortar,
double &E_concrete,
double &nu_concrete);
207 void GetInitClinkerPhases(
double &c3s,
double &c2s,
double &c3a,
double &c4af,
double &gypsum,
double &hemi,
double &anh);
218 averageTemperature = temperature;
222 double giveAverageTemperature(
void);
226 int readInputFileAndInitialize(
const char *inp,
bool generateMicrostructure);
243 double ind_time, temp_0, temp_cur,
time_step, time_cur, E_act, beta, heat_new, Mass_cement_concrete;
251 #ifdef __TM_MODULE //OOFEM transport module 337 long cx(
int x,
int y,
int z,
int a,
int b,
int c);
338 long cy(
int x,
int y,
int z,
int a,
int b,
int c);
339 long cz(
int x,
int y,
int z,
int a,
int b,
int c);
466 void QueryNumAttributeExt(XMLDocument *xmlFile,
const char *elementName,
int position,
int &val);
467 void QueryNumAttributeExt(XMLDocument *xmlFile,
const char *elementName,
int position,
long int &val);
468 void QueryNumAttributeExt(XMLDocument *xmlFile,
const char *elementName,
const char *key,
int &val);
469 void QueryNumAttributeExt(XMLDocument *xmlFile,
const char *elementName,
int position,
double &val);
470 void QueryNumAttributeExt(XMLDocument *xmlFile,
const char *elementName,
const char *key,
double &val);
471 void QueryStringAttributeExt(XMLDocument *xmlFile,
const char *elementName,
int position,
char *chars);
476 double ran1(
int *idum);
478 int chksph(
int xin,
int yin,
int zin,
int radd,
int wflg,
int phasein,
int phase2);
479 int gsphere(
int numgen,
long int *numeach,
int *sizeeach,
int *pheach);
481 void drawfloc(
int xin,
int yin,
int zin,
int radd,
int phasein,
int phase2);
482 int chkfloc(
int xin,
int yin,
int zin,
int radd);
488 int genpartnew(
void);
489 void alloc_char_3D(
char ***( &mic ),
long SYSIZE);
490 void dealloc_char_3D(
char ***( &mic ),
long SYSIZE);
491 void alloc_long_3D(
long ***( &mic ),
long SYSIZE);
492 void dealloc_long_3D(
long ***( &mic ),
long SYSIZE);
493 void alloc_int_3D(
int ***( &mask ),
long SYSIZE);
494 void dealloc_int_3D(
int ***( &mask ),
long SYSIZE);
495 void alloc_shortint_3D(
short int ***( &mic ),
long SYSIZE);
496 void dealloc_shortint_3D(
short int ***( &mic ),
long SYSIZE);
497 void alloc_double_3D(
double ***( &mic ),
long SYSIZE);
498 void dealloc_double_3D(
double ***( &mic ),
long SYSIZE);
526 long int n_sulfate, target_sulfate, n_total, target_total, volpart [ 47 ];
535 int maketemp(
int size);
537 int surfpix(
int xin,
int yin,
int zin);
538 float rhcalc(
int phin);
539 int countem(
int xp,
int yp,
int zp,
int phin);
540 void sysinit(
int ph1,
int ph2);
541 void sysscan(
int ph1,
int ph2);
542 int procsol(
int nsearch);
543 int procair(
int nsearch);
544 int movepix(
int ntomove,
int ph1,
int ph2);
545 void sinter3d(
int ph1id,
int ph2id,
float rhtarget);
547 void rand3d(
int phasein,
int phaseout,
float xpt);
548 void distrib3d(
void);
554 long int volume [ 50 ], surface [ 50 ];
557 long int nsolid [ 1500 ], nair [ 1500 ];
560 int chckedge(
int xck,
int yck,
int zck);
561 void passone(
int low,
int high,
int cycid,
int cshexflag);
562 int loccsh(
int xcur,
int ycur,
int zcur,
int extent);
563 int countbox(
int boxsize,
int qx,
int qy,
int qz);
564 int countboxc(
int boxsize,
int qx,
int qy,
int qz);
565 void makeinert(
long int ndesire);
566 void extslagcsh(
int xpres,
int ypres,
int zpres);
567 void dissolve(
int cycle);
568 void addrand(
int randid,
long int nneed);
569 void measuresurf(
void);
570 void resaturate(
void);
571 void outputImageFileUnperc(
char ***m);
572 void readhydrparam(
void);
573 void disrealnew_init(
void);
574 void disrealnew(
double GiveTemp,
double TargTime,
int flag);
575 int burn3d(
int npix,
int d1,
int d2,
int d3);
576 int burnset(
int d1,
int d2,
int d3);
578 int moveone(
int *xloc,
int *yloc,
int *zloc,
int *act,
int sumold);
579 int edgecnt(
int xck,
int yck,
int zck,
int ph1,
int ph2,
int ph3);
581 int movecsh(
int xcur,
int ycur,
int zcur,
int finalstep,
int cycorig);
582 void extfh3(
int xpres,
int ypres,
int zpres);
583 int extettr(
int xpres,
int ypres,
int zpres,
int etype);
585 void extgyps(
int xpres,
int ypres,
int zpres);
586 int moveanh(
int xcur,
int ycur,
int zcur,
int finalstep,
float nucprgyp);
587 int movehem(
int xcur,
int ycur,
int zcur,
int finalstep,
float nucprgyp);
588 int extfreidel(
int xpres,
int ypres,
int zpres);
589 int extstrat(
int xpres,
int ypres,
int zpres);
590 int movegyp(
int xcur,
int ycur,
int zcur,
int finalstep);
591 int movecacl2(
int xcur,
int ycur,
int zcur,
int finalstep);
592 int movecas2(
int xcur,
int ycur,
int zcur,
int finalstep);
593 int moveas(
int xcur,
int ycur,
int zcur,
int finalstep);
594 int movecaco3(
int xcur,
int ycur,
int zcur,
int finalstep);
595 void extafm(
int xpres,
int ypres,
int zpres);
596 int moveettr(
int xcur,
int ycur,
int zcur,
int finalstep);
597 void extpozz(
int xpres,
int ypres,
int zpres);
598 int movefh3(
int xcur,
int ycur,
int zcur,
int finalstep,
float nucprob);
599 int movech(
int xcur,
int ycur,
int zcur,
int finalstep,
float nucprob);
600 void extc3ah6(
int xpres,
int ypres,
int zpres);
601 int movec3a(
int xcur,
int ycur,
int zcur,
int finalstep,
float nucprob);
602 int movec4a(
int xcur,
int ycur,
int zcur,
int finalstep,
float nucprob);
603 void hydrate(
int fincyc,
int stepmax,
float chpar1,
float chpar2,
float hgpar1,
float hgpar2,
float fhpar1,
float fhpar2,
float gypar1,
float gypar2);
608 int IsSolidPhase(
int phase);
609 void burn_phases(
int d1,
int d2,
int d3);
610 int IsConnected(
int cx,
int cy,
int cz,
int dx,
int dy,
int dz);
611 void GenerateConnNumbers(
void);
612 void outputImageFilePerc(
void);
613 void WriteUnsortedList(
int px,
int py,
int pz);
614 void CountPercolation(
int &tot_perc,
int &tot_unperc);
615 inline int AdjCoord(
int coord);
616 int NumSol(
int cx,
int cy,
int cz);
617 void CSHbox(
unsigned int *CSH_vicinity);
618 void nrerror(
const char *error_text);
619 float *vector(
int nl,
int nh);
620 int *ivector(
int nl,
int nh);
621 double *dvector(
int nl,
int nh);
623 float **matrix_cem(
int nrl,
int nrh,
int ncl,
int nch);
624 double **dmatrix(
int nrl,
int nrh,
int ncl,
int nch);
625 int **imatrix(
int nrl,
int nrh,
int ncl,
int nch);
626 float **submatrix(
float **a,
int oldrl,
int oldrh,
int oldcl,
int oldch,
int newrl,
int newcl);
630 void free_matrix(
float **m,
int nrl,
int nrh,
int ncl);
631 void free_dmatrix(
double **m,
int nrl,
int nrh,
int ncl);
634 float **convert_matrix(
float *a,
int nrl,
int nrh,
int ncl,
int nch);
655 unsigned char x, y,
z, id;
678 long int npr, nfill, ncsbar, netbar, porinit, nasr, nslagr,
slagemptyp;
680 long int c3sinit, c2sinit, c3ainit, c4afinit, anhinit,
heminit, chold, chnew;
681 long int nmade, ngoing, gypready, poregone,
poretodo, countpore;
683 int ncyc, cyccnt, cubesize,
sealed, outfreq, ImgOut;
684 int burnfreq, setfreq, setflag, sf1, sf2,
sf3, porefl1, porefl2, porefl3;
688 float w_to_c, s_to_c, krate, totfract, tfractw04, fractwithfill;
689 float tfractw05, surffract, pfract, pfractw05, sulf_conc;
692 double alpha_cur, alpha_last, heat_old, cemmass, mass_agg,
mass_water, mass_fill, Cp_now, Cp_agg, Cp_cement;
693 double Mass_tot_concrete, Cp_SCM, Cp_FA, Cp_CA, Cp_inert, Mass_SCM_frac, Mass_FA_frac, Mass_CA_frac, Mass_inert_frac, Concrete_thermal_conductivity, Concrete_bulk_density;
694 double alpha, CH_mass, mass_CH,
mass_fill_pozz, E_act_pozz, chs_new, cemmasswgyp;
706 float *specgrav, *molarv, *heatf, *
waterc;
732 char heatname [ 80 ], adianame [ 80 ], phasname [ 80 ], ppsname [ 80 ], ptsaname [ 80 ], phrname [ 80 ];
733 char chshrname [ 80 ], micname [ 80 ];
734 char cmdnew [ 120 ], pHname [ 80 ], fileroot [ 80 ];
736 FILE *heatfile, *chsfile, *
ptmpfile, *movfile, *pHfile, *micfile, *fileperc, *percfile, *disprobfile, *phasfile, *perc_phases, *CSHfile, *infoperc, *infoUnperc;
739 double pH_cur,
totsodium, totpotassium, rssodium, rspotassium;
747 int primevalues [ 6 ];
765 double pnucch, pscalech, pnuchg,
pscalehg, pnucfh3, pscalefh3;
768 double mass_cement, mass_cem_now,
mass_cur, kpozz, kslag;
772 double Vol_cement_clinker_gypsum, Vol_cement_SCM, Vol_water, Vol_FA, Vol_CA, Vol_inert_filler, Vol_entrained_entrapped_air, Grain_average_FA, Grain_average_CA, ITZ_thickness, ITZ_Young_red,
Young_SCM, Poisson_SCM, Young_FA, Poisson_FA, Young_CA, Poisson_CA, Young_inert, Poisson_inert;
InternalStateType
Type representing the physical meaning of element or constitutive model internal variable.
virtual int hasInternalSource()
Returns nonzero if receiver generates internal source of state variable(s), zero otherwise.
void free_imatrix(int **m, int nrl, int nrh, int ncl)
struct oofem::FCOMPLEX fcomplex_cem
double giveTotalVolume(void)
std::string XMLfileName
XML input file name for CEMHYD3D.
unsigned int * CSH_vicinity
struct percolatedpath * last
double PartHeat
The last incremental heat returned from a GP.
ValueModeType
Type representing the mode of UnknownType or CharType, or similar types.
int eachGP
Assign a separate microstructure in each integration point.
void free_submatrix(float *b, int nrl)
Abstract base class for all finite elements.
double averageTemperature
Average temperature through integration points.
This class implements a transport material status information.
virtual const char * giveClassName() const
Class implementing an array of integers.
MatResponseMode
Describes the character of characteristic material matrix.
struct percolatedpath * prev
int reinforcementDegree
Degree of reinforcement, if defined, reinforcement effect for conductivity and capacity is accounted ...
void free_matrix(float **m, int nrl, int nrh, int ncl)
FloatArray scaling
Array containing scaling factors for density, conductivity and capacity.
double init_material_time
Inital material time for growing problems.
void free_dvector(double *v, int nl)
virtual const char * giveInputRecordName() const
Returns input record name of the receiver.
IntArray nowarnings
Array containing warnings supression for density, conductivity, capacity, high temperature.
CemhydMatStatus * MasterCemhydMatStatus
Pointer to master CemhydMatStatus, which is shared among related integration points (on element...
void free_ivector(int *v, int nl)
void free_convert_matrix(float **b, int nrl)
This class implements an isotropic linear heat material.
Abstract base class representing a material status information.
Class representing vector of real numbers.
int Calculate_elastic_homogenization
Flag to proceed percolation filtering and elastic homogenization.
IRResultType
Type defining the return values of InputRecord reading operations.
struct percolatedpath * next
virtual const char * giveClassName() const
#define _IFT_CemhydMat_Name
void free_dmatrix(double **m, int nrl, int nrh, int ncl)
struct cluster * nextpart
the oofem namespace is to define a context or scope in which all oofem names are defined.
void setAverageTemperatureVolume(double temperature, double volume)
Auxiliary function for temperature averaging over GPs.
double * last_values
Array for storing temporary values (elastic properties etc.)
Class representing integration point in finite element program.
void free_vector(float *v, int nl)
Class representing solution step.
double IPVolume
Volume associated to master IP of one CemhydMat.
int icyc
Cycle of celular automata.