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

📄 units.c

📁 利用语言编写的有限元分析软件
💻 C
📖 第 1 页 / 共 5 页
字号:
           if(d->units_type == SI){
              d1 = DefaultUnits("m");
              d2 = DefaultUnits("N");
           }
           else{
              d1 = DefaultUnits("in");
              d2 = DefaultUnits("lbf");
           }
           UnitsDivRep(d, d1, d2, NO);	 
           free((char *) d1->units_name);
           free((char *) d1);
           free((char *) d2->units_name);
           free((char *) d2);
#ifdef DEBUG
     printf(" Leaving UnitsSimplify() \n");
#endif
           return(d);
        }

  /* [f.4.c] Check weather the units are Time and Mass related   */
        else if(d->length_expnt == 0 && d->time_expnt != 0 && 
                d->mass_expnt   != 0 && d->temp_expnt == 0 ) {
           if(d->units_type == SI) {
              dp1 = DefaultUnits("sec");
              dp2 = DefaultUnits("kg");
           }
           else {
              dp1 = DefaultUnits("sec");
              dp2 = DefaultUnits("lb");
           }

           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);
#ifdef DEBUG
     printf(" Leaving UnitsSimplify() \n");
#endif
           return(d);
        }

  /* [f.5] Check weather the units are Time and Temperature related   */
        else if(d->length_expnt == 0 && d->time_expnt != 0 && 
                d->mass_expnt   == 0 && d->temp_expnt != 0 ) {
           if(d->units_type == SI) {
              dp1 = DefaultUnits("sec");
              dp2 = DefaultUnits("deg_C");
           }
           else {
              dp1 = DefaultUnits("sec");
              dp2 = DefaultUnits("deg_F");
           }

           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);
#ifdef DEBUG
     printf(" Leaving UnitsSimplify() \n");
#endif
           return(d);
        }

  /* [f.6] Check weather the units are Mass and Temperature related   */
        else if(d->length_expnt == 0 && d->time_expnt == 0 && 
                d->mass_expnt   != 0 && d->temp_expnt != 0 ) {
           if(d->units_type == SI) {
              dp1 = DefaultUnits("kg");
              dp2 = DefaultUnits("deg_C");
           }
           else {
              dp1 = DefaultUnits("lb");
              dp2 = DefaultUnits("deg_F");
           }

           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);
#ifdef DEBUG
     printf(" Leaving UnitsSimplify() \n");
#endif
           return(d);
        }

  /* [g] Check weather the units are three units related   */
  /* [g.a] Check weather the units are PRESSURE units      */
        else 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");
                 UnitsCopy(d,dp);
                 free((char *) dp->units_name);
                 free((char *) dp);
	      }
           }
           else{
              if(strcmp(d->units_name, "psi") != 0) {
                 dp = DefaultUnits("psi"); 
                 UnitsCopy(d,dp);
                 free((char *) dp->units_name);
                 free((char *) dp);
	      }
           }
#ifdef DEBUG
     printf(" Leaving UnitsSimplify() \n");
#endif
           return(d);
        }

  /* [g.b] Check weather the units are POWER units          */
        else 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);
	   }
#ifdef DEBUG
     printf(" Leaving UnitsSimplify() \n");
#endif
           return(d);
        }

  /* [g.c] Check weather the units are FORCE related units          */
        else 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 ) {
               if(d->units_type == SI){
                  dp1 = DefaultUnits("N");
                  dp2 = DefaultUnits("m");
               }
               else {
                  dp1 = DefaultUnits("lbf"); 
                  dp2 = DefaultUnits("in");
               }

               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(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 {
              if(d->units_type == SI) {
                 dp1 = DefaultUnits("m");
                 dp2 = DefaultUnits("kg");
                 dp3 = DefaultUnits("sec");
              }
              else {
                 dp1 = DefaultUnits("in");
                 dp2 = DefaultUnits("lb");
                 dp3 = DefaultUnits("sec");
              }

              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));
                  UnitsCopy(d3,dp3);
              }
              else
                  d3 = UnitsPower(dp3,d->time_expnt, NO);

              dd1 = UnitsMult(d1,d2);
              UnitsMultRep(d,dd1,d3);

              free((char *)d1->units_name);
              free((char *)d1);
              free((char *)d2->units_name);
              free((char *)d2);
              free((char *)d3->units_name);
              free((char *)d3);
              free((char *)dp1->units_name);
              free((char *)dp1);
              free((char *)dp2->units_name);
              free((char *)dp2);
              free((char *)dp3->units_name);
              free((char *)dp3);
              free((char *)dd1->units_name);
              free((char *)dd1);
           }
#ifdef DEBUG
     printf(" Leaving UnitsSimplify() \n");
#endif
           return(d);
        }

  /* [h] Check weather the units are some compact form */

        else {
           if(d->units_type == SI) {
              dp1 = DefaultUnits("m");
              dp2 = DefaultUnits("kg");
              dp3 = DefaultUnits("sec");
              dp4 = DefaultUnits("deg_C");
           }
           else {
              dp1 = DefaultUnits("in");
              dp2 = DefaultUnits("lb");
              dp3 = DefaultUnits("sec");
              dp4 = DefaultUnits("deg_F");
           }
           if( d->length_expnt!=0 ) {
               if( d->length_expnt==1 ) {
                   d1 = (DIMENSIONS *)MyCalloc(1,sizeof(DIMENSIONS));
                   UnitsCopy(d1,dp1);
               }
               else
                   d1 = UnitsPower(dp1,d->length_expnt, NO);
           }
           else {
               d1 = (DIMENSIONS *)MyCalloc(1,sizeof(DIMENSIONS));
               ZeroUnits(d1);
               d1->units_type = SI_US;
           }
           if( d->mass_expnt!=0 ) {
               if( d->mass_expnt==1 ) {
                   d2 = (DIMENSIONS *)MyCalloc(1,sizeof(DIMENSIONS));
                   UnitsCopy(d2,dp2);
               }
               else
                   d2 = UnitsPower(dp2,d->mass_expnt, NO);
           }
           else {
               d2 = (DIMENSIONS *)MyCalloc(1,sizeof(DIMENSIONS));
               ZeroUnits(d2);
               d2->units_type = SI_US;
           }
           if( d->time_expnt!=0 ) {
               if( d->time_expnt==1 ) {
                   d3 = (DIMENSIONS *)MyCalloc(1,sizeof(DIMENSIONS));
                   UnitsCopy(d3,dp3);
               }
               else
                   d3 = UnitsPower(dp3,d->time_expnt, NO);
           }
           else {

⌨️ 快捷键说明

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