Advertisement
DarK_Camper

Circuit Analysis code snippet

Apr 13th, 2015
14
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.73 KB | None | 0 0
  1. /*====================================
  2.     Equivalent Resistance
  3. ====================================*/
  4. //Series and Parallel Topologies
  5. double get_effective_resistance(double restarr[], int topology, int resist_no){
  6.     double effective_resistance = 0.0;
  7.     int i;
  8.     double placeholder = 0.0;
  9.     if(topology==1){
  10.         for(i=0; i<resist_no; i++){
  11.             placeholder += restarr[i];
  12.         }
  13.         effective_resistance = placeholder;
  14.     }else if(topology==2){
  15.         for(i=0; i<resist_no; i++ ){
  16.             placeholder += (1/restarr[i]);
  17.         }
  18.         effective_resistance = placeholder;
  19.     }else if(topology==3){
  20.         printf("ResistNO. @case3\n",resist_no);
  21.         effective_resistance = get_ladder_resistance(restarr,resist_no);
  22.     }else{
  23.         printf("Error in Function \"get_effective_resistance\" in file \"circuit.c\"");
  24.         return -1;
  25.     }
  26.     return effective_resistance;
  27. }
  28.  
  29. //Ladder Topology
  30. double get_ladder_resistance(double restarr[], int resist_no){
  31.     double x = 0.0;
  32.     int i = resist_no;
  33.     int placeholder = 0;
  34.     //printf("DEBUGLADDER: 1\n");
  35.     while(i>=0){
  36.       //      printf("DEBUGLADDER: 2\n");
  37.       printf("DEBUGladder: %d\n",i);
  38.         if(i<3||i%3==0){
  39.         //    printf("DEBUGLADDER: 3\n");
  40.             placeholder = i-3;
  41.             printf("DebugPH: %d\n", placeholder);
  42.             do{
  43.           //      printf("DEBUGLADDER: 4\n");
  44.                 x += restarr[i-1];
  45.             //    printf("DEBUGLADDER: 5\n");
  46.                 i--;
  47.                 printf("DEBUGLADDER: 6\n");
  48.  
  49.             }while(i>placeholder);
  50.             continue;
  51.             //printf("DEBUGLADDER: 7\n");
  52.         }else if(i%3==2){
  53.             //printf("DEBUGLADDER: 3.1\n");
  54.             placeholder = i-2;
  55.             do{
  56.              //   printf("DEBUGLADDER: 4.1\n");
  57.                 x += restarr[i-1];
  58.                // printf("DEBUGLADDER: 5.1\n");
  59.                 i--;
  60.                // printf("DEBUGLADDER: 6.1\n");
  61.             }while(i>=placeholder);
  62.             //printf("DEBUGLADDER: 7.1\n");
  63.             continue;
  64.         }else{
  65.             //printf("DEBUGLADDER: 8\n");
  66.             if(i==resist_no){
  67.                 x = (restarr[i-1]*restarr[i-2])/(restarr[i-1]+restarr[i-2]);
  68.                 printf("DEBUGLADDER: 8.1:%d\n",restarr[i-2]);
  69.             }else{
  70.                 x = (x*restarr[i-2])/(x+restarr[i-2]);
  71.                 printf("DEBUGLADDER: 8.2\n");
  72.             }
  73.             //printf("DEBUGLADDER: 9\n");
  74.             i--;
  75.             printf("DEBUGLADDER: 10:%.6f\n",x);
  76.             continue;
  77.         }
  78.         //printf("DEBUGLADDER: 11");
  79.     }
  80.     //printf("DEBUGLADDER: 12");
  81.     double y = x;
  82.     //printf("DEBUGLADDER: 13");
  83.     return y;
  84. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement