⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 units.c

📁 有限元程序
💻 C
📖 第 1 页 / 共 5 页
字号:
       } else if(d->temp_expnt > 0) {          UnitsDivRep(d, d2, d1, NO);	        } else {          dd1 = UnitsPower( dp1, d->length_expnt, NO );          dd2 = UnitsPower( dp2, d->temp_expnt, NO );          UnitsMultRep(d, dd1, dd2);	           free((char *) dd1->units_name);          free((char *) dd1);          free((char *) dd2->units_name);          free((char *) dd2);       }       free((char *) d1->units_name);       free((char *) d1);       free((char *) d2->units_name);       free((char *) d2);       free((char *) dp1->units_name);       free((char *) dp1);       free((char *) dp2->units_name);       free((char *) dp2);       /* Append radian components to units name */       if(d->radian_expnt != 0) {          RadUnitsNameExtension( d );       }       return(d);    }    /* [h.4] : Simplify TIME and MASS related units */    if(d->length_expnt == 0 && d->time_expnt == -2 &&       d->mass_expnt   == 1 && d->temp_expnt ==  0 ) {       /* Setup default units names */       if(d->units_type == SI){          d1 = DefaultUnits("N");          d2 = DefaultUnits("m");       } else{          d1 = DefaultUnits("lbf");          d2 = DefaultUnits("in");       }       /* Transfer "radians" units to working data structure */       if(d->radian_expnt != 0 ) {          d1->radian_expnt = d->radian_expnt;          d2->radian_expnt = d->radian_expnt;       }       UnitsDivRep(d, d1, d2, NO);	        free((char *) d1->units_name);       free((char *) d1);       free((char *) d2->units_name);       free((char *) d2);       return(d);    }    /* [h.5] : Simplify LENGTH/FORCE related units */    if(d->length_expnt ==  0 && d->time_expnt == 2 &&       d->mass_expnt   == -1 && d->temp_expnt == 0 ) {       /* Setup default units names */       if(d->units_type == SI){          d1 = DefaultUnits("m");          d2 = DefaultUnits("N");       } else{          d1 = DefaultUnits("in");          d2 = DefaultUnits("lbf");       }       /* Transfer "radians" units to working data structure */       if(d->radian_expnt != 0 ) {          d1->radian_expnt = d->radian_expnt;          d2->radian_expnt = d->radian_expnt;       }       UnitsDivRep(d, d1, d2, NO);	        free((char *) d1->units_name);       free((char *) d1);       free((char *) d2->units_name);       free((char *) d2);       /* Append radian components to units name */       if(d->radian_expnt != 0) {          RadUnitsNameExtension( d );       }       return(d);    }    /* [h.6] : Simplify TIME and MASS related units */    if(d->length_expnt == 0 && d->time_expnt != 0 &&        d->mass_expnt   != 0 && d->temp_expnt == 0 ) {       /* Setup default units names */       if(d->units_type == SI) {          dp1 = DefaultUnits("sec");          dp2 = DefaultUnits("kg");       } else {          dp1 = DefaultUnits("sec");          dp2 = DefaultUnits("lb");       }       /* Transfer "radians" units to working data structure */       if(d->radian_expnt != 0 ) {          dp1->radian_expnt = d->radian_expnt;          dp2->radian_expnt = d->radian_expnt;       }       /* Setup working "units" data structures */       if(ABS(d->time_expnt) == 1) {          d1 = (DIMENSIONS *) MyCalloc(1,sizeof(DIMENSIONS));          UnitsCopy(d1,dp1);       } else          d1 = UnitsPower( dp1, ABS(d->time_expnt), NO );       if(ABS(d->mass_expnt) == 1) {          d2 = (DIMENSIONS *) MyCalloc(1,sizeof(DIMENSIONS));          UnitsCopy(d2,dp2);       } else          d2 = UnitsPower( dp2, ABS(d->mass_expnt), NO );       if(d->time_expnt > 0) {          if(d->mass_expnt > 0)             UnitsMultRep(d, d1, d2);	           else             UnitsDivRep(d, d1, d2, NO);	        } else if(d->mass_expnt > 0) {          UnitsDivRep(d, d2, d1, NO);	        } else {          dd1 = UnitsPower( dp1, d->time_expnt, NO );          dd2 = UnitsPower( dp2, d->mass_expnt, NO );          UnitsMultRep(d, dd1, dd2);	           free((char *) dd1->units_name);          free((char *) dd1);          free((char *) dd2->units_name);          free((char *) dd2);       }       free((char *) d1->units_name);       free((char *) d1);       free((char *) d2->units_name);       free((char *) d2);       free((char *) dp1->units_name);       free((char *) dp1);       free((char *) dp2->units_name);       free((char *) dp2);       /* Append radian components to units name */       if(d->radian_expnt != 0) {          RadUnitsNameExtension( d );       }       return(d);    }    /* [h.7] : Simplify TIME and TEMPERATURE related units */    if(d->length_expnt == 0 && d->time_expnt != 0 &&        d->mass_expnt   == 0 && d->temp_expnt != 0 ) {       /* Default units */       if(d->units_type == SI) {          dp1 = DefaultUnits("sec");          dp2 = DefaultUnits("deg_C");       } else {          dp1 = DefaultUnits("sec");          dp2 = DefaultUnits("deg_F");       }       /* Transfer "radians" units to working data structure */       if(d->radian_expnt != 0 ) {          dp1->radian_expnt = d->radian_expnt;          dp2->radian_expnt = d->radian_expnt;       }       /* Setup working "units" data structures */       if(ABS(d->time_expnt) == 1) {          d1 = (DIMENSIONS *) MyCalloc(1,sizeof(DIMENSIONS));          UnitsCopy(d1,dp1);       } else           d1 = UnitsPower( dp1, ABS(d->time_expnt), NO );       if(ABS(d->temp_expnt) == 1) {          d2 = (DIMENSIONS *) MyCalloc(1,sizeof(DIMENSIONS));          UnitsCopy(d2,dp2);       } else          d2 = UnitsPower( dp2, ABS(d->temp_expnt), NO );       if(d->time_expnt > 0) {          if(d->temp_expnt > 0)             UnitsMultRep(d, d1, d2);	           else             UnitsDivRep(d, d1, d2, NO);	        } else if(d->temp_expnt > 0) {             UnitsDivRep(d, d2, d1, NO);	        } else {             dd1 = UnitsPower( dp1, d->time_expnt, NO );             dd2 = UnitsPower( dp2, d->temp_expnt, NO );             UnitsMultRep(d, dd1, dd2);	              free((char *) dd1->units_name);             free((char *) dd1);             free((char *) dd2->units_name);             free((char *) dd2);       }       free((char *) d1->units_name);       free((char *) d1);       free((char *) d2->units_name);       free((char *) d2);       free((char *) dp1->units_name);       free((char *) dp1);       free((char *) dp2->units_name);       free((char *) dp2);       /* Append radian components to units name */       if(d->radian_expnt != 0) {          RadUnitsNameExtension( d );       }       return(d);   }   /* [h.8] : Simplify MASS and TEMPERATURE related units */   if(d->length_expnt == 0 && d->time_expnt == 0 &&       d->mass_expnt   != 0 && d->temp_expnt != 0 ) {      /* Setup default units */      if(d->units_type == SI) {         dp1 = DefaultUnits("kg");         dp2 = DefaultUnits("deg_C");      } else {         dp1 = DefaultUnits("lb");         dp2 = DefaultUnits("deg_F");      }      /* Transfer "radians" units to working data structure */      if(d->radian_expnt != 0 ) {         dp1->radian_expnt = d->radian_expnt;         dp2->radian_expnt = d->radian_expnt;      }      /* Setup working "units" data structures */      if(ABS(d->mass_expnt) == 1) {         d1 = (DIMENSIONS *) MyCalloc(1,sizeof(DIMENSIONS));         UnitsCopy(d1,dp1);      } else         d1 = UnitsPower( dp1, ABS(d->mass_expnt), NO );      if(ABS(d->temp_expnt) == 1) {         d2 = (DIMENSIONS *) MyCalloc(1,sizeof(DIMENSIONS));         UnitsCopy(d2,dp2);      } else         d2 = UnitsPower( dp2, ABS(d->temp_expnt), NO );      if(d->mass_expnt > 0) {         if(d->temp_expnt > 0)            UnitsMultRep(d, d1, d2);	          else            UnitsDivRep(d, d1, d2, NO);	       } else if(d->temp_expnt > 0) {         UnitsDivRep(d, d2, d1, NO);	       } else {         dd1 = UnitsPower( dp1, d->mass_expnt, NO );         dd2 = UnitsPower( dp2, d->temp_expnt, NO );         UnitsMultRep(d, dd1, dd2);	          free((char *) dd1->units_name);         free((char *) dd1);         free((char *) dd2->units_name);         free((char *) dd2);      }      free((char *) d1->units_name);      free((char *) d1);      free((char *) d2->units_name);      free((char *) d2);      free((char *) dp1->units_name);      free((char *) dp1);      free((char *) dp2->units_name);      free((char *) dp2);      /* Append radian components to units name */      if(d->radian_expnt != 0) {         RadUnitsNameExtension( d );      }      return(d);   }   /* [i] : Simplify PRESSURE units */   if(d->length_expnt == -1 && d->time_expnt == -2 &&       d->mass_expnt   ==  1 && d->temp_expnt ==  0 ) {      if(d->units_type == SI){         if(strcmp(d->units_name, "Pa") != 0) {            dp = DefaultUnits("Pa");            if(d->radian_expnt != 0 ) {               dp->radian_expnt = d->radian_expnt;            }            UnitsCopy(d,dp);            free((char *) dp->units_name);            free((char *) dp);         }      } else {         if(strcmp(d->units_name, "psi") != 0) {            dp = DefaultUnits("psi");             if(d->radian_expnt != 0 ) {               dp->radian_expnt = d->radian_expnt;            }            UnitsCopy(d,dp);            free((char *) dp->units_name);            free((char *) dp);         }      }      return(d);   }   /* [j] : Simplify POWER units */   if( d->length_expnt == 2 && d->time_expnt == -3 &&        d->mass_expnt   == 1 && d->temp_expnt ==  0 ) {       if(strcmp(d->units_name, "Watt") != 0) {          dp = DefaultUnits("Watt");          UnitsCopy(d,dp);          free((char *) dp->units_name);          free((char *) dp);       }       return(d);   }   /* [k] : Simplify FORCE units */   if(d->length_expnt != 0 && d->time_expnt != 0 &&       d->mass_expnt   != 0 && d->temp_expnt == 0 ) {      dlength = d->length_expnt - d->mass_expnt;      if( d->time_expnt == -2.0*d->mass_expnt ) {          /* Setup default units of "N" force */          if(d->units_type == SI){             dp1 = DefaultUnits("N");             dp2 = DefaultUnits("m");          } else {             dp1 = DefaultUnits("lbf");              dp2 = DefaultUnits("in");          }          /* Transfer "radians" units to working data structure */          if(d->radian_expnt != 0 ) {             dp1->radian_expnt = d->radian_expnt;             dp2->radian_expnt = d->radian_expnt;          }          /* Setup dimensions for mass units */          if(ABS(d->mass_expnt) == 1) {             d1 = (DIMENSIONS *) MyCalloc(1,sizeof(DIMENSIONS));             UnitsCopy(d1,dp1);          } else             d1 = UnitsPower( dp1, ABS(d->mass_expnt), NO );          /* Setup dimensions for mass units */          if(dlength == 0) {             d2 = (DIMENSIONS *) MyCalloc(1,sizeof(DIMENSIONS));             ZeroUnits(d2);             d2->units_type = dp2->units_type;          } else if(ABS(dlength) == 1) {             d2 = (DIMENSIONS *) MyCalloc(1,sizeof(DIMENSIONS));             UnitsCopy(d2,dp2);          } else             d2 = UnitsPower( dp2, ABS(dlength), NO );          if(d->mass_expnt > 0) {             if(dlength > 0) {                UnitsMultRep(d, d1, d2);             }             else if(dlength == 0) {                UnitsCopy(d,d1);             } else                UnitsDivRep(d, d1, d2, NO);          }          else if(dlength >= 0) {             UnitsDivRep(d, d2, d1, NO);          }          else {             dd1 = UnitsPower( dp1, d->mass_expnt, NO );             dd2 = UnitsPower( dp2, dlength, NO );             UnitsMultRep(d, dd1, dd2);	              free((char *) dd1->units_name);             free((char *) dd1);             free((char *) dd2->units_name);             free((char *) dd2);          }          free((char *)d1->units_name);          free((char *)d1);          free((char *)d2->units_name);          free((char *)d2);          free((char *)dp1->units_name);          free((char *)dp1);          free((char *)dp2->units_name);          free((char *)dp2);       } else {          /* Setup default "force" units */          if(d->units_type == SI) {             dp1 = DefaultUnits("m");             dp2 = DefaultUnits("kg");             dp3 = DefaultUnits("sec");          } else {             dp1 = DefaultUnits("in");             dp2 = DefaultUnits("lb");             dp3 = DefaultUnits("sec");          }          /* Correction for "radians" units */          if(d->radian_expnt != 0 ) {             dp1->radian_expnt = d->radian_expnt;             dp2->radian_expnt = d->radian_expnt;          }          if( d->length_expnt==1 ) {              d1 = (DIMENSIONS *)MyCalloc(1,sizeof(DIMENSIONS));              UnitsCopy(d1,dp1);          } else              d1 = UnitsPower(dp1,d->length_expnt, NO);          if( d->mass_expnt==1 ) {              d2 = (DIMENSIONS *)MyCalloc(1,sizeof(DIMENSIONS));              UnitsCopy(d2,dp2);          } else              d2 = UnitsPower(dp2,d->mass_expnt, NO);          if( d->time_expnt==1 ) {              d3 = (DIMENSIONS *)MyCalloc(1,sizeof(DIMENSIONS));

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -